From 411acbaa4a1d217e731d3df0b189445117be3b26 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Tue, 19 Mar 2019 15:41:08 -0400 Subject: Add in progress UI API headers --- ui/uicontext.h | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 ui/uicontext.h (limited to 'ui/uicontext.h') diff --git a/ui/uicontext.h b/ui/uicontext.h new file mode 100644 index 00000000..e65a603f --- /dev/null +++ b/ui/uicontext.h @@ -0,0 +1,76 @@ +#pragma once + +#include +#include +#include +#include +#include "binaryninjaapi.h" +#include "action.h" +#include "preview.h" + +#define PREVIEW_HOVER_TIME 500 + +typedef bool (*UIPluginInitFunction)(void); +typedef void (*UIPluginDependencyFunction)(void); + +class ViewFrame; +class UIActionHandler; +class FileContext; + +class BINARYNINJAUIAPI UIContextHandler +{ +public: + virtual ~UIContextHandler(); + virtual void updateStatus(bool updateInfo) = 0; + virtual void notifyThemeChanged() = 0; +}; + +class BINARYNINJAUIAPI UIContext +{ + static UIContextHandler* m_handler; + static std::set m_contexts; + UIActionHandler m_globalActions; + + static QPointer m_currentPreview; + +protected: + void setupUIContext(QWidget* obj); + +public: + UIContext(); + virtual ~UIContext(); + + virtual QMainWindow* mainWindow() = 0; + virtual void viewChanged(ViewFrame* frame, const QString& type); + virtual bool navigateForBinaryView(BinaryViewRef view, uint64_t addr); + virtual void createTabForWidget(const QString& name, QWidget* widget) = 0; + virtual bool openFilename(const QString& path, bool openOptions = false); + virtual ViewFrame* openFileContext(FileContext* file, const QString& forcedView = "", bool addTab = true); + + UIActionHandler* globalActions() { return &m_globalActions; } + virtual UIActionHandler* contentActionHandler() = 0; + + static void setHandler(UIContextHandler* handler); + + static QSize getScaledWindowSize(int x, int y); + static void updateStatus(bool updateInfo = true); + static void notifyThemeChanged(); + static void showPreview(QWidget* parent, PreviewWidget* preview, QPoint localPos); + static void closePreview(); + static bool sendPreviewWheelEvent(QWheelEvent* event); + static void closeOtherActiveModalWidget(QWidget* current); + + static UIContext* contextForWidget(QWidget* widget); + static UIContext* activeContext(); + static std::set allContexts(); +}; + +Q_DECLARE_METATYPE(UIContext*) + +void BINARYNINJAUIAPI InitUIViews(); +void BINARYNINJAUIAPI InitUIActions(); + +void BINARYNINJAUIAPI InitUIPlugins(); +void BINARYNINJAUIAPI SetCurrentUIPluginLoadOrder(BNPluginLoadOrder order); +void BINARYNINJAUIAPI AddRequiredUIPluginDependency(const std::string& name); +void BINARYNINJAUIAPI AddOptionalUIPluginDependency(const std::string& name); -- cgit v1.3.1