summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Taylor <alex@vector35.com>2023-11-07 15:57:24 -0500
committerAlexander Taylor <alex@vector35.com>2023-11-07 15:57:24 -0500
commited45e3f6717d622a0f6c5eed75f12143d99363f1 (patch)
treedcbbc7370c1f1bc02d3af0b9b0adfb9dad6f3401
parent21d0e13ec5623a8aecd5c52b6790a2235f30a4e5 (diff)
Memory Map: Allow use in a pane.
-rw-r--r--ui/memorymap.h89
1 files changed, 80 insertions, 9 deletions
diff --git a/ui/memorymap.h b/ui/memorymap.h
index f42edd11..08d0dd51 100644
--- a/ui/memorymap.h
+++ b/ui/memorymap.h
@@ -180,28 +180,99 @@ Q_SIGNALS:
void addressDoubleClicked(uint64_t address);
};
+// I hate C++
+class MemoryMapContainer;
+class MemoryMapSidebarWidget;
+
/*!
\ingroup memorymap
*/
-class BINARYNINJAUIAPI MemoryMapSidebarWidget : public SidebarWidget
+class BINARYNINJAUIAPI MemoryMapView : public QWidget, public View
{
Q_OBJECT
+ BinaryViewRef m_data;
+ ViewFrame* m_view;
+ MemoryMapContainer* m_container;
+
SectionWidget* m_sectionWidget;
SegmentWidget* m_segmentWidget;
- QWidget* m_header;
- BinaryViewRef m_data;
- ViewFrame* m_frame;
+
+ uint64_t m_currentOffset;
void navigateToAddress(uint64_t address);
void navigateToRawAddress(uint64_t address);
- public:
- MemoryMapSidebarWidget(ViewFrame* view, BinaryViewRef data);
+public:
+ MemoryMapView(BinaryViewRef data, ViewFrame* view, MemoryMapContainer* container);
+
+ BinaryViewRef getData() override { return m_data; }
+ uint64_t getCurrentOffset() override;
+ BNAddressRange getSelectionOffsets() override;
+ void setSelectionOffsets(BNAddressRange range) override;
+ bool navigate(uint64_t offset) override;
+ QFont getFont() override { return getMonospaceFont(this); }
+
+ void setCurrentOffset(uint64_t offset);
+
+ void updateFonts() override;
+};
+
+/*!
+
+ \ingroup memorymap
+*/
+class BINARYNINJAUIAPI MemoryMapContainer : public QWidget, public ViewContainer
+{
+ Q_OBJECT
+
+ friend class StringsView;
+
+ ViewFrame* m_view;
+ MemoryMapView* m_memoryMap;
+ MemoryMapSidebarWidget* m_widget;
+
+public:
+ MemoryMapContainer(BinaryViewRef data, ViewFrame* view, MemoryMapSidebarWidget* parent);
+ virtual View* getView() override { return m_memoryMap; }
- void notifyFontChanged() override;
- QWidget* headerWidget() override { return m_header; }
+ MemoryMapView* getMemoryMapView() { return m_memoryMap; }
+
+protected:
+ virtual void focusInEvent(QFocusEvent* event) override;
+};
+
+/*!
+
+ \ingroup memorymap
+*/
+class MemoryMapViewType : public ViewType
+{
+ static MemoryMapViewType* m_instance;
+
+public:
+ MemoryMapViewType();
+ virtual int getPriority(BinaryViewRef data, const QString& filename);
+ virtual QWidget* create(BinaryViewRef data, ViewFrame* viewFrame);
+ static void init();
+};
+
+/*!
+
+ \ingroup memorymap
+*/
+class BINARYNINJAUIAPI MemoryMapSidebarWidget : public SidebarWidget
+{
+Q_OBJECT
+
+ friend class MemoryMapView;
+
+ MemoryMapContainer* m_container;
+
+public:
+ MemoryMapSidebarWidget(BinaryViewRef data, ViewFrame* frame);
+ void focus() override;
};
/*!
@@ -213,4 +284,4 @@ class BINARYNINJAUIAPI MemoryMapSidebarWidgetType : public SidebarWidgetType
public:
MemoryMapSidebarWidgetType();
SidebarWidget* createWidget(ViewFrame* frame, BinaryViewRef data) override;
-};
+}; \ No newline at end of file