Changeset 603

Show
Ignore:
Timestamp:
07/07/03 23:05:40 (5 years ago)
Author:
sholloway
Message:

*** empty log message ***

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/RBFoundation/RBFoundation/BindCallable.py

    r529 r603  
    226226        # not quite sure what it is, but it does not require binding 
    227227        return Callable 
     228Bind = BindCallable 
    228229 
    229230def WeakBindCallable(Callable, *args, **kw): 
    230231    """Weakly binds a callable object only if needed.""" 
    231232    return BindCallable(Callable, WeakBoundCallable, *args, **kw) 
     233WeakBind = WeakBindCallable 
    232234 
    233235def StrongBindCallable(Callable, *args, **kw): 
    234236    """Strongly binds a callable object only if needed.""" 
    235237    return BindCallable(Callable, StrongBoundCallable, *args, **kw) 
     238StrongBind = StrongBindCallable 
    236239 
    237240def CurryCallable(Callable, *args, **kw): 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/dockhost.py

    r504 r603  
    3737 
    3838    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()' 
    3944 
    4045    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    4348 
    4449    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) 
    4655 
    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) 
    6157        if single: 
    6258            wxDockingTools.wxSingleDockHostAspect.MixinAspect(self.object) 
    6359 
     60    def SkinFinalize(self): 
    6461        self.wxStandardOptions() 
    6562  
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/layout_algorithm.py

    r475 r603  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26import weakref 
     27from RBFoundation.BindCallable import BindCallable 
    2628from wxSkinObject import wx, wxSkinObject, wxSkinWindowCollectorObject, wxSkinObjectNoData 
    2729 
     
    2931#~ Class 
    3032#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     33 
     34class 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() 
    3141 
    3242class layout_algorithm(wxSkinObject, wxSkinWindowCollectorObject, wxSkinObjectNoData): 
     
    3646 
    3747    default_settings = wxSkinObject.default_settings.copy() 
    38     default_settings.update({ 
    39         'events': 'wxEVT_SIZE,wxEVT_MOVE' 
    40         }) 
    4148 
    4249    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    4653    def SkinInitialize(self): 
    4754        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) 
    4958        self.wxInitialStandardOptions() 
    5059        self.PushContext() 
     
    5261        self.childWindow = None 
    5362        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) 
    5764 
    5865    def SkinFinalize(self): 
     
    6471    def OnLayout(self, evt=None): 
    6572        self.object.LayoutWindow(self.winParent, self.childWindow) 
     73 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/sash.py

    r598 r603  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26import weakref 
    2627from wxSkinLayoutObject import wx, wxSkinLayoutObject, wxSkinObjectNoData 
    2728 
     
    4950 
    5051    def SkinInitialize(self): 
     52        self.PushContext() 
    5153        winParent = self.wxGetParentObject(wx.wxWindowPtr) 
    5254        kwSettings = self.wxSettingDict(['wxid', 'style', 'pos', 'size'], ['name']) 
    5355        self.object = self.wxSashWindow(winParent, **kwSettings) 
     56        self.context.sash = weakref.proxy(self) 
    5457        self.wxInitialStandardOptions() 
    5558 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_layout.py

    r598 r603  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26import weakref 
    2627from sash import wx, sash 
    2728 
     
    5354        kwSettings = self.wxSettingDict(['wxid', 'style', 'pos', 'size'], ['name']) 
    5455        self.object = wx.wxSashLayoutWindow(winParent, **kwSettings) 
     56        self.context.sash = weakref.proxy(self) 
    5557        self.wxInitialStandardOptions() 
    5658        if self.wxEvalCond('autodrag', True): 
    5759            wx.EVT_SASH_DRAGGED(self.object, self.object.GetId(), self.OnSashDrag) 
     60        wx.EVT_ACTIVATE(self.object, self.OnLayout) 
    5861 
    5962    def SkinFinalize(self): 
    6063        self.SetSashSettings() 
    6164        self.wxFinalStandardOptions() 
    62         self.context[-1].layout_algorithm.OnLayout(None) 
     65        self.OnLayout(None) 
    6366 
    6467    def SetSashSettings(self): 
     
    7174        rect = evt.GetDragRect() 
    7275        evt.GetEventObject().SetDefaultSize(wx.wxSize(rect.width, rect.height)) 
     76        self.OnLayout(evt) 
     77 
     78    def OnLayout(self, evt=None): 
    7379        self.context[-1].layout_algorithm.OnLayout(evt) 
    7480 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/wxSkinObject.py

    r563 r603  
    177177    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    178178 
    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) 
    181182        for each in Eval:  
    182             result[each] = self.wxEvalCond(each
     183            result[each] = self.wxEvalCond(each, result.get(each)
    183184        for each in NonEval:  
    184185            result[each] = self.settings[each] 
  • trunk/RBSkinning/RBSkinning/wxTools/wxDockingTools.py

    r598 r603  
    170170    hideempty = False 
    171171 
     172    OnLayingout = ObjectEventProperty() #(dockhost) 
     173    OnLayoutComplete = ObjectEventProperty() #(dockhost) 
     174 
    172175    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    173176    #~ Public Methods  
     
    225228 
    226229    def Layout(self): 
     230        self.OnLayingout() 
    227231        self.rootlayout.Layout() 
    228         self.layout.Layout() 
     232        if self.layout is not self.rootlayout: 
     233            self.layout.Layout() 
    229234        self._SetLayoutContainerSizeHints() 
    230  
     235        self.HideEmpty() 
     236        self.OnLayoutComplete() 
     237 
     238    def HideEmpty(self): 
    231239        if self.hideempty: 
     240            if isinstance(self.hideempty, wx.wxWindowPtr): 
     241                hidewindow = self.hideempty 
     242            else: hidewindow = self.parent 
    232243            if self.dockcount <= 0: 
    233244                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() 
    237249 
    238250    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    242254    def _SetLayoutContainerSizeHints(self): 
    243255        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) 
    245258 
    246259#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    250263    #~ Constants / Variables / Etc.  
    251264    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     265 
     266    OnLayingout = ObjectEventProperty() #(dockhost) 
     267    OnLayoutComplete = ObjectEventProperty() #(dockhost) 
    252268 
    253269    prepend = False 
     
    363379 
    364380    def Layout(self): 
     381        self.OnLayingout() 
     382        self.HideEmpty() 
     383        self.OnLayoutComplete() 
     384 
     385    def HideEmpty(self): 
    365386        if self.hideempty: 
     387            if isinstance(self.hideempty, wx.wxWindow): 
     388                hidewindow = self.hideempty 
     389            else: hidewindow = self.notebook 
    366390            if self.dockcount <= 0: 
    367391                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() 
    371396 
    372397    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
  • trunk/RBSkinning/demo/wxPythonSkin/docking/docking_grow.py

    r483 r603  
    8383    </frame> 
    8484 
    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'> 
    8686        <command_event type='wxEVT_CLOSE_WINDOW' call='ctx.behaviormodel.OnCloseFreeDock' /> 
    8787        <layout sizercfg='1, wxEXPAND'>  
  • trunk/RBSkinning/demo/wxPythonSkin/docking/docking_inplace.py

    r483 r603  
    8383    </frame> 
    8484 
    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'> 
    8686        <command_event type='wxEVT_CLOSE_WINDOW' call='ctx.behaviormodel.OnCloseFreeDock' /> 
    8787        <layout sizercfg='1, wxEXPAND'>  
  • trunk/RBSkinning/demo/wxPythonSkin/docking/docking_notebook.py

    r497 r603  
    3838                <layout sizercfg='1, wxEXPAND' > 
    3939                    <notebook sizercfg='1, wxEXPAND' > 
    40                         <dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 
     40                        <notebook_dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 
    4141                    </notebook> 
    4242                    <layout sizercfg='0, wxEXPAND'> 
  • trunk/RBSkinning/demo/wxPythonSkin/grafting/graft_docking.py

    r500 r603  
    2020                <layout sizercfg='1, wxEXPAND' > 
    2121                    <notebook sizercfg='1, wxEXPAND' > 
    22                         <dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 
     22                        <notebook_dockhost ctxvar='behaviormodel.DHNotebook' prepend='0' /> 
    2323                    </notebook> 
    2424                    <layout sizercfg='0, wxEXPAND'>