]> git.saurik.com Git - wxWidgets.git/blob - utils/wxPython/src/windows2.i
wxString::Truncates() now doesn't change the sharied copies of the string
[wxWidgets.git] / utils / wxPython / src / windows2.i
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: windows2.i
3 // Purpose: SWIG definitions of MORE window classes
4 //
5 // Author: Robin Dunn
6 //
7 // Created: 6/2/98
8 // RCS-ID: $Id$
9 // Copyright: (c) 1998 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
12
13 %module windows2
14
15 %{
16 #include "helpers.h"
17 #include <wx/grid.h>
18 #include <wx/notebook.h>
19 #include <wx/splitter.h>
20 #ifdef __WXMSW__
21 #include <wx/msw/taskbar.h>
22 #endif
23 %}
24
25 //----------------------------------------------------------------------
26
27 %include typemaps.i
28 %include my_typemaps.i
29
30 // Import some definitions of other classes, etc.
31 %import _defs.i
32 %import misc.i
33 %import gdi.i
34 %import windows.i
35 %import controls.i
36 %import events.i
37
38 %pragma(python) code = "import wx"
39
40 //---------------------------------------------------------------------------
41
42
43 enum {
44 wxGRID_TEXT_CTRL,
45 wxGRID_HSCROLL,
46 wxGRID_VSCROLL
47 };
48
49 class wxGridCell {
50 public:
51 wxGridCell();
52 ~wxGridCell();
53
54 wxString& GetTextValue();
55 void SetTextValue(const wxString& str);
56 wxFont& GetFont();
57 void SetFont(wxFont& f);
58 wxColour& GetTextColour();
59 void SetTextColour(const wxColour& colour);
60 wxColour& GetBackgroundColour();
61 void SetBackgroundColour(const wxColour& colour);
62 wxBrush& GetBackgroundBrush();
63 int GetAlignment();
64 void SetAlignment(int align);
65 wxBitmap* GetCellBitmap();
66 void SetCellBitmap(wxBitmap* bitmap);
67 };
68
69
70
71
72 class wxGrid : public wxPanel {
73 public:
74 wxGrid(wxWindow* parent, wxWindowID id,
75 const wxPoint& pos=wxPyDefaultPosition,
76 const wxSize& size=wxPyDefaultSize,
77 long style=0,
78 char* name="grid");
79
80 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
81 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnSelectCell', wxEVT_GRID_SELECT_CELL)"
82 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCreateCell', wxEVT_GRID_CREATE_CELL)"
83 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnChangeLabels', wxEVT_GRID_CHANGE_LABELS)"
84 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnChangeSelectionLabel', wxEVT_GRID_CHANGE_SEL_LABEL)"
85 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellChange', wxEVT_GRID_CELL_CHANGE)"
86 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellLeftClick', wxEVT_GRID_CELL_LCLICK)"
87 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnCellRightClick', wxEVT_GRID_CELL_RCLICK)"
88 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLabelLeftClick', wxEVT_GRID_LABEL_LCLICK)"
89 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLabelRightClick', wxEVT_GRID_LABEL_RCLICK)"
90
91
92 void AdjustScrollbars();
93 bool AppendCols(int n=1, bool updateLabels=TRUE);
94 bool AppendRows(int n=1, bool updateLabels=TRUE);
95 void BeginBatch();
96 bool CellHitTest(int x, int y, int *OUTPUT, int *OUTPUT);
97
98 %addmethods {
99 // TODO: For now we are just ignoring the initial cellValues
100 // and widths. Add support for loading them from
101 // Python sequence objects.
102 bool CreateGrid(int rows, int cols,
103 //PyObject* cellValues = NULL,
104 //PyObject* widths = NULL,
105 short defaultWidth = wxGRID_DEFAULT_CELL_WIDTH,
106 short defaultHeight = wxGRID_DEFAULT_CELL_HEIGHT) {
107 return self->CreateGrid(rows, cols, NULL, NULL,
108 defaultWidth, defaultHeight);
109 }
110 }
111
112 bool CurrentCellVisible();
113 bool DeleteCols(int pos=0, int n=1, bool updateLabels=TRUE);
114 bool DeleteRows(int pos=0, int n=1, bool updateLabels=TRUE);
115 void EndBatch();
116
117 int GetBatchCount();
118 wxGridCell* GetCell(int row, int col);
119 int GetCellAlignment(int row, int col);
120 %name(GetDefCellAlignment)int GetCellAlignment();
121 wxColour& GetCellBackgroundColour(int row, int col);
122 %name(GetDefCellBackgroundColour)
123 wxColour& GetCellBackgroundColour();
124 //wxGridCell *** GetCells();
125 wxColour& GetCellTextColour(int row, int col);
126 %name(GetDefCellTextColour)wxColour& GetCellTextColour();
127 wxFont& GetCellTextFont(int row, int col);
128 %name(GetDefCellTextFont)wxFont& GetCellTextFont();
129 wxString& GetCellValue(int row, int col);
130 int GetCols();
131 int GetColumnWidth(int col);
132 wxRect& GetCurrentRect();
133 int GetCursorColumn();
134 int GetCursorRow();
135 bool GetEditable();
136 wxScrollBar * GetHorizScrollBar();
137 int GetLabelAlignment(int orientation);
138 wxColour& GetLabelBackgroundColour();
139 int GetLabelSize(int orientation);
140 wxColour& GetLabelTextColour();
141 wxFont& GetLabelTextFont();
142 wxString& GetLabelValue(int orientation, int pos);
143 int GetRowHeight(int row);
144 int GetRows();
145 int GetScrollPosX();
146 int GetScrollPosY();
147 wxTextCtrl* GetTextItem();
148 wxScrollBar* GetVertScrollBar();
149
150 bool InsertCols(int pos=0, int n=1, bool updateLabels=TRUE);
151 bool InsertRows(int pos=0, int n=1, bool updateLabels=TRUE);
152
153 void OnActivate(bool active);
154
155 void SetCellAlignment(int alignment, int row, int col);
156 %name(SetDefCellAlignment)void SetCellAlignment(int alignment);
157 void SetCellBackgroundColour(const wxColour& colour, int row, int col);
158 %name(SetDefCellBackgroundColour)
159 void SetCellBackgroundColour(const wxColour& colour);
160 void SetCellTextColour(const wxColour& colour, int row, int col);
161 %name(SetDefCellTextColour)void SetCellTextColour(const wxColour& colour);
162 void SetCellTextFont(wxFont& font, int row, int col);
163 %name(SetDefCellTextFont)void SetCellTextFont(wxFont& font);
164 void SetCellValue(const wxString& val, int row, int col);
165 void SetColumnWidth(int col, int width);
166 void SetDividerPen(wxPen& pen);
167 void SetEditable(bool editable);
168 void SetGridCursor(int row, int col);
169 void SetLabelAlignment(int orientation, int alignment);
170 void SetLabelBackgroundColour(const wxColour& value);
171 void SetLabelSize(int orientation, int size);
172 void SetLabelTextColour(const wxColour& value);
173 void SetLabelTextFont(wxFont& font);
174 void SetLabelValue(int orientation, const wxString& value, int pos);
175 void SetRowHeight(int row, int height);
176
177 void UpdateDimensions();
178 };
179
180
181 class wxGridEvent : public wxEvent {
182 public:
183 int m_row;
184 int m_col;
185 int m_x;
186 int m_y;
187 bool m_control;
188 bool m_shift;
189 wxGridCell* m_cell;
190 };
191
192
193 enum {
194 wxEVT_GRID_SELECT_CELL,
195 wxEVT_GRID_CREATE_CELL,
196 wxEVT_GRID_CHANGE_LABELS,
197 wxEVT_GRID_CHANGE_SEL_LABEL,
198 wxEVT_GRID_CELL_CHANGE,
199 wxEVT_GRID_CELL_LCLICK,
200 wxEVT_GRID_CELL_RCLICK,
201 wxEVT_GRID_LABEL_LCLICK,
202 wxEVT_GRID_LABEL_RCLICK,
203 };
204
205
206 //---------------------------------------------------------------------------
207
208 class wxNotebookEvent : public wxCommandEvent {
209 public:
210 int GetSelection();
211 int GetOldSelection();
212 };
213
214
215
216 class wxNotebook : public wxControl {
217 public:
218 wxNotebook(wxWindow *parent,
219 wxWindowID id,
220 const wxPoint& pos = wxPyDefaultPosition,
221 const wxSize& size = wxPyDefaultSize,
222 long style = 0,
223 char* name = "notebook");
224
225 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
226
227 int GetPageCount();
228 int SetSelection(int nPage);
229 void AdvanceSelection(bool bForward = TRUE);
230 int GetSelection();
231 bool SetPageText(int nPage, const wxString& strText);
232 wxString GetPageText(int nPage) const;
233 void SetImageList(wxImageList* imageList);
234 wxImageList* GetImageList();
235 int GetPageImage(int nPage);
236 bool SetPageImage(int nPage, int nImage);
237 int GetRowCount();
238
239 // LINK ERROR: void SetPageSize(const wxSize& size);
240 // LINK ERROR: void SetPadding(const wxSize& padding);
241 bool DeletePage(int nPage);
242 bool DeleteAllPages();
243 bool AddPage(/*wxNotebookPage*/ wxWindow *pPage,
244 const wxString& strText,
245 bool bSelect = FALSE,
246 int imageId = -1);
247 #ifdef __WXMSW__
248 bool InsertPage(int nPage,
249 /*wxNotebookPage*/ wxWindow *pPage,
250 const wxString& strText,
251 bool bSelect = FALSE,
252 int imageId = -1);
253 #endif
254 wxNotebookPage *GetPage(int nPage);
255
256 };
257
258 //---------------------------------------------------------------------------
259
260 class wxSplitterWindow : public wxWindow {
261 public:
262 wxSplitterWindow(wxWindow* parent, wxWindowID id,
263 const wxPoint& point = wxPyDefaultPosition,
264 const wxSize& size = wxPyDefaultSize,
265 long style=wxSP_3D|wxCLIP_CHILDREN,
266 char* name = "splitterWindow");
267
268 %pragma(python) addtomethod = "__init__:wx._StdWindowCallbacks(self)"
269
270 int GetBorderSize();
271 int GetMinimumPaneSize();
272 int GetSashPosition();
273 int GetSashSize();
274 int GetSplitMode();
275 wxWindow* GetWindow1();
276 wxWindow* GetWindow2();
277 void Initialize(wxWindow* window);
278 bool IsSplit();
279
280 // TODO: How to handle callbacks that don't come from
281 // event system???
282 //
283 //void OnDoubleClickSash(int x, int y);
284 //bool OnSashPositionChange(int newSashPosition);
285 //void OnUnsplit(wxWindow* removed);
286
287 void SetBorderSize(int width);
288 void SetSashPosition(int position, int redraw = TRUE);
289 void SetSashSize(int width);
290 void SetMinimumPaneSize(int paneSize);
291 void SetSplitMode(int mode);
292 bool SplitHorizontally(wxWindow* window1, wxWindow* window2, int sashPosition = 0);
293 bool SplitVertically(wxWindow* window1, wxWindow* window2, int sashPosition = 0);
294 bool Unsplit(wxWindow* toRemove = NULL);
295 };
296
297 //---------------------------------------------------------------------------
298
299 #ifdef __WXMSW__
300
301 enum {
302 wxEVT_TASKBAR_MOVE,
303 wxEVT_TASKBAR_LEFT_DOWN,
304 wxEVT_TASKBAR_LEFT_UP,
305 wxEVT_TASKBAR_RIGHT_DOWN,
306 wxEVT_TASKBAR_RIGHT_UP,
307 wxEVT_TASKBAR_LEFT_DCLICK,
308 wxEVT_TASKBAR_RIGHT_DCLICK
309 };
310
311
312 class wxTaskBarIcon : public wxEvtHandler {
313 public:
314 wxTaskBarIcon();
315 ~wxTaskBarIcon();
316
317 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnMouseMove', wxEVT_TASKBAR_MOVE)"
318 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonDown', wxEVT_TASKBAR_LEFT_DOWN)"
319 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonUp', wxEVT_TASKBAR_LEFT_UP)"
320 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonDown', wxEVT_TASKBAR_RIGHT_DOWN)"
321 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonUp', wxEVT_TASKBAR_RIGHT_UP)"
322 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnLButtonDClick',wxEVT_TASKBAR_LEFT_DCLICK)"
323 %pragma(python) addtomethod = "__init__:wx._checkForCallback(self, 'OnRButtonDClick',wxEVT_TASKBAR_RIGHT_DCLICK)"
324
325 bool SetIcon(const wxIcon& icon, const char* tooltip = "");
326 bool RemoveIcon(void);
327 bool PopupMenu(wxMenu *menu);
328
329 };
330 #endif
331
332 //---------------------------------------------------------------------------
333 /////////////////////////////////////////////////////////////////////////////
334 //
335 // $Log$
336 // Revision 1.8 1998/12/17 18:05:53 RD
337 // wxPython 0.5.2
338 // Minor fixes and SWIG code generation for RR's changes. MSW and GTK
339 // versions are much closer now!
340 //
341 // Revision 1.7 1998/12/15 20:41:25 RD
342 // Changed the import semantics from "from wxPython import *" to "from
343 // wxPython.wx import *" This is for people who are worried about
344 // namespace pollution, they can use "from wxPython import wx" and then
345 // prefix all the wxPython identifiers with "wx."
346 //
347 // Added wxTaskbarIcon for wxMSW.
348 //
349 // Made the events work for wxGrid.
350 //
351 // Added wxConfig.
352 //
353 // Added wxMiniFrame for wxGTK, (untested.)
354 //
355 // Changed many of the args and return values that were pointers to gdi
356 // objects to references to reflect changes in the wxWindows API.
357 //
358 // Other assorted fixes and additions.
359 //
360 // Revision 1.6 1998/11/25 08:45:28 RD
361 //
362 // Added wxPalette, wxRegion, wxRegionIterator, wxTaskbarIcon
363 // Added events for wxGrid
364 // Other various fixes and additions
365 //
366 // Revision 1.5 1998/11/03 09:21:57 RD
367 // fixed a typo
368 //
369 // Revision 1.4 1998/10/02 06:40:43 RD
370 //
371 // Version 0.4 of wxPython for MSW.
372 //
373 // Revision 1.3 1998/08/18 19:48:20 RD
374 // more wxGTK compatibility things.
375 //
376 // It builds now but there are serious runtime problems...
377 //
378 // Revision 1.2 1998/08/15 07:36:50 RD
379 // - Moved the header in the .i files out of the code that gets put into
380 // the .cpp files. It caused CVS conflicts because of the RCS ID being
381 // different each time.
382 //
383 // - A few minor fixes.
384 //
385 // Revision 1.1 1998/08/09 08:25:52 RD
386 // Initial version
387 //
388 //