diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2025-06-17 21:35:08 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2025-06-23 15:19:52 -0400 |
| commit | f59acf14a8a8630a5b9a0e0cb422a1192f247f5d (patch) | |
| tree | 7018ad230557f9e1fcb68cbbd4e6fdefb9b3005a /ui/sidebarwidget.h | |
| parent | df2691ad3443fdf9767869be73c1014f49383239 (diff) | |
Allow sidebar icons to be hidden
Diffstat (limited to 'ui/sidebarwidget.h')
| -rw-r--r-- | ui/sidebarwidget.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/ui/sidebarwidget.h b/ui/sidebarwidget.h index 8308991e..44b6ea8c 100644 --- a/ui/sidebarwidget.h +++ b/ui/sidebarwidget.h @@ -188,6 +188,51 @@ enum SidebarContextSensitivity /*! \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 +*/ class BINARYNINJAUIAPI SidebarWidgetType { SidebarIcon m_icon; @@ -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(); +}; |
