1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: DataVewCtrl wxWidgets sample
4 // Author: Robert Roebling
8 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx/wx.h".
13 #include "wx/wxprec.h"
24 #include "mondrian.xpm"
27 #include "wx/dataview.h"
29 // -------------------------------------
31 // -------------------------------------
33 class MyTextModel
: public wxDataViewListModel
38 virtual size_t GetNumberOfRows()
40 virtual size_t GetNumberOfCols()
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
)
47 tmp
.Printf( wxT("item(%d;%d)"), (int)row
, (int)col
);
52 // -------------------------------------
54 // -------------------------------------
56 class MyApp
: public wxApp
62 // -------------------------------------
64 // -------------------------------------
66 class MyFrame
: public wxFrame
69 MyFrame(wxFrame
*frame
, wxChar
*title
, int x
, int y
, int w
, int h
);
72 void OnQuit(wxCommandEvent
& event
);
73 void OnAbout(wxCommandEvent
& event
);
76 wxDataViewCtrl
* dataview
;
79 // -------------------------------------
81 // -------------------------------------
83 #define DYNAMIC_QUIT wxID_EXIT
84 #define DYNAMIC_ABOUT wxID_ABOUT
88 bool MyApp::OnInit(void)
90 MyFrame
*frame
= new MyFrame(NULL
, _T("Dynamic wxWidgets App"), 50, 50, 450, 340);
99 // -------------------------------------
101 // -------------------------------------
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
))
107 SetIcon(wxIcon(_T("mondrian")));
109 SetIcon(wxIcon(mondrian_xpm
));
112 wxMenu
*file_menu
= new wxMenu
;
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
);
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
) );
129 dataview
= new wxDataViewCtrl( this, -1 );
131 MyTextModel
*model
= new MyTextModel
;
132 dataview
->AssociateModel( model
);
134 dataview
->AppendStringColumn( wxT("first"), 0 );
135 dataview
->AppendStringColumn( wxT("second"), 1 );
136 dataview
->AppendStringColumn( wxT("third"), 2 );
140 void MyFrame::OnQuit(wxCommandEvent
& WXUNUSED(event
) )
145 void MyFrame::OnAbout(wxCommandEvent
& WXUNUSED(event
) )
147 wxMessageDialog
dialog(this, _T("This demonstrates the dataview control handling"),
148 _T("About DataView"), wxOK
);