diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2024-01-12 10:11:19 -0700 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2024-02-05 13:42:52 -0500 |
| commit | 97ac519092fc87e27c49ab21aafb41b77f40dc03 (patch) | |
| tree | 33d1a72b835a73c25868cb170106f865d9d54430 /ui/globalarea.h | |
| parent | efa49ca6d23530b5e1ececccea4a2dc0bbe3406b (diff) | |
Sidebar improvements
Diffstat (limited to 'ui/globalarea.h')
| -rw-r--r-- | ui/globalarea.h | 67 |
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; } }; |
