X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7a344f1be4ff59b7b150ab52265693d4219de973..d58526d55433162cef8ad2ed7f422689862c3019:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index 65ab06c805..6001261918 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -4,7 +4,7 @@ // Author: Jaakko Salli // Modified by: // Created: 2004-09-25 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -24,9 +24,10 @@ #ifndef SWIG -extern WXDLLIMPEXP_PROPGRID const wxChar *wxPropertyGridNameStr; +extern WXDLLIMPEXP_DATA_PROPGRID(const char) wxPropertyGridNameStr[]; #endif +class wxPGComboBox; // ----------------------------------------------------------------------- // Global variables @@ -49,7 +50,7 @@ public: wxPGHashMapS2P m_mapEditorClasses; #if wxUSE_VALIDATORS - wxArrayPtrVoid m_arrValidators; // These wxValidators need to be freed + wxVector m_arrValidators; // These wxValidators need to be freed #endif wxPGHashMapS2P m_dictPropertyClassInfo; // PropertyName -> ClassInfo @@ -86,9 +87,7 @@ public: int m_extraStyle; // global extra style -#ifdef __WXDEBUG__ int m_warnings; -#endif int HasExtraStyle( int style ) const { return (m_extraStyle & style); } }; @@ -241,12 +240,6 @@ wxPG_EX_AUTO_UNSPECIFIED_VALUES = 0x00200000, */ 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 @@ -346,34 +339,65 @@ wxPG_VFB_UNDEFINED = 0x80 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; }; // ----------------------------------------------------------------------- @@ -393,9 +417,7 @@ enum wxPG_KEYBOARD_ACTIONS wxPG_ACTION_EXPAND_PROPERTY, wxPG_ACTION_COLLAPSE_PROPERTY, wxPG_ACTION_CANCEL_EDIT, - wxPG_ACTION_CUT, - wxPG_ACTION_COPY, - wxPG_ACTION_PASTE, + wxPG_ACTION_PRESS_BUTTON, // Causes editor button (if any) to be pressed wxPG_ACTION_MAX }; @@ -457,8 +479,6 @@ enum wxPG_KEYBOARD_ACTIONS #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 @@ -467,14 +487,14 @@ enum wxPG_KEYBOARD_ACTIONS #define wxPG_FL_SPLITTER_PRE_SET 0x00400000 // Validation failed. Clear on modify event. #define wxPG_FL_VALIDATION_FAILED 0x00800000 -// Set if selected is fully painted (ie. both image and text) -//#define wxPG_FL_SELECTED_IS_FULL_PAINT 0x01000000 +// Auto sort is enabled (for categorized mode) +#define wxPG_FL_CATMODE_AUTO_SORT 0x01000000 // Set after page has been inserted to manager #define wxPG_MAN_FL_PAGE_INSERTED 0x02000000 // Active editor control is abnormally large #define wxPG_FL_ABNORMAL_EDITOR 0x04000000 -// Recursion guard for OnCustomEditorEvent -#define wxPG_FL_IN_ONCUSTOMEDITOREVENT 0x08000000 +// Recursion guard for HandleCustomEditorEvent +#define wxPG_FL_IN_HANDLECUSTOMEDITOREVENT 0x08000000 #define wxPG_FL_VALUE_CHANGE_IN_EVENT 0x10000000 // Editor control width should not change on resize #define wxPG_FL_FIXED_WIDTH_EDITOR 0x20000000 @@ -593,19 +613,21 @@ public: /** The default constructor. The styles to be used are styles valid for the wxWindow and wxScrolledWindow. - @see @link wndflags Additional Window Styles@endlink + + @see @link wndflags Additional Window Styles @endlink */ wxPropertyGrid( wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxPG_DEFAULT_STYLE, - const wxChar* name = wxPropertyGridNameStr ); + const wxString& name = wxPropertyGridNameStr ); /** Destructor */ virtual ~wxPropertyGrid(); #endif /** Adds given key combination to trigger given action. + @param action Which action to trigger. See @link pgactions List of list of wxPropertyGrid actions@endlink. @@ -672,7 +694,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxPG_DEFAULT_STYLE, - const wxChar* name = wxPropertyGridNameStr ); + const wxString& name = wxPropertyGridNameStr ); /** Call when editor widget's contents is modified. @@ -758,10 +780,12 @@ public: /** Returns current cell text colour. */ wxColour GetCellTextColour() const { return m_colPropFore; } - /** Returns number of columns on current page. */ - int GetColumnCount() const + /** + Returns number of columns currently on grid. + */ + unsigned int GetColumnCount() const { - return m_pState->m_colWidths.size(); + return (unsigned int) m_pState->m_colWidths.size(); } /** Returns colour of empty space below properties. */ @@ -806,11 +830,13 @@ public: /** Returns background colour of margin. */ wxColour GetMarginColour() const { return m_colMargin; } - /** Returns cell background colour of a property. */ - wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const; - - /** Returns cell background colour of a property. */ - wxColour GetPropertyTextColour( wxPGPropArg id ) const; + /** + Returns most up-to-date value of selected property. This will return + value different from GetSelectedProperty()->GetValue() only when text + editor is activate and string edited by user represents valid, + uncommitted property value. + */ + wxVariant GetUncommittedPropertyValue(); /** Returns "root property". It does not have name, etc. and it is not visible. It is only useful for accessing its children. @@ -821,7 +847,7 @@ public: 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 @@ -852,15 +878,24 @@ public: /** Returns current vertical spacing. */ int GetVerticalSpacing() const { return (int)m_vspacing; } + /** + Returns @true if a property editor control has focus. + */ + bool IsEditorFocused() const; + /** Returns true if editor's value was marked modified. */ bool IsEditorsValueModified() const { return ( m_iFlags & wxPG_FL_VALUE_MODIFIED ) ? true : false; } - /** Returns information about arbitrary position in the grid. + /** + Returns information about arbitrary position in the grid. - For wxPropertyGridHitTestResult definition, see - wxPropertyGridPageState::HitTest(). + @param pt + Coordinates in the virtual grid space. You may need to use + wxScrolledWindow::CalcScrolledPosition() for translating + wxPropertyGrid client coordinates into something this member + function can use. */ wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; @@ -907,15 +942,6 @@ public: 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); @@ -965,22 +991,6 @@ public: /** Sets background colour of margin. */ void SetMarginColour(const wxColour& col); - /** 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. - */ - void SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& col ); - - /** Resets text and background colours of given property. - */ - void SetPropertyColoursToDefault( wxPGPropArg id ); - - /** Sets text colour of property and all its children. - */ - void SetPropertyTextColour( wxPGPropArg id, - const wxColour& col, - bool recursively = true ); - /** Sets selection background colour - applies to selected property name background. @@ -1005,38 +1015,63 @@ public: m_iFlags |= wxPG_FL_SPLITTER_PRE_SET; } - /** Set virtual width for this particular page. Width -1 indicates that the - virtual width should be disabled. */ - void SetVirtualWidth( int width ); + /** + Sets the property sorting function. + + @param sortFunction + The sorting function to be used. It should return a value greater + than 0 if position of p1 is after p2. So, for instance, when + comparing property names, you can use following implementation: + + @code + int MyPropertySortFunction(wxPropertyGrid* propGrid, + wxPGProperty* p1, + wxPGProperty* p2) + { + return p1->GetBaseName().compare( p2->GetBaseName() ); + } + @endcode - /** Sets name of a property. - @param id - Name or pointer of property which name to change. - @param newname - New name. + @remarks + Default property sort function sorts properties by their labels + (case-insensitively). + + @see GetSortFunction, wxPropertyGridInterface::Sort, + wxPropertyGridInterface::SortChildren */ - void SetPropertyName( wxPGPropArg id, const wxString& newname ) + void SetSortFunction( wxPGSortCallback sortFunction ) { - wxPG_PROP_ARG_CALL_PROLOG() - DoSetPropertyName( p, newname ); + m_sortFunction = sortFunction; + } + + /** + Returns the property sort function (default is @NULL). + + @see SetSortFunction + */ + wxPGSortCallback GetSortFunction() const + { + return m_sortFunction; } - /** Moves splitter as left as possible, while still allowing all + /** Set virtual width for this particular page. Width -1 indicates that the + virtual width should be disabled. */ + void SetVirtualWidth( int width ); + + /** + 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 ) { @@ -1052,13 +1087,6 @@ public: DoShowPropertyError(p, msg); } - /** Sorts all items at all levels (except sub-properties). */ - void Sort(); - - /** Sorts children of a category. - */ - void SortChildren( wxPGPropArg id ); - ///////////////////////////////////////////////////////////////// // // Following methods do not need to be (currently) documented @@ -1077,7 +1105,7 @@ public: */ unsigned int GetCommonValueCount() const { - return m_commonValues.size(); + return (unsigned int) m_commonValues.size(); } /** Returns label of given common value. @@ -1173,16 +1201,9 @@ public: 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(); @@ -1197,6 +1218,14 @@ public: return m_wndEditor2; } + /** + Refreshes any active editor control. + */ + void RefreshEditor(); + + // Events from editor controls are forward to this function + void HandleCustomEditorEvent( wxEvent &event ); + #ifndef SWIG /** @@ -1214,21 +1243,19 @@ public: // Mostly useful for page switching. void SwitchState( wxPropertyGridPageState* pNewState ); - /** Pass this function to Connect calls in propertyclass::CreateEditor. - */ - void OnCustomEditorEvent( wxCommandEvent &event ); - long GetInternalFlags() const { return m_iFlags; } + bool HasInternalFlag( long flag ) const + { return (m_iFlags & flag) ? true : false; } void SetInternalFlag( long flag ) { m_iFlags |= flag; } void ClearInternalFlag( long flag ) { m_iFlags &= ~(flag); } void IncFrozen() { m_frozen++; } void DecFrozen() { m_frozen--; } - void OnComboItemPaint( wxPGCustomComboControl* pCb,int item,wxDC& dc, - wxRect& rect,int flags ); - - // Used by simple check box for keyboard navigation - void SendNavigationKeyEvent( int dir ); + void OnComboItemPaint( const wxPGComboBox* pCb, + int item, + wxDC* pDc, + wxRect& rect, + int flags ); /** Standardized double-to-string conversion. */ @@ -1264,12 +1291,6 @@ public: virtual bool DoPropertyChanged( wxPGProperty* p, unsigned int selFlags = 0 ); - /** - Runs all validation functionality (includes sending wxEVT_PG_CHANGING). - Returns true if all tests passed. - */ - virtual bool PerformValidation( wxPGProperty* p, wxVariant& pendingValue ); - /** Called when validation for given property fails. @param invalidValue Value which failed in validation. @@ -1280,12 +1301,8 @@ public: To add your own validation failure behavior, override wxPropertyGrid::DoOnValidationFailure(). */ - bool OnValidationFailure( wxPGProperty* property, wxVariant& invalidValue ) - { - bool res = DoOnValidationFailure(property, invalidValue); - property->SetFlag(wxPG_PROP_INVALID_VALUE); - return res; - } + bool OnValidationFailure( wxPGProperty* property, + wxVariant& invalidValue ); /** Called to indicate property and editor has valid value now. */ @@ -1337,6 +1354,23 @@ public: */ bool UnfocusEditor(); + virtual void SetWindowStyleFlag( long style ); + + void DrawItems( const wxPGProperty* p1, const wxPGProperty* p2 ); + + void DrawItem( wxPGProperty* p ) + { + DrawItems(p,p); + } + + virtual void DrawItemAndChildren( wxPGProperty* p ); + + /** + Draws item, children, and consequtive parents as long as category is + not met. + */ + void DrawItemAndValueRelated( wxPGProperty* p ); + protected: /** @@ -1347,12 +1381,36 @@ protected: */ virtual wxPropertyGridPageState* CreateState() const; -#ifndef DOXYGEN + enum PerformValidationFlags + { + SendEvtChanging = 0x0001, + IsStandaloneValidation = 0x0002 // Not called in response to event + }; + + /** + Runs all validation functionality (includes sending wxEVT_PG_CHANGING). + Returns true if all tests passed. Implement in derived class to + add additional validation behavior. + */ + virtual bool PerformValidation( wxPGProperty* p, + wxVariant& pendingValue, + int flags = SendEvtChanging ); + public: // Control font changer helper. void SetCurControlBoldFont(); + wxPGCell& GetPropertyDefaultCell() + { + return m_propertyDefaultCell; + } + + wxPGCell& GetCategoryDefaultCell() + { + return m_categoryDefaultCell; + } + // // Public methods for semi-public use // (not protected for optimization) @@ -1361,7 +1419,6 @@ public: // Overridden functions. virtual bool Destroy(); - virtual wxSize DoGetBestSize() const; // Returns property at given y coordinate (relative to grid's top left). wxPGProperty* GetItemAtY( int y ) const { return DoGetItemAtY(y); } @@ -1377,6 +1434,7 @@ public: protected: + virtual wxSize DoGetBestSize() const; #ifndef wxPG_ICON_WIDTH wxBitmap *m_expandbmp, *m_collbmp; @@ -1395,8 +1453,6 @@ protected: wxBitmap *m_doubleBuffer; #endif - wxArrayPtrVoid *m_windowsToDelete; - /** Local time ms when control was created. */ wxLongLong m_timeCreated; @@ -1472,9 +1528,6 @@ protected: int m_fontHeight; // Height of the font. - // Base keycode for triggering push button. - int m_pushButKeyCode; - /** m_splitterx when drag began. */ int m_startingSplitterX; @@ -1532,12 +1585,6 @@ protected: 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; @@ -1580,6 +1627,9 @@ protected: // Top level parent wxWindow* m_tlp; + // Sort function + wxPGSortCallback m_sortFunction; + // y coordinate of property that mouse hovering int m_propHoverY; // Which column's editor is selected (usually 1)? @@ -1610,15 +1660,20 @@ protected: // background colour for empty space below the grid wxColour m_colEmptySpace; - // NB: These *cannot* be moved to globals. + // Default property colours + wxPGCell m_propertyDefaultCell; + + // Default property category + wxPGCell m_categoryDefaultCell; - // Array of background colour brushes. - wxArrayPtrVoid m_arrBgBrushes; - // Array of foreground colours. - wxArrayPtrVoid m_arrFgCols; + // Backup of selected property's cells + wxVector m_propCellsBackup; + + // NB: These *cannot* be moved to globals. // labels when properties use common values - wxArrayPtrVoid m_commonValues; + wxVector m_commonValues; + // Which cv selection really sets value to unspecified? int m_cvUnspecified; @@ -1643,8 +1698,6 @@ protected: void OnMouseDoubleClick( wxMouseEvent &event ); void OnMouseUp( wxMouseEvent &event ); void OnKey( wxKeyEvent &event ); - void OnKeyUp( wxKeyEvent &event ); - void OnNavigationKey( wxNavigationKeyEvent& event ); void OnResize( wxSizeEvent &event ); // event handlers @@ -1653,9 +1706,7 @@ protected: bool HandleMouseRightClick( int x, unsigned int y, wxMouseEvent &event ); bool HandleMouseDoubleClick( int x, unsigned int y, wxMouseEvent &event ); bool HandleMouseUp( int x, unsigned int y, wxMouseEvent &event ); - void HandleKeyEvent( wxKeyEvent &event ); - // Handle TAB and ESCAPE in control - bool HandleChildKey( wxKeyEvent& event ); + void HandleKeyEvent( wxKeyEvent &event, bool fromChild ); void OnMouseEntry( wxMouseEvent &event ); @@ -1672,7 +1723,6 @@ protected: void OnMouseMoveChild( wxMouseEvent &event ); void OnMouseUpChild( wxMouseEvent &event ); void OnChildKeyDown( wxKeyEvent &event ); - void OnChildKeyUp( wxKeyEvent &event ); void OnCaptureChange( wxMouseCaptureChangedEvent &event ); @@ -1701,23 +1751,14 @@ protected: */ void CorrectEditorWidgetPosY(); -#ifdef __WXDEBUG__ - void _log_items(); - void OnScreenNote( const wxChar* format, ... ); -#endif - /** Deselect current selection, if any. Returns true if success (ie. validator did not intercept). */ bool DoClearSelection(); int DoDrawItems( wxDC& dc, - const wxPGProperty* first_item, - const wxPGProperty* last_item, - const wxRect* clip_rect, + const wxRect* clipRect, bool isBuffered ) const; - void DoSetPropertyValueUnspecified( wxPGProperty* p ); - /** Draws an expand/collapse (ie. +/-) button. */ virtual void DrawExpanderButton( wxDC& dc, const wxRect& rect, @@ -1727,21 +1768,6 @@ protected: void DrawItems( wxDC& dc, unsigned int topitemy, unsigned int bottomitemy, const wxRect* clip_rect = (const wxRect*) NULL ); - void DrawItems( const wxPGProperty* p1, const wxPGProperty* p2 ); - - void DrawItem( wxPGProperty* p ) - { - DrawItems(p,p); - } - - virtual void DrawItemAndChildren( wxPGProperty* p ); - - /** - Draws item, children, and consequtive parents as long as category is - not met. - */ - void DrawItemAndValueRelated( wxPGProperty* p ); - // Translate wxKeyEvent to wxPG_ACTION_XXX int KeyEventToActions(wxKeyEvent &event, int* pSecond) const; @@ -1781,24 +1807,11 @@ protected: static void RegisterDefaultEditors(); - // Sets m_bgColIndex to this property and all its children. - void SetBackgroundColourIndex( wxPGProperty* p, int index ); - - // Sets m_fgColIndex to this property and all its children. - void SetTextColourIndex( wxPGProperty* p, int index, int flags ); - - int CacheColour( const wxColour& colour ); - - void DoSetPropertyName( wxPGProperty* p, const wxString& newname ); - // Sets up basic event handling for child control - void SetupChildEventHandling( wxWindow* wnd, int id ); + void SetupChildEventHandling( wxWindow* wnd ); void CustomSetCursor( int type, bool override = false ); - virtual bool ProcessEvent(wxEvent& event); - virtual void SetWindowStyleFlag( long style ); - /** Repositions scrollbar and underlying panel according to changed virtual size. @@ -1812,21 +1825,14 @@ protected: 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 - -private: DECLARE_EVENT_TABLE() #endif // #ifndef SWIG }; @@ -1854,7 +1860,7 @@ inline int wxPGProperty::GetDisplayedCommonValueCount() const { wxPropertyGrid* pg = GetGrid(); if ( pg ) - return pg->GetCommonValueCount(); + return (int) pg->GetCommonValueCount(); } return 0; } @@ -1881,22 +1887,20 @@ inline bool wxPGProperty::SetMaxLength( int maxLen ) // ----------------------------------------------------------------------- +#define wxPG_BASE_EVT_PRE_ID 1775 #ifndef SWIG -#define wxPG_BASE_EVT_PRE_ID 1775 +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_SELECTED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGING, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_HIGHLIGHTED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_RIGHT_CLICK, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_PAGE_CHANGED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_COLLAPSED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_EXPANDED, wxPropertyGridEvent ); +wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_PROPGRID, wxEVT_PG_DOUBLE_CLICK, wxPropertyGridEvent ); -BEGIN_DECLARE_EVENT_TYPES() - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_SELECTED, wxPG_BASE_EVT_PRE_ID) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGING, wxPG_BASE_EVT_PRE_ID+1) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_CHANGED, wxPG_BASE_EVT_PRE_ID+2) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_HIGHLIGHTED, wxPG_BASE_EVT_PRE_ID+3) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_RIGHT_CLICK, wxPG_BASE_EVT_PRE_ID+4) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_PAGE_CHANGED, wxPG_BASE_EVT_PRE_ID+5) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_COLLAPSED, wxPG_BASE_EVT_PRE_ID+6) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_ITEM_EXPANDED, wxPG_BASE_EVT_PRE_ID+7) - DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_PROPGRID, wxEVT_PG_DOUBLE_CLICK, wxPG_BASE_EVT_PRE_ID+8) -END_DECLARE_EVENT_TYPES() #else enum { wxEVT_PG_SELECTED = wxPG_BASE_EVT_PRE_ID, @@ -1919,18 +1923,18 @@ END_DECLARE_EVENT_TYPES() #ifndef SWIG typedef void (wxEvtHandler::*wxPropertyGridEventFunction)(wxPropertyGridEvent&); -#define EVT_PG_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_HIGHLIGHTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_HIGHLIGHTED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_DOUBLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_DOUBLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_PAGE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_PAGE_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_ITEM_COLLAPSED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_COLLAPSED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), -#define EVT_PG_ITEM_EXPANDED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PG_ITEM_EXPANDED, id, -1, (wxObjectEventFunction) (wxEventFunction) wxStaticCastEvent( wxPropertyGridEventFunction, & fn ), (wxObject *) NULL ), +#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 wxPropertyGridEventHandler(A) \ - ((wxObjectEventFunction)(wxEventFunction)(wxPropertyGridEventFunction)&A) +#define wxPropertyGridEventHandler(fn) \ + wxEVENT_HANDLER_CAST( wxPropertyGridEventFunction, fn ) #endif @@ -1977,9 +1981,6 @@ public: 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; } @@ -2002,7 +2003,7 @@ public: 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(); } /** @@ -2011,10 +2012,10 @@ public: 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 @@ -2023,14 +2024,14 @@ public: 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; } @@ -2189,12 +2190,6 @@ protected: // #undef const wxString& #endif -// Doxygen special -#ifdef DOXYGEN - #include "wx/propgrid/editor.h" - #include "wx/propgrid/manager.h" -#endif - // ----------------------------------------------------------------------- #endif