// 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);
/** Sets background colour of margin. */
void SetMarginColour(const wxColour& col);
- /** Sets property attribute for all applicapple properties.
- Be sure to use this method only after all properties have been
- added to the grid.
- */
- void SetPropertyAttributeAll( const wxString& attrName, wxVariant value );
-
/** Sets background colour of property and all its children. Colours of
captions are not affected. Background brush cache is optimized for often
set colours to be set last.
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();
+
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; }