X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f525476870e4baa3e5d303d94d8bc70026603b4c..5431e4a68473e31cc6870d67577aa12a2fb39fa4:/include/wx/propgrid/propgrid.h diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index db6c2bb94d..cda343f9f3 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -34,8 +34,6 @@ class wxPGComboBox; // Global variables // ----------------------------------------------------------------------- -#ifndef SWIG - // This is required for sharing common global variables. class WXDLLIMPEXP_PROPGRID wxPGGlobalVarsClass { @@ -87,7 +85,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 +103,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 +117,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 +150,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, @@ -526,8 +529,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. @@ -580,9 +581,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 +735,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 +938,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 +1008,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 +1021,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 @@ -1239,6 +1252,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 ); @@ -1413,8 +1461,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. @@ -1756,6 +1802,16 @@ 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; + // // Temporary values // @@ -2054,6 +2110,16 @@ 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(); /** @@ -2075,7 +2141,6 @@ private: bool ButtonTriggerKeyTest( int action, wxKeyEvent& event ); DECLARE_EVENT_TABLE() -#endif // #ifndef SWIG }; // ----------------------------------------------------------------------- @@ -2083,7 +2148,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() ); @@ -2093,8 +2157,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) ) @@ -2214,10 +2293,10 @@ public: /** Constructor. */ wxPropertyGridEvent(wxEventType commandType=0, int id=0); -#ifndef SWIG + /** Copy constructor. */ wxPropertyGridEvent(const wxPropertyGridEvent& event); -#endif + /** Destructor. */ ~wxPropertyGridEvent(); @@ -2327,7 +2406,6 @@ public: m_validationInfo->SetFailureMessage( message ); } -#ifndef SWIG wxPGVFBFlags GetValidationFailureBehavior() const { wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); @@ -2385,8 +2463,6 @@ private: bool m_canVeto; bool m_wasVetoed; - -#endif };