- from wxd import wx_
- self.wxdocs = Filling(parent=self.notebook,
- rootObject=wx_,
- rootLabel='wx',
- rootIsNamespace=False,
- static=True)
- self.notebook.AddPage(page=self.wxdocs, text='wxPython Docs')
- from wxd import stc_
- self.stcdocs = Filling(parent=self.notebook,
- rootObject=stc_.StyledTextCtrl,
- rootLabel='StyledTextCtrl',
- rootIsNamespace=False,
- static=True)
- self.notebook.AddPage(page=self.stcdocs, text='StyledTextCtrl Docs')
- self.SplitHorizontally(self.shell, self.notebook, 300)
- self.SetMinimumPaneSize(1)
+
+
+ # Initialize in an unsplit mode, and check later after loading
+ # settings if we should split or not.
+ self.shell.Hide()
+ self.notebook.Hide()
+ self.Initialize(self.shell)
+ self._shouldsplit = True
+ wx.CallAfter(self._CheckShouldSplit)
+ self.SetMinimumPaneSize(100)
+
+ self.Bind(wx.EVT_SIZE, self.SplitterOnSize)
+ self.Bind(wx.EVT_SPLITTER_SASH_POS_CHANGED, self.OnChanged)
+ self.Bind(wx.EVT_SPLITTER_DCLICK, self.OnSashDClick)
+
+ def _CheckShouldSplit(self):
+ if self._shouldsplit:
+ self.SplitHorizontally(self.shell, self.notebook, -self.sashoffset)
+ self.lastsashpos = self.GetSashPosition()
+ else:
+ self.lastsashpos = -1
+ self.issplit = self.IsSplit()
+
+ def ToggleTools(self):
+ """Toggle the display of the filling and other tools"""
+ if self.issplit:
+ self.Unsplit()
+ else:
+ self.SplitHorizontally(self.shell, self.notebook, -self.sashoffset)
+ self.lastsashpos = self.GetSashPosition()
+ self.issplit = self.IsSplit()
+
+ def ToolsShown(self):
+ return self.issplit
+
+ def OnChanged(self, event):
+ """update sash offset from the bottom of the window"""
+ self.sashoffset = self.GetSize().height - event.GetSashPosition()
+ self.lastsashpos = event.GetSashPosition()
+ event.Skip()
+
+ def OnSashDClick(self, event):
+ self.Unsplit()
+ self.issplit = False
+
+ # Make the splitter expand the top window when resized
+ def SplitterOnSize(self, event):
+ splitter = event.GetEventObject()
+ sz = splitter.GetSize()
+ splitter.SetSashPosition(sz.height - self.sashoffset, True)
+ event.Skip()
+
+
+ def LoadSettings(self, config):
+ self.shell.LoadSettings(config)
+ self.filling.LoadSettings(config)
+
+ pos = config.ReadInt('Sash/CrustPos', 400)
+ wx.CallAfter(self.SetSashPosition, pos)
+ def _updateSashPosValue():
+ sz = self.GetSize()
+ self.sashoffset = sz.height - self.GetSashPosition()
+ wx.CallAfter(_updateSashPosValue)
+ zoom = config.ReadInt('View/Zoom/Display', -99)
+ if zoom != -99:
+ self.display.SetZoom(zoom)
+ self.issplit = config.ReadInt('Sash/IsSplit', True)
+ if not self.issplit:
+ self._shouldsplit = False
+
+ def SaveSettings(self, config):
+ self.shell.SaveSettings(config)
+ self.filling.SaveSettings(config)
+
+ if self.lastsashpos != -1:
+ config.WriteInt('Sash/CrustPos', self.lastsashpos)
+ config.WriteInt('Sash/IsSplit', self.issplit)
+ config.WriteInt('View/Zoom/Display', self.display.GetZoom())
+
+
+