// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
-// -----------------------------------------------------------------------
/**
@class wxPGEditor
public:
/** Constructor. */
- wxPGEditor()
- : wxObject()
- {
- m_clientData = NULL;
- }
+ wxPGEditor();
/** Destructor. */
virtual ~wxPGEditor();
@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
- property value being modified. This happens regardless of
- editor type (ie. behavior is same for any wxTextCtrl and
- wxComboBox based editor).
+ 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
+ wxComboBox based editor).
*/
virtual bool OnEvent( wxPropertyGrid* propgrid, wxPGProperty* property,
wxWindow* wnd_primary, wxEvent& event ) const = 0;
Returns @true if value was different.
*/
virtual bool GetValueFromControl( wxVariant& variant, wxPGProperty* property,
- wxWindow* ctrl ) const;
+ wxWindow* ctrl ) const;
/** Sets value in control to unspecified. */
virtual void SetValueToUnspecified( wxPGProperty* property,
- wxWindow* ctrl ) const = 0;
+ wxWindow* ctrl ) const = 0;
/** Sets control's value specifically from string. */
virtual void SetControlStringValue( wxPGProperty* property,
- wxWindow* ctrl, const wxString& txt ) const;
+ wxWindow* ctrl, const wxString& txt ) const;
/** Sets control's value specifically from int (applies to choice etc.). */
virtual void SetControlIntValue( wxPGProperty* property,
- wxWindow* ctrl, int value ) const;
+ wxWindow* ctrl, int value ) const;
/**
Inserts item to existing control. Index -1 means end of list.
Default implementation does nothing. Returns index of item added.
*/
- virtual int InsertItem( wxWindow* ctrl, const wxString& label,
- int index ) const;
+ virtual int InsertItem( wxWindow* ctrl, const wxString& label, int index ) const;
/**
Deletes item from existing control.
virtual void DeleteItem( wxWindow* ctrl, int index ) const;
/**
- Extra processing when control gains focus. For example, wxTextCtrl
- based controls should select all text.
+ Extra processing when control gains focus.
+ For example, wxTextCtrl based controls should select all text.
*/
virtual void OnFocus( wxPGProperty* property, wxWindow* wnd ) const;
/**
- Returns @true if control itself can contain the custom image. Default
- implementation returns @false.
+ Returns @true if control itself can contain the custom image.
+ Default implementation returns @false.
*/
virtual bool CanContainCustomImage() const;
};
-// -----------------------------------------------------------------------
+
/**
@class wxPGMultiButton
For instance, here we add three buttons to a TextCtrl editor:
@code
-
#include <wx/propgrid/editors.h>
class wxSampleMultiButtonEditor : public wxPGTextCtrlEditor
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);
}
-
@endcode
Further to use this editor, code like this can be used:
@code
-
// Register editor class - needs only to be called once
wxPGEditor* multiButtonEditor = new wxSampleMultiButtonEditor();
wxPropertyGrid::RegisterEditorClass( multiButtonEditor );
// Change property to use editor created in the previous code segment
propGrid->SetPropertyEditor( "MultipleButtons", multiButtonEditor );
-
@endcode
@library{wxpropgrid}
class WXDLLIMPEXP_PROPGRID wxPGMultiButton : public wxWindow
{
public:
-
/**
Constructor.
*/
wxWindow* GetButton( unsigned int i );
/**
- Returns Id of one of the buttons. This is utility function to be
- used in event handlers.
+ Returns Id of one of the buttons.
+ This is utility function to be used in event handlers.
*/
int GetButtonId( unsigned int i ) const;
wxSize GetPrimarySize() const;
};
-// -----------------------------------------------------------------------