summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Smith <glenn@vector35.com>2022-11-07 21:39:51 -0500
committerGlenn Smith <glenn@vector35.com>2022-11-11 16:11:50 -0500
commit9912e2bdbc73c4984b94c1f8854ad7b960f5b252 (patch)
treea157331c70846b33f1cfb697307a26f09e87eaf0
parent1a565da676a7d1be45bfde1a5f40252838ccf5d8 (diff)
Header import dialog
-rw-r--r--ui/headerimportdialog.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/ui/headerimportdialog.h b/ui/headerimportdialog.h
new file mode 100644
index 00000000..90ce495d
--- /dev/null
+++ b/ui/headerimportdialog.h
@@ -0,0 +1,55 @@
+#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 HeaderImportDialog : public QDialog
+{
+ Q_OBJECT
+ QLineEdit* m_fileEdit;
+ QPushButton* m_browseButton;
+ QTextEdit* m_compilerFlagsEdit;
+ QSplitter* m_splitter;
+ QWidget* m_resultsWidget;
+ QLayout* m_resultsLayout;
+ QTextBrowser* m_compilerErrorsText;
+ QTreeWidget* m_typesTree;
+ QCheckBox* m_includeSystemTypesCheck;
+ QCheckBox* m_builtinMacrosCheck;
+ QPushButton* m_previewButton;
+ QPushButton* m_importButton;
+ BinaryViewRef m_data;
+
+ std::string m_filePath;
+ BinaryNinja::TypeParserResult m_result;
+ std::vector<BinaryNinja::TypeParserError> m_errors;
+
+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) const;
+ bool isBuiltinType(const BinaryNinja::QualifiedName& name) const;
+
+public:
+ HeaderImportDialog(QWidget* parent, BinaryViewRef view);
+ ~HeaderImportDialog() = default;
+};