]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/splitter.tex
define _HPUX_SOURCE under HP-UX, otherwise many things are not defined in standard...
[wxWidgets.git] / docs / latex / wx / splitter.tex
index 9283b69008d5056f1eb1c9707503d8ec12157699..6f18e2318139ec0f8eb32665f61c3ad54c5f9cb1 100644 (file)
@@ -6,20 +6,16 @@ This class manages up to two subwindows. The current view can be
 split into two programmatically (perhaps from a menu command), and unsplit
 either programmatically or via the wxSplitterWindow user interface.
 
 split into two programmatically (perhaps from a menu command), and unsplit
 either programmatically or via the wxSplitterWindow user interface.
 
-Appropriate 3D shading for the Windows 95 user interface is an option -
-this is also recommended for GTK. Optionally, the sash can be made to
-look more like the native control under MacOS X.
-
 \wxheading{Window styles}
 
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.}
 \twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.}
 \wxheading{Window styles}
 
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.}
 \twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.}
-\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Draws a 3D effect border.}
-\twocolitem{\windowstyle{wxSP\_FULLSASH}}{Draws the ends of the sash (so the window can be used without a border).}
-\twocolitem{\windowstyle{wxSP\_SASH\_AQUA}}{Draws a sash with an Aqua-like appearance.}
-\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a thin black border around the window.}
-\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border, and a black sash.}
+\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Synonym for wxSP\_BORDER.}
+\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a standard border.}
+\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border (default).}
+\twocolitem{\windowstyle{wxSP\_NO\_XP\_THEME}}{Under Windows XP, switches off the attempt to draw the
+splitter using Windows XP theming, so the borders and sash will take on the pre-XP look.}
 \twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to
 unsplit, even with the minimum pane size other than zero.}
 \twocolitem{\windowstyle{wxSP\_LIVE\_UPDATE}}{Don't draw XOR line but resize the child windows immediately.}
 \twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to
 unsplit, even with the minimum pane size other than zero.}
 \twocolitem{\windowstyle{wxSP\_LIVE\_UPDATE}}{Don't draw XOR line but resize the child windows immediately.}
@@ -56,7 +52,7 @@ it is set, or to prevent the change from taking place.
 Processes a wxEVT\_COMMAND\_SPLITTER\_SASH\_POS\_CHANGED event.}
 \twocolitem{{\bf EVT\_SPLITTER\_UNSPLIT(id, func)}}{The splitter has been just
 unsplit. Processes a wxEVT\_COMMAND\_SPLITTER\_UNSPLIT event.}
 Processes a wxEVT\_COMMAND\_SPLITTER\_SASH\_POS\_CHANGED event.}
 \twocolitem{{\bf EVT\_SPLITTER\_UNSPLIT(id, func)}}{The splitter has been just
 unsplit. Processes a wxEVT\_COMMAND\_SPLITTER\_UNSPLIT event.}
-\twocolitem{{\bf EVT\_SPLITTER\_DOUBLECLICKED(id, func)}}{The sash was double
+\twocolitem{{\bf EVT\_SPLITTER\_DCLICK(id, func)}}{The sash was double
 clicked. The default behaviour is to unsplit the window when this happens
 (unless the minimum pane size has been set to a value greater than zero).
 Processes a wxEVT\_COMMAND\_SPLITTER\_DOUBLECLICKED event.}
 clicked. The default behaviour is to unsplit the window when this happens
 (unless the minimum pane size has been set to a value greater than zero).
 Processes a wxEVT\_COMMAND\_SPLITTER\_DOUBLECLICKED event.}
@@ -68,7 +64,7 @@ Processes a wxEVT\_COMMAND\_SPLITTER\_DOUBLECLICKED event.}
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
 
 \latexignore{\rtfignore{\wxheading{Members}}}
 
-\membersection{wxSplitterWindow::wxSplitterWindow}\label{wxsplitterwindowconstr}
+\membersection{wxSplitterWindow::wxSplitterWindow}\label{wxsplitterwindowctor}
 
 \func{}{wxSplitterWindow}{\void}
 
 
 \func{}{wxSplitterWindow}{\void}
 
@@ -110,7 +106,7 @@ create and delete the second pane on demand.
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally},\rtfsp
 \helpref{wxSplitterWindow::Create}{wxsplitterwindowcreate}
 
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally},\rtfsp
 \helpref{wxSplitterWindow::Create}{wxsplitterwindowcreate}
 
-\membersection{wxSplitterWindow::\destruct{wxSplitterWindow}}
+\membersection{wxSplitterWindow::\destruct{wxSplitterWindow}}\label{wxsplitterwindowdtor}
 
 \func{}{\destruct{wxSplitterWindow}}{\void}
 
 
 \func{}{\destruct{wxSplitterWindow}}{\void}
 
@@ -118,11 +114,11 @@ Destroys the wxSplitterWindow and its children.
 
 \membersection{wxSplitterWindow::Create}\label{wxsplitterwindowcreate}
 
 
 \membersection{wxSplitterWindow::Create}\label{wxsplitterwindowcreate}
 
-\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id}, \param{int }{x},\rtfsp
+\func{bool}{Create}{\param{wxWindow*}{ parent}, \param{wxWindowID}{ id}, \rtfsp
 \param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp
 \param{long }{style=wxSP\_3D}, \param{const wxString\&}{ name = "splitterWindow"}}
 
 \param{const wxPoint\& }{point = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize},\rtfsp
 \param{long }{style=wxSP\_3D}, \param{const wxString\&}{ name = "splitterWindow"}}
 
-Creation function, for two-step construction. See \helpref{wxSplitterWindow::wxSplitterWindow}{wxsplitterwindowconstr} for
+Creation function, for two-step construction. See \helpref{wxSplitterWindow::wxSplitterWindow}{wxsplitterwindowctor} for
 details.
 
 \membersection{wxSplitterWindow::GetMinimumPaneSize}\label{wxsplitterwindowgetminimumpanesize}
 details.
 
 \membersection{wxSplitterWindow::GetMinimumPaneSize}\label{wxsplitterwindowgetminimumpanesize}
@@ -135,6 +131,16 @@ Returns the current minimum pane size (defaults to zero).
 
 \helpref{wxSplitterWindow::SetMinimumPaneSize}{wxsplitterwindowsetminimumpanesize}
 
 
 \helpref{wxSplitterWindow::SetMinimumPaneSize}{wxsplitterwindowsetminimumpanesize}
 
+\membersection{wxSplitterWindow::GetSashGravity}\label{wxsplitterwindowgetsashgravity}
+
+\func{double}{GetSashGravity}{\void}
+
+Returns the current sash gravity.
+
+\wxheading{See also}
+
+\helpref{wxSplitterWindow::SetSashGravity}{wxsplitterwindowsetsashgravity}
+
 \membersection{wxSplitterWindow::GetSashPosition}\label{wxsplitterwindowgetsashposition}
 
 \func{int}{GetSashPosition}{\void}
 \membersection{wxSplitterWindow::GetSashPosition}\label{wxsplitterwindowgetsashposition}
 
 \func{int}{GetSashPosition}{\void}
@@ -172,7 +178,8 @@ Returns the right/bottom pane.
 
 \func{void}{Initialize}{\param{wxWindow* }{window}}
 
 
 \func{void}{Initialize}{\param{wxWindow* }{window}}
 
-Initializes the splitter window to have one pane.
+Initializes the splitter window to have one pane.  The child window is
+shown if it is currently hidden.
 
 \wxheading{Parameters}
 
 
 \wxheading{Parameters}
 
@@ -191,7 +198,7 @@ This should be called if you wish to initially view only a single pane in the sp
 
 \constfunc{bool}{IsSplit}{\void}
 
 
 \constfunc{bool}{IsSplit}{\void}
 
-Returns TRUE if the window is split, FALSE otherwise.
+Returns true if the window is split, false otherwise.
 
 \membersection{wxSplitterWindow::OnDoubleClickSash}\label{wxsplitterwindowondoubleclicksash}
 
 
 \membersection{wxSplitterWindow::OnDoubleClickSash}\label{wxsplitterwindowondoubleclicksash}
 
@@ -236,7 +243,7 @@ may wish to delete the window.
 \func{virtual bool}{OnSashPositionChange}{\param{int }{newSashPosition}}
 
 Application-overridable function called when the sash position is changed by 
 \func{virtual bool}{OnSashPositionChange}{\param{int }{newSashPosition}}
 
 Application-overridable function called when the sash position is changed by 
-user. It may return FALSE to prevent the change or TRUE to allow it.
+user. It may return false to prevent the change or true to allow it.
 
 \wxheading{Parameters}
 
 
 \wxheading{Parameters}
 
@@ -259,8 +266,8 @@ windows or only one.
 
 Both parameters should be non-NULL and {\it winOld} must specify one of the
 windows managed by the splitter. If the parameters are incorrect or the window
 
 Both parameters should be non-NULL and {\it winOld} must specify one of the
 windows managed by the splitter. If the parameters are incorrect or the window
-couldn't be replaced, FALSE is returned. Otherwise the function will return
-TRUE, but please notice that it will not delete the replaced window and you
+couldn't be replaced, false is returned. Otherwise the function will return
+true, but please notice that it will not delete the replaced window and you
 may wish to do it yourself.
 
 \wxheading{See also}
 may wish to do it yourself.
 
 \wxheading{See also}
@@ -273,9 +280,40 @@ may wish to do it yourself.
 \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically}\\
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}
 
 \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically}\\
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}
 
+\membersection{wxSplitterWindow::SetSashGravity}\label{wxsplitterwindowsetsashgravity}
+
+\func{void}{SetSashGravity}{\param{double }{gravity}}
+
+Sets the sash gravity. 
+
+\wxheading{Parameters}
+
+\docparam{gravity}{The sash gravity. Value between 0.0 and 1.0.}
+
+
+\wxheading{Remarks}
+Gravity is real factor which controls position of sash while resizing wxSplitterWindow.
+Gravity tells wxSplitterWindow how much will left/top window grow while resizing.
+
+Example values:
+\begin{itemize}\itemsep=0pt
+\item{ 0.0  - only the bottom/right window is automatically resized}
+\item{ 0.5  - both windows grow by equal size}
+\item{ 1.0  - only left/top window grows}
+\end{itemize}
+
+Gravity should be a real value between 0.0 and 1.0.
+
+Default value of sash gravity is 0.0. That value is compatible with previous 
+(before gravity was introduced) behaviour of wxSplitterWindow.
+
+\wxheading{See also}
+
+\helpref{wxSplitterWindow::GetSashGravity}{wxsplitterwindowgetsashgravity}
+
 \membersection{wxSplitterWindow::SetSashPosition}\label{wxsplitterwindowsetsashposition}
 
 \membersection{wxSplitterWindow::SetSashPosition}\label{wxsplitterwindowsetsashposition}
 
-\func{void}{SetSashPosition}{\param{int }{position}, \param{const bool}{ redraw = TRUE}}
+\func{void}{SetSashPosition}{\param{int }{position}, \param{const bool}{ redraw = true}}
 
 Sets the sash position.
 
 
 Sets the sash position.
 
@@ -283,7 +321,7 @@ Sets the sash position.
 
 \docparam{position}{The sash position in pixels.}
 
 
 \docparam{position}{The sash position in pixels.}
 
-\docparam{redraw}{If TRUE, resizes the panes and redraws the sash and border.}
+\docparam{redraw}{If true, resizes the panes and redraws the sash and border.}
 
 \wxheading{Remarks}
 
 
 \wxheading{Remarks}
 
@@ -293,6 +331,15 @@ Does not currently check for an out-of-range value.
 
 \helpref{wxSplitterWindow::GetSashPosition}{wxsplitterwindowgetsashposition}
 
 
 \helpref{wxSplitterWindow::GetSashPosition}{wxsplitterwindowgetsashposition}
 
+\membersection{wxSplitterWindow::SetSashSize}\label{wxsplitterwindowsetsashsize}
+
+\func{void}{SetSashSize}{\param{int }{size}}
+
+Sets the sash size. Normally, the sash size is determined according to the metrics
+of each platform, but the application can override this, for example to show
+a thin sash that the user is not expected to drag. If {\it size} is more -1,
+the custom sash size will be used.
+
 \membersection{wxSplitterWindow::SetMinimumPaneSize}\label{wxsplitterwindowsetminimumpanesize}
 
 \func{void}{SetMinimumPaneSize}{\param{int }{paneSize}}
 \membersection{wxSplitterWindow::SetMinimumPaneSize}\label{wxsplitterwindowsetminimumpanesize}
 
 \func{void}{SetMinimumPaneSize}{\param{int }{paneSize}}
@@ -339,7 +386,8 @@ Only sets the internal variable; does not update the display.
 \func{bool}{SplitHorizontally}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
  \param{int}{ sashPosition = 0}}
 
 \func{bool}{SplitHorizontally}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
  \param{int}{ sashPosition = 0}}
 
-Initializes the top and bottom panes of the splitter window.
+Initializes the top and bottom panes of the splitter window.  The
+child windows are shown if they are currently hidden.
 
 \wxheading{Parameters}
 
 
 \wxheading{Parameters}
 
@@ -348,13 +396,13 @@ Initializes the top and bottom panes of the splitter window.
 \docparam{window2}{The bottom pane.}
 
 \docparam{sashPosition}{The initial position of the sash. If this value is
 \docparam{window2}{The bottom pane.}
 
 \docparam{sashPosition}{The initial position of the sash. If this value is
-positive, it specifies the size of the upper pane. If it is negative, it is
+positive, it specifies the size of the upper pane. If it is negative, its
 absolute value gives the size of the lower pane. Finally, specify 0 (default)
 to choose the default position (half of the total window height).}
 
 \wxheading{Return value}
 
 absolute value gives the size of the lower pane. Finally, specify 0 (default)
 to choose the default position (half of the total window height).}
 
 \wxheading{Return value}
 
-TRUE if successful, FALSE otherwise (the window was already split).
+true if successful, false otherwise (the window was already split).
 
 \wxheading{Remarks}
 
 
 \wxheading{Remarks}
 
@@ -372,7 +420,8 @@ window is not currently split using \helpref{IsSplit}{wxsplitterwindowissplit}.
 \func{bool}{SplitVertically}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
  \param{int}{ sashPosition = 0}}
 
 \func{bool}{SplitVertically}{\param{wxWindow* }{window1}, \param{wxWindow* }{window2},
  \param{int}{ sashPosition = 0}}
 
-Initializes the left and right panes of the splitter window.
+Initializes the left and right panes of the splitter window.  The
+child windows are shown if they are currently hidden.
 
 \wxheading{Parameters}
 
 
 \wxheading{Parameters}
 
@@ -387,7 +436,7 @@ to choose the default position (half of the total window width).}
 
 \wxheading{Return value}
 
 
 \wxheading{Return value}
 
-TRUE if successful, FALSE otherwise (the window was already split).
+true if successful, false otherwise (the window was already split).
 
 \wxheading{Remarks}
 
 
 \wxheading{Remarks}
 
@@ -411,7 +460,7 @@ Unsplits the window.
 
 \wxheading{Return value}
 
 
 \wxheading{Return value}
 
-TRUE if successful, FALSE otherwise (the window was not split).
+true if successful, false otherwise (the window was not split).
 
 \wxheading{Remarks}
 
 
 \wxheading{Remarks}
 
@@ -423,3 +472,17 @@ which can be overridden for the desired behaviour. By default, the pane being re
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp
 \helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit}, \helpref{wxSplitterWindow::OnUnsplit}{wxsplitterwindowonunsplit}
 
 \helpref{wxSplitterWindow::SplitHorizontally}{wxsplitterwindowsplithorizontally}, \helpref{wxSplitterWindow::SplitVertically}{wxsplitterwindowsplitvertically},\rtfsp
 \helpref{wxSplitterWindow::IsSplit}{wxsplitterwindowissplit}, \helpref{wxSplitterWindow::OnUnsplit}{wxsplitterwindowonunsplit}
 
+\membersection{wxSplitterWindow::UpdateSize}\label{wxsplitterwindowupdatesize}
+
+\func{void}{UpdateSize}{\void}
+
+Causes any pending sizing of the sash and child panes to take place
+immediately.
+
+Such resizing normally takes place in idle time, in order
+to wait for layout to be completed. However, this can cause
+unacceptable flicker as the panes are resized after the window has been
+shown. To work around this, you can perform window layout (for
+example by sending a size event to the parent window), and then
+call this function, before showing the top-level window.
+