X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0b6a0a72722224b6aefc0cdbf946f0eac6ac6016..6cab632f3251ae1117d24544813f47c6597a3b34:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index 2dd01173d3..23cf2550e9 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -6,19 +6,23 @@ // Created: 2004-09-25 // RCS-ID: $Id$ // Copyright: (c) Jaakko Salli -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_PROPGRID_PROPGRID_H_ #define _WX_PROPGRID_PROPGRID_H_ +#include "wx/defs.h" + #if wxUSE_PROPGRID #include "wx/thread.h" #include "wx/dcclient.h" +#include "wx/control.h" #include "wx/scrolwin.h" #include "wx/tooltip.h" #include "wx/datetime.h" +#include "wx/recguard.h" #include "wx/propgrid/property.h" #include "wx/propgrid/propgridiface.h" @@ -30,12 +34,14 @@ extern WXDLLIMPEXP_DATA_PROPGRID(const char) wxPropertyGridNameStr[]; class wxPGComboBox; +#if wxUSE_STATUSBAR +class WXDLLIMPEXP_FWD_CORE wxStatusBar; +#endif + // ----------------------------------------------------------------------- // Global variables // ----------------------------------------------------------------------- -#ifndef SWIG - // This is required for sharing common global variables. class WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass { @@ -87,7 +93,10 @@ public: wxPGCachedString m_strMin; wxPGCachedString m_strMax; wxPGCachedString m_strUnits; + wxPGCachedString m_strHint; +#if wxPG_COMPATIBILITY_1_4 wxPGCachedString m_strInlineHelp; +#endif // If true then some things are automatically translated bool m_autoGetTranslation; @@ -102,7 +111,7 @@ public: int HasExtraStyle( int style ) const { return (m_extraStyle & style); } }; -extern WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass* wxPGGlobalVars; +extern WXDLLIMPEXP_DATA_PROPGRID(wxPGGlobalVarsClass*) wxPGGlobalVars; #define wxPGVariant_EmptyString (wxPGGlobalVars->m_vEmptyString) #define wxPGVariant_Zero (wxPGGlobalVars->m_vZero) @@ -116,8 +125,6 @@ extern WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass* wxPGGlobalVars; // then the built-in module system won't pick this one up. Add it manually. WXDLLIMPEXP_PROPGRID void wxPGInitResourceModule(); -#endif // !SWIG - // ----------------------------------------------------------------------- /** @section propgrid_window_styles wxPropertyGrid Window Styles @@ -151,8 +158,12 @@ wxPG_ALPHABETIC_MODE = (wxPG_HIDE_CATEGORIES|wxPG_AUTO_SORT), */ wxPG_BOLD_MODIFIED = 0x00000040, -/** When wxPropertyGrid is resized, splitter moves to the center. This - behavior stops once the user manually moves the splitter. +/** Using this style, the column splitters move automatically based on column + proportions (default is equal proportion for every column). This behavior + stops once the user manually moves a splitter, and returns when a + splitter is double-clicked. + + @see wxPropertyGridInterface::SetColumnProportion(). */ wxPG_SPLITTER_AUTO_CENTER = 0x00000080, @@ -192,8 +203,8 @@ wxPG_TOOLBAR = 0x00001000, */ wxPG_DESCRIPTION = 0x00002000, -/** wxPropertyGridManager only: don't show an internal border around - the property grid. +/** wxPropertyGridManager only: don't show an internal border around the + property grid. Recommended if you use a header. */ wxPG_NO_INTERNAL_BORDER = 0x00004000 }; @@ -385,12 +396,34 @@ wxPG_VFB_BEEP = 0x02, */ wxPG_VFB_MARK_CELL = 0x04, -/** Display customizable text message explaining the situation. +/** + Display a text message explaining the situation. + + To customize the way the message is displayed, you need to + reimplement wxPropertyGrid::DoShowPropertyError() in a + derived class. Default behavior is to display the text on + the top-level frame's status bar, if present, and otherwise + using wxMessageBox. */ wxPG_VFB_SHOW_MESSAGE = 0x08, +/** + Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the + message using wxMessageBox. +*/ +wxPG_VFB_SHOW_MESSAGEBOX = 0x10, + +/** + Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the + message on the status bar (when present - you can reimplement + wxPropertyGrid::GetStatusBar() in a derived class to specify + this yourself). +*/ +wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR = 0x20, + /** Defaults. */ -wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP, +wxPG_VFB_DEFAULT = wxPG_VFB_MARK_CELL | + wxPG_VFB_SHOW_MESSAGEBOX, /** Only used internally. */ wxPG_VFB_UNDEFINED = 0x80 @@ -400,7 +433,10 @@ wxPG_VFB_UNDEFINED = 0x80 /** @} */ -typedef wxByte wxPGVFBFlags; +// Having this as define instead of wxByte typedef makes things easier for +// wxPython bindings (ignoring and redefining it in SWIG interface file +// seemed rather tricky) +#define wxPGVFBFlags unsigned char /** wxPGValidationInfo @@ -413,6 +449,16 @@ class WXDLLIMPEXP_PROPGRID wxPGValidationInfo { friend class wxPropertyGrid; public: + wxPGValidationInfo() + { + m_failureBehavior = 0; + m_isFailing = false; + } + + ~wxPGValidationInfo() + { + } + /** @return Returns failure behavior which is a combination of @ref propgrid_vfbflags. @@ -461,6 +507,9 @@ private: /** Validation failure behavior. Use wxPG_VFB_XXX flags. */ wxPGVFBFlags m_failureBehavior; + + // True when validation is currently failing. + bool m_isFailing; }; // ----------------------------------------------------------------------- @@ -513,7 +562,18 @@ enum wxPG_KEYBOARD_ACTIONS // ----------------------------------------------------------------------- -#ifndef SWIG +// DoSetSplitterPosition() flags + +enum wxPG_SET_SPLITTER_POSITION_SPLITTER_FLAGS +{ + wxPG_SPLITTER_REFRESH = 0x0001, + wxPG_SPLITTER_ALL_PAGES = 0x0002, + wxPG_SPLITTER_FROM_EVENT = 0x0004, + wxPG_SPLITTER_FROM_AUTO_CENTER = 0x0008 +}; + + +// ----------------------------------------------------------------------- // Internal flags #define wxPG_FL_INITIALIZED 0x0001 @@ -549,10 +609,6 @@ enum wxPG_KEYBOARD_ACTIONS #define wxPG_FL_IN_SELECT_PROPERTY 0x00100000 // Set when help string is shown in status bar #define wxPG_FL_STRING_IN_STATUSBAR 0x00200000 -// Splitter position has been custom-set by the user -#define wxPG_FL_SPLITTER_PRE_SET 0x00400000 -// Validation failed. Clear on modify event. -#define wxPG_FL_VALIDATION_FAILED 0x00800000 // Auto sort is enabled (for categorized mode) #define wxPG_FL_CATMODE_AUTO_SORT 0x01000000 // Set after page has been inserted to manager @@ -569,9 +625,7 @@ enum wxPG_KEYBOARD_ACTIONS // Prevents RecalculateVirtualSize re-entrancy #define wxPG_FL_RECALCULATING_VIRTUAL_SIZE 0x80000000 -#endif // #ifndef SWIG - -#if !defined(__wxPG_SOURCE_FILE__) && !defined(SWIG) +#if !defined(__wxPG_SOURCE_FILE__) // Reduce compile time, but still include in user app #include "wx/propgrid/props.h" #endif @@ -637,6 +691,17 @@ enum wxPG_KEYBOARD_ACTIONS Respond to wxEVT_PG_LABEL_EDIT_ENDING event, generated when is about to end editing of a property label. You can veto this event to prevent the action. + @event{EVT_PG_COL_BEGIN_DRAG(id, func)} + Respond to wxEVT_PG_COL_BEGIN_DRAG event, generated when user + starts resizing a column - can be vetoed. + @event{EVT_PG_COL_DRAGGING,(id, func)} + Respond to wxEVT_PG_COL_DRAGGING, event, generated when a + column resize by user is in progress. This event is also generated + when user double-clicks the splitter in order to recenter + it. + @event{EVT_PG_COL_END_DRAG(id, func)} + Respond to wxEVT_PG_COL_END_DRAG event, generated after column + resize by user has finished. @endEventTable @remarks @@ -648,13 +713,15 @@ enum wxPG_KEYBOARD_ACTIONS @library{wxpropgrid} @category{propgrid} */ -class WXDLLIMPEXP_PROPGRID - wxPropertyGrid : public wxScrolledWindow, public wxPropertyGridInterface +class WXDLLIMPEXP_PROPGRID wxPropertyGrid : public wxControl, + public wxScrollHelper, + public wxPropertyGridInterface { friend class wxPropertyGridEvent; friend class wxPropertyGridPageState; friend class wxPropertyGridInterface; friend class wxPropertyGridManager; + friend class wxPGHeaderCtrl; DECLARE_DYNAMIC_CLASS(wxPropertyGrid) public: @@ -670,7 +737,7 @@ public: #endif /** The default constructor. The styles to be used are styles valid for - the wxWindow and wxScrolledWindow. + the wxWindow. @see @link wndflags Additional Window Styles @endlink */ @@ -685,12 +752,34 @@ public: /** Adds given key combination to trigger given action. + Here is a sample code to make Enter key press move focus to + the next property. + + @code + propGrid->AddActionTrigger(wxPG_ACTION_NEXT_PROPERTY, + WXK_RETURN); + propGrid->DedicateKey(WXK_RETURN); + @endcode + @param action Which action to trigger. See @link pgactions List of list of wxPropertyGrid actions@endlink. */ void AddActionTrigger( int action, int keycode, int modifiers = 0 ); + /** + Dedicates a specific keycode to wxPropertyGrid. This means that such + key presses will not be redirected to editor controls. + + Using this function allows, for example, navigation between + properties using arrow keys even when the focus is in the editor + control. + */ + void DedicateKey( int keycode ) + { + m_dedicatedKeys.push_back(keycode); + } + /** This static function enables or disables automatic use of wxGetTranslation for following strings: wxEnumProperty list labels, @@ -714,10 +803,11 @@ public: /** Centers the splitter. - If argument is true, automatic splitter centering is enabled (only - applicapple if style wxPG_SPLITTER_AUTO_CENTER was defined). + @param enableAutoResizing + If @true, automatic column resizing is enabled (only applicapple + if window style wxPG_SPLITTER_AUTO_CENTER is used). */ - void CenterSplitter( bool enable_auto_centering = false ); + void CenterSplitter( bool enableAutoResizing = false ); /** Deletes all properties. */ @@ -887,6 +977,9 @@ public: /** Returns background colour of margin. */ wxColour GetMarginColour() const { return m_colMargin; } + /** Returns margin width. */ + int GetMarginWidth() const { return m_marginWidth; } + /** Returns most up-to-date value of selected property. This will return value different from GetSelectedProperty()->GetValue() only when text @@ -912,9 +1005,13 @@ public: /** Returns current selection text colour. */ wxColour GetSelectionForegroundColour() const { return m_colSelFore; } - /** Returns current splitter x position. */ - int GetSplitterPosition() const - { return m_pState->DoGetSplitterPosition(0); } + /** + Returns current splitter x position. + */ + int GetSplitterPosition( unsigned int splitterIndex = 0 ) const + { + return m_pState->DoGetSplitterPosition(splitterIndex); + } /** Returns wxTextCtrl active in currently selected property, if any. Takes into account wxOwnerDrawnComboBox. @@ -944,7 +1041,7 @@ public: @param pt Coordinates in the virtual grid space. You may need to use - wxScrolledWindow::CalcScrolledPosition() for translating + wxScrolled::CalcScrolledPosition() for translating wxPropertyGrid client coordinates into something this member function can use. */ @@ -978,7 +1075,6 @@ public: */ virtual void RefreshProperty( wxPGProperty* p ); -#ifndef SWIG /** Registers a new editor class. @return Pointer to the editor class instance that should be used. @@ -992,12 +1088,22 @@ public: static wxPGEditor* DoRegisterEditorClass( wxPGEditor* editorClass, const wxString& editorName, bool noDefCheck = false ); -#endif /** Resets all colours to the original system values. */ void ResetColours(); + /** + Resets column sizes and splitter positions, based on proportions. + + @param enableAutoResizing + If @true, automatic column resizing is enabled (only applicapple + if window style wxPG_SPLITTER_AUTO_CENTER is used). + + @see wxPropertyGridInterface::SetColumnProportion() + */ + void ResetColumnSizes( bool enableAutoResizing = false ); + /** Selects a property. Editor widget is automatically created, but not focused unless focus is @@ -1169,10 +1275,9 @@ public: during form creation may fail as initial grid size is often smaller than desired splitter position, especially when sizers are being used. */ - void SetSplitterPosition( int newxpos, int col = 0 ) + void SetSplitterPosition( int newXPos, int col = 0 ) { - DoSetSplitterPosition_(newxpos, true, col); - m_iFlags |= wxPG_FL_SPLITTER_PRE_SET; + DoSetSplitterPosition(newXPos, col, wxPG_SPLITTER_REFRESH); } /** @@ -1214,6 +1319,41 @@ public: return m_sortFunction; } + /** + Sets appearance of value cells representing an unspecified property + value. Default appearance is blank. + + @remarks If you set the unspecified value to have any + textual representation, then that will override + "InlineHelp" attribute. + + @see wxPGProperty::SetValueToUnspecified(), + wxPGProperty::IsValueUnspecified() + */ + void SetUnspecifiedValueAppearance( const wxPGCell& cell ) + { + m_unspecifiedAppearance = m_propertyDefaultCell; + m_unspecifiedAppearance.MergeFrom(cell); + } + + /** + Returns current appearance of unspecified value cells. + + @see SetUnspecifiedValueAppearance() + */ + const wxPGCell& GetUnspecifiedValueAppearance() const + { + return m_unspecifiedAppearance; + } + + /** + Returns (visual) text representation of the unspecified + property value. + + @param argFlags For internal use only. + */ + wxString GetUnspecifiedValueText( int argFlags = 0 ) const; + /** Set virtual width for this particular page. Width -1 indicates that the virtual width should be disabled. */ void SetVirtualWidth( int width ); @@ -1357,7 +1497,7 @@ public: /** Returns rectangle that fully contains properties between and including - p1 and p2. + p1 and p2. Rectangle is in virtual scrolled window coordinates. */ wxRect GetPropertyRect( const wxPGProperty* p1, const wxPGProperty* p2 ) const; @@ -1388,20 +1528,6 @@ public: // Events from editor controls are forward to this function void HandleCustomEditorEvent( wxEvent &event ); -#ifndef SWIG - - /** - Generates contents for string dst based on the contents of - wxArrayString src. - - Format will be "(preDelim)str1(postDelim) (preDelim)str2(postDelim) and - so on. Set flags to 1 inorder to convert backslashes to double-back- - slashes and "(preDelims)"'s to "(preDelims)". - */ - static void ArrayStringToString( wxString& dst, const wxArrayString& src, - wxChar preDelim, wxChar postDelim, - int flags ); - // Mostly useful for page switching. void SwitchState( wxPropertyGridPageState* pNewState ); @@ -1493,12 +1619,38 @@ public: m_validationInfo.m_failureMessage.clear(); } - /** Override in derived class to display error messages in custom manner + /** + Override in derived class to display error messages in custom manner (these message usually only result from validation failure). + + @remarks If you implement this, then you also need to implement + DoHidePropertyError() - possibly to do nothing, if error + does not need hiding (e.g. it was logged or shown in a + message box). + + @see DoHidePropertyError() */ virtual void DoShowPropertyError( wxPGProperty* property, const wxString& msg ); + /** + Override in derived class to hide an error displayed by + DoShowPropertyError(). + + @see DoShowPropertyError() + */ + virtual void DoHidePropertyError( wxPGProperty* property ); + +#if wxUSE_STATUSBAR + /** + Return wxStatusBar that is used by this wxPropertyGrid. You can + reimplement this member function in derived class to override + the default behavior of using the top-level wxFrame's status + bar, if any. + */ + virtual wxStatusBar* GetStatusBar(); +#endif + /** Override to customize property validation failure behavior. @param invalidValue Value which failed in validation. @@ -1601,9 +1753,6 @@ public: virtual void Refresh( bool eraseBackground = true, const wxRect *rect = (const wxRect *) NULL ); virtual bool SetFont( const wxFont& font ); -#if wxPG_SUPPORT_TOOLTIPS - void SetToolTip( const wxString& tipString ); -#endif virtual void Freeze(); virtual void SetExtraStyle( long exStyle ); virtual void Thaw(); @@ -1691,12 +1840,7 @@ protected: /** Current cursor id. */ int m_curcursor; - /** - This captionFont is made equal to the font of the wxScrolledWindow. - - As extra the bold face is set on it when this is wanted by the user - (see flags) - */ + // Caption font. Same as normal font plus bold style. wxFont m_captionFont; int m_fontHeight; // Height of the font. @@ -1731,6 +1875,20 @@ protected: /** Actions and keys that trigger them. */ wxPGHashMapI2I m_actionTriggers; + /** Appearance of currently active editor. */ + wxPGCell m_editorAppearance; + + /** Appearance of a unspecified value cell. */ + wxPGCell m_unspecifiedAppearance; + + /** List of properties to be deleted/removed in idle event handler. */ + wxArrayPGProperty m_deletedProperties; + wxArrayPGProperty m_removedProperties; + + /** List of key codes that will not be handed over to editor controls. */ + // FIXME: Make this a hash set once there is template-based wxHashSet. + wxVector m_dedicatedKeys; + // // Temporary values // @@ -1762,16 +1920,21 @@ protected: unsigned char m_keyComboConsumed; /** 1 if in DoPropertyChanged() */ - unsigned char m_inDoPropertyChanged; + bool m_inDoPropertyChanged; /** 1 if in CommitChangesFromEditor() */ - unsigned char m_inCommitChangesFromEditor; + bool m_inCommitChangesFromEditor; /** 1 if in DoSelectProperty() */ - unsigned char m_inDoSelectProperty; + bool m_inDoSelectProperty; + + bool m_inOnValidationFailure; wxPGVFBFlags m_permanentValidationFailureBehavior; // Set by app + // DoEditorValidate() recursion guard + wxRecursionGuardFlag m_validatingEditor; + /** Internal flags - see wxPG_FL_XXX constants. */ wxUint32 m_iFlags; @@ -1944,7 +2107,7 @@ protected: void CorrectEditorWidgetPosY(); int DoDrawItems( wxDC& dc, - const wxRect* drawRect, + const wxRect* itemsRect, bool isBuffered ) const; /** Draws an expand/collapse (ie. +/-) button. @@ -1953,8 +2116,10 @@ protected: wxPGProperty* property ) const; /** Draws items from topitemy to bottomitemy */ - void DrawItems( wxDC& dc, unsigned int topitemy, unsigned int bottomitemy, - const wxRect* clip_rect = (const wxRect*) NULL ); + void DrawItems( wxDC& dc, + unsigned int topItemY, + unsigned int bottomItemY, + const wxRect* itemsRect = NULL ); // Translate wxKeyEvent to wxPG_ACTION_XXX int KeyEventToActions(wxKeyEvent &event, int* pSecond) const; @@ -1973,7 +2138,7 @@ protected: /** Reloads all non-customized colours from system settings. */ void RegainColours(); - bool DoEditorValidate(); + virtual bool DoEditorValidate(); // Similar to DoSelectProperty() but also works on columns // other than 1. Does not active editor if column is not @@ -1985,6 +2150,10 @@ protected: void DoSetSelection( const wxArrayPGProperty& newSelection, int selFlags = 0 ); + void DoSetSplitterPosition( int newxpos, + int splitterIndex = 0, + int flags = wxPG_SPLITTER_REFRESH ); + bool DoAddToSelection( wxPGProperty* prop, int selFlags = 0 ); @@ -1998,11 +2167,6 @@ protected: wxPGProperty* DoGetItemAtY( int y ) const; - void DoSetSplitterPosition_( int newxpos, - bool refresh = true, - int splitterIndex = 0, - bool allPages = false ); - void DestroyEditorWnd( wxWindow* wnd ); void FreeEditors(); @@ -2028,9 +2192,23 @@ protected: */ void RecalculateVirtualSize( int forceXPos = -1 ); + void SetEditorAppearance( const wxPGCell& cell, + bool unspecified = false ); + + void ResetEditorAppearance() + { + wxPGCell cell; + cell.SetEmptyData(); + SetEditorAppearance(cell, false); + } + void PrepareAfterItemsAdded(); - // Omit the wxPG_SEL_NOVALIDATE flag to allow vetoing the event + /** + Send event from the property grid. + + Omit the wxPG_SEL_NOVALIDATE flag to allow vetoing the event + */ bool SendEvent( int eventType, wxPGProperty* p, wxVariant* pValue = NULL, unsigned int selFlags = wxPG_SEL_NOVALIDATE, @@ -2045,7 +2223,6 @@ private: bool ButtonTriggerKeyTest( int action, wxKeyEvent& event ); DECLARE_EVENT_TABLE() -#endif // #ifndef SWIG }; // ----------------------------------------------------------------------- @@ -2053,7 +2230,6 @@ private: // Bunch of inlines that need to resolved after all classes have been defined. // -#ifndef SWIG inline bool wxPropertyGridPageState::IsDisplayed() const { return ( this == m_pPropGrid->GetState() ); @@ -2063,8 +2239,23 @@ inline unsigned int wxPropertyGridPageState::GetActualVirtualHeight() const { return DoGetRoot()->GetChildrenHeight(GetGrid()->GetRowHeight()); } + +inline wxString wxPGProperty::GetHintText() const +{ + wxVariant vHintText = GetAttribute(wxPGGlobalVars->m_strHint); + +#if wxPG_COMPATIBILITY_1_4 + // Try the old, deprecated "InlineHelp" + if ( vHintText.IsNull() ) + vHintText = GetAttribute(wxPGGlobalVars->m_strInlineHelp); #endif + if ( !vHintText.IsNull() ) + return vHintText.GetString(); + + return wxEmptyString; +} + inline int wxPGProperty::GetDisplayedCommonValueCount() const { if ( HasFlag(wxPG_PROP_USES_COMMON_VALUE) ) @@ -2086,11 +2277,6 @@ inline void wxPGProperty::SetEditor( const wxString& editorName ) m_customEditor = wxPropertyGridInterface::GetEditorByName(editorName); } -inline bool wxPGProperty::Hide( bool hide, int flags ) -{ - return GetGrid()->HideProperty(this, hide, flags); -} - inline bool wxPGProperty::SetMaxLength( int maxLen ) { return GetGrid()->SetPropertyMaxLength(this,maxLen); @@ -2115,6 +2301,12 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_LABEL_EDIT_BEGIN, wxPropertyGridEvent ); wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_LABEL_EDIT_ENDING, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, + wxEVT_PG_COL_BEGIN_DRAG, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, + wxEVT_PG_COL_DRAGGING, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, + wxEVT_PG_COL_END_DRAG, wxPropertyGridEvent ); #else enum { @@ -2128,7 +2320,10 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_EXPANDED, wxEVT_PG_DOUBLE_CLICK, wxEVT_PG_LABEL_EDIT_BEGIN, - wxEVT_PG_LABEL_EDIT_ENDING + wxEVT_PG_LABEL_EDIT_ENDING, + wxEVT_PG_COL_BEGIN_DRAG, + wxEVT_PG_COL_DRAGGING, + wxEVT_PG_COL_END_DRAG }; #endif @@ -2140,17 +2335,20 @@ wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, #ifndef SWIG typedef void (wxEvtHandler::*wxPropertyGridEventFunction)(wxPropertyGridEvent&); -#define EVT_PG_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_SELECTED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGING, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_HIGHLIGHTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_HIGHLIGHTED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_RIGHT_CLICK, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_DOUBLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_DOUBLE_CLICK, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_PAGE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_PAGE_CHANGED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_ITEM_COLLAPSED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_COLLAPSED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_ITEM_EXPANDED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_EXPANDED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_LABEL_EDIT_BEGIN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_LABEL_EDIT_BEGIN, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), -#define EVT_PG_LABEL_EDIT_ENDING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_LABEL_EDIT_ENDING, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_SELECTED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_SELECTED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_CHANGING(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGING, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_CHANGED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_HIGHLIGHTED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_HIGHLIGHTED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_RIGHT_CLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_RIGHT_CLICK, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_DOUBLE_CLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_DOUBLE_CLICK, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_PAGE_CHANGED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_PAGE_CHANGED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_ITEM_COLLAPSED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_COLLAPSED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_ITEM_EXPANDED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_EXPANDED, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_LABEL_EDIT_BEGIN(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_LABEL_EDIT_BEGIN, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_LABEL_EDIT_ENDING(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_LABEL_EDIT_ENDING, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_COL_BEGIN_DRAG(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_COL_BEGIN_DRAG, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_COL_DRAGGING(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_COL_DRAGGING, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), +#define EVT_PG_COL_END_DRAG(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_COL_END_DRAG, id, -1, wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ), NULL ), #define wxPropertyGridEventHandler(fn) \ wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ) @@ -2172,10 +2370,10 @@ public: /** Constructor. */ wxPropertyGridEvent(wxEventType commandType=0, int id=0); -#ifndef SWIG + /** Copy constructor. */ wxPropertyGridEvent(const wxPropertyGridEvent& event); -#endif + /** Destructor. */ ~wxPropertyGridEvent(); @@ -2184,6 +2382,8 @@ public: /** Returns the column index associated with this event. + For the column dragging events, it is the column to the left + of the splitter being dragged */ unsigned int GetColumn() const { @@ -2283,7 +2483,6 @@ public: m_validationInfo->SetFailureMessage( message ); } -#ifndef SWIG wxPGVFBFlags GetValidationFailureBehavior() const { wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); @@ -2341,8 +2540,6 @@ private: bool m_canVeto; bool m_wasVetoed; - -#endif }; @@ -2463,7 +2660,6 @@ protected: #undef wxPG_FL_MOUSE_CAPTURED #undef wxPG_FL_INITIALIZED #undef wxPG_FL_ACTIVATION_BY_CLICK - #undef wxPG_FL_DONT_CENTER_SPLITTER #undef wxPG_SUPPORT_TOOLTIPS #undef wxPG_DOUBLE_BUFFER #undef wxPG_ICON_WIDTH