From f59acf14a8a8630a5b9a0e0cb422a1192f247f5d Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 17 Jun 2025 21:35:08 -0400 Subject: Allow sidebar icons to be hidden --- ui/sidebarwidget.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'ui/sidebarwidget.h') diff --git a/ui/sidebarwidget.h b/ui/sidebarwidget.h index 8308991e..44b6ea8c 100644 --- a/ui/sidebarwidget.h +++ b/ui/sidebarwidget.h @@ -185,6 +185,51 @@ enum SidebarContextSensitivity PerPaneSidebarContext }; +/*! + \ingroup sidebar +*/ +enum SidebarIconVisibility +{ + AlwaysShowSidebarIcon, + HideSidebarIconIfNoContent, + AlwaysHideSidebarIcon, + InvisibleIfNoContent +}; + +/*! + \ingroup sidebar +*/ +enum SidebarContentClassification +{ + SidebarHasRelevantContent, + SidebarHasGeneralMessage, + SidebarHasNoContent, + SidebarIsWidgetContainer +}; + +class BINARYNINJAUIAPI SidebarContentClassifier : public QObject +{ + Q_OBJECT + +public: + virtual SidebarContentClassification contentClassification() = 0; + virtual void notifyViewChanged(ViewFrame*) {} + +Q_SIGNALS: + void contentClassificationChanged(); +}; + +class BINARYNINJAUIAPI StaticSidebarContentClassifier : public SidebarContentClassifier +{ + Q_OBJECT + + SidebarContentClassification m_classification; + +public: + StaticSidebarContentClassifier(SidebarContentClassification classification) : m_classification(classification) {} + SidebarContentClassification contentClassification() override { return m_classification; } +}; + /*! \ingroup sidebar */ @@ -213,8 +258,14 @@ public: virtual SidebarWidgetLocation defaultLocation() const; virtual SidebarContextSensitivity contextSensitivity() const; virtual bool alwaysShowTabs() const { return false; } + + /*! + \deprecated Use `defaultIconVisibility()` + */ virtual bool hideIfNoContent() const { return false; } + virtual SidebarIconVisibility defaultIconVisibility() const; + virtual SidebarWidget* createWidget(ViewFrame* /*frame*/, BinaryViewRef /*data*/) { return nullptr; } virtual SidebarWidget* createInvalidContextWidget(); virtual QWidget* headerWidget(SplitPaneWidget* /*panes*/, ViewFrame* /*frame*/, BinaryViewRef /*data*/) @@ -228,5 +279,18 @@ public: virtual bool canUseAsPane(SplitPaneWidget* /*panes*/, BinaryViewRef /*data*/) const { return false; } virtual Pane* createPane(SplitPaneWidget* /*panes*/, BinaryViewRef /*data*/) { return nullptr; } + virtual SidebarContentClassifier* contentClassifier(ViewFrame* /*frame*/, BinaryViewRef /*data*/) + { + return nullptr; + } + void updateTheme(); }; + +class BINARYNINJAUIAPI MoreSidebarWidgetType : public SidebarWidgetType +{ +public: + MoreSidebarWidgetType(); + + static MoreSidebarWidgetType* instance(); +}; -- cgit v1.3.1