summaryrefslogtreecommitdiff
path: root/ui/stringsview.h
diff options
context:
space:
mode:
authorkat <katherine@vector35.com>2022-08-09 14:44:02 -0400
committerkat <katherine@vector35.com>2022-08-09 14:44:14 -0400
commit3e10732ef419d1bc30b8916c25e38b2b4077acd2 (patch)
tree2bd22c22557f0625716b462c953e20e5ffdbdad9 /ui/stringsview.h
parentf0242daca9922b6a6bf6acc79987ff47f9f6f70f (diff)
Add Copy and some filtering options to the Strings view
Diffstat (limited to 'ui/stringsview.h')
-rw-r--r--ui/stringsview.h37
1 files changed, 36 insertions, 1 deletions
diff --git a/ui/stringsview.h b/ui/stringsview.h
index 4a843bb1..395763f8 100644
--- a/ui/stringsview.h
+++ b/ui/stringsview.h
@@ -28,6 +28,9 @@ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public Bina
std::mutex m_updateMutex;
std::vector<StringUpdateEvent> m_updates;
+ bool m_excludeStringsInBasicBlocks;
+ bool m_excludeUnreferencedStrings;
+
static bool stringComparison(const BNStringReference& a, const BNStringReference& b);
bool matchString(const BNStringReference& stringRef);
@@ -53,6 +56,17 @@ class BINARYNINJAUIAPI StringsListModel : public QAbstractItemModel, public Bina
void updateStrings();
void setFilter(const std::string& filter);
+
+ void updateFilter() { setFilter(m_filter); };
+
+ void toggleExcludeStringsInBasicBlocks() { m_excludeStringsInBasicBlocks = !m_excludeStringsInBasicBlocks; };
+ void toggleExcludeUnreferencedStrings() { m_excludeUnreferencedStrings = !m_excludeUnreferencedStrings; };
+
+ void excludeStringsInBasicBlocks(bool exclude) { m_excludeStringsInBasicBlocks = exclude; };
+ void excludeUnreferencedStrings(bool exclude) { m_excludeUnreferencedStrings = exclude; };
+
+ bool getExcludeStringsInBasicBlocks() const { return m_excludeStringsInBasicBlocks; };
+ bool getExcludeUnreferencedStrings() const { return m_excludeUnreferencedStrings; };
};
class BINARYNINJAUIAPI StringItemDelegate : public QStyledItemDelegate
@@ -76,6 +90,7 @@ class BINARYNINJAUIAPI StringItemDelegate : public QStyledItemDelegate
};
class StringsContainer;
+class StringsViewSidebarWidget;
class BINARYNINJAUIAPI StringsView : public QListView, public View, public FilterTarget
{
@@ -113,6 +128,15 @@ class BINARYNINJAUIAPI StringsView : public QListView, public View, public Filte
virtual void activateFirstItem() override;
virtual QFont getFont() override { return m_itemDelegate->getFont(); }
+ bool getExcludeStringsInBasicBlocks() const { return m_list->getExcludeStringsInBasicBlocks(); };
+ bool getExcludeUnreferencedStrings() const { return m_list->getExcludeUnreferencedStrings(); };
+
+ void toggleExcludeStringsInBasicBlocks() const { m_list->toggleExcludeStringsInBasicBlocks(); };
+ void toggleExcludeUnreferencedStrings() const { m_list->toggleExcludeUnreferencedStrings(); };
+
+ virtual void copy();
+ virtual bool canCopy();
+
protected:
virtual void keyPressEvent(QKeyEvent* event) override;
virtual bool event(QEvent* event) override;
@@ -126,13 +150,16 @@ class BINARYNINJAUIAPI StringsContainer : public QWidget, public ViewContainer
{
Q_OBJECT
+ friend class StringsView;
+
ViewFrame* m_view;
StringsView* m_strings;
FilteredView* m_filter;
FilterEdit* m_separateEdit = nullptr;
+ StringsViewSidebarWidget* m_widget;
public:
- StringsContainer(BinaryViewRef data, ViewFrame* view, bool separateEdit = false);
+ StringsContainer(BinaryViewRef data, ViewFrame* view, StringsViewSidebarWidget* parent, bool separateEdit = false);
virtual View* getView() override { return m_strings; }
StringsView* getStringsView() { return m_strings; }
@@ -159,6 +186,8 @@ class BINARYNINJAUIAPI StringsViewSidebarWidget : public SidebarWidget
{
Q_OBJECT
+ friend class StringsView;
+
QWidget* m_header;
StringsContainer* m_container;
@@ -166,6 +195,12 @@ class BINARYNINJAUIAPI StringsViewSidebarWidget : public SidebarWidget
StringsViewSidebarWidget(BinaryViewRef data, ViewFrame* frame);
virtual QWidget* headerWidget() override { return m_header; }
virtual void focus() override;
+
+ protected:
+ virtual void contextMenuEvent(QContextMenuEvent* event) override;
+
+ private Q_SLOTS:
+ void showContextMenu();
};