79 Q_DISABLE_COPY_MOVE(QAbstractFormBuilder)
81 QAbstractFormBuilder();
82 virtual ~QAbstractFormBuilder();
84 QDir workingDirectory()
const;
85 void setWorkingDirectory(
const QDir &directory);
87 virtual QWidget *load(QIODevice *dev, QWidget *parentWidget =
nullptr);
88 virtual void save(QIODevice *dev, QWidget *widget);
90 QString errorString()
const;
96 virtual void loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
98 virtual QWidget *create(DomUI *ui, QWidget *parentWidget);
99 virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget);
100 virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget);
101 virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget);
103 virtual QAction *create(DomAction *ui_action, QObject *parent);
104 virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent);
105 virtual void addMenuAction(QAction *action);
107 virtual void applyProperties(QObject *o,
const QList<DomProperty*> &properties);
108 bool applyPropertyInternally(QObject *o,
const QString &propertyName,
const QVariant &value);
110 virtual void applyTabStops(QWidget *widget, DomTabStops *tabStops);
112 virtual QWidget *createWidget(
const QString &widgetName, QWidget *parentWidget,
const QString &name);
113 virtual QLayout *createLayout(
const QString &layoutName, QObject *parent,
const QString &name);
114 virtual QAction *createAction(QObject *parent,
const QString &name);
115 virtual QActionGroup *createActionGroup(QObject *parent,
const QString &name);
117 virtual void createCustomWidgets(DomCustomWidgets *) {}
118 virtual void createConnections(DomConnections *, QWidget *) {}
119 virtual void createResources(DomResources*) {}
121 virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout);
122 virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget);
127 virtual void saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
129 virtual void saveDom(DomUI *ui, QWidget *widget);
131 virtual DomActionRef *createActionRefDom(QAction *action);
133 virtual DomWidget *createDom(QWidget *widget, DomWidget *ui_parentWidget,
bool recursive =
true);
134 virtual DomLayout *createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget);
135 virtual DomLayoutItem *createDom(QLayoutItem *item, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
136 virtual DomSpacer *createDom(QSpacerItem *spacer, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget);
138 virtual DomAction *createDom(QAction *action);
139 virtual DomActionGroup *createDom(QActionGroup *actionGroup);
140 DomButtonGroup *createDom(QButtonGroup *buttonGroup);
142 virtual DomConnections *saveConnections();
143 virtual DomCustomWidgets *saveCustomWidgets();
144 virtual DomTabStops *saveTabStops();
145 virtual DomResources *saveResources();
146 DomButtonGroups *saveButtonGroups(
const QWidget *mainContainer);
147 virtual QList<DomProperty*> computeProperties(QObject *obj);
148 virtual bool checkProperty(QObject *obj,
const QString &prop)
const;
149 virtual DomProperty *createProperty(QObject *object,
const QString &propertyName,
const QVariant &value);
151 virtual void layoutInfo(DomLayout *layout, QObject *parent,
int *margin,
int *spacing);
153 void loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget);
154 void loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget);
155 void loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget);
156 void loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget);
157 void loadButtonExtraInfo(
const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget);
158 void loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget);
160 void saveListWidgetExtraInfo(QListWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
161 void saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
162 void saveTableWidgetExtraInfo(QTableWidget *tablWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
163 void saveComboBoxExtraInfo(QComboBox *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
164 void saveButtonExtraInfo(
const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget);
165 void saveItemViewExtraInfo(
const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget);
167 void setResourceBuilder(QResourceBuilder *builder);
168 QResourceBuilder *resourceBuilder()
const;
169 DomProperty *saveResource(
const QVariant &v)
const;
171 void setTextBuilder(QTextBuilder *builder);
172 QTextBuilder *textBuilder()
const;
173 DomProperty *saveText(
const QString &attributeName,
const QVariant &v)
const;
178 QVariant toVariant(
const QMetaObject *meta, DomProperty *property);
179 static QString toString(
const DomString *str);
181 using DomPropertyHash = QHash<QString, DomProperty*>;
182 static DomPropertyHash propertyMap(
const QList<DomProperty*> &properties);
184 void setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group);
185 DomColorGroup *saveColorGroup(
const QPalette &palette);
186 QBrush setupBrush(DomBrush *brush);
187 DomBrush *saveBrush(
const QBrush &brush);
190 void initialize(
const DomUI *ui);
196 static QMetaEnum toolBarAreaMetaEnum();
202 using IconPaths = std::pair<QString, QString>;
204 void setIconProperty(DomProperty &,
const IconPaths &)
const;
205 void setPixmapProperty(DomProperty &,
const IconPaths &)
const;
207 static const DomResourcePixmap *domPixmap(
const DomProperty* p);
213 static Qt::ToolBarArea toolbarAreaFromDOMAttributes(
const DomPropertyHash &attributeMap);
215 friend QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder,
const QMetaObject *meta,
const QString &propertyName,
const QVariant &value);
216 friend QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder,
const QMetaObject *meta,
const DomProperty *property);
219 QScopedPointer<QFormBuilderExtra> d;