diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-11-07 21:39:51 -0500 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-11-11 16:11:50 -0500 |
| commit | 9912e2bdbc73c4984b94c1f8854ad7b960f5b252 (patch) | |
| tree | a157331c70846b33f1cfb697307a26f09e87eaf0 | |
| parent | 1a565da676a7d1be45bfde1a5f40252838ccf5d8 (diff) | |
Header import dialog
| -rw-r--r-- | ui/headerimportdialog.h | 55 |
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; +}; |
