propgrid.h 8.7 KB

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