Changeset 475

Show
Ignore:
Timestamp:
03/15/03 01:00:36 (6 years ago)
Author:
sholloway
Message:

Fixed some sash problems
Cleaned up layout fit, autosizing and formalized sizer hint setting
Depreciated sizerOption, sizerFlag, and sizerBorder in favor of sizercfg tuple-type
Depreciated sizerFit, sizerAuto, and sizerHint in favor or new names

Files:

Legend:

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

    r472 r475  
    6363            except AttributeError: 
    6464                if not Resilliant: raise 
     65                else: InheritedSettings=None 
    6566            if InheritedSettings is not None: 
    6667                settings.update(InheritedSettings) 
  • trunk/RBSkinning/RBSkinning/SkinObject.py

    r472 r475  
    2929import SkinContext 
    3030import weakref 
     31import warnings 
    3132 
    3233#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    116117                value = self.settings['contextnode'] 
    117118                self.settings['ctxnode'] = value 
    118                 import warnings 
    119119                warnings.warn('"contextnode" attribute will be renamed to "ctxnode" in future releases.', DeprecationWarning) 
    120120            except KeyError: pass 
     
    130130                value = self.settings['contextvar'] 
    131131                self.settings['ctxvar'] = value 
    132                 import warnings 
    133132                warnings.warn('"contextvar" attribute will be renamed to "ctxvar" in future releases.', DeprecationWarning) 
    134133            except KeyError: pass 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/layout.py

    r472 r475  
    2424#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    2525 
     26import warnings 
    2627from wxSkinLayoutObject import wx, wxSkinLayoutObject, wxSkinObjectNoData 
     28 
     29#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     30#~ Definitions  
     31#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     32 
     33def SetLayoutContainerSizeHints(layout, container, force=False): 
     34    """Tool to update container's size hints to layout's minsize,  
     35    accounting for client area""" 
     36    minsize = layout.GetMinSize().asTuple() 
     37    size = container.GetSizeTuple() 
     38    clientsize = container.GetClientSizeTuple() 
     39    sizew = minsize[0] + (size[0] - clientsize[0]) 
     40    sizeh = minsize[1] + (size[1] - clientsize[1]) 
     41    if force or sizew > 0 or sizeh > 0: 
     42        container.SetSizeHints(sizew, sizeh) 
     43        return True 
     44    else: return False 
    2745 
    2846#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
     
    3856    default_settings.update({ 
    3957        'orientation': 'opposite', 
    40         #'sizerAuto': '1', 
    41         #'sizerFit': '0', 
     58        #'autosize': '1', 
     59        #'sethints': '1', 
     60        #'fit': '0', 
     61 
     62        #'sizerAuto': '1',  # Note: Depreciated, use autosize instead 
     63        #'sizerHints': '1', # Note: Depreciated, use sethints instead 
     64        #'sizerFit': '0',   # Note: Depreciated, use fit instead 
     65 
    4266        #'args': '()', 
    4367        }) 
     
    6185 
    6286    def SkinInitialize(self): 
     87 
     88        # XXX: Depreciate these out... 
     89        sizerAuto = self.settings.get('sizerAuto', self) 
     90        if sizerAuto is not self: 
     91            self.settings['autosize'] = sizerAuto 
     92            warnings.warn('"sizerAuto" attribute should be replaced with "autosize"', DeprecationWarning) 
     93        sizerHints = self.settings.get('sizerHints', self) 
     94        if sizerHints is not self: 
     95            self.settings['sethints'] = sizerHints 
     96            warnings.warn('"sizerHints" attribute should be replaced with "sethints"', DeprecationWarning) 
     97        sizerFit = self.settings.get('sizerFit', self) 
     98        if sizerFit is not self: 
     99            self.settings['fit'] = sizerFit 
     100            warnings.warn('"sizerFit" attribute should be replaced with "fit"', DeprecationWarning) 
     101 
    63102        self.PushContext() 
    64103        self.winParent = self.wxGetParentObject((wx.wxWindowPtr, layout)) 
     
    82121 
    83122    def SkinFinalize(self): 
    84         minsize = self.wxEvalCond('minsize', None) 
    85         if minsize is None: 
    86             minsize = self.wxEvalCond('sizehints', (-1, -1))[:2] 
    87             if minsize == (-1,-1): minsize = None 
    88         if minsize is None: 
    89             minsize = self.object.GetMinSize().asTuple() 
    90         if minsize is not None: 
     123        minsize = self.wxEvalCond('sizehints', (-1, -1))[:2] 
     124        if minsize == (-1,-1): 
    91125            self.object.SetMinSize(minsize) 
    92126 
     
    95129        parent = self.wxGetParentObject((wx.wxSizerPtr, wx.wxWindowPtr)) 
    96130        if parent is self.winParent:  
    97             parentLayout = getattr(self.parent().context, 'layout', None) 
    98             if parentLayout:  
    99                 sizew, sizeh = self.object.GetMinSize().asTuple() 
    100                 parentLayout.SetItemMinSize(self.winParent, sizew, sizeh) 
     131            self.winParent.SetSizer(self.object) 
     132            self.winParent.SetAutoLayout(self.wxEvalCond('autosize', 1)) 
    101133 
    102             self.winParent.SetSizer(self.object) 
     134            # Set size hints 
     135            if self.wxEvalCond('sethints', 1):  
     136                SetLayoutContainerSizeHints(self.object, self.winParent) 
    103137 
    104             if self.wxEvalCond('sizerAuto', 1):  
    105                 self.winParent.SetAutoLayout(1) 
    106             if self.wxEvalCond('sizerFit', 1):  
    107                 self.object.SetSizeHints(self.winParent) # Be sure to set size hints after setting sizer! 
     138            if self.wxEvalCond('fit', 1):  
    108139                self.object.Fit(self.winParent) 
    109140        del self.winParent 
     
    119150            return super(layout, self).wxAddChild(ChildNode) 
    120151 
    121         sizerargs = ChildNode.wxEvalCond('layout', None) 
     152        sizerargs = ChildNode.wxEvalCond('sizercfg', None) 
    122153        if sizerargs is None: 
    123154            sizerargs = [ChildNode.wxEvalCond(*evalargs) for evalargs in (('sizerOption', 0), ('sizerFlag', 0), ('sizerBorder', 0))] 
     155            if sizerargs != (0,0,0): 
     156                warnings.warn('"sizerOption", "sizerFlag", and "sizerBorder" attributes should be replaced with "sizercfg"', DeprecationWarning) 
    124157        args = args + tuple(sizerargs) 
    125158         
     
    129162        # Check for minsize directives... 
    130163        if not isinstance(ChildNode.object, tuple): 
    131             minsize = ChildNode.wxEvalCond('minsize', None) 
    132             if minsize is None: 
    133                 minsize = ChildNode.wxEvalCond('sizehints', (-1, -1))[:2] 
    134                 if minsize == (-1,-1): minsize = None 
    135             if minsize is not None: 
     164            minsize = ChildNode.wxEvalCond('sizehints', (-1, -1))[:2] 
     165            if minsize != (-1,-1): 
    136166                self.object.SetItemMinSize(ChildNode.object, *minsize) 
    137167 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/layout_algorithm.py

    r472 r475  
    3737    default_settings = wxSkinObject.default_settings.copy() 
    3838    default_settings.update({ 
    39         'events': 'wxEVT_SIZE,
     39        'events': 'wxEVT_SIZE,wxEVT_MOVE
    4040        }) 
    4141 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/sash_layout.py

    r388 r475  
    5353        kwSettings = self.wxSettingDict(['wxid', 'style', 'pos', 'size'], ['name']) 
    5454        self.object = wx.wxSashLayoutWindow(winParent, **kwSettings) 
     55        self.wxInitialStandardOptions() 
    5556        if self.wxEval('autodrag'): 
    5657            wx.EVT_SASH_DRAGGED(self.object, self.object.GetId(), self.OnSashDrag) 
     58 
     59    def SkinFinalize(self): 
     60        self.SetSashSettings() 
     61        self.wxFinalStandardOptions() 
     62        self.context[-1].layout_algorithm.OnLayout(None) 
    5763 
    5864    def SetSashSettings(self): 
  • trunk/RBSkinning/RBSkinning/wxPythonSkin/wxSkinLayoutObject.py

    r472 r475  
    3737    default_settings = wxSkinObject.default_settings.copy() 
    3838    default_settings.update({ 
    39         #'sizerOption': '0', 
    40         #'sizerFlag': '0', 
    41         #'sizerBorder': '0', 
    42         #'minsize': '0', 
     39        #'sizerOption': '0',    # Note: Depreciated, use sizercfg instead 
     40        #'sizerFlag': '0',      # Note: Depreciated, use sizercfg instead 
     41        #'sizerBorder': '0',    # Note: Depreciated, use sizercfg instead 
     42        #'sizercfg': '0,0,0', 
    4343        }) 
    4444    default_settings[SkinObject.BaseSettingsInherit] += 'wxDefLayout,'