]>
Commit | Line | Data |
---|---|---|
bd6169a6 RR |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: dataview.cpp | |
3 | // Purpose: DataVewCtrl wxWidgets sample | |
4 | // Author: Robert Roebling | |
5 | // Modified by: | |
6 | // Created: 06/01/06 | |
7 | // RCS-ID: $Id$ | |
8 | // Copyright: (c) Robert Roebling | |
9 | // Licence: wxWindows license | |
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | ||
12 | // For compilers that support precompilation, includes "wx/wx.h". | |
13 | #include "wx/wxprec.h" | |
14 | ||
15 | #ifdef __BORLANDC__ | |
16 | #pragma hdrstop | |
17 | #endif | |
18 | ||
19 | #ifndef WX_PRECOMP | |
20 | #include "wx/wx.h" | |
21 | #endif | |
22 | ||
b910a8ad JS |
23 | #include "wx/datetime.h" |
24 | ||
bd6169a6 RR |
25 | #ifndef __WXMSW__ |
26 | #include "mondrian.xpm" | |
27 | #endif | |
28 | ||
362d7fb9 | 29 | #include "wx/dataview.h" |
bd6169a6 | 30 | |
362d7fb9 RR |
31 | // ------------------------------------- |
32 | // MyTextModel | |
33 | // ------------------------------------- | |
bd6169a6 | 34 | |
4d496ecb RR |
35 | WX_DECLARE_LIST(wxDateTime,wxArrayDate); |
36 | #include <wx/listimpl.cpp> | |
37 | WX_DEFINE_LIST(wxArrayDate); | |
38 | ||
362d7fb9 | 39 | class MyTextModel: public wxDataViewListModel |
bd6169a6 RR |
40 | { |
41 | public: | |
b910a8ad | 42 | MyTextModel() |
a7f61f76 RR |
43 | { |
44 | size_t i; | |
45 | for (i = 0; i < 1000; i++) | |
46 | m_list.Add( wxT("Test") ); | |
605c2c4a RR |
47 | for (i = 0; i < 500; i++) |
48 | { m_bools.Add( 0 ); m_bools.Add( 1 ); } | |
e152afc3 RR |
49 | for (i = 0; i < 500; i++) |
50 | { m_colours.Add( wxT("red") ); m_colours.Add( wxT("green") ); } | |
ad63bf41 RR |
51 | for (i = 0; i < 1000; i++) |
52 | { m_progress.Add( i/10 ); } | |
4d496ecb | 53 | for (i = 0; i < 1000; i++) |
b910a8ad | 54 | { |
4d496ecb | 55 | wxDateTime *date = new wxDateTime( wxDateTime::Now() ); |
b910a8ad | 56 | m_dates.Append( date ); |
4d496ecb | 57 | } |
a7f61f76 | 58 | } |
b910a8ad JS |
59 | |
60 | virtual size_t GetNumberOfRows() | |
362d7fb9 RR |
61 | { return 1000; } |
62 | virtual size_t GetNumberOfCols() | |
4d496ecb | 63 | { return 7; } |
b910a8ad | 64 | |
362d7fb9 RR |
65 | // as reported by wxVariant |
66 | virtual wxString GetColType( size_t col ) | |
605c2c4a | 67 | { |
4d496ecb RR |
68 | if (col == 6) |
69 | return wxT("datetime"); | |
b910a8ad | 70 | |
ad63bf41 RR |
71 | if (col == 5) |
72 | return wxT("long"); | |
b910a8ad | 73 | |
605c2c4a RR |
74 | if (col == 3) |
75 | return wxT("bool"); | |
b910a8ad JS |
76 | |
77 | return wxT("string"); | |
605c2c4a | 78 | } |
b910a8ad | 79 | |
3f3af7e7 | 80 | virtual void GetValue( wxVariant &variant, size_t col, size_t row ) |
605c2c4a | 81 | { |
4d496ecb RR |
82 | if (col == 6) |
83 | { | |
3f3af7e7 | 84 | variant = (wxDateTime) *m_dates[row]; |
4d496ecb | 85 | } else |
ad63bf41 | 86 | if (col == 5) |
605c2c4a | 87 | { |
3f3af7e7 | 88 | variant = (long) m_progress[row]; |
ad63bf41 | 89 | } else |
e152afc3 RR |
90 | if (col == 4) |
91 | { | |
3f3af7e7 | 92 | variant = m_colours[row]; |
ad63bf41 RR |
93 | } else |
94 | if (col == 3) | |
95 | { | |
3f3af7e7 | 96 | variant = (bool) m_bools[row]; |
b910a8ad | 97 | } else |
a7f61f76 RR |
98 | if (col == 2) |
99 | { | |
3f3af7e7 | 100 | variant = m_list[row]; |
a7f61f76 RR |
101 | } |
102 | else | |
103 | { | |
b910a8ad JS |
104 | wxString tmp; |
105 | tmp.Printf( wxT("item(%d;%d)"), (int)row, (int)col ); | |
3f3af7e7 | 106 | variant = tmp; |
a7f61f76 | 107 | } |
362d7fb9 | 108 | } |
a7f61f76 RR |
109 | virtual bool SetValue( wxVariant &value, size_t col, size_t row ) |
110 | { | |
4d496ecb RR |
111 | if (col == 6) |
112 | { | |
113 | *m_dates[row] = value.GetDateTime(); | |
114 | } else | |
605c2c4a RR |
115 | if (col == 3) |
116 | { | |
117 | m_bools[row] = (int) value.GetBool(); | |
118 | } else | |
a7f61f76 RR |
119 | if (col == 2) |
120 | { | |
121 | m_list[row] = value.GetString(); | |
122 | } | |
123 | return true; | |
124 | } | |
b910a8ad | 125 | |
a7f61f76 | 126 | wxArrayString m_list; |
605c2c4a | 127 | wxArrayInt m_bools; |
e152afc3 | 128 | wxArrayString m_colours; |
ad63bf41 | 129 | wxArrayInt m_progress; |
4d496ecb | 130 | wxArrayDate m_dates; |
e152afc3 RR |
131 | }; |
132 | ||
133 | // ------------------------------------- | |
134 | // MyCustomCell | |
135 | // ------------------------------------- | |
136 | ||
137 | class MyCustomCell: public wxDataViewCustomCell | |
138 | { | |
139 | public: | |
140 | MyCustomCell() : | |
b910a8ad JS |
141 | wxDataViewCustomCell( wxT("string"), wxDATAVIEW_CELL_ACTIVATABLE ) |
142 | { | |
143 | m_colour = wxT("black"); | |
e152afc3 RR |
144 | } |
145 | bool SetValue( const wxVariant &value ) | |
146 | { | |
147 | m_colour = value.GetString(); | |
148 | return true; | |
149 | } | |
f554a14b | 150 | bool Render( wxRect rect, wxDC *dc, int WXUNUSED(state) ) |
b910a8ad | 151 | { |
e152afc3 RR |
152 | dc->SetPen( *wxBLACK_PEN ); |
153 | if (m_colour == wxT("red")) | |
154 | dc->SetBrush( *wxRED_BRUSH ); | |
155 | else if (m_colour == wxT("green")) | |
156 | dc->SetBrush( *wxGREEN_BRUSH ); | |
b910a8ad | 157 | else |
e152afc3 RR |
158 | dc->SetBrush( *wxBLACK_BRUSH ); |
159 | dc->DrawRectangle( rect ); | |
160 | return true; | |
161 | } | |
162 | wxSize GetSize() | |
163 | { | |
164 | return wxSize(20,8); | |
165 | } | |
f554a14b WS |
166 | bool Activate( wxRect WXUNUSED(rect), |
167 | wxDataViewListModel *WXUNUSED(model), | |
168 | size_t WXUNUSED(col), | |
169 | size_t WXUNUSED(row) ) | |
553f7d8f | 170 | { |
553f7d8f RR |
171 | return false; |
172 | } | |
e152afc3 RR |
173 | |
174 | private: | |
b910a8ad | 175 | wxString m_colour; |
0313c114 | 176 | }; |
bd6169a6 | 177 | |
241cb04b RR |
178 | // ------------------------------------- |
179 | // MyUnsortedTextModel | |
180 | // ------------------------------------- | |
181 | ||
182 | class MyUnsortedTextModel: public wxDataViewListModel | |
183 | { | |
184 | public: | |
185 | MyUnsortedTextModel() | |
186 | { | |
187 | m_list.Add( wxT("This") ); | |
188 | m_list.Add( wxT("is") ); | |
189 | m_list.Add( wxT("an") ); | |
190 | m_list.Add( wxT("unsorted") ); | |
191 | m_list.Add( wxT("list") ); | |
192 | m_list.Add( wxT("of") ); | |
193 | m_list.Add( wxT("words.") ); | |
194 | } | |
195 | ||
196 | virtual size_t GetNumberOfRows() { return m_list.GetCount(); } | |
197 | virtual size_t GetNumberOfCols() { return 2; } | |
f554a14b | 198 | virtual wxString GetColType( size_t WXUNUSED(col) ) { return wxT("string"); } |
3f3af7e7 | 199 | virtual void GetValue( wxVariant &variant, size_t col, size_t row ) |
241cb04b RR |
200 | { |
201 | if (col == 0) | |
3f3af7e7 RR |
202 | { |
203 | variant = m_list[row]; | |
204 | return; | |
205 | } | |
241cb04b | 206 | wxString tmp; |
b910a8ad | 207 | tmp.Printf( wxT("item(%d;%d)"), (int)row, (int)col ); |
3f3af7e7 | 208 | variant = tmp; |
241cb04b RR |
209 | } |
210 | virtual bool SetValue( wxVariant &variant, size_t col, size_t row ) | |
211 | { | |
212 | if (col == 0) | |
213 | { | |
214 | m_list[row] = variant.GetString(); | |
215 | return true; | |
216 | } | |
217 | return false; | |
b910a8ad | 218 | |
241cb04b RR |
219 | } |
220 | ||
221 | wxArrayString m_list; | |
222 | }; | |
223 | ||
362d7fb9 RR |
224 | // ------------------------------------- |
225 | // MyApp | |
226 | // ------------------------------------- | |
bd6169a6 RR |
227 | |
228 | class MyApp: public wxApp | |
229 | { | |
230 | public: | |
231 | bool OnInit(void); | |
232 | }; | |
233 | ||
362d7fb9 RR |
234 | // ------------------------------------- |
235 | // MyFrame | |
236 | // ------------------------------------- | |
237 | ||
bd6169a6 RR |
238 | class MyFrame: public wxFrame |
239 | { | |
240 | public: | |
241 | MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h); | |
242 | ||
243 | public: | |
244 | void OnQuit(wxCommandEvent& event); | |
245 | void OnAbout(wxCommandEvent& event); | |
b910a8ad | 246 | |
bd6169a6 | 247 | private: |
a7f61f76 RR |
248 | wxDataViewCtrl* dataview_left; |
249 | wxDataViewCtrl* dataview_right; | |
bd6169a6 RR |
250 | }; |
251 | ||
241cb04b RR |
252 | // ------------------------------------- |
253 | // MySortingFrame | |
254 | // ------------------------------------- | |
255 | ||
abd6692c RR |
256 | enum my_events |
257 | { | |
258 | ID_APPEND_ROW_LEFT = 1000, | |
259 | ID_PREPEND_ROW_LEFT, | |
260 | ID_INSERT_ROW_LEFT, | |
261 | ID_DELETE_ROW_LEFT, | |
262 | ID_EDIT_ROW_LEFT, | |
b910a8ad | 263 | |
abd6692c RR |
264 | ID_APPEND_ROW_RIGHT, |
265 | ID_PREPEND_ROW_RIGHT, | |
266 | ID_INSERT_ROW_RIGHT, | |
267 | ID_DELETE_ROW_RIGHT, | |
268 | ID_EDIT_ROW_RIGHT | |
269 | }; | |
270 | ||
241cb04b RR |
271 | class MySortingFrame: public wxFrame |
272 | { | |
273 | public: | |
274 | MySortingFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h); | |
275 | ||
276 | public: | |
277 | void OnQuit(wxCommandEvent& event); | |
278 | void OnAbout(wxCommandEvent& event); | |
b910a8ad | 279 | |
abd6692c RR |
280 | void OnAppendRowLeft(wxCommandEvent& event); |
281 | void OnPrependRowLeft(wxCommandEvent& event); | |
282 | void OnInsertRowLeft(wxCommandEvent& event); | |
283 | void OnDeleteRowLeft(wxCommandEvent& event); | |
284 | void OnEditRowLeft(wxCommandEvent& event); | |
b910a8ad | 285 | |
abd6692c RR |
286 | void OnAppendRowRight(wxCommandEvent& event); |
287 | void OnPrependRowRight(wxCommandEvent& event); | |
288 | void OnInsertRowRight(wxCommandEvent& event); | |
289 | void OnDeleteRowRight(wxCommandEvent& event); | |
290 | void OnEditRowRight(wxCommandEvent& event); | |
b910a8ad | 291 | |
241cb04b RR |
292 | private: |
293 | wxDataViewCtrl* dataview_left; | |
294 | wxDataViewCtrl* dataview_right; | |
b910a8ad | 295 | |
abd6692c | 296 | DECLARE_EVENT_TABLE() |
241cb04b RR |
297 | }; |
298 | ||
362d7fb9 RR |
299 | // ------------------------------------- |
300 | // MyApp | |
301 | // ------------------------------------- | |
302 | ||
bd6169a6 RR |
303 | #define DYNAMIC_QUIT wxID_EXIT |
304 | #define DYNAMIC_ABOUT wxID_ABOUT | |
305 | ||
bd6169a6 RR |
306 | IMPLEMENT_APP (MyApp) |
307 | ||
bd6169a6 RR |
308 | bool MyApp::OnInit(void) |
309 | { | |
abd6692c | 310 | MyFrame *frame = new MyFrame(NULL, wxT("wxDataViewCtrl feature test"), 10, 10, 800, 340); |
bd6169a6 RR |
311 | frame->Show(true); |
312 | ||
abd6692c | 313 | MySortingFrame *frame2 = new MySortingFrame(NULL, wxT("wxDataViewCtrl sorting test"), 10, 350, 600, 300); |
241cb04b RR |
314 | frame2->Show(true); |
315 | ||
bd6169a6 RR |
316 | SetTopWindow(frame); |
317 | ||
318 | return true; | |
319 | } | |
320 | ||
321 | // ------------------------------------- | |
322 | // MyFrame | |
323 | // ------------------------------------- | |
324 | ||
bd6169a6 RR |
325 | MyFrame::MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h): |
326 | wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)) | |
327 | { | |
bd6169a6 RR |
328 | #ifdef __WXMSW__ |
329 | SetIcon(wxIcon(_T("mondrian"))); | |
330 | #else | |
331 | SetIcon(wxIcon(mondrian_xpm)); | |
332 | #endif | |
333 | ||
bd6169a6 RR |
334 | wxMenu *file_menu = new wxMenu; |
335 | ||
336 | file_menu->Append(DYNAMIC_ABOUT, _T("&About")); | |
337 | file_menu->Append(DYNAMIC_QUIT, _T("E&xit")); | |
338 | wxMenuBar *menu_bar = new wxMenuBar; | |
339 | menu_bar->Append(file_menu, _T("&File")); | |
340 | SetMenuBar(menu_bar); | |
341 | ||
342 | // You used to have to do some casting for param 4, but now there are type-safe handlers | |
343 | Connect( DYNAMIC_QUIT, wxID_ANY, | |
344 | wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyFrame::OnQuit) ); | |
345 | Connect( DYNAMIC_ABOUT, wxID_ANY, | |
346 | wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyFrame::OnAbout) ); | |
347 | ||
348 | CreateStatusBar(); | |
b910a8ad | 349 | |
b6339e0b RR |
350 | wxPanel *panel = new wxPanel( this, -1 ); |
351 | ||
b910a8ad | 352 | |
a7f61f76 | 353 | // Left wxDataViewCtrl |
b6339e0b | 354 | dataview_left = new wxDataViewCtrl( panel, wxID_ANY ); |
b910a8ad | 355 | |
362d7fb9 | 356 | MyTextModel *model = new MyTextModel; |
a7f61f76 | 357 | dataview_left->AssociateModel( model ); |
b910a8ad | 358 | |
605c2c4a RR |
359 | dataview_left->AppendTextColumn( wxT("first"), 0 ); |
360 | dataview_left->AppendTextColumn( wxT("second"), 1 ); | |
553f7d8f | 361 | |
605c2c4a RR |
362 | wxDataViewTextCell *text_cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE ); |
363 | wxDataViewColumn *column = new wxDataViewColumn( wxT("editable"), text_cell, 2 ); | |
a7f61f76 | 364 | dataview_left->AppendColumn( column ); |
b910a8ad | 365 | |
605c2c4a | 366 | dataview_left->AppendToggleColumn( wxT("fourth"), 3 ); |
b910a8ad | 367 | |
e152afc3 RR |
368 | MyCustomCell *custom_cell = new MyCustomCell; |
369 | column = new wxDataViewColumn( wxT("custom"), custom_cell, 4 ); | |
370 | dataview_left->AppendColumn( column ); | |
b910a8ad | 371 | |
ad63bf41 | 372 | dataview_left->AppendProgressColumn( wxT("progress"), 5 ); |
b910a8ad | 373 | |
4d496ecb | 374 | dataview_left->AppendDateColumn( wxT("date"), 6 ); |
b910a8ad | 375 | |
a7f61f76 | 376 | // Right wxDataViewCtrl using the same model |
b6339e0b | 377 | dataview_right = new wxDataViewCtrl( panel, wxID_ANY ); |
a7f61f76 | 378 | dataview_right->AssociateModel( model ); |
553f7d8f | 379 | |
605c2c4a RR |
380 | text_cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE ); |
381 | column = new wxDataViewColumn( wxT("editable"), text_cell, 2 ); | |
382 | dataview_right->AppendColumn( column ); | |
383 | dataview_right->AppendTextColumn( wxT("first"), 0 ); | |
384 | dataview_right->AppendTextColumn( wxT("second"), 1 ); | |
0fdc2321 | 385 | wxDataViewToggleCell *toggle_cell = new wxDataViewToggleCell( wxT("bool"), wxDATAVIEW_CELL_ACTIVATABLE ); |
533544f2 | 386 | column = new wxDataViewColumn( wxT("bool"), toggle_cell, 3, 30 ); |
a7f61f76 | 387 | dataview_right->AppendColumn( column ); |
553f7d8f | 388 | |
7ea3a0de | 389 | dataview_right->AppendDateColumn( wxT("date"), 6 ); |
b910a8ad | 390 | |
7ea3a0de | 391 | // layout dataview controls. |
b910a8ad | 392 | |
a7f61f76 | 393 | wxBoxSizer *sizer = new wxBoxSizer( wxHORIZONTAL ); |
4d496ecb | 394 | sizer->Add( dataview_left, 3, wxGROW ); |
a7f61f76 | 395 | sizer->Add(10,10); |
4d496ecb | 396 | sizer->Add( dataview_right, 2, wxGROW ); |
b6339e0b | 397 | panel->SetSizer( sizer ); |
bd6169a6 RR |
398 | } |
399 | ||
400 | void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) | |
401 | { | |
402 | Close(true); | |
403 | } | |
404 | ||
405 | void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) | |
406 | { | |
407 | wxMessageDialog dialog(this, _T("This demonstrates the dataview control handling"), | |
408 | _T("About DataView"), wxOK); | |
409 | ||
410 | dialog.ShowModal(); | |
411 | } | |
412 | ||
241cb04b RR |
413 | // ------------------------------------- |
414 | // MySortingFrame | |
415 | // ------------------------------------- | |
416 | ||
abd6692c RR |
417 | BEGIN_EVENT_TABLE(MySortingFrame,wxFrame) |
418 | EVT_BUTTON( ID_APPEND_ROW_LEFT, MySortingFrame::OnAppendRowLeft ) | |
419 | END_EVENT_TABLE() | |
420 | ||
241cb04b RR |
421 | MySortingFrame::MySortingFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h): |
422 | wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)) | |
423 | { | |
424 | #ifdef __WXMSW__ | |
425 | SetIcon(wxIcon(_T("mondrian"))); | |
426 | #else | |
427 | SetIcon(wxIcon(mondrian_xpm)); | |
428 | #endif | |
429 | ||
430 | wxMenu *file_menu = new wxMenu; | |
431 | ||
432 | file_menu->Append(DYNAMIC_ABOUT, _T("&About")); | |
433 | file_menu->Append(DYNAMIC_QUIT, _T("E&xit")); | |
434 | wxMenuBar *menu_bar = new wxMenuBar; | |
435 | menu_bar->Append(file_menu, _T("&File")); | |
436 | SetMenuBar(menu_bar); | |
437 | ||
438 | // You used to have to do some casting for param 4, but now there are type-safe handlers | |
439 | Connect( DYNAMIC_QUIT, wxID_ANY, | |
440 | wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MySortingFrame::OnQuit) ); | |
441 | Connect( DYNAMIC_ABOUT, wxID_ANY, | |
442 | wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MySortingFrame::OnAbout) ); | |
443 | ||
444 | CreateStatusBar(); | |
b910a8ad JS |
445 | |
446 | ||
241cb04b | 447 | // Left wxDataViewCtrl |
e21f75bd | 448 | dataview_left = new wxDataViewCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxDV_MULTIPLE ); |
241cb04b RR |
449 | |
450 | MyUnsortedTextModel *model = new MyUnsortedTextModel; | |
451 | dataview_left->AssociateModel( model ); | |
452 | wxDataViewTextCell *text_cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE ); | |
453 | wxDataViewColumn *column = new wxDataViewColumn( wxT("editable"), text_cell, 0 ); | |
454 | dataview_left->AppendColumn( column ); | |
455 | dataview_left->AppendTextColumn( wxT("second"), 1 ); | |
b910a8ad | 456 | |
241cb04b | 457 | // Right wxDataViewCtrl using the sorting model |
f554a14b | 458 | dataview_right = new wxDataViewCtrl( this, wxID_ANY ); |
b910a8ad | 459 | wxDataViewSortedListModel *sorted_model = |
241cb04b RR |
460 | new wxDataViewSortedListModel( model ); |
461 | dataview_right->AssociateModel( sorted_model ); | |
462 | text_cell = new wxDataViewTextCell( wxT("string"), wxDATAVIEW_CELL_EDITABLE ); | |
463 | column = new wxDataViewColumn( wxT("editable"), text_cell, 0 ); | |
464 | dataview_right->AppendColumn( column ); | |
465 | dataview_right->AppendTextColumn( wxT("second"), 1 ); | |
466 | ||
467 | // layout dataview controls. | |
b910a8ad | 468 | |
abd6692c RR |
469 | wxBoxSizer *top_sizer = new wxBoxSizer( wxHORIZONTAL ); |
470 | top_sizer->Add( dataview_left, 1, wxGROW ); | |
471 | top_sizer->Add(10,10); | |
472 | top_sizer->Add( dataview_right, 1, wxGROW ); | |
b910a8ad | 473 | |
abd6692c RR |
474 | wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL ); |
475 | button_sizer->Add( 10, 10, 1 ); | |
476 | wxFlexGridSizer *left_sizer = new wxFlexGridSizer( 2 ); | |
477 | left_sizer->Add( new wxButton( this, ID_APPEND_ROW_LEFT, wxT("Append") ), 0, wxALL, 5 ); | |
478 | left_sizer->Add( new wxButton( this, ID_PREPEND_ROW_LEFT, wxT("Prepend") ), 0, wxALL, 5 ); | |
479 | left_sizer->Add( new wxButton( this, ID_INSERT_ROW_LEFT, wxT("Insert") ), 0, wxALL, 5 ); | |
480 | left_sizer->Add( new wxButton( this, ID_DELETE_ROW_LEFT, wxT("Delete") ), 0, wxALL, 5 ); | |
481 | left_sizer->Add( new wxButton( this, ID_EDIT_ROW_LEFT, wxT("Edit") ), 0, wxALL, 5 ); | |
482 | button_sizer->Add( left_sizer ); | |
483 | button_sizer->Add( 10, 10, 2 ); | |
484 | wxFlexGridSizer *right_sizer = new wxFlexGridSizer( 2 ); | |
485 | right_sizer->Add( new wxButton( this, ID_APPEND_ROW_RIGHT, wxT("Append") ), 0, wxALL, 5 ); | |
486 | right_sizer->Add( new wxButton( this, ID_PREPEND_ROW_RIGHT, wxT("Prepend") ), 0, wxALL, 5 ); | |
487 | right_sizer->Add( new wxButton( this, ID_INSERT_ROW_RIGHT, wxT("Insert") ), 0, wxALL, 5 ); | |
488 | right_sizer->Add( new wxButton( this, ID_DELETE_ROW_RIGHT, wxT("Delete") ), 0, wxALL, 5 ); | |
489 | right_sizer->Add( new wxButton( this, ID_EDIT_ROW_RIGHT, wxT("Edit") ), 0, wxALL, 5 ); | |
490 | button_sizer->Add( right_sizer ); | |
491 | button_sizer->Add( 10, 10, 1 ); | |
b910a8ad | 492 | |
abd6692c RR |
493 | wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL ); |
494 | main_sizer->Add( top_sizer, 1, wxGROW ); | |
495 | main_sizer->Add( button_sizer, 0, wxGROW ); | |
b910a8ad | 496 | |
abd6692c | 497 | SetSizer( main_sizer ); |
241cb04b RR |
498 | } |
499 | ||
500 | void MySortingFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) | |
501 | { | |
502 | Close(true); | |
503 | } | |
504 | ||
505 | void MySortingFrame::OnAbout(wxCommandEvent& WXUNUSED(event) ) | |
506 | { | |
507 | wxMessageDialog dialog(this, _T("This demonstrates the dataview control sorting"), | |
508 | _T("About DataView"), wxOK); | |
509 | ||
510 | dialog.ShowModal(); | |
511 | } | |
bd6169a6 | 512 | |
f554a14b | 513 | void MySortingFrame::OnAppendRowLeft(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
514 | { |
515 | } | |
516 | ||
f554a14b | 517 | void MySortingFrame::OnPrependRowLeft(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
518 | { |
519 | } | |
520 | ||
f554a14b | 521 | void MySortingFrame::OnInsertRowLeft(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
522 | { |
523 | } | |
524 | ||
f554a14b | 525 | void MySortingFrame::OnDeleteRowLeft(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
526 | { |
527 | } | |
528 | ||
f554a14b | 529 | void MySortingFrame::OnEditRowLeft(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
530 | { |
531 | } | |
532 | ||
f554a14b | 533 | void MySortingFrame::OnAppendRowRight(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
534 | { |
535 | } | |
536 | ||
f554a14b | 537 | void MySortingFrame::OnPrependRowRight(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
538 | { |
539 | } | |
540 | ||
f554a14b | 541 | void MySortingFrame::OnInsertRowRight(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
542 | { |
543 | } | |
544 | ||
f554a14b | 545 | void MySortingFrame::OnDeleteRowRight(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
546 | { |
547 | } | |
548 | ||
f554a14b | 549 | void MySortingFrame::OnEditRowRight(wxCommandEvent& WXUNUSED(event)) |
abd6692c RR |
550 | { |
551 | } | |
552 |