summaryrefslogtreecommitdiff
path: root/ui/sidebarwidget.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-06-17 21:35:08 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2025-06-23 15:19:52 -0400
commitf59acf14a8a8630a5b9a0e0cb422a1192f247f5d (patch)
tree7018ad230557f9e1fcb68cbbd4e6fdefb9b3005a /ui/sidebarwidget.h
parentdf2691ad3443fdf9767869be73c1014f49383239 (diff)
Allow sidebar icons to be hidden
Diffstat (limited to 'ui/sidebarwidget.h')
-rw-r--r--ui/sidebarwidget.h64
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();
+};