X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3e6d8c311868c2bce749c4d4922e2efb8e3f019a..1237a25bc49396fa39516846a855bf3b0a4fe1f7:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index c6ac6ece21..8729f1a92a 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -19,6 +19,7 @@ #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" @@ -34,8 +35,6 @@ class wxPGComboBox; // Global variables // ----------------------------------------------------------------------- -#ifndef SWIG - // This is required for sharing common global variables. class WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass { @@ -87,7 +86,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 +104,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 +118,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 +151,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, @@ -400,7 +404,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 @@ -526,8 +533,6 @@ enum wxPG_SET_SPLITTER_POSITION_SPLITTER_FLAGS // ----------------------------------------------------------------------- -#ifndef SWIG - // Internal flags #define wxPG_FL_INITIALIZED 0x0001 // Set when creating editor controls if it was clicked on. @@ -562,8 +567,6 @@ enum wxPG_SET_SPLITTER_POSITION_SPLITTER_FLAGS #define wxPG_FL_IN_SELECT_PROPERTY 0x00100000 // Set when help string is shown in status bar #define wxPG_FL_STRING_IN_STATUSBAR 0x00200000 -// 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 @@ -580,9 +583,7 @@ enum wxPG_SET_SPLITTER_POSITION_SPLITTER_FLAGS // 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 @@ -736,11 +737,12 @@ 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. */ @@ -938,9 +940,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. @@ -1004,7 +1010,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. @@ -1018,12 +1023,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 @@ -1417,7 +1432,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; @@ -1448,8 +1463,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. @@ -1797,6 +1810,10 @@ protected: /** 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; + // // Temporary values // @@ -1838,6 +1855,9 @@ protected: wxPGVFBFlags m_permanentValidationFailureBehavior; // Set by app + // DoEditorValidate() recursion guard + wxRecursionGuardFlag m_validatingEditor; + /** Internal flags - see wxPG_FL_XXX constants. */ wxUint32 m_iFlags; @@ -2041,7 +2061,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 @@ -2126,7 +2146,6 @@ private: bool ButtonTriggerKeyTest( int action, wxKeyEvent& event ); DECLARE_EVENT_TABLE() -#endif // #ifndef SWIG }; // ----------------------------------------------------------------------- @@ -2134,7 +2153,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() ); @@ -2144,8 +2162,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) ) @@ -2265,10 +2298,10 @@ public: /** Constructor. */ wxPropertyGridEvent(wxEventType commandType=0, int id=0); -#ifndef SWIG + /** Copy constructor. */ wxPropertyGridEvent(const wxPropertyGridEvent& event); -#endif + /** Destructor. */ ~wxPropertyGridEvent(); @@ -2378,7 +2411,6 @@ public: m_validationInfo->SetFailureMessage( message ); } -#ifndef SWIG wxPGVFBFlags GetValidationFailureBehavior() const { wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); @@ -2436,8 +2468,6 @@ private: bool m_canVeto; bool m_wasVetoed; - -#endif };