summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2022-01-21 18:55:04 -0500
committerRusty Wagner <rusty.wagner@gmail.com>2022-01-22 01:31:11 -0500
commit510b311eccca4d6409b1c9743814eb9070670f50 (patch)
treeb9ee82c56faf8f72787a02cf7cc0586a2c38e05c
parent4290b90509c6b9b1cf4fa38e780f1aff5ad453e1 (diff)
Add recreateViewFrames API for sync/rebase
-rw-r--r--ui/disassemblyview.h3
-rw-r--r--ui/linearview.h3
-rw-r--r--ui/pane.h12
-rw-r--r--ui/syncgroup.h4
-rw-r--r--ui/uicontext.h1
-rw-r--r--ui/viewframe.h3
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;
diff --git a/ui/pane.h b/ui/pane.h
index 077f6d85..0fe3e8ec 100644
--- a/ui/pane.h
+++ b/ui/pane.h
@@ -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();