summaryrefslogtreecommitdiff
path: root/ui/bndbimportdialog.h
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2023-02-25 17:59:50 -0500
committerPeter LaFosse <peter@vector35.com>2023-02-25 17:59:50 -0500
commitb57e34087f3c2e9bc76b841720a728bb54fbbf4d (patch)
tree7b64143138349e1f418354f2e07be7811dfedbca /ui/bndbimportdialog.h
parent0108ff005a358cda6912d0437ccd62558ba5ed3d (diff)
Add BNDB import dialog
Diffstat (limited to 'ui/bndbimportdialog.h')
-rw-r--r--ui/bndbimportdialog.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/ui/bndbimportdialog.h b/ui/bndbimportdialog.h
new file mode 100644
index 00000000..c88baa3c
--- /dev/null
+++ b/ui/bndbimportdialog.h
@@ -0,0 +1,54 @@
+#pragma once
+
+#include <QtWidgets/QDialog>
+#include <QtWidgets/QLineEdit>
+#include <QtWidgets/QPushButton>
+#include <QtWidgets/QTextEdit>
+#include <QtWidgets/QSplitter>
+#include <QtWidgets/QTextBrowser>
+#include <QtWidgets/QTreeWidget>
+#include <QtWidgets/QCheckBox>
+#include "uitypes.h"
+
+/*!
+
+ \ingroup uiapi
+*/
+class BINARYNINJAUIAPI BndbImportDialog : public QDialog
+{
+ Q_OBJECT
+ QLineEdit* m_fileEdit;
+ QPushButton* m_browseButton;
+ QWidget* m_resultsWidget;
+ QTreeWidget* m_typesTree;
+ QPushButton* m_previewButton;
+ QPushButton* m_importButton;
+ BinaryViewRef m_data;
+
+ std::string m_filePath;
+
+ std::vector<BinaryNinja::QualifiedNameAndType> m_types;
+ std::vector<BinaryNinja::QualifiedNameAndType> m_functions;
+
+ BinaryViewRef m_incomingView;
+ LoggerRef m_logger;
+
+protected Q_SLOTS:
+ void browseFile();
+ void updateButtons();
+ void previewTypes();
+ void importTypes();
+
+protected:
+ virtual void keyPressEvent(QKeyEvent* event) override;
+
+private:
+ bool loadTypes();
+ bool isExistingType(const BinaryNinja::QualifiedName& name, bool function) const;
+ bool isBuiltinType(const BinaryNinja::QualifiedName& name) const;
+ void ApplyFunctionTypes(const std::vector<BinaryNinja::QualifiedNameAndType>& functions);
+
+public:
+ BndbImportDialog(QWidget* parent, BinaryViewRef view);
+ ~BndbImportDialog() = default;
+};