summaryrefslogtreecommitdiff
path: root/ui/globalarea.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-01-12 10:11:19 -0700
committerRusty Wagner <rusty.wagner@gmail.com>2024-02-05 13:42:52 -0500
commit97ac519092fc87e27c49ab21aafb41b77f40dc03 (patch)
tree33d1a72b835a73c25868cb170106f865d9d54430 /ui/globalarea.h
parentefa49ca6d23530b5e1ececccea4a2dc0bbe3406b (diff)
Sidebar improvements
Diffstat (limited to 'ui/globalarea.h')
-rw-r--r--ui/globalarea.h67
1 files changed, 20 insertions, 47 deletions
diff --git a/ui/globalarea.h b/ui/globalarea.h
index 098f209f..f040b802 100644
--- a/ui/globalarea.h
+++ b/ui/globalarea.h
@@ -4,6 +4,7 @@
#include "theme.h"
#include "viewframe.h"
#include "tabwidget.h"
+#include "sidebar.h"
/*!
@@ -12,30 +13,15 @@
*/
/*!
-
\ingroup globalarea
+ \deprecated Use `SidebarWidget` with `SidebarContextSensitivity::Global` instead
*/
-class BINARYNINJAUIAPI GlobalAreaWidget : public QWidget
+class BINARYNINJAUIAPI GlobalAreaWidget : public SidebarWidget
{
Q_OBJECT
- protected:
- QString m_title;
- UIActionHandler m_actionHandler;
- ContextMenuManager* m_contextMenuManager = nullptr;
- Menu* m_menu = nullptr;
-
- public:
+public:
GlobalAreaWidget(const QString& title);
-
- const QString& title() const { return m_title; }
-
- virtual void notifyFontChanged() {}
- virtual void notifyOffsetChanged(uint64_t /*offset*/) {}
- virtual void notifyThemeChanged() {}
- virtual void notifyViewChanged(ViewFrame* /*frame*/) {}
- virtual void notifyViewLocationChanged(View* /*view*/, const ViewLocation& /*viewLocation*/) {}
- virtual void focus();
};
/*!
@@ -93,35 +79,22 @@ class BINARYNINJAUIAPI CloseButton : public QWidget
\ingroup globalarea
*/
-class BINARYNINJAUIAPI GlobalArea : public QWidget
+class BINARYNINJAUIAPI GlobalArea : public QObject
{
Q_OBJECT
- SplitTabWidget* m_tabs;
- DockableTabCollection* m_collection;
- QSplitter* m_parentSplitter = nullptr;
- std::optional<QList<int>> m_pendingParentSplitterSizes, m_savedParentSplitterSizes;
-
+ Sidebar* m_sidebar;
static std::vector<std::function<GlobalAreaWidget*(UIContext*)>> m_widgetFactories;
QString actionNameForWidget(const QString& title);
- static QVariant sizesToVariant(const QList<int>& sizes);
- static std::optional<QList<int>> variantToSizes(const QVariant& variant);
- public:
- GlobalArea();
- void setSplitter(QSplitter* splitter);
+public:
+ GlobalArea(QWidget* owner, Sidebar* sidebar);
void addWidget(GlobalAreaWidget* widget, bool canClose = false);
static void addWidget(const std::function<GlobalAreaWidget*(UIContext*)>& createWidget);
void initRegisteredWidgets(UIContext* context);
-
- void updateFonts();
- void updateTheme();
- void updateViewLocation(View* view, const ViewLocation& viewLocation);
- void viewChanged(ViewFrame* frame);
-
bool isWidgetVisible(const QString& title);
bool toggleVisible();
@@ -130,11 +103,6 @@ class BINARYNINJAUIAPI GlobalArea : public QWidget
GlobalAreaWidget* widget(const QString& title);
void closeTab(QWidget* widget);
- void saveSizes(const QSettings& settings, const QString& windowStateName);
- void saveState(const QSettings& settings, const QString& windowStateName);
- void restoreSizes(const QSettings& settings, const QString& windowStateName);
- void restoreState(const QSettings& settings, const QString& windowStateName);
-
static GlobalArea* current()
{
UIContext* context = UIContext::activeContext();
@@ -235,12 +203,17 @@ class BINARYNINJAUIAPI GlobalArea : public QWidget
return false;
};
}
+};
- Q_SIGNALS:
- void widgetClosed(GlobalAreaWidget* widget);
-
- private Q_SLOTS:
- void currentChanged(QWidget* widget);
- void tabClosed(QWidget* widget);
- void hideButtonClicked();
+/*!
+ \ingroup scriptingconsole
+*/
+class BINARYNINJAUIAPI GlobalAreaCompatibilitySidebarWidgetType : public SidebarWidgetType
+{
+public:
+ GlobalAreaCompatibilitySidebarWidgetType();
+ SidebarWidgetLocation defaultLocation() const override { return SidebarWidgetLocation::LeftBottom; }
+ SidebarContextSensitivity contextSensitivity() const override { return GlobalSidebarContext; }
+ bool alwaysShowTabs() const override { return true; }
+ bool hideIfNoContent() const override { return true; }
};