X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/68bcfd2c10258b50924ad45391b6fbff0e83ce55..9869c26285dc51d13607cddaa04f65ce983653a5:/include/wx/propgrid/editors.h diff --git a/include/wx/propgrid/editors.h b/include/wx/propgrid/editors.h index 54bcdda98a..2f64ce10b0 100644 --- a/include/wx/propgrid/editors.h +++ b/include/wx/propgrid/editors.h @@ -4,16 +4,21 @@ // Author: Jaakko Salli // Modified by: // Created: 2007-04-14 -// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_PROPGRID_EDITORS_H_ #define _WX_PROPGRID_EDITORS_H_ +#include "wx/defs.h" + #if wxUSE_PROPGRID +class WXDLLIMPEXP_FWD_PROPGRID wxPGCell; +class WXDLLIMPEXP_FWD_PROPGRID wxPGProperty; +class WXDLLIMPEXP_FWD_PROPGRID wxPropertyGrid; + // ----------------------------------------------------------------------- // wxPGWindowList contains list of editor windows returned by CreateControls. @@ -30,7 +35,6 @@ public: wxWindow* m_primary; wxWindow* m_secondary; -#ifndef SWIG wxPGWindowList( wxWindow* a ) { m_primary = a; @@ -41,7 +45,6 @@ public: m_primary = a; m_secondary = b; }; -#endif }; // ----------------------------------------------------------------------- @@ -75,9 +78,7 @@ public: */ class WXDLLIMPEXP_PROPGRID wxPGEditor : public wxObject { -#ifndef SWIG DECLARE_ABSTRACT_CLASS(wxPGEditor) -#endif public: /** Constructor. */ @@ -114,17 +115,10 @@ public: @remarks - Primary control shall use id wxPG_SUBID1, and secondary (button) control shall use wxPG_SUBID2. - - Implementation shoud connect all necessary events to the - wxPropertyGrid::OnCustomEditorEvent. For Example: - @code - // Relays wxEVT_COMMAND_TEXT_UPDATED events of primary editor - // control to the OnEvent. - control->Connect(control->GetId(), wxEVT_COMMAND_TEXT_UPDATED, - wxCommandEventHandler(wxPropertyGrid::OnCustomEditorEvent), - NULL, propgrid); - @endcode - OnCustomEditorEvent will then forward events, first to - wxPGEditor::OnEvent() and then to wxPGProperty::OnEvent(). + - Unlike in previous version of wxPropertyGrid, it is no longer + necessary to call wxEvtHandler::Connect() for interesting editor + events. Instead, all events from control are now automatically + forwarded to wxPGEditor::OnEvent() and wxPGProperty::OnEvent(). */ virtual wxPGWindowList CreateControls(wxPropertyGrid* propgrid, wxPGProperty* property, @@ -154,15 +148,14 @@ public: (see wxPGProperty::OnEvent for more information). @remarks wxPropertyGrid will automatically unfocus the editor when - wxEVT_COMMAND_TEXT_ENTER is received and when it results in + wxEVT_TEXT_ENTER is received and when it results in property value being modified. This happens regardless of - editor type (ie. behavior is same for any wxTextCtrl and + editor type (ie. behaviour is same for any wxTextCtrl and wxComboBox based editor). */ virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property, wxWindow* wnd_primary, wxEvent& event ) const = 0; -#if !defined(SWIG) || defined(CREATE_VCW) /** Returns value from control, via parameter 'variant'. Usually ends up calling property's StringToValue or IntToValue. Returns true if value was different. @@ -170,11 +163,36 @@ public: virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const; -#endif - /** Sets value in control to unspecified. */ + /** + Sets new appearance for the control. Default implementation + sets foreground colour, background colour, font, plus text + for wxTextCtrl and wxComboCtrl. + + @param appearance + New appearance to be applied. + + @param oldAppearance + Previously applied appearance. Used to detect which + control attributes need to be changed (e.g. so we only + change background colour if really needed). + + @param unspecified + @true if the new appearance represents an unspecified + property value. + */ + virtual void SetControlAppearance( wxPropertyGrid* pg, + wxPGProperty* property, + wxWindow* ctrl, + const wxPGCell& appearance, + const wxPGCell& oldAppearance, + bool unspecified ) const; + + /** + Sets value in control to unspecified. + */ virtual void SetValueToUnspecified( wxPGProperty* property, - wxWindow* ctrl ) const = 0; + wxWindow* ctrl ) const; /** Sets control's value specifically from string. */ virtual void SetControlStringValue( wxPGProperty* property, @@ -221,7 +239,7 @@ wxString CLASSNAME::GetName() const \ { \ return wxS(#EDITOR); \ } \ -wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL; +wxPGEditor* wxPGEditor_##EDITOR = NULL; // @@ -230,9 +248,7 @@ wxPGEditor* wxPGEditor_##EDITOR = (wxPGEditor*) NULL; class WXDLLIMPEXP_PROPGRID wxPGTextCtrlEditor : public wxPGEditor { -#ifndef SWIG DECLARE_DYNAMIC_CLASS(wxPGTextCtrlEditor) -#endif public: wxPGTextCtrlEditor() {} virtual ~wxPGTextCtrlEditor(); @@ -250,8 +266,6 @@ public: virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property, wxWindow* ctrl ) const; - virtual void SetValueToUnspecified( wxPGProperty* property, - wxWindow* ctrl ) const; virtual wxString GetName() const; @@ -277,9 +291,7 @@ public: class WXDLLIMPEXP_PROPGRID wxPGChoiceEditor : public wxPGEditor { -#ifndef SWIG DECLARE_DYNAMIC_CLASS(wxPGChoiceEditor) -#endif public: wxPGChoiceEditor() {} virtual ~wxPGChoiceEditor(); @@ -326,9 +338,7 @@ public: class WXDLLIMPEXP_PROPGRID wxPGComboBoxEditor : public wxPGChoiceEditor { -#ifndef SWIG DECLARE_DYNAMIC_CLASS(wxPGComboBoxEditor) -#endif public: wxPGComboBoxEditor() {} virtual ~wxPGComboBoxEditor(); @@ -354,9 +364,6 @@ public: }; -// Exclude classes from being able to be derived from in wxPython bindings -#ifndef SWIG - class WXDLLIMPEXP_PROPGRID wxPGChoiceAndButtonEditor : public wxPGChoiceEditor { public: @@ -388,8 +395,6 @@ public: DECLARE_DYNAMIC_CLASS(wxPGTextCtrlAndButtonEditor) }; -#endif // !SWIG - #if wxPG_INCLUDE_CHECKBOX @@ -399,9 +404,7 @@ public: // class WXDLLIMPEXP_PROPGRID wxPGCheckBoxEditor : public wxPGEditor { -#ifndef SWIG DECLARE_DYNAMIC_CLASS(wxPGCheckBoxEditor) -#endif public: wxPGCheckBoxEditor() {} virtual ~wxPGCheckBoxEditor(); @@ -441,7 +444,7 @@ public: // Editor class registeration macro (mostly for internal use) #define wxPGRegisterEditorClass(EDITOR) \ - if ( wxPGEditor_##EDITOR == (wxPGEditor*) NULL ) \ + if ( wxPGEditor_##EDITOR == NULL ) \ { \ wxPGEditor_##EDITOR = wxPropertyGrid::RegisterEditorClass( \ new wxPG##EDITOR##Editor ); \ @@ -463,9 +466,7 @@ public: */ class WXDLLIMPEXP_PROPGRID wxPGEditorDialogAdapter : public wxObject { -#ifndef SWIG DECLARE_ABSTRACT_CLASS(wxPGEditorDialogAdapter) -#endif public: wxPGEditorDialogAdapter() : wxObject() @@ -514,6 +515,7 @@ class WXDLLIMPEXP_PROPGRID wxPGMultiButton : public wxWindow { public: wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz ); + virtual ~wxPGMultiButton() {} wxWindow* GetButton( unsigned int i ) { return (wxWindow*) m_buttons[i]; } const wxWindow* GetButton( unsigned int i ) const @@ -541,6 +543,8 @@ public: protected: + void DoAddButton( wxWindow* button, const wxSize& sz ); + int GenId( int id ) const; wxArrayPtrVoid m_buttons;