]> git.saurik.com Git - wxWidgets.git/blob - samples/dataview/dataview.cpp
Updated wxDataViewCtrl sample
[wxWidgets.git] / samples / dataview / dataview.cpp
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
23 #ifndef __WXMSW__
24 #include "mondrian.xpm"
25 #endif
26
27 #include "wx/dataview.h"
28
29 // -------------------------------------
30 // MyTextModel
31 // -------------------------------------
32
33 class MyTextModel: public wxDataViewListModel
34 {
35 public:
36 MyTextModel() {}
37
38 virtual size_t GetNumberOfRows()
39 { return 1000; }
40 virtual size_t GetNumberOfCols()
41 { return 3; }
42 // as reported by wxVariant
43 virtual wxString GetColType( size_t col )
44 { return wxT("string"); }
45 virtual wxVariant GetValue( size_t col, size_t row )
46 { wxString tmp;
47 tmp.Printf( wxT("item(%d;%d)"), (int)row, (int)col );
48 return tmp;
49 }
50 }
51
52 // -------------------------------------
53 // MyApp
54 // -------------------------------------
55
56 class MyApp: public wxApp
57 {
58 public:
59 bool OnInit(void);
60 };
61
62 // -------------------------------------
63 // MyFrame
64 // -------------------------------------
65
66 class MyFrame: public wxFrame
67 {
68 public:
69 MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h);
70
71 public:
72 void OnQuit(wxCommandEvent& event);
73 void OnAbout(wxCommandEvent& event);
74
75 private:
76 wxDataViewCtrl* dataview;
77 };
78
79 // -------------------------------------
80 // MyApp
81 // -------------------------------------
82
83 #define DYNAMIC_QUIT wxID_EXIT
84 #define DYNAMIC_ABOUT wxID_ABOUT
85
86 IMPLEMENT_APP (MyApp)
87
88 bool MyApp::OnInit(void)
89 {
90 MyFrame *frame = new MyFrame(NULL, _T("Dynamic wxWidgets App"), 50, 50, 450, 340);
91
92 frame->Show(true);
93
94 SetTopWindow(frame);
95
96 return true;
97 }
98
99 // -------------------------------------
100 // MyFrame
101 // -------------------------------------
102
103 MyFrame::MyFrame(wxFrame *frame, wxChar *title, int x, int y, int w, int h):
104 wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
105 {
106 #ifdef __WXMSW__
107 SetIcon(wxIcon(_T("mondrian")));
108 #else
109 SetIcon(wxIcon(mondrian_xpm));
110 #endif
111
112 wxMenu *file_menu = new wxMenu;
113
114 file_menu->Append(DYNAMIC_ABOUT, _T("&About"));
115 file_menu->Append(DYNAMIC_QUIT, _T("E&xit"));
116 wxMenuBar *menu_bar = new wxMenuBar;
117 menu_bar->Append(file_menu, _T("&File"));
118 SetMenuBar(menu_bar);
119
120 // You used to have to do some casting for param 4, but now there are type-safe handlers
121 Connect( DYNAMIC_QUIT, wxID_ANY,
122 wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyFrame::OnQuit) );
123 Connect( DYNAMIC_ABOUT, wxID_ANY,
124 wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(MyFrame::OnAbout) );
125
126 CreateStatusBar();
127
128
129 dataview = new wxDataViewCtrl( this, -1 );
130 dataview->AppendStringColumn( wxT("first") );
131 dataview->AppendStringColumn( wxT("second") );
132 dataview->AppendStringColumn( wxT("third") );
133
134 MyTextModel *model = new MyTextModel;
135 dataview->AssociateModel( Model );
136 }
137
138 void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) )
139 {
140 Close(true);
141 }
142
143 void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event) )
144 {
145 wxMessageDialog dialog(this, _T("This demonstrates the dataview control handling"),
146 _T("About DataView"), wxOK);
147
148 dialog.ShowModal();
149 }
150
151