X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3c26d11be9e0e1a69da888d69cd980d77827c6eb..054f177b001d34bf1314b364c8289bec4c08b17c:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index 4fce66d137..8bad63c5d4 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 ///////////////////////////////////////////////////////////////////////////// @@ -49,7 +49,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 @@ -241,12 +241,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 +340,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; }; // ----------------------------------------------------------------------- @@ -396,6 +421,7 @@ enum wxPG_KEYBOARD_ACTIONS 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 +483,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 @@ -758,7 +782,9 @@ public: /** 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(); @@ -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 @@ -883,7 +909,6 @@ public: Pointer to the editor class instance that should be used. */ static wxPGEditor* RegisterEditorClass( wxPGEditor* editor, - const wxString& name, bool noDefCheck = false ); #endif @@ -908,15 +933,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); @@ -1010,34 +1026,20 @@ public: 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 ) { @@ -1174,16 +1176,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(); @@ -1228,9 +1223,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, @@ -1396,8 +1388,6 @@ protected: wxBitmap *m_doubleBuffer; #endif - wxArrayPtrVoid *m_windowsToDelete; - /** Local time ms when control was created. */ wxLongLong m_timeCreated; @@ -1473,9 +1463,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; @@ -1533,12 +1520,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; @@ -1615,11 +1596,13 @@ protected: // 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 m_commonValues; + // Which cv selection really sets value to unspecified? int m_cvUnspecified; @@ -1645,7 +1628,6 @@ protected: void OnMouseUp( wxMouseEvent &event ); void OnKey( wxKeyEvent &event ); void OnKeyUp( wxKeyEvent &event ); - void OnNavigationKey( wxNavigationKeyEvent& event ); void OnResize( wxSizeEvent &event ); // event handlers @@ -1790,10 +1772,8 @@ protected: 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 ); @@ -1813,17 +1793,13 @@ 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 @@ -1978,9 +1954,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; } @@ -2003,7 +1976,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(); } /** @@ -2012,10 +1985,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 @@ -2024,14 +1997,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; }