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
writeincludesbase.cpp
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3// Qt-Security score:insignificant reason:build-tool
4
6#include "ui4.h"
7#include <uic.h>
8#include <databaseinfo.h>
9
11
13#define QT_CLASS_LIB(klass, module, header) { #klass, #module, #header },
14#include "qclass_lib_map.h"
15#undef QT_CLASS_LIB
16};
17
19{
20 const ClassInfoEntry *classLibEnd = qclass_lib_map + sizeof(qclass_lib_map)/sizeof(ClassInfoEntry);
21 return {qclass_lib_map, classLibEnd};
22}
23
24// Base class for implementing a class that determines includes and equivalents
25// in other languages by implementing doAdd(). It makes sure all dependent
26// classes are known.
28{
29}
30
31void WriteIncludesBase::acceptUI(DomUI *node)
32{
33 m_knownClasses.clear();
34 m_laidOut = false;
35
36 if (node->elementIncludes())
37 acceptIncludes(node->elementIncludes());
38
39 // Populate known custom widgets first
40 if (node->elementCustomWidgets())
41 TreeWalker::acceptCustomWidgets(node->elementCustomWidgets());
42
43 add(QStringLiteral("QApplication"));
44 add(QStringLiteral("QVariant"));
45
46 if (node->elementButtonGroups())
47 add(QStringLiteral("QButtonGroup"));
48
50}
51
52void WriteIncludesBase::acceptWidget(DomWidget *node)
53{
54 add(node->attributeClass());
56}
57
58void WriteIncludesBase::acceptLayout(DomLayout *node)
59{
60 add(node->attributeClass());
61 m_laidOut = true;
63}
64
65void WriteIncludesBase::acceptSpacer(DomSpacer *node)
66{
67 add(QStringLiteral("QSpacerItem"));
69}
70
71void WriteIncludesBase::acceptProperty(DomProperty *node)
72{
73 if (node->kind() == DomProperty::Date)
74 add(QStringLiteral("QDate"));
75 if (node->kind() == DomProperty::Locale)
76 add(QStringLiteral("QLocale"));
77 if (node->kind() == DomProperty::IconSet)
78 add(QStringLiteral("QIcon"));
80}
81
82void WriteIncludesBase::add(const QString &className, const DomCustomWidget *dcw)
83{
84 if (className.isEmpty() || m_knownClasses.contains(className))
85 return;
86
87 m_knownClasses.insert(className);
88
90 static const QStringList treeViewsWithHeaders = {
91 QStringLiteral("QTreeView"), QStringLiteral("QTreeWidget"),
92 QStringLiteral("QTableView"), QStringLiteral("QTableWidget")
93 };
94 if (cwi->extendsOneOf(className, treeViewsWithHeaders))
95 add(QStringLiteral("QHeaderView"));
96
97 if (!m_laidOut && cwi->extends(className, "QToolBox"))
98 add(QStringLiteral("QLayout")); // spacing property of QToolBox)
99
100 if (className == QStringLiteral("Line")) { // ### hmm, deprecate me!
101 add(QStringLiteral("QFrame"));
102 return;
103 }
104
105 if (cwi->extends(className, "QDialogButtonBox"))
106 add(QStringLiteral("QAbstractButton")); // for signal "clicked(QAbstractButton*)"
107
108 doAdd(className, dcw);
109}
110
111void WriteIncludesBase::acceptCustomWidget(DomCustomWidget *node)
112{
113 const QString className = node->elementClass();
114 if (!className.isEmpty())
115 add(className, node);
116}
117
118void WriteIncludesBase::acceptActionGroup(DomActionGroup *node)
119{
120 add(QStringLiteral("QActionGroup"));
122}
123
124void WriteIncludesBase::acceptAction(DomAction *node)
125{
126 add(QStringLiteral("QAction"));
128}
129
130void WriteIncludesBase::acceptActionRef(DomActionRef *node)
131{
132 add(QStringLiteral("QAction"));
134}
135
136QT_END_NAMESPACE
Definition uic.h:31
const CustomWidgetsInfo * customWidgetsInfo() const
Definition uic.h:57
void acceptActionRef(DomActionRef *node) override
void acceptSpacer(DomSpacer *node) override
void acceptCustomWidget(DomCustomWidget *node) override
void acceptUI(DomUI *node) override
void acceptLayout(DomLayout *node) override
void acceptWidget(DomWidget *node) override
void acceptActionGroup(DomActionGroup *node) override
void acceptAction(DomAction *node) override
void acceptProperty(DomProperty *node) override
Combined button and popup list for selecting options.
#define QStringLiteral(str)
Definition qstring.h:1847
virtual void acceptAction(DomAction *action)
virtual void acceptActionGroup(DomActionGroup *actionGroup)
virtual void acceptProperty(DomProperty *property)
virtual void acceptIncludes(DomIncludes *includes)
virtual void acceptSpacer(DomSpacer *spacer)
virtual void acceptCustomWidgets(DomCustomWidgets *customWidgets)
virtual void acceptActionRef(DomActionRef *actionRef)
virtual void acceptWidget(DomWidget *widget)
virtual void acceptUI(DomUI *ui)
virtual void acceptLayout(DomLayout *layout)
ClassInfoEntries classInfoEntries()
static QT_BEGIN_NAMESPACE const ClassInfoEntry qclass_lib_map[]