summaryrefslogtreecommitdiff
path: root/examples/triage/exports.h
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2022-12-06 17:28:06 -0500
committerGlenn Smith <glenn@vector35.com>2022-12-08 14:44:16 -0500
commit5680b8c36285a9a6011412bba0363e156cf4d7f6 (patch)
tree287f194a09f9ce9bcd4e17bfef00017c3f9f7a11 /examples/triage/exports.h
parent554d9b7569fa89ce584d22697d0ab121581d99e7 (diff)
Triage view: update exports list when functions change
Diffstat (limited to 'examples/triage/exports.h')
-rw-r--r--examples/triage/exports.h29
1 files changed, 24 insertions, 5 deletions
diff --git a/examples/triage/exports.h b/examples/triage/exports.h
index bb0c4411..0a62e07f 100644
--- a/examples/triage/exports.h
+++ b/examples/triage/exports.h
@@ -1,21 +1,32 @@
#pragma once
#include <QtCore/QAbstractItemModel>
+#include <QtCore/QTimer>
#include <QtWidgets/QTreeView>
#include "filter.h"
-class GenericExportsModel : public QAbstractItemModel
+class GenericExportsModel : public QAbstractItemModel, public BinaryNinja::BinaryDataNotification
{
+ Q_OBJECT
+
+ BinaryViewRef m_data;
std::vector<SymbolRef> m_allEntries, m_entries;
- int m_addrCol, m_nameCol, m_ordinalCol;
- int m_totalCols, m_sortCol;
+ std::string m_filter;
Qt::SortOrder m_sortOrder;
+ int m_sortCol;
+ bool m_hasOrdinals;
+ QTimer* m_updateTimer;
void performSort(int col, Qt::SortOrder order);
+ void updateModel();
+
+ signals:
+ void modelUpdate();
public:
GenericExportsModel(BinaryViewRef data);
+ virtual ~GenericExportsModel();
virtual int columnCount(const QModelIndex& parent) const override;
virtual int rowCount(const QModelIndex& parent) const override;
@@ -28,8 +39,12 @@ class GenericExportsModel : public QAbstractItemModel
SymbolRef getSymbol(const QModelIndex& index);
- bool HasOrdinalCol() const { return m_ordinalCol != -1; }
- int GetOrdinalCol() const { return m_ordinalCol; }
+ virtual void OnAnalysisFunctionAdded(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
+ virtual void OnAnalysisFunctionRemoved(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
+ virtual void OnAnalysisFunctionUpdated(BinaryNinja::BinaryView* view, BinaryNinja::Function* func) override;
+ virtual void OnSymbolAdded(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
+ virtual void OnSymbolUpdated(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
+ virtual void OnSymbolRemoved(BinaryNinja::BinaryView* view, BinaryNinja::Symbol* sym) override;
};
@@ -38,11 +53,15 @@ class ExportsWidget;
class ExportsTreeView : public QTreeView, public FilterTarget
{
+ Q_OBJECT
+
BinaryViewRef m_data;
ExportsWidget* m_parent;
TriageView* m_view;
UIActionHandler m_actionHandler;
GenericExportsModel* m_model;
+ QModelIndexList m_selection;
+ int m_scroll;
public:
ExportsTreeView(ExportsWidget* parent, TriageView* view, BinaryViewRef data);