]> git.saurik.com Git - wxWidgets.git/blob - include/wx/dataview.h
wxDataViewCtrl WIP.
[wxWidgets.git] / include / wx / dataview.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/dataview.h
3 // Purpose: wxDataViewCtrl base classes
4 // Author: Robert Roebling
5 // Modified by:
6 // Created: 08.01.06
7 // RCS-ID: $Id$
8 // Copyright: (c) Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_DATAVIEW_H_BASE_
13 #define _WX_DATAVIEW_H_BASE_
14
15 #include "wx/defs.h"
16
17 #if wxUSE_DATAVIEWCTRL
18
19 #include "wx/control.h"
20 #include "wx/textctrl.h"
21 #include "wx/bitmap.h"
22
23 // ----------------------------------------------------------------------------
24 // wxDataViewCtrl flags
25 // ----------------------------------------------------------------------------
26
27 // ----------------------------------------------------------------------------
28 // wxDataViewCtrl globals
29 // ----------------------------------------------------------------------------
30
31 extern WXDLLEXPORT_DATA(const wxChar) wxDataViewCtrlNameStr[];
32
33 // ---------------------------------------------------------
34 // wxDataViewModel
35 // ---------------------------------------------------------
36
37 class wxDataViewModel: public wxObject
38 {
39 public:
40 wxDataViewModel() { }
41 virtual ~wxDataViewModel() { }
42
43 protected:
44 DECLARE_NO_COPY_CLASS(wxDataViewModel)
45 };
46
47 // ---------------------------------------------------------
48 // wxDataViewListModelNotifier
49 // ---------------------------------------------------------
50
51 class wxDataViewListModelNotifier
52 {
53 public:
54 wxDataViewListModelNotifier() { }
55 virtual ~wxDataViewListModelNotifier() { }
56
57 virtual bool RowAppended() = 0;
58 virtual bool RowPrepended() = 0;
59 virtual bool RowInserted( size_t before ) = 0;
60 virtual bool RowDeleted( size_t row ) = 0;
61 virtual bool RowChanged( size_t row ) = 0;
62 virtual bool ValueChanged( size_t row, size_t col ) = 0;
63 virtual bool Cleared() = 0;
64 }
65
66 // ---------------------------------------------------------
67 // wxDataViewListModel
68 // ---------------------------------------------------------
69
70 class wxDataViewListModel: public wxDataViewModel
71 {
72 public:
73 wxDataViewListModel();
74 virtual ~wxDataViewListModel();
75
76 virtual size_t GetNumberOfRows() = 0;
77 virtual size_t GetNumberOfCols() = 0;
78 // as reported by wxVariant
79 virtual wxString GetColType( size_t col ) = 0;
80 virtual wxVariant GetValue( size_t col, size_t row ) = 0;
81
82 // delegated notifiers
83 bool RowAppended();
84 bool RowPrepended();
85 bool RowInserted( size_t before );
86 bool RowDeleted( size_t row );
87 bool RowChanged( size_t row );
88 bool ValueChanged( size_t row, size_t col );
89 bool Cleared();
90
91 void SetNotifier( wxDataViewListModelNotifier *notifier );
92 wxDataViewListModelNotifier* GetNotifier();
93
94 private:
95 wxDataViewListModelNotifier *m_notifier;
96
97 protected:
98 DECLARE_NO_COPY_CLASS(wxDataViewListModel)
99 };
100
101 // ---------------------------------------------------------
102 // wxDataViewCtrlBase
103 // ---------------------------------------------------------
104
105 class wxDataViewCtrlBase: public wxControl
106 {
107 public:
108 wxDataViewCtrlBase();
109 ~wxDataViewCtrlBase();
110
111 virtual bool AppendStringColumn( const wxString &label ) = 0;
112
113 virtual bool AssociateModel( wxDataViewModel *model );
114 wxDataViewModel* GetModel();
115
116 private:
117 wxDataViewModel *m_model;
118
119 protected:
120 DECLARE_NO_COPY_CLASS(wxDataViewCtrlBase)
121 };
122
123
124
125 #if defined(__WXGTK20__)
126 #include "wx/gtk/dataview.h"
127 #elif defined(__WXMAC__)
128 #include "wx/mac/dataview.h"
129 #else
130 #include "wx/generic/dataview.h"
131 #endif
132
133 #endif // wxUSE_DATAVIEWCTRL
134
135 #endif
136 // _WX_DATAVIEW_H_BASE_