From dac3e9d89febf151ceb0804e3c22b00225ccbea9 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Tue, 7 Mar 2023 15:50:59 -0500 Subject: Add DataVariable and FunctionToImport features to BNDB Import Dialog --- ui/bndbimportdialog.h | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/ui/bndbimportdialog.h b/ui/bndbimportdialog.h index 86a81c96..37b46f31 100644 --- a/ui/bndbimportdialog.h +++ b/ui/bndbimportdialog.h @@ -8,7 +8,30 @@ #include #include #include +#include + #include "uitypes.h" +#include "binaryninjaapi.h" + +constexpr int IndexRole = Qt::UserRole; +constexpr int ItemRole = Qt::UserRole + 1; +constexpr int LocationRole = Qt::UserRole + 2; +constexpr int NameColumn = 1; +constexpr int LocationColumn = 2; + + +class BackgroundTreeWidget : public QTreeWidget +{ + Q_OBJECT +public: + explicit BackgroundTreeWidget(QWidget *parent); + +Q_SIGNALS: + void addressDoubleClicked(uint64_t address); + +protected: + virtual void keyPressEvent(QKeyEvent* event) override; +}; /*! @@ -36,8 +59,16 @@ class BINARYNINJAUIAPI BndbImportDialog : public QDialog std::vector m_types; std::vector m_functions; + std::vector m_functionsToImports; std::vector m_dataVariables; + enum ItemType { + TypeItem, + FunctionItem, + FunctionToImportItem, + DataVariableItem + }; + BinaryViewRef m_incomingView; LoggerRef m_logger; @@ -55,9 +86,13 @@ private: bool isExistingType(const BinaryNinja::QualifiedName& name, bool function) const; bool isBuiltinType(const BinaryNinja::QualifiedName& name) const; void ApplyFunctionTypes(const std::vector& functions); + void ApplyFunctionTypesToImports(const std::vector& functions); void ApplyDataVariables(const std::vector& dataVariables); - + std::vector matchingSymbol(const SymbolRef sym, std::vector allowed, bool allowPrefix); + void navigateToItem(QTreeWidgetItem *item, int column); + bool inSymbolBlackList(const SymbolRef sym); public: + BndbImportDialog(QWidget* parent, BinaryViewRef view); ~BndbImportDialog() = default; }; -- cgit v1.3.1