// Author: Jaakko Salli
// Modified by:
// Created: 2004-09-25
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
wxPGHashMapS2P m_mapEditorClasses;
#if wxUSE_VALIDATORS
- wxArrayPtrVoid m_arrValidators; // These wxValidators need to be freed
+ wxVector<wxValidator*> m_arrValidators; // These wxValidators need to be freed
#endif
wxPGHashMapS2P m_dictPropertyClassInfo; // PropertyName -> ClassInfo
*/
wxPG_EX_WRITEONLY_BUILTIN_ATTRIBUTES = 0x00400000,
-/**
- With this style Validators on properties will work same as in
- wxPropertyGrid 1.2.
-*/
-wxPG_EX_LEGACY_VALIDATORS = 0x00800000,
-
/** Hides page selection buttons from toolbar.
*/
wxPG_EX_HIDE_PAGE_BUTTONS = 0x01000000
typedef wxByte wxPGVFBFlags;
-/** @class wxPGValidationInfo
+/**
+ wxPGValidationInfo
Used to convey validation information to and from functions that
- actually perform validation.
+ actually perform validation. Mostly used in custom property
+ classes.
*/
-struct wxPGValidationInfo
+class WXDLLIMPEXP_PROPGRID wxPGValidationInfo
{
- /** Value to be validated.
+ friend class wxPropertyGrid;
+public:
+ /**
+ @return Returns failure behavior which is a combination of
+ @ref propgrid_vfbflags.
*/
- wxVariant* m_pValue;
+ wxPGVFBFlags GetFailureBehavior() const
+ { return m_failureBehavior; }
- /** Message displayed on validation failure.
+ /**
+ Returns current failure message.
*/
- wxString m_failureMessage;
+ const wxString& GetFailureMessage() const
+ { return m_failureMessage; }
- /** Validation failure behavior. Use wxPG_VFB_XXX flags.
+ /**
+ Returns reference to pending value.
*/
- wxPGVFBFlags m_failureBehavior;
+ const wxVariant& GetValue() const
+ {
+ wxASSERT(m_pValue);
+ return *m_pValue;
+ }
- wxPGVFBFlags GetFailureBehavior() const { return m_failureBehavior; }
+ /** Set validation failure behavior
+ @param failureBehavior
+ Mixture of @ref propgrid_vfbflags.
+ */
void SetFailureBehavior(wxPGVFBFlags failureBehavior)
{ m_failureBehavior = failureBehavior; }
- const wxString& GetFailureMessage() const { return m_failureMessage; }
-
+ /**
+ Set current failure message.
+ */
void SetFailureMessage(const wxString& message)
{ m_failureMessage = message; }
+
+private:
+ /** Value to be validated.
+ */
+ wxVariant* m_pValue;
+
+ /** Message displayed on validation failure.
+ */
+ wxString m_failureMessage;
+
+ /** Validation failure behavior. Use wxPG_VFB_XXX flags.
+ */
+ wxPGVFBFlags m_failureBehavior;
};
// -----------------------------------------------------------------------
wxPG_ACTION_CUT,
wxPG_ACTION_COPY,
wxPG_ACTION_PASTE,
+ wxPG_ACTION_PRESS_BUTTON, // Causes editor button (if any) to be pressed
wxPG_ACTION_MAX
};
#define wxPG_FL_IN_MANAGER 0x00020000
// Set after wxPropertyGrid is shown in its initial good size
#define wxPG_FL_GOOD_SIZE_SET 0x00040000
-// Next navigation key event will get ignored
-#define wxPG_FL_IGNORE_NEXT_NAVKEY 0x00080000
// Set when in SelectProperty.
#define wxPG_FL_IN_SELECT_PROPERTY 0x00100000
// Set when help string is shown in status bar
/** Returns current cell text colour. */
wxColour GetCellTextColour() const { return m_colPropFore; }
- /** Returns number of columns on current page. */
+ /**
+ Returns number of columns currently on grid.
+ */
int GetColumnCount() const
{
return m_pState->m_colWidths.size();
int GetRowHeight() const { return m_lineHeight; }
/** Returns currently selected property. */
- wxPGProperty* GetSelectedProperty () const { return GetSelection(); }
+ wxPGProperty* GetSelectedProperty() const { return GetSelection(); }
/** Returns currently selected property. */
wxPGProperty* GetSelection() const
Pointer to the editor class instance that should be used.
*/
static wxPGEditor* RegisterEditorClass( wxPGEditor* editor,
- const wxString& name,
bool noDefCheck = false );
#endif
return DoSelectProperty(p,focus?wxPG_SEL_FOCUS:0);
}
- /** Changes keyboard shortcut to push the editor button.
- @remarks
- You can set default with keycode 0. Good value for the platform is
- guessed, but don't expect it to be very accurate.
- */
- void SetButtonShortcut( int keycode,
- bool ctrlDown = false,
- bool altDown = false );
-
/** Sets category caption background colour. */
void SetCaptionBackgroundColour(const wxColour& col);
virtual width should be disabled. */
void SetVirtualWidth( int width );
- /** Sets name of a property.
- @param id
- Name or pointer of property which name to change.
- @param newname
- New name.
- */
- void SetPropertyName( wxPGPropArg id, const wxString& newname )
- {
- wxPG_PROP_ARG_CALL_PROLOG()
- DoSetPropertyName( p, newname );
- }
-
- /** Moves splitter as left as possible, while still allowing all
+ /**
+ Moves splitter as left as possible, while still allowing all
labels to be shown in full.
- @param subProps
- If false, will still allow sub-properties (ie. properties which
- parent is not root or category) to be cropped.
+
+ @param privateChildrenToo
+ If @false, will still allow private children to be cropped.
*/
- void SetSplitterLeft( bool subProps = false )
+ void SetSplitterLeft( bool privateChildrenToo = false )
{
- m_pState->SetSplitterLeft(subProps);
+ m_pState->SetSplitterLeft(privateChildrenToo);
}
/** Sets vertical spacing. Can be 1, 2, or 3 - a value relative to font
height. Value of 2 should be default on most platforms.
- @remarks
- On wxMSW, wxComboBox, when used as property editor widget, will spill
- out with anything less than 3.
*/
void SetVerticalSpacing( int vspacing )
{
const wxPGProperty* p2 ) const;
/** Returns pointer to current active primary editor control (NULL if none).
-
- If editor uses clipper window, pointer is returned to the actual
- editor, not the clipper.
*/
wxWindow* GetEditorControl() const;
- /** Adjusts given position if topCtrlWnd is child of clipper window.
- */
- bool AdjustPosForClipperWindow( wxWindow* topCtrlWnd, int* x, int* y );
-
wxWindow* GetPrimaryEditor() const
{
return GetEditorControl();
void OnComboItemPaint( wxPGCustomComboControl* pCb,int item,wxDC& dc,
wxRect& rect,int flags );
- // Used by simple check box for keyboard navigation
- void SendNavigationKeyEvent( int dir );
-
/** Standardized double-to-string conversion.
*/
static void DoubleToString( wxString& target,
wxBitmap *m_doubleBuffer;
#endif
- wxArrayPtrVoid *m_windowsToDelete;
-
/** Local time ms when control was created. */
wxLongLong m_timeCreated;
int m_fontHeight; // Height of the font.
- // Base keycode for triggering push button.
- int m_pushButKeyCode;
-
/** m_splitterx when drag began. */
int m_startingSplitterX;
unsigned char m_vspacing;
- // Does triggering push button need Alt down?
- unsigned char m_pushButKeyCodeNeedsAlt;
-
- // Does triggering push button need Ctrl down?
- unsigned char m_pushButKeyCodeNeedsCtrl;
-
// Used to track when Alt/Ctrl+Key was consumed.
unsigned char m_keyComboConsumed;
// Array of background colour brushes.
wxArrayPtrVoid m_arrBgBrushes;
+
// Array of foreground colours.
wxArrayPtrVoid m_arrFgCols;
// labels when properties use common values
- wxArrayPtrVoid m_commonValues;
+ wxVector<wxPGCommonValue*> m_commonValues;
+
// Which cv selection really sets value to unspecified?
int m_cvUnspecified;
void OnMouseUp( wxMouseEvent &event );
void OnKey( wxKeyEvent &event );
void OnKeyUp( wxKeyEvent &event );
- void OnNavigationKey( wxNavigationKeyEvent& event );
void OnResize( wxSizeEvent &event );
// event handlers
int CacheColour( const wxColour& colour );
- void DoSetPropertyName( wxPGProperty* p, const wxString& newname );
-
- // Setups event handling for child control
- void SetupEventHandling( wxWindow* wnd, int id );
+ // Sets up basic event handling for child control
+ void SetupChildEventHandling( wxWindow* wnd );
void CustomSetCursor( int type, bool override = false );
wxVariant* pValue = NULL,
unsigned int selFlags = 0 );
- void SetFocusOnCanvas()
- {
- m_canvas->SetFocusIgnoringChildren();
- m_editorFocused = 0;
- }
+ void SetFocusOnCanvas();
bool DoHideProperty( wxPGProperty* p, bool hide, int flags );
private:
- bool ButtonTriggerKeyTest( wxKeyEvent &event );
+ bool ButtonTriggerKeyTest( int action, wxKeyEvent& event );
#endif // DOXYGEN_SHOULD_SKIP_THIS
return *m_validationInfo;
}
- /** Returns true if event has associated property. */
- bool HasProperty() const { return ( m_property != (wxPGProperty*) NULL ); }
-
/** Returns true if you can veto the action that the event is signaling.
*/
bool CanVeto() const { return m_canVeto; }
wxASSERT_MSG( m_validationInfo,
"Only call GetValue from a handler "
"of event type that supports it" );
- return *m_validationInfo->m_pValue;
+ return m_validationInfo->GetValue();
}
/**
Only effective if Veto was also called, and only allowed if event type
is wxEVT_PG_CHANGING.
*/
- void SetValidationFailureBehavior( int flags )
+ void SetValidationFailureBehavior( wxPGVFBFlags flags )
{
wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
- m_validationInfo->m_failureBehavior = (wxPGVFBFlags) flags;
+ m_validationInfo->SetFailureBehavior( flags );
}
/** Sets custom failure message for this time only. Only applies if
void SetValidationFailureMessage( const wxString& message )
{
wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
- m_validationInfo->m_failureMessage = message;
+ m_validationInfo->SetFailureMessage( message );
}
#ifndef SWIG
wxPGVFBFlags GetValidationFailureBehavior() const
{
wxASSERT( GetEventType() == wxEVT_PG_CHANGING );
- return m_validationInfo->m_failureBehavior;
+ return m_validationInfo->GetFailureBehavior();
}
void SetCanVeto( bool canVeto ) { m_canVeto = canVeto; }