diff options
| author | Alexander Taylor <alex@vector35.com> | 2023-11-07 15:57:24 -0500 |
|---|---|---|
| committer | Alexander Taylor <alex@vector35.com> | 2023-11-07 15:57:24 -0500 |
| commit | ed45e3f6717d622a0f6c5eed75f12143d99363f1 (patch) | |
| tree | dcbbc7370c1f1bc02d3af0b9b0adfb9dad6f3401 | |
| parent | 21d0e13ec5623a8aecd5c52b6790a2235f30a4e5 (diff) | |
Memory Map: Allow use in a pane.
| -rw-r--r-- | ui/memorymap.h | 89 |
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 |
