diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2022-01-21 18:55:04 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2022-01-22 01:31:11 -0500 |
| commit | 510b311eccca4d6409b1c9743814eb9070670f50 (patch) | |
| tree | b9ee82c56faf8f72787a02cf7cc0586a2c38e05c | |
| parent | 4290b90509c6b9b1cf4fa38e780f1aff5ad453e1 (diff) | |
Add recreateViewFrames API for sync/rebase
| -rw-r--r-- | ui/disassemblyview.h | 3 | ||||
| -rw-r--r-- | ui/linearview.h | 3 | ||||
| -rw-r--r-- | ui/pane.h | 12 | ||||
| -rw-r--r-- | ui/syncgroup.h | 4 | ||||
| -rw-r--r-- | ui/uicontext.h | 1 | ||||
| -rw-r--r-- | ui/viewframe.h | 3 |
6 files changed, 23 insertions, 3 deletions
diff --git a/ui/disassemblyview.h b/ui/disassemblyview.h index db7ab1e1..144101fe 100644 --- a/ui/disassemblyview.h +++ b/ui/disassemblyview.h @@ -61,7 +61,8 @@ public: void setOption(BNDisassemblyOption option, bool state = true); void toggleOption(BNDisassemblyOption option); - DisassemblySettingsRef getSettings(); + virtual DisassemblySettingsRef getDisassemblySettings() override; + virtual void setDisassemblySettings(DisassemblySettingsRef settings) override; virtual void notifyUpdateInProgress(FunctionRef func) override; virtual void onFunctionSelected(FunctionRef func) override; diff --git a/ui/linearview.h b/ui/linearview.h index f8feb3d7..f27897a1 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -346,7 +346,8 @@ public: virtual BinaryViewRef getData() override { return m_data; } void getCurrentOffsetByType(TypeRef resType, uint64_t baseAddr, uint64_t& begin, uint64_t& end, bool singleLine); - virtual DisassemblySettingsRef getSettings(); + virtual DisassemblySettingsRef getDisassemblySettings() override; + virtual void setDisassemblySettings(DisassemblySettingsRef settings) override; virtual uint64_t getCurrentOffset() override; virtual UIActionContext actionContext() override; virtual BNAddressRange getSelectionOffsets() override; @@ -13,6 +13,7 @@ class FeatureMap; class PaneHeader; class CloseButton; class TabDragIndicator; +class SyncGroup; class BINARYNINJAUIAPI Pane: public QWidget { @@ -23,6 +24,7 @@ class BINARYNINJAUIAPI Pane: public QWidget PaneHeader* m_header = nullptr; CloseButton* m_closeButton = nullptr; bool m_active = false; + QVBoxLayout* m_layout = nullptr; public: Pane(QWidget* widget); @@ -41,6 +43,8 @@ public: virtual Qt::Orientation defaultSplitDirection() const { return Qt::Horizontal; } virtual void setDefaultSplitDirection(Qt::Orientation orientation); + void setWidget(QWidget* widget); + protected: void init(PaneHeader* header); @@ -141,6 +145,9 @@ public: virtual void focus() override; virtual QString title() override; + void recreateViewFrame(std::map<SyncGroup*, ViewLocation>& locations); + void sendViewChange(); + private Q_SLOTS: void viewChanged(ViewFrame* frame); void viewChangeRequested(QString type); @@ -182,6 +189,7 @@ public: void updateStatus(); Qt::Orientation defaultSplitDirection() const; void setDefaultSplitDirection(Qt::Orientation orientation); + void setViewFrame(ViewFrame* frame); Q_SIGNALS: void viewChanged(QString type); @@ -274,6 +282,8 @@ public: void open(Pane* pane, Qt::Orientation primaryDirection = Qt::Vertical); + void recreateViewFrames(std::map<SyncGroup*, ViewLocation>& locations); + Q_SIGNALS: void paneClosed(Pane* pane); void currentChanged(Pane* pane); @@ -343,6 +353,8 @@ public: bool closeRequest(); void closing(); + void recreateViewFrames(std::map<SyncGroup*, ViewLocation>& locations); + static void registerActions(); Q_SIGNALS: diff --git a/ui/syncgroup.h b/ui/syncgroup.h index 5a9828f9..ff4fd9d0 100644 --- a/ui/syncgroup.h +++ b/ui/syncgroup.h @@ -6,6 +6,7 @@ class BINARYNINJAUIAPI SyncGroup { std::set<ViewFrame*> m_members; + ViewFrame* m_lastSyncFrame = nullptr; int m_id; public: @@ -13,10 +14,12 @@ public: void addMember(ViewFrame* frame); void removeMember(ViewFrame* frame); + void replaceMember(ViewFrame* oldFrame, ViewFrame* newFrame); bool isEmpty() const; int identifier() const { return m_id; } bool contains(ViewFrame* frame) const; const std::set<ViewFrame*>& members() const { return m_members; } + ViewFrame* lastSyncFrame() const { return m_lastSyncFrame; } void syncLocation(ViewFrame* frame, View* view, const ViewLocation& location); @@ -33,6 +36,7 @@ public: SyncGroupWidget(ViewFrame* frame); void updateStatus(); + void setViewFrame(ViewFrame* frame); private Q_SLOTS: void handleClick(); diff --git a/ui/uicontext.h b/ui/uicontext.h index 68160381..8dce4b38 100644 --- a/ui/uicontext.h +++ b/ui/uicontext.h @@ -288,6 +288,7 @@ public: virtual bool openFilename(const QString& path, bool openOptions = false); virtual ViewFrame* openFileContext(FileContext* file, const QString& forcedView = "", bool addTab = true); + virtual void recreateViewFrames(FileContext* file) = 0; UIActionHandler* globalActions() { return &m_globalActions; } virtual UIActionHandler* contentActionHandler() = 0; diff --git a/ui/viewframe.h b/ui/viewframe.h index 80abb3d5..f89d2468 100644 --- a/ui/viewframe.h +++ b/ui/viewframe.h @@ -218,7 +218,8 @@ public: virtual size_t getCurrentILInstructionIndex() { return BN_INVALID_EXPR; } virtual QFont getFont() = 0; - DisassemblySettingsRef getDisassemblySettings(); + virtual DisassemblySettingsRef getDisassemblySettings(); + virtual void setDisassemblySettings(DisassemblySettingsRef settings) { (void)settings; } virtual HighlightTokenState getHighlightTokenState(); |
