X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1766bf34538723bc34e5e963b6bacc5722b398ef..74cc3ec18e117a6ea6bc1c23a9b70ff960f4c0ae:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index d16ad074ea..9eae5fad80 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 ///////////////////////////////////////////////////////////////////////////// @@ -418,13 +418,10 @@ 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 }; - + /** @} */ @@ -483,8 +480,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 @@ -493,8 +488,8 @@ 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 @@ -787,9 +782,9 @@ public: /** Returns number of columns currently on grid. */ - int GetColumnCount() const + 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. */ @@ -834,6 +829,14 @@ public: /** Returns background colour of margin. */ wxColour GetMarginColour() const { return m_colMargin; } + /** + 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 cell background colour of a property. */ wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const; @@ -984,11 +987,22 @@ 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. + /** + Sets background colour of property. + + @param id + Property name or pointer. + + @param colour + New background colour. + + @param recursively + If True, child properties are affected recursively. Property + categories are skipped if this flag is used. */ - void SetPropertyBackgroundColour( wxPGPropArg id, const wxColour& col ); + void SetPropertyBackgroundColour( wxPGPropArg id, + const wxColour& colour, + bool recursively = false); /** Resets text and background colours of given property. */ @@ -1082,7 +1096,7 @@ public: */ unsigned int GetCommonValueCount() const { - return m_commonValues.size(); + return (unsigned int) m_commonValues.size(); } /** Returns label of given common value. @@ -1178,16 +1192,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(); @@ -1219,11 +1226,25 @@ public: // Mostly useful for page switching. void SwitchState( wxPropertyGridPageState* pNewState ); - /** Pass this function to Connect calls in propertyclass::CreateEditor. + /** + When creating custom property editors, connect required editor events to + this function. For instance: + + @code + control->Connect(control->GetId(), wxEVT_COMMAND_TEXT_UPDATED, + wxEventHandler(wxPropertyGrid::OnCustomEditorEvent), + NULL, propgrid); + @endcode + + @remarks You should never need to call this function directly! + + @see wxPGEditor::CreateControls(), wxEvtHandler::Connect() */ - void OnCustomEditorEvent( wxCommandEvent &event ); + void OnCustomEditorEvent( wxEvent &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++; } @@ -1232,9 +1253,6 @@ public: 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, @@ -1269,12 +1287,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. @@ -1352,12 +1364,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) @@ -1604,13 +1640,16 @@ 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; + // Backup of selected property's cells + wxVector m_propCellsBackup; - // Array of foreground colours. - wxArrayPtrVoid m_arrFgCols; + // NB: These *cannot* be moved to globals. // labels when properties use common values wxVector m_commonValues; @@ -1639,8 +1678,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 @@ -1649,9 +1686,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 ); @@ -1668,7 +1703,6 @@ protected: void OnMouseMoveChild( wxMouseEvent &event ); void OnMouseUpChild( wxMouseEvent &event ); void OnChildKeyDown( wxKeyEvent &event ); - void OnChildKeyUp( wxKeyEvent &event ); void OnCaptureChange( wxMouseCaptureChangedEvent &event ); @@ -1748,6 +1782,9 @@ protected: void ImprovedClientToScreen( int* px, int* py ); + // Returns True if editor control has focus + bool IsEditorFocused() const; + // Called by focus event handlers. newFocused is the window that becomes // focused. void HandleFocusChange( wxWindow* newFocused ); @@ -1777,14 +1814,6 @@ 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 ); - // Sets up basic event handling for child control void SetupChildEventHandling( wxWindow* wnd ); @@ -1814,9 +1843,6 @@ private: bool ButtonTriggerKeyTest( int action, wxKeyEvent& event ); -#endif // DOXYGEN_SHOULD_SKIP_THIS - -private: DECLARE_EVENT_TABLE() #endif // #ifndef SWIG }; @@ -1844,7 +1870,7 @@ inline int wxPGProperty::GetDisplayedCommonValueCount() const { wxPropertyGrid* pg = GetGrid(); if ( pg ) - return pg->GetCommonValueCount(); + return (int) pg->GetCommonValueCount(); } return 0; } @@ -2176,12 +2202,6 @@ protected: // #undef const wxString& #endif -// Doxygen special -#ifdef DOXYGEN - #include "wx/propgrid/editor.h" - #include "wx/propgrid/manager.h" -#endif - // ----------------------------------------------------------------------- #endif