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
4#ifndef ABSTRACTFORMBUILDERPRIVATE_H
5#define ABSTRACTFORMBUILDERPRIVATE_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "uilib_global.h"
19
20#include <QtCore/qhash.h>
21#include <QtCore/qpointer.h>
22#include <QtCore/qstringlist.h>
23#include <QtCore/qmap.h>
24#include <QtCore/qdir.h>
25#include <QtGui/qpalette.h>
26
27QT_BEGIN_NAMESPACE
28
29class QDesignerCustomWidgetInterface;
30class QObject;
31class QVariant;
32class QWidget;
33class QObject;
34class QLabel;
35class QButtonGroup;
36class QBoxLayout;
37class QGridLayout;
38class QAction;
39class QActionGroup;
40
41#ifdef QFORMINTERNAL_NAMESPACE
42namespace QFormInternal
43{
44#endif
45
46class DomBrush;
47class DomButtonGroups;
48class DomButtonGroup;
49class DomColorGroup;
50class DomCustomWidget;
51class DomPalette;
52class DomProperty;
53class DomUI;
54
55class QAbstractFormBuilder;
56class QResourceBuilder;
57class QTextBuilder;
58
60{
61public:
62 Q_DISABLE_COPY_MOVE(QFormBuilderExtra);
63
64 QFormBuilderExtra();
65 ~QFormBuilderExtra();
66
67 struct CustomWidgetData {
68 CustomWidgetData();
69 explicit CustomWidgetData(const DomCustomWidget *dc);
70
71 QString addPageMethod;
72 QString script;
73 QString baseClass;
74 bool isContainer = false;
75 };
76
77 void clear();
78
79 DomUI *readUi(QIODevice *dev);
80 static QString msgInvalidUiFile();
81
82 bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value);
83
84 enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly };
85
86 void applyInternalProperties() const;
87 static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label);
88
89 const QPointer<QWidget> &parentWidget() const;
90 bool parentWidgetIsSet() const;
91 void setParentWidget(const QPointer<QWidget> &w);
92
93 void setProcessingLayoutWidget(bool processing);
94 bool processingLayoutWidget() const;
95
96 void setResourceBuilder(QResourceBuilder *builder);
97 QResourceBuilder *resourceBuilder() const;
98
99 void setTextBuilder(QTextBuilder *builder);
100 QTextBuilder *textBuilder() const;
101
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;
106
107 // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group
108 void registerButtonGroups(const DomButtonGroups *groups);
109
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; }
114
115 static void getLayoutMargins(const QList<DomProperty*> &properties,
116 int *left, int *top, int *right, int *bottom);
117
118 // return stretch as a comma-separated list
119 static QString boxLayoutStretch(const QBoxLayout*);
120 // apply stretch
121 static bool setBoxLayoutStretch(const QString &, QBoxLayout*);
122 static void clearBoxLayoutStretch(QBoxLayout*);
123
124 static QString gridLayoutRowStretch(const QGridLayout *);
125 static bool setGridLayoutRowStretch(const QString &, QGridLayout *);
126 static void clearGridLayoutRowStretch(QGridLayout *);
127
128 static QString gridLayoutColumnStretch(const QGridLayout *);
129 static bool setGridLayoutColumnStretch(const QString &, QGridLayout *);
130 static void clearGridLayoutColumnStretch(QGridLayout *);
131
132 // return the row/column sizes as comma-separated lists
133 static QString gridLayoutRowMinimumHeight(const QGridLayout *);
134 static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *);
135 static void clearGridLayoutRowMinimumHeight(QGridLayout *);
136
137 static QString gridLayoutColumnMinimumWidth(const QGridLayout *);
138 static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *);
139 static void clearGridLayoutColumnMinimumWidth(QGridLayout *);
140
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);
150
151 static DomProperty *propertyByName(const QList<DomProperty*> &properties,
152 QAnyStringView needle);
153
154 QStringList m_pluginPaths;
155 QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets;
156
157 QHash<QObject*, bool> m_laidout;
158 QHash<QString, QAction*> m_actions;
159 QHash<QString, QActionGroup*> m_actionGroups;
160 bool m_fullyQualifiedEnums = true;
161 int m_defaultMargin;
162 int m_defaultSpacing;
163 QDir m_workingDirectory;
164 QString m_errorString;
165 QString m_language;
166
167private:
168 void clearResourceBuilder();
169 void clearTextBuilder();
170
171 QHash<QLabel *, QString> m_buddies;
172
173 QHash<QString, CustomWidgetData> m_customWidgetDataHash;
174
175 ButtonGroupHash m_buttonGroups;
176
177 bool m_layoutWidget = false;
178 QResourceBuilder *m_resourceBuilder = nullptr;
179 QTextBuilder *m_textBuilder = nullptr;
180
181 QPointer<QWidget> m_parentWidget;
182 bool m_parentWidgetIsSet = false;
183};
184
185void uiLibWarning(const QString &message);
186
187// Struct with static accessor that provides most strings used in the form builder.
189 QFormBuilderStrings();
190
191 static const QFormBuilderStrings &instance();
192
193 static constexpr auto titleAttribute = QLatin1StringView("title");
194 static constexpr auto labelAttribute = QLatin1StringView("label");
195 static constexpr auto toolTipAttribute = QLatin1StringView("toolTip");
196 static constexpr auto whatsThisAttribute = QLatin1StringView("whatsThis");
197 static constexpr auto flagsAttribute = QLatin1StringView("flags");
198 static constexpr auto iconAttribute = QLatin1StringView("icon");
199 static constexpr auto textAttribute = QLatin1StringView("text") ;
200
201 using RoleNName = std::pair<Qt::ItemDataRole, QString>;
204
205 // first.first is primary role, first.second is shadow role.
206 // Shadow is used for either the translation source or the designer
207 // representation of the string value.
208 using TextRoleNName = std::pair<std::pair<Qt::ItemDataRole, Qt::ItemDataRole>, QString>;
210 QHash<QString, std::pair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash;
211};
212#ifdef QFORMINTERNAL_NAMESPACE
213}
214#endif
215
216QT_END_NAMESPACE
217
218#endif // ABSTRACTFORMBUILDERPRIVATE_H
friend class QWidget
Definition qpainter.h:421
\inmodule QtSql
\inmodule QtCore
Definition qvariant.h:65
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 msgCannotWriteProperty(const QString &pname, const QVariant &v)
static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta)
QVariant domPropertyToVariant(QAbstractFormBuilder *afb, const QMetaObject *meta, const DomProperty *p)
QVariant domPropertyToVariant(const DomProperty *p)
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