X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec873c943d71f0d5f13e3398557071448cda6c23..a4027e74873007e3430af3bd77019bcab76f6c04:/wxPython/demo/DynamicSashWindow.py diff --git a/wxPython/demo/DynamicSashWindow.py b/wxPython/demo/DynamicSashWindow.py deleted file mode 100644 index bd1ccbc34a..0000000000 --- a/wxPython/demo/DynamicSashWindow.py +++ /dev/null @@ -1,166 +0,0 @@ - -import wx -import wx.gizmos as gizmos -import wx.stc as stc - -#---------------------------------------------------------------------- -# This is an example of the complex view that manages its own scrollbars -# as described in the overview below. - -class TestView(stc.StyledTextCtrl): - def __init__(self, parent, ID, log): - stc.StyledTextCtrl.__init__(self, parent, ID, style=wx.NO_BORDER) - self.dyn_sash = parent - self.log = log - self.SetupScrollBars() - self.SetMarginWidth(1,0) - - self.StyleSetFont(stc.STC_STYLE_DEFAULT, - wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL)) - - self.Bind(gizmos.EVT_DYNAMIC_SASH_SPLIT, self.OnSplit) - self.Bind(gizmos.EVT_DYNAMIC_SASH_UNIFY, self.OnUnify) - #self.SetScrollWidth(500) - - def SetupScrollBars(self): - # hook the scrollbars provided by the wxDynamicSashWindow - # to this view - v_bar = self.dyn_sash.GetVScrollBar(self) - h_bar = self.dyn_sash.GetHScrollBar(self) - v_bar.Bind(wx.EVT_SCROLL, self.OnSBScroll) - h_bar.Bind(wx.EVT_SCROLL, self.OnSBScroll) - v_bar.Bind(wx.EVT_SET_FOCUS, self.OnSBFocus) - h_bar.Bind(wx.EVT_SET_FOCUS, self.OnSBFocus) - - # And set the wxStyledText to use these scrollbars instead - # of its built-in ones. - self.SetVScrollBar(v_bar) - self.SetHScrollBar(h_bar) - - - def __del__(self): - self.log.write("TestView.__del__\n") - - def OnSplit(self, evt): - self.log.write("TestView.OnSplit\n"); - newview = TestView(self.dyn_sash, -1, self.log) - newview.SetDocPointer(self.GetDocPointer()) # use the same document - self.SetupScrollBars() - - - def OnUnify(self, evt): - self.log.write("TestView.OnUnify\n"); - self.SetupScrollBars() - - - def OnSBScroll(self, evt): - # redirect the scroll events from the dyn_sash's scrollbars to the STC - self.GetEventHandler().ProcessEvent(evt) - - def OnSBFocus(self, evt): - # when the scrollbar gets the focus move it back to the STC - self.SetFocus() - - -sampleText="""\ -You can drag the little tabs above the vertical scrollbar, or to the -left of the horizontal scrollbar to split this view, and you can -continue splitting the new views as much as you like. Try it and see. - -In this case the views also share the same document so changes in one -are instantly seen in the others. This is a feature of the -StyledTextCtrl that is used for the view class in this sample. -""" - -#---------------------------------------------------------------------- -# This one is simpler, but doesn't do anything with the scrollbars -# except the default wxDynamicSashWindow behaviour - -class SimpleView(wx.Panel): - def __init__(self, parent, ID, log): - wx.Panel.__init__(self, parent, ID) - self.dyn_sash = parent - self.log = log - self.SetBackgroundColour("LIGHT BLUE") - self.Bind(gizmos.EVT_DYNAMIC_SASH_SPLIT, self.OnSplit) - - def OnSplit(self, evt): - v = SimpleView(self.dyn_sash, -1, self.log) - - -#---------------------------------------------------------------------- - -def runTest(frame, nb, log): -## if wx.Platform == "__WXMAC__": -## from Main import MessagePanel -## win = MessagePanel(nb, 'This demo currently fails on the Mac. The problem is being looked into...', -## 'Sorry', wx.ICON_WARNING) -## return win - - if 1: - win = gizmos.DynamicSashWindow(nb, -1, style = wx.CLIP_CHILDREN - #| wxDS_MANAGE_SCROLLBARS - #| wxDS_DRAG_CORNER - ) - - win.SetFont(wx.Font(10, wx.MODERN, wx.NORMAL, wx.NORMAL)) - view = TestView(win, -1, log) - view.SetText(sampleText) - else: - win = wx.DynamicSashWindow(nb, -1) - view = SimpleView(win, -1, log) - return win - -#---------------------------------------------------------------------- - -overview = """\ -
--wxDynamicSashWindow widgets manages the way other widgets are viewed. -When a wxDynamicSashWindow is first shown, it will contain one child -view, a viewport for that child, and a pair of scrollbars to allow the -user to navigate the child view area. Next to each scrollbar is a small -tab. By clicking on either tab and dragging to the appropriate spot, a -user can split the view area into two smaller views separated by a -draggable sash. Later, when the user wishes to reunify the two subviews, -the user simply drags the sash to the side of the window. -wxDynamicSashWindow will automatically reparent the appropriate child -view back up the window hierarchy, and the wxDynamicSashWindow will have -only one child view once again. -
-As an application developer, you will simply create a wxDynamicSashWindow -using either the Create() function or the more complex constructor -provided below, and then create a view window whose parent is the -wxDynamicSashWindow. The child should respond to -wxDynamicSashSplitEvents -- perhaps with an OnSplit() event handler -- by -constructing a new view window whose parent is also the -wxDynamicSashWindow. That's it! Now your users can dynamically split -and reunify the view you provided. -
-If you wish to handle the scrollbar events for your view, rather than -allowing wxDynamicSashWindow to do it for you, things are a bit more -complex. (You might want to handle scrollbar events yourself, if, -for instance, you wish to scroll a subwindow of the view you add to -your wxDynamicSashWindow object, rather than scrolling the whole view.) -In this case, you will need to construct your wxDynamicSashWindow without -the wxDS_MANAGE_SCROLLBARS style and you will need to use the -GetHScrollBar() and GetVScrollBar() methods to retrieve the scrollbar -controls and call SetEventHanler() on them to redirect the scrolling -events whenever your window is reparented by wxDyanmicSashWindow. -You will need to set the scrollbars' event handler at three times: -
-