// Purpose: interface of wxPropertyGrid editors
// Author: wxWidgets team
// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@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,
(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,
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;
class wxSampleMultiButtonEditor : public wxPGTextCtrlEditor
{
- DECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor)
+ wxDECLARE_DYNAMIC_CLASS(wxSampleMultiButtonEditor);
+
public:
wxSampleMultiButtonEditor() {}
virtual ~wxSampleMultiButtonEditor() {}
wxEvent& event ) const;
};
- IMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor)
+ wxIMPLEMENT_DYNAMIC_CLASS(wxSampleMultiButtonEditor, wxPGTextCtrlEditor);
wxPGWindowList wxSampleMultiButtonEditor::CreateControls( wxPropertyGrid* propGrid,
wxPGProperty* property,
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);