]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/sashwin.h
general docview.cpp code cleanup; use wxVector<> instead of manually-allocated arrays...
[wxWidgets.git] / interface / wx / sashwin.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: sashwin.h
3 // Purpose: interface of wxSashWindow
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxSashWindow
11
12 wxSashWindow allows any of its edges to have a sash which can be dragged
13 to resize the window. The actual content window will be created by the
14 application
15 as a child of wxSashWindow. The window (or an ancestor) will be notified of a
16 drag
17 via a wxSashEvent notification.
18
19 @beginStyleTable
20 @style{wxSW_3D}
21 Draws a 3D effect sash and border.
22 @style{wxSW_3DSASH}
23 Draws a 3D effect sash.
24 @style{wxSW_3DBORDER}
25 Draws a 3D effect border.
26 @style{wxSW_BORDER}
27 Draws a thin black border.
28 @endStyleTable
29
30 @beginEventTable{wxSashEvent}
31 @event{EVT_SASH_DRAGGED(id, func)}
32 Process a wxEVT_SASH_DRAGGED event, when the user has finished
33 dragging a sash.
34 @event{EVT_SASH_DRAGGED_RANGE(id1, id2, func)}
35 Process a wxEVT_SASH_DRAGGED_RANGE event, when the user has
36 finished dragging a sash. The event handler is called when windows
37 with ids in the given range have their sashes dragged.
38 @endEventTable
39
40 @library{wxadv}
41 @category{miscwnd}
42
43 @see wxSashEvent, wxSashLayoutWindow, @ref overview_eventhandling
44 */
45 class wxSashWindow : public wxWindow
46 {
47 public:
48 //@{
49 /**
50 Constructs a sash window, which can be a child of a frame, dialog or any other
51 non-control window.
52
53 @param parent
54 Pointer to a parent window.
55 @param id
56 Window identifier. If -1, will automatically create an identifier.
57 @param pos
58 Window position. wxDefaultPosition is (-1, -1) which indicates that
59 wxSashWindows
60 should generate a default position for the window. If using the
61 wxSashWindow class directly, supply
62 an actual position.
63 @param size
64 Window size. wxDefaultSize is (-1, -1) which indicates that wxSashWindows
65 should generate a default size for the window.
66 @param style
67 Window style. For window styles, please see wxSashWindow.
68 @param name
69 Window name.
70 */
71 wxSashWindow();
72 wxSashWindow(wxWindow* parent, wxWindowID id,
73 const wxPoint& pos = wxDefaultPosition,
74 const wxSize& size = wxDefaultSize,
75 long style = wxCLIP_CHILDREN | wxSW_3D,
76 const wxString& name = "sashWindow");
77 //@}
78
79 /**
80 Destructor.
81 */
82 ~wxSashWindow();
83
84 /**
85 Gets the maximum window size in the x direction.
86 */
87 int GetMaximumSizeX() const;
88
89 /**
90 Gets the maximum window size in the y direction.
91 */
92 int GetMaximumSizeY() const;
93
94 /**
95 Gets the minimum window size in the x direction.
96 */
97 int GetMinimumSizeX();
98
99 /**
100 Gets the minimum window size in the y direction.
101 */
102 int GetMinimumSizeY() const;
103
104 /**
105 Returns @true if a sash is visible on the given edge, @false otherwise.
106
107 @param edge
108 Edge. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
109
110 @see SetSashVisible()
111 */
112 bool GetSashVisible(wxSashEdgePosition edge) const;
113
114 /**
115 Returns @true if the sash has a border, @false otherwise.
116 This function is obsolete since the sash border property is unused.
117
118 @param edge
119 Edge. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
120
121 @see SetSashBorder()
122 */
123 bool HasBorder(wxSashEdgePosition edge) const;
124
125 /**
126 Sets the maximum window size in the x direction.
127 */
128 void SetMaximumSizeX(int min);
129
130 /**
131 Sets the maximum window size in the y direction.
132 */
133 void SetMaximumSizeY(int min);
134
135 /**
136 Sets the minimum window size in the x direction.
137 */
138 void SetMinimumSizeX(int min);
139
140 /**
141 Sets the minimum window size in the y direction.
142 */
143 void SetMinimumSizeY(int min);
144
145 /**
146 Call this function to give the sash a border, or remove the border.
147 This function is obsolete since the sash border property is unused.
148
149 @param edge
150 Edge to change. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
151 @param hasBorder
152 @true to give the sash a border visible, @false to remove it.
153 */
154 void SetSashBorder(wxSashEdgePosition edge, bool hasBorder);
155
156 /**
157 Call this function to make a sash visible or invisible on a particular edge.
158
159 @param edge
160 Edge to change. One of wxSASH_TOP, wxSASH_RIGHT, wxSASH_BOTTOM, wxSASH_LEFT.
161 @param visible
162 @true to make the sash visible, @false to make it invisible.
163
164 @see GetSashVisible()
165 */
166 void SetSashVisible(wxSashEdgePosition edge, bool visible);
167 };
168
169
170
171 /**
172 @class wxSashEvent
173
174 A sash event is sent when the sash of a wxSashWindow has been
175 dragged by the user.
176
177 @library{wxadv}
178 @category{FIXME}
179
180 @see wxSashWindow, @ref overview_eventhandlingoverview
181 */
182 class wxSashEvent : public wxCommandEvent
183 {
184 public:
185 /**
186 Constructor.
187 */
188 wxSashEvent(int id = 0, wxSashEdgePosition edge = wxSASH_NONE);
189
190 /**
191 Returns the rectangle representing the new size the window would be if the
192 resize was applied. It is
193 up to the application to set the window size if required.
194 */
195 wxRect GetDragRect() const;
196
197 /**
198 Returns the status of the sash: one of wxSASH_STATUS_OK,
199 wxSASH_STATUS_OUT_OF_RANGE.
200 If the drag caused the notional bounding box of the window to flip over, for
201 example, the drag will be out of rage.
202 */
203 wxSashDragStatus GetDragStatus() const;
204
205 /**
206 Returns the dragged edge. The return value is one of wxSASH_TOP, wxSASH_RIGHT,
207 wxSASH_BOTTOM, wxSASH_LEFT.
208 */
209 wxSashEdgePosition GetEdge() const;
210 };
211