diff options
| author | Peter LaFosse <peter@vector35.com> | 2023-02-25 17:59:50 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2023-02-25 17:59:50 -0500 |
| commit | b57e34087f3c2e9bc76b841720a728bb54fbbf4d (patch) | |
| tree | 7b64143138349e1f418354f2e07be7811dfedbca /ui/bndbimportdialog.h | |
| parent | 0108ff005a358cda6912d0437ccd62558ba5ed3d (diff) | |
Add BNDB import dialog
Diffstat (limited to 'ui/bndbimportdialog.h')
| -rw-r--r-- | ui/bndbimportdialog.h | 54 |
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; +}; |
