1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: SWIG interface defs for wxSplitterWindow
7 // Created: 2-June-1998
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
16 //---------------------------------------------------------------------------
18 MAKE_CONST_WXSTRING2(SplitterNameStr, wxT("splitter"));
20 //---------------------------------------------------------------------------
38 wxSPLIT_HORIZONTAL = 1,
45 wxSPLIT_DRAG_DRAGGING,
46 wxSPLIT_DRAG_LEFT_DOWN
49 //---------------------------------------------------------------------------
51 DocStr(wxSplitterWindow,
52 "wx.SplitterWindow manages up to two subwindows or panes,
53 with an optional vertical or horizontal split which can be
54 used with the mouse or programmatically.
57 RefDoc(wxSplitterWindow, "
59 wx.SP_3D Draws a 3D effect border and sash.
60 wx.SP_3DSASH Draws a 3D effect sash.
61 wx.SP_3DBORDER Synonym for wxSP_BORDER.
62 wx.SP_BORDER Draws a standard border.
63 wx.SP_NOBORDER No border (default).
64 wx.SP_NO_XP_THEME Under Windows XP, switches off the
65 attempt to draw the splitter
66 using Windows XP theming, so the
67 borders and sash will take on the
69 wx.SP_PERMIT_UNSPLIT Always allow to unsplit, even with
70 the minimum pane size other than zero.
71 wx.SP_LIVE_UPDATE Don't draw XOR line but resize the
72 child windows immediately.
76 EVT_SPLITTER_SASH_POS_CHANGING
77 The sash position is in the
78 process of being changed. May be
79 used to modify the position of
80 the tracking bar to properly
81 reflect the position that would
82 be set if the drag were to be
83 completed at this point.
85 EVT_SPLITTER_SASH_POS_CHANGED
87 changed. May be used to modify
88 the sash position before it is
89 set, or to prevent the change
92 EVT_SPLITTER_UNSPLIT The splitter has been just unsplit.
94 EVT_SPLITTER_DCLICK The sash was double clicked. The
95 default behaviour is to unsplit
96 the window when this happens
97 (unless the minimum pane size has
98 been set to a value greater than
104 // wxSplitterWindow maintains one or two panes, with an optional vertical or
105 // horizontal split which can be used with the mouse or programmatically.
106 class wxSplitterWindow: public wxWindow
109 %pythonPrepend wxSplitterWindow "if kwargs.has_key('point'): kwargs['pos'] = kwargs['point']"
110 %pythonPrepend wxSplitterWindow() ""
111 %pythonAppend wxSplitterWindow "self._setOORInfo(self)"
112 %pythonAppend wxSplitterWindow() ""
114 RefDoc(wxSplitterWindow, ""); // turn it off for the ctors
117 wxSplitterWindow(wxWindow* parent, wxWindowID id,
118 const wxPoint& pos = wxDefaultPosition,
119 const wxSize& size = wxDefaultSize,
121 const wxString& name = wxPySplitterNameStr),
122 "Constructor. Creates and shows a SplitterWindow.");
126 "Precreate a SplitterWindow for 2-phase creation.",
131 bool , Create(wxWindow* parent, wxWindowID id,
132 const wxPoint& pos = wxDefaultPosition,
133 const wxSize& size = wxDefaultSize,
135 const wxString& name = wxPySplitterNameStr),
136 "Create the GUI part of the SplitterWindow for the 2-phase create.");
141 wxWindow *, GetWindow1() const,
142 "Gets the only or left/top pane.");
146 wxWindow *, GetWindow2() const,
147 "Gets the right/bottom pane.");
151 void , SetSplitMode(int mode),
152 "Sets the split mode. The mode can be wx.SPLIT_VERTICAL or
153 wx.SPLIT_HORIZONTAL. This only sets the internal variable;
154 does not update the display.");
158 wxSplitMode , GetSplitMode() const,
159 "Gets the split mode");
163 void , Initialize(wxWindow *window),
164 "Initializes the splitter window to have one pane. This
165 should be called if you wish to initially view only a single
166 pane in the splitter window.");
169 // Associates the given window with window 2, drawing the appropriate sash
170 // and changing the split mode.
171 // Does nothing and returns False if the window is already split.
172 // A sashPosition of 0 means choose a default sash position,
173 // negative sashPosition specifies the size of right/lower pane as it's
174 // absolute value rather than the size of left/upper pane.
177 virtual bool , SplitVertically(wxWindow *window1,
179 int sashPosition = 0),
180 "Initializes the left and right panes of the splitter window.
182 window1 The left pane.
183 window2 The right pane.
184 sashPosition The initial position of the sash. If this
185 value is positive, it specifies the size
186 of the left pane. If it is negative, it is
187 absolute value gives the size of the right
188 pane. Finally, specify 0 (default) to
189 choose the default position (half of the
192 Returns True if successful, False otherwise (the window was
195 SplitVertically should be called if you wish to initially
196 view two panes. It can also be called at any subsequent
197 time, but the application should check that the window is
198 not currently split using IsSplit.");
202 virtual bool , SplitHorizontally(wxWindow *window1,
204 int sashPosition = 0),
205 "Initializes the top and bottom panes of the splitter window.
207 window1 The top pane.
208 window2 The bottom pane.
209 sashPosition The initial position of the sash. If this
210 value is positive, it specifies the size
211 of the upper pane. If it is negative, it
212 is absolute value gives the size of the
213 lower pane. Finally, specify 0 (default)
214 to choose the default position (half of
215 the total window height).
217 Returns True if successful, False otherwise (the window was
220 SplitHorizontally should be called if you wish to initially
221 view two panes. It can also be called at any subsequent
222 time, but the application should check that the window is
223 not currently split using IsSplit.");
228 bool , Unsplit(wxWindow *toRemove = NULL),
229 "Unsplits the window. Pass the pane to remove, or None to
230 remove the right or bottom pane. Returns True if
231 successful, False otherwise (the window was not split).
233 This function will not actually delete the pane being
234 removed; it sends EVT_SPLITTER_UNSPLIT which can be handled
235 for the desired behaviour. By default, the pane being
236 removed is only hidden.");
241 bool , ReplaceWindow(wxWindow *winOld, wxWindow *winNew),
242 "This function replaces one of the windows managed by the
243 SplitterWindow with another one. It is in general better to
244 use it instead of calling Unsplit() and then resplitting the
245 window back because it will provoke much less flicker. It is
246 valid to call this function whether the splitter has two
249 Both parameters should be non-None and winOld must specify
250 one of the windows managed by the splitter. If the
251 parameters are incorrect or the window couldn't be replaced,
252 False is returned. Otherwise the function will return True,
253 but please notice that it will not Destroy the replaced
254 window and you may wish to do it yourself.");
259 "Causes any pending sizing of the sash and child panes to
260 take place immediately.
262 Such resizing normally takes place in idle time, in order to
263 wait for layout to be completed. However, this can cause
264 unacceptable flicker as the panes are resized after the
265 window has been shown. To work around this, you can perform
266 window layout (for example by sending a size event to the
267 parent window), and then call this function, before showing
268 the top-level window.");
273 bool , IsSplit() const,
274 "Is the window split?");
278 void , SetSashSize(int width),
279 "Sets the sash size");
283 void , SetBorderSize(int width),
284 "Sets the border size");
288 int , GetSashSize() const,
289 "Gets the sash size");
293 int , GetBorderSize() const,
294 "Gets the border size");
298 void , SetSashPosition(int position, bool redraw = True),
299 "Sets the sash position, in pixels. If redraw is Ttrue then
300 the panes are resized and the sash and border are redrawn.");
304 int , GetSashPosition() const,
305 "Returns the surrent sash position.");
309 void , SetMinimumPaneSize(int min),
310 "Sets the minimum pane size in pixels.
312 The default minimum pane size is zero, which means that
313 either pane can be reduced to zero by dragging the sash,
314 thus removing one of the panes. To prevent this behaviour (and
315 veto out-of-range sash dragging), set a minimum size,
316 for example 20 pixels. If the wx.SP_PERMIT_UNSPLIT style is
317 used when a splitter window is created, the window may be
318 unsplit even if minimum size is non-zero.");
321 int , GetMinimumPaneSize() const,
322 "Gets the minimum pane size in pixels.");
326 virtual bool , SashHitTest(int x, int y, int tolerance = 5),
327 "Tests for x, y over the sash");
331 virtual void , SizeWindows(),
332 "Resizes subwindows");
335 void SetNeedUpdating(bool needUpdating);
336 bool GetNeedUpdating() const;
341 DocStr(wxSplitterEvent,
342 "This class represents the events generated by a splitter control.");
344 class wxSplitterEvent : public wxNotifyEvent
347 wxSplitterEvent(wxEventType type = wxEVT_NULL,
348 wxSplitterWindow *splitter = (wxSplitterWindow *)NULL);
352 void , SetSashPosition(int pos),
353 "This funciton is only meaningful during
354 EVT_SPLITTER_SASH_POS_CHANGING and
355 EVT_SPLITTER_SASH_POS_CHANGED events. In the case of
356 _CHANGED events, sets the the new sash position. In the case
357 of _CHANGING events, sets the new tracking bar position so
358 visual feedback during dragging will represent that change
359 that will actually take place. Set to -1 from the event
360 handler code to prevent repositioning.");
363 int , GetSashPosition() const,
364 "Returns the new sash position while in
365 EVT_SPLITTER_SASH_POS_CHANGING and
366 EVT_SPLITTER_SASH_POS_CHANGED events.");
370 wxWindow *, GetWindowBeingRemoved() const,
371 "Returns a pointer to the window being removed when a
372 splitter window is unsplit.");
377 "Returns the x coordinate of the double-click point in a
378 EVT_SPLITTER_DCLICK event.");
382 "Returns the y coordinate of the double-click point in a
383 EVT_SPLITTER_DCLICK event.");
389 %constant wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED;
390 %constant wxEventType wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING;
391 %constant wxEventType wxEVT_COMMAND_SPLITTER_DOUBLECLICKED;
392 %constant wxEventType wxEVT_COMMAND_SPLITTER_UNSPLIT;
396 EVT_SPLITTER_SASH_POS_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 1 )
397 EVT_SPLITTER_SASH_POS_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, 1 )
398 EVT_SPLITTER_DOUBLECLICKED = wx.PyEventBinder( wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, 1 )
399 EVT_SPLITTER_UNSPLIT = wx.PyEventBinder( wxEVT_COMMAND_SPLITTER_UNSPLIT, 1 )
400 EVT_SPLITTER_DCLICK = EVT_SPLITTER_DOUBLECLICKED
403 //---------------------------------------------------------------------------