Changeset 610

Show
Ignore:
Timestamp:
07/09/03 19:29:45 (5 years ago)
Author:
sholloway
Message:

Fixed some titling problems with notebook dock hosts

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/dockcontainer.py

    r501 r610  
    3131#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3232 
    33 class wxDockContainerSizerAdaptor(wxDockingTools.wxDockContainer): 
     33class wxSkinDockContainer(wxDockingTools.wxDockContainer): 
     34    def DockHostContext(self): 
     35        dh = self.DockHost() 
     36        if dh is not None: 
     37            return dh.DockContext() 
     38 
    3439    def SetItemMinSize(self, *args, **kw): 
    3540        pass 
     
    5358    def SkinInitialize(self): 
    5459        # Create the layout sizer 
    55         self.object = wxDockContainerSizerAdaptor() 
     60        self.object = wxSkinDockContainer() 
    5661        for name, value in self.settings.iteritems(): 
    5762            if isinstance(name, str) and name not in ['ctxvar','ctxnode']: 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/dockhost.py

    r609 r610  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26import weakref 
    2627from wxSkinObject import wx, wxSkinObject, wxSkinObjectNoData 
    2728from RBSkinning.wxTools import wxDockingTools 
     
    3031#~ Definitions  
    3132#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     33 
     34class wxSkinDockHost(wxDockingTools.wxDockHost): 
     35    dockcontext = None 
     36 
     37    def DockContext(self): 
     38        return self.dockcontext 
    3239 
    3340class dockhost(wxSkinObject, wxSkinObjectNoData): 
     
    5360        kwSettings = self.wxSettingDict(['prepend', 'hideempty', 'rootparent', 'rootlayout'], 
    5461            prepend=True, hideempty=False, rootparent=winParent, rootlayout=winParent.GetSizer()) 
    55         self.object = wxDockingTools.wxDockHost(winParent, layout, **kwSettings) 
     62        self.object = wxSkinDockHost(winParent, layout, **kwSettings) 
    5663 
    5764        single = self.wxEvalCond('single', False) 
     
    6471        if 'dockcontext' in self.settings: 
    6572            self.object.dockcontext = self.context.getnamedvar(self.settings['dockcontext']) 
     73            try: SetDockHost = self.object.dockcontext.SetDockHost 
     74            except AttributeError: pass 
     75            else: SetDockHost(weakref.proxy(self.object)) 
    6676        else: 
    6777            self.object.dockcontext = None 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/notebook_dockhost.py

    r603 r610  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
    26 from wxSkinObject import wx, wxSkinObject, wxSkinObjectNoData 
     26from wxSkinObject import wx 
     27from dockhost import dockhost as _dockhost 
    2728from RBSkinning.wxTools import wxDockingTools 
    2829 
     
    3132#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3233 
    33 class notebook_dockhost(wxSkinObject, wxSkinObjectNoData): 
     34class wxNotebookSkinDockHost(wxDockingTools.wxNotebookDockHost): 
     35    dockcontext = None 
     36 
     37    def DockContext(self): 
     38        return self.dockcontext 
     39 
     40#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     41 
     42class notebook_dockhost(_dockhost): 
    3443    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3544    #~ Constants / Variables / Etc.  
    3645    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    3746 
    38     default_settings = wxSkinObject.default_settings.copy() 
     47    default_settings = _dockhost.default_settings.copy() 
    3948    #default_settings['prepend'] = True 
    4049    #default_settings['hideempty'] = False 
     
    4958        kwSettings = self.wxSettingDict(['prepend', 'hideempty', 'selectpage'], 
    5059            prepend=True, hideempty=False, selectpage=True) 
    51         self.object = wxDockingTools.wxNotebookDockHost(winParent, **kwSettings) 
     60        self.object = wxNotebookSkinDockHost(winParent, **kwSettings) 
    5261 
    53     def SkinFinalize(self): 
    54         self.wxStandardOptions() 
    55   
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_dockhost.py

    r603 r610  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26from wxSkinObject import wx 
    2627from dockhost import dockhost as _dockhost 
    2728 
  • trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py

    r608 r610  
    2727from wxPython import wx 
    2828from RBFoundation.SubObs.Event import ObjectEventProperty 
     29from RBFoundation.SubObs.Publish import DataPublisherProperty 
    2930from __init__ import SetLayoutContainerSizeHints 
    3031 
     
    6061class wxDockContainer(object): 
    6162    OnDockHostUpdate = ObjectEventSubjectWithResultProperty() #(dockcontainer, dockhost, updatetype, *updateargs, **updatekeys) 
     63    Title = DataPublisherProperty() #(dockcontainer, dockhost, updatetype, *updateargs, **updatekeys) 
    6264    OnDocked = ObjectEventProperty() #(dockcontainer, dockhost, redocking) 
    6365    OnUndocked = ObjectEventProperty() #(dockcontainer, dockhost, redocking) 
     
    282284        def __init__(self, *args, **kw): 
    283285            wx.wxPanel.__init__(self, *args, **kw) 
     286            self.dockcontainer = None 
    284287            self.dockitem = None 
    285288            self.sizer = wx.wxBoxSizer(wx.wxVERTICAL) 
     
    289292            return self.dockitem is dockitem 
    290293 
    291         def UndockItem(self, dockitem, *args, **kw): 
     294        def GetTitleFromEnvironment(self): 
     295            title = getattr(self.dockcontainer, 'pagename', None) 
     296            if title is not None: return title 
     297            title = self.dockitem.GetLabel() 
     298            if title: return title 
     299            title = self.dockitem.__class__.__name__ 
     300            return title 
     301 
     302        def UpdateTitle(self, title=None): 
     303            if title is None: 
     304                title = self.GetTitleFromEnvironment() 
     305            self.SetLabel(title) 
     306            notebook = self.GetParent() 
     307            for pageidx in xrange(notebook.GetPageCount()): 
     308                if notebook.GetPage(pageidx) is self: 
     309                    notebook.SetPageText(pageidx, title) 
     310 
     311        def UndockItem(self, dockcontainer, dockitem, *args, **kw): 
    292312            if self.dockitem is dockitem: 
    293                 self.DockItem(None
    294  
    295         def DockItem(self, dockitem, *args, **kw): 
     313                self.DockItem(None, None
     314 
     315        def DockItem(self, dockcontainer, dockitem, *args, **kw): 
    296316            if self.dockitem is not None: 
    297317                self.sizer.Remove(self.dockitem) 
     318            if self.dockcontainer is not None: 
     319                self.dockcontainer.Title.Remove(self.UpdateTitle) 
     320            self.dockcontainer = dockcontainer 
    298321            self.dockitem = dockitem 
    299322            if self.dockitem is not None: 
    300323                self.sizer.Add(self.dockitem, *args, **kw) 
     324            if self.dockcontainer is not None: 
     325                self.dockcontainer.Title.Add(self.UpdateTitle) 
     326                self.UpdateTitle(self.dockcontainer.Title.Get()) 
    301327            self.Layout() 
    302328 
     
    331357        else: DIReparent(page) 
    332358 
    333         page.DockItem(dockitem, *args, **kw) 
    334  
    335         text = None 
    336         if text is None: 
    337             try: text = container.pagename 
    338             except AttributeError: pass 
    339         if text is None: 
    340             try: text = dockitem.GetLabel() 
    341             except AttributeError: pass 
    342         if text is None: 
    343             text = text or dockitem.__class__.__name__ 
     359        page.DockItem(container, dockitem, *args, **kw) 
     360        text = page.GetLabel() 
    344361 
    345362        if self.prepend: 
     
    369386        page = self.FindNotebookDockPage(dockitem) 
    370387        if page is None: raise KeyError, "Dockitem not found" 
    371         page.UndockItem(dockitem) 
     388        page.UndockItem(container, dockitem) 
    372389 
    373390        for idx in range(self.notebook.GetPageCount()): 
  • trunk/RBSkinning/demo/wxPythonSkin/docking/docking_notebook.py

    r603 r610  
    5050                            <command_event type='EVT_BUTTON' call='ctx.behaviormodel.Dock3' /> 
    5151                        </button> 
     52                        <input value='Dockable 3' sizercfg='0, wxALIGN_RIGHT|wxEXPAND' > 
     53                            <command_event type='EVT_TEXT' call='ctx.behaviormodel.ChangeDock3Title' /> 
     54                        </input> 
    5255                    </layout> 
    5356                </layout> 
     
    114117            eo.SetLabel('Show Dock 3') 
    115118 
     119    def ChangeDock3Title(self, evt): 
     120        self.dockable3.Title.Set(evt.GetEventObject().GetValue()) 
     121 
    116122#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    117123#~ Main