Minimize use of editor class macros

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2008-10-06 16:09:36 +00:00
parent 5a45dd6fd9
commit 52cefafe7e
5 changed files with 103 additions and 76 deletions

View File

@@ -499,13 +499,15 @@ protected:
// used for event handling here. // used for event handling here.
class WXDLLIMPEXP_PROPGRID wxPGSpinCtrlEditor : public wxPGTextCtrlEditor class WXDLLIMPEXP_PROPGRID wxPGSpinCtrlEditor : public wxPGTextCtrlEditor
{ {
WX_PG_DECLARE_EDITOR_CLASS(wxPGSpinCtrlEditor) DECLARE_DYNAMIC_CLASS(wxPGSpinCtrlEditor)
public: public:
virtual ~wxPGSpinCtrlEditor(); virtual ~wxPGSpinCtrlEditor();
// See below for short explanations of what these are suppposed to do. wxString GetName() const;
wxPG_DECLARE_CREATECONTROLS virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const;
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd, wxEvent& event ) const; wxWindow* wnd, wxEvent& event ) const;

View File

@@ -130,10 +130,6 @@ public:
wxPGProperty* property, wxPGProperty* property,
const wxPoint& pos, const wxPoint& pos,
const wxSize& size) const = 0; 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. */ /** Loads value from property to the control. */
virtual void UpdateControl( wxPGProperty* property, virtual void UpdateControl( wxPGProperty* property,
@@ -219,41 +215,13 @@ public:
}; };
// #define WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(EDITOR,CLASSNAME,BASECLASS) \
// 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) \
IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, BASECLASS) \ IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, BASECLASS) \
wxString CLASSNAME::GetName() const \ wxString CLASSNAME::GetName() const \
{ \ { \
return wxS(#EDITOR); \ return wxS(#EDITOR); \
} \ } \
wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL; \ 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;
// //
@@ -269,7 +237,22 @@ public:
wxPGTextCtrlEditor() {} wxPGTextCtrlEditor() {}
virtual ~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 wxString GetName() const;
//virtual wxPGCellRenderer* GetCellRenderer() const; //virtual wxPGCellRenderer* GetCellRenderer() const;
@@ -301,7 +284,21 @@ public:
wxPGChoiceEditor() {} wxPGChoiceEditor() {}
virtual ~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 wxString GetName() const;
virtual void SetControlIntValue( wxPGProperty* property, virtual void SetControlIntValue( wxPGProperty* property,
@@ -336,8 +333,10 @@ public:
wxPGComboBoxEditor() {} wxPGComboBoxEditor() {}
virtual ~wxPGComboBoxEditor(); virtual ~wxPGComboBoxEditor();
// Macro is used for convenience due to different signature with wxPython virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPG_DECLARE_CREATECONTROLS wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const;
virtual wxString GetName() const; virtual wxString GetName() const;
@@ -365,8 +364,10 @@ public:
virtual ~wxPGChoiceAndButtonEditor(); virtual ~wxPGChoiceAndButtonEditor();
virtual wxString GetName() const; virtual wxString GetName() const;
// Macro is used for convenience due to different signature with wxPython virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid,
wxPG_DECLARE_CREATECONTROLS wxPGProperty* property,
const wxPoint& pos,
const wxSize& size) const;
DECLARE_DYNAMIC_CLASS(wxPGChoiceAndButtonEditor) DECLARE_DYNAMIC_CLASS(wxPGChoiceAndButtonEditor)
}; };
@@ -378,7 +379,11 @@ public:
wxPGTextCtrlAndButtonEditor() {} wxPGTextCtrlAndButtonEditor() {}
virtual ~wxPGTextCtrlAndButtonEditor(); virtual ~wxPGTextCtrlAndButtonEditor();
virtual wxString GetName() const; 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) DECLARE_DYNAMIC_CLASS(wxPGTextCtrlAndButtonEditor)
}; };
@@ -402,7 +407,21 @@ public:
virtual ~wxPGCheckBoxEditor(); virtual ~wxPGCheckBoxEditor();
virtual wxString GetName() const; 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, virtual void DrawValue( wxDC& dc,
const wxRect& rect, const wxRect& rect,
@@ -419,27 +438,15 @@ public:
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// Editor class registeration macros // Editor class registeration macro (mostly for internal use)
#define wxPGRegisterEditorClass(EDITOR) \ #define wxPGRegisterEditorClass(EDITOR) \
if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \ if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \
{ \ { \
wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \ 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 /** @class wxPGEditorDialogAdapter

View File

@@ -113,9 +113,9 @@ bool operator == (const wxArrayInt& array1, const wxArrayInt& array2)
#if wxUSE_SPINBTN #if wxUSE_SPINBTN
// This macro also defines global wxPGEditor_SpinCtrl for storing WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(SpinCtrl,
// the singleton class instance. wxPGSpinCtrlEditor,
WX_PG_IMPLEMENT_EDITOR_CLASS(SpinCtrl,wxPGSpinCtrlEditor,wxPGEditor) wxPGEditor)
// Trivial destructor. // Trivial destructor.
@@ -286,12 +286,15 @@ bool wxPGSpinCtrlEditor::OnEvent( wxPropertyGrid* propgrid, wxPGProperty* proper
class wxPGDatePickerCtrlEditor : public wxPGEditor class wxPGDatePickerCtrlEditor : public wxPGEditor
{ {
WX_PG_DECLARE_EDITOR_CLASS(wxPGDatePickerCtrlEditor) DECLARE_DYNAMIC_CLASS(wxPGDatePickerCtrlEditor)
public: public:
virtual ~wxPGDatePickerCtrlEditor(); 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 void UpdateControl( wxPGProperty* property, wxWindow* wnd ) const;
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd, wxEvent& event ) const; 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() wxPGDatePickerCtrlEditor::~wxPGDatePickerCtrlEditor()

View File

@@ -214,7 +214,7 @@ bool wxPGEditor::CanContainCustomImage() const
// wxPGTextCtrlEditor // wxPGTextCtrlEditor
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor) WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrl,wxPGTextCtrlEditor,wxPGEditor)
wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid, 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. // 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 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_INTERNAL_EDITOR_CLASS(ChoiceAndButton,
WX_PG_IMPLEMENT_EDITOR_CLASS(ChoiceAndButton,wxPGChoiceAndButtonEditor,wxPGChoiceEditor) wxPGChoiceAndButtonEditor,
wxPGChoiceEditor)
wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGrid, wxPGWindowList wxPGChoiceAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1136,9 +1139,9 @@ wxPGChoiceAndButtonEditor::~wxPGChoiceAndButtonEditor() { }
// wxPGTextCtrlAndButtonEditor // wxPGTextCtrlAndButtonEditor
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(TextCtrlAndButton,
// This simpler implement_editor macro doesn't define class body. wxPGTextCtrlAndButtonEditor,
WX_PG_IMPLEMENT_EDITOR_CLASS(TextCtrlAndButton,wxPGTextCtrlAndButtonEditor,wxPGTextCtrlEditor) wxPGTextCtrlEditor)
wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* propGrid, wxPGWindowList wxPGTextCtrlAndButtonEditor::CreateControls( wxPropertyGrid* propGrid,
@@ -1163,7 +1166,9 @@ wxPGTextCtrlAndButtonEditor::~wxPGTextCtrlAndButtonEditor() { }
#if wxPG_INCLUDE_CHECKBOX #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 // state argument: 0x01 = set if checked

View File

@@ -5351,6 +5351,14 @@ wxPGEditor* wxPropertyGrid::RegisterEditorClass( wxPGEditor* editorClass,
return 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 // Registers all default editor classes
void wxPropertyGrid::RegisterDefaultEditors() void wxPropertyGrid::RegisterDefaultEditors()
{ {