Generate wxPropertyGrid splitter (column divider) events: wxEVT_PG_COL_BEGIN_DRAG...
[wxWidgets.git] / samples / propgrid / propgrid.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: samples/propgrid/propgrid.h
3 // Purpose: wxPropertyGrid sample
4 // Author: Jaakko Salli
5 // Modified by:
6 // Created: 2004-09-25
7 // RCS-ID: $Id$
8 // Copyright: (c) Jaakko Salli
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_SAMPLES_PROPGRID_PROPGRID_H_
13 #define _WX_SAMPLES_PROPGRID_PROPGRID_H_
14
15 // -----------------------------------------------------------------------
16
17 class wxAdvImageFileProperty : public wxFileProperty
18 {
19 WX_PG_DECLARE_PROPERTY_CLASS(wxAdvImageFileProperty)
20 public:
21
22 wxAdvImageFileProperty( const wxString& label = wxPG_LABEL,
23 const wxString& name = wxPG_LABEL,
24 const wxString& value = wxEmptyString );
25 virtual ~wxAdvImageFileProperty ();
26
27 virtual void OnSetValue(); // Override to allow image loading.
28
29 virtual bool IntToValue( wxVariant& variant, int number, int argFlags = 0 ) const;
30 virtual bool OnEvent( wxPropertyGrid* propgrid, wxWindow* primary, wxEvent& event );
31 virtual wxSize OnMeasureImage( int item ) const;
32 virtual void OnCustomPaint( wxDC& dc,
33 const wxRect& rect, wxPGPaintData& paintdata );
34
35 void LoadThumbnails( size_t n );
36
37 protected:
38 wxImage* m_pImage; // Temporary thumbnail data.
39
40 static wxPGChoices ms_choices;
41
42 int m_index; // Index required for choice behaviour.
43 };
44
45 // -----------------------------------------------------------------------
46
47 class wxVector3f
48 {
49 public:
50 wxVector3f()
51 {
52 x = y = z = 0.0;
53 }
54 wxVector3f( double x, double y, double z )
55 {
56 x = x; y = y; z = z;
57 }
58
59 double x, y, z;
60 };
61
62 inline bool operator == (const wxVector3f& a, const wxVector3f& b)
63 {
64 return (a.x == b.x && a.y == b.y && a.z == b.z);
65 }
66
67 WX_PG_DECLARE_VARIANT_DATA(wxVector3f)
68
69 class wxVectorProperty : public wxPGProperty
70 {
71 WX_PG_DECLARE_PROPERTY_CLASS(wxVectorProperty)
72 public:
73
74 wxVectorProperty( const wxString& label = wxPG_LABEL,
75 const wxString& name = wxPG_LABEL,
76 const wxVector3f& value = wxVector3f() );
77 virtual ~wxVectorProperty();
78
79 virtual wxVariant ChildChanged( wxVariant& thisValue,
80 int childIndex,
81 wxVariant& childValue ) const;
82 virtual void RefreshChildren();
83
84 protected:
85 };
86
87 // -----------------------------------------------------------------------
88
89 class wxTriangle
90 {
91 public:
92 wxVector3f a, b, c;
93 };
94
95 inline bool operator == (const wxTriangle& a, const wxTriangle& b)
96 {
97 return (a.a == b.a && a.b == b.b && a.c == b.c);
98 }
99
100 WX_PG_DECLARE_VARIANT_DATA(wxTriangle)
101
102 class wxTriangleProperty : public wxPGProperty
103 {
104 WX_PG_DECLARE_PROPERTY_CLASS(wxTriangleProperty)
105 public:
106
107 wxTriangleProperty( const wxString& label = wxPG_LABEL,
108 const wxString& name = wxPG_LABEL,
109 const wxTriangle& value = wxTriangle() );
110 virtual ~wxTriangleProperty();
111
112 virtual wxVariant ChildChanged( wxVariant& thisValue,
113 int childIndex,
114 wxVariant& childValue ) const;
115 virtual void RefreshChildren();
116
117 protected:
118 };
119
120 // -----------------------------------------------------------------------
121
122 enum
123 {
124 ID_COLOURSCHEME4 = 100
125 };
126
127 // -----------------------------------------------------------------------
128
129 class FormMain : public wxFrame
130 {
131 public:
132 FormMain(const wxString& title, const wxPoint& pos, const wxSize& size );
133 ~FormMain();
134
135 wxPropertyGridManager* m_pPropGridManager;
136 wxPropertyGrid* m_propGrid;
137
138 wxTextCtrl* m_tcPropLabel;
139 wxWindow* m_panel;
140 wxBoxSizer* m_topSizer;
141
142 wxPGEditor* m_pSampleMultiButtonEditor;
143 wxPGChoices m_combinedFlags;
144
145 wxMenuItem* m_itemCatColours;
146 wxMenuItem* m_itemFreeze;
147 wxMenuItem* m_itemEnable;
148 wxMenuItem* m_itemVetoDragging;
149
150 wxVariant m_storedValues;
151
152 wxString m_savedState;
153
154
155 void CreateGrid( int style, int extraStyle );
156 void FinalizeFramePosition();
157
158 // These are used in CreateGrid(), and in tests to compose
159 // grids for testing purposes.
160 void InitPanel();
161 void PopulateGrid();
162 void FinalizePanel( bool wasCreated = true );
163
164 void PopulateWithStandardItems();
165 void PopulateWithExamples();
166 void PopulateWithLibraryConfig();
167
168 void OnCloseClick( wxCommandEvent& event );
169 void OnLabelTextChange( wxCommandEvent& event );
170
171 void OnColourScheme( wxCommandEvent& event );
172
173 void OnInsertPropClick( wxCommandEvent& event );
174 void OnAppendPropClick( wxCommandEvent& event );
175 void OnClearClick( wxCommandEvent& event );
176 void OnAppendCatClick( wxCommandEvent& event );
177 void OnInsertCatClick( wxCommandEvent& event );
178 void OnDelPropClick( wxCommandEvent& event );
179 void OnDelPropRClick( wxCommandEvent& event );
180
181 void OnContextMenu( wxContextMenuEvent& event );
182
183 void OnEnableDisable( wxCommandEvent& event );
184 void OnHideShow( wxCommandEvent& event );
185 void OnSetBackgroundColour( wxCommandEvent& event );
186 void OnClearModifyStatusClick( wxCommandEvent& event );
187 void OnFreezeClick( wxCommandEvent& event );
188 void OnEnableLabelEditing( wxCommandEvent& event );
189 void OnDumpList( wxCommandEvent& event );
190 void OnCatColours( wxCommandEvent& event );
191 void OnSetColumns( wxCommandEvent& event );
192 void OnMisc( wxCommandEvent& event );
193 void OnPopulateClick( wxCommandEvent& event );
194 void OnSetSpinCtrlEditorClick( wxCommandEvent& event );
195 void OnTestReplaceClick( wxCommandEvent& event );
196 void OnTestXRC( wxCommandEvent& event );
197 void OnEnableCommonValues( wxCommandEvent& event );
198 void OnSelectStyle( wxCommandEvent& event );
199
200 void OnFitColumnsClick( wxCommandEvent& event );
201
202 void OnChangeFlagsPropItemsClick( wxCommandEvent& event );
203
204 void OnSaveToFileClick( wxCommandEvent& event );
205 void OnLoadFromFileClick( wxCommandEvent& event );
206
207 void OnSetPropertyValue( wxCommandEvent& event );
208 void OnInsertChoice( wxCommandEvent& event );
209 void OnDeleteChoice( wxCommandEvent& event );
210 void OnInsertPage( wxCommandEvent& event );
211 void OnRemovePage( wxCommandEvent& event );
212
213 void OnSaveState( wxCommandEvent& event );
214 void OnRestoreState( wxCommandEvent& event );
215
216 void OnRunMinimalClick( wxCommandEvent& event );
217
218 void OnIterate1Click( wxCommandEvent& event );
219 void OnIterate2Click( wxCommandEvent& event );
220 void OnIterate3Click( wxCommandEvent& event );
221 void OnIterate4Click( wxCommandEvent& event );
222
223 void OnPropertyGridChange( wxPropertyGridEvent& event );
224 void OnPropertyGridChanging( wxPropertyGridEvent& event );
225 void OnPropertyGridSelect( wxPropertyGridEvent& event );
226 void OnPropertyGridHighlight( wxPropertyGridEvent& event );
227 void OnPropertyGridItemRightClick( wxPropertyGridEvent& event );
228 void OnPropertyGridItemDoubleClick( wxPropertyGridEvent& event );
229 void OnPropertyGridPageChange( wxPropertyGridEvent& event );
230 void OnPropertyGridButtonClick( wxCommandEvent& event );
231 void OnPropertyGridTextUpdate( wxCommandEvent& event );
232 void OnPropertyGridKeyEvent( wxKeyEvent& event );
233 void OnPropertyGridItemCollapse( wxPropertyGridEvent& event );
234 void OnPropertyGridItemExpand( wxPropertyGridEvent& event );
235 void OnPropertyGridLabelEditBegin( wxPropertyGridEvent& event );
236 void OnPropertyGridLabelEditEnding( wxPropertyGridEvent& event );
237 void OnPropertyGridColBeginDrag( wxPropertyGridEvent& event );
238 void OnPropertyGridColDragging( wxPropertyGridEvent& event );
239 void OnPropertyGridColEndDrag( wxPropertyGridEvent& event );
240
241 void OnAbout( wxCommandEvent& event );
242
243 void OnMove( wxMoveEvent& event );
244 void OnResize( wxSizeEvent& event );
245 void OnPaint( wxPaintEvent& event );
246 void OnCloseEvent( wxCloseEvent& event );
247
248 void OnIdle( wxIdleEvent& event );
249
250 void AddTestProperties( wxPropertyGridPage* pg );
251
252 bool RunTests( bool fullTest, bool interactive = false );
253
254 private:
255 DECLARE_EVENT_TABLE()
256 };
257
258 // -----------------------------------------------------------------------
259
260 class cxApplication : public wxApp
261 {
262 public:
263
264 virtual bool OnInit();
265
266 private:
267 FormMain *Form1;
268 };
269
270 DECLARE_APP(cxApplication)
271
272 // -----------------------------------------------------------------------
273
274 #endif // _WX_SAMPLES_PROPGRID_PROPGRID_H_