Returns a pointer to the window's layout constraints, or NULL if there are none.
+\membersection{wxWindow::GetContainingSizer}\label{wxwindowgetcontainingsizer}
+
+\constfunc{const wxSizer *}{GetContainingSizer}{\void}
+
+Return the sizer that this window is a member of, if any, otherwise
+{\tt NULL}.
+
\membersection{wxWindow::GetDropTarget}\label{wxwindowgetdroptarget}
\constfunc{wxDropTarget*}{GetDropTarget}{\void}
\constfunc{const wxSizer *}{GetSizer}{\void}
-Return the sizer associated with the window by a previous call to
+Return the sizer associated with the window by a previous call to
\helpref{SetSizer()}{wxwindowsetsizer} or {\tt NULL}.
+\membersection{wxWindow::GetTextExtent}\label{wxwindowgettextextent}
+
\constfunc{virtual void}{GetTextExtent}{\param{const wxString\& }{string}, \param{int* }{x}, \param{int* }{y},
\param{int* }{descent = NULL}, \param{int* }{externalLeading = NULL},
\param{const wxFont* }{font = NULL}, \param{bool}{ use16 = {\tt FALSE}}}
\func{void}{SetAutoLayout}{\param{bool}{ autoLayout}}
Determines whether the \helpref{wxWindow::Layout}{wxwindowlayout} function will
-be called automatically when the window is resized. Use in connection with
-\helpref{wxWindow::SetSizer}{wxwindowsetsizer} and
+be called automatically when the window is resized. Use in connection with
+\helpref{wxWindow::SetSizer}{wxwindowsetsizer} and
\helpref{wxWindow::SetConstraints}{wxwindowsetconstraints} for laying out
subwindows.
\end{twocollist}}
}
+\membersection{wxWindow::SetContainingSizer}\label{wxwindowsetcontainingsizer}
+
+\func{void}{SetContainingSizer}{\param{wxSizer* }{sizer}}
+
+This normally does not need to be called by user code. It is called
+when a window is added to a sizer, and is used so the window can
+remove itself from the sizer when it is destroyed.
+
\membersection{wxWindow::SetCursor}\label{wxwindowsetcursor}
\func{virtual void}{SetCursor}{\param{const wxCursor\&}{cursor}}
events are propagared upwards to the window parent recursively until a handler
for them is found. Using this style allows to prevent them from being
propagated beyond this window. Notice that wxDialog has this style on by
-default for the reasons explained in the
+default for the reasons explained in the
\helpref{event processing overview}{eventprocessing}.}
\twocolitem{\windowstyle{wxWS\_EX\_TRANSIENT}}{This can be used to prevent a
window from being used as an implicit parent for the dialogs which were
caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
a wxEVT\_HELP event if the user clicked on an application window.
This style cannot be used together with wxMAXIMIZE\_BOX or wxMINIMIZE\_BOX, so
-you should use the style of
+you should use the style of
{\tt wxDEFAULT\_FRAME\_STYLE & ~(wxMINIMIZE\_BOX | wxMAXIMIZE\_BOX)} for the
frames having this style (the dialogs don't have minimize nor maximize box by
default)}
\func{virtual bool}{Show}{\param{bool}{ show = {\tt TRUE}}}
-Shows or hides the window. You may need to call \helpref{Raise}{wxwindowraise}
+Shows or hides the window. You may need to call \helpref{Raise}{wxwindowraise}
for a top level window if you want to bring it to top, although this is not
needed if Show() is called immediately after the frame creation.
\func{virtual void}{Thaw}{\void}
-Reenables window updating after a previous call to
+Reenables window updating after a previous call to
\helpref{Freeze}{wxwindowfreeze}.
\membersection{wxWindow::TransferDataFromWindow}\label{wxwindowtransferdatafromwindow}
virtual void GetPositionConstraint(int *x, int *y) const ;
// sizers
- // TODO: what are they and how do they work??
void SetSizer( wxSizer *sizer );
wxSizer *GetSizer() const { return m_windowSizer; }
+
+ // Track if this window is a member of a sizer
+ void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; }
+ wxSizer *GetContainingSizer() const { return m_containingSizer; }
+
#endif // wxUSE_CONSTRAINTS
// backward compatibility
// constraints this window is involved in
wxWindowList *m_constraintsInvolvedIn;
- // top level and the parent sizers
- // TODO what's this and how does it work?)
+ // this window's sizer
wxSizer *m_windowSizer;
- wxWindowBase *m_sizerParent;
+
+ // The sizer this window is a member of, if any
+ wxSizer *m_containingSizer;
// Layout() window automatically when its size changes?
bool m_autoLayout:1;
// capture/release the mouse, used by Capture/ReleaseMouse()
virtual void DoCaptureMouse() = 0;
virtual void DoReleaseMouse() = 0;
-
+
// retrieve the position/size of the window
virtual void DoGetPosition( int *x, int *y ) const = 0;
virtual void DoGetSize( int *width, int *height ) const = 0;
{
if (m_window)
m_window->Destroy();
-
+
if (m_sizer)
m_sizer->DeleteWindows();
}
wxSizer::~wxSizer()
{
+ Clear();
}
void wxSizer::Add( wxWindow *window, int option, int flag, int border, wxObject* userData )
{
m_children.Append( new wxSizerItem( window, option, flag, border, userData ) );
+ window->SetContainingSizer(this);
}
void wxSizer::Add( wxSizer *sizer, int option, int flag, int border, wxObject* userData )
void wxSizer::Prepend( wxWindow *window, int option, int flag, int border, wxObject* userData )
{
m_children.Insert( new wxSizerItem( window, option, flag, border, userData ) );
+ window->SetContainingSizer(this);
}
void wxSizer::Prepend( wxSizer *sizer, int option, int flag, int border, wxObject* userData )
void wxSizer::Insert( int before, wxWindow *window, int option, int flag, int border, wxObject* userData )
{
m_children.Insert( before, new wxSizerItem( window, option, flag, border, userData ) );
+ window->SetContainingSizer(this);
}
void wxSizer::Insert( int before, wxSizer *sizer, int option, int flag, int border, wxObject* userData )
wxSizerItem *item = (wxSizerItem*)node->Data();
if (item->GetWindow() == window)
{
+ item->GetWindow()->SetContainingSizer(NULL);
m_children.DeleteNode( node );
return TRUE;
}
void wxSizer::Clear( bool delete_windows )
{
+ // First clear the ContainingSizer pointers
+ wxNode *node = m_children.First();
+ while (node)
+ {
+ wxSizerItem *item = (wxSizerItem*)node->Data();
+ if (item->IsWindow())
+ item->GetWindow()->SetContainingSizer(NULL);
+ node = node->Next();
+ }
+
+ // Destroy the windows if needed
if (delete_windows)
DeleteWindows();
-
+
+ // Now empty the list
m_children.Clear();
}
m_constraints = (wxLayoutConstraints *) NULL;
m_constraintsInvolvedIn = (wxWindowList *) NULL;
m_windowSizer = (wxSizer *) NULL;
+ m_containingSizer = (wxSizer *) NULL;
m_autoLayout = FALSE;
#endif // wxUSE_CONSTRAINTS
m_constraints = NULL;
}
+ if ( m_containingSizer )
+ m_containingSizer->Remove((wxWindow*)this);
+
if ( m_windowSizer )
delete m_windowSizer;
return _resultobj;
}
+#define wxWindow_SetContainingSizer(_swigobj,_swigarg0) (_swigobj->SetContainingSizer(_swigarg0))
+static PyObject *_wrap_wxWindow_SetContainingSizer(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxWindow * _arg0;
+ wxSizer * _arg1;
+ PyObject * _argo0 = 0;
+ PyObject * _argo1 = 0;
+ char *_kwnames[] = { "self","sizer", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"OO:wxWindow_SetContainingSizer",_kwnames,&_argo0,&_argo1))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_SetContainingSizer. Expected _wxWindow_p.");
+ return NULL;
+ }
+ }
+ if (_argo1) {
+ if (_argo1 == Py_None) { _arg1 = NULL; }
+ else if (SWIG_GetPtrObj(_argo1,(void **) &_arg1,"_wxSizer_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 2 of wxWindow_SetContainingSizer. Expected _wxSizer_p.");
+ return NULL;
+ }
+ }
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ wxWindow_SetContainingSizer(_arg0,_arg1);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+} Py_INCREF(Py_None);
+ _resultobj = Py_None;
+ return _resultobj;
+}
+
+#define wxWindow_GetContainingSizer(_swigobj) (_swigobj->GetContainingSizer())
+static PyObject *_wrap_wxWindow_GetContainingSizer(PyObject *self, PyObject *args, PyObject *kwargs) {
+ PyObject * _resultobj;
+ wxSizer * _result;
+ wxWindow * _arg0;
+ PyObject * _argo0 = 0;
+ char *_kwnames[] = { "self", NULL };
+
+ self = self;
+ if(!PyArg_ParseTupleAndKeywords(args,kwargs,"O:wxWindow_GetContainingSizer",_kwnames,&_argo0))
+ return NULL;
+ if (_argo0) {
+ if (_argo0 == Py_None) { _arg0 = NULL; }
+ else if (SWIG_GetPtrObj(_argo0,(void **) &_arg0,"_wxWindow_p")) {
+ PyErr_SetString(PyExc_TypeError,"Type error in argument 1 of wxWindow_GetContainingSizer. Expected _wxWindow_p.");
+ return NULL;
+ }
+ }
+{
+ PyThreadState* __tstate = wxPyBeginAllowThreads();
+ _result = (wxSizer *)wxWindow_GetContainingSizer(_arg0);
+
+ wxPyEndAllowThreads(__tstate);
+ if (PyErr_Occurred()) return NULL;
+}{ _resultobj = wxPyMake_wxSizer(_result); }
+ return _resultobj;
+}
+
#define wxWindow_GetValidator(_swigobj) (_swigobj->GetValidator())
static PyObject *_wrap_wxWindow_GetValidator(PyObject *self, PyObject *args, PyObject *kwargs) {
PyObject * _resultobj;
{ "wxWindow_SetDropTarget", (PyCFunction) _wrap_wxWindow_SetDropTarget, METH_VARARGS | METH_KEYWORDS },
{ "wxWindow_SetValidator", (PyCFunction) _wrap_wxWindow_SetValidator, METH_VARARGS | METH_KEYWORDS },
{ "wxWindow_GetValidator", (PyCFunction) _wrap_wxWindow_GetValidator, METH_VARARGS | METH_KEYWORDS },
+ { "wxWindow_GetContainingSizer", (PyCFunction) _wrap_wxWindow_GetContainingSizer, METH_VARARGS | METH_KEYWORDS },
+ { "wxWindow_SetContainingSizer", (PyCFunction) _wrap_wxWindow_SetContainingSizer, METH_VARARGS | METH_KEYWORDS },
{ "wxWindow_GetSizer", (PyCFunction) _wrap_wxWindow_GetSizer, METH_VARARGS | METH_KEYWORDS },
{ "wxWindow_SetSizer", (PyCFunction) _wrap_wxWindow_SetSizer, METH_VARARGS | METH_KEYWORDS },
{ "wxWindow_GetToolTip", (PyCFunction) _wrap_wxWindow_GetToolTip, METH_VARARGS | METH_KEYWORDS },
def GetSizer(self, *_args, **_kwargs):
val = apply(windowsc.wxWindow_GetSizer,(self,) + _args, _kwargs)
return val
+ def SetContainingSizer(self, *_args, **_kwargs):
+ val = apply(windowsc.wxWindow_SetContainingSizer,(self,) + _args, _kwargs)
+ return val
+ def GetContainingSizer(self, *_args, **_kwargs):
+ val = apply(windowsc.wxWindow_GetContainingSizer,(self,) + _args, _kwargs)
+ return val
def GetValidator(self, *_args, **_kwargs):
val = apply(windowsc.wxWindow_GetValidator,(self,) + _args, _kwargs)
return val
void SetSizer(wxSizer* sizer);
wxSizer* GetSizer();
+ // Track if this window is a member of a sizer
+ void SetContainingSizer(wxSizer* sizer) { m_containingSizer = sizer; }
+ wxSizer *GetContainingSizer() const { return m_containingSizer; }
+
wxValidator* GetValidator();
void SetValidator(const wxValidator& validator);