]> git.saurik.com Git - wxWidgets.git/commitdiff
Minimize use of editor class macros
authorJaakko Salli <jaakko.salli@dnainternet.net>
Mon, 6 Oct 2008 16:09:36 +0000 (16:09 +0000)
committerJaakko Salli <jaakko.salli@dnainternet.net>
Mon, 6 Oct 2008 16:09:36 +0000 (16:09 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/propgrid/advprops.h
include/wx/propgrid/editors.h
src/propgrid/advprops.cpp
src/propgrid/editors.cpp
src/propgrid/propgrid.cpp

index 5c6eb2eb17e191261b5ea8e680a4a408ccfb1d51..25cd2586d8dd4e730bf7bcca2f5d3465ff17ca0a 100644 (file)
@@ -499,13 +499,15 @@ protected:
 //   used for event handling here.
 class WXDLLIMPEXP_PROPGRID wxPGSpinCtrlEditor : public wxPGTextCtrlEditor
 {
-    WX_PG_DECLARE_EDITOR_CLASS(wxPGSpinCtrlEditor)
+    DECLARE_DYNAMIC_CLASS(wxPGSpinCtrlEditor)
 public:
     virtual ~wxPGSpinCtrlEditor();
 
-    // See below for short explanations of what these are suppposed to do.
-    wxPG_DECLARE_CREATECONTROLS
-
+    wxString GetName() const;
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
     virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
         wxWindow* wnd, wxEvent& event ) const;
 
index fc2ffe4259897c887e0b22b5c9f4deb09e8f2b08..912d888397a8702da8204497cc3a95bb701d4bfa 100644 (file)
@@ -130,10 +130,6 @@ public:
                                           wxPGProperty* property,
                                           const wxPoint& pos,
                                           const wxSize& size) const = 0;
-    #define wxPG_DECLARE_CREATECONTROLS \
-        virtual wxPGWindowList \
-            CreateControls( wxPropertyGrid* propgrid, wxPGProperty* property, \
-        const wxPoint& pos, const wxSize& sz ) const;
 
     /** Loads value from property to the control. */
     virtual void UpdateControl( wxPGProperty* property,
@@ -219,41 +215,13 @@ public:
 };
 
 
-//
-// Note that we don't use this macro in this file because
-// otherwise doxygen gets confused.
-//
-#define WX_PG_DECLARE_EDITOR_CLASS(CLASSNAME) \
-    DECLARE_DYNAMIC_CLASS(CLASSNAME) \
-public: \
-    virtual wxString GetName() const; \
-private:
-
-
-#define WX_PG_IMPLEMENT_EDITOR_CLASS(EDITOR,CLASSNAME,BASECLASS) \
+#define WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(EDITOR,CLASSNAME,BASECLASS) \
 IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, BASECLASS) \
 wxString CLASSNAME::GetName() const \
 { \
     return wxS(#EDITOR); \
 } \
-wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL; \
-wxPGEditor* wxPGConstruct##EDITOR##EditorClass() \
-{ \
-    wxASSERT( !wxPGEditor_##EDITOR ); \
-    return new CLASSNAME(); \
-}
-
-
-#define WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS() \
-wxPG_DECLARE_CREATECONTROLS \
-virtual void UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const; \
-virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, \
-    wxWindow* primary, wxEvent& event ) const; \
-virtual bool GetValueFromControl( wxVariant& variant, \
-                                  wxPGProperty* property, \
-                                  wxWindow* ctrl ) const; \
-virtual void SetValueToUnspecified( wxPGProperty* property, \
-                                    wxWindow* ctrl ) const;
+wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL;
 
 
 //
@@ -269,7 +237,22 @@ public:
     wxPGTextCtrlEditor() {}
     virtual ~wxPGTextCtrlEditor();
 
-    WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS()
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
+    virtual void UpdateControl( wxPGProperty* property,
+                                wxWindow* ctrl ) const;
+    virtual bool OnEvent( wxPropertyGrid* propgrid,
+                          wxPGProperty* property,
+                          wxWindow* primaryCtrl,
+                          wxEvent& event ) const;
+    virtual bool GetValueFromControl( wxVariant& variant,
+                                      wxPGProperty* property,
+                                      wxWindow* ctrl ) const;
+    virtual void SetValueToUnspecified( wxPGProperty* property,
+                                        wxWindow* ctrl ) const;
+
     virtual wxString GetName() const;
 
     //virtual wxPGCellRenderer* GetCellRenderer() const;
@@ -301,7 +284,21 @@ public:
     wxPGChoiceEditor() {}
     virtual ~wxPGChoiceEditor();
 
-    WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS()
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
+    virtual void UpdateControl( wxPGProperty* property,
+                                wxWindow* ctrl ) const;
+    virtual bool OnEvent( wxPropertyGrid* propgrid,
+                          wxPGProperty* property,
+                          wxWindow* primaryCtrl,
+                          wxEvent& event ) const;
+    virtual bool GetValueFromControl( wxVariant& variant,
+                                      wxPGProperty* property,
+                                      wxWindow* ctrl ) const;
+    virtual void SetValueToUnspecified( wxPGProperty* property,
+                                        wxWindow* ctrl ) const;
     virtual wxString GetName() const;
 
     virtual void SetControlIntValue( wxPGProperty* property,
@@ -336,8 +333,10 @@ public:
     wxPGComboBoxEditor() {}
     virtual ~wxPGComboBoxEditor();
 
-    // Macro is used for convenience due to different signature with wxPython
-    wxPG_DECLARE_CREATECONTROLS
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
 
     virtual wxString GetName() const;
 
@@ -365,8 +364,10 @@ public:
     virtual ~wxPGChoiceAndButtonEditor();
     virtual wxString GetName() const;
 
-    // Macro is used for convenience due to different signature with wxPython
-    wxPG_DECLARE_CREATECONTROLS
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
 
     DECLARE_DYNAMIC_CLASS(wxPGChoiceAndButtonEditor)
 };
@@ -378,7 +379,11 @@ public:
     wxPGTextCtrlAndButtonEditor() {}
     virtual ~wxPGTextCtrlAndButtonEditor();
     virtual wxString GetName() const;
-    wxPG_DECLARE_CREATECONTROLS
+
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
 
     DECLARE_DYNAMIC_CLASS(wxPGTextCtrlAndButtonEditor)
 };
@@ -402,7 +407,21 @@ public:
     virtual ~wxPGCheckBoxEditor();
 
     virtual wxString GetName() const;
-    WX_PG_IMPLEMENT_EDITOR_CLASS_STD_METHODS()
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
+    virtual void UpdateControl( wxPGProperty* property,
+                                wxWindow* ctrl ) const;
+    virtual bool OnEvent( wxPropertyGrid* propgrid,
+                          wxPGProperty* property,
+                          wxWindow* primaryCtrl,
+                          wxEvent& event ) const;
+    virtual bool GetValueFromControl( wxVariant& variant,
+                                      wxPGProperty* property,
+                                      wxWindow* ctrl ) const;
+    virtual void SetValueToUnspecified( wxPGProperty* property,
+                                        wxWindow* ctrl ) const;
 
     virtual void DrawValue( wxDC& dc,
                             const wxRect& rect,
@@ -419,27 +438,15 @@ public:
 
 
 // -----------------------------------------------------------------------
-// Editor class registeration macros
+// Editor class registeration macro (mostly for internal use)
 
 #define wxPGRegisterEditorClass(EDITOR) \
     if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \
     { \
         wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \
-                wxPGConstruct##EDITOR##EditorClass() ); \
+                new wxPG##EDITOR##Editor ); \
     }
 
-// Use this in RegisterDefaultEditors.
-#define wxPGRegisterDefaultEditorClass(EDITOR) \
-if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \
-    { \
-        wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \
-                wxPGConstruct##EDITOR##EditorClass(), true ); \
-    }
-
-#define wxPG_INIT_REQUIRED_EDITOR(T) \
-    wxPGRegisterEditorClass(T)
-
-
 // -----------------------------------------------------------------------
 
 /** @class wxPGEditorDialogAdapter
index 0a47883b32bdd6d31afac29464fb01ae3253d7f0..cfa421adf4d31608435cbc16054923065de47c17 100644 (file)
@@ -113,9 +113,9 @@ bool operator == (const wxArrayInt& array1, const wxArrayInt& array2)
 #if wxUSE_SPINBTN
 
 
-// This macro also defines global wxPGEditor_SpinCtrl for storing
-// the singleton class instance.
-WX_PG_IMPLEMENT_EDITOR_CLASS(SpinCtrl,wxPGSpinCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(SpinCtrl,
+                                      wxPGSpinCtrlEditor,
+                                      wxPGEditor)
 
 
 // Trivial destructor.
@@ -286,12 +286,15 @@ bool wxPGSpinCtrlEditor::OnEvent( wxPropertyGrid* propgrid, wxPGProperty* proper
 
 class wxPGDatePickerCtrlEditor : public wxPGEditor
 {
-    WX_PG_DECLARE_EDITOR_CLASS(wxPGDatePickerCtrlEditor)
+    DECLARE_DYNAMIC_CLASS(wxPGDatePickerCtrlEditor)
 public:
     virtual ~wxPGDatePickerCtrlEditor();
 
-    wxPG_DECLARE_CREATECONTROLS
-
+    wxString GetName() const;
+    virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
+                                          wxPGProperty* property,
+                                          const wxPoint& pos,
+                                          const wxSize& size) const;
     virtual void UpdateControl( wxPGProperty* property, wxWindow* wnd ) const;
     virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
         wxWindow* wnd, wxEvent& event ) const;
@@ -300,7 +303,9 @@ public:
 };
 
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(DatePickerCtrl,wxPGDatePickerCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(DatePickerCtrl,
+                                      wxPGDatePickerCtrlEditor,
+                                      wxPGEditor)
 
 
 wxPGDatePickerCtrlEditor::~wxPGDatePickerCtrlEditor()
index 087d92324e479c2469c2e2b3e6605232b5eb5751..1eddd98fb4e38e87d6a4f4394b8291acd4127c3f 100644 (file)
@@ -214,7 +214,7 @@ bool wxPGEditor::CanContainCustomImage() const
 // wxPGTextCtrlEditor
 // -----------------------------------------------------------------------
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
 
 
 wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -391,7 +391,7 @@ wxPGTextCtrlEditor::~wxPGTextCtrlEditor() { }
 // -----------------------------------------------------------------------
 
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(Choice,wxPGChoiceEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(Choice,wxPGChoiceEditor,wxPGEditor)
 
 
 // This is a special enhanced double-click processor class.
@@ -1007,7 +1007,9 @@ wxPGChoiceEditor::~wxPGChoiceEditor() { }
 // -----------------------------------------------------------------------
 
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(ComboBox,wxPGComboBoxEditor,wxPGChoiceEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(ComboBox,
+                                      wxPGComboBoxEditor,
+                                      wxPGChoiceEditor)
 
 
 void wxPGComboBoxEditor::UpdateControl( wxPGProperty* property, wxWindow* ctrl ) const
@@ -1086,8 +1088,9 @@ wxPGComboBoxEditor::~wxPGComboBoxEditor() { }
 // -----------------------------------------------------------------------
 
 
-// This simpler implement_editor macro doesn't define class body.
-WX_PG_IMPLEMENT_EDITOR_CLASS(ChoiceAndButton,wxPGChoiceAndButtonEditor,wxPGChoiceEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(ChoiceAndButton,
+                                      wxPGChoiceAndButtonEditor,
+                                      wxPGChoiceEditor)
 
 
 wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1136,9 +1139,9 @@ wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() { }
 // wxPGTextCtrlAndButtonEditor
 // -----------------------------------------------------------------------
 
-
-// This simpler implement_editor macro doesn't define class body.
-WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrlAndButton,wxPGTextCtrlAndButtonEditor,wxPGTextCtrlEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrlAndButton,
+                                      wxPGTextCtrlAndButtonEditor,
+                                      wxPGTextCtrlEditor)
 
 
 wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1163,7 +1166,9 @@ wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() { }
 
 #if wxPG_INCLUDE_CHECKBOX
 
-WX_PG_IMPLEMENT_EDITOR_CLASS(CheckBox,wxPGCheckBoxEditor,wxPGEditor)
+WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(CheckBox,
+                                      wxPGCheckBoxEditor,
+                                      wxPGEditor)
 
 
 // state argument: 0x01 = set if checked
index e8f7b7b29350c110e0e31e8f294f96c5662a8050..0b0f8a4bcf55de6d320331081b6033ea2d2c94c7 100644 (file)
@@ -5351,6 +5351,14 @@ wxPGEditor* wxPropertyGrid::RegisterEditorClass( wxPGEditor* editorClass,
     return editorClass;
 }
 
+// Use this in RegisterDefaultEditors.
+#define wxPGRegisterDefaultEditorClass(EDITOR) \
+    if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \
+    { \
+        wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \
+            new wxPG##EDITOR##Editor, true ); \
+    }
+
 // Registers all default editor classes
 void wxPropertyGrid::RegisterDefaultEditors()
 {