Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
formbuilderextra_p.h
Go to the documentation of this file.
1// Copyright (C) 2020 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant reason:default
4
5#ifndef ABSTRACTFORMBUILDERPRIVATE_H
6#define ABSTRACTFORMBUILDERPRIVATE_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include "uilib_global.h"
20
21#include <QtCore/qhash.h>
22#include <QtCore/qpointer.h>
23#include <QtCore/qstringlist.h>
24#include <QtCore/qmap.h>
25#include <QtCore/qdir.h>
26#include <QtCore/qversionnumber.h>
27#include <QtGui/qpalette.h>
28
29QT_BEGIN_NAMESPACE
30
31class QDesignerCustomWidgetInterface;
32class QObject;
33class QVariant;
34class QWidget;
35class QObject;
36class QLabel;
37class QButtonGroup;
38class QBoxLayout;
39class QGridLayout;
40class QAction;
41class QActionGroup;
42
43#ifdef QFORMINTERNAL_NAMESPACE
44namespace QFormInternal
45{
46#endif
47
48class DomBrush;
49class DomButtonGroups;
50class DomButtonGroup;
51class DomColorGroup;
52class DomCustomWidget;
53class DomPalette;
54class DomProperty;
55class DomUI;
56
57class QAbstractFormBuilder;
58class QResourceBuilder;
59class QTextBuilder;
60
62{
63public:
64 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
65
66 QFormBuilderExtra();
67 ~QFormBuilderExtra();
68
69 struct CustomWidgetData {
70 CustomWidgetData();
71 explicit CustomWidgetData(const DomCustomWidget *dc);
72
73 QString addPageMethod;
74 QString script;
75 QString baseClass;
76 bool isContainer = false;
77 };
78
79 void clear();
80
81 DomUI *readUi(QIODevice *dev);
82 static QString msgInvalidUiFile();
83
84 bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
85
86 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
87
88 void applyInternalProperties() const;
89 static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label);
90
91 const QPointer<QWidget> &parentWidget() const;
92 bool parentWidgetIsSet() const;
93 void setParentWidget(const QPointer<QWidget> &w);
94
95 void setProcessingLayoutWidget(bool processing);
96 bool processingLayoutWidget() const;
97
98 void setResourceBuilder(QResourceBuilder *builder);
99 QResourceBuilder *resourceBuilder() const;
100
101 void setTextBuilder(QTextBuilder *builder);
102 QTextBuilder *textBuilder() const;
103
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;
108
109 // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group
110 void registerButtonGroups(const DomButtonGroups *groups);
111
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; }
116
117 static void getLayoutMargins(const QList<DomProperty*> &properties,
118 int *left, int *top, int *right, int *bottom);
119
120 // return stretch as a comma-separated list
121 static QString boxLayoutStretch(const QBoxLayout*);
122 // apply stretch
123 static bool setBoxLayoutStretch(const QString &, QBoxLayout*);
124 static void clearBoxLayoutStretch(QBoxLayout*);
125
126 static QString gridLayoutRowStretch(const QGridLayout *);
127 static bool setGridLayoutRowStretch(const QString &, QGridLayout *);
128 static void clearGridLayoutRowStretch(QGridLayout *);
129
130 static QString gridLayoutColumnStretch(const QGridLayout *);
131 static bool setGridLayoutColumnStretch(const QString &, QGridLayout *);
132 static void clearGridLayoutColumnStretch(QGridLayout *);
133
134 // return the row/column sizes as comma-separated lists
135 static QString gridLayoutRowMinimumHeight(const QGridLayout *);
136 static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *);
137 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
138
139 static QString gridLayoutColumnMinimumWidth(const QGridLayout *);
140 static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *);
141 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
142
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);
152
153 static DomProperty *propertyByName(const QList<DomProperty*> &properties,
154 QAnyStringView needle);
155
156 static bool isQFontComboBox(const QWidget *w);
157
158 QStringList m_pluginPaths;
159 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
160
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 };
166 int m_defaultMargin;
167 int m_defaultSpacing;
168 QDir m_workingDirectory;
169 QString m_errorString;
170 QString m_language;
171
172private:
173 void clearResourceBuilder();
174 void clearTextBuilder();
175
176 QHash<QLabel *, QString> m_buddies;
177
178 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
179
180 ButtonGroupHash m_buttonGroups;
181
182 bool m_layoutWidget = false;
183 QResourceBuilder *m_resourceBuilder = nullptr;
184 QTextBuilder *m_textBuilder = nullptr;
185
186 QPointer<QWidget> m_parentWidget;
187 bool m_parentWidgetIsSet = false;
188};
189
190void uiLibWarning(const QString &message);
191
192// Struct with static accessor that provides most strings used in the form builder.
194 QFormBuilderStrings();
195
196 static const QFormBuilderStrings &instance();
197
198 static constexpr auto titleAttribute = QLatin1StringView("title");
199 static constexpr auto labelAttribute = QLatin1StringView("label");
200 static constexpr auto toolTipAttribute = QLatin1StringView("toolTip");
201 static constexpr auto whatsThisAttribute = QLatin1StringView("whatsThis");
202 static constexpr auto flagsAttribute = QLatin1StringView("flags");
203 static constexpr auto iconAttribute = QLatin1StringView("icon");
204 static constexpr auto textAttribute = QLatin1StringView("text") ;
205
206 using RoleNName = std::pair<Qt::ItemDataRole, QString>;
209
210 // first.first is primary role, first.second is shadow role.
211 // Shadow is used for either the translation source or the designer
212 // representation of the string value.
213 using TextRoleNName = std::pair<std::pair<Qt::ItemDataRole, Qt::ItemDataRole>, QString>;
215 QHash<QString, std::pair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash;
216};
217#ifdef QFORMINTERNAL_NAMESPACE
218}
219#endif
220
221QT_END_NAMESPACE
222
223#endif // ABSTRACTFORMBUILDERPRIVATE_H
friend class QWidget
Definition qpainter.h:432
\inmodule QtSql
\inmodule QtCore
Definition qvariant.h:68
void uiLibWarning(const QString &message)
Combined button and popup list for selecting options.
static bool isOfType(const QMetaObject *what, const QMetaObject *type)
static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop)
static QMetaEnum fontWeightMetaEnum()
DomProperty * variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *meta, const QString &pname, const QVariant &v)
static QString flagsValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
static QString msgCannotWriteProperty(const QString &pname, const QVariant &v)
static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
static QString enumPrefix(QMetaEnum metaEnum)
static bool supportsQualifiedEnums(const QVersionNumber &qtVersion)
QVariant domPropertyToVariant(QAbstractFormBuilder *afb, const QMetaObject *meta, const DomProperty *p)
QVariant domPropertyToVariant(const DomProperty *p)
static QString enumValue(QMetaEnum metaEnum, int v, const QVersionNumber &qtVersion)
EnumType enumKeyOfObjectToValue(const char *enumName, const char *key)
QMetaEnum metaEnum(const char *name)
EnumType enumKeysToValue(const QMetaEnum &metaEnum, const char *keys, const EnumType *=nullptr)
EnumType enumKeyToValue(const QMetaEnum &metaEnum, const char *key, const EnumType *=nullptr)
static constexpr auto toolTipAttribute
static constexpr auto flagsAttribute
static constexpr auto whatsThisAttribute
static constexpr auto titleAttribute
static constexpr auto labelAttribute
static constexpr auto iconAttribute
static constexpr auto textAttribute
QList< TextRoleNName > itemTextRoles
QHash< QString, Qt::ItemDataRole > treeItemRoleHash
static const QFormBuilderStrings & instance()
QList< RoleNName > itemRoles
#define QDESIGNER_UILIB_IMPORT
Definition ui4.h:29
#define QDESIGNER_UILIB_EXPORT
Definition ui4.h:36