Changeset 564
- Timestamp:
- 06/14/03 14:36:52 (5 years ago)
- Files:
-
- trunk/RBFoundation/RBFoundation/SubObs/Event.py (modified) (3 diffs)
- trunk/RBFoundation/RBFoundation/SubObs/Interface/EventSubject.py (modified) (1 diff)
- trunk/RBFoundation/RBFoundation/SubObs/Interface/__init__.py (modified) (2 diffs)
- trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py (modified) (12 diffs)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_multiple_events.py (modified) (1 diff)
- trunk/RBSkinning/demo/wxPythonSkin/docking/docking_single_and_multiple.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/RBFoundation/RBFoundation/SubObs/Event.py
r548 r564 26 26 import Interface 27 27 from AccessRules import IgnoreAccess 28 from Interface.EventSubject import EventSubjectTemplate 28 from Interface.EventSubject import EventSubjectTemplate, ObjectEventSubjectTemplate 29 29 from LogicRules import BaseCollection, SimpleNotification 30 30 … … 34 34 35 35 class EventSubjectBase(EventSubjectTemplate, SimpleNotification.SimpleNotification, IgnoreAccess.IgnoreAccess): 36 def _GetCollection(self): return self.iterCallables() 37 _collection_impl = property(_GetCollection) 38 39 class ObjectEventSubjectBase(ObjectEventSubjectTemplate, SimpleNotification.SimpleNotification, IgnoreAccess.IgnoreAccess): 36 40 def _GetCollection(self): return self.iterCallables() 37 41 _collection_impl = property(_GetCollection) … … 48 52 class EventSubjectProperty(Interface.AbstractProperty): 49 53 EventFactory = EventSubject 54 EventProperty = EventSubjectProperty 55 56 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 58 class ObjectEventSubjectWeakList(ObjectEventSubjectBase, ListCollection.ListCollection, BaseCollection.WeakWrapCallableMixin): pass 59 class ObjectEventSubjectStrongList(ObjectEventSubjectBase, ListCollection.ListCollection, BaseCollection.StrongWrapCallableMixin): pass 60 ObjectEventSubjectList = ObjectEventSubjectWeakList 61 ObjectEventSubject = ObjectEventSubjectWeakList # Set the default 62 63 class ObjectEventSubjectProperty(Interface.AbstractObjectProperty): 64 EventFactory = ObjectEventSubject 65 ObjectEventProperty = ObjectEventSubjectProperty 50 66 51 67 #~ Sets if they exist ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ trunk/RBFoundation/RBFoundation/SubObs/Interface/EventSubject.py
r537 r564 33 33 __call__ = AbstractTemplate._TemplateNotify 34 34 35 class ObjectEventSubjectTemplate(AbstractTemplate): 36 def __init__(self, obj): 37 self.obj = obj 38 def __call__(self, *args, **kw): 39 return self._TemplateNotify(self.obj, *args, **kw) 40 trunk/RBFoundation/RBFoundation/SubObs/Interface/__init__.py
r548 r564 19 19 ##~ 20 20 ##~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 21 22 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 23 #~ Imports 24 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 26 from RBFoundation.Objects.Properties import LazyProperty as _LazyProperty, LazyObjectProperty as _LazyObjectProperty 21 27 22 28 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 52 58 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 59 54 try: 55 from RBFoundation.Objects import Properties 56 CachedPropertyBase = Properties.CachedPropertyBase 57 except ImportError, AttributeError: 58 pass 59 else: 60 class AbstractProperty(CachedPropertyBase): 61 _factory_curry = (), {} 62 def __init__(self, *args, **kw): 63 if args or kw: 64 self._factory_curry = args, kw 65 def GetValue(self, obj): 66 args, kw = self._factory_curry 67 return self.EventFactory(*args, **kw) 60 class AbstractProperty(_LazyProperty): 61 namePrefix = '__event_' 68 62 69 def _CacheName(self, *args):70 return '__event_' + self._GetName(*args)63 def __init__(self, *args, **kw): 64 _LazyProperty.__init__(self, self.EventFactory, *args, **kw) 71 65 66 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67 68 class AbstractObjectProperty(_LazyObjectProperty): 69 namePrefix = '__event_' 70 71 def __init__(self, *args, **kw): 72 _LazyObjectProperty.__init__(self, self.EventFactory, *args, **kw) 73 trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py
r516 r564 26 26 import weakref 27 27 from wxPython import wx 28 from RBFoundation.SubObs.Event import ObjectEventProperty 28 29 from __init__ import SetLayoutContainerSizeHints 29 30 … … 40 41 41 42 class wxDockContainer(object): 43 OnDockHostUpdate = ObjectEventProperty() #(dockcontainer, dockhost, updatetype, *updateargs, **updatekeys) 44 OnDocked = ObjectEventProperty() #(dockcontainer, dockhost) 45 OnUndocked = ObjectEventProperty() #(dockcontainer, dockhost) 46 42 47 def __init__(self, dockhost=None): 43 48 self.docked = False … … 58 63 except ValueError: return False 59 64 65 def UpdateDockHost(self, updatetype, *updateargs, **updatekeys): 66 if self.docked: 67 self.dockhost.OnDockContainerUpdate(self, updatetype, *updateargs, **updatekeys) 68 60 69 def DockTo(self, dockhost): 61 70 if dockhost is not self.dockhost: … … 76 85 return self.Undock() 77 86 else: return self.Dock() 78 79 def OnDocked(self, dockitem, dockhost):80 pass # print "OnDocked", dockitem.__class__.__name__, dockhost.__class__.__name__81 87 82 88 def Dock(self, adjust=True): … … 86 92 self.dockhost.DockItem(self, item, *args, **kw) 87 93 self.docked = True 88 self.OnDocked(self , self.dockhost)94 self.OnDocked(self.dockhost) 89 95 return self.docked 90 91 def OnUndocked(self, dockitem, dockhost):92 pass # print "OnUndocked", dockitem.__class__.__name__, dockhost.__class__.__name__93 96 94 97 def Undock(self, adjust=True): … … 97 100 if adjust: self._AdjustItem(item, False) 98 101 self.dockhost.UndockItem(self, item) 99 self.OnUndocked(self , self.dockhost)102 self.OnUndocked(self.dockhost) 100 103 elif adjust: 101 104 for item, args, kw in self.items: … … 112 115 113 116 class wxDockHostBase(object): 114 def OnDockItem(self, dockhost, container, dockitem, *args, **kw): 115 pass # print "OnDockItem", dockhost.__class__.__name__, container.__class__.__name__ 117 OnDockContainerUpdate = ObjectEventProperty() #(dockhost, dockcontainer, updatetype, *updateargs, **updatekeys) 118 OnDockItem = ObjectEventProperty() #(dockhost, dockcontainer, dockitem, *args, **kw) 119 OnUndockItem = ObjectEventProperty() #(dockhost, dockcontainer, dockitem, *args, **kw) 120 121 def UpdateDockContainers(self, updatetype, *updateargs, **updatekeys): 122 for dockcontainer in self.DockContainers(): 123 dockcontainer.OnDockHostUpdate(self, updatetype, *updateargs, **updatekeys) 116 124 117 125 def DockItem(self, container, dockitem=None, *args, **kw): 118 126 raise NotImplementedError 119 127 120 def OnUndockItem(self, dockhost, container, dockitem, *args, **kw):121 pass # print "OnUndockItem", dockhost.__class__.__name__, container.__class__.__name__122 123 128 def UndockItem(self, container, dockitem=None, *args, **kw): 124 129 raise NotImplementedError 130 131 def UndockAll(self): 132 for dockitem in self.DockContainers(): 133 self.UndockItem(dockitem) 134 135 def DockContainers(self): 136 try: 137 return self.dockcontainerlist 138 except AttributeError: 139 self.dockcontainerlist = [] 140 return self.dockcontainerlist 125 141 126 142 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 146 162 self.prepend = prepend 147 163 self.hideempty = hideempty 148 self.dockitemlist = []149 164 150 165 def DockItem(self, container, dockitem=None, *args, **kw): … … 163 178 self.layout.Prepend(dockitem, *args, **kw) 164 179 else: self.layout.Add(dockitem, *args, **kw) 165 self. dockitemlist.append(container)166 self.OnDockItem( self,container, dockitem)180 self.DockContainers().append(container) 181 self.OnDockItem(container, dockitem) 167 182 self.Layout() 168 183 … … 186 201 self.parent.SetSizeHints(0, 0) 187 202 self.layout.Remove(dockitem) 188 self. dockitemlist.remove(container)189 self.OnUndockItem( self,container, dockitem)203 self.DockContainers().remove(container) 204 self.OnUndockItem(container, dockitem) 190 205 self.Layout() 191 192 def UndockAll(self):193 for dockitem in self.dockitemlist:194 self.UndockItem(dockitem)195 206 196 207 def Layout(self): … … 299 310 self.notebook.AddPage(page, text, self.selectpage) 300 311 page.Show(True) 301 self.OnDockItem(self, container, dockitem) 312 self.DockContainers().append(container) 313 self.OnDockItem(container, dockitem) 302 314 self.Layout() 303 315 … … 327 339 328 340 self.ReleaseNotebookDockPage(page) 329 self.OnUndockItem(self, container, dockitem) 341 self.DockContainers().remove(container) 342 self.OnUndockItem(container, dockitem) 330 343 self.Layout() 331 344 trunk/RBSkinning/demo/wxPythonSkin/docking/docking_multiple_events.py
r563 r564 98 98 result = self.skinner.GraftXML([self.graftpoint], graftxml) 99 99 result.object.UnravelNode = BindCallable(result.UnravelNode) 100 result.object.OnUndocked = BindCallable(self.OnUndocked)100 result.object.OnUndocked.Add(self.OnUndocked) 101 101 return result.object 102 102 trunk/RBSkinning/demo/wxPythonSkin/docking/docking_single_and_multiple.py
r528 r564 99 99 result = self.skinner.GraftXML([self.graftpoint], graftxml) 100 100 result.object.UnravelNode = BindCallable(result.UnravelNode) 101 result.object.OnUndocked = BindCallable(self.OnUndocked)101 result.object.OnUndocked.Add(self.OnUndocked) 102 102 return result.object 103 103
