From f1273ce152ff5c3d63b5070b463132cbb14979b4 Mon Sep 17 00:00:00 2001 From: Artur Wieczorek <7330332+a-wi@users.noreply.github.com> Date: Sun, 19 Feb 2023 22:12:09 +0200 Subject: [PATCH] Use class enums to implement bitmask types To improve type safety of flags. --- include/wx/propgrid/manager.h | 28 ++- include/wx/propgrid/property.h | 68 ++++++-- include/wx/propgrid/propgrid.h | 157 +++++------------ include/wx/propgrid/propgriddefs.h | 123 ++++++++++--- include/wx/propgrid/propgridiface.h | 219 ++++++++++++++++++++---- include/wx/propgrid/propgridpagestate.h | 149 ++++++++++++++-- interface/wx/propgrid/manager.h | 2 +- interface/wx/propgrid/property.h | 29 ++-- interface/wx/propgrid/propgrid.h | 47 ++--- interface/wx/propgrid/propgriddefs.h | 87 +++++----- interface/wx/propgrid/propgridiface.h | 83 +++++---- samples/propgrid/propgrid.cpp | 31 ++-- src/propgrid/editors.cpp | 91 ++++++---- src/propgrid/manager.cpp | 20 +-- src/propgrid/property.cpp | 50 +++--- src/propgrid/propgrid.cpp | 159 ++++++++--------- src/propgrid/propgridiface.cpp | 49 +++--- src/propgrid/propgridpagestate.cpp | 52 +++--- tests/controls/propgridtest.cpp | 16 +- 19 files changed, 913 insertions(+), 547 deletions(-) diff --git a/include/wx/propgrid/manager.h b/include/wx/propgrid/manager.h index 0a914827d0..c99bc7bad6 100644 --- a/include/wx/propgrid/manager.h +++ b/include/wx/propgrid/manager.h @@ -128,10 +128,17 @@ public: protected: - // Propagate to other pages. - virtual void DoSetSplitterPosition( int pos, - int splitterColumn = 0, - int flags = wxPG_SPLITTER_REFRESH ) override; + // Propagate to other pages +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use DoSetSplitterPosition with flags argument as wxPGSplitterPositionFlags") + virtual void DoSetSplitterPosition(int pos, int splitterColumn, int flags) override + { + DoSetSplitterPosition(pos, splitterColumn, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + virtual void DoSetSplitterPosition(int pos, + int splitterColumn = 0, + wxPGSplitterPositionFlags flags = wxPGSplitterPositionFlags::Refresh) override; // Page label (may be referred as name in some parts of documentation). // Can be set in constructor, or passed in @@ -216,7 +223,14 @@ public: // Forces updating the value of property from the editor control. // Returns true if DoPropertyChanged was actually called. - bool CommitChangesFromEditor( wxUint32 flags = 0 ) +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use CommitChangesFromEditor with wxPGSelectPropertyFlags argument") + bool CommitChangesFromEditor(wxUint32 flags) + { + return CommitChangesFromEditor(static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + bool CommitChangesFromEditor(wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null) { return m_pPropGrid->CommitChangesFromEditor(flags); } @@ -426,9 +440,9 @@ public: bool SelectProperty( wxPGPropArg id, bool focus = false ) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) - unsigned int flags = wxPG_SEL_DONT_SEND_EVENT; + wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::DontSendEvent; if ( focus ) - flags |= wxPG_SEL_FOCUS; + flags |= wxPGSelectPropertyFlags::Focus; return p->GetParentState()->DoSelectProperty(p, flags); } diff --git a/include/wx/propgrid/property.h b/include/wx/propgrid/property.h index bcbfc9da7f..5f84b80dcb 100644 --- a/include/wx/propgrid/property.h +++ b/include/wx/propgrid/property.h @@ -1504,8 +1504,15 @@ public: // Hides or reveals the property. // hide - true for hide, false for reveal. // flags - By default changes are applied recursively. Set this - // parameter to wxPG_DONT_RECURSE to prevent this. - bool Hide( bool hide, int flags = wxPG_RECURSE ); + // parameter to wxPGPropertyValuesFlags::DontRecurse to prevent this. +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use Hide with flags argument as wxPGPropertyValuesFlags") + bool Hide(bool hide, int flags) + { + return Hide(hide, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + bool Hide(bool hide, wxPGPropertyValuesFlags = wxPGPropertyValuesFlags::Recurse); // Returns true if property has visible children. bool IsExpanded() const @@ -1546,25 +1553,47 @@ public: // Sets property's background colour. // colour - Background colour to use. - // flags - Default is wxPG_RECURSE which causes colour to be set recursively. + // flags - Default is wxPGPropertyValuesFlags::Recurse which causes colour to be set recursively. // Omit this flag to only set colour for the property in question // and not any of its children. - void SetBackgroundColour( const wxColour& colour, - int flags = wxPG_RECURSE ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetBackgroundColour with flags argument as wxPGPropertyValuesFlags") + void SetBackgroundColour(const wxColour& colour, int flags) + { + SetBackgroundColour(colour, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetBackgroundColour(const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Sets property's text colour. // colour - Text colour to use. - // flags - Default is wxPG_RECURSE which causes colour to be set recursively. + // flags - Default is wxPGPropertyValuesFlags::Recurse which causes colour to be set recursively. // Omit this flag to only set colour for the property in question // and not any of its children. - void SetTextColour( const wxColour& colour, - int flags = wxPG_RECURSE ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetTextColour with flags argument as wxPGPropertyValuesFlags") + void SetTextColour(const wxColour& colour, int flags) + { + SetTextColour(colour, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetTextColour(const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Sets property's default text and background colours. - // flags - Default is wxPG_RECURSE which causes colours to be set recursively. + // flags - Default is wxPGPropertyValuesFlags::Recurse + // which causes colours to be set recursively. // Omit this flag to only set colours for the property in question // and not any of its children. - void SetDefaultColours(int flags = wxPG_RECURSE); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetDefaultColours with wxPGPropertyValuesFlags argument") + void SetDefaultColours(int flags) + { + SetDefaultColours(static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetDefaultColours(wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Set default value of a property. Synonymous to // SetAttribute("DefaultValue", value); @@ -1618,10 +1647,17 @@ public: // SetValueInEvent() instead. // pList - Pointer to list variant that contains child values. Used to // indicate which children should be marked as modified. - // flags - Various flags (for instance, wxPG_SETVAL_REFRESH_EDITOR, which - // is enabled by default). - void SetValue( wxVariant value, wxVariant* pList = nullptr, - int flags = wxPG_SETVAL_REFRESH_EDITOR ); + // flags - Various flags (for instance, wxPGSetValueFlags::RefreshEditor, + // which is enabled by default). +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetValue with flags argument as wxPGSetValueFlags") + void SetValue(wxVariant value, wxVariant* pList, int flags) + { + SetValue(value, pList, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetValue(wxVariant value, wxVariant* pList = nullptr, + wxPGSetValueFlags flags = wxPGSetValueFlags::RefreshEditor); // Set wxBitmap in front of the value. This bitmap may be ignored // by custom cell renderers. @@ -1685,7 +1721,7 @@ public: void SetValueToUnspecified() { wxVariant val; // Create null variant - SetValue(val, nullptr, wxPG_SETVAL_REFRESH_EDITOR); + SetValue(val, nullptr, wxPGSetValueFlags::RefreshEditor); } // Helper function (for wxPython bindings and such) for settings protected @@ -1905,7 +1941,7 @@ protected: const wxVariantList* valueOverrides = nullptr, wxPGHashMapS2S* childResults = nullptr ) const; - bool DoHide( bool hide, int flags ); + bool DoHide( bool hide, wxPGPropertyValuesFlags flags ); void DoSetName(const wxString& str) { m_name = str; } diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index fa35bcf62c..43ac94eb09 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -344,52 +344,6 @@ protected: // ----------------------------------------------------------------------- -// wxPropertyGrid Validation Failure behaviour Flags -enum wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS -{ - -// Prevents user from leaving property unless value is valid. If this -// behaviour flag is not used, then value change is instead cancelled. -wxPG_VFB_STAY_IN_PROPERTY = 0x01, - -// Calls wxBell() on validation failure. -wxPG_VFB_BEEP = 0x02, - -// Cell with invalid value will be marked (with red colour). -wxPG_VFB_MARK_CELL = 0x04, - -// Display a text message explaining the situation. -// To customize the way the message is displayed, you need to -// reimplement wxPropertyGrid::DoShowPropertyError() in a -// derived class. Default behaviour is to display the text on -// the top-level frame's status bar, if present, and otherwise -// using wxMessageBox. -wxPG_VFB_SHOW_MESSAGE = 0x08, - -// Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the -// message using wxMessageBox. -wxPG_VFB_SHOW_MESSAGEBOX = 0x10, - -// Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the -// message on the status bar (when present - you can reimplement -// wxPropertyGrid::GetStatusBar() in a derived class to specify -// this yourself). -wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR = 0x20, - -// Defaults. -wxPG_VFB_DEFAULT = wxPG_VFB_MARK_CELL | - wxPG_VFB_SHOW_MESSAGEBOX, - -// Only used internally. -wxPG_VFB_UNDEFINED = 0x80 - -}; - -// 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 - // Used to convey validation information to and from functions that // actually perform validation. Mostly used in custom property // classes. @@ -398,7 +352,7 @@ class WXDLLIMPEXP_PROPGRID wxPGValidationInfo friend class wxPropertyGrid; public: wxPGValidationInfo() - : m_failureBehavior(0) + : m_failureBehavior(wxPGVFBFlags::Null) , m_isFailing(false) { } @@ -406,7 +360,7 @@ public: ~wxPGValidationInfo() = default; // Returns failure behaviour which is a combination of - // wxPG_VFB_XXX flags. + // wxPGVFBFlags::XXX flags. wxPGVFBFlags GetFailureBehavior() const { return m_failureBehavior; @@ -425,7 +379,14 @@ public: } // Set validation failure behaviour - // failureBehavior - Mixture of wxPG_VFB_XXX flags. + // failureBehavior - Mixture of wxPGVFBFlags::XXX flags. +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetFailureBehavior with wxPGVFBFlags argument") + void SetFailureBehavior(int failureBehavior) + { + SetFailureBehavior(static_cast(failureBehavior)); + } +#endif // WXWIN_COMPATIBILITY_3_2 void SetFailureBehavior(wxPGVFBFlags failureBehavior) { m_failureBehavior = failureBehavior; @@ -464,7 +425,7 @@ private: // Message displayed on validation failure. wxString m_failureMessage; - // Validation failure behaviour. Use wxPG_VFB_XXX flags. + // Validation failure behaviour. Use wxPGVFBFlags::XXX flags. wxPGVFBFlags m_failureBehavior; // True when validation is currently failing. @@ -505,44 +466,6 @@ enum wxPG_KEYBOARD_ACTIONS wxPG_ACTION_MAX }; -// ----------------------------------------------------------------------- - -// wxPropertyGrid::DoSelectProperty flags (selFlags) -enum wxPG_SELECT_PROPERTY_FLAGS -{ - // Focuses to created editor - wxPG_SEL_FOCUS = 0x0001, - // Forces deletion and recreation of editor - wxPG_SEL_FORCE = 0x0002, - // For example, doesn't cause EnsureVisible - wxPG_SEL_NONVISIBLE = 0x0004, - // Do not validate editor's value before selecting - wxPG_SEL_NOVALIDATE = 0x0008, - // Property being deselected is about to be deleted - wxPG_SEL_DELETING = 0x0010, - // Property's values was set to unspecified by the user - wxPG_SEL_SETUNSPEC = 0x0020, - // Property's event handler changed the value - wxPG_SEL_DIALOGVAL = 0x0040, - // Set to disable sending of wxEVT_PG_SELECTED event - wxPG_SEL_DONT_SEND_EVENT = 0x0080, - // Don't make any graphics updates - wxPG_SEL_NO_REFRESH = 0x0100 -}; - -// ----------------------------------------------------------------------- - -// DoSetSplitterPosition() flags - -enum wxPG_SET_SPLITTER_POSITION_SPLITTER_FLAGS -{ - wxPG_SPLITTER_REFRESH = 0x0001, - wxPG_SPLITTER_ALL_PAGES = 0x0002, - wxPG_SPLITTER_FROM_EVENT = 0x0004, - wxPG_SPLITTER_FROM_AUTO_CENTER = 0x0008 -}; - - // ----------------------------------------------------------------------- #if !defined(__wxPG_SOURCE_FILE__) @@ -690,7 +613,14 @@ public: // Note that wxEVT_PG_CHANGING and wxEVT_PG_CHANGED are dispatched using // ProcessEvent, meaning your event handlers will be called immediately. // Returns true if anything was changed. - virtual bool CommitChangesFromEditor( wxUint32 flags = 0 ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use CommitChangesFromEditor with wxPGSelectPropertyFlags argument") + virtual bool CommitChangesFromEditor(wxUint32 flags) + { + return CommitChangesFromEditor(static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + virtual bool CommitChangesFromEditor(wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null); // Two step creation. // Whenever the control is created without any parameters, use Create to @@ -913,7 +843,7 @@ public: // Set entire new selection from given list of properties. void SetSelection( const wxArrayPGProperty& newSelection ) { - DoSetSelection( newSelection, wxPG_SEL_DONT_SEND_EVENT ); + DoSetSelection( newSelection, wxPGSelectPropertyFlags::DontSendEvent ); } // Adds given property into selection. If wxPG_EX_MULTIPLE_SELECTION @@ -928,7 +858,7 @@ public: bool AddToSelection( wxPGPropArg id ) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) - return DoAddToSelection(p, wxPG_SEL_DONT_SEND_EVENT); + return DoAddToSelection(p, wxPGSelectPropertyFlags::DontSendEvent); } // Removes given property from selection. If property is not selected, @@ -936,7 +866,7 @@ public: bool RemoveFromSelection( wxPGPropArg id ) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) - return DoRemoveFromSelection(p, wxPG_SEL_DONT_SEND_EVENT); + return DoRemoveFromSelection(p, wxPGSelectPropertyFlags::DontSendEvent); } // Makes given column editable by user. @@ -952,7 +882,7 @@ public: // column. void BeginLabelEdit( unsigned int column = 0 ) { - DoBeginLabelEdit(column, wxPG_SEL_DONT_SEND_EVENT); + DoBeginLabelEdit(column, wxPGSelectPropertyFlags::DontSendEvent); } // Destroys label editor wxTextCtrl, if any. @@ -960,7 +890,7 @@ public: // property cell data. void EndLabelEdit( bool commit = true ) { - DoEndLabelEdit(commit, wxPG_SEL_DONT_SEND_EVENT); + DoEndLabelEdit(commit, wxPGSelectPropertyFlags::DontSendEvent); } // Returns currently active label editor, nullptr if none. @@ -1026,7 +956,7 @@ public: // than desired splitter position, especially when sizers are being used. void SetSplitterPosition( int newXPos, int col = 0 ) { - DoSetSplitterPosition(newXPos, col, wxPG_SPLITTER_REFRESH); + DoSetSplitterPosition(newXPos, col, wxPGSplitterPositionFlags::Refresh); } // Sets the property sorting function. @@ -1325,7 +1255,7 @@ public: // Pending value is expected to be passed in PerformValidation(). virtual bool DoPropertyChanged( wxPGProperty* p, - unsigned int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); // Called when validation for given property fails. // invalidValue - Value which failed in validation. @@ -1441,7 +1371,7 @@ public: } // Public methods for semi-public use - bool DoSelectProperty( wxPGProperty* p, unsigned int flags = 0 ); + bool DoSelectProperty( wxPGProperty* p, wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null ); // Overridden functions. virtual bool Destroy() override; @@ -1764,7 +1694,7 @@ protected: bool AddToSelectionFromInputEvent( wxPGProperty* prop, unsigned int colIndex, wxMouseEvent* event = nullptr, - int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); // Adjust the centering of the bitmap icons (collapse / expand) when the // caption font changes. @@ -1839,23 +1769,23 @@ protected: // editable. bool DoSelectAndEdit( wxPGProperty* prop, unsigned int colIndex, - unsigned int selFlags ); + wxPGSelectPropertyFlags selFlags ); void DoSetSelection( const wxArrayPGProperty& newSelection, - int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); void DoSetSplitterPosition( int newxpos, int splitterIndex = 0, - int flags = wxPG_SPLITTER_REFRESH ); + wxPGSplitterPositionFlags flags = wxPGSplitterPositionFlags::Refresh ); bool DoAddToSelection( wxPGProperty* prop, - int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); bool DoRemoveFromSelection( wxPGProperty* prop, - int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); - void DoBeginLabelEdit( unsigned int colIndex, int selFlags = 0 ); - void DoEndLabelEdit( bool commit, int selFlags = 0 ); + void DoBeginLabelEdit( unsigned int colIndex, wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); + void DoEndLabelEdit( bool commit, wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null); void OnLabelEditorEnterPress( wxCommandEvent& event ); void OnLabelEditorKeyPress( wxKeyEvent& event ); @@ -1897,10 +1827,10 @@ protected: void PrepareAfterItemsAdded(); // Send event from the property grid. - // Omit the wxPG_SEL_NOVALIDATE flag to allow vetoing the event + // Omit the wxPGSelectPropertyFlags::NoValidate flag to allow vetoing the event bool SendEvent( wxEventType eventType, wxPGProperty* p, wxVariant* pValue = nullptr, - unsigned int selFlags = wxPG_SEL_NOVALIDATE, + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::NoValidate, unsigned int column = 1 ); void SendEvent(wxEventType eventType, int intVal); @@ -1909,7 +1839,7 @@ protected: // was on one of its child controls. void SetFocusOnCanvas(); - bool DoHideProperty( wxPGProperty* p, bool hide, int flags ); + bool DoHideProperty( wxPGProperty* p, bool hide, wxPGPropertyValuesFlags flags ); void DeletePendingObjects(); @@ -2082,14 +2012,21 @@ public: // Set override validation failure behaviour. // Only effective if Veto was also called, and only allowed if event type // is wxEVT_PG_CHANGING. - void SetValidationFailureBehavior( wxPGVFBFlags flags ) +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetValidationFailureBehavior with wxPGVFBFlags argument") + void SetValidationFailureBehavior(int flags) + { + SetValidationFailureBehavior(static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetValidationFailureBehavior(wxPGVFBFlags flags) { wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); m_validationInfo->SetFailureBehavior( flags ); } // Sets custom failure message for this time only. Only applies if - // wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. + // wxPGVFBFlags::SHOW_MESSAGE is set in validation failure flags. void SetValidationFailureMessage( const wxString& message ) { wxASSERT( GetEventType() == wxEVT_PG_CHANGING ); diff --git a/include/wx/propgrid/propgriddefs.h b/include/wx/propgrid/propgriddefs.h index 8f1294b15a..03601b4ed6 100644 --- a/include/wx/propgrid/propgriddefs.h +++ b/include/wx/propgrid/propgriddefs.h @@ -289,38 +289,72 @@ WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(wxObject*, wxArrayPGObject, // ----------------------------------------------------------------------- -enum wxPG_PROPERTYVALUES_FLAGS +enum class wxPGPropertyValuesFlags : int { -// Flag for wxPropertyGridInterface::SetProperty* functions, -// wxPropertyGridInterface::HideProperty(), etc. -// Apply changes only for the property in question. -wxPG_DONT_RECURSE = 0x00000000, + // Flag for wxPropertyGridInterface::SetProperty* functions, + // wxPropertyGridInterface::HideProperty(), etc. + // Apply changes only for the property in question. + DontRecurse = 0x00000000, -// Flag for wxPropertyGridInterface::GetPropertyValues(). -// Use this flag to retain category structure; each sub-category -// will be its own wxVariantList of wxVariant. -wxPG_KEEP_STRUCTURE = 0x00000010, + // Flag for wxPropertyGridInterface::GetPropertyValues(). + // Use this flag to retain category structure; each sub-category + // will be its own wxVariantList of wxVariant. + KeepStructure = 0x00000010, -// Flag for wxPropertyGridInterface::SetProperty* functions, -// wxPropertyGridInterface::HideProperty(), etc. -// Apply changes recursively for the property and all its children. -wxPG_RECURSE = 0x00000020, + // Flag for wxPropertyGridInterface::SetProperty* functions, + // wxPropertyGridInterface::HideProperty(), etc. + // Apply changes recursively for the property and all its children. + Recurse = 0x00000020, -// Flag for wxPropertyGridInterface::GetPropertyValues(). -// Use this flag to include property attributes as well. -wxPG_INC_ATTRIBUTES = 0x00000040, + // Flag for wxPropertyGridInterface::GetPropertyValues(). + // Use this flag to include property attributes as well. + IncAttributes = 0x00000040, -// Used when first starting recursion. -wxPG_RECURSE_STARTS = 0x00000080, + // Used when first starting recursion. + RecurseStarts = 0x00000080, -// Force value change. -wxPG_FORCE = 0x00000100, + // Force value change. + Force = 0x00000100, -// Only sort categories and their immediate children. -// Sorting done by wxPG_AUTO_SORT option uses this. -wxPG_SORT_TOP_LEVEL_ONLY = 0x00000200 + // Only sort categories and their immediate children. + // Sorting done by wxPG_AUTO_SORT option uses this. + SortTopLevelOnly = 0x00000200 }; +constexpr wxPGPropertyValuesFlags operator|(wxPGPropertyValuesFlags a, wxPGPropertyValuesFlags b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr wxPGPropertyValuesFlags operator&(wxPGPropertyValuesFlags a, wxPGPropertyValuesFlags b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr bool operator!(wxPGPropertyValuesFlags a) +{ + return static_cast>(a) == 0; +} + +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::DontRecurse instead") +constexpr wxPGPropertyValuesFlags wxPG_DONT_RECURSE { wxPGPropertyValuesFlags::DontRecurse }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::KeepStructure instead") +constexpr wxPGPropertyValuesFlags wxPG_KEEP_STRUCTURE { wxPGPropertyValuesFlags::KeepStructure }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::Recurse instead") +constexpr wxPGPropertyValuesFlags wxPG_RECURSE { wxPGPropertyValuesFlags::Recurse }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::IncAttributes instead") +constexpr wxPGPropertyValuesFlags wxPG_INC_ATTRIBUTES { wxPGPropertyValuesFlags::IncAttributes }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::RecurseStarts instead") +constexpr wxPGPropertyValuesFlags wxPG_RECURSE_STARTS { wxPGPropertyValuesFlags::RecurseStarts }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::Force instead") +constexpr wxPGPropertyValuesFlags wxPG_FORCE { wxPGPropertyValuesFlags::Force }; +wxDEPRECATED_MSG("use wxPGPropertyValuesFlags::SortTopLevelOnly instead") +constexpr wxPGPropertyValuesFlags wxPG_SORT_TOP_LEVEL_ONLY { wxPGPropertyValuesFlags::SortTopLevelOnly }; +#endif // WXWIN_COMPATIBILITY_3_2 + // ----------------------------------------------------------------------- // Misc. argument flags. @@ -356,14 +390,47 @@ enum wxPG_MISC_ARG_FLAGS // ----------------------------------------------------------------------- // wxPGProperty::SetValue() flags -enum wxPG_SETVALUE_FLAGS +enum class wxPGSetValueFlags : int { - wxPG_SETVAL_REFRESH_EDITOR = 0x0001, - wxPG_SETVAL_AGGREGATED = 0x0002, - wxPG_SETVAL_FROM_PARENT = 0x0004, - wxPG_SETVAL_BY_USER = 0x0008 // Set if value changed by user + RefreshEditor = 0x0001, + Aggregated = 0x0002, + FromParent = 0x0004, + ByUser = 0x0008 // Set if value changed by user }; +constexpr wxPGSetValueFlags operator|(wxPGSetValueFlags a, wxPGSetValueFlags b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr wxPGSetValueFlags operator|=(wxPGSetValueFlags& a, wxPGSetValueFlags b) +{ + return a = a | b; +} + +constexpr wxPGSetValueFlags operator&(wxPGSetValueFlags a, wxPGSetValueFlags b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr bool operator!(wxPGSetValueFlags a) +{ + return static_cast>(a) == 0; +} + +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGSetValueFlags::RefreshEditor instead") +constexpr wxPGSetValueFlags wxPG_SETVAL_REFRESH_EDITOR { wxPGSetValueFlags::RefreshEditor }; +wxDEPRECATED_MSG("use wxPGSetValueFlags::Aggregated instead") +constexpr wxPGSetValueFlags wxPG_SETVAL_AGGREGATED { wxPGSetValueFlags::Aggregated }; +wxDEPRECATED_MSG("use wxPGSetValueFlags::FromParent instead") +constexpr wxPGSetValueFlags wxPG_SETVAL_FROM_PARENT { wxPGSetValueFlags::FromParent }; +wxDEPRECATED_MSG("use wxPGSetValueFlags::ByUser instead") +constexpr wxPGSetValueFlags wxPG_SETVAL_BY_USER { wxPGSetValueFlags::ByUser }; +#endif // WXWIN_COMPATIBILITY_3_2 + // ----------------------------------------------------------------------- // diff --git a/include/wx/propgrid/propgridiface.h b/include/wx/propgrid/propgridiface.h index 7aeb6c2820..a5d27cd540 100644 --- a/include/wx/propgrid/propgridiface.h +++ b/include/wx/propgrid/propgridiface.h @@ -18,6 +18,83 @@ #include "wx/propgrid/property.h" #include "wx/propgrid/propgridpagestate.h" +// ----------------------------------------------------------------------- +// wxPropertyGrid Validation Failure behaviour Flags +enum class wxPGVFBFlags : int +{ + // No flags + Null = 0, + // Prevents user from leaving property unless value is valid. If this + // behaviour flag is not used, then value change is instead cancelled. + StayInProperty = 0x0001, + // Calls wxBell() on validation failure. + Beep = 0x0002, + // Cell with invalid value will be marked (with red colour). + MarkCell = 0x0004, + // Display a text message explaining the situation. + // To customize the way the message is displayed, you need to + // reimplement wxPropertyGrid::DoShowPropertyError() in a + // derived class. Default behaviour is to display the text on + // the top-level frame's status bar, if present, and otherwise + // using wxMessageBox. + ShowMessage = 0x0008, + // Similar to SHOW_MESSAGE, except always displays the + // message using wxMessageBox. + ShowMessageBox = 0x0010, + // Similar to SHOW_MESSAGE, except always displays the + // message on the status bar (when present - you can reimplement + // wxPropertyGrid::GetStatusBar() in a derived class to specify + // this yourself). + ShowMessageOnStatusBar = 0x0020, + // Defaults. + Default = MarkCell | ShowMessageBox, + // Only used internally. + Undefined = 0x0040 +}; + +constexpr wxPGVFBFlags operator|(wxPGVFBFlags a, wxPGVFBFlags b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr wxPGVFBFlags operator&(wxPGVFBFlags a, wxPGVFBFlags b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr wxPGVFBFlags operator~(wxPGVFBFlags a) +{ + return static_cast(~static_cast>(a)); +} + +constexpr bool operator!(wxPGVFBFlags a) +{ + return static_cast>(a) == 0; +} + +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGVFBFlags::Null instead") +constexpr wxPGVFBFlags wxPG_VFB_NULL{ wxPGVFBFlags::Null }; +wxDEPRECATED_MSG("use wxPGVFBFlags::StayInProperty instead") +constexpr wxPGVFBFlags wxPG_VFB_STAY_IN_PROPERTY{ wxPGVFBFlags::StayInProperty }; +wxDEPRECATED_MSG("use wxPGVFBFlags::Beep instead") +constexpr wxPGVFBFlags wxPG_VFB_BEEP{ wxPGVFBFlags::Beep }; +wxDEPRECATED_MSG("use wxPGVFBFlags::MarkCell instead") +constexpr wxPGVFBFlags wxPG_VFB_MARK_CELL{ wxPGVFBFlags::MarkCell }; +wxDEPRECATED_MSG("use wxPGVFBFlags::ShowMessage instead") +constexpr wxPGVFBFlags wxPG_VFB_SHOW_MESSAGE{ wxPGVFBFlags::ShowMessage }; +wxDEPRECATED_MSG("use wxPGVFBFlags::ShowMessageBox instead") +constexpr wxPGVFBFlags wxPG_VFB_SHOW_MESSAGEBOX{ wxPGVFBFlags::ShowMessageBox }; +wxDEPRECATED_MSG("use wxPGVFBFlags::ShowMessageOnStatusBar instead") +constexpr wxPGVFBFlags wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR{ wxPGVFBFlags::ShowMessageOnStatusBar }; +wxDEPRECATED_MSG("use wxPGVFBFlags::Default instead") +constexpr wxPGVFBFlags wxPG_VFB_DEFAULT{ wxPGVFBFlags::Default }; +wxDEPRECATED_MSG("use wxPGVFBFlags::Undefined instead") +constexpr wxPGVFBFlags wxPG_VFB_UNDEFINED{ wxPGVFBFlags::Undefined }; +#endif // WXWIN_COMPATIBILITY_3_2 + // ----------------------------------------------------------------------- // Most property grid functions have this type as their argument, as it can @@ -155,7 +232,7 @@ public: // Refresh when calling this function after control has been shown for // the first time. // This functions deselects selected property, if any. Validation - // failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, ie. + // failure option wxPGVFBFlags::StayInProperty is not respected, ie. // selection is cleared even if editor had invalid value. wxPGProperty* Append( wxPGProperty* property ); @@ -201,7 +278,7 @@ public: // handler, the actual deletion is postponed until the next // idle event. // This functions deselects selected property, if any. - // Validation failure option wxPG_VFB_STAY_IN_PROPERTY is not + // Validation failure option wxPGVFBFlags::StayInProperty is not // respected, ie. selection is cleared even if editor had // invalid value. void DeleteProperty( wxPGPropArg id ); @@ -451,13 +528,21 @@ public: // Returns a wxVariant list containing wxVariant versions of all // property values. Order is not guaranteed. - // flags - Use wxPG_KEEP_STRUCTURE to retain category structure; each sub + // flags - Use wxPGPropertyValuesFlags::KeepStructure to retain category structure; each sub // category will be its own wxVariantList of wxVariant. - // Use wxPG_INC_ATTRIBUTES to include property attributes as well. + // Use wxPGPropertyValuesFlags::IncAttributes to include property attributes as well. // Each attribute will be stored as list variant named // "@@attr." - wxVariant GetPropertyValues( const wxString& listname = wxString(), - wxPGProperty* baseparent = nullptr, long flags = 0 ) const +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use GetPropertyValues with flags argument as wxPGPropertyValuesFlags") + wxVariant GetPropertyValues(const wxString& listname, wxPGProperty* baseparent, long flags) const + { + return m_pState->DoGetPropertyValues(listname, baseparent, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + wxVariant GetPropertyValues(const wxString& listname = wxString(), + wxPGProperty* baseparent = nullptr, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse) const { return m_pState->DoGetPropertyValues(listname, baseparent, flags); } @@ -486,10 +571,16 @@ public: // Hides or reveals a property. // hide - If true, hides property, otherwise reveals it. // flags - By default changes are applied recursively. Set this parameter - // wxPG_DONT_RECURSE to prevent this. - bool HideProperty( wxPGPropArg id, - bool hide = true, - int flags = wxPG_RECURSE ); + // wxPGPropertyValuesFlags::DontRecurse to prevent this. +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use HideProperty with flags argument as wxPGPropertyValuesFlags") + bool HideProperty(wxPGPropArg id, bool hide, int flags) + { + HideProperty(id, hide, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + bool HideProperty(wxPGPropArg id, bool hide = true, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); #if wxPG_INCLUDE_ADVPROPS // Initializes *all* property types. Causes references to most object @@ -689,18 +780,23 @@ public: // Sets an attribute for this property. // name - Text identifier of attribute. See @ref propgrid_property_attributes. // value - Value of attribute. - // argFlags - Optional. Use wxPG_RECURSE to set the attribute to child + // argFlags - Optional. Use wxPGPropertyValuesFlags::Recurse to set the attribute to child // properties recursively. // Setting attribute's value to null wxVariant will simply remove it // from property's set of attributes. - void SetPropertyAttribute( wxPGPropArg id, - const wxString& attrName, - wxVariant value, - long argFlags = 0 ) +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetPropertyAttribute with argFlags argument as wxPGPropertyValuesFlags") + void SetPropertyAttribute(wxPGPropArg id, const wxString& attrName, + wxVariant value, long argFlags) { - DoSetPropertyAttribute(id,attrName,value,argFlags); + DoSetPropertyAttribute(id, attrName, value, static_cast(argFlags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetPropertyAttribute(wxPGPropArg id, const wxString& attrName, wxVariant value, + wxPGPropertyValuesFlags argFlags = wxPGPropertyValuesFlags::DontRecurse) + { + DoSetPropertyAttribute(id, attrName, value, argFlags); } - // Sets property attribute for all applicable properties. // Be sure to use this method only after all properties have been // added to the grid. @@ -709,33 +805,52 @@ public: // Sets background colour of a property. // id - Property name or pointer. // colour - New background colour. - // flags - Default is wxPG_RECURSE which causes colour to be set recursively. + // flags - Default is wxPGPropertyValuesFlags::Recurse which causes colour to be set recursively. // Omit this flag to only set colour for the property in question // and not any of its children. - void SetPropertyBackgroundColour( wxPGPropArg id, - const wxColour& colour, - int flags = wxPG_RECURSE ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetPropertyBackgroundColour with flags argument as wxPGPropertyValuesFlags") + void SetPropertyBackgroundColour(wxPGPropArg id, const wxColour& colour, int flags) + { + SetPropertyBackgroundColour(id, colour, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetPropertyBackgroundColour(wxPGPropArg id, const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Resets text and background colours of given property. // id - Property name or pointer. - // flags - Default is wxPG_DONT_RECURSE which causes colour to be reset + // flags - Default is wxPGPropertyValuesFlags::DontRecurse which causes colour to be reset // only for the property in question (for backward compatibility). #if WXWIN_COMPATIBILITY_3_0 void SetPropertyColoursToDefault(wxPGPropArg id); void SetPropertyColoursToDefault(wxPGPropArg id, int flags); #else - void SetPropertyColoursToDefault(wxPGPropArg id, int flags = wxPG_DONT_RECURSE); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetPropertyColoursToDefault with flags argument as wxPGPropertyValuesFlags") + void SetPropertyColoursToDefault(wxPGPropArg id, int flags) + { + SetPropertyColoursToDefault(id, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetPropertyColoursToDefault(wxPGPropArg id, wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); #endif // WXWIN_COMPATIBILITY_3_0 // Sets text colour of a property. // id - Property name or pointer. // colour - New background colour. - // flags - Default is wxPG_RECURSE which causes colour to be set recursively. + // flags - Default is wxPGPropertyValuesFlags::Recurse which causes colour to be set recursively. // Omit this flag to only set colour for the property in question // and not any of its children. - void SetPropertyTextColour( wxPGPropArg id, - const wxColour& col, - int flags = wxPG_RECURSE ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetPropertyTextColour with flags argument as wxPGPropertyValuesFlags") + void SetPropertyTextColour(wxPGPropArg id, const wxColour& col, int flags) + { + SetPropertyTextColour(id, col, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetPropertyTextColour(wxPGPropArg id, const wxColour& col, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Returns background colour of first cell of a property. wxColour GetPropertyBackgroundColour( wxPGPropArg id ) const @@ -810,10 +925,16 @@ public: // This is mainly for use with textctrl editor. Not all other editors fully // support it. // By default changes are applied recursively. Set parameter "flags" - // to wxPG_DONT_RECURSE to prevent this. - void SetPropertyReadOnly( wxPGPropArg id, - bool set = true, - int flags = wxPG_RECURSE ); + // to wxPGPropertyValuesFlags::DontRecurse to prevent this. +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetPropertyReadOnly with flags argument as wxPGPropertyValuesFlags") + void SetPropertyReadOnly(wxPGPropArg id, bool set, int flags) + { + SetPropertyReadOnly(id, set, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetPropertyReadOnly(wxPGPropArg id, bool set = true, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); // Sets property's value to unspecified. // If it has children (it may be category), then the same thing is done to @@ -1010,22 +1131,44 @@ public: // Adjusts how wxPropertyGrid behaves when invalid value is entered // in a property. // vfbFlags - See wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS for possible values. - void SetValidationFailureBehavior( int vfbFlags ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SetValidationFailureBehavior with wxPGVFBFlags argument") + void SetValidationFailureBehavior(int vfbFlags) + { + SetValidationFailureBehavior(static_cast(vfbFlags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SetValidationFailureBehavior(wxPGVFBFlags vfbFlags); // Sorts all properties recursively. // flags - This can contain any of the following options: - // wxPG_SORT_TOP_LEVEL_ONLY: Only sort categories and their + // wxPGPropertyValuesFlags::SortTopLevelOnly: Only sort categories and their // immediate children. Sorting done by wxPG_AUTO_SORT option // uses this. // See SortChildren, wxPropertyGrid::SetSortFunction - void Sort( int flags = 0 ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use Sort with wxPGPropertyValuesFlags argument") + void Sort(int flags) + { + Sort(static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void Sort(wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); // Sorts children of a property. // id - Name or pointer to a property. // flags - This can contain any of the following options: - // wxPG_RECURSE: Sorts recursively. + // wxPGPropertyValuesFlags::Recurse: Sorts recursively. // See Sort, wxPropertyGrid::SetSortFunction - void SortChildren( wxPGPropArg id, int flags = 0 ) +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use SortChildren with wxPGPropertyValuesFlags argument") + void SortChildren(wxPGPropArg id, int flags) + { + wxPG_PROP_ARG_CALL_PROLOG() + m_pState->DoSortChildren(p, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void SortChildren(wxPGPropArg id, wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse) { wxPG_PROP_ARG_CALL_PROLOG() m_pState->DoSortChildren(p, flags); @@ -1045,7 +1188,7 @@ public: protected: bool DoClearSelection( bool validation = false, - int selFlags = 0 ); + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null ); // In derived class, implement to set editable state component with // given name to given value. @@ -1081,7 +1224,7 @@ protected: // Intermediate version needed due to wxVariant copying inefficiency void DoSetPropertyAttribute( wxPGPropArg id, const wxString& name, - wxVariant& value, long argFlags ); + wxVariant& value, wxPGPropertyValuesFlags argFlags ); // Empty string object to return from member functions returning const // wxString&. diff --git a/include/wx/propgrid/propgridpagestate.h b/include/wx/propgrid/propgridpagestate.h index 699e038493..23a1967123 100644 --- a/include/wx/propgrid/propgridpagestate.h +++ b/include/wx/propgrid/propgridpagestate.h @@ -23,6 +23,118 @@ // ----------------------------------------------------------------------- +enum class wxPGSelectPropertyFlags : int +{ + // No flags + Null = 0, + // Focuses to created editor + Focus = 0x0001, + // Forces deletion and recreation of editor + Force = 0x0002, + // For example, doesn't cause EnsureVisible + Nonvisible = 0x0004, + // Do not validate editor's value before selecting + NoValidate = 0x0008, + // Property being deselected is about to be deleted + Deleting = 0x0010, + // Property's values was set to unspecified by the user + SetUnspec = 0x0020, + // Property's event handler changed the value + DialogVal = 0x0040, + // Set to disable sending of wxEVT_PG_SELECTED event + DontSendEvent = 0x0080, + // Don't make any graphics updates + NoRefresh = 0x0100 +}; + +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::Null instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_NONE{ wxPGSelectPropertyFlags::Null }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::Focus instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_FOCUS{wxPGSelectPropertyFlags::Focus }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::Force instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_FORCE{ wxPGSelectPropertyFlags::Force }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::Nonvisible instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_NONVISIBLE{ wxPGSelectPropertyFlags::Nonvisible }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::NoValidate instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_NOVALIDATE{ wxPGSelectPropertyFlags::NoValidate }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::Deleting instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_DELETING{wxPGSelectPropertyFlags::Deleting }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::SetUnspec instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_SETUNSPEC{ wxPGSelectPropertyFlags::SetUnspec }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::DialogVal instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_DIALOGVAL{ wxPGSelectPropertyFlags::DialogVal }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::DontSendEvent instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_DONT_SEND_EVENT{ wxPGSelectPropertyFlags::DontSendEvent }; +wxDEPRECATED_MSG("use wxPGSelectPropertyFlags::NoRefresh instead") +constexpr wxPGSelectPropertyFlags wxPG_SEL_NO_REFRESH{ wxPGSelectPropertyFlags::NoRefresh }; +#endif // WXWIN_COMPATIBILITY_3_2 + +constexpr wxPGSelectPropertyFlags operator|(wxPGSelectPropertyFlags a, wxPGSelectPropertyFlags b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr wxPGSelectPropertyFlags operator|=(wxPGSelectPropertyFlags& a, wxPGSelectPropertyFlags b) +{ + return a = a | b; +} + +constexpr wxPGSelectPropertyFlags operator&(wxPGSelectPropertyFlags a, wxPGSelectPropertyFlags b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr bool operator!(wxPGSelectPropertyFlags a) +{ + return static_cast>(a) == 0; +} + +// ----------------------------------------------------------------------- + +// DoSetSplitterPosition() flags + +enum class wxPGSplitterPositionFlags : int +{ + Null = 0, + Refresh = 0x0001, + AllPages = 0x0002, + FromEvent = 0x0004, + FromAutoCenter = 0x0008 +}; + +constexpr wxPGSplitterPositionFlags operator&(wxPGSplitterPositionFlags a, wxPGSplitterPositionFlags b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr wxPGSplitterPositionFlags operator|(wxPGSplitterPositionFlags a, wxPGSplitterPositionFlags b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr bool operator!(wxPGSplitterPositionFlags a) +{ + return static_cast>(a) == 0; +} + +#if WXWIN_COMPATIBILITY_3_2 +wxDEPRECATED_MSG("use wxPGSplitterPositionFlags::Refresh instead") +constexpr wxPGSplitterPositionFlags wxPG_SPLITTER_REFRESH { wxPGSplitterPositionFlags::Refresh }; +wxDEPRECATED_MSG("use wxPGSplitterPositionFlags::AllPages instead") +constexpr wxPGSplitterPositionFlags wxPG_SPLITTER_ALL_PAGES { wxPGSplitterPositionFlags::AllPages }; +wxDEPRECATED_MSG("use wxPGSplitterPositionFlags::FromEvent instead") +constexpr wxPGSplitterPositionFlags wxPG_SPLITTER_FROM_EVENT { wxPGSplitterPositionFlags::FromEvent }; +wxDEPRECATED_MSG("use wxPGSplitterPositionFlags::FromAutoCenter instead") +constexpr wxPGSplitterPositionFlags wxPG_SPLITTER_FROM_AUTO_CENTER { wxPGSplitterPositionFlags::FromAutoCenter }; +#endif // WXWIN_COMPATIBILITY_3_2 + +// ----------------------------------------------------------------------- + // A return value from wxPropertyGrid::HitTest(), // contains all you need to know about an arbitrary location on the grid. class WXDLLIMPEXP_PROPGRID wxPropertyGridHitTestResult @@ -358,9 +470,16 @@ public: // This needs to be overridden in grid used the manager so that splitter // changes can be propagated to other pages. - virtual void DoSetSplitterPosition( int pos, - int splitterColumn = 0, - int flags = 0 ); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use DoSetSplitterPosition with flags argument as wxPGSplitterPositionFlags") + virtual void DoSetSplitterPosition(int pos, int splitterColumn, int flags) + { + DoSetSplitterPosition(pos, splitterColumn, static_cast(flags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + virtual void DoSetSplitterPosition(int pos, + int splitterColumn = 0, + wxPGSplitterPositionFlags flags = wxPGSplitterPositionFlags::Null); bool EnableCategories( bool enable ); @@ -483,9 +602,8 @@ protected: return m_columnProportions[column]; } - wxVariant DoGetPropertyValues(const wxString& listname, - wxPGProperty* baseparent, - long flags) const; + wxVariant DoGetPropertyValues(const wxString& listname, wxPGProperty* baseparent, + wxPGPropertyValuesFlags flags) const; wxPGProperty* DoGetRoot() const { return m_properties; } @@ -503,7 +621,7 @@ protected: p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit); } - bool DoSelectProperty(wxPGProperty* p, unsigned int flags = 0); + bool DoSelectProperty(wxPGProperty* p, wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null); // Base append. wxPGProperty* DoAppend(wxPGProperty* property); @@ -531,7 +649,7 @@ protected: // Unselect sub-properties. void DoRemoveChildrenFromSelection(wxPGProperty* p, bool recursive, - int selFlags); + wxPGSelectPropertyFlags selFlags); // Mark sub-properties as being deleted. void DoMarkChildrenAsDeleted(wxPGProperty* p, bool recursive); @@ -544,7 +662,7 @@ protected: // so it won't remain in the way of the user code. void DoInvalidateChildrenNames(wxPGProperty* p, bool recursive); - bool DoHideProperty(wxPGProperty* p, bool hide, int flags = wxPG_RECURSE); + bool DoHideProperty(wxPGProperty* p, bool hide, wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); bool DoSetPropertyValueString(wxPGProperty* p, const wxString& value); @@ -554,8 +672,8 @@ protected: void DoSetPropertyValues(const wxVariantList& list, wxPGProperty* default_category); - void DoSortChildren(wxPGProperty* p, int flags = 0); - void DoSort(int flags = 0); + void DoSortChildren(wxPGProperty* p, wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); + void DoSort(wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); // widthChange is non-client. void OnClientWidthChange(int newWidth, int widthChange, bool fromOnResize = false); @@ -585,7 +703,14 @@ protected: void SetColumnCount(int colCount); - void ResetColumnSizes(int setSplitterFlags); +#if WXWIN_COMPATIBILITY_3_2 + wxDEPRECATED_MSG("use ResetColumnSizes with wxPGSplitterPositionFlags argument") + void ResetColumnSizes(int setSplitterFlags) + { + ResetColumnSizes(static_cast(setSplitterFlags)); + } +#endif // WXWIN_COMPATIBILITY_3_2 + void ResetColumnSizes(wxPGSplitterPositionFlags setSplitterFlags); bool PrepareAfterItemsAdded(); diff --git a/interface/wx/propgrid/manager.h b/interface/wx/propgrid/manager.h index de77ca8d4c..e02cb34b7c 100644 --- a/interface/wx/propgrid/manager.h +++ b/interface/wx/propgrid/manager.h @@ -276,7 +276,7 @@ public: @return Returns @true if value was actually updated. */ - bool CommitChangesFromEditor( wxUint32 flags = 0 ); + bool CommitChangesFromEditor(wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null); /** Two step creation. Whenever the control is created without any parameters, diff --git a/interface/wx/propgrid/property.h b/interface/wx/propgrid/property.h index ad7df37c4f..95232fe838 100644 --- a/interface/wx/propgrid/property.h +++ b/interface/wx/propgrid/property.h @@ -1706,9 +1706,9 @@ public: @param flags By default changes are applied recursively. Set this parameter to - ::wxPG_DONT_RECURSE to prevent this. + wxPGPropertyValuesFlags::DontRecurse to prevent this. */ - bool Hide( bool hide, int flags = wxPG_RECURSE ); + bool Hide(bool hide, wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Returns index of given child property. wxNOT_FOUND if @@ -1852,7 +1852,8 @@ public: Background colour to use. @param flags - Default is ::wxPG_RECURSE which causes colour to be set recursively. + Default is wxPGPropertyValuesFlags::Recurse which causes colour + to be set recursively. Omit this flag to only set colour for the property in question and not any of its children. @@ -1860,8 +1861,8 @@ public: Unlike wxPropertyGridInterface::SetPropertyBackgroundColour(), this does not automatically update the display. */ - void SetBackgroundColour( const wxColour& colour, - int flags = wxPG_RECURSE ); + void SetBackgroundColour(const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets editor for a property. @@ -2002,7 +2003,8 @@ public: Text colour to use. @param flags - Default is ::wxPG_RECURSE which causes colour to be set recursively. + Default is wxPGPropertyValuesFlags::Recurse which causes colour + to be set recursively. Omit this flag to only set colour for the property in question and not any of its children. @@ -2010,14 +2012,15 @@ public: Unlike wxPropertyGridInterface::SetPropertyTextColour(), this does not automatically update the display. */ - void SetTextColour( const wxColour& colour, - int flags = wxPG_RECURSE ); + void SetTextColour(const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets property's default text and background colours. @param flags - Default is ::wxPG_RECURSE which causes colours to be set recursively. + Default is wxPGPropertyValuesFlags::Recurse which + causes colours to be set recursively. Omit this flag to only set colours for the property in question and not any of its children. @@ -2027,7 +2030,7 @@ public: @since 3.1.0 */ - void SetDefaultColours(int flags = wxPG_RECURSE); + void SetDefaultColours(wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets wxValidator for a property */ void SetValidator( const wxValidator& validator ); @@ -2049,11 +2052,11 @@ public: Pointer to list variant that contains child values. Used to indicate which children should be marked as modified. Usually you just use @NULL. @param flags - ::wxPG_SETVAL_REFRESH_EDITOR is set by default, to refresh editor + wxPGSetValueFlags::RefreshEditor is set by default, to refresh editor and redraw properties. */ - void SetValue( wxVariant value, wxVariant* pList = nullptr, - int flags = wxPG_SETVAL_REFRESH_EDITOR ); + void SetValue(wxVariant value, wxVariant* pList = nullptr, + wxPGSetValueFlags flags = wxPGSetValueFlags::RefreshEditor ); /** Set wxBitmap taken from wxBitmapBundle in front of the value. diff --git a/interface/wx/propgrid/propgrid.h b/interface/wx/propgrid/propgrid.h index 387b9bbdec..bad9331534 100644 --- a/interface/wx/propgrid/propgrid.h +++ b/interface/wx/propgrid/propgrid.h @@ -274,26 +274,34 @@ constexpr long wxPGMAN_DEFAULT_STYLE = 0L; @{ */ -enum wxPG_VALIDATION_FAILURE_BEHAVIOR_FLAGS +/** + wxPropertyGrid Validation Failure behaviour Flags +*/ +enum class wxPGVFBFlags : int { +/** + @hideinitializer +*/ + Null = 0, + /** Prevents user from leaving property unless value is valid. If this behaviour flag is not used, then value change is instead cancelled. @hideinitializer */ -wxPG_VFB_STAY_IN_PROPERTY = 0x01, + StayInProperty = 0x0001, /** Calls wxBell() on validation failure. @hideinitializer */ -wxPG_VFB_BEEP = 0x02, + Beep = 0x0002, /** Cell with invalid value will be marked (with red colour). @hideinitializer */ -wxPG_VFB_MARK_CELL = 0x04, + MarkCell = 0x0004, /** Display a text message explaining the situation. @@ -305,42 +313,39 @@ wxPG_VFB_MARK_CELL = 0x04, using wxMessageBox. @hideinitializer */ -wxPG_VFB_SHOW_MESSAGE = 0x08, + ShowMessage = 0x0008, /** - Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the + Similar to SHOW_MESSAGE, except always displays the message using wxMessageBox. @hideinitializer */ -wxPG_VFB_SHOW_MESSAGEBOX = 0x10, + ShowMessageBox = 0x0010, /** - Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the + Similar to SHOW_MESSAGE, except always displays the message on the status bar (when present - you can reimplement wxPropertyGrid::GetStatusBar() in a derived class to specify this yourself). @hideinitializer */ -wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR = 0x20, + ShowMessageOnStatusBar = 0x0020, /** Defaults. @hideinitializer */ -wxPG_VFB_DEFAULT = wxPG_VFB_MARK_CELL | - wxPG_VFB_SHOW_MESSAGEBOX, + Default = MarkCell | ShowMessageBox, + +/** + @hideinitializer +*/ + Undefined = 0x0040 }; /** @} */ -/** - 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 - /** @class wxPGValidationInfo @@ -610,7 +615,7 @@ public: @return Returns @true if anything was changed. */ - virtual bool CommitChangesFromEditor( wxUint32 flags = 0 ); + virtual bool CommitChangesFromEditor(wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::Null); /** Two step creation. Whenever the control is created without any @@ -640,7 +645,7 @@ public: enable. @remarks This functions deselects selected property, if any. Validation - failure option ::wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ bool EnableCategories( bool enable ); @@ -1430,7 +1435,7 @@ public: /** Sets custom failure message for this time only. Only applies if - ::wxPG_VFB_SHOW_MESSAGE is set in validation failure flags. + wxPGVFBFlags::ShowMessage is set in validation failure flags. */ void SetValidationFailureMessage( const wxString& message ); diff --git a/interface/wx/propgrid/propgriddefs.h b/interface/wx/propgrid/propgriddefs.h index 26a5217863..23314b4411 100644 --- a/interface/wx/propgrid/propgriddefs.h +++ b/interface/wx/propgrid/propgriddefs.h @@ -57,50 +57,50 @@ constexpr int wxPG_INVALID_VALUE = std::numeric_limits::max(); // ----------------------------------------------------------------------- -enum wxPG_GETPROPERTYVALUES_FLAGS +enum class wxPGPropertyValuesFlags : int { -/** Flag for wxPropertyGridInterface::SetProperty* functions, - wxPropertyGridInterface::HideProperty(), etc. - Apply changes only for the property in question. - @hideinitializer -*/ -wxPG_DONT_RECURSE = 0x00000000, + /** Flag for wxPropertyGridInterface::SetProperty* functions, + wxPropertyGridInterface::HideProperty(), etc. + Apply changes only for the property in question. + @hideinitializer + */ + DontRecurse = 0x00000000, -/** Flag for wxPropertyGridInterface::GetPropertyValues(). - Use this flag to retain category structure; each sub-category - will be its own wxVariantList of wxVariant. - @hideinitializer -*/ -wxPG_KEEP_STRUCTURE = 0x00000010, + /** Flag for wxPropertyGridInterface::GetPropertyValues(). + Use this flag to retain category structure; each sub-category + will be its own wxVariantList of wxVariant. + @hideinitializer + */ + KeepStructure = 0x00000010, -/** Flag for wxPropertyGridInterface::SetProperty* functions, - wxPropertyGridInterface::HideProperty(), etc. - Apply changes recursively for the property and all its children. - @hideinitializer -*/ -wxPG_RECURSE = 0x00000020, + /** Flag for wxPropertyGridInterface::SetProperty* functions, + wxPropertyGridInterface::HideProperty(), etc. + Apply changes recursively for the property and all its children. + @hideinitializer + */ + Recurse = 0x00000020, -/** Flag for wxPropertyGridInterface::GetPropertyValues(). - Use this flag to include property attributes as well. - @hideinitializer -*/ -wxPG_INC_ATTRIBUTES = 0x00000040, + /** Flag for wxPropertyGridInterface::GetPropertyValues(). + Use this flag to include property attributes as well. + @hideinitializer + */ + IncAttributes = 0x00000040, -/** Used when first starting recursion. - @hideinitializer -*/ -wxPG_RECURSE_STARTS = 0x00000080, + /** Used when first starting recursion. + @hideinitializer + */ + RecurseStarts = 0x00000080, -/** Force value change. - @hideinitializer -*/ -wxPG_FORCE = 0x00000100, + /** Force value change. + @hideinitializer + */ + Force = 0x00000100, -/** Only sort categories and their immediate children. - Sorting done by ::wxPG_AUTO_SORT option uses this. - @hideinitializer -*/ -wxPG_SORT_TOP_LEVEL_ONLY = 0x00000200 + /** Only sort categories and their immediate children. + Sorting done by ::wxPG_AUTO_SORT option uses this. + @hideinitializer + */ + SortTopLevelOnly = 0x00000200 }; // ----------------------------------------------------------------------- @@ -157,24 +157,27 @@ enum wxPG_MISC_ARG_FLAGS /** wxPGProperty::SetValue() flags */ -enum wxPG_SETVALUE_FLAGS +enum class wxPGSetValueFlags : int { /** @hideinitializer */ - wxPG_SETVAL_REFRESH_EDITOR = 0x0001, + RefreshEditor = 0x0001, + /** @hideinitializer */ - wxPG_SETVAL_AGGREGATED = 0x0002, + Aggregated = 0x0002, + /** @hideinitializer */ - wxPG_SETVAL_FROM_PARENT = 0x0004, + FromParent = 0x0004, + /** Set if value changed by user @hideinitializer */ - wxPG_SETVAL_BY_USER = 0x0008 + ByUser = 0x0008 }; // ----------------------------------------------------------------------- diff --git a/interface/wx/propgrid/propgridiface.h b/interface/wx/propgrid/propgridiface.h index e4aee0a63b..35b65c1362 100644 --- a/interface/wx/propgrid/propgridiface.h +++ b/interface/wx/propgrid/propgridiface.h @@ -110,7 +110,7 @@ public: Refresh() when calling this function after control has been shown for the first time. - This functions deselects selected property, if any. Validation - failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ wxPGProperty* Append( wxPGProperty* property ); @@ -139,7 +139,7 @@ public: Deletes all properties. @remarks This functions deselects selected property, if any. Validation - failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ virtual void Clear() = 0; @@ -173,7 +173,7 @@ public: @return Returns @true if actually collapsed. @remarks This function may deselect selected property, if any. Validation - failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ bool Collapse( wxPGPropArg id ); @@ -185,7 +185,7 @@ public: Return @false if failed (may fail if editor value cannot be validated). @remarks This functions clears selection. Validation failure option - wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. selection + wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ bool CollapseAll(); @@ -213,7 +213,7 @@ public: idle event. This functions deselects selected property, if any. - Validation failure option wxPG_VFB_STAY_IN_PROPERTY is not + Validation failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ @@ -265,7 +265,7 @@ public: @return Returns @true if actually expanded. @remarks This function may deselect selected property, if any. Validation - failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ bool Expand( wxPGPropArg id ); @@ -274,7 +274,7 @@ public: Expands all items that can be expanded. @remarks This functions clears selection. Validation failure option - wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. selection + wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. */ bool ExpandAll( bool expand = true ); @@ -519,14 +519,16 @@ public: The base property which children properties will be queried for values. @param flags - Use @c wxPG_KEEP_STRUCTURE to retain category structure; each sub - category will be its own wxVariantList of wxVariant. - Use @c wxPG_INC_ATTRIBUTES to include property attributes as well. + Use wxPGPropertyValuesFlags::KeepStructure to retain category structure; + each sub category will be its own wxVariantList of wxVariant. + Use wxPGPropertyValuesFlags::IncAttributes to include property attributes + as well. Each attribute will be stored as list variant named @"@@@@@attr.@" */ - wxVariant GetPropertyValues( const wxString& listname = wxString(), - wxPGProperty* baseparent = nullptr, long flags = 0 ) const; + wxVariant GetPropertyValues(const wxString& listname = wxString(), + wxPGProperty* baseparent = nullptr, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse) const; /** Returns list of currently selected properties. @@ -563,9 +565,10 @@ public: If @true, hides property, otherwise reveals it. @param flags By default changes are applied recursively. Set this parameter - wxPG_DONT_RECURSE to prevent this. + wxPGPropertyValuesFlags::DontRecurse to prevent this. */ - bool HideProperty( wxPGPropArg id, bool hide = true, int flags = wxPG_RECURSE ); + bool HideProperty(wxPGPropArg id, bool hide = true, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Initializes *all* property types. Causes references to most object @@ -598,7 +601,7 @@ public: especially true if current mode is non-categoric. - This functions deselects selected property, if any. Validation - failure option wxPG_VFB_STAY_IN_PROPERTY is not respected, i.e. + failure option wxPGVFBFlags::StayInProperty is not respected, i.e. selection is cleared even if editor had invalid value. Example of use: @@ -843,15 +846,16 @@ public: Value of attribute. @param argFlags Optional. - Use wxPG_RECURSE to set the attribute to child properties recursively. + Use wxPGPropertyValuesFlags::Recurse to set the attribute to child + properties recursively. @remarks - Setting attribute's value to null wxVariant will simply remove it from property's set of attributes. - Property is refreshed with new settings. */ - void SetPropertyAttribute( wxPGPropArg id, const wxString& attrName, - wxVariant value, long argFlags = 0 ); + void SetPropertyAttribute(wxPGPropArg id, const wxString& attrName, wxVariant value, + wxPGPropertyValuesFlags argFlags = wxPGPropertyValuesFlags::DontRecurse); /** Sets property attribute for all applicable properties. @@ -873,7 +877,8 @@ public: New background colour. @param flags - Default is wxPG_RECURSE which causes colour to be set recursively. + Default is wxPGPropertyValuesFlags::Recurse which causes colour + to be set recursively. Omit this flag to only set colour for the property in question and not any of its children. @@ -881,9 +886,8 @@ public: - If category is tried to set recursively, only its children are affected. - Property is redrawn with new colour. */ - void SetPropertyBackgroundColour( wxPGPropArg id, - const wxColour& colour, - int flags = wxPG_RECURSE ); + void SetPropertyBackgroundColour(wxPGPropArg id, const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets text, bitmap, and colours for given column's cell. @@ -914,14 +918,16 @@ public: Property name or pointer. @param flags - Default is wxPG_DONT_RECURSE which causes colour to be reset + Default is wxPGPropertyValuesFlags::DontRecurse which causes + colour to be reset only for the property in question (for backward compatibility). @remarks - If category is tried to set recursively, only its children are affected. - Property is redrawn with new colours. */ - void SetPropertyColoursToDefault(wxPGPropArg id, int flags = wxPG_DONT_RECURSE); + void SetPropertyColoursToDefault(wxPGPropArg id, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); /** Sets editor for a property. @@ -976,15 +982,15 @@ public: @param flags By default changes are applied recursively. Set this parameter - to wxPG_DONT_RECURSE to prevent this. + to wxPGPropertyValuesFlags::DontRecurse to prevent this. @remarks - This is mainly for use with textctrl editor. Only some other editors fully support it. - Property is refreshed with new settings. */ - void SetPropertyReadOnly( wxPGPropArg id, bool set = true, - int flags = wxPG_RECURSE ); + void SetPropertyReadOnly(wxPGPropArg id, bool set = true, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets property's value to unspecified. If it has children (it may be @@ -1050,7 +1056,8 @@ public: New text colour. @param flags - Default is wxPG_RECURSE which causes colour to be set recursively. + Default is wxPGPropertyValuesFlags::Recurse which causes colour + to be set recursively. Omit this flag to only set colour for the property in question and not any of its children. @@ -1058,9 +1065,8 @@ public: - If category is tried to set recursively, only its children are affected. - Property is redrawn with new colour. */ - void SetPropertyTextColour( wxPGPropArg id, - const wxColour& colour, - int flags = wxPG_RECURSE ); + void SetPropertyTextColour(wxPGPropArg id, const wxColour& colour, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::Recurse); /** Sets validator of a property. @@ -1146,20 +1152,20 @@ public: @param vfbFlags See @ref propgrid_vfbflags for possible values. */ - void SetValidationFailureBehavior( int vfbFlags ); + void SetValidationFailureBehavior( wxPGVFBFlags vfbFlags ); /** Sorts all properties recursively. @param flags This can contain any of the following options: - wxPG_SORT_TOP_LEVEL_ONLY: Only sort categories and their - immediate children. Sorting done by wxPG_AUTO_SORT option - uses this. + wxPGPropertyValuesFlags::SortTopLevelOnly: Only sort categories + and their immediate children. Sorting done by wxPG_AUTO_SORT + option uses this. @see SortChildren, wxPropertyGrid::SetSortFunction */ - void Sort( int flags = 0 ); + void Sort(wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); /** Sorts children of a property. @@ -1169,11 +1175,12 @@ public: @param flags This can contain any of the following options: - wxPG_RECURSE: Sorts recursively. + wxPGPropertyValuesFlags::Recurse: Sorts recursively. @see Sort, wxPropertyGrid::SetSortFunction */ - void SortChildren( wxPGPropArg id, int flags = 0 ); + void SortChildren(wxPGPropArg id, + wxPGPropertyValuesFlags flags = wxPGPropertyValuesFlags::DontRecurse); /** Returns editor pointer of editor with given name. diff --git a/samples/propgrid/propgrid.cpp b/samples/propgrid/propgrid.cpp index 052941df19..c106b4bb0f 100644 --- a/samples/propgrid/propgrid.cpp +++ b/samples/propgrid/propgrid.cpp @@ -653,7 +653,7 @@ void FormMain::OnPropertyGridChanging( wxPropertyGridEvent& event ) // Since we ask a question, it is better if we omit any validation // failure behaviour. - event.SetValidationFailureBehavior(0); + event.SetValidationFailureBehavior(wxPGVFBFlags::Null); } } } @@ -1730,7 +1730,7 @@ void FormMain::PopulateWithLibraryConfig () ADD_WX_LIB_CONF( wxUSE_XML ) // Set them to use check box. - pg->SetPropertyAttribute(pid,wxPG_BOOL_USE_CHECKBOX,true,wxPG_RECURSE); + pg->SetPropertyAttribute(pid,wxPG_BOOL_USE_CHECKBOX,true, wxPGPropertyValuesFlags::Recurse); } // ----------------------------------------------------------------------- @@ -1905,8 +1905,8 @@ void FormMain::CreateGrid( int style, int extraStyle ) pgman->SetExtraStyle(extraStyle); // This is the default validation failure behaviour - m_pPropGridManager->SetValidationFailureBehavior( wxPG_VFB_MARK_CELL | - wxPG_VFB_SHOW_MESSAGEBOX ); + m_pPropGridManager->SetValidationFailureBehavior( wxPGVFBFlags::MarkCell | + wxPGVFBFlags::ShowMessageBox ); m_pPropGridManager->GetGrid()->SetVerticalSpacing( 2 ); @@ -2562,7 +2562,8 @@ FormMain::OnSetBackgroundColour( wxCommandEvent& event ) if ( col.IsOk() ) { - int flags = (event.GetId()==ID_SETBGCOLOURRECUR) ? wxPG_RECURSE : 0; + wxPGPropertyValuesFlags flags = (event.GetId()==ID_SETBGCOLOURRECUR) + ? wxPGPropertyValuesFlags::Recurse : wxPGPropertyValuesFlags::DontRecurse; pg->SetPropertyBackgroundColour(prop, col, flags); } } @@ -2637,7 +2638,7 @@ void FormMain::OnTestReplaceClick( wxCommandEvent& WXUNUSED(event) ) m_pPropGridManager->SetPropertyAttribute( newId, wxPG_BOOL_USE_CHECKBOX, true, - wxPG_RECURSE ); + wxPGPropertyValuesFlags::Recurse ); m_pPropGridManager->SelectProperty(newId); } else @@ -2811,13 +2812,13 @@ void FormMain::OnCatColours( wxCommandEvent& event ) if ( event.IsChecked() ) { // Set custom colours. - pg->SetPropertyTextColour( "Appearance", wxColour(255,0,0), wxPG_DONT_RECURSE ); + pg->SetPropertyTextColour( "Appearance", wxColour(255,0,0), wxPGPropertyValuesFlags::DontRecurse ); pg->SetPropertyBackgroundColour( "Appearance", wxColour(255,255,183) ); pg->SetPropertyTextColour( "Appearance", wxColour(255,0,183) ); - pg->SetPropertyTextColour( "PositionCategory", wxColour(0,255,0), wxPG_DONT_RECURSE ); + pg->SetPropertyTextColour( "PositionCategory", wxColour(0,255,0), wxPGPropertyValuesFlags::DontRecurse ); pg->SetPropertyBackgroundColour( "PositionCategory", wxColour(255,226,190) ); pg->SetPropertyTextColour( "PositionCategory", wxColour(255,0,190) ); - pg->SetPropertyTextColour( "Environment", wxColour(0,0,255), wxPG_DONT_RECURSE ); + pg->SetPropertyTextColour( "Environment", wxColour(0,0,255), wxPGPropertyValuesFlags::DontRecurse); pg->SetPropertyBackgroundColour( "Environment", wxColour(208,240,175) ); pg->SetPropertyTextColour( "Environment", wxColour(255,255,255) ); pg->SetPropertyBackgroundColour( "More Examples", wxColour(172,237,255) ); @@ -2827,12 +2828,12 @@ void FormMain::OnCatColours( wxCommandEvent& event ) { // Revert to original. pg->SetPropertyColoursToDefault( "Appearance" ); - pg->SetPropertyColoursToDefault( "Appearance", wxPG_RECURSE ); + pg->SetPropertyColoursToDefault( "Appearance", wxPGPropertyValuesFlags::Recurse ); pg->SetPropertyColoursToDefault( "PositionCategory" ); - pg->SetPropertyColoursToDefault( "PositionCategory", wxPG_RECURSE ); + pg->SetPropertyColoursToDefault( "PositionCategory", wxPGPropertyValuesFlags::Recurse ); pg->SetPropertyColoursToDefault( "Environment" ); - pg->SetPropertyColoursToDefault( "Environment", wxPG_RECURSE ); - pg->SetPropertyColoursToDefault( "More Examples", wxPG_RECURSE ); + pg->SetPropertyColoursToDefault( "Environment", wxPGPropertyValuesFlags::Recurse ); + pg->SetPropertyColoursToDefault( "More Examples", wxPGPropertyValuesFlags::Recurse ); } m_pPropGridManager->Thaw(); m_pPropGridManager->Refresh(); @@ -3048,7 +3049,7 @@ void FormMain::OnMisc ( wxCommandEvent& event ) { m_storedValues = m_pPropGridManager->GetGrid()->GetPropertyValues("Test", m_pPropGridManager->GetGrid()->GetRoot(), - wxPG_KEEP_STRUCTURE|wxPG_INC_ATTRIBUTES); + wxPGPropertyValuesFlags::KeepStructure|wxPGPropertyValuesFlags::IncAttributes); } else if ( id == ID_SETVALUES ) { @@ -3110,7 +3111,7 @@ void FormMain::OnPopulateClick( wxCommandEvent& event ) void FormMain::OnDumpList(wxCommandEvent& WXUNUSED(event)) { - wxVariant values = m_pPropGridManager->GetPropertyValues("list", wxNullProperty, wxPG_INC_ATTRIBUTES); + wxVariant values = m_pPropGridManager->GetPropertyValues("list", wxNullProperty, wxPGPropertyValuesFlags::IncAttributes); wxString text = "This only tests that wxVariant related routines do not crash.\n"; wxDialog* dlg = new wxDialog(this, wxID_ANY, "wxVariant Test", diff --git a/src/propgrid/editors.cpp b/src/propgrid/editors.cpp index 48004b4f65..84de59c067 100644 --- a/src/propgrid/editors.cpp +++ b/src/propgrid/editors.cpp @@ -1368,31 +1368,64 @@ WX_PG_IMPLEMENT_INTERNAL_EDITOR_CLASS(CheckBox, // Check box state flags -enum +enum class wxSimpleCheckBoxStates : int { - wxSCB_STATE_UNCHECKED = 0, - wxSCB_STATE_CHECKED = 1, - wxSCB_STATE_BOLD = 2, - wxSCB_STATE_UNSPECIFIED = 4 + Unchecked = 0, + Checked = 1, + Bold = 2, + Unspecified = 4 }; +constexpr wxSimpleCheckBoxStates operator&(wxSimpleCheckBoxStates a, wxSimpleCheckBoxStates b) +{ + return static_cast(static_cast>(a) + & static_cast>(b)); +} + +constexpr wxSimpleCheckBoxStates operator|(wxSimpleCheckBoxStates a, wxSimpleCheckBoxStates b) +{ + return static_cast(static_cast>(a) + | static_cast>(b)); +} + +constexpr wxSimpleCheckBoxStates operator|=(wxSimpleCheckBoxStates& a, wxSimpleCheckBoxStates b) +{ + return a = a | b; +} + +constexpr wxSimpleCheckBoxStates operator^(wxSimpleCheckBoxStates a, wxSimpleCheckBoxStates b) +{ + return static_cast(static_cast>(a) + ^ static_cast>(b)); +} + +constexpr wxSimpleCheckBoxStates operator^=(wxSimpleCheckBoxStates& a, wxSimpleCheckBoxStates b) +{ + return a = a ^ b; +} + +constexpr bool operator!(wxSimpleCheckBoxStates a) +{ + return static_cast>(a) == 0; +} + const int wxSCB_SETVALUE_CYCLE = 2; -static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, int state) +static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, wxSimpleCheckBoxStates state) { #if wxPG_USE_RENDERER_NATIVE int cbFlags = 0; - if ( state & wxSCB_STATE_UNSPECIFIED ) + if ( !!(state & wxSimpleCheckBoxStates::Unspecified) ) { cbFlags |= wxCONTROL_UNDETERMINED; } - else if ( state & wxSCB_STATE_CHECKED ) + else if ( !!(state & wxSimpleCheckBoxStates::Checked) ) { cbFlags |= wxCONTROL_CHECKED; } - if ( state & wxSCB_STATE_BOLD ) + if ( !!(state & wxSimpleCheckBoxStates::Bold) ) { // wxCONTROL_CHECKED and wxCONTROL_PRESSED flags // are equivalent for wxOSX so we have to use @@ -1410,7 +1443,7 @@ static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, int wxColour useCol = dc.GetTextForeground(); - if ( state & wxSCB_STATE_UNSPECIFIED ) + if ( !!(state & wxSimpleCheckBoxStates::Unspecified) ) { useCol = wxColour(220, 220, 220); } @@ -1418,7 +1451,7 @@ static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, int wxRect r(rect); // Draw check mark first because it is likely to overdraw the // surrounding rectangle. - if ( state & wxSCB_STATE_CHECKED ) + if ( !!(state & wxSimpleCheckBoxStates::Checked) ) { wxRect r2(r.x+wxPG_CHECKMARK_XADJ, r.y+wxPG_CHECKMARK_YADJ, @@ -1434,7 +1467,7 @@ static void DrawSimpleCheckBox(wxWindow* win, wxDC& dc, const wxRect& rect, int // dc.DrawLine(r.x,r.y+r.height-1,r.x+r.width-1,r.y); } - if ( !(state & wxSCB_STATE_BOLD) ) + if ( !(state & wxSimpleCheckBoxStates::Bold) ) { // Pen for thin rectangle. dc.SetPen(useCol); @@ -1472,7 +1505,7 @@ public: const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize ) : wxControl(parent,id,pos,size,wxBORDER_NONE|wxWANTS_CHARS) - , m_state(0) + , m_state(wxSimpleCheckBoxStates::Unchecked) { // Due to SetOwnFont stuff necessary for GTK+ 1.2, we need to have this wxControl::SetFont( parent->GetFont() ); @@ -1498,7 +1531,7 @@ public: return wxRect(r.x + wxPG_XBEFORETEXT, r.y + ((r.height - box_h) / 2), box_h, box_h); } - int m_state; + wxSimpleCheckBoxStates m_state; private: void OnPaint( wxPaintEvent& event ); @@ -1542,10 +1575,10 @@ void wxSimpleCheckBox::OnPaint( wxPaintEvent& WXUNUSED(event) ) dc.SetTextForeground(GetForegroundColour()); - int state = m_state; - if ( !(state & wxSCB_STATE_UNSPECIFIED) && + wxSimpleCheckBoxStates state = m_state; + if ( !(state & wxSimpleCheckBoxStates::Unspecified) && GetFont().GetWeight() == wxFONTWEIGHT_BOLD ) - state |= wxSCB_STATE_BOLD; + state |= wxSimpleCheckBoxStates::Bold; DrawSimpleCheckBox(this, dc, m_boxRect, state); } @@ -1570,11 +1603,11 @@ void wxSimpleCheckBox::SetValue( int value ) { if ( value == wxSCB_SETVALUE_CYCLE ) { - m_state ^= wxSCB_STATE_CHECKED; + m_state ^= wxSimpleCheckBoxStates::Checked; } else { - m_state = value; + m_state = value == 0 ? wxSimpleCheckBoxStates::Unchecked : wxSimpleCheckBoxStates::Checked; } Refresh(); @@ -1637,17 +1670,17 @@ void wxPGCheckBoxEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property, const wxString& WXUNUSED(text) ) const { - int state = wxSCB_STATE_UNCHECKED; + wxSimpleCheckBoxStates state = wxSimpleCheckBoxStates::Unchecked; if ( !property->IsValueUnspecified() ) { - state = property->GetChoiceSelection(); + state = property->GetChoiceSelection() == 0 ? wxSimpleCheckBoxStates::Unchecked : wxSimpleCheckBoxStates::Checked; if ( dc.GetFont().GetWeight() == wxFONTWEIGHT_BOLD ) - state |= wxSCB_STATE_BOLD; + state |= wxSimpleCheckBoxStates::Bold; } else { - state |= wxSCB_STATE_UNSPECIFIED; + state |= wxSimpleCheckBoxStates::Unspecified; } // Box rectangle @@ -1662,9 +1695,10 @@ void wxPGCheckBoxEditor::UpdateControl( wxPGProperty* property, wxCHECK_RET(cb, "Only wxSimpleCheckBox editor can be updated"); if ( !property->IsValueUnspecified() ) - cb->m_state = property->GetChoiceSelection(); + cb->m_state = property->GetChoiceSelection() == 0 + ? wxSimpleCheckBoxStates::Unchecked : wxSimpleCheckBoxStates::Checked; else - cb->m_state = wxSCB_STATE_UNSPECIFIED; + cb->m_state = wxSimpleCheckBoxStates::Unspecified; wxPropertyGrid* propGrid = property->GetGrid(); cb->SetBoxHeight(propGrid->GetFontHeight()); @@ -1687,7 +1721,7 @@ bool wxPGCheckBoxEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* { wxSimpleCheckBox* cb = (wxSimpleCheckBox*)ctrl; - int index = cb->m_state; + int index = !!(cb->m_state & wxSimpleCheckBoxStates::Checked) ? 1 : 0; if ( index != property->GetChoiceSelection() || // Changing unspecified always causes event (returning @@ -1703,15 +1737,14 @@ bool wxPGCheckBoxEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* void wxPGCheckBoxEditor::SetControlIntValue( wxPGProperty* WXUNUSED(property), wxWindow* ctrl, int value ) const { - if ( value != 0 ) value = 1; - ((wxSimpleCheckBox*)ctrl)->m_state = value; + ((wxSimpleCheckBox*)ctrl)->m_state = value == 0 ? wxSimpleCheckBoxStates::Unchecked : wxSimpleCheckBoxStates::Checked; ctrl->Refresh(); } void wxPGCheckBoxEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* ctrl ) const { - ((wxSimpleCheckBox*)ctrl)->m_state = wxSCB_STATE_UNSPECIFIED; + ((wxSimpleCheckBox*)ctrl)->m_state = wxSimpleCheckBoxStates::Unspecified; ctrl->Refresh(); } diff --git a/src/propgrid/manager.cpp b/src/propgrid/manager.cpp index 5db5f8f39f..e1fc46ba70 100644 --- a/src/propgrid/manager.cpp +++ b/src/propgrid/manager.cpp @@ -366,14 +366,12 @@ void wxPropertyGridPage::SetSplitterPosition( int splitterPos, int col ) if ( pg->GetState() == this ) pg->SetSplitterPosition(splitterPos); else - DoSetSplitterPosition(splitterPos, col, false); + DoSetSplitterPosition(splitterPos, col, wxPGSplitterPositionFlags::Null); } -void wxPropertyGridPage::DoSetSplitterPosition( int pos, - int splitterColumn, - int flags ) +void wxPropertyGridPage::DoSetSplitterPosition(int pos, int splitterColumn, wxPGSplitterPositionFlags flags ) { - if ( (flags & wxPG_SPLITTER_ALL_PAGES) && m_manager->GetPageCount() ) + if ( !!(flags & wxPGSplitterPositionFlags::AllPages) && m_manager->GetPageCount() ) m_manager->SetSplitterPosition( pos, splitterColumn ); else wxPropertyGridPageState::DoSetSplitterPosition( pos, @@ -515,8 +513,8 @@ private: x += colWidth; pg->DoSetSplitterPosition(x, col, - wxPG_SPLITTER_REFRESH | - wxPG_SPLITTER_FROM_EVENT); + wxPGSplitterPositionFlags::Refresh | + wxPGSplitterPositionFlags::FromEvent); } void OnResizing(wxHeaderCtrlEvent& evt) @@ -528,7 +526,7 @@ private: OnColumWidthsChanged(); wxPropertyGrid* pg = m_manager->GetGrid(); - pg->SendEvent(wxEVT_PG_COL_DRAGGING, nullptr, nullptr, 0, + pg->SendEvent(wxEVT_PG_COL_DRAGGING, nullptr, nullptr, wxPGSelectPropertyFlags::Null, (unsigned int)col); } @@ -546,7 +544,7 @@ private: evt.Veto(); // Allow application to veto dragging else if ( pg->SendEvent(wxEVT_PG_COL_BEGIN_DRAG, - nullptr, nullptr, 0, + nullptr, nullptr, wxPGSelectPropertyFlags::Null, (unsigned int)col) ) evt.Veto(); } @@ -556,7 +554,7 @@ private: int col = evt.GetColumn(); wxPropertyGrid* pg = m_manager->GetGrid(); pg->SendEvent(wxEVT_PG_COL_END_DRAG, - nullptr, nullptr, 0, + nullptr, nullptr, wxPGSelectPropertyFlags::Null, (unsigned int)col); } @@ -2319,7 +2317,7 @@ void wxPropertyGridManager::SetSplitterPosition( int pos, int splitterColumn ) { wxPropertyGridPage* page = GetPage(i); page->DoSetSplitterPosition( pos, splitterColumn, - wxPG_SPLITTER_REFRESH ); + wxPGSplitterPositionFlags::Refresh ); } #if wxUSE_HEADERCTRL diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index db1ef35c27..0f5a25b5d9 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -1422,11 +1422,11 @@ bool wxPGProperty::OnEvent( wxPropertyGrid*, wxWindow*, wxEvent& ) } -void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) +void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, wxPGSetValueFlags flags ) { // If auto unspecified values are not wanted (via window or property style), // then get default value instead of null wxVariant. - if ( value.IsNull() && (flags & wxPG_SETVAL_BY_USER) && + if ( value.IsNull() && !!(flags & wxPGSetValueFlags::ByUser) && !UsesAutoUnspecified() ) { value = GetDefaultValue(); @@ -1457,7 +1457,7 @@ void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) } if ( HasFlag( wxPG_PROP_AGGREGATE) ) - flags |= wxPG_SETVAL_AGGREGATED; + flags |= wxPGSetValueFlags::Aggregated; if ( pList && !pList->IsNull() ) { @@ -1481,15 +1481,15 @@ void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) //wxLogDebug(wxS("%i: child = %s, childValue.GetType()=%s"),i,child->GetBaseName(),childValue.GetType()); if ( childValue.IsType(wxPG_VARIANT_TYPE_LIST) ) { - if ( child->HasFlag(wxPG_PROP_AGGREGATE) && !(flags & wxPG_SETVAL_AGGREGATED) ) + if ( child->HasFlag(wxPG_PROP_AGGREGATE) && !(flags & wxPGSetValueFlags::Aggregated) ) { wxVariant listRefCopy = childValue; - child->SetValue(childValue, &listRefCopy, flags|wxPG_SETVAL_FROM_PARENT); + child->SetValue(childValue, &listRefCopy, flags| wxPGSetValueFlags::FromParent); } else { wxVariant oldVal = child->GetValue(); - child->SetValue(oldVal, &childValue, flags|wxPG_SETVAL_FROM_PARENT); + child->SetValue(oldVal, &childValue, flags| wxPGSetValueFlags::FromParent); } } else if ( child->GetValue() != childValue ) @@ -1497,8 +1497,8 @@ void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) // For aggregate properties, we will trust RefreshChildren() // to update child values. if ( !HasFlag(wxPG_PROP_AGGREGATE) ) - child->SetValue(childValue, nullptr, flags|wxPG_SETVAL_FROM_PARENT); - if ( flags & wxPG_SETVAL_BY_USER ) + child->SetValue(childValue, nullptr, flags| wxPGSetValueFlags::FromParent); + if ( !!(flags & wxPGSetValueFlags::ByUser) ) child->SetFlag(wxPG_PROP_MODIFIED); } } @@ -1518,7 +1518,7 @@ void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) OnSetValue(); } - if ( flags & wxPG_SETVAL_BY_USER ) + if ( !!(flags & wxPGSetValueFlags::ByUser) ) SetFlag(wxPG_PROP_MODIFIED); if ( HasFlag(wxPG_PROP_AGGREGATE) ) @@ -1540,16 +1540,16 @@ void wxPGProperty::SetValue( wxVariant value, wxVariant* pList, int flags ) if ( AreChildrenComponents() ) { for ( unsigned int i = 0; i < GetChildCount(); i++ ) - Item(i)->SetValue(value, nullptr, flags|wxPG_SETVAL_FROM_PARENT); + Item(i)->SetValue(value, nullptr, flags| wxPGSetValueFlags::FromParent); } } - if ( !(flags & wxPG_SETVAL_FROM_PARENT) ) + if ( !(flags & wxPGSetValueFlags::FromParent) ) UpdateParentValues(); // // Update editor control. - if ( flags & wxPG_SETVAL_REFRESH_EDITOR ) + if ( !!(flags & wxPGSetValueFlags::RefreshEditor) ) { wxPropertyGrid* pg = GetGridIfDisplayed(); if ( pg ) @@ -1774,11 +1774,10 @@ wxPGCell& wxPGProperty::GetOrCreateCell( unsigned int column ) return m_cells[column]; } -void wxPGProperty::SetBackgroundColour( const wxColour& colour, - int flags ) +void wxPGProperty::SetBackgroundColour(const wxColour& colour, wxPGPropertyValuesFlags flags) { wxPGProperty* firstProp = this; - bool recursively = (flags & wxPG_RECURSE) != 0; + bool recursively = !!(flags & wxPGPropertyValuesFlags::Recurse); // // If category is tried to set recursively, skip it and only @@ -1810,11 +1809,10 @@ void wxPGProperty::SetBackgroundColour( const wxColour& colour, recursively ); } -void wxPGProperty::SetTextColour( const wxColour& colour, - int flags ) +void wxPGProperty::SetTextColour(const wxColour& colour, wxPGPropertyValuesFlags flags) { wxPGProperty* firstProp = this; - bool recursively = (flags & wxPG_RECURSE) != 0; + bool recursively = !!(flags & wxPGPropertyValuesFlags::Recurse); // // If category is tried to set recursively, skip it and only @@ -1846,10 +1844,10 @@ void wxPGProperty::SetTextColour( const wxColour& colour, recursively ); } -void wxPGProperty::SetDefaultColours(int flags) +void wxPGProperty::SetDefaultColours(wxPGPropertyValuesFlags flags) { wxPGProperty* firstProp = this; - bool recursively = (flags & wxPG_RECURSE) != 0; + bool recursively = !!(flags & wxPGPropertyValuesFlags::Recurse); // If category is tried to set recursively, skip it and only // affect the children. @@ -2130,7 +2128,7 @@ bool wxPGProperty::SetChoices( const wxPGChoices& choices ) if ( isSelected ) { // Recreate editor - pg->DoSelectProperty(this, wxPG_SEL_FORCE); + pg->DoSelectProperty(this, wxPGSelectPropertyFlags::Force); } return true; @@ -2156,7 +2154,7 @@ const wxPGEditor* wxPGProperty::GetEditorClass() const return editor; } -bool wxPGProperty::Hide( bool hide, int flags ) +bool wxPGProperty::Hide( bool hide, wxPGPropertyValuesFlags flags ) { wxPropertyGrid* pg = GetGrid(); if ( pg ) @@ -2165,14 +2163,14 @@ bool wxPGProperty::Hide( bool hide, int flags ) return DoHide( hide, flags ); } -bool wxPGProperty::DoHide( bool hide, int flags ) +bool wxPGProperty::DoHide( bool hide, wxPGPropertyValuesFlags flags ) { ChangeFlag(wxPG_PROP_HIDDEN, hide); - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) { for ( unsigned int i = 0; i < GetChildCount(); i++ ) - Item(i)->DoHide(hide, flags | wxPG_RECURSE_STARTS); + Item(i)->DoHide(hide, flags | wxPGPropertyValuesFlags::RecurseStarts); } return true; @@ -2199,7 +2197,7 @@ bool wxPGProperty::RecreateEditor() wxPGProperty* selected = pg->GetSelection(); if ( this == selected ) { - pg->DoSelectProperty(this, wxPG_SEL_FORCE); + pg->DoSelectProperty(this, wxPGSelectPropertyFlags::Force); return true; } return false; diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 971827c675..8869a12e4d 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -360,7 +360,7 @@ void wxPropertyGrid::Init1() m_inCommitChangesFromEditor = false; m_inDoSelectProperty = false; m_inOnValidationFailure = false; - m_permanentValidationFailureBehavior = wxPG_VFB_DEFAULT; + m_permanentValidationFailureBehavior = wxPGVFBFlags::Default; m_dragStatus = 0; m_editorFocused = false; @@ -531,7 +531,7 @@ wxPropertyGrid::~wxPropertyGrid() wxS("at idle time instead.")); } - DoSelectProperty(nullptr, wxPG_SEL_NOVALIDATE|wxPG_SEL_DONT_SEND_EVENT); + DoSelectProperty(nullptr, wxPGSelectPropertyFlags::NoValidate| wxPGSelectPropertyFlags::DontSendEvent); // This should do prevent things from going too badly wrong m_iFlags &= ~(wxPG_FL_INITIALIZED); @@ -685,13 +685,13 @@ void wxPropertyGrid::DoThaw() // Force property re-selection // NB: We must copy the selection. wxArrayPGProperty selection = m_pState->m_selection; - DoSetSelection(selection, wxPG_SEL_FORCE | wxPG_SEL_NONVISIBLE); + DoSetSelection(selection, wxPGSelectPropertyFlags::Force | wxPGSelectPropertyFlags::Nonvisible); } } // ----------------------------------------------------------------------- -bool wxPropertyGrid::DoAddToSelection( wxPGProperty* prop, int selFlags ) +bool wxPropertyGrid::DoAddToSelection( wxPGProperty* prop, wxPGSelectPropertyFlags selFlags ) { wxCHECK( prop, false ); @@ -712,7 +712,7 @@ bool wxPropertyGrid::DoAddToSelection( wxPGProperty* prop, int selFlags ) selection.push_back(prop); - if ( !(selFlags & wxPG_SEL_DONT_SEND_EVENT) ) + if ( !(selFlags & wxPGSelectPropertyFlags::DontSendEvent) ) { SendEvent( wxEVT_PG_SELECTED, prop, nullptr ); } @@ -725,7 +725,7 @@ bool wxPropertyGrid::DoAddToSelection( wxPGProperty* prop, int selFlags ) // ----------------------------------------------------------------------- -bool wxPropertyGrid::DoRemoveFromSelection( wxPGProperty* prop, int selFlags ) +bool wxPropertyGrid::DoRemoveFromSelection( wxPGProperty* prop, wxPGSelectPropertyFlags selFlags ) { wxCHECK( prop, false ); bool res; @@ -749,7 +749,7 @@ bool wxPropertyGrid::DoRemoveFromSelection( wxPGProperty* prop, int selFlags ) bool wxPropertyGrid::DoSelectAndEdit( wxPGProperty* prop, unsigned int colIndex, - unsigned int selFlags ) + wxPGSelectPropertyFlags selFlags ) { // // NB: Enable following if label editor background colour is @@ -772,7 +772,7 @@ bool wxPropertyGrid::DoSelectAndEdit( wxPGProperty* prop, else { // send event - DoClearSelection(false, wxPG_SEL_NO_REFRESH); + DoClearSelection(false, wxPGSelectPropertyFlags::NoRefresh); if ( m_pState->m_editableColumns.find(colIndex) == m_pState->m_editableColumns.end() ) { @@ -780,7 +780,7 @@ bool wxPropertyGrid::DoSelectAndEdit( wxPGProperty* prop, } else { - res = DoAddToSelection(prop, selFlags|wxPG_SEL_NO_REFRESH); + res = DoAddToSelection(prop, selFlags| wxPGSelectPropertyFlags::NoRefresh); DoBeginLabelEdit(colIndex, selFlags); } @@ -795,7 +795,7 @@ bool wxPropertyGrid::DoSelectAndEdit( wxPGProperty* prop, bool wxPropertyGrid::AddToSelectionFromInputEvent( wxPGProperty* prop, unsigned int colIndex, wxMouseEvent* mouseEvent, - int selFlags ) + wxPGSelectPropertyFlags selFlags ) { const wxArrayPGProperty& selection = GetSelectedProperties(); bool alreadySelected = m_pState->DoIsPropertySelected(prop); @@ -909,7 +909,7 @@ bool wxPropertyGrid::AddToSelectionFromInputEvent( wxPGProperty* prop, // ----------------------------------------------------------------------- void wxPropertyGrid::DoSetSelection( const wxArrayPGProperty& newSelection, - int selFlags ) + wxPGSelectPropertyFlags selFlags ) { if ( !newSelection.empty() ) { @@ -955,16 +955,16 @@ void wxPropertyGrid::MakeColumnEditable( unsigned int column, // ----------------------------------------------------------------------- void wxPropertyGrid::DoBeginLabelEdit( unsigned int colIndex, - int selFlags ) + wxPGSelectPropertyFlags selFlags ) { wxPGProperty* selected = GetSelection(); wxCHECK_RET(selected, wxS("No property selected")); wxCHECK_RET(colIndex != 1, wxS("Do not use this for column 1")); - if ( !(selFlags & wxPG_SEL_DONT_SEND_EVENT) ) + if ( !(selFlags & wxPGSelectPropertyFlags::DontSendEvent) ) { if ( SendEvent( wxEVT_PG_LABEL_EDIT_BEGIN, - selected, nullptr, 0, + selected, nullptr, wxPGSelectPropertyFlags::Null, colIndex ) ) return; } @@ -989,7 +989,7 @@ void wxPropertyGrid::DoBeginLabelEdit( unsigned int colIndex, if ( cell && cell->HasText() ) text = cell->GetText(); - DoEndLabelEdit(true, wxPG_SEL_NOVALIDATE); // send event + DoEndLabelEdit(true, wxPGSelectPropertyFlags::NoValidate); // send event m_selColumn = colIndex; @@ -1040,7 +1040,7 @@ void wxPropertyGrid::OnLabelEditorKeyPress( wxKeyEvent& event ) // ----------------------------------------------------------------------- -void wxPropertyGrid::DoEndLabelEdit( bool commit, int selFlags ) +void wxPropertyGrid::DoEndLabelEdit( bool commit, wxPGSelectPropertyFlags selFlags ) { if ( !m_labelEditor ) return; @@ -1052,7 +1052,7 @@ void wxPropertyGrid::DoEndLabelEdit( bool commit, int selFlags ) { const int labelColIdx = m_selColumn; - if ( !(selFlags & wxPG_SEL_DONT_SEND_EVENT) ) + if ( !(selFlags & wxPGSelectPropertyFlags::DontSendEvent) ) { // Don't send wxEVT_PG_LABEL_EDIT_ENDING event recursively // for the same property and the same label. @@ -1063,7 +1063,7 @@ void wxPropertyGrid::DoEndLabelEdit( bool commit, int selFlags ) return; } - // wxPG_SEL_NOVALIDATE is passed correctly in selFlags + // wxPGSelectPropertyFlags::NoValidate is passed correctly in selFlags if ( SendEvent( wxEVT_PG_LABEL_EDIT_ENDING, prop, nullptr, selFlags, m_selColumn ) ) @@ -1620,7 +1620,7 @@ void wxPropertyGrid::PrepareAfterItemsAdded() m_pState->m_itemsAdded = false; if ( m_windowStyle & wxPG_AUTO_SORT ) - Sort(wxPG_SORT_TOP_LEVEL_ONLY); + Sort(wxPGPropertyValuesFlags::SortTopLevelOnly); RecalculateVirtualSize(); @@ -2582,10 +2582,10 @@ void wxPropertyGrid::RefreshProperty( wxPGProperty* p ) { // NB: We must copy the selection. wxArrayPGProperty selection = m_pState->m_selection; - int selFlags = wxPG_SEL_FORCE; + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Force; // We want to keep property's editor focused. if ( IsEditorFocused() ) - selFlags |= wxPG_SEL_FOCUS; + selFlags |= wxPGSelectPropertyFlags::Focus; DoSetSelection(selection, selFlags); } @@ -2785,17 +2785,17 @@ void wxPropertyGrid::SwitchState( wxPropertyGridPageState* pNewState ) // if parent window is shown. void wxPropertyGrid::DoSetSplitterPosition( int newxpos, int splitterIndex, - int flags ) + wxPGSplitterPositionFlags flags ) { if ( newxpos < wxPG_DRAG_MARGIN ) return; - if ( flags & wxPG_SPLITTER_FROM_EVENT ) + if ( !!(flags & wxPGSplitterPositionFlags::FromEvent) ) m_pState->m_dontCenterSplitter = true; m_pState->DoSetSplitterPosition(newxpos, splitterIndex, flags); - if ( flags & wxPG_SPLITTER_REFRESH ) + if ( !!(flags & wxPGSplitterPositionFlags::Refresh) ) { if ( GetSelection() ) { @@ -2814,7 +2814,7 @@ void wxPropertyGrid::ResetColumnSizes( bool enableAutoResizing ) { if ( m_pState ) { - m_pState->ResetColumnSizes(0); + m_pState->ResetColumnSizes(wxPGSplitterPositionFlags::Null); if ( GetSelection() ) { CorrectEditorWidgetSizeX(); @@ -2874,7 +2874,7 @@ wxPGProperty* wxPropertyGrid::GetNearestPaintVisible( wxPGProperty* p ) const // commits any changes in editor of selected property // return true if validation did not fail // flags are same as with DoSelectProperty -bool wxPropertyGrid::CommitChangesFromEditor( wxUint32 flags ) +bool wxPropertyGrid::CommitChangesFromEditor(wxPGSelectPropertyFlags flags) { // Committing already? if ( m_inCommitChangesFromEditor ) @@ -2907,7 +2907,7 @@ bool wxPropertyGrid::CommitChangesFromEditor( wxUint32 flags ) wxWindow* oldFocus = m_curFocused; bool validationFailure = false; - bool forceSuccess = (flags & (wxPG_SEL_NOVALIDATE | wxPG_SEL_FORCE)) != 0; + bool forceSuccess = !!(flags & (wxPGSelectPropertyFlags::NoValidate | wxPGSelectPropertyFlags::Force)); m_chgInfo_changedProperty = nullptr; @@ -3189,9 +3189,9 @@ bool wxPropertyGrid::OnValidationFailure( wxPGProperty* property, if ( property->HasFlag(wxPG_PROP_INVALID_VALUE) ) { m_validationInfo.SetFailureBehavior( - vfb & ~(wxPG_VFB_SHOW_MESSAGE | - wxPG_VFB_SHOW_MESSAGEBOX | - wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR)); + vfb & ~(wxPGVFBFlags::ShowMessage | + wxPGVFBFlags::ShowMessageBox | + wxPGVFBFlags::ShowMessageOnStatusBar)); } } @@ -3217,10 +3217,10 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W { wxPGVFBFlags vfb = m_validationInfo.GetFailureBehavior(); - if ( vfb & wxPG_VFB_BEEP ) + if ( !!(vfb & wxPGVFBFlags::Beep) ) ::wxBell(); - if ( (vfb & wxPG_VFB_MARK_CELL) && + if ( !!(vfb & wxPGVFBFlags::MarkCell) && !property->HasFlag(wxPG_PROP_INVALID_VALUE) ) { unsigned int colCount = m_pState->GetColumnCount(); @@ -3255,9 +3255,9 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W DrawItemAndChildren(property); } - if ( vfb & (wxPG_VFB_SHOW_MESSAGE | - wxPG_VFB_SHOW_MESSAGEBOX | - wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR) ) + if ( !!(vfb & (wxPGVFBFlags::ShowMessage | + wxPGVFBFlags::ShowMessageBox | + wxPGVFBFlags::ShowMessageOnStatusBar)) ) { wxString msg = m_validationInfo.GetFailureMessage(); @@ -3265,7 +3265,7 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W msg = _("You have entered invalid value. Press ESC to cancel editing."); #if wxUSE_STATUSBAR - if ( vfb & wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR ) + if ( !!(vfb & wxPGVFBFlags::ShowMessageOnStatusBar) ) { if ( !wxPGGlobalVars->m_offline ) { @@ -3280,10 +3280,10 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W // so let's preserve the current focus in order to restore it afterwards. wxWindow* focusedWnd = wxWindow::FindFocus(); - if ( vfb & wxPG_VFB_SHOW_MESSAGE ) + if ( !!(vfb & wxPGVFBFlags::ShowMessage) ) DoShowPropertyError(property, msg); - if ( vfb & wxPG_VFB_SHOW_MESSAGEBOX ) + if ( !!(vfb & wxPGVFBFlags::ShowMessageBox) ) /* TRANSLATORS: Caption of message box displaying any property error */ ::wxMessageBox(msg, _("Property Error")); @@ -3294,7 +3294,7 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W } } - return (vfb & wxPG_VFB_STAY_IN_PROPERTY) ? false : true; + return !(vfb & wxPGVFBFlags::StayInProperty); } // ----------------------------------------------------------------------- @@ -3303,7 +3303,7 @@ void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property ) { wxPGVFBFlags vfb = m_validationInfo.GetFailureBehavior(); - if ( vfb & wxPG_VFB_MARK_CELL ) + if ( !(vfb & wxPGVFBFlags::MarkCell) ) { // Revert cells property->m_cells = m_propCellsBackup; @@ -3322,7 +3322,7 @@ void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property ) } #if wxUSE_STATUSBAR - if ( vfb & wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR ) + if ( !(vfb & wxPGVFBFlags::ShowMessageOnStatusBar) ) { if ( !wxPGGlobalVars->m_offline ) { @@ -3333,7 +3333,7 @@ void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property ) } #endif - if ( vfb & wxPG_VFB_SHOW_MESSAGE ) + if ( !(vfb & wxPGVFBFlags::ShowMessage) ) { DoHidePropertyError(property); } @@ -3344,7 +3344,7 @@ void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property ) // ----------------------------------------------------------------------- // flags are same as with DoSelectProperty -bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, unsigned int selFlags ) +bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, wxPGSelectPropertyFlags selFlags ) { if ( m_inDoPropertyChanged ) return true; @@ -3366,7 +3366,7 @@ bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, unsigned int selFlags ) // If property's value is being changed, assume it is valid OnValidationFailureReset(selected); - changedProperty->SetValue(value, &m_chgInfo_valueList, wxPG_SETVAL_BY_USER); + changedProperty->SetValue(value, &m_chgInfo_valueList, wxPGSetValueFlags::ByUser); // NB: Call GetEditorControl() as late as possible, because OnSetValue() // and perhaps other user-defined virtual functions may change it. @@ -3408,7 +3408,7 @@ bool wxPropertyGrid::DoPropertyChanged( wxPGProperty* p, unsigned int selFlags ) // // If value was set by wxPGProperty::OnEvent, then update the editor // control. - if ( selFlags & wxPG_SEL_DIALOGVAL ) + if ( !!(selFlags & wxPGSelectPropertyFlags::DialogVal) ) { RefreshEditor(); } @@ -3562,7 +3562,7 @@ bool wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event ) wxVariant pendingValue(selected->GetValueRef()); wxWindow* wnd = GetEditorControl(); wxWindow* editorWnd = wxDynamicCast(event.GetEventObject(), wxWindow); - int selFlags = 0; + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null; bool wasUnspecified = selected->IsValueUnspecified(); int usesAutoUnspecified = selected->UsesAutoUnspecified(); bool valueIsPending = false; @@ -3685,7 +3685,7 @@ bool wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event ) { valueIsPending = true; pendingValue = m_changeInEventValue; - selFlags |= wxPG_SEL_DIALOGVAL; + selFlags |= wxPGSelectPropertyFlags::DialogVal; } if ( !validationFailure && valueIsPending ) @@ -3698,7 +3698,8 @@ bool wxPropertyGrid::HandleCustomEditorEvent( wxEvent &event ) } else if ( valueIsPending ) { - selFlags |= ( !wasUnspecified && selected->IsValueUnspecified() && usesAutoUnspecified ) ? wxPG_SEL_SETUNSPEC : 0; + selFlags |= ( !wasUnspecified && selected->IsValueUnspecified() && usesAutoUnspecified ) + ? wxPGSelectPropertyFlags::SetUnspec : wxPGSelectPropertyFlags::Null; DoPropertyChanged(selected, selFlags); EditorsValueWasNotModified(); @@ -3999,7 +4000,7 @@ void wxPropertyGrid::FreeEditors() } // Call with nullptr to de-select property -bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) +bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, wxPGSelectPropertyFlags flags ) { /* if (p) @@ -4031,7 +4032,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) prevFirstSel = nullptr; // Always send event, as this is indirect call - DoEndLabelEdit(true, wxPG_SEL_NOVALIDATE); + DoEndLabelEdit(true, wxPGSelectPropertyFlags::NoValidate); /* if ( prevFirstSel ) @@ -4066,12 +4067,12 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) // Is it the same? if ( prevFirstSel == p && prevSelection.size() <= 1 && - !(flags & wxPG_SEL_FORCE) ) + !(flags & wxPGSelectPropertyFlags::Force) ) { // Only set focus if not deselecting if ( p ) { - if ( flags & wxPG_SEL_FOCUS ) + if ( !!(flags & wxPGSelectPropertyFlags::Focus) ) { if ( m_wndEditor ) { @@ -4233,7 +4234,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) SetupChildEventHandling(primaryCtrl); // Focus and select all (wxTextCtrl, wxComboBox etc.) - if ( flags & wxPG_SEL_FOCUS ) + if ( !!(flags & wxPGSelectPropertyFlags::Focus) ) { primaryCtrl->SetFocus(); @@ -4272,12 +4273,12 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) // NOTE: Due to problems focusing away from it, this // has been disabled. /* - if ( (flags & wxPG_SEL_FOCUS) && !m_wndEditor ) + if ( (flags & wxPGSelectPropertyFlags::Focus) && !m_wndEditor ) m_wndEditor2->SetFocus(); */ } - if ( flags & wxPG_SEL_FOCUS ) + if ( !!(flags & wxPGSelectPropertyFlags::Focus) ) m_editorFocused = true; } @@ -4292,7 +4293,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) // If it's inside collapsed section, expand parent, scroll, etc. // Also, if it was partially visible, scroll it into view. - if ( !(flags & wxPG_SEL_NONVISIBLE) ) + if ( !(flags & wxPGSelectPropertyFlags::Nonvisible) ) EnsureVisible( p ); if ( m_wndEditor ) @@ -4300,7 +4301,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) m_wndEditor->Show(true); } - if ( !(flags & wxPG_SEL_NO_REFRESH) ) + if ( !(flags & wxPGSelectPropertyFlags::NoRefresh) ) DrawItem(p); } else @@ -4366,7 +4367,7 @@ bool wxPropertyGrid::DoSelectProperty( wxPGProperty* p, unsigned int flags ) { p = prevFirstSel; } - if ( !(flags & wxPG_SEL_DONT_SEND_EVENT) && p) + if ( !(flags & wxPGSelectPropertyFlags::DontSendEvent) && p) SendEvent( wxEVT_PG_SELECTED, p, nullptr ); return true; @@ -4381,7 +4382,7 @@ bool wxPropertyGrid::UnfocusEditor() if ( !selected || !m_wndEditor || IsFrozen() ) return true; - if ( !CommitChangesFromEditor(0) ) + if ( !CommitChangesFromEditor() ) return false; SetFocusOnCanvas(); @@ -4426,9 +4427,9 @@ bool wxPropertyGrid::SelectProperty( wxPGPropArg id, bool focus ) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) - unsigned int flags = wxPG_SEL_DONT_SEND_EVENT; + wxPGSelectPropertyFlags flags = wxPGSelectPropertyFlags::DontSendEvent; if ( focus ) - flags |= wxPG_SEL_FOCUS; + flags |= wxPGSelectPropertyFlags::Focus; return DoSelectProperty(p, flags); } @@ -4495,7 +4496,7 @@ bool wxPropertyGrid::DoExpand( wxPGProperty* p, bool sendEvents ) // ----------------------------------------------------------------------- -bool wxPropertyGrid::DoHideProperty( wxPGProperty* p, bool hide, int flags ) +bool wxPropertyGrid::DoHideProperty( wxPGProperty* p, bool hide, wxPGPropertyValuesFlags flags ) { if ( IsFrozen() ) return m_pState->DoHideProperty(p, hide, flags); @@ -4505,7 +4506,7 @@ bool wxPropertyGrid::DoHideProperty( wxPGProperty* p, bool hide, int flags ) { if ( selected == p || selected->IsSomeParent(p) ) { - if ( !DoRemoveFromSelection(p, flags) ) + if ( !DoRemoveFromSelection(p) ) return false; } } @@ -4691,10 +4692,10 @@ void wxPropertyGrid::SetFocusOnCanvas() // Returns true if event was vetoed. bool wxPropertyGrid::SendEvent( wxEventType eventType, wxPGProperty* p, wxVariant* pValue, - unsigned int selFlags, + wxPGSelectPropertyFlags selFlags, unsigned int column ) { - // selFlags should have wxPG_SEL_NOVALIDATE if event is not + // selFlags should have wxPGSelectPropertyFlags::NoValidate if event is not // vetoable. // Send property grid event of specific type and with specific property @@ -4715,7 +4716,7 @@ bool wxPropertyGrid::SendEvent( wxEventType eventType, wxPGProperty* p, if ( p ) evt.SetPropertyValue(p->GetValue()); - if ( !(selFlags & wxPG_SEL_NOVALIDATE) ) + if ( !(selFlags & wxPGSelectPropertyFlags::NoValidate) ) evt.SetCanVeto(true); } @@ -4803,11 +4804,11 @@ bool wxPropertyGrid::HandleMouseClick( int x, unsigned int y, wxMouseEvent &even else if ( splitterHit == -1 ) { // Click on value. - unsigned int selFlag = 0; + wxPGSelectPropertyFlags selFlag = wxPGSelectPropertyFlags::Null; if ( columnHit == 1 ) { m_iFlags |= wxPG_FL_ACTIVATION_BY_CLICK; - selFlag = wxPG_SEL_FOCUS; + selFlag = wxPGSelectPropertyFlags::Focus; } if ( !AddToSelectionFromInputEvent( p, columnHit, @@ -4846,7 +4847,7 @@ bool wxPropertyGrid::HandleMouseClick( int x, unsigned int y, wxMouseEvent &even SendEvent(wxEVT_PG_COL_DRAGGING, m_propHover, nullptr, - wxPG_SEL_NOVALIDATE, + wxPGSelectPropertyFlags::NoValidate, 0); // dragged splitter is always 0 here } } @@ -4857,11 +4858,11 @@ bool wxPropertyGrid::HandleMouseClick( int x, unsigned int y, wxMouseEvent &even // // send event - DoEndLabelEdit(true, wxPG_SEL_NOVALIDATE); + DoEndLabelEdit(true, wxPGSelectPropertyFlags::NoValidate); // Allow application to veto dragging if ( !SendEvent(wxEVT_PG_COL_BEGIN_DRAG, - p, nullptr, 0, + p, nullptr, wxPGSelectPropertyFlags::Null, (unsigned int)splitterHit) ) { if ( m_wndEditor ) @@ -5002,14 +5003,14 @@ bool wxPropertyGrid::HandleMouseMove( int x, unsigned int y, // Move everything DoSetSplitterPosition(newSplitterX, m_draggedSplitter, - wxPG_SPLITTER_REFRESH | - wxPG_SPLITTER_FROM_EVENT); + wxPGSplitterPositionFlags::Refresh | + wxPGSplitterPositionFlags::FromEvent); SendEvent(wxEVT_PG_COLS_RESIZED, wxNullProperty); SendEvent(wxEVT_PG_COL_DRAGGING, m_propHover, nullptr, - wxPG_SEL_NOVALIDATE, + wxPGSelectPropertyFlags::NoValidate, (unsigned int)m_draggedSplitter); } @@ -5221,7 +5222,7 @@ bool wxPropertyGrid::HandleMouseUp( int x, unsigned int WXUNUSED(y), SendEvent(wxEVT_PG_COL_END_DRAG, m_propHover, nullptr, - wxPG_SEL_NOVALIDATE, + wxPGSelectPropertyFlags::NoValidate, (unsigned int)m_draggedSplitter); // Disable splitter auto-centering (but only if moved any - @@ -5622,7 +5623,7 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) { if ( !editorFocused && m_wndEditor ) { - DoSelectProperty( selected, wxPG_SEL_FOCUS ); + DoSelectProperty( selected, wxPGSelectPropertyFlags::Focus ); } else { @@ -5722,7 +5723,7 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) // Mark as handled only for editable property if ( !p->IsCategory() && p->IsEnabled() && !p->HasFlag(wxPG_PROP_READONLY) ) { - DoSelectProperty( p, wxPG_SEL_FOCUS ); + DoSelectProperty( p, wxPGSelectPropertyFlags::Focus ); wasHandled = true; } } @@ -5761,14 +5762,14 @@ void wxPropertyGrid::HandleKeyEvent( wxKeyEvent &event, bool fromChild ) p = wxPropertyGridIterator::OneStep( m_pState, wxPG_ITERATE_VISIBLE, p, selectDir ); if ( p ) { - int selFlags = 0; + wxPGSelectPropertyFlags selFlags = wxPGSelectPropertyFlags::Null; int reopenLabelEditorCol = -1; if ( action == wxPG_ACTION_EDIT ) { // Make the next editor focused as well // if we are actually going to edit the property. - selFlags |= wxPG_SEL_FOCUS; + selFlags |= wxPGSelectPropertyFlags::Focus; } else { diff --git a/src/propgrid/propgridiface.cpp b/src/propgrid/propgridiface.cpp index bd6759006a..3579bb9771 100644 --- a/src/propgrid/propgridiface.cpp +++ b/src/propgrid/propgridiface.cpp @@ -178,7 +178,7 @@ wxPGProperty* wxPropertyGridInterface::GetSelection() const bool wxPropertyGridInterface::ClearSelection( bool validation ) { - bool res = DoClearSelection(validation, wxPG_SEL_DONT_SEND_EVENT); + bool res = DoClearSelection(validation, wxPGSelectPropertyFlags::DontSendEvent); wxPropertyGrid* pg = GetPropertyGrid(); if ( pg ) pg->Refresh(); @@ -188,10 +188,10 @@ bool wxPropertyGridInterface::ClearSelection( bool validation ) // ----------------------------------------------------------------------- bool wxPropertyGridInterface::DoClearSelection( bool validation, - int selFlags ) + wxPGSelectPropertyFlags selFlags ) { if ( !validation ) - selFlags |= wxPG_SEL_NOVALIDATE; + selFlags |= wxPGSelectPropertyFlags::NoValidate; wxPropertyGridPageState* state = m_pState; @@ -233,7 +233,7 @@ bool wxPropertyGridInterface::EnableProperty( wxPGPropArg id, bool enable ) // If active, Set active Editor. if ( grid && grid->GetState() == state && p == grid->GetSelection() ) - grid->DoSelectProperty( p, wxPG_SEL_FORCE ); + grid->DoSelectProperty( p, wxPGSelectPropertyFlags::Force ); } else { @@ -242,7 +242,7 @@ bool wxPropertyGridInterface::EnableProperty( wxPGPropArg id, bool enable ) // If active, Disable as active Editor. if ( grid && grid->GetState() == state && p == grid->GetSelection() ) - grid->DoSelectProperty( p, wxPG_SEL_FORCE ); + grid->DoSelectProperty( p, wxPGSelectPropertyFlags::Force ); } p->DoEnable(enable); @@ -252,11 +252,11 @@ bool wxPropertyGridInterface::EnableProperty( wxPGPropArg id, bool enable ) return true; } -void wxPropertyGridInterface::SetPropertyReadOnly( wxPGPropArg id, bool set, int flags) +void wxPropertyGridInterface::SetPropertyReadOnly( wxPGPropArg id, bool set, wxPGPropertyValuesFlags flags) { wxPG_PROP_ARG_CALL_PROLOG() - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) { p->SetFlagRecursively(wxPG_PROP_READONLY, set); } @@ -400,7 +400,7 @@ void wxPropertyGridInterface::SetPropertyValueString( wxPGPropArg id, const wxSt // ----------------------------------------------------------------------- -void wxPropertyGridInterface::SetValidationFailureBehavior( int vfbFlags ) +void wxPropertyGridInterface::SetValidationFailureBehavior( wxPGVFBFlags vfbFlags ) { GetPropertyGrid()->m_permanentValidationFailureBehavior = vfbFlags; } @@ -424,13 +424,13 @@ wxPGProperty* wxPropertyGridInterface::GetPropertyByLabel( const wxString& label // ---------------------------------------------------------------------------- void wxPropertyGridInterface::DoSetPropertyAttribute( wxPGPropArg id, const wxString& name, - wxVariant& value, long argFlags ) + wxVariant& value, wxPGPropertyValuesFlags argFlags ) { wxPG_PROP_ARG_CALL_PROLOG() p->SetAttribute( name, value ); // property is also refreshed here - if ( argFlags & wxPG_RECURSE ) + if ( !!(argFlags & wxPGPropertyValuesFlags::Recurse) ) { for ( unsigned int i = 0; i < p->GetChildCount(); i++ ) DoSetPropertyAttribute(p->Item(i), name, value, argFlags); @@ -447,7 +447,7 @@ void wxPropertyGridInterface::SetPropertyAttributeAll( const wxString& attrName, wxPropertyGridPageState* page; while ( (page = GetPageState(pageIndex)) != nullptr ) { - DoSetPropertyAttribute(page->DoGetRoot(), attrName, value, wxPG_RECURSE); + DoSetPropertyAttribute(page->DoGetRoot(), attrName, value, wxPGPropertyValuesFlags::Recurse); pageIndex++; } @@ -531,12 +531,12 @@ wxPGProperty* wxPropertyGridInterface::GetPropertyByName( const wxString& name ) // ----------------------------------------------------------------------- -bool wxPropertyGridInterface::HideProperty( wxPGPropArg id, bool hide, int flags ) +bool wxPropertyGridInterface::HideProperty(wxPGPropArg id, bool hide, wxPGPropertyValuesFlags flags) { wxPG_PROP_ARG_CALL_PROLOG_RETVAL(false) // Do nothing if single property is already hidden/visible as requested. - if ( !(flags & wxPG_RECURSE) ) + if ( !(flags & wxPGPropertyValuesFlags::Recurse) ) { if ( hide && p->HasFlag(wxPG_PROP_HIDDEN) ) return false; @@ -580,7 +580,7 @@ bool wxPropertyGridInterface::Expand( wxPGPropArg id ) // ----------------------------------------------------------------------- -void wxPropertyGridInterface::Sort( int flags ) +void wxPropertyGridInterface::Sort(wxPGPropertyValuesFlags flags) { wxPropertyGrid* pg = GetPropertyGrid(); @@ -659,10 +659,8 @@ bool wxPropertyGridInterface::SetPropertyMaxLength( wxPGPropArg id, int maxLen ) // ----------------------------------------------------------------------- -void -wxPropertyGridInterface::SetPropertyBackgroundColour( wxPGPropArg id, - const wxColour& colour, - int flags ) +void wxPropertyGridInterface::SetPropertyBackgroundColour(wxPGPropArg id, const wxColour& colour, + wxPGPropertyValuesFlags flags ) { wxPG_PROP_ARG_CALL_PROLOG() p->SetBackgroundColour(colour, flags); @@ -671,7 +669,7 @@ wxPropertyGridInterface::SetPropertyBackgroundColour( wxPGPropArg id, wxPropertyGrid* pg = m_pState->GetGrid(); if ( pg == p->GetGrid() ) { - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) pg->DrawItemAndChildren(p); else pg->DrawItem(p); @@ -680,9 +678,8 @@ wxPropertyGridInterface::SetPropertyBackgroundColour( wxPGPropArg id, // ----------------------------------------------------------------------- -void wxPropertyGridInterface::SetPropertyTextColour( wxPGPropArg id, - const wxColour& colour, - int flags ) +void wxPropertyGridInterface::SetPropertyTextColour(wxPGPropArg id, const wxColour& colour, + wxPGPropertyValuesFlags flags) { wxPG_PROP_ARG_CALL_PROLOG() p->SetTextColour(colour, flags); @@ -691,7 +688,7 @@ void wxPropertyGridInterface::SetPropertyTextColour( wxPGPropArg id, wxPropertyGrid* pg = m_pState->GetGrid(); if ( pg == p->GetGrid() ) { - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) pg->DrawItemAndChildren(p); else pg->DrawItem(p); @@ -703,11 +700,11 @@ void wxPropertyGridInterface::SetPropertyTextColour( wxPGPropArg id, #if WXWIN_COMPATIBILITY_3_0 void wxPropertyGridInterface::SetPropertyColoursToDefault(wxPGPropArg id) { - SetPropertyColoursToDefault(id, wxPG_DONT_RECURSE); + SetPropertyColoursToDefault(id, wxPGPropertyValuesFlags::DontRecurse); } #endif // WXWIN_COMPATIBILITY_3_0 -void wxPropertyGridInterface::SetPropertyColoursToDefault(wxPGPropArg id, int flags) +void wxPropertyGridInterface::SetPropertyColoursToDefault(wxPGPropArg id, wxPGPropertyValuesFlags flags) { wxPG_PROP_ARG_CALL_PROLOG() p->SetDefaultColours(flags); @@ -716,7 +713,7 @@ void wxPropertyGridInterface::SetPropertyColoursToDefault(wxPGPropArg id, int fl wxPropertyGrid* pg = m_pState->GetGrid(); if ( pg == p->GetGrid() ) { - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) pg->DrawItemAndChildren(p); else pg->DrawItem(p); diff --git a/src/propgrid/propgridpagestate.cpp b/src/propgrid/propgridpagestate.cpp index d5bd2c586b..321222d3a9 100644 --- a/src/propgrid/propgridpagestate.cpp +++ b/src/propgrid/propgridpagestate.cpp @@ -599,8 +599,7 @@ static bool wxPG_SortFunc_ByLabel(wxPGProperty* p1, wxPGProperty* p2) return p1->GetLabel().CmpNoCase( p2->GetLabel() ) < 0; } -void wxPropertyGridPageState::DoSortChildren( wxPGProperty* p, - int flags ) +void wxPropertyGridPageState::DoSortChildren(wxPGProperty* p, wxPGPropertyValuesFlags flags) { if ( !p ) p = m_properties; @@ -613,7 +612,7 @@ void wxPropertyGridPageState::DoSortChildren( wxPGProperty* p, if ( p->HasFlag(wxPG_PROP_AGGREGATE) ) return; - if ( (flags & wxPG_SORT_TOP_LEVEL_ONLY) + if ( !!(flags & wxPGPropertyValuesFlags::SortTopLevelOnly) && !p->IsCategory() && !p->IsRoot() ) return; @@ -625,7 +624,7 @@ void wxPropertyGridPageState::DoSortChildren( wxPGProperty* p, // Fix indices p->FixIndicesOfChildren(); - if ( flags & wxPG_RECURSE ) + if ( !!(flags & wxPGPropertyValuesFlags::Recurse) ) { // Apply sort recursively for ( unsigned int i=0; iGetChildCount(); i++ ) @@ -635,9 +634,9 @@ void wxPropertyGridPageState::DoSortChildren( wxPGProperty* p, // ----------------------------------------------------------------------- -void wxPropertyGridPageState::DoSort( int flags ) +void wxPropertyGridPageState::DoSort(wxPGPropertyValuesFlags flags) { - DoSortChildren( m_properties, flags | wxPG_RECURSE ); + DoSortChildren( m_properties, flags | wxPGPropertyValuesFlags::Recurse ); // We used to sort categories as well here also if in non-categorized // mode, but doing would naturally cause child indices to become @@ -655,7 +654,7 @@ bool wxPropertyGridPageState::PrepareAfterItemsAdded() m_itemsAdded = false; if ( pg->HasFlag(wxPG_AUTO_SORT) ) - DoSort(wxPG_SORT_TOP_LEVEL_ONLY); + DoSort(wxPGPropertyValuesFlags::SortTopLevelOnly); return true; } @@ -870,9 +869,8 @@ void wxPropertyGridPageState::PropagateColSizeDec( int column, wxASSERT( decrease == 0 ); } -void wxPropertyGridPageState::DoSetSplitterPosition( int newXPos, - int splitterColumn, - int flags ) +void wxPropertyGridPageState::DoSetSplitterPosition(int newXPos, int splitterColumn, + wxPGSplitterPositionFlags flags ) { int adjust = newXPos - DoGetSplitterPosition(splitterColumn); int otherColumn = splitterColumn + 1; @@ -894,8 +892,8 @@ void wxPropertyGridPageState::DoSetSplitterPosition( int newXPos, if ( splitterColumn == 0 ) m_fSplitterX = (double) newXPos; - if ( !(flags & wxPG_SPLITTER_FROM_AUTO_CENTER) && - !(flags & wxPG_SPLITTER_FROM_EVENT) ) + if ( !(flags & wxPGSplitterPositionFlags::FromAutoCenter) && + !(flags & wxPGSplitterPositionFlags::FromEvent) ) { // Don't allow initial splitter auto-positioning after this. m_isSplitterPreSet = true; @@ -1087,7 +1085,7 @@ void wxPropertyGridPageState::CheckColumnWidths( int widthChange ) } DoSetSplitterPosition((int)splitterX, 0, - wxPG_SPLITTER_FROM_AUTO_CENTER); + wxPGSplitterPositionFlags::FromAutoCenter); m_fSplitterX = splitterX; // needed to retain accuracy } @@ -1096,12 +1094,12 @@ void wxPropertyGridPageState::CheckColumnWidths( int widthChange ) // // Generic re-center code // - ResetColumnSizes(wxPG_SPLITTER_FROM_AUTO_CENTER); + ResetColumnSizes(wxPGSplitterPositionFlags::FromAutoCenter); } } } -void wxPropertyGridPageState::ResetColumnSizes( int setSplitterFlags ) +void wxPropertyGridPageState::ResetColumnSizes(wxPGSplitterPositionFlags setSplitterFlags) { // Calculate sum of proportions int psum = std::accumulate(m_columnProportions.begin(), m_columnProportions.end(), 0); @@ -1295,7 +1293,7 @@ void wxPropertyGridPageState::DoRemoveFromSelection( wxPGProperty* prop ) wxPGProperty* newFirst = sel.empty()? nullptr: sel[0]; pg->DoSelectProperty(newFirst, - wxPG_SEL_DONT_SEND_EVENT); + wxPGSelectPropertyFlags::DontSendEvent); m_selection = sel; @@ -1346,7 +1344,7 @@ bool wxPropertyGridPageState::DoExpand( wxPGProperty* p ) // ----------------------------------------------------------------------- -bool wxPropertyGridPageState::DoSelectProperty( wxPGProperty* p, unsigned int flags ) +bool wxPropertyGridPageState::DoSelectProperty( wxPGProperty* p, wxPGSelectPropertyFlags flags ) { if ( IsDisplayed() ) return m_pPropGrid->DoSelectProperty( p, flags ); @@ -1357,7 +1355,7 @@ bool wxPropertyGridPageState::DoSelectProperty( wxPGProperty* p, unsigned int fl // ----------------------------------------------------------------------- -bool wxPropertyGridPageState::DoHideProperty( wxPGProperty* p, bool hide, int flags ) +bool wxPropertyGridPageState::DoHideProperty(wxPGProperty* p, bool hide, wxPGPropertyValuesFlags flags) { p->DoHide(hide, flags); VirtualHeightChanged(); @@ -1371,9 +1369,9 @@ bool wxPropertyGridPageState::DoHideProperty( wxPGProperty* p, bool hide, int fl // Returns list of wxVariant objects (non-categories and non-sub-properties only). // Never includes sub-properties (unless they are parented by wxParentProperty). -wxVariant wxPropertyGridPageState::DoGetPropertyValues( const wxString& listname, +wxVariant wxPropertyGridPageState::DoGetPropertyValues(const wxString& listname, wxPGProperty* baseparent, - long flags ) const + wxPGPropertyValuesFlags flags) const { wxPGProperty* pwc = baseparent; @@ -1386,7 +1384,7 @@ wxVariant wxPropertyGridPageState::DoGetPropertyValues( const wxString& listname if ( pwc->HasAnyChild() ) { - if ( flags & wxPG_KEEP_STRUCTURE ) + if ( !!(flags & wxPGPropertyValuesFlags::KeepStructure) ) { wxASSERT( !pwc->HasFlag(wxPG_PROP_AGGREGATE) ); @@ -1401,9 +1399,9 @@ wxVariant wxPropertyGridPageState::DoGetPropertyValues( const wxString& listname } else { - v.Append( DoGetPropertyValues(p->GetBaseName(),p,flags|wxPG_KEEP_STRUCTURE) ); + v.Append( DoGetPropertyValues(p->GetBaseName(),p,flags|wxPGPropertyValuesFlags::KeepStructure) ); } - if ( (flags & wxPG_INC_ATTRIBUTES) && p->GetAttributes().GetCount() ) + if ( !!(flags & wxPGPropertyValuesFlags::IncAttributes) && p->GetAttributes().GetCount() ) v.Append( p->GetAttributesAsList() ); } } @@ -1422,7 +1420,7 @@ wxVariant wxPropertyGridPageState::DoGetPropertyValues( const wxString& listname wxVariant variant = p->GetValue(); variant.SetName( p->GetName() ); v.Append( variant ); - if ( (flags & wxPG_INC_ATTRIBUTES) && p->GetAttributes().GetCount() ) + if ( !!(flags & wxPGPropertyValuesFlags::IncAttributes) && p->GetAttributes().GetCount() ) v.Append( p->GetAttributesAsList() ); } } @@ -1757,7 +1755,7 @@ wxPGProperty* wxPropertyGridPageState::DoInsert( wxPGProperty* parent, int index void wxPropertyGridPageState::DoRemoveChildrenFromSelection(wxPGProperty* p, bool recursive, - int selFlags) + wxPGSelectPropertyFlags selFlags) { wxPropertyGrid* pg = GetGrid(); @@ -1906,7 +1904,7 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item, bool doDelete ) if ( pg && IsDisplayed() ) { pg->DoRemoveFromSelection(item, - wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE); + wxPGSelectPropertyFlags::Deleting|wxPGSelectPropertyFlags::NoValidate); } else { @@ -1917,7 +1915,7 @@ void wxPropertyGridPageState::DoDelete( wxPGProperty* item, bool doDelete ) if ( item->IsChildSelected(true) ) { DoRemoveChildrenFromSelection(item, true, - wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE); + wxPGSelectPropertyFlags::Deleting|wxPGSelectPropertyFlags::NoValidate); } // If deleted category or its sub-category is diff --git a/tests/controls/propgridtest.cpp b/tests/controls/propgridtest.cpp index 06dac65138..20a29944cd 100644 --- a/tests/controls/propgridtest.cpp +++ b/tests/controls/propgridtest.cpp @@ -319,7 +319,7 @@ static void PopulateWithExamples(wxPropertyGridManager* pgManager) combinedFlags.Add(WXSIZEOF(flags_prop_labels), flags_prop_labels, flags_prop_values); pg->Append(new wxFlagsProperty("FlagsProperty", wxPG_LABEL, combinedFlags, wxTheApp->GetTopWindow()->GetWindowStyle() ) ); - pg->SetPropertyAttribute("FlagsProperty", wxPG_BOOL_USE_CHECKBOX, true, wxPG_RECURSE); + pg->SetPropertyAttribute("FlagsProperty", wxPG_BOOL_USE_CHECKBOX, true, wxPGPropertyValuesFlags::Recurse); wxArrayString tchoices; tchoices.Add("Cabbage"); @@ -431,8 +431,8 @@ static wxPropertyGridManager* CreateGrid(int style, int extraStyle) pgManager->SetExtraStyle(extraStyle); // This is the default validation failure behaviour - pgManager->SetValidationFailureBehavior(wxPG_VFB_MARK_CELL | - wxPG_VFB_SHOW_MESSAGEBOX); + pgManager->SetValidationFailureBehavior(wxPGVFBFlags::MarkCell | + wxPGVFBFlags::ShowMessageBox); wxPropertyGrid* pg = pgManager->GetGrid(); // Set somewhat different unspecified value appearance @@ -1139,9 +1139,9 @@ TEST_CASE("PropertyGridTestCase", "[propgrid]") SECTION("GetPropertyValues") { wxPropertyGridPage* page1 = pgManager->GetPage(0); - wxVariant pg1_values = page1->GetPropertyValues("Page1", nullptr, wxPG_KEEP_STRUCTURE); + wxVariant pg1_values = page1->GetPropertyValues("Page1", nullptr, wxPGPropertyValuesFlags::KeepStructure); wxPropertyGridPage* page2 = pgManager->GetPage(1); - wxVariant pg2_values = page2->GetPropertyValues("Page2", nullptr, wxPG_KEEP_STRUCTURE); + wxVariant pg2_values = page2->GetPropertyValues("Page2", nullptr, wxPGPropertyValuesFlags::KeepStructure); SUCCEED(); SECTION("SetPropertyValues") @@ -1332,13 +1332,13 @@ TEST_CASE("PropertyGridTestCase", "[propgrid]") pgManager->Freeze(); // Set custom colours. - pg->SetPropertyTextColour("Appearance", wxColour(255, 0, 0), wxPG_DONT_RECURSE); + pg->SetPropertyTextColour("Appearance", wxColour(255, 0, 0), wxPGPropertyValuesFlags::DontRecurse); pg->SetPropertyBackgroundColour("Appearance", wxColour(255, 255, 183)); pg->SetPropertyTextColour("Appearance", wxColour(255, 0, 183)); - pg->SetPropertyTextColour("PositionCategory", wxColour(0, 255, 0), wxPG_DONT_RECURSE); + pg->SetPropertyTextColour("PositionCategory", wxColour(0, 255, 0), wxPGPropertyValuesFlags::DontRecurse); pg->SetPropertyBackgroundColour("PositionCategory", wxColour(255, 226, 190)); pg->SetPropertyTextColour("PositionCategory", wxColour(255, 0, 190)); - pg->SetPropertyTextColour("Environment", wxColour(0, 0, 255), wxPG_DONT_RECURSE); + pg->SetPropertyTextColour("Environment", wxColour(0, 0, 255), wxPGPropertyValuesFlags::DontRecurse); pg->SetPropertyBackgroundColour("Environment", wxColour(208, 240, 175)); pg->SetPropertyTextColour("Environment", wxColour(255, 255, 255)); pg->SetPropertyBackgroundColour("More Examples", wxColour(172, 237, 255));