X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0ad10f30552aaeea5579388a7988504f4b4a2bf2..50d4763f1710f6e45ac6af7112d1ce9effe93bc4:/interface/wx/propgrid/editors.h diff --git a/interface/wx/propgrid/editors.h b/interface/wx/propgrid/editors.h index fbbe8a5f20..8f563a05d7 100644 --- a/interface/wx/propgrid/editors.h +++ b/interface/wx/propgrid/editors.h @@ -3,7 +3,7 @@ // Purpose: interface of wxPropertyGrid editors // Author: wxWidgets team // RCS-ID: $Id$ -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -70,17 +70,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 - control->Connect(control->GetId(), wxEVT_COMMAND_TEXT_UPDATED, - wxEventHandler(wxPropertyGrid::OnCustomEditorEvent), - NULL, propgrid); - @endcode - OnCustomEditorEvent will then forward events, first to - wxPGEditor::OnEvent() and then to wxPGProperty::OnEvent(). - - @see wxPropertyGrid::OnCustomEditorEvent(), wxEvtHandler::Connect() + - 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, @@ -101,9 +94,9 @@ 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 + @c wxEVT_COMMAND_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, @@ -121,6 +114,27 @@ public: virtual void SetValueToUnspecified( wxPGProperty* property, wxWindow* ctrl ) const = 0; + /** + Called by property grid to set new appearance for the control. + Default implementation sets foreground colour, background colour, + font, plus text for wxTextCtrl and wxComboCtrl. + + The parameter @a appearance represents the new appearance to be applied. + + The parameter @a oldAppearance is the previously applied appearance. + Used to detect which control attributes need to be changed (e.g. so we only + change background colour if really needed). + + Finally, the parameter @a unspecified if @true tells this function that + 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 control's value specifically from string. */ virtual void SetControlStringValue( wxPGProperty* property, wxWindow* ctrl, const wxString& txt ) const; @@ -170,7 +184,8 @@ public: class wxSampleMultiButtonEditor : public wxPGTextCtrlEditor { - DECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor) + wxDECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor); + public: wxSampleMultiButtonEditor() {} virtual ~wxSampleMultiButtonEditor() {} @@ -187,7 +202,7 @@ public: wxEvent& event ) const; }; - IMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor) + wxIMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor); wxPGWindowList wxSampleMultiButtonEditor::CreateControls( wxPropertyGrid* propGrid, wxPGProperty* property, @@ -227,18 +242,19 @@ public: if ( event.GetId() == buttons->GetButtonId(0) ) { - // Do something when first button is pressed - return true; + // Do something when the first button is pressed + // Return true if the action modified the value in editor. + ... } if ( event.GetId() == buttons->GetButtonId(1) ) { - // Do something when second button is pressed - return true; + // Do something when the second button is pressed + ... } if ( event.GetId() == buttons->GetButtonId(2) ) { - // Do something when third button is pressed - return true; + // Do something when the third button is pressed + ... } } return wxPGTextCtrlEditor::OnEvent(propGrid, property, ctrl, event);