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
driver.h
Go to the documentation of this file.
1// Copyright (C) 2016 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
5#ifndef DRIVER_H
6#define DRIVER_H
7
8#include "option.h"
9#include <qhash.h>
10#include <qstring.h>
11#include <qstringlist.h>
12#include <qtextstream.h>
13
15
16class QTextStream;
17class DomUI;
18class DomWidget;
19class DomSpacer;
20class DomLayout;
21class DomLayoutItem;
22class DomActionGroup;
23class DomAction;
24class DomButtonGroup;
25
26class Driver
27{
29public:
30 Driver();
31 virtual ~Driver();
32
33 // tools
34 bool printDependencies(const QString &fileName);
35 bool uic(const QString &fileName, QTextStream *output = nullptr);
36 bool uic(const QString &fileName, DomUI *ui, QTextStream *output = nullptr);
37
38 // configuration
39 inline QTextStream &output() const { return *m_output; }
40 inline Option &option() { return m_option; }
41
42 // utils
43 static QString headerFileName(const QString &fileName);
44 QString headerFileName() const;
45
46 static QString normalizedName(const QString &name);
47 static QString qtify(const QString &name);
48 QString unique(const QString &instanceName=QString(),
49 const QString &className=QString());
50
51 // symbol table
52 QString findOrInsertWidget(const DomWidget *ui_widget);
53 QString findOrInsertSpacer(const DomSpacer *ui_spacer);
54 QString findOrInsertLayout(const DomLayout *ui_layout);
55 QString findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem);
56 QString findOrInsertName(const QString &name);
57 QString findOrInsertActionGroup(const DomActionGroup *ui_group);
58 QString findOrInsertAction(const DomAction *ui_action);
59 QString findOrInsertButtonGroup(const DomButtonGroup *ui_group);
60 // Find a group by its non-uniqified name
61 const DomButtonGroup *findButtonGroup(const QString &attributeName) const;
62
63 const DomWidget *widgetByName(const QString &attributeName) const;
64 QString widgetVariableName(const QString &attributeName) const;
65 const DomActionGroup *actionGroupByName(const QString &attributeName) const;
66 const DomAction *actionByName(const QString &attributeName) const;
67
68 bool useIdBasedTranslations() const { return m_idBasedTranslations; }
69 void setUseIdBasedTranslations(bool u) { m_idBasedTranslations = u; }
70
71private:
72 template <class DomClass> using DomObjectHash = QHash<const DomClass *, QString>;
73 template <class DomClass> using DomObjectHashConstIt =
75
76 template <class DomClass>
77 DomObjectHashConstIt<DomClass> findByAttributeNameIt(const DomObjectHash<DomClass> &domHash,
78 const QString &name) const;
79 template <class DomClass>
80 const DomClass *findByAttributeName(const DomObjectHash<DomClass> &domHash,
81 const QString &name) const;
82 template <class DomClass>
83 QString findOrInsert(DomObjectHash<DomClass> *domHash, const DomClass *dom, const QString &className,
84 bool isMember = true);
85
86 Option m_option;
87 QTextStream m_stdout;
88 QTextStream *m_output;
89
90 // symbol tables
91 DomObjectHash<DomWidget> m_widgets;
92 DomObjectHash<DomSpacer> m_spacers;
93 DomObjectHash<DomLayout> m_layouts;
94 DomObjectHash<DomActionGroup> m_actionGroups;
95 DomObjectHash<DomButtonGroup> m_buttonGroups;
96 DomObjectHash<DomAction> m_actions;
97 QHash<QString, bool> m_nameRepository;
98 bool m_idBasedTranslations = false;
99};
100
101QT_END_NAMESPACE
102
103#endif // DRIVER_H
void acceptUI(DomUI *node) override
void acceptCustomWidgets(DomCustomWidgets *node) override
void acceptCustomWidget(DomCustomWidget *node) override
void acceptUI(DomUI *node) override
void acceptWidget(DomWidget *node) override
QStringList connections() const
bool uic(const QString &fileName, QTextStream *output=nullptr)
Definition driver.cpp:246
QTextStream & output() const
Definition driver.h:39
void setUseIdBasedTranslations(bool u)
Definition driver.h:69
const DomAction * actionByName(const QString &attributeName) const
Definition driver.cpp:306
QString widgetVariableName(const QString &attributeName) const
Definition driver.cpp:295
static QString qtify(const QString &name)
Definition driver.cpp:167
const DomActionGroup * actionGroupByName(const QString &attributeName) const
Definition driver.cpp:301
QString unique(const QString &instanceName=QString(), const QString &className=QString())
Definition driver.cpp:137
QString findOrInsertButtonGroup(const DomButtonGroup *ui_group)
Definition driver.cpp:111
static QString normalizedName(const QString &name)
Definition driver.cpp:128
bool useIdBasedTranslations() const
Definition driver.h:68
Option & option()
Definition driver.h:40
QString findOrInsertWidget(const DomWidget *ui_widget)
Definition driver.cpp:66
const DomWidget * widgetByName(const QString &attributeName) const
Definition driver.cpp:290
QString findOrInsertActionGroup(const DomActionGroup *ui_group)
Definition driver.cpp:101
bool uic(const QString &fileName, DomUI *ui, QTextStream *output=nullptr)
Definition driver.cpp:229
static QString headerFileName(const QString &fileName)
Definition driver.cpp:197
QString findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem)
Definition driver.cpp:83
virtual ~Driver()
const DomButtonGroup * findButtonGroup(const QString &attributeName) const
Definition driver.cpp:117
QString headerFileName() const
Definition driver.cpp:185
QString findOrInsertAction(const DomAction *ui_action)
Definition driver.cpp:106
QString findOrInsertLayout(const DomLayout *ui_layout)
Definition driver.cpp:78
QString findOrInsertSpacer(const DomSpacer *ui_spacer)
Definition driver.cpp:73
QString findOrInsertName(const QString &name)
Definition driver.cpp:123
bool printDependencies(const QString &fileName)
Definition driver.cpp:219
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
Definition qfile.h:71
\inmodule QtCore
Definition qhash.h:844
Definition qlist.h:82
Definition uic.h:31
bool printDependencies()
Definition uic.cpp:37
bool isButton(const QString &className) const
Definition uic.cpp:301
~Uic()
QString pixmapFunction() const
Definition uic.h:48
QTextStream & output()
Definition uic.h:42
bool write(QIODevice *in)
Definition uic.cpp:192
const DatabaseInfo * databaseInfo() const
Definition uic.h:54
const CustomWidgetsInfo * customWidgetsInfo() const
Definition uic.h:57
bool write(DomUI *ui)
Definition uic.cpp:221
bool isMenu(const QString &className) const
Definition uic.cpp:323
void setPixmapFunction(const QString &f)
Definition uic.h:51
bool isContainer(const QString &className) const
Definition uic.cpp:311
const Option & option() const
Definition uic.h:45
Driver * driver() const
Definition uic.h:39
Language
Definition language.h:13
Combined button and popup list for selecting options.
void setLanguage(Language)
Definition language.cpp:21
static QString pythonRoot(const QString &pythonPath, const QString &uiFileIn)
Definition main.cpp:26
static const char pythonPathVar[]
Definition main.cpp:23
int runUic(int argc, char *argv[])
Definition main.cpp:53
int main(int argc, char *argv[])
[ctor_close]
QString outputFile
Definition option.h:37
unsigned int headerProtection
Definition option.h:21
unsigned int rcPrefix
Definition option.h:33
unsigned int idBased
Definition option.h:29
QString pythonRoot
Definition option.h:44
unsigned int forceMemberFnPtrConnectionSyntax
Definition option.h:30
QString includeFile
Definition option.h:43
unsigned int implicitIncludes
Definition option.h:28
unsigned int forceStringConnectionSyntax
Definition option.h:31
QString indent
Definition option.h:39
QString postfix
Definition option.h:41
QString messagePrefix() const
Definition option.h:66
QString qrcOutputFile
Definition option.h:38
unsigned int useStarImports
Definition option.h:32
unsigned int dependencies
Definition option.h:26
QString translateFunction
Definition option.h:42
unsigned int generateImplemetation
Definition option.h:23
PythonResourceImport
Definition option.h:15
unsigned int limitXPM_LineLength
Definition option.h:27
unsigned int generateNamespace
Definition option.h:24
unsigned int qtNamespace
Definition option.h:34
PythonResourceImport pythonResourceImport
Definition option.h:46
QString prefix
Definition option.h:40
Option()
Definition option.h:48
QString inputFile
Definition option.h:36
unsigned int copyrightHeader
Definition option.h:22
unsigned int autoConnection
Definition option.h:25
virtual void acceptAction(DomAction *action)
virtual void acceptLayoutDefault(DomLayoutDefault *layoutDefault)
virtual void acceptDate(DomDate *date)
virtual void acceptActionGroup(DomActionGroup *actionGroup)
virtual void acceptLayoutFunction(DomLayoutFunction *layoutFunction)
virtual void acceptButtonGroup(const DomButtonGroup *buttonGroup)
QList< DomWidget * > DomWidgets
Definition treewalker.h:83
virtual void acceptConnection(DomConnection *connection)
virtual void acceptRect(DomRect *rect)
virtual void acceptProperty(DomProperty *property)
virtual void acceptLayoutItem(DomLayoutItem *layoutItem)
virtual void acceptIncludes(DomIncludes *includes)
virtual void acceptFont(DomFont *font)
virtual void acceptDateTime(DomDateTime *dateTime)
virtual void acceptInclude(DomInclude *incl)
virtual void acceptSpacer(DomSpacer *spacer)
virtual void acceptCustomWidgets(DomCustomWidgets *customWidgets)
virtual void acceptCustomWidget(DomCustomWidget *customWidget)
virtual void acceptColor(DomColor *color)
virtual void acceptColorGroup(DomColorGroup *colorGroup)
virtual void acceptTabStops(DomTabStops *tabStops)
virtual void acceptConnectionHint(DomConnectionHint *connectionHint)
virtual void acceptPalette(DomPalette *palette)
virtual ~TreeWalker()=default
virtual void acceptSize(DomSize *size)
virtual void acceptActionRef(DomActionRef *actionRef)
virtual void acceptPoint(DomPoint *point)
virtual void acceptTime(DomTime *time)
virtual void acceptSizePolicy(DomSizePolicy *sizePolicy)
virtual void acceptWidget(DomWidget *widget)
virtual void acceptConnectionHints(DomConnectionHints *connectionHints)
virtual void acceptUI(DomUI *ui)
virtual void acceptButtonGroups(const DomButtonGroups *buttonGroups)
virtual void acceptConnections(DomConnections *connections)
virtual void acceptLayout(DomLayout *layout)