63 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
68 struct CustomWidgetData {
70 explicit CustomWidgetData(
const DomCustomWidget *dc);
72 QString addPageMethod;
75 bool isContainer =
false;
80 DomUI *readUi(QIODevice *dev);
81 static QString msgInvalidUiFile();
83 bool applyPropertyInternally(QObject *o,
const QString &propertyName,
const QVariant &value);
85 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
87 void applyInternalProperties()
const;
88 static bool applyBuddy(
const QString &buddyName, BuddyMode applyMode, QLabel *label);
90 const QPointer<QWidget> &parentWidget()
const;
91 bool parentWidgetIsSet()
const;
92 void setParentWidget(
const QPointer<QWidget> &w);
94 void setProcessingLayoutWidget(
bool processing);
95 bool processingLayoutWidget()
const;
97 void setResourceBuilder(QResourceBuilder *builder);
98 QResourceBuilder *resourceBuilder()
const;
100 void setTextBuilder(QTextBuilder *builder);
101 QTextBuilder *textBuilder()
const;
103 void storeCustomWidgetData(
const QString &className,
const DomCustomWidget *d);
104 QString customWidgetAddPageMethod(
const QString &className)
const;
105 QString customWidgetBaseClass(
const QString &className)
const;
106 bool isCustomWidgetContainer(
const QString &className)
const;
109 void registerButtonGroups(
const DomButtonGroups *groups);
111 using ButtonGroupEntry = std::pair<DomButtonGroup *, QButtonGroup *>;
112 using ButtonGroupHash = QHash<QString, ButtonGroupEntry>;
113 const ButtonGroupHash &buttonGroups()
const {
return m_buttonGroups; }
114 ButtonGroupHash &buttonGroups() {
return m_buttonGroups; }
116 static void getLayoutMargins(
const QList<DomProperty*> &properties,
117 int *left,
int *top,
int *right,
int *bottom);
120 static QString boxLayoutStretch(
const QBoxLayout*);
122 static bool setBoxLayoutStretch(
const QString &, QBoxLayout*);
123 static void clearBoxLayoutStretch(QBoxLayout*);
125 static QString gridLayoutRowStretch(
const QGridLayout *);
126 static bool setGridLayoutRowStretch(
const QString &, QGridLayout *);
127 static void clearGridLayoutRowStretch(QGridLayout *);
129 static QString gridLayoutColumnStretch(
const QGridLayout *);
130 static bool setGridLayoutColumnStretch(
const QString &, QGridLayout *);
131 static void clearGridLayoutColumnStretch(QGridLayout *);
134 static QString gridLayoutRowMinimumHeight(
const QGridLayout *);
135 static bool setGridLayoutRowMinimumHeight(
const QString &, QGridLayout *);
136 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
138 static QString gridLayoutColumnMinimumWidth(
const QGridLayout *);
139 static bool setGridLayoutColumnMinimumWidth(
const QString &, QGridLayout *);
140 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
142 static void setPixmapProperty(DomProperty *p,
const std::pair<QString, QString> &ip);
143 static QPalette loadPalette(
const DomPalette *dom);
144 static void setupColorGroup(QPalette *palette, QPalette::ColorGroup colorGroup,
145 const DomColorGroup *group);
146 static DomColorGroup *saveColorGroup(
const QPalette &palette,
147 QPalette::ColorGroup colorGroup);
148 static DomPalette *savePalette(
const QPalette &palette);
149 static QBrush setupBrush(
const DomBrush *brush);
150 static DomBrush *saveBrush(
const QBrush &br);
152 static DomProperty *propertyByName(
const QList<DomProperty*> &properties,
153 QAnyStringView needle);
155 static bool isQFontComboBox(
const QWidget *w);
157 QStringList m_pluginPaths;
158 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
160 QHash<QObject*,
bool> m_laidout;
161 QHash<QString, QAction*> m_actions;
162 QHash<QString, QActionGroup*> m_actionGroups;
163 bool m_fullyQualifiedEnums =
true;
164 QVersionNumber m_saveVersion{ QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH };
166 int m_defaultSpacing;
167 QDir m_workingDirectory;
168 QString m_errorString;
172 void clearResourceBuilder();
173 void clearTextBuilder();
175 QHash<QLabel *, QString> m_buddies;
177 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
179 ButtonGroupHash m_buttonGroups;
181 bool m_layoutWidget =
false;
182 QResourceBuilder *m_resourceBuilder =
nullptr;
183 QTextBuilder *m_textBuilder =
nullptr;
185 QPointer<QWidget> m_parentWidget;
186 bool m_parentWidgetIsSet =
false;