64 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
69 struct CustomWidgetData {
71 explicit CustomWidgetData(
const DomCustomWidget *dc);
73 QString addPageMethod;
76 bool isContainer =
false;
81 DomUI *readUi(QIODevice *dev);
82 static QString msgInvalidUiFile();
84 bool applyPropertyInternally(QObject *o,
const QString &propertyName,
const QVariant &value);
86 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
88 void applyInternalProperties()
const;
89 static bool applyBuddy(
const QString &buddyName, BuddyMode applyMode, QLabel *label);
91 const QPointer<QWidget> &parentWidget()
const;
92 bool parentWidgetIsSet()
const;
93 void setParentWidget(
const QPointer<QWidget> &w);
95 void setProcessingLayoutWidget(
bool processing);
96 bool processingLayoutWidget()
const;
98 void setResourceBuilder(QResourceBuilder *builder);
99 QResourceBuilder *resourceBuilder()
const;
101 void setTextBuilder(QTextBuilder *builder);
102 QTextBuilder *textBuilder()
const;
104 void storeCustomWidgetData(
const QString &className,
const DomCustomWidget *d);
105 QString customWidgetAddPageMethod(
const QString &className)
const;
106 QString customWidgetBaseClass(
const QString &className)
const;
107 bool isCustomWidgetContainer(
const QString &className)
const;
110 void registerButtonGroups(
const DomButtonGroups *groups);
112 using ButtonGroupEntry = std::pair<DomButtonGroup *, QButtonGroup *>;
113 using ButtonGroupHash = QHash<QString, ButtonGroupEntry>;
114 const ButtonGroupHash &buttonGroups()
const {
return m_buttonGroups; }
115 ButtonGroupHash &buttonGroups() {
return m_buttonGroups; }
117 static void getLayoutMargins(
const QList<DomProperty*> &properties,
118 int *left,
int *top,
int *right,
int *bottom);
121 static QString boxLayoutStretch(
const QBoxLayout*);
123 static bool setBoxLayoutStretch(
const QString &, QBoxLayout*);
124 static void clearBoxLayoutStretch(QBoxLayout*);
126 static QString gridLayoutRowStretch(
const QGridLayout *);
127 static bool setGridLayoutRowStretch(
const QString &, QGridLayout *);
128 static void clearGridLayoutRowStretch(QGridLayout *);
130 static QString gridLayoutColumnStretch(
const QGridLayout *);
131 static bool setGridLayoutColumnStretch(
const QString &, QGridLayout *);
132 static void clearGridLayoutColumnStretch(QGridLayout *);
135 static QString gridLayoutRowMinimumHeight(
const QGridLayout *);
136 static bool setGridLayoutRowMinimumHeight(
const QString &, QGridLayout *);
137 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
139 static QString gridLayoutColumnMinimumWidth(
const QGridLayout *);
140 static bool setGridLayoutColumnMinimumWidth(
const QString &, QGridLayout *);
141 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
143 static void setPixmapProperty(DomProperty *p,
const std::pair<QString, QString> &ip);
144 static QPalette loadPalette(
const DomPalette *dom);
145 static void setupColorGroup(QPalette *palette, QPalette::ColorGroup colorGroup,
146 const DomColorGroup *group);
147 static DomColorGroup *saveColorGroup(
const QPalette &palette,
148 QPalette::ColorGroup colorGroup);
149 static DomPalette *savePalette(
const QPalette &palette);
150 static QBrush setupBrush(
const DomBrush *brush);
151 static DomBrush *saveBrush(
const QBrush &br);
153 static DomProperty *propertyByName(
const QList<DomProperty*> &properties,
154 QAnyStringView needle);
156 static bool isQFontComboBox(
const QWidget *w);
158 QStringList m_pluginPaths;
159 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
161 QHash<QObject*,
bool> m_laidout;
162 QHash<QString, QAction*> m_actions;
163 QHash<QString, QActionGroup*> m_actionGroups;
164 bool m_fullyQualifiedEnums =
true;
165 QVersionNumber m_saveVersion{ QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH };
167 int m_defaultSpacing;
168 QDir m_workingDirectory;
169 QString m_errorString;
173 void clearResourceBuilder();
174 void clearTextBuilder();
176 QHash<QLabel *, QString> m_buddies;
178 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
180 ButtonGroupHash m_buttonGroups;
182 bool m_layoutWidget =
false;
183 QResourceBuilder *m_resourceBuilder =
nullptr;
184 QTextBuilder *m_textBuilder =
nullptr;
186 QPointer<QWidget> m_parentWidget;
187 bool m_parentWidgetIsSet =
false;