diff options
Diffstat (limited to 'pynxc/waxy/splitter.py~')
-rw-r--r-- | pynxc/waxy/splitter.py~ | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/pynxc/waxy/splitter.py~ b/pynxc/waxy/splitter.py~ new file mode 100644 index 0000000..e1fac80 --- /dev/null +++ b/pynxc/waxy/splitter.py~ @@ -0,0 +1,62 @@ +# splitter.py + +import wx +import waxyobject +import styles +import utils + +class Splitter(wx.SplitterWindow, waxyobject.WaxyObject): + + __events__ = { + 'SashPosChanging': wx.EVT_SPLITTER_SASH_POS_CHANGING, + 'SashPosChanged': wx.EVT_SPLITTER_SASH_POS_CHANGED, + 'Unsplit': wx.EVT_SPLITTER_UNSPLIT, + 'DoubleClick': wx.EVT_SPLITTER_DCLICK, + } + + def __init__(self, parent, size=None, **kwargs): + style = 0 + style |= self._params(kwargs) + style |= styles.window(kwargs) + wx.SplitterWindow.__init__(self, parent, wx.NewId(), style=style) + + if size: + self.SetSize(size) + + self.BindEvents() + styles.properties(self, kwargs) + + # I would have liked to add the windows to the constructor, but it's + # not possible because the Splitter needs to be present as the + # windows' parent... hmm... + + def Split(self, window1, window2, direction="horizontal", sashposition=100, + minsize=20): + # check parents + if waxconfig.WaxConfig.check_parent: + if window1.GetParent() is not self: + utils.parent_warning(window1, self) + if window2.GetParent() is not self: + utils.parent_warning(window2, self) + + if direction.lower().startswith("h"): + self.SplitHorizontally(window1, window2, sashposition) + elif direction.lower().startswith("v"): + self.SplitVertically(window1, window2, sashposition) + else: + raise ValueError, "direction must be horizontal or vertical" + + self.SetMinimumPaneSize(minsize) + + # + # style parameters + + def _params(self, kwargs): + flags = 0 + flags |= styles.stylebool('permit_unsplit', wx.SP_PERMIT_UNSPLIT, kwargs) + flags |= styles.stylebool('live_update', wx.SP_LIVE_UPDATE, kwargs) + flags |= styles.stylebool('no_xp_theme', wx.SP_NO_XP_THEME, kwargs) + flags |= styles.stylebool('border', wx.SP_BORDER, kwargs) + flags |= styles.stylebool('sash3d', wx.SP_3DSASH, kwargs) + flags |= styles.stylebool('all3d', wx.SP_3D, kwargs) + return flags |