Changeset 603
- Timestamp:
- 07/07/03 23:05:40 (5 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/BindCallable.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/dockhost.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/layout_algorithm.py (modified) (6 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/notebook_dockhost.py (added)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/sash.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_dockhost.py (added)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_layout.py (modified) (3 diffs)
- trunk/RBSkinning/RBSkinning/wxPythonSkin/wxSkinObject.py (modified) (1 diff)
- trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py (modified) (5 diffs)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_grow.py (modified) (1 diff)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_inplace.py (modified) (1 diff)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_notebook.py (modified) (1 diff)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_sash.py (added)
- trunk/RBSkinning/demo/wxPythonSkin/grafting/graft_docking.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/BindCallable.py
r529 r603 226 226 # not quite sure what it is, but it does not require binding 227 227 return Callable 228 Bind = BindCallable 228 229 229 230 def WeakBindCallable(Callable, *args, **kw): 230 231 """Weakly binds a callable object only if needed.""" 231 232 return BindCallable(Callable, WeakBoundCallable, *args, **kw) 233 WeakBind = WeakBindCallable 232 234 233 235 def StrongBindCallable(Callable, *args, **kw): 234 236 """Strongly binds a callable object only if needed.""" 235 237 return BindCallable(Callable, StrongBoundCallable, *args, **kw) 238 StrongBind = StrongBindCallable 236 239 237 240 def CurryCallable(Callable, *args, **kw): trunk/RBSkinning/RBSkinning/wxPythonSkin/dockhost.py
r504 r603 37 37 38 38 default_settings = wxSkinObject.default_settings.copy() 39 #default_settings['prepend'] = True 40 #default_settings['hideempty'] = False 41 #default_settings['single'] = False 42 #default_settings['rootparent'] = 'self.wxGetParentObject(wx.wxWindowPtr)' 43 #default_settings['rootlayout'] = 'self.wxGetParentObject(wx.wxWindowPtr).GetSizer()' 39 44 40 45 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 43 48 44 49 def SkinInitialize(self): 45 pass 50 winParent = self.wxGetParentObject(wx.wxWindowPtr) 51 layout = self.wxGetParentObject(wx.wxSizerPtr) 52 kwSettings = self.wxSettingDict(['prepend', 'hideempty', 'rootparent', 'rootlayout'], 53 prepend=True, hideempty=False, rootparent=winParent, rootlayout=winParent.GetSizer()) 54 self.object = wxDockingTools.wxDockHost(winParent, layout, **kwSettings) 46 55 47 def SkinFinalize(self): 48 prepend = self.wxEvalCond('prepend', True) 49 hideempty = self.wxEvalCond('hideempty', False) 50 parent = self.wxGetParentObject(wx.wxWindowPtr) 51 if isinstance(parent, wx.wxNotebookPtr): 52 selectpage = self.wxEvalCond('selectpage', True) 53 self.object = wxDockingTools.wxNotebookDockHost(parent, selectpage=selectpage, prepend=prepend, hideempty=hideempty) 54 else: 55 rootparent = self.wxEvalCond('rootparent', parent.GetSizer()) 56 layout = self.wxGetParentObject(wx.wxSizerPtr) 57 rootlayout = self.wxEvalCond('rootlayout', parent.GetSizer()) 58 self.object = wxDockingTools.wxDockHost(parent, layout, rootparent=rootparent, rootlayout=rootlayout, prepend=prepend, hideempty=hideempty) 59 60 single = self.wxEvalCond('single', 0) 56 single = self.wxEvalCond('single', False) 61 57 if single: 62 58 wxDockingTools.wxSingleDockHostAspect.MixinAspect(self.object) 63 59 60 def SkinFinalize(self): 64 61 self.wxStandardOptions() 65 62 trunk/RBSkinning/RBSkinning/wxPythonSkin/layout_algorithm.py
r475 r603 24 24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 25 26 import weakref 27 from RBFoundation.BindCallable import BindCallable 26 28 from wxSkinObject import wx, wxSkinObject, wxSkinWindowCollectorObject, wxSkinObjectNoData 27 29 … … 29 31 #~ Class 30 32 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 34 class wxLayoutAlgorithmSizerAdaptor(wx.wxPySizer): 35 def __init__(self, callback): 36 wx.wxPySizer.__init__(self) 37 self.OnRecalcSizes = BindCallable(callback) 38 39 def RecalcSizes(self): 40 self.OnRecalcSizes() 31 41 32 42 class layout_algorithm(wxSkinObject, wxSkinWindowCollectorObject, wxSkinObjectNoData): … … 36 46 37 47 default_settings = wxSkinObject.default_settings.copy() 38 default_settings.update({39 'events': 'wxEVT_SIZE,wxEVT_MOVE'40 })41 48 42 49 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 46 53 def SkinInitialize(self): 47 54 self.object = wx.wxLayoutAlgorithm() 48 self.context.layout_algorithm = self 55 self.object.sizer = wxLayoutAlgorithmSizerAdaptor(self.OnLayout) 56 57 self.context.layout_algorithm = weakref.proxy(self) 49 58 self.wxInitialStandardOptions() 50 59 self.PushContext() … … 52 61 self.childWindow = None 53 62 self.winParent = self.wxGetParentObject(wx.wxWindowPtr) 54 LayoutOnEvents = self.wxEval('events') 55 for event in LayoutOnEvents: 56 self.winParent.Connect(-1, -1, event, self.OnLayout) 63 self.winParent.SetSizer(self.object.sizer) 57 64 58 65 def SkinFinalize(self): … … 64 71 def OnLayout(self, evt=None): 65 72 self.object.LayoutWindow(self.winParent, self.childWindow) 73 trunk/RBSkinning/RBSkinning/wxPythonSkin/sash.py
r598 r603 24 24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 25 26 import weakref 26 27 from wxSkinLayoutObject import wx, wxSkinLayoutObject, wxSkinObjectNoData 27 28 … … 49 50 50 51 def SkinInitialize(self): 52 self.PushContext() 51 53 winParent = self.wxGetParentObject(wx.wxWindowPtr) 52 54 kwSettings = self.wxSettingDict(['wxid', 'style', 'pos', 'size'], ['name']) 53 55 self.object = self.wxSashWindow(winParent, **kwSettings) 56 self.context.sash = weakref.proxy(self) 54 57 self.wxInitialStandardOptions() 55 58 trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_layout.py
r598 r603 24 24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 25 26 import weakref 26 27 from sash import wx, sash 27 28 … … 53 54 kwSettings = self.wxSettingDict(['wxid', 'style', 'pos', 'size'], ['name']) 54 55 self.object = wx.wxSashLayoutWindow(winParent, **kwSettings) 56 self.context.sash = weakref.proxy(self) 55 57 self.wxInitialStandardOptions() 56 58 if self.wxEvalCond('autodrag', True): 57 59 wx.EVT_SASH_DRAGGED(self.object, self.object.GetId(), self.OnSashDrag) 60 wx.EVT_ACTIVATE(self.object, self.OnLayout) 58 61 59 62 def SkinFinalize(self): 60 63 self.SetSashSettings() 61 64 self.wxFinalStandardOptions() 62 self. context[-1].layout_algorithm.OnLayout(None)65 self.OnLayout(None) 63 66 64 67 def SetSashSettings(self): … … 71 74 rect = evt.GetDragRect() 72 75 evt.GetEventObject().SetDefaultSize(wx.wxSize(rect.width, rect.height)) 76 self.OnLayout(evt) 77 78 def OnLayout(self, evt=None): 73 79 self.context[-1].layout_algorithm.OnLayout(evt) 74 80 trunk/RBSkinning/RBSkinning/wxPythonSkin/wxSkinObject.py
r563 r603 177 177 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 178 179 def wxSettingDict(self, Eval=[], NonEval=[], kwStart=None): 180 result = kwStart or {} 179 def wxSettingDict(self, Eval=[], NonEval=[], kwStart={}, **kw): 180 result = kw 181 result.update(kwStart) 181 182 for each in Eval: 182 result[each] = self.wxEvalCond(each )183 result[each] = self.wxEvalCond(each, result.get(each)) 183 184 for each in NonEval: 184 185 result[each] = self.settings[each] trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py
r598 r603 170 170 hideempty = False 171 171 172 OnLayingout = ObjectEventProperty() #(dockhost) 173 OnLayoutComplete = ObjectEventProperty() #(dockhost) 174 172 175 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 173 176 #~ Public Methods … … 225 228 226 229 def Layout(self): 230 self.OnLayingout() 227 231 self.rootlayout.Layout() 228 self.layout.Layout() 232 if self.layout is not self.rootlayout: 233 self.layout.Layout() 229 234 self._SetLayoutContainerSizeHints() 230 235 self.HideEmpty() 236 self.OnLayoutComplete() 237 238 def HideEmpty(self): 231 239 if self.hideempty: 240 if isinstance(self.hideempty, wx.wxWindowPtr): 241 hidewindow = self.hideempty 242 else: hidewindow = self.parent 232 243 if self.dockcount <= 0: 233 244 self.dockcount = 0 234 self.parent.Show(False) 235 elif not self.parent.IsShown(): 236 self.parent.Show(True) 245 hidewindow.Show(False) 246 elif not hidewindow.IsShown(): 247 hidewindow.Show(True) 248 hidewindow.Layout() 237 249 238 250 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 242 254 def _SetLayoutContainerSizeHints(self): 243 255 SetLayoutContainerSizeHints(self.layout, self.parent) 244 SetLayoutContainerSizeHints(self.rootlayout, self.rootparent) 256 if self.rootlayout is not self.layout and self.rootparent is not self.parent: 257 SetLayoutContainerSizeHints(self.rootlayout, self.rootparent) 245 258 246 259 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 250 263 #~ Constants / Variables / Etc. 251 264 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265 266 OnLayingout = ObjectEventProperty() #(dockhost) 267 OnLayoutComplete = ObjectEventProperty() #(dockhost) 252 268 253 269 prepend = False … … 363 379 364 380 def Layout(self): 381 self.OnLayingout() 382 self.HideEmpty() 383 self.OnLayoutComplete() 384 385 def HideEmpty(self): 365 386 if self.hideempty: 387 if isinstance(self.hideempty, wx.wxWindow): 388 hidewindow = self.hideempty 389 else: hidewindow = self.notebook 366 390 if self.dockcount <= 0: 367 391 self.dockcount = 0 368 self.notebook.Show(False) 369 elif not self.notebook.IsShown(): 370 self.notebook.Show(True) 392 hidewindow.Show(False) 393 elif not hidewindow.IsShown(): 394 hidewindow.Show(True) 395 hidewindow.Layout() 371 396 372 397 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBSkinning/demo/wxPythonSkin/docking/docking_grow.py
r483 r603 83 83 </frame> 84 84 85 <frame ctxvar='frame, behaviormodel.miniframe' style='wxFRAME_TOOL_WINDOW|wxCAPTION|wxSYSTEM_MENU' show='0' locking='1'>85 <frame ctxvar='frame, behaviormodel.miniframe' toplevel='False' style='wxFRAME_TOOL_WINDOW|wxCAPTION|wxSYSTEM_MENU' show='0' locking='1'> 86 86 <command_event type='wxEVT_CLOSE_WINDOW' call='ctx.behaviormodel.OnCloseFreeDock' /> 87 87 <layout sizercfg='1, wxEXPAND'> trunk/RBSkinning/demo/wxPythonSkin/docking/docking_inplace.py
r483 r603 83 83 </frame> 84 84 85 <frame ctxvar='frame, behaviormodel.miniframe' style='wxFRAME_TOOL_WINDOW|wxCAPTION|wxSYSTEM_MENU' show='0' locking='1'>85 <frame ctxvar='frame, behaviormodel.miniframe' toplevel='False' style='wxFRAME_TOOL_WINDOW|wxCAPTION|wxSYSTEM_MENU' show='0' locking='1'> 86 86 <command_event type='wxEVT_CLOSE_WINDOW' call='ctx.behaviormodel.OnCloseFreeDock' /> 87 87 <layout sizercfg='1, wxEXPAND'> trunk/RBSkinning/demo/wxPythonSkin/docking/docking_notebook.py
r497 r603 38 38 <layout sizercfg='1, wxEXPAND' > 39 39 <notebook sizercfg='1, wxEXPAND' > 40 < dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' />40 <notebook_dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 41 41 </notebook> 42 42 <layout sizercfg='0, wxEXPAND'> trunk/RBSkinning/demo/wxPythonSkin/grafting/graft_docking.py
r500 r603 20 20 <layout sizercfg='1, wxEXPAND' > 21 21 <notebook sizercfg='1, wxEXPAND' > 22 < dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' />22 <notebook_dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 23 23 </notebook> 24 24 <layout sizercfg='0, wxEXPAND'>
