32class TypeEditor :
public QWidget
37 TypeEditor(QWidget* parent =
nullptr);
39 void focusCurrentEditor();
48 void removeCurrentType();
52 void currentTypeChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
55 void addField(
const QString& defaultName,
const koda::types::FieldDefinition& field);
59 void addEnumValue(
const QString& defaultName,
const QString& defaultValue);
60 void removeEnumValue();
66 void importFromJson();
69 bool eventFilter(QObject*
object, QEvent* event);
83 QualifiedNameRole = Qt::UserRole,
84 IdRole = Qt::UserRole + 1,
85 RootIdRole = Qt::UserRole + 2,
88 QTreeWidget* mTypeTree =
nullptr;
90 QPushButton* mAddButton =
nullptr;
91 QPushButton* mDeleteButton =
nullptr;
92 QPushButton* mApplyButton =
nullptr;
93 QPushButton* mExportButton =
nullptr;
94 QPushButton* mImportButton =
nullptr;
96 QStackedWidget* mEditorStack =
nullptr;
98 QTableWidget* mFieldsTable =
nullptr;
99 QPushButton* mAddFieldButton =
nullptr;
100 QPushButton* mRemoveFieldButton =
nullptr;
102 QComboBox* mEnumBackingCombo =
nullptr;
103 QTableWidget* mEnumTable =
nullptr;
104 QPushButton* mAddEnumValueButton =
nullptr;
105 QPushButton* mRemoveEnumValueButton =
nullptr;
108 bool mSelectedBuiltin =
false;
109 bool mReloading =
false;
112 QWidget* createBuiltinPage();
113 QWidget* createRecordPage();
114 QWidget* createEnumPage();
115 QWidget* createAliasPage();
118 void showDefinition(
const koda::types::TypeDefinition& definition);
119 koda::types::TypeDefinition readDefinitionFromUi()
const;
121 std::string createUniqueTypeName(
const std::string& baseName)
const;
123 QTreeWidgetItem* findTreeItemById(
const QString&
id)
const;
124 QTreeWidgetItem* findTreeItemByName(
const QString& qualifiedName)
const;
125 QTreeWidgetItem* findItemByRole(QTreeWidgetItem* parent,
int role,
const QVariant& value)
const;
127 void selectType(
const QString& qualifiedName);
129 QTableWidget* createTable(QWidget* parent,
const QStringList& headers);
130 void createDefinition(
const koda::types::TypeDefinition& definition);
132 QIcon typeToIcon(
const koda::types::TypeDefinition& type)
const;
134 void populateEnumKind(QComboBox* widget)
const;
135 void populateExtentKind(QComboBox* widget,
const koda::types::QualifiedName* currentName =
nullptr)
const;
137 void validateEnumValues();
138 bool validateEnumValue(
int row);
139 bool isValidEnumValue(
const QString& value, koda::types::EnumUnderlyingKind type)
const;