62 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
67 struct CustomWidgetData {
69 explicit CustomWidgetData(
const DomCustomWidget *dc);
71 QString addPageMethod;
74 bool isContainer =
false;
79 DomUI *readUi(QIODevice *dev);
80 static QString msgInvalidUiFile();
82 bool applyPropertyInternally(QObject *o,
const QString &propertyName,
const QVariant &value);
84 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
86 void applyInternalProperties()
const;
87 static bool applyBuddy(
const QString &buddyName, BuddyMode applyMode, QLabel *label);
89 const QPointer<QWidget> &parentWidget()
const;
90 bool parentWidgetIsSet()
const;
91 void setParentWidget(
const QPointer<QWidget> &w);
93 void setProcessingLayoutWidget(
bool processing);
94 bool processingLayoutWidget()
const;
96 void setResourceBuilder(QResourceBuilder *builder);
97 QResourceBuilder *resourceBuilder()
const;
99 void setTextBuilder(QTextBuilder *builder);
100 QTextBuilder *textBuilder()
const;
102 void storeCustomWidgetData(
const QString &className,
const DomCustomWidget *d);
103 QString customWidgetAddPageMethod(
const QString &className)
const;
104 QString customWidgetBaseClass(
const QString &className)
const;
105 bool isCustomWidgetContainer(
const QString &className)
const;
108 void registerButtonGroups(
const DomButtonGroups *groups);
110 using ButtonGroupEntry = std::pair<DomButtonGroup *, QButtonGroup *>;
111 using ButtonGroupHash = QHash<QString, ButtonGroupEntry>;
112 const ButtonGroupHash &buttonGroups()
const {
return m_buttonGroups; }
113 ButtonGroupHash &buttonGroups() {
return m_buttonGroups; }
115 static void getLayoutMargins(
const QList<DomProperty*> &properties,
116 int *left,
int *top,
int *right,
int *bottom);
119 static QString boxLayoutStretch(
const QBoxLayout*);
121 static bool setBoxLayoutStretch(
const QString &, QBoxLayout*);
122 static void clearBoxLayoutStretch(QBoxLayout*);
124 static QString gridLayoutRowStretch(
const QGridLayout *);
125 static bool setGridLayoutRowStretch(
const QString &, QGridLayout *);
126 static void clearGridLayoutRowStretch(QGridLayout *);
128 static QString gridLayoutColumnStretch(
const QGridLayout *);
129 static bool setGridLayoutColumnStretch(
const QString &, QGridLayout *);
130 static void clearGridLayoutColumnStretch(QGridLayout *);
133 static QString gridLayoutRowMinimumHeight(
const QGridLayout *);
134 static bool setGridLayoutRowMinimumHeight(
const QString &, QGridLayout *);
135 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
137 static QString gridLayoutColumnMinimumWidth(
const QGridLayout *);
138 static bool setGridLayoutColumnMinimumWidth(
const QString &, QGridLayout *);
139 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
141 static void setPixmapProperty(DomProperty *p,
const std::pair<QString, QString> &ip);
142 static QPalette loadPalette(
const DomPalette *dom);
143 static void setupColorGroup(QPalette *palette, QPalette::ColorGroup colorGroup,
144 const DomColorGroup *group);
145 static DomColorGroup *saveColorGroup(
const QPalette &palette,
146 QPalette::ColorGroup colorGroup);
147 static DomPalette *savePalette(
const QPalette &palette);
148 static QBrush setupBrush(
const DomBrush *brush);
149 static DomBrush *saveBrush(
const QBrush &br);
151 static DomProperty *propertyByName(
const QList<DomProperty*> &properties,
152 QAnyStringView needle);
154 QStringList m_pluginPaths;
155 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
157 QHash<QObject*,
bool> m_laidout;
158 QHash<QString, QAction*> m_actions;
159 QHash<QString, QActionGroup*> m_actionGroups;
160 bool m_fullyQualifiedEnums =
true;
162 int m_defaultSpacing;
163 QDir m_workingDirectory;
164 QString m_errorString;
168 void clearResourceBuilder();
169 void clearTextBuilder();
171 QHash<QLabel *, QString> m_buddies;
173 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
175 ButtonGroupHash m_buttonGroups;
177 bool m_layoutWidget =
false;
178 QResourceBuilder *m_resourceBuilder =
nullptr;
179 QTextBuilder *m_textBuilder =
nullptr;
181 QPointer<QWidget> m_parentWidget;
182 bool m_parentWidgetIsSet =
false;