#pragma once #include #include #include #include #include #include #include #include "binaryninjaapi.h" #include "viewtype.h" #include "filecontext.h" #include #include #include /*! \defgroup options Options \ingroup uiapi */ /*! \ingroup options */ class BINARYNINJAUIAPI OptionsDialog : public QDialog { Q_OBJECT QString m_fileName; QLabel* m_fileLabel; QComboBox* m_loadAsCombo; QLabel* m_loadAsLabel; QLabel* m_objectLabel; QComboBox* m_objectCombo; QTabWidget* m_tab; std::map m_containerPath; QLabel* m_notification; std::map m_notificationMesssage; QPushButton* m_defaultsButton; bool m_isDatabase; FileContext* m_file = nullptr; FileMetadataRef m_fileMetadata = nullptr; BinaryViewRef m_rawData = nullptr; ProjectRef m_project = nullptr; std::vector> m_objects; const std::string m_oldFlag = "old:"; public: OptionsDialog(QWidget* parent, const QString& name); virtual ~OptionsDialog(); bool loadViews(BinaryViewRef existingView = nullptr, bool isDatabase = false); Q_SIGNALS: void openFile(FileContext* file); private Q_SLOTS: void defaults(int index); void addSettingsViewForType(const std::string& bvtName); void removeTabAndSettingsView(int index); void viewTabChanged(int index); void viewTabCloseRequested(int index); void viewTypeSelectionChanged(); public Q_SLOTS: virtual void accept() override; virtual void reject() override; };