diff options
| author | Jon Palmisciano <jp@jonpalmisc.com> | 2022-12-15 11:55:13 -0500 |
|---|---|---|
| committer | Jon Palmisciano <jp@jonpalmisc.com> | 2022-12-16 15:44:04 -0500 |
| commit | 74dfc90a4291ff12228288e45bdbfe714869bac3 (patch) | |
| tree | a057a8b49f4ad79158354ea43bc6b684a62f234c /ui/createarraydialog.h | |
| parent | 7f2d3ad1f37f8944d0158448072d2db5b167fa43 (diff) | |
Add new "Create Array" dialog
Diffstat (limited to 'ui/createarraydialog.h')
| -rw-r--r-- | ui/createarraydialog.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/ui/createarraydialog.h b/ui/createarraydialog.h new file mode 100644 index 00000000..d14bbca3 --- /dev/null +++ b/ui/createarraydialog.h @@ -0,0 +1,49 @@ +#include "uitypes.h" + +#include <QtWidgets/QDialog> +#include <QtWidgets/QSpinBox> +#include <QtWidgets/QLineEdit> +#include <QtWidgets/QComboBox> + +class CreateArrayDialog : public QDialog +{ + Q_OBJECT + + BinaryViewRef m_data; + + uint64_t m_startAddress; + TypeRef m_elementType; + uint64_t m_elementCount; + + QLineEdit* m_startField; + QComboBox* m_countTypeDropdown; + QComboBox* m_typeDropdown; + QSpinBox* m_countField; + + QPushButton* m_acceptButton; + + void validate(); + +public: + CreateArrayDialog(BinaryViewRef data, QWidget* parent = nullptr); + + /// Set the initial start address, element type, and element count for + /// the dialog. The element type may be null if no default is desired; a + /// default will be chosen by the dialog. + void setInitialState(uint64_t start, TypeRef elementType, uint64_t count); + + /// Get the desired start address from the accepted dialog. + uint64_t startAddress() const; + + /// Get the desired array element type from the accepted dialog. + /// + /// The returned value will NOT be of `Type::ArrayType(...)`, but rather + /// the element inside. + TypeRef elementType() const; + + /// Get the desired element count from the accepted dialog. + uint64_t elementCount() const; + + void accept() override; + void reject() override; +}; |
