1 /////////////////////////////////////////////////////////////////////////////
2 // Name: samples/propgrid/propgrid.h
3 // Purpose: wxPropertyGrid sample
4 // Author: Jaakko Salli
8 // Copyright: (c) Jaakko Salli
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_SAMPLES_PROPGRID_PROPGRID_H_
13 #define _WX_SAMPLES_PROPGRID_PROPGRID_H_
15 // -----------------------------------------------------------------------
17 class wxAdvImageFileProperty
: public wxFileProperty
19 WX_PG_DECLARE_PROPERTY_CLASS(wxAdvImageFileProperty
)
22 wxAdvImageFileProperty( const wxString
& label
= wxPG_LABEL
,
23 const wxString
& name
= wxPG_LABEL
,
24 const wxString
& value
= wxEmptyString
);
25 virtual ~wxAdvImageFileProperty ();
27 virtual void OnSetValue(); // Override to allow image loading.
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
);
35 void LoadThumbnails( size_t n
);
38 wxImage
* m_pImage
; // Temporary thumbnail data.
40 static wxPGChoices ms_choices
;
42 int m_index
; // Index required for choice behaviour.
45 // -----------------------------------------------------------------------
54 wxVector3f( double x
, double y
, double z
)
62 inline bool operator == (const wxVector3f
& a
, const wxVector3f
& b
)
64 return (a
.x
== b
.x
&& a
.y
== b
.y
&& a
.z
== b
.z
);
67 WX_PG_DECLARE_VARIANT_DATA(wxVector3f
)
69 class wxVectorProperty
: public wxPGProperty
71 WX_PG_DECLARE_PROPERTY_CLASS(wxVectorProperty
)
74 wxVectorProperty( const wxString
& label
= wxPG_LABEL
,
75 const wxString
& name
= wxPG_LABEL
,
76 const wxVector3f
& value
= wxVector3f() );
77 virtual ~wxVectorProperty();
79 virtual wxVariant
ChildChanged( wxVariant
& thisValue
,
81 wxVariant
& childValue
) const;
82 virtual void RefreshChildren();
87 // -----------------------------------------------------------------------
95 inline bool operator == (const wxTriangle
& a
, const wxTriangle
& b
)
97 return (a
.a
== b
.a
&& a
.b
== b
.b
&& a
.c
== b
.c
);
100 WX_PG_DECLARE_VARIANT_DATA(wxTriangle
)
102 class wxTriangleProperty
: public wxPGProperty
104 WX_PG_DECLARE_PROPERTY_CLASS(wxTriangleProperty
)
107 wxTriangleProperty( const wxString
& label
= wxPG_LABEL
,
108 const wxString
& name
= wxPG_LABEL
,
109 const wxTriangle
& value
= wxTriangle() );
110 virtual ~wxTriangleProperty();
112 virtual wxVariant
ChildChanged( wxVariant
& thisValue
,
114 wxVariant
& childValue
) const;
115 virtual void RefreshChildren();
120 // -----------------------------------------------------------------------
124 ID_COLOURSCHEME4
= 100
127 // -----------------------------------------------------------------------
129 class FormMain
: public wxFrame
132 FormMain(const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
);
135 wxPropertyGridManager
* m_pPropGridManager
;
136 wxPropertyGrid
* m_propGrid
;
138 wxTextCtrl
* m_tcPropLabel
;
140 wxBoxSizer
* m_topSizer
;
142 wxPGEditor
* m_pSampleMultiButtonEditor
;
143 wxPGChoices m_combinedFlags
;
145 wxMenuItem
* m_itemCatColours
;
146 wxMenuItem
* m_itemFreeze
;
147 wxMenuItem
* m_itemEnable
;
149 wxVariant m_storedValues
;
151 wxString m_savedState
;
154 void CreateGrid( int style
, int extraStyle
);
155 void FinalizeFramePosition();
157 // These are used in CreateGrid(), and in tests to compose
158 // grids for testing purposes.
161 void FinalizePanel( bool wasCreated
= true );
163 void PopulateWithStandardItems();
164 void PopulateWithExamples();
165 void PopulateWithLibraryConfig();
167 void OnCloseClick( wxCommandEvent
& event
);
168 void OnLabelTextChange( wxCommandEvent
& event
);
170 void OnColourScheme( wxCommandEvent
& event
);
172 void OnInsertPropClick( wxCommandEvent
& event
);
173 void OnAppendPropClick( wxCommandEvent
& event
);
174 void OnClearClick( wxCommandEvent
& event
);
175 void OnAppendCatClick( wxCommandEvent
& event
);
176 void OnInsertCatClick( wxCommandEvent
& event
);
177 void OnDelPropClick( wxCommandEvent
& event
);
178 void OnDelPropRClick( wxCommandEvent
& event
);
180 void OnContextMenu( wxContextMenuEvent
& event
);
182 void OnEnableDisable( wxCommandEvent
& event
);
183 void OnHideShow( wxCommandEvent
& event
);
184 void OnSetBackgroundColour( wxCommandEvent
& event
);
185 void OnClearModifyStatusClick( wxCommandEvent
& event
);
186 void OnFreezeClick( wxCommandEvent
& event
);
187 void OnDumpList( wxCommandEvent
& event
);
188 void OnCatColours( wxCommandEvent
& event
);
189 void OnSetColumns( wxCommandEvent
& event
);
190 void OnMisc( wxCommandEvent
& event
);
191 void OnPopulateClick( wxCommandEvent
& event
);
192 void OnSetSpinCtrlEditorClick( wxCommandEvent
& event
);
193 void OnTestReplaceClick( wxCommandEvent
& event
);
194 void OnTestXRC( wxCommandEvent
& event
);
195 void OnEnableCommonValues( wxCommandEvent
& event
);
196 void OnSelectStyle( wxCommandEvent
& event
);
198 void OnFitColumnsClick( wxCommandEvent
& event
);
200 void OnChangeFlagsPropItemsClick( wxCommandEvent
& event
);
202 void OnSaveToFileClick( wxCommandEvent
& event
);
203 void OnLoadFromFileClick( wxCommandEvent
& event
);
205 void OnSetPropertyValue( wxCommandEvent
& event
);
206 void OnInsertChoice( wxCommandEvent
& event
);
207 void OnDeleteChoice( wxCommandEvent
& event
);
208 void OnInsertPage( wxCommandEvent
& event
);
209 void OnRemovePage( wxCommandEvent
& event
);
211 void OnSaveState( wxCommandEvent
& event
);
212 void OnRestoreState( wxCommandEvent
& event
);
214 void OnRunMinimalClick( wxCommandEvent
& event
);
216 void OnIterate1Click( wxCommandEvent
& event
);
217 void OnIterate2Click( wxCommandEvent
& event
);
218 void OnIterate3Click( wxCommandEvent
& event
);
219 void OnIterate4Click( wxCommandEvent
& event
);
221 void OnPropertyGridChange( wxPropertyGridEvent
& event
);
222 void OnPropertyGridChanging( wxPropertyGridEvent
& event
);
223 void OnPropertyGridSelect( wxPropertyGridEvent
& event
);
224 void OnPropertyGridHighlight( wxPropertyGridEvent
& event
);
225 void OnPropertyGridItemRightClick( wxPropertyGridEvent
& event
);
226 void OnPropertyGridItemDoubleClick( wxPropertyGridEvent
& event
);
227 void OnPropertyGridPageChange( wxPropertyGridEvent
& event
);
228 void OnPropertyGridButtonClick( wxCommandEvent
& event
);
229 void OnPropertyGridTextUpdate( wxCommandEvent
& event
);
230 void OnPropertyGridKeyEvent( wxKeyEvent
& event
);
231 void OnPropertyGridItemCollapse( wxPropertyGridEvent
& event
);
232 void OnPropertyGridItemExpand( wxPropertyGridEvent
& event
);
234 void OnAbout( wxCommandEvent
& event
);
236 void OnMove( wxMoveEvent
& event
);
237 void OnResize( wxSizeEvent
& event
);
238 void OnPaint( wxPaintEvent
& event
);
239 void OnCloseEvent( wxCloseEvent
& event
);
241 void OnIdle( wxIdleEvent
& event
);
243 void AddTestProperties( wxPropertyGridPage
* pg
);
245 bool RunTests( bool fullTest
, bool interactive
= false );
248 DECLARE_EVENT_TABLE()
251 // -----------------------------------------------------------------------
253 class cxApplication
: public wxApp
257 virtual bool OnInit();
263 DECLARE_APP(cxApplication
)
265 // -----------------------------------------------------------------------
267 #endif // _WX_SAMPLES_PROPGRID_PROPGRID_H_