From 70bbb18a9444824a8ec2b9a7ff57fc848e017b6e Mon Sep 17 00:00:00 2001 From: Josh Ferrell Date: Mon, 26 Jan 2026 14:23:12 -0500 Subject: Add regex and case sensitivity options to FilterEdit --- ui/filter.h | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'ui/filter.h') diff --git a/ui/filter.h b/ui/filter.h index 98417f65..3178d4b8 100644 --- a/ui/filter.h +++ b/ui/filter.h @@ -10,6 +10,19 @@ \ingroup uiapi */ +/*! + + \ingroup filter +*/ +enum BINARYNINJAUIAPI FilterOption { + NoFilterOption = 0, + CaseSensitiveOption = 1, + UseRegexOption = 2, +}; + +Q_DECLARE_FLAGS(FilterOptions, FilterOption) + + /*! \ingroup filter @@ -19,7 +32,7 @@ class BINARYNINJAUIAPI FilterTarget public: virtual ~FilterTarget() {} - virtual void setFilter(const std::string& filter) = 0; + virtual void setFilter(const std::string& filter, FilterOptions options) = 0; virtual void scrollToFirstItem() = 0; virtual void scrollToCurrentItem() = 0; @@ -44,10 +57,27 @@ class BINARYNINJAUIAPI FilterEdit : public QLineEdit Q_OBJECT FilterTarget* m_target; + FilterOptions m_filterOptions; + + QAction* m_clearAction; + QAction* m_regexAction; + QAction* m_regexWarningAction; + QAction* m_caseSensitivityAction; + + QIcon getActionIcon(const QString& iconName, bool enabled) const; public: FilterEdit(FilterTarget* target); + void showRegexToggle(bool enabled); + + void setRegexValidationError(const QString& error); + + FilterOptions getFilterOptions() const { return m_filterOptions; } + + Q_SIGNALS: + void optionsChanged(FilterOptions options); + protected: virtual void paintEvent(QPaintEvent* event) override; virtual void keyPressEvent(QKeyEvent* event) override; @@ -76,7 +106,7 @@ class BINARYNINJAUIAPI FilteredView : public QWidget void focusAndSelectFilter(); bool hasFilterText() const; - static bool match(const std::string& name, const std::string& filter); + static bool match(const std::string& name, const std::string& filter, bool caseSensitive = false); private Q_SLOTS: void timerStart(); -- cgit v1.3.1