]> git.saurik.com Git - wxWidgets.git/blame - wxPython/src/_window.i
Print start and stop time
[wxWidgets.git] / wxPython / src / _window.i
CommitLineData
d14a1e28
RD
1/////////////////////////////////////////////////////////////////////////////
2// Name: _window.i
3// Purpose: SWIG interface for wxWindow
4//
5// Author: Robin Dunn
6//
7// Created: 24-June-1997
8// RCS-ID: $Id$
9// Copyright: (c) 2003 by Total Control Software
10// Licence: wxWindows license
11/////////////////////////////////////////////////////////////////////////////
12
13// Not a %module
14
15
16//---------------------------------------------------------------------------
17
18%{
19%}
20
dd9f7fea
RD
21MAKE_CONST_WXSTRING(PanelNameStr);
22
d14a1e28
RD
23//---------------------------------------------------------------------------
24%newgroup
25
0facd0e5 26
174051f6 27DocStr(wxVisualAttributes,
d07d2bc9 28 "struct containing all the visual attributes of a control", "");
174051f6
RD
29
30struct wxVisualAttributes
31{
32 %extend {
baf1aa5d 33 wxVisualAttributes() { return new wxVisualAttributes; }
880715c9 34 ~wxVisualAttributes() { delete self; }
6d450e1a 35 }
174051f6
RD
36
37 // the font used for control label/text inside it
38 wxFont font;
39
40 // the foreground colour
41 wxColour colFg;
42
43 // the background colour, may be wxNullColour if the controls background
44 // colour is not solid
45 wxColour colBg;
46};
47
48
49
50
8d332bdd
RD
51enum wxWindowVariant
52{
8d332bdd
RD
53 wxWINDOW_VARIANT_NORMAL, // Normal size
54 wxWINDOW_VARIANT_SMALL, // Smaller size (about 25 % smaller than normal )
55 wxWINDOW_VARIANT_MINI, // Mini size (about 33 % smaller than normal )
56 wxWINDOW_VARIANT_LARGE, // Large size (about 25 % larger than normal )
174051f6 57 wxWINDOW_VARIANT_MAX
8d332bdd
RD
58};
59
60
0facd0e5 61DocStr(wxWindow,
d07d2bc9 62"wx.Window is the base class for all windows and represents any visible
0facd0e5
RD
63object on the screen. All controls, top level windows and so on are
64wx.Windows. Sizers and device contexts are not however, as they don't
65appear on screen themselves.
d07d2bc9
RD
66",
67"
68Styles
69-------
70 ============================= =====================================
71 wx.SIMPLE_BORDER Displays a thin border around the window.
72
73 wx.DOUBLE_BORDER Displays a double border. Windows and Mac only.
74
75 wx.SUNKEN_BORDER Displays a sunken border.
76
77 wx.RAISED_BORDER Displays a raised border.
78
79 wx.STATIC_BORDER Displays a border suitable for a static
80 control. Windows only.
81
82 wx.NO_BORDER Displays no border, overriding the default
83 border style for the window.
84
85 wx.TRANSPARENT_WINDOW The window is transparent, that is, it
86 will not receive paint events. Windows only.
87
88 wx.TAB_TRAVERSAL Use this to enable tab traversal for
89 non-dialog windows.
90
91 wx.WANTS_CHARS Use this to indicate that the window
92 wants to get all char/key events for
93 all keys - even for keys like TAB or
94 ENTER which are usually used for
95 dialog navigation and which wouldn't
96 be generated without this style. If
97 you need to use this style in order to
98 get the arrows or etc., but would
99 still like to have normal keyboard
100 navigation take place, you should
101 create and send a wxNavigationKeyEvent
102 in response to the key events for Tab
103 and Shift-Tab.
104
105 wx.NO_FULL_REPAINT_ON_RESIZE Disables repainting the window
106 completely when its size is changed.
107 You will have to repaint the new
108 window area manually if you use this
109 style. As of version 2.5.1 this
110 style is on by default. Use
111 wx.FULL_REPAINT_ON_RESIZE to
112 deactivate it.
113
114 wx.VSCROLL Use this style to enable a vertical scrollbar.
115
116 wx.HSCROLL Use this style to enable a horizontal scrollbar.
117
118 wx.ALWAYS_SHOW_SB If a window has scrollbars, disable them
119 instead of hiding them when they are
120 not needed (i.e. when the size of the
121 window is big enough to not require
122 the scrollbars to navigate it). This
123 style is currently only implemented
124 for wxMSW and wxUniversal and does
125 nothing on the other platforms.
126
127 wx.CLIP_CHILDREN Use this style to eliminate flicker caused by
128 the background being repainted, then
129 children being painted over
130 them. Windows only.
131
132 wx.FULL_REPAINT_ON_RESIZE Use this style to force a complete
133 redraw of the window whenever it is
134 resized instead of redrawing just the
135 part of the window affected by
136 resizing. Note that this was the
137 behaviour by default before 2.5.1
138 release and that if you experience
139 redraw problems with the code which
140 previously used to work you may want
141 to try this.
142 ============================= =====================================
143
144
145Extra Styles
146------------
147 ============================= =====================================
148 wx.WS_EX_VALIDATE_RECURSIVELY By default,
0facd0e5
RD
149 Validate/TransferDataTo/FromWindow()
150 only work on direct children of
151 the window (compatible
152 behaviour). Set this flag to make
153 them recursively descend into all
154 subwindows.
155
d07d2bc9 156 wx.WS_EX_BLOCK_EVENTS wx.CommandEvents and the objects of the
0facd0e5
RD
157 derived classes are forwarded to
158 the parent window and so on
159 recursively by default. Using this
160 flag for the given window allows
161 to block this propagation at this
162 window, i.e. prevent the events
163 from being propagated further
164 upwards. Dialogs have this flag on
165 by default.
166
167 wx.WS_EX_TRANSIENT Don't use this window as an implicit parent for
168 the other windows: this must be
169 used with transient windows as
170 otherwise there is the risk of
171 creating a dialog/frame with this
172 window as a parent which would
173 lead to a crash if the parent is
174 destroyed before the child.
175
d07d2bc9 176 wx.WS_EX_PROCESS_IDLE This window should always process idle
0facd0e5
RD
177 events, even if the mode set by
178 wx.IdleEvent.SetMode is
179 wx.IDLE_PROCESS_SPECIFIED.
180
181 wx.WS_EX_PROCESS_UI_UPDATES This window should always process UI
182 update events, even if the mode
183 set by wxUpdateUIEvent::SetMode is
184 wxUPDATE_UI_PROCESS_SPECIFIED.
d07d2bc9 185 ============================= =====================================
0facd0e5
RD
186
187");
188
189
ab1f7d2a
RD
190MustHaveApp(wxWindow);
191MustHaveApp(wxWindow::FindFocus);
192MustHaveApp(wxWindow::GetCapture);
75db4959
RD
193
194// This one is not restricted to wxWindow
195MustHaveApp(GetClassDefaultAttributes);
0facd0e5 196
d14a1e28
RD
197class wxWindow : public wxEvtHandler
198{
199public:
2b9048c5
RD
200 %pythonAppend wxWindow "self._setOORInfo(self)"
201 %pythonAppend wxWindow() ""
d14a1e28 202
0facd0e5 203 DocCtorStr(
baf1aa5d 204 wxWindow(wxWindow* parent, const wxWindowID id=-1,
0facd0e5
RD
205 const wxPoint& pos = wxDefaultPosition,
206 const wxSize& size = wxDefaultSize,
207 long style = 0,
208 const wxString& name = wxPyPanelNameStr),
d07d2bc9 209 "Construct and show a generic Window.", "");
0facd0e5
RD
210
211 DocCtorStrName(
212 wxWindow(),
d07d2bc9 213 "Precreate a Window for 2-phase creation.", "",
0facd0e5
RD
214 PreWindow);
215
d14a1e28 216
0facd0e5 217 DocDeclStr(
baf1aa5d 218 bool , Create(wxWindow* parent, const wxWindowID id=-1,
d14a1e28
RD
219 const wxPoint& pos = wxDefaultPosition,
220 const wxSize& size = wxDefaultSize,
221 long style = 0,
0facd0e5 222 const wxString& name = wxPyPanelNameStr),
d07d2bc9 223 "Create the GUI part of the Window for 2-phase creation mode.", "");
0facd0e5 224
d14a1e28
RD
225
226 // deleting the window
227 // -------------------
228
d14a1e28 229
0facd0e5
RD
230 DocDeclStr(
231 bool , Close( bool force = False ),
232 "This function simply generates a EVT_CLOSE event whose handler usually
233tries to close the window. It doesn't close the window itself,
234however. If force is False (the default) then the window's close
d07d2bc9
RD
235handler will be allowed to veto the destruction of the window.",
236"
0facd0e5
RD
237Usually Close is only used with the top level windows (wx.Frame and
238wx.Dialog classes) as the others are not supposed to have any special
239EVT_CLOSE logic.
240
241The close handler should check whether the window is being deleted
242forcibly, using wx.CloseEvent.GetForce, in which case it should
243destroy the window using wx.Window.Destroy.
244
245Note that calling Close does not guarantee that the window will be
246destroyed; but it provides a way to simulate a manual close of a
247window, which may or may not be implemented by destroying the
248window. The default EVT_CLOSE handler for wx.Dialog does not
249necessarily delete the dialog, since it will simply simulate an
250wxID_CANCEL event which is handled by the appropriate button event
251handler and may do anything at all.
252
253To guarantee that the window will be destroyed, call wx.Window.Destroy
254instead.");
255
256
257
258 DocDeclStr(
259 virtual bool , Destroy(),
260 "Destroys the window safely. Frames and dialogs are not destroyed
261immediately when this function is called -- they are added to a list
262of windows to be deleted on idle time, when all the window's events
263have been processed. This prevents problems with events being sent to
264non-existent windows.
d14a1e28 265
0facd0e5 266Returns True if the window has either been successfully deleted, or it
d07d2bc9 267has been added to the list of windows pending real deletion.", "");
0facd0e5 268
d14a1e28 269
0facd0e5
RD
270 DocDeclStr(
271 bool , DestroyChildren(),
d07d2bc9
RD
272 "Destroys all children of a window. Called automatically by the
273destructor.", "");
0facd0e5 274
d14a1e28 275
0facd0e5
RD
276 DocDeclStr(
277 bool , IsBeingDeleted() const,
d07d2bc9 278 "Is the window in the process of being deleted?", "");
0facd0e5 279
d14a1e28 280
0facd0e5 281
d14a1e28
RD
282 // window attributes
283 // -----------------
284
0facd0e5
RD
285 DocDeclStr(
286 virtual void , SetTitle( const wxString& title),
d07d2bc9 287 "Sets the window's title. Applicable only to frames and dialogs.", "");
0facd0e5
RD
288
289 DocDeclStr(
290 virtual wxString , GetTitle() const,
d07d2bc9 291 "Gets the window's title. Applicable only to frames and dialogs.", "");
0facd0e5 292
d14a1e28 293
0facd0e5
RD
294 DocDeclStr(
295 virtual void , SetLabel(const wxString& label),
d07d2bc9 296 "Set the text which the window shows in its label if applicable.", "");
0facd0e5
RD
297
298 DocDeclStr(
299 virtual wxString , GetLabel() const,
d07d2bc9
RD
300 "Generic way of getting a label from any window, for identification
301purposes. The interpretation of this function differs from class to
302class. For frames and dialogs, the value returned is the title. For
303buttons or static text controls, it is the button text. This function
304can be useful for meta-programs such as testing tools or special-needs
305access programs)which need to identify windows by name.", "");
0facd0e5 306
d14a1e28 307
0facd0e5
RD
308 DocDeclStr(
309 virtual void , SetName( const wxString &name ),
d07d2bc9
RD
310 "Sets the window's name. The window name is used for ressource setting
311in X, it is not the same as the window title/label", "");
0facd0e5
RD
312
313 DocDeclStr(
314 virtual wxString , GetName() const,
d07d2bc9
RD
315 "Returns the windows name. This name is not guaranteed to be unique;
316it is up to the programmer to supply an appropriate name in the window
317constructor or via wx.Window.SetName.", "");
8d332bdd
RD
318
319
320 DocDeclStr(
321 void , SetWindowVariant( wxWindowVariant variant ),
d07d2bc9
RD
322 "Sets the variant of the window/font size to use for this window, if
323the platform supports variants, for example, wxMac.",
324 "
325Variant values are:
174051f6 326
d07d2bc9 327 ======================== =======================================
174051f6
RD
328 wx.WINDOW_VARIANT_NORMAL Normal size
329 wx.WINDOW_VARIANT_SMALL Smaller size (about 25 % smaller than normal)
330 wx.WINDOW_VARIANT_MINI Mini size (about 33 % smaller than normal)
331 wx.WINDOW_VARIANT_LARGE Large size (about 25 % larger than normal)
d07d2bc9 332 ======================== =======================================
174051f6 333");
8d332bdd
RD
334
335 DocDeclStr(
336 wxWindowVariant , GetWindowVariant() const,
d07d2bc9 337 "", "");
0facd0e5 338
d14a1e28 339
0facd0e5
RD
340 DocDeclStr(
341 void , SetId( wxWindowID winid ),
342 "Sets the identifier of the window. Each window has an integer
343identifier. If the application has not provided one, an identifier
344will be generated. Normally, the identifier should be provided on
d07d2bc9 345creation and should not be modified subsequently.", "");
0facd0e5
RD
346
347 DocDeclStr(
348 wxWindowID , GetId() const,
349 "Returns the identifier of the window. Each window has an integer
350identifier. If the application has not provided one (or the default Id
351-1 is used) then an unique identifier with a negative value will be
d07d2bc9 352generated.", "");
0facd0e5 353
d14a1e28 354
0facd0e5
RD
355 DocDeclStr(
356 static int , NewControlId(),
d07d2bc9 357 "Generate a control id for the controls which were not given one.", "");
0facd0e5 358
d14a1e28 359
0facd0e5
RD
360 DocDeclStr(
361 static int , NextControlId(int winid),
d07d2bc9
RD
362 "Get the id of the control following the one with the given
363autogenerated) id", "");
0facd0e5 364
d14a1e28 365
0facd0e5
RD
366 DocDeclStr(
367 static int , PrevControlId(int winid),
d07d2bc9
RD
368 "Get the id of the control preceding the one with the given
369autogenerated) id", "");
0facd0e5 370
d14a1e28
RD
371
372
373
374 // moving/resizing
375 // ---------------
376
d14a1e28 377
0facd0e5
RD
378 DocDeclStr(
379 void , SetSize( const wxSize& size ),
d07d2bc9 380 "Sets the size of the window in pixels.", "");
d14a1e28 381
d14a1e28 382
0facd0e5
RD
383 DocDeclStrName(
384 void , SetSize( int x, int y, int width, int height,
385 int sizeFlags = wxSIZE_AUTO ),
386 "Sets the position and size of the window in pixels. The sizeFlags
387parameter indicates the interpretation of the other params if they are
388-1. wx.SIZE_AUTO*: a -1 indicates that a class-specific default
389shoudl be used. wx.SIZE_USE_EXISTING: existing dimensions should be
390used if -1 values are supplied. wxSIZE_ALLOW_MINUS_ONE: allow
391dimensions of -1 and less to be interpreted as real dimensions, not
d07d2bc9 392default values.", "",
0facd0e5
RD
393 SetDimensions);
394
395
396 DocDeclStrName(
397 void , SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO),
d07d2bc9 398 "Sets the position and size of the window in pixels using a wx.Rect.", "",
0facd0e5
RD
399 SetRect);
400
401
402 DocDeclStrName(
403 void , SetSize( int width, int height ),
d07d2bc9 404 "Sets the size of the window in pixels.", "",
0facd0e5
RD
405 SetSizeWH);
406
d14a1e28 407
0facd0e5
RD
408 DocDeclStr(
409 void , Move(const wxPoint& pt, int flags = wxSIZE_USE_EXISTING),
d07d2bc9 410 "Moves the window to the given position.", "");
0facd0e5 411
d14a1e28
RD
412 %pythoncode { SetPosition = Move }
413
d14a1e28 414
0facd0e5
RD
415 DocDeclStrName(
416 void , Move(int x, int y, int flags = wxSIZE_USE_EXISTING),
d07d2bc9 417 "Moves the window to the given position.", "",
0facd0e5
RD
418 MoveXY);
419
fe161a26
RD
420 DocDeclStr(
421 void , SetBestFittingSize(const wxSize& size=wxDefaultSize),
422 "A 'Smart' SetSize that will fill in default size components with the
423window's *best size* values. Also set's the minsize for use with sizers.", "");
424
0facd0e5 425
fe161a26 426
0facd0e5
RD
427 DocDeclStr(
428 virtual void , Raise(),
429 "Raises the window to the top of the window hierarchy if it is a
d07d2bc9 430managed window (dialog or frame).", "");
0facd0e5
RD
431
432 DocDeclStr(
433 virtual void , Lower(),
434 "Lowers the window to the bottom of the window hierarchy if it is a
d07d2bc9 435managed window (dialog or frame).", "");
0facd0e5
RD
436
437
438
d14a1e28 439 // client size is the size of the area available for subwindows
0facd0e5
RD
440 DocStr(SetClientSize,
441 "This sets the size of the window client area in pixels. Using this
442function to size a window tends to be more device-independent than
443wx.Window.SetSize, since the application need not worry about what
444dimensions the border or title bar have when trying to fit the window
d07d2bc9 445around panel items, for example.", "");
d14a1e28
RD
446 void SetClientSize( const wxSize& size );
447 %name(SetClientSizeWH) void SetClientSize( int width, int height );
448 %name(SetClientRect) void SetClientSize(const wxRect& rect);
449
450
dd9f7fea 451 DocStr(GetPosition, // sets the docstring for both
d07d2bc9 452 "Get the window's position.", "");
dd9f7fea 453 wxPoint GetPosition();
d14a1e28 454
dd9f7fea
RD
455 DocDeclAName(
456 void, GetPosition(int *OUTPUT, int *OUTPUT),
457 "GetPositionTuple() -> (x,y)",
458 GetPositionTuple);
d14a1e28 459
322913ce 460
d07d2bc9 461 DocStr(GetSize, "Get the window size.", "");
dd9f7fea
RD
462 wxSize GetSize() const;
463 DocDeclAName(
464 void, GetSize( int *OUTPUT, int *OUTPUT ) const,
465 "GetSizeTuple() -> (width, height)",
466 GetSizeTuple);
467
468
d14a1e28 469
0facd0e5
RD
470 DocDeclStr(
471 wxRect , GetRect() const,
d07d2bc9 472 "Returns the size and position of the window as a wx.Rect object.", "");
0facd0e5
RD
473
474
475 DocStr(GetClientSize,
476 "This gets the size of the window's 'client area' in pixels. The client
477area is the area which may be drawn on by the programmer, excluding
d07d2bc9 478title bar, border, scrollbars, etc.", "");
d14a1e28 479 wxSize GetClientSize() const;
dd9f7fea
RD
480 DocDeclAName(
481 void, GetClientSize( int *OUTPUT, int *OUTPUT ) const,
482 "GetClientSizeTuple() -> (width, height)",
483 GetClientSizeTuple);
d14a1e28 484
0facd0e5 485
d14a1e28 486
0facd0e5
RD
487 DocDeclStr(
488 virtual wxPoint , GetClientAreaOrigin() const,
489 "Get the origin of the client area of the window relative to the
490window's top left corner (the client area may be shifted because of
d07d2bc9 491the borders, scrollbars, other decorations...)", "");
0facd0e5 492
d14a1e28 493
0facd0e5
RD
494 DocDeclStr(
495 wxRect , GetClientRect() const,
729b64a3 496 "Get the client area position and size as a `wx.Rect` object.", "");
0facd0e5 497
d14a1e28 498
0facd0e5 499
dd9f7fea 500 DocStr(GetBestSize,
d5573410 501 "This function returns the best acceptable minimal size for the
d07d2bc9
RD
502window, if applicable. For example, for a static text control, it will
503be the minimal size such that the control label is not truncated. For
504windows containing subwindows (suzh aswx.Panel), the size returned by
505this function will be the same as the size the window would have had
506after calling Fit.", "");
d14a1e28 507 wxSize GetBestSize() const;
dd9f7fea
RD
508 DocDeclAName(
509 void, GetBestSize(int *OUTPUT, int *OUTPUT) const,
510 "GetBestSizeTuple() -> (width, height)",
511 GetBestSizeTuple);
512
d14a1e28 513
9f884528
RD
514 DocDeclStr(
515 void , InvalidateBestSize(),
516 "Reset the cached best size value so it will be recalculated the next
517time it is needed.", "");
518
519
520
521 DocDeclStr(
522 wxSize , GetBestFittingSize() const,
523 "This function will merge the window's best size into the window's
524minimum size, giving priority to the min size components, and returns
525the results.
526", "");
527
528
0facd0e5
RD
529 DocDeclStr(
530 wxSize , GetAdjustedBestSize() const,
531 "This method is similar to GetBestSize, except in one
532thing. GetBestSize should return the minimum untruncated size of the
533window, while this method will return the largest of BestSize and any
534user specified minimum size. ie. it is the minimum size the window
535should currently be drawn at, not the minimal size it can possibly
d07d2bc9 536tolerate.", "");
0facd0e5 537
d14a1e28
RD
538
539
0facd0e5
RD
540
541 DocDeclStr(
542 void , Center( int direction = wxBOTH ),
543 "Centers the window. The parameter specifies the direction for
544cetering, and may be wx.HORIZONTAL, wx.VERTICAL or wx.BOTH. It may
545also include wx.CENTER_ON_SCREEN flag if you want to center the window
546on the entire screen and not on its parent window. If it is a
547top-level window and has no parent then it will always be centered
d07d2bc9 548relative to the screen.", "");
0facd0e5 549
d14a1e28
RD
550 %pythoncode { Centre = Center }
551
0facd0e5
RD
552
553 DocDeclStr(
554 void , CenterOnScreen(int dir = wxBOTH),
d07d2bc9 555 "Center on screen (only works for top level windows)", "");
d14a1e28
RD
556 %pythoncode { CentreOnScreen = CenterOnScreen }
557
d14a1e28 558
0facd0e5
RD
559 DocDeclStr(
560 void , CenterOnParent(int dir = wxBOTH),
d07d2bc9 561 "Center with respect to the the parent window", "");
0facd0e5 562 %pythoncode { CentreOnParent = CenterOnParent }
d14a1e28 563
0facd0e5 564
d14a1e28 565
0facd0e5
RD
566 DocDeclStr(
567 virtual void , Fit(),
568 "Sizes the window so that it fits around its subwindows. This function
569won't do anything if there are no subwindows and will only really work
570correctly if sizers are used for the subwindows layout. Also, if the
571window has exactly one subwindow it is better (faster and the result
572is more precise as Fit adds some margin to account for fuzziness of
573its calculations) to call window.SetClientSize(child.GetSize())
d07d2bc9 574instead of calling Fit.", "");
0facd0e5 575
d14a1e28 576
0facd0e5
RD
577 DocDeclStr(
578 virtual void , FitInside(),
579 "Similar to Fit, but sizes the interior (virtual) size of a
580window. Mainly useful with scrolled windows to reset scrollbars after
581sizing changes that do not trigger a size event, and/or scrolled
582windows without an interior sizer. This function similarly won't do
d07d2bc9 583anything if there are no subwindows.", "");
0facd0e5 584
d14a1e28 585
33e10b88
RD
586
587 %nokwargs SetSizeHints;
588 DocStr(SetSizeHints,
0facd0e5
RD
589 "Allows specification of minimum and maximum window sizes, and window
590size increments. If a pair of values is not set (or set to -1), the
591default values will be used. If this function is called, the user
3b74f194
RD
592will not be able to size the window outside the given bounds (if it is
593a top-level window.) Sizers will also inspect the minimum window size
594and will use that value if set when calculating layout.
595
596The resizing increments are only significant under Motif or Xt.", "
597
598:see: `GetMinSize`, `GetMaxSize`, `SetMinSize`, `SetMaxSize`
599");
33e10b88
RD
600 void SetSizeHints( const wxSize& minSize,
601 const wxSize& maxSize=wxDefaultSize,
602 const wxSize& incSize=wxDefaultSize);
3b74f194
RD
603 virtual void SetSizeHints( int minW, int minH,
604 int maxW = -1, int maxH = -1,
605 int incW = -1, int incH = -1 );
d14a1e28 606
33e10b88
RD
607
608 %nokwargs SetVirtualSizeHints;
609 DocStr(SetVirtualSizeHints,
0facd0e5
RD
610 "Allows specification of minimum and maximum virtual window sizes. If a
611pair of values is not set (or set to -1), the default values will be
612used. If this function is called, the user will not be able to size
d07d2bc9 613the virtual area of the window outside the given bounds.", "");
33e10b88
RD
614 void SetVirtualSizeHints( const wxSize& minSize,
615 const wxSize& maxSize=wxDefaultSize);
3b74f194
RD
616 virtual void SetVirtualSizeHints( int minW, int minH,
617 int maxW = -1, int maxH = -1 );
0facd0e5
RD
618
619 DocDeclStr(
3b74f194 620 virtual wxSize , GetMaxSize() const,
d07d2bc9 621 "", "");
0facd0e5
RD
622
623 DocDeclStr(
3b74f194 624 virtual wxSize , GetMinSize() const,
d07d2bc9 625 "", "");
0facd0e5
RD
626
627 DocDeclStr(
3b74f194
RD
628 void , SetMinSize(const wxSize& minSize),
629 "A more convenient method than `SetSizeHints` for setting just the
630min size.", "");
631
632 DocDeclStr(
633 void , SetMaxSize(const wxSize& maxSize),
634 "A more convenient method than `SetSizeHints` for setting just the
635max size.", "");
636
637
638
639 DocDeclStr(
640 virtual int , GetMinWidth() const,
d07d2bc9 641 "", "");
0facd0e5
RD
642
643 DocDeclStr(
3b74f194 644 virtual int , GetMinHeight() const,
d07d2bc9 645 "", "");
0facd0e5 646
0facd0e5 647 DocDeclStr(
3b74f194 648 int , GetMaxWidth() const,
d07d2bc9 649 "", "");
0facd0e5 650
33e10b88 651 DocDeclStr(
3b74f194 652 int , GetMaxHeight() const,
d07d2bc9 653 "", "");
33e10b88 654
dd9f7fea 655
3b74f194 656
dd9f7fea 657 DocStr(SetVirtualSize,
0facd0e5
RD
658 "Set the the virtual size of a window in pixels. For most windows this
659is just the client area of the window, but for some like scrolled
d07d2bc9 660windows it is more or less independent of the screen window size.", "");
dd9f7fea 661 void SetVirtualSize(const wxSize& size );
d14a1e28
RD
662 %name(SetVirtualSizeWH) void SetVirtualSize( int w, int h );
663
dd9f7fea
RD
664
665 DocStr(GetVirtualSize,
0facd0e5
RD
666 "Get the the virtual size of the window in pixels. For most windows
667this is just the client area of the window, but for some like scrolled
d07d2bc9 668windows it is more or less independent of the screen window size.", "");
d14a1e28 669 wxSize GetVirtualSize() const;
dd9f7fea
RD
670 DocDeclAName(
671 void, GetVirtualSize( int *OUTPUT, int *OUTPUT ) const,
672 "GetVirtualSizeTuple() -> (width, height)",
673 GetVirtualSizeTuple);
d14a1e28
RD
674
675
676// TODO: using directors?
677// // Override these methods for windows that have a virtual size
678// // independent of their client size. eg. the virtual area of a
679// // wxScrolledWindow. Default is to alias VirtualSize to ClientSize.
680// virtual void DoSetVirtualSize( int x, int y );
681// virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; }
682
683
0facd0e5
RD
684 DocDeclStr(
685 virtual wxSize , GetBestVirtualSize() const,
686 "Return the largest of ClientSize and BestSize (as determined by a
d07d2bc9 687sizer, interior children, or other means)", "");
0facd0e5 688
d14a1e28
RD
689
690
691 // window state
692 // ------------
693
0facd0e5
RD
694 DocDeclStr(
695 virtual bool , Show( bool show = True ),
696 "Shows or hides the window. You may need to call Raise for a top level
697window if you want to bring it to top, although this is not needed if
e2bbfc8f
RD
698Show is called immediately after the frame creation. Returns True if
699the window has been shown or hidden or False if nothing was done
d07d2bc9 700because it already was in the requested state.", "");
0facd0e5
RD
701
702 DocDeclStr(
703 bool , Hide(),
d07d2bc9 704 "Equivalent to calling Show(False).", "");
0facd0e5 705
d14a1e28 706
0facd0e5
RD
707 DocDeclStr(
708 virtual bool , Enable( bool enable = True ),
709 "Enable or disable the window for user input. Note that when a parent
710window is disabled, all of its children are disabled as well and they
711are reenabled again when the parent is. Returns true if the window
712has been enabled or disabled, false if nothing was done, i.e. if the
d07d2bc9 713window had already been in the specified state.", "");
0facd0e5
RD
714
715 DocDeclStr(
716 bool , Disable(),
d07d2bc9 717 "Disables the window, same as Enable(false).", "");
0facd0e5 718
d14a1e28 719
0facd0e5
RD
720 DocDeclStr(
721 bool , IsShown() const,
d07d2bc9 722 "Returns true if the window is shown, false if it has been hidden.", "");
0facd0e5
RD
723
724 DocDeclStr(
725 bool , IsEnabled() const,
d07d2bc9 726 "Returns true if the window is enabled for input, false otherwise.", "");
d14a1e28 727
0facd0e5 728
d14a1e28 729
d14a1e28 730
0facd0e5
RD
731 DocDeclStr(
732 virtual void , SetWindowStyleFlag( long style ),
d07d2bc9
RD
733 "Sets the style of the window. Please note that some styles cannot be
734changed after the window creation and that Refresh() might need to be
735called after changing the others for the change to take place
736immediately.", "");
0facd0e5
RD
737
738 DocDeclStr(
739 virtual long , GetWindowStyleFlag() const,
e2bbfc8f 740 "Gets the window style that was passed to the constructor or Create
d07d2bc9 741method.", "");
d14a1e28 742
0facd0e5
RD
743 %pythoncode { SetWindowStyle = SetWindowStyleFlag; GetWindowStyle = GetWindowStyleFlag }
744
745
746 DocDeclStr(
747 bool , HasFlag(int flag) const,
d07d2bc9 748 "Test if the given style is set for this window.", "");
0facd0e5 749
d14a1e28 750
0facd0e5
RD
751 DocDeclStr(
752 virtual bool , IsRetained() const,
753 "Returns true if the window is retained, false otherwise. Retained
d07d2bc9 754windows are only available on X platforms.", "");
0facd0e5 755
d14a1e28 756
d14a1e28 757
0facd0e5
RD
758 DocDeclStr(
759 virtual void , SetExtraStyle(long exStyle),
760 "Sets the extra style bits for the window. Extra styles are the less
761often used style bits which can't be set with the constructor or with
d07d2bc9 762SetWindowStyleFlag()", "");
0facd0e5
RD
763
764 DocDeclStr(
765 long , GetExtraStyle() const,
d07d2bc9 766 "Returns the extra style bits for the window.", "");
0facd0e5 767
d14a1e28 768
0facd0e5
RD
769
770 DocDeclStr(
771 virtual void , MakeModal(bool modal = True),
772 "Disables all other windows in the application so that the user can
773only interact with this window. Passing False will reverse this
d07d2bc9 774effect.", "");
0facd0e5 775
d14a1e28 776
0facd0e5
RD
777
778 DocDeclStr(
779 virtual void , SetThemeEnabled(bool enableTheme),
780 "This function tells a window if it should use the system's \"theme\"
781 code to draw the windows' background instead if its own background
782 drawing code. This will only have an effect on platforms that support
783 the notion of themes in user defined windows. One such platform is
784 GTK+ where windows can have (very colourful) backgrounds defined by a
785 user's selected theme.
786
787Dialogs, notebook pages and the status bar have this flag set to true
d07d2bc9 788by default so that the default look and feel is simulated best.", "");
0facd0e5
RD
789
790 DocDeclStr(
791 virtual bool , GetThemeEnabled() const,
d07d2bc9 792 "Return the themeEnabled flag.", "");
0facd0e5 793
d14a1e28 794
0facd0e5
RD
795// TODO with directors
796// // controls by default inherit the colours of their parents, if a
797// // particular control class doesn't want to do it, it can override
798// // ShouldInheritColours() to return False
799// virtual bool ShouldInheritColours() const;
d14a1e28 800
d14a1e28 801
d14a1e28 802
0facd0e5 803
d14a1e28 804
0facd0e5
RD
805 // focus and keyboard handling
806 // ---------------------------
d14a1e28 807
0facd0e5
RD
808
809 DocDeclStr(
810 virtual void , SetFocus(),
d07d2bc9 811 "Set's the focus to this window, allowing it to receive keyboard input.", "");
0facd0e5
RD
812
813 DocDeclStr(
814 virtual void , SetFocusFromKbd(),
815 "Set focus to this window as the result of a keyboard action. Normally
d07d2bc9 816only called internally.", "");
0facd0e5
RD
817
818
819
820 DocDeclStr(
821 static wxWindow *, FindFocus(),
822 "Returns the window or control that currently has the keyboard focus,
d07d2bc9 823or None.", "");
0facd0e5 824
d14a1e28 825
0facd0e5
RD
826 DocDeclStr(
827 virtual bool , AcceptsFocus() const,
d07d2bc9 828 "Can this window have focus?", "");
0facd0e5 829
d14a1e28 830
0facd0e5
RD
831 DocDeclStr(
832 virtual bool , AcceptsFocusFromKeyboard() const,
833 "Can this window be given focus by keyboard navigation? if not, the
834only way to give it focus (provided it accepts it at all) is to click
d07d2bc9 835it.", "");
0facd0e5 836
d14a1e28
RD
837
838
0facd0e5
RD
839
840 DocDeclStr(
841 virtual wxWindow *, GetDefaultItem() const,
842 "Get the default child of this parent, i.e. the one which is activated
d07d2bc9 843by pressing <Enter> such as the OK button on a wx.Dialog.", "");
0facd0e5
RD
844
845 DocDeclStr(
846 virtual wxWindow *, SetDefaultItem(wxWindow * child),
d07d2bc9 847 "Set this child as default, return the old default.", "");
0facd0e5
RD
848
849 DocDeclStr(
850 virtual void , SetTmpDefaultItem(wxWindow * win),
d07d2bc9 851 "Set this child as temporary default", "");
0facd0e5
RD
852
853
3b74f194
RD
854 DocDeclAStr(
855 virtual bool , Navigate(int flags = wxNavigationKeyEvent::IsForward),
856 "Navigate(self, int flags=NavigationKeyEvent.IsForward) -> bool",
857 "Does keyboard navigation from this window to another, by sending a
858`wx.NavigationKeyEvent`.", "
859
860 :param flags: A combination of the ``IsForward`` and ``WinChange``
fdc775af
RD
861 values in the `wx.NavigationKeyEvent` class, which determine
862 if the navigation should be in forward or reverse order, and
863 if it should be able to cross parent window boundaries, such
864 as between notebook pages or MDI child frames. Typically the
865 status of the Shift key (for forward or reverse) or the
866 Control key (for WinChange) would be used to determine how to
867 set the flags.
3b74f194
RD
868
869One situation in which you may wish to call this method is from a text
870control custom keypress handler to do the default navigation behaviour
871for the tab key, since the standard default behaviour for a multiline
872text control with the wx.TE_PROCESS_TAB style is to insert a tab and
873not navigate to the next control.");
0facd0e5
RD
874
875
d14a1e28 876
3b74f194
RD
877
878
d14a1e28
RD
879 // parent/children relations
880 // -------------------------
881
0facd0e5 882
d14a1e28
RD
883 //wxWindowList& GetChildren(); // TODO: Do a typemap or a wrapper for wxWindowList
884 %extend {
0facd0e5
RD
885 DocStr(GetChildren,
886 "Returns a list of the window's children. NOTE: Currently this is a
887copy of the child window list maintained by the window, so the return
888value of this function is only valid as long as the window's children
d07d2bc9 889do not change.", "");
d14a1e28
RD
890 PyObject* GetChildren() {
891 wxWindowList& list = self->GetChildren();
892 return wxPy_ConvertList(&list);
893 }
894 }
895
0facd0e5
RD
896 DocDeclStr(
897 wxWindow *, GetParent() const,
d07d2bc9 898 "Returns the parent window of this window, or None if there isn't one.", "");
0facd0e5
RD
899
900 DocDeclStr(
901 wxWindow *, GetGrandParent() const,
d07d2bc9
RD
902 "Returns the parent of the parent of this window, or None if there
903isn't one.", "");
0facd0e5 904
d14a1e28 905
0facd0e5
RD
906
907 DocDeclStr(
908 virtual bool , IsTopLevel() const,
909 "Returns true if the given window is a top-level one. Currently all
910frames and dialogs are always considered to be top-level windows (even
d07d2bc9 911if they have a parent window).", "");
0facd0e5 912
d14a1e28 913
dd9f7fea
RD
914 // change the real parent of this window, return True if the parent
915 // was changed, False otherwise (error or newParent == oldParent)
0facd0e5
RD
916 DocDeclStr(
917 virtual bool , Reparent( wxWindow *newParent ),
918 "Reparents the window, i.e the window will be removed from its current
919parent window (e.g. a non-standard toolbar in a wxFrame) and then
920re-inserted into another. Available on Windows and GTK. Returns True
921if the parent was changed, False otherwise (error or newParent ==
d07d2bc9 922oldParent)", "");
0facd0e5 923
d14a1e28 924
0facd0e5
RD
925 DocDeclStr(
926 virtual void , AddChild( wxWindow *child ),
927 "Adds a child window. This is called automatically by window creation
d07d2bc9 928functions so should not be required by the application programmer.", "");
0facd0e5
RD
929
930 DocDeclStr(
931 virtual void , RemoveChild( wxWindow *child ),
932 "Removes a child window. This is called automatically by window
933deletion functions so should not be required by the application
d07d2bc9 934programmer.", "");
0facd0e5 935
d14a1e28
RD
936
937
938
939 // looking for windows
940 // -------------------
941
0facd0e5
RD
942 DocDeclStrName(
943 wxWindow *, FindWindow( long winid ),
d07d2bc9 944 "Find a chld of this window by window ID", "",
0facd0e5
RD
945 FindWindowById);
946
947 DocDeclStrName(
948 wxWindow *, FindWindow( const wxString& name ),
d07d2bc9 949 "Find a child of this window by name", "",
0facd0e5
RD
950 FindWindowByName);
951
d14a1e28
RD
952
953
954 // event handler stuff
955 // -------------------
956
0facd0e5
RD
957 DocDeclStr(
958 wxEvtHandler *, GetEventHandler() const,
959 "Returns the event handler for this window. By default, the window is
d07d2bc9 960its own event handler.", "");
0facd0e5 961
d14a1e28 962
0facd0e5
RD
963 DocDeclStr(
964 void , SetEventHandler( wxEvtHandler *handler ),
965 "Sets the event handler for this window. An event handler is an object
966that is capable of processing the events sent to a window. By default,
967the window is its own event handler, but an application may wish to
968substitute another, for example to allow central implementation of
969event-handling for a variety of different window classes.
970
d07d2bc9 971It is usually better to use `wx.Window.PushEventHandler` since this sets
0facd0e5 972up a chain of event handlers, where an event not handled by one event
d07d2bc9 973handler is handed to the next one in the chain.", "");
0facd0e5 974
d14a1e28 975
0facd0e5
RD
976 DocDeclStr(
977 void , PushEventHandler( wxEvtHandler *handler ),
978 "Pushes this event handler onto the event handler stack for the window.
979An event handler is an object that is capable of processing the events
980sent to a window. By default, the window is its own event handler, but
981an application may wish to substitute another, for example to allow
982central implementation of event-handling for a variety of different
983window classes.
d14a1e28 984
0facd0e5
RD
985wx.Window.PushEventHandler allows an application to set up a chain of
986event handlers, where an event not handled by one event handler is
d07d2bc9
RD
987handed to the next one in the chain. Use `wx.Window.PopEventHandler` to
988remove the event handler.", "");
0facd0e5
RD
989
990
991 DocDeclStr(
992 wxEvtHandler *, PopEventHandler( bool deleteHandler = False ),
993 "Removes and returns the top-most event handler on the event handler
994stack. If deleteHandler is True then the wx.EvtHandler object will be
d07d2bc9 995destroyed after it is popped.", "");
0facd0e5
RD
996
997
998 DocDeclStr(
999 bool , RemoveEventHandler(wxEvtHandler *handler),
d07d2bc9
RD
1000 "Find the given handler in the event handler chain and remove (but not
1001delete) it from the event handler chain, return True if it was found
1002and False otherwise (this also results in an assert failure so this
1003function should only be called when the handler is supposed to be
1004there.)", "");
0facd0e5 1005
d14a1e28
RD
1006
1007
1008
1009 // validators
1010 // ----------
1011
1012 // a window may have an associated validator which is used to control
1013 // user input
0facd0e5
RD
1014 DocDeclStr(
1015 virtual void , SetValidator( const wxValidator &validator ),
1016 "Deletes the current validator (if any) and sets the window validator,
1017having called wx.Validator.Clone to create a new validator of this
d07d2bc9 1018type.", "");
0facd0e5
RD
1019
1020 DocDeclStr(
1021 virtual wxValidator *, GetValidator(),
1022 "Returns a pointer to the current validator for the window, or None if
d07d2bc9 1023there is none.", "");
b8fd6d07
RD
1024
1025
1026 DocDeclStr(
1027 virtual bool , Validate(),
1028 "Validates the current values of the child controls using their
d07d2bc9
RD
1029validators. If the window has wx.WS_EX_VALIDATE_RECURSIVELY extra
1030style flag set, the method will also call Validate() of all child
1031windows. Returns false if any of the validations failed.", "");
b8fd6d07
RD
1032
1033
1034 DocDeclStr(
1035 virtual bool , TransferDataToWindow(),
d07d2bc9
RD
1036 "Transfers values to child controls from data areas specified by their
1037validators. If the window has wx.WS_EX_VALIDATE_RECURSIVELY extra
1038style flag set, the method will also call TransferDataToWindow() of
1039all child windows.", "");
b8fd6d07
RD
1040
1041 DocDeclStr(
1042 virtual bool , TransferDataFromWindow(),
d07d2bc9
RD
1043 "Transfers values from child controls to data areas specified by their
1044validators. Returns false if a transfer failed. If the window has
1045wx.WS_EX_VALIDATE_RECURSIVELY extra style flag set, the method will
1046also call TransferDataFromWindow() of all child windows.", "");
b8fd6d07
RD
1047
1048
1049 DocDeclStr(
1050 virtual void , InitDialog(),
d07d2bc9
RD
1051 "Sends an EVT_INIT_DIALOG event, whose handler usually transfers data
1052to the dialog via validators.", "");
b8fd6d07 1053
0facd0e5 1054
d14a1e28
RD
1055
1056
1057 // accelerators
1058 // ------------
1059
0facd0e5
RD
1060 DocDeclStr(
1061 virtual void , SetAcceleratorTable( const wxAcceleratorTable& accel ),
d07d2bc9 1062 "Sets the accelerator table for this window.", "");
0facd0e5
RD
1063
1064 DocDeclStr(
1065 wxAcceleratorTable *, GetAcceleratorTable(),
d07d2bc9 1066 "Gets the accelerator table for this window.", "");
0facd0e5 1067
d14a1e28
RD
1068
1069
1070
1071
1072 // hot keys (system wide accelerators)
1073 // -----------------------------------
1074 %extend {
0facd0e5
RD
1075 DocStr(RegisterHotKey,
1076 "Registers a system wide hotkey. Every time the user presses the hotkey
1077registered here, this window will receive a hotkey event. It will
1078receive the event even if the application is in the background and
1079does not have the input focus because the user is working with some
1080other application. To bind an event handler function to this hotkey
1081use EVT_HOTKEY with an id equal to hotkeyId. Returns True if the
d07d2bc9 1082hotkey was registered successfully.", "");
d14a1e28 1083 bool RegisterHotKey(int hotkeyId, int modifiers, int keycode) {
baf1aa5d 1084 %#if wxUSE_HOTKEY
d14a1e28 1085 return self->RegisterHotKey(hotkeyId, modifiers, keycode);
baf1aa5d 1086 %#else
dd9f7fea 1087 return False;
baf1aa5d 1088 %#endif
d14a1e28
RD
1089 }
1090
0facd0e5
RD
1091
1092 DocStr(UnregisterHotKey,
d07d2bc9 1093 "Unregisters a system wide hotkey.", "");
d14a1e28
RD
1094 bool UnregisterHotKey(int hotkeyId) {
1095 #if wxUSE_HOTKEY
1096 return self->UnregisterHotKey(hotkeyId);
1097 #else
dd9f7fea 1098 return False;
d14a1e28
RD
1099 #endif
1100 }
1101 }
1102
1103
1104
1105 // "dialog units" translations
1106 // ---------------------------
1107
0facd0e5 1108 DocStr(ConvertDialogToPixels,
e2bbfc8f
RD
1109 "Converts a point or size from dialog units to pixels. Dialog units
1110are used for maintaining a dialog's proportions even if the font
0facd0e5
RD
1111changes. For the x dimension, the dialog units are multiplied by the
1112average character width and then divided by 4. For the y dimension,
1113the dialog units are multiplied by the average character height and
d07d2bc9 1114then divided by 8.", "");
d14a1e28
RD
1115 %name(ConvertDialogPointToPixels) wxPoint ConvertDialogToPixels(const wxPoint& pt);
1116 %name(ConvertDialogSizeToPixels) wxSize ConvertDialogToPixels(const wxSize& sz);
d14a1e28
RD
1117 %name(DLG_PNT) wxPoint ConvertDialogToPixels(const wxPoint& pt);
1118 %name(DLG_SZE) wxSize ConvertDialogToPixels(const wxSize& sz);
1119
0facd0e5
RD
1120
1121 DocStr(ConvertPixelPointToDialog,
1122 "Converts a point or size from pixels to dialog units. Dialog units
1123are used for maintaining a dialog's proportions even if the font
1124changes. For the x dimension, the dialog units are multiplied by the
1125average character width and then divided by 4. For the y dimension,
1126the dialog units are multiplied by the average character height and
d07d2bc9 1127then divided by 8.", "");
d14a1e28
RD
1128 %name(ConvertPixelPointToDialog) wxPoint ConvertPixelsToDialog(const wxPoint& pt);
1129 %name(ConvertPixelSizeToDialog) wxSize ConvertPixelsToDialog(const wxSize& sz);
1130
1131
1132
1133 // mouse functions
1134 // ---------------
1135
0facd0e5
RD
1136 DocDeclStr(
1137 virtual void , WarpPointer(int x, int y),
1138 "Moves the pointer to the given position on the window.
1139
1140NOTE: This function is not supported under Mac because Apple Human
d07d2bc9 1141Interface Guidelines forbid moving the mouse cursor programmatically.", "");
0facd0e5 1142
d14a1e28 1143
0facd0e5
RD
1144 DocDeclStr(
1145 void , CaptureMouse(),
1146 "Directs all mouse input to this window. Call wx.Window.ReleaseMouse to
1147release the capture.
d14a1e28 1148
0facd0e5
RD
1149Note that wxWindows maintains the stack of windows having captured the
1150mouse and when the mouse is released the capture returns to the window
1151which had had captured it previously and it is only really released if
1152there were no previous window. In particular, this means that you must
d07d2bc9 1153release the mouse as many times as you capture it.", "");
0facd0e5
RD
1154
1155 DocDeclStr(
1156 void , ReleaseMouse(),
d07d2bc9 1157 "Releases mouse input captured with wx.Window.CaptureMouse.", "");
0facd0e5
RD
1158
1159
1160 DocDeclStr(
1161 static wxWindow *, GetCapture(),
d07d2bc9 1162 "Returns the window which currently captures the mouse or None", "");
0facd0e5 1163
d14a1e28 1164
0facd0e5
RD
1165 DocDeclStr(
1166 virtual bool , HasCapture() const,
d07d2bc9 1167 "Returns true if this window has the current mouse capture.", "");
0facd0e5 1168
d14a1e28
RD
1169
1170
0facd0e5 1171
d14a1e28
RD
1172
1173 // painting the window
1174 // -------------------
1175
0facd0e5
RD
1176 DocDeclStr(
1177 virtual void , Refresh( bool eraseBackground = True,
1178 const wxRect *rect = NULL ),
1179 "Mark the specified rectangle (or the whole window) as \"dirty\" so it
1180will be repainted. Causes an EVT_PAINT event to be generated and sent
d07d2bc9 1181to the window.", "");
0facd0e5 1182
d14a1e28 1183
0facd0e5
RD
1184 DocDeclStr(
1185 void , RefreshRect(const wxRect& rect),
1186 "Redraws the contents of the given rectangle: the area inside it will
d07d2bc9 1187be repainted. This is the same as Refresh but has a nicer syntax.", "");
0facd0e5 1188
d14a1e28 1189
0facd0e5
RD
1190 DocDeclStr(
1191 virtual void , Update(),
1192 "Calling this method immediately repaints the invalidated area of the
1193window instead of waiting for the EVT_PAINT event to happen, (normally
1194this would usually only happen when the flow of control returns to the
1195event loop.) Notice that this function doesn't refresh the window and
1196does nothing if the window has been already repainted. Use Refresh
1197first if you want to immediately redraw the window (or some portion of
d07d2bc9 1198it) unconditionally.", "");
0facd0e5 1199
d14a1e28 1200
0facd0e5
RD
1201 DocDeclStr(
1202 virtual void , ClearBackground(),
1203 "Clears the window by filling it with the current background
d07d2bc9 1204colour. Does not cause an erase background event to be generated.", "");
0facd0e5 1205
d14a1e28 1206
d14a1e28 1207
0facd0e5
RD
1208 DocDeclStr(
1209 virtual void , Freeze(),
d07d2bc9
RD
1210 "Freezes the window or, in other words, prevents any updates from
1211taking place on screen, the window is not redrawn at all. Thaw must be
1212called to reenable window redrawing. Calls to Freeze/Thaw may be
1213nested, with the actual Thaw being delayed until all the nesting has
1214been undone.
d14a1e28 1215
0facd0e5
RD
1216This method is useful for visual appearance optimization (for example,
1217it is a good idea to use it before inserting large amount of text into
1218a wxTextCtrl under wxGTK) but is not implemented on all platforms nor
1219for all controls so it is mostly just a hint to wxWindows and not a
d07d2bc9 1220mandatory directive.", "");
0facd0e5 1221
d14a1e28 1222
0facd0e5
RD
1223 DocDeclStr(
1224 virtual void , Thaw(),
2f4ad68c 1225 "Reenables window updating after a previous call to Freeze. Calls to
d07d2bc9
RD
1226Freeze/Thaw may be nested, so Thaw must be called the same number of
1227times that Freeze was before the window will be updated.", "");
0facd0e5 1228
d14a1e28 1229
0facd0e5
RD
1230 DocDeclStr(
1231 virtual void , PrepareDC( wxDC & dc ),
1232 "Call this function to prepare the device context for drawing a
1233scrolled image. It sets the device origin according to the current
d07d2bc9 1234scroll position.", "");
0facd0e5
RD
1235
1236
1237 DocDeclStr(
1238 wxRegion& , GetUpdateRegion(),
1239 "Returns the region specifying which parts of the window have been
d07d2bc9 1240damaged. Should only be called within an EVT_PAINT handler.", "");
0facd0e5 1241
d14a1e28 1242
0facd0e5
RD
1243 DocDeclStr(
1244 wxRect , GetUpdateClientRect() const,
d07d2bc9 1245 "Get the update rectangle region bounding box in client coords.", "");
0facd0e5
RD
1246
1247
1248 DocStr(IsExposed,
1249 "Returns true if the given point or rectangle area has been exposed
1250since the last repaint. Call this in an paint event handler to
1251optimize redrawing by only redrawing those areas, which have been
d07d2bc9 1252exposed.", "");
d14a1e28
RD
1253 bool IsExposed( int x, int y, int w=1, int h=1 ) const;
1254 %name(IsExposedPoint) bool IsExposed( const wxPoint& pt ) const;
2f4ad68c 1255 %name(IsExposedRect) bool IsExposed( const wxRect& rect ) const;
d14a1e28
RD
1256
1257
1258
1259 // colours, fonts and cursors
1260 // --------------------------
1261
d14a1e28 1262
174051f6 1263 DocDeclStr(
880715c9 1264 virtual wxVisualAttributes , GetDefaultAttributes() const,
d07d2bc9
RD
1265 "Get the default attributes for an instance of this class. This is
1266useful if you want to use the same font or colour in your own control
1267as in a standard control -- which is a much better idea than hard
1268coding specific colours or fonts which might look completely out of
d474ed7b 1269place on the user's system, especially if it uses themes.", "");
174051f6 1270
d14a1e28 1271
174051f6
RD
1272 DocDeclStr(
1273 static wxVisualAttributes ,
1274 GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL),
d07d2bc9
RD
1275 "Get the default attributes for this class. This is useful if you want
1276to use the same font or colour in your own control as in a standard
1277control -- which is a much better idea than hard coding specific
d474ed7b
RD
1278colours or fonts which might look completely out of place on the
1279user's system, especially if it uses themes.
174051f6
RD
1280
1281The variant parameter is only relevant under Mac currently and is
d07d2bc9 1282ignore under other platforms. Under Mac, it will change the size of
d474ed7b
RD
1283the returned font. See `wx.Window.SetWindowVariant` for more about
1284this.", "");
174051f6 1285
0facd0e5
RD
1286
1287 DocDeclStr(
1288 virtual bool , SetBackgroundColour( const wxColour &colour ),
1289 "Sets the background colour of the window. Returns True if the colour
1290was changed. The background colour is usually painted by the default
1291EVT_ERASE_BACKGROUND event handler function under Windows and
fe161a26
RD
1292automatically under GTK. Using `wx.NullColour` will reset the window
1293to the default background colour.
0facd0e5 1294
d474ed7b 1295Note that setting the background colour may not cause an immediate
fe161a26 1296refresh, so you may wish to call `ClearBackground` or `Refresh` after
0facd0e5
RD
1297calling this function.
1298
fe161a26
RD
1299Using this function will disable attempts to use themes for this
1300window, if the system supports them. Use with care since usually the
1301themes represent the appearance chosen by the user to be used for all
1302applications on the system.", "");
ed3ff7fe
RD
1303
1304 DocDeclStr(
6d450e1a 1305 void , SetOwnBackgroundColour(const wxColour& colour),
d07d2bc9 1306 "", "");
ed3ff7fe
RD
1307
1308
0facd0e5
RD
1309
1310 DocDeclStr(
1311 virtual bool , SetForegroundColour( const wxColour &colour ),
1312 "Sets the foreground colour of the window. Returns True is the colour
1313was changed. The interpretation of foreground colour is dependent on
1314the window class; it may be the text colour or other colour, or it may
d07d2bc9 1315not be used at all.", "");
174051f6 1316
ed3ff7fe 1317 DocDeclStr(
fa47d7a7 1318 void , SetOwnForegroundColour(const wxColour& colour),
d07d2bc9 1319 "", "");
ed3ff7fe 1320
0facd0e5 1321
ed3ff7fe 1322
0facd0e5
RD
1323 DocDeclStr(
1324 wxColour , GetBackgroundColour() const,
d07d2bc9 1325 "Returns the background colour of the window.", "");
0facd0e5
RD
1326
1327 DocDeclStr(
1328 wxColour , GetForegroundColour() const,
1329 "Returns the foreground colour of the window. The interpretation of
1330foreground colour is dependent on the window class; it may be the text
d07d2bc9 1331colour or other colour, or it may not be used at all.", "");
0facd0e5 1332
d14a1e28 1333
d14a1e28 1334
0facd0e5
RD
1335
1336 DocDeclStr(
1337 virtual bool , SetCursor( const wxCursor &cursor ),
1338 "Sets the window's cursor. Notice that the window cursor also sets it
1339for the children of the window implicitly.
d14a1e28 1340
0facd0e5 1341The cursor may be wx.NullCursor in which case the window cursor will
d07d2bc9 1342be reset back to default.", "");
0facd0e5
RD
1343
1344 DocDeclStr(
9f884528 1345 wxCursor , GetCursor(),
d07d2bc9 1346 "Return the cursor associated with this window.", "");
0facd0e5 1347
d14a1e28 1348
0facd0e5
RD
1349
1350 DocDeclStr(
1351 virtual bool , SetFont( const wxFont &font ),
d07d2bc9 1352 "Sets the font for this window.", "");
0facd0e5 1353
ed3ff7fe 1354 DocDeclStr(
fa47d7a7 1355 void , SetOwnFont(const wxFont& font),
d07d2bc9 1356 "", "");
ed3ff7fe
RD
1357
1358
1359
0facd0e5 1360 DocDeclStr(
9f884528 1361 wxFont , GetFont(),
d07d2bc9 1362 "Returns the default font used for this window.", "");
0facd0e5
RD
1363
1364
1365
1366 DocDeclStr(
1367 void , SetCaret(wxCaret *caret),
d07d2bc9 1368 "Sets the caret associated with the window.", "");
0facd0e5
RD
1369
1370 DocDeclStr(
1371 wxCaret *, GetCaret() const,
d07d2bc9 1372 "Returns the caret associated with the window.", "");
0facd0e5
RD
1373
1374
1375
1376 DocDeclStr(
1377 virtual int , GetCharHeight() const,
d07d2bc9 1378 "Get the (average) character size for the current font.", "");
0facd0e5
RD
1379
1380 DocDeclStr(
1381 virtual int , GetCharWidth() const,
d07d2bc9 1382 "Get the (average) character size for the current font.", "");
0facd0e5 1383
d14a1e28 1384
dd9f7fea
RD
1385
1386 DocDeclAStr(
1387 void, GetTextExtent(const wxString& string, int *OUTPUT, int *OUTPUT),
64e8a1f0 1388 "GetTextExtent(String string) -> (width, height)",
d07d2bc9 1389 "Get the width and height of the text using the current font.", "");
dd9f7fea
RD
1390 DocDeclAStrName(
1391 void, GetTextExtent(const wxString& string,
1392 int *OUTPUT, int *OUTPUT, int *OUTPUT, int* OUTPUT,
1393 const wxFont* font = NULL),
64e8a1f0 1394 "GetFullTextExtent(String string, Font font=None) ->\n (width, height, descent, externalLeading)",
0facd0e5 1395 "Get the width, height, decent and leading of the text using the
d07d2bc9 1396current or specified font.", "",
dd9f7fea
RD
1397 GetFullTextExtent);
1398
d14a1e28
RD
1399
1400
1401 // client <-> screen coords
1402 // ------------------------
1403
1404 %apply int * INOUT { int* x, int* y };
1405
1406 // translate to/from screen/client coordinates
0facd0e5
RD
1407 DocDeclAStrName(
1408 void , ClientToScreen( int *x, int *y ) const,
1409 "ClientToScreenXY(int x, int y) -> (x,y)",
d07d2bc9 1410 "Converts to screen coordinates from coordinates relative to this window.", "",
0facd0e5
RD
1411 ClientToScreenXY);
1412
1413 DocDeclAStrName(
1414 void , ScreenToClient( int *x, int *y ) const,
1415 "ScreenToClientXY(int x, int y) -> (x,y)",
d07d2bc9 1416 "Converts from screen to client window coordinates.", "",
0facd0e5
RD
1417 ScreenToClientXY);
1418
d14a1e28 1419
0facd0e5
RD
1420 DocDeclStr(
1421 wxPoint , ClientToScreen(const wxPoint& pt) const,
d07d2bc9 1422 "Converts to screen coordinates from coordinates relative to this window.", "");
0facd0e5
RD
1423
1424 DocDeclStr(
1425 wxPoint , ScreenToClient(const wxPoint& pt) const,
d07d2bc9 1426 "Converts from screen to client window coordinates.", "");
0facd0e5 1427
d14a1e28 1428
0facd0e5
RD
1429
1430 DocDeclStrName(
1431 wxHitTest , HitTest(wxCoord x, wxCoord y) const,
d07d2bc9 1432 "Test where the given (in client coords) point lies", "",
0facd0e5
RD
1433 HitTestXY);
1434
1435 DocDeclStr(
1436 wxHitTest , HitTest(const wxPoint& pt) const,
d07d2bc9 1437 "Test where the given (in client coords) point lies", "");
0facd0e5 1438
d14a1e28
RD
1439
1440
1441
1442 // misc
1443 // ----
1444
0facd0e5
RD
1445 %nokwargs GetBorder;
1446 DocDeclStr(
1447 wxBorder , GetBorder(long flags) const,
1448 "Get the window border style from the given flags: this is different
1449from simply doing flags & wxBORDER_MASK because it uses
1450GetDefaultBorder() to translate wxBORDER_DEFAULT to something
1451reasonable.
d07d2bc9 1452", "");
0facd0e5
RD
1453
1454 DocDeclStr(
1455 wxBorder , GetBorder() const,
d07d2bc9 1456 "Get border for the flags of this window", "");
0facd0e5 1457
d14a1e28 1458
0facd0e5 1459
d14a1e28 1460
0facd0e5
RD
1461 DocDeclStr(
1462 virtual void , UpdateWindowUI(long flags = wxUPDATE_UI_NONE),
1463 "This function sends EVT_UPDATE_UI events to the window. The particular
1464implementation depends on the window; for example a wx.ToolBar will
1465send an update UI event for each toolbar button, and a wx.Frame will
1466send an update UI event for each menubar menu item. You can call this
1467function from your application to ensure that your UI is up-to-date at
1468a particular point in time (as far as your EVT_UPDATE_UI handlers are
1469concerned). This may be necessary if you have called
1470wx.UpdateUIEvent.SetMode or wx.UpdateUIEvent.SetUpdateInterval to
1471limit the overhead that wxWindows incurs by sending update UI events
d07d2bc9
RD
1472in idle time.",
1473"
0facd0e5
RD
1474The flags should be a bitlist of one or more of the following values:
1475
d07d2bc9 1476 ===================== ==============================
0facd0e5
RD
1477 wx.UPDATE_UI_NONE No particular value
1478 wx.UPDATE_UI_RECURSE Call the function for descendants
1479 wx.UPDATE_UI_FROMIDLE Invoked from OnIdle
d07d2bc9 1480 ===================== ==============================
0facd0e5
RD
1481
1482If you are calling this function from an OnIdle function, make sure
d07d2bc9
RD
1483you pass the wx.UPDATE_UI_FROMIDLE flag, since this tells the window
1484to only update the UI elements that need to be updated in idle
1485time. Some windows update their elements only when necessary, for
1486example when a menu is about to be shown. The following is an example
1487of how to call UpdateWindowUI from an idle function::
0facd0e5
RD
1488
1489 def OnIdle(self, evt):
1490 if wx.UpdateUIEvent.CanUpdate(self):
1491 self.UpdateWindowUI(wx.UPDATE_UI_FROMIDLE);
1492");
1493
d14a1e28
RD
1494
1495// TODO: using directors?
1496// // do the window-specific processing after processing the update event
1497// virtual void DoUpdateWindowUI(wxUpdateUIEvent& event) ;
1498
0facd0e5
RD
1499
1500 DocStr(PopupMenu,
d25d9ed0
RD
1501 "Pops up the given menu at the specified coordinates, relative to this window,
1502and returns control when the user has dismissed the menu. If a menu item is
1503selected, the corresponding menu event is generated and will be processed as
1504usual. If the default position is given then the current position of the
1505mouse cursor will be used.", "");
1506 %name(PopupMenuXY) bool PopupMenu(wxMenu *menu, int x=-1, int y=-1);
1507 bool PopupMenu(wxMenu *menu, const wxPoint& pos=wxDefaultPosition);
d14a1e28 1508
0facd0e5
RD
1509
1510
1511
d14a1e28 1512 %extend {
0facd0e5
RD
1513 DocStr(GetHandle,
1514 "Returns the platform-specific handle (as a long integer) of the
1515physical window. Currently on wxMac it returns the handle of the
d07d2bc9 1516toplevel parent of the window.", "");
d14a1e28
RD
1517 long GetHandle() {
1518 return wxPyGetWinHandle(self);
1519 }
1520 }
1521
1522
0facd0e5 1523
d14a1e28
RD
1524#ifdef __WXMSW__
1525 // A way to do the native draw first... Too bad it isn't in wxGTK too.
1526 void OnPaint(wxPaintEvent& event);
1527#endif
1528
1529
1530
1531 // scrollbars
1532 // ----------
1533
0facd0e5
RD
1534
1535 DocDeclStr(
1536 bool , HasScrollbar(int orient) const,
d07d2bc9 1537 "Does the window have the scrollbar for this orientation?", "");
0facd0e5 1538
d14a1e28
RD
1539
1540 // configure the window scrollbars
0facd0e5
RD
1541 DocDeclStr(
1542 virtual void , SetScrollbar( int orientation,
d07d2bc9
RD
1543 int position,
1544 int thumbSize,
0facd0e5
RD
1545 int range,
1546 bool refresh = True ),
d07d2bc9
RD
1547 "Sets the scrollbar properties of a built-in scrollbar.",
1548 "
1549 :param orientation: Determines the scrollbar whose page size is to
1550 be set. May be wx.HORIZONTAL or wx.VERTICAL.
0facd0e5 1551
d07d2bc9 1552 :param position: The position of the scrollbar in scroll units.
0facd0e5 1553
d07d2bc9 1554 :param thumbSize: The size of the thumb, or visible portion of the
0facd0e5
RD
1555 scrollbar, in scroll units.
1556
d07d2bc9 1557 :param range: The maximum position of the scrollbar.
0facd0e5 1558
d07d2bc9
RD
1559 :param refresh: True to redraw the scrollbar, false otherwise.
1560");
0facd0e5
RD
1561
1562 DocDeclStr(
1563 virtual void , SetScrollPos( int orientation, int pos, bool refresh = True ),
d07d2bc9 1564 "Sets the position of one of the built-in scrollbars.", "");
0facd0e5
RD
1565
1566 DocDeclStr(
1567 virtual int , GetScrollPos( int orientation ) const,
d07d2bc9 1568 "Returns the built-in scrollbar position.", "");
0facd0e5
RD
1569
1570 DocDeclStr(
1571 virtual int , GetScrollThumb( int orientation ) const,
d07d2bc9 1572 "Returns the built-in scrollbar thumb size.", "");
0facd0e5
RD
1573
1574 DocDeclStr(
1575 virtual int , GetScrollRange( int orientation ) const,
d07d2bc9 1576 "Returns the built-in scrollbar range.", "");
0facd0e5
RD
1577
1578
1579
1580
1581 DocDeclStr(
1582 virtual void , ScrollWindow( int dx, int dy,
1583 const wxRect* rect = NULL ),
1584 "Physically scrolls the pixels in the window and move child windows
1585accordingly. Use this function to optimise your scrolling
1586implementations, to minimise the area that must be redrawn. Note that
d07d2bc9
RD
1587it is rarely required to call this function from a user program.",
1588"
1589 :param dx: Amount to scroll horizontally.
0facd0e5 1590
d07d2bc9 1591 :param dy: Amount to scroll vertically.
0facd0e5 1592
d07d2bc9
RD
1593 :param rect: Rectangle to invalidate. If this is None, the whole
1594 window is invalidated. If you pass a rectangle corresponding
1595 to the area of the window exposed by the scroll, your
1596 painting handler can optimize painting by checking for the
0facd0e5
RD
1597 invalidated region.");
1598
1599
1600 DocDeclStr(
1601 virtual bool , ScrollLines(int lines),
1602 "If the platform and window class supports it, scrolls the window by
1603the given number of lines down, if lines is positive, or up if lines
1604is negative. Returns True if the window was scrolled, False if it was
d07d2bc9 1605already on top/bottom and nothing was done.", "");
0facd0e5
RD
1606
1607 DocDeclStr(
1608 virtual bool , ScrollPages(int pages),
d07d2bc9 1609 "If the platform and window class supports it, scrolls the window by
0facd0e5
RD
1610the given number of pages down, if pages is positive, or up if pages
1611is negative. Returns True if the window was scrolled, False if it was
d07d2bc9 1612already on top/bottom and nothing was done.", "");
0facd0e5
RD
1613
1614
1615 DocDeclStr(
1616 bool , LineUp(),
d07d2bc9 1617 "This is just a wrapper for ScrollLines(-1).", "");
0facd0e5
RD
1618
1619 DocDeclStr(
1620 bool , LineDown(),
d07d2bc9 1621 "This is just a wrapper for ScrollLines(1).", "");
0facd0e5
RD
1622
1623 DocDeclStr(
1624 bool , PageUp(),
d07d2bc9 1625 "This is just a wrapper for ScrollPages(-1).", "");
0facd0e5
RD
1626
1627 DocDeclStr(
1628 bool , PageDown(),
d07d2bc9 1629 "This is just a wrapper for ScrollPages(1).", "");
0facd0e5 1630
d14a1e28
RD
1631
1632
1633
1634 // context-sensitive help
1635 // ----------------------
1636
0facd0e5
RD
1637 DocDeclStr(
1638 void , SetHelpText(const wxString& text),
1639 "Sets the help text to be used as context-sensitive help for this
1640window. Note that the text is actually stored by the current
d07d2bc9 1641wxHelpProvider implementation, and not in the window object itself.", "");
0facd0e5 1642
d14a1e28 1643
0facd0e5
RD
1644 DocDeclStr(
1645 void , SetHelpTextForId(const wxString& text),
1646 "Associate this help text with all windows with the same id as this
d07d2bc9 1647one.", "");
0facd0e5 1648
d14a1e28 1649
0facd0e5
RD
1650 DocDeclStr(
1651 wxString , GetHelpText() const,
1652 "Gets the help text to be used as context-sensitive help for this
1653window. Note that the text is actually stored by the current
d07d2bc9 1654wxHelpProvider implementation, and not in the window object itself.", "");
0facd0e5 1655
d14a1e28
RD
1656
1657
f87da722 1658#ifndef __WXX11__
d14a1e28
RD
1659 // tooltips
1660 // --------
1661
0facd0e5 1662 DocStr(SetToolTip,
d07d2bc9 1663 "Attach a tooltip to the window.", "");
d14a1e28 1664 %name(SetToolTipString) void SetToolTip( const wxString &tip );
d14a1e28
RD
1665 void SetToolTip( wxToolTip *tip );
1666
0facd0e5
RD
1667 DocDeclStr(
1668 wxToolTip* , GetToolTip() const,
d07d2bc9 1669 "get the associated tooltip or None if none", "");
0facd0e5 1670
d14a1e28 1671 // LINK ERROR --> wxString GetToolTipText() const;
f87da722 1672#endif
d14a1e28
RD
1673
1674
f87da722
RD
1675
1676#ifndef __WXX11__
d14a1e28
RD
1677 // drag and drop
1678 // -------------
1679
1680 // set/retrieve the drop target associated with this window (may be
1681 // NULL; it's owned by the window and will be deleted by it)
8668c242 1682 %apply SWIGTYPE *DISOWN { wxPyDropTarget *dropTarget };
0facd0e5
RD
1683
1684 DocDeclStr(
1685 virtual void , SetDropTarget( wxPyDropTarget *dropTarget ),
1686 "Associates a drop target with this window. If the window already has
d07d2bc9 1687a drop target, it is deleted.", "");
0facd0e5 1688
8668c242 1689 %clear wxPyDropTarget *dropTarget;
0facd0e5
RD
1690
1691
1692 DocDeclStr(
1693 virtual wxPyDropTarget *, GetDropTarget() const,
d07d2bc9 1694 "Returns the associated drop target, which may be None.", "");
8668c242 1695
d14a1e28
RD
1696
1697#ifdef __WXMSW__ // TODO: should I drop-kick this?
0facd0e5
RD
1698 DocDeclStr(
1699 void , DragAcceptFiles(bool accept),
1700 "Enables or disables eligibility for drop file events, EVT_DROP_FILES.
d07d2bc9 1701Only available on Windows.", "");
d14a1e28 1702#endif
f87da722
RD
1703#endif
1704
d14a1e28
RD
1705
1706 // constraints and sizers
1707 // ----------------------
1708
1709 // set the constraints for this window or retrieve them (may be NULL)
0facd0e5
RD
1710 DocDeclStr(
1711 void , SetConstraints( wxLayoutConstraints *constraints ),
1712 "Sets the window to have the given layout constraints. If an existing
1713layout constraints object is already owned by the window, it will be
1714deleted. Pass None to disassociate and delete the window's current
1715constraints.
1716
1717You must call SetAutoLayout to tell a window to use the constraints
1718automatically in its default EVT_SIZE handler; otherwise, you must
1719handle EVT_SIZE yourself and call Layout() explicitly. When setting
1720both a wx.LayoutConstraints and a wx.Sizer, only the sizer will have
d07d2bc9 1721effect.", "");
0facd0e5
RD
1722
1723 DocDeclStr(
1724 wxLayoutConstraints *, GetConstraints() const,
1725 "Returns a pointer to the window's layout constraints, or None if there
d07d2bc9 1726are none.", "");
0facd0e5 1727
d14a1e28 1728
0facd0e5
RD
1729 DocDeclStr(
1730 void , SetAutoLayout( bool autoLayout ),
1731 "Determines whether the Layout function will be called automatically
1732when the window is resized. It is called implicitly by SetSizer but
1733if you use SetConstraints you should call it manually or otherwise the
d07d2bc9 1734window layout won't be correctly updated when its size changes.", "");
0facd0e5
RD
1735
1736 DocDeclStr(
1737 bool , GetAutoLayout() const,
d07d2bc9 1738 "Returns the current autoLayout setting", "");
0facd0e5 1739
d14a1e28 1740
0facd0e5
RD
1741 DocDeclStr(
1742 virtual bool , Layout(),
1743 "Invokes the constraint-based layout algorithm or the sizer-based
1744algorithm for this window. See SetAutoLayout: when auto layout is on,
1745this function gets called automatically by the default EVT_SIZE
d07d2bc9 1746handler when the window is resized.", "");
0facd0e5 1747
d14a1e28 1748
0facd0e5
RD
1749 DocDeclStr(
1750 void , SetSizer(wxSizer *sizer, bool deleteOld = True ),
1751 "Sets the window to have the given layout sizer. The window will then
1752own the object, and will take care of its deletion. If an existing
1753layout sizer object is already owned by the window, it will be deleted
1754if the deleteOld parameter is true. Note that this function will also
1755call SetAutoLayout implicitly with a True parameter if the sizer is
d07d2bc9 1756non-NoneL and False otherwise.", "");
0facd0e5
RD
1757
1758 DocDeclStr(
1759 void , SetSizerAndFit( wxSizer *sizer, bool deleteOld = True ),
1760 "The same as SetSizer, except it also sets the size hints for the
d07d2bc9 1761window based on the sizer's minimum size.", "");
0facd0e5 1762
d14a1e28 1763
0facd0e5
RD
1764 DocDeclStr(
1765 wxSizer *, GetSizer() const,
1766 "Return the sizer associated with the window by a previous call to
d07d2bc9 1767SetSizer or None if there isn't one.", "");
0facd0e5 1768
d14a1e28
RD
1769
1770 // Track if this window is a member of a sizer
0facd0e5
RD
1771 DocDeclStr(
1772 void , SetContainingSizer(wxSizer* sizer),
1773 "This normally does not need to be called by application code. It is
1774called internally when a window is added to a sizer, and is used so
d07d2bc9 1775the window can remove itself from the sizer when it is destroyed.", "");
0facd0e5
RD
1776
1777 DocDeclStr(
1778 wxSizer *, GetContainingSizer() const,
d07d2bc9 1779 "Return the sizer that this window is a member of, if any, otherwise None.", "");
0facd0e5 1780
d14a1e28
RD
1781
1782
1783
1784 // accessibility
1785 // ----------------------
1786#if wxUSE_ACCESSIBILITY
1787 // Override to create a specific accessible object.
1788 virtual wxAccessible* CreateAccessible();
1789
1790 // Sets the accessible object.
1791 void SetAccessible(wxAccessible* accessible) ;
1792
1793 // Returns the accessible object.
1794 wxAccessible* GetAccessible() { return m_accessible; };
1795
1796 // Returns the accessible object, creating if necessary.
1797 wxAccessible* GetOrCreateAccessible() ;
1798#endif
1799
1800
75b39b4c
RD
1801
1802
1803 DocDeclStr(
1804 virtual void , InheritAttributes(),
d07d2bc9
RD
1805 "This function is (or should be, in case of custom controls) called
1806during window creation to intelligently set up the window visual
1807attributes, that is the font and the foreground and background
1808colours.
1809
1810By 'intelligently' the following is meant: by default, all windows use
1811their own default attributes. However if some of the parent's
1812attributes are explicitly changed (that is, using SetFont and not
fa47d7a7 1813SetOwnFont) and if the corresponding attribute hadn't been
d07d2bc9
RD
1814explicitly set for this window itself, then this window takes the same
1815value as used by the parent. In addition, if the window overrides
1816ShouldInheritColours to return false, the colours will not be changed
1817no matter what and only the font might.
1818
1819This rather complicated logic is necessary in order to accomodate the
1820different usage scenarius. The most common one is when all default
1821attributes are used and in this case, nothing should be inherited as
1822in modern GUIs different controls use different fonts (and colours)
1823than their siblings so they can't inherit the same value from the
1824parent. However it was also deemed desirable to allow to simply change
1825the attributes of all children at once by just changing the font or
1826colour of their common parent, hence in this case we do inherit the
1827parents attributes.
1828", "");
75b39b4c
RD
1829
1830
1831// TODO: Virtualize this with directors
1832 DocDeclStr(
1833 virtual bool , ShouldInheritColours() const,
1834 "Return true from here to allow the colours of this window to be
d07d2bc9
RD
1835changed by InheritAttributes, returning false forbids inheriting them
1836from the parent window.
75b39b4c 1837
d07d2bc9
RD
1838The base class version returns false, but this method is overridden in
1839wxControl where it returns true.", "");
75b39b4c 1840
ed3ff7fe 1841
d14a1e28
RD
1842
1843 %pythoncode {
1844 def PostCreate(self, pre):
0facd0e5
RD
1845 """
1846 Phase 3 of the 2-phase create <wink!>
1847 Call this method after precreating the window with the 2-phase create method.
1848 """
d14a1e28
RD
1849 self.this = pre.this
1850 self.thisown = pre.thisown
1851 pre.thisown = 0
1852 if hasattr(self, '_setOORInfo'):
1853 self._setOORInfo(self)
1854 if hasattr(self, '_setCallbackInfo'):
1855 self._setCallbackInfo(self, self.__class__)
1856 }
1857};
1858
1859
1860
1861
1862
1863
1864
1865
1866%pythoncode {
1867def DLG_PNT(win, point_or_x, y=None):
0facd0e5
RD
1868 """
1869 Convenience function for converting a Point or (x,y) in
1870 dialog units to pixel units.
1871 """
d14a1e28
RD
1872 if y is None:
1873 return win.ConvertDialogPointToPixels(point_or_x)
1874 else:
fd3f2efe 1875 return win.ConvertDialogPointToPixels(wx.Point(point_or_x, y))
d14a1e28
RD
1876
1877def DLG_SZE(win, size_width, height=None):
0facd0e5
RD
1878 """
1879 Convenience function for converting a Size or (w,h) in
1880 dialog units to pixel units.
1881 """
d14a1e28
RD
1882 if height is None:
1883 return win.ConvertDialogSizeToPixels(size_width)
1884 else:
fd3f2efe 1885 return win.ConvertDialogSizeToPixels(wx.Size(size_width, height))
d14a1e28
RD
1886}
1887
1888
1889
1890
1891// Unfortunatly the names of these new static methods clash with the
1892// names wxPython has been using forever for the overloaded
1893// wxWindow::FindWindow, so instead of swigging them as statics create
1894// standalone functions for them.
1895
1896
0facd0e5
RD
1897DocStr(wxFindWindowById,
1898"Find the first window in the application with the given id. If parent
1899is None, the search will start from all top-level frames and dialog
1900boxes; if non-None, the search will be limited to the given window
d07d2bc9 1901hierarchy. The search is recursive in both cases.", "");
0facd0e5
RD
1902
1903DocStr(wxFindWindowByName,
1904"Find a window by its name (as given in a window constructor or Create
1905function call). If parent is None, the search will start from all
1906top-level frames and dialog boxes; if non-None, the search will be
1907limited to the given window hierarchy. The search is recursive in both
1908cases.
1909
d07d2bc9 1910If no window with such name is found, wx.FindWindowByLabel is called.", "");
0facd0e5
RD
1911
1912DocStr(wxFindWindowByLabel,
1913"Find a window by its label. Depending on the type of window, the label
1914may be a window title or panel item label. If parent is None, the
1915search will start from all top-level frames and dialog boxes; if
1916non-None, the search will be limited to the given window
d07d2bc9 1917hierarchy. The search is recursive in both cases.", "");
0facd0e5
RD
1918
1919
ab1f7d2a
RD
1920MustHaveApp(wxFindWindowById);
1921MustHaveApp(wxFindWindowByName);
1922MustHaveApp(wxFindWindowByLabel);
1923
d14a1e28
RD
1924%inline %{
1925wxWindow* wxFindWindowById( long id, const wxWindow *parent = NULL ) {
1926 return wxWindow::FindWindowById(id, parent);
1927}
1928
1929wxWindow* wxFindWindowByName( const wxString& name,
1930 const wxWindow *parent = NULL ) {
1931 return wxWindow::FindWindowByName(name, parent);
1932}
1933
1934wxWindow* wxFindWindowByLabel( const wxString& label,
1935 const wxWindow *parent = NULL ) {
1936 return wxWindow::FindWindowByLabel(label, parent);
1937}
1938%}
1939
1940
1941
96577d6d
RD
1942%{
1943#ifdef __WXMSW__
1944#include <wx/msw/private.h> // to get wxGetWindowId
1945#endif
1946%}
1947
d14a1e28 1948%inline %{
2f4ad68c 1949 wxWindow* wxWindow_FromHWND(wxWindow* parent, unsigned long _hWnd) {
d14a1e28 1950#ifdef __WXMSW__
2f4ad68c
RD
1951 WXHWND hWnd = (WXHWND)_hWnd;
1952 long id = wxGetWindowId(hWnd);
d14a1e28 1953 wxWindow* win = new wxWindow;
2f4ad68c
RD
1954 parent->AddChild(win);
1955 win->SetEventHandler(win);
1956 win->SetHWND(hWnd);
1957 win->SetId(id);
1958 win->SubclassWin(hWnd);
1959 win->AdoptAttributesFromHWND();
1960 win->SetupColours();
d14a1e28
RD
1961 return win;
1962#else
81cfe5e1 1963 wxPyRaiseNotImplemented();
d14a1e28
RD
1964 return NULL;
1965#endif
1966 }
1967%}
1968
1969//---------------------------------------------------------------------------
1970//---------------------------------------------------------------------------
1971