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
4#ifndef DRIVER_H
5#define DRIVER_H
6
7#include "option.h"
8#include <qhash.h>
9#include <qstring.h>
10#include <qstringlist.h>
11#include <qtextstream.h>
12
14
15class QTextStream;
16class DomUI;
17class DomWidget;
18class DomSpacer;
19class DomLayout;
20class DomLayoutItem;
21class DomActionGroup;
22class DomAction;
23class DomButtonGroup;
24
25class Driver
26{
28public:
29 Driver();
30 virtual ~Driver();
31
32 // tools
33 bool printDependencies(const QString &fileName);
34 bool uic(const QString &fileName, QTextStream *output = nullptr);
35 bool uic(const QString &fileName, DomUI *ui, QTextStream *output = nullptr);
36
37 // configuration
38 inline QTextStream &output() const { return *m_output; }
39 inline Option &option() { return m_option; }
40
41 // utils
42 static QString headerFileName(const QString &fileName);
43 QString headerFileName() const;
44
45 static QString normalizedName(const QString &name);
46 static QString qtify(const QString &name);
47 QString unique(const QString &instanceName=QString(),
48 const QString &className=QString());
49
50 // symbol table
51 QString findOrInsertWidget(const DomWidget *ui_widget);
52 QString findOrInsertSpacer(const DomSpacer *ui_spacer);
53 QString findOrInsertLayout(const DomLayout *ui_layout);
54 QString findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem);
55 QString findOrInsertName(const QString &name);
56 QString findOrInsertActionGroup(const DomActionGroup *ui_group);
57 QString findOrInsertAction(const DomAction *ui_action);
58 QString findOrInsertButtonGroup(const DomButtonGroup *ui_group);
59 // Find a group by its non-uniqified name
60 const DomButtonGroup *findButtonGroup(const QString &attributeName) const;
61
62 const DomWidget *widgetByName(const QString &attributeName) const;
63 QString widgetVariableName(const QString &attributeName) const;
64 const DomActionGroup *actionGroupByName(const QString &attributeName) const;
65 const DomAction *actionByName(const QString &attributeName) const;
66
67 bool useIdBasedTranslations() const { return m_idBasedTranslations; }
68 void setUseIdBasedTranslations(bool u) { m_idBasedTranslations = u; }
69
70private:
71 template <class DomClass> using DomObjectHash = QHash<const DomClass *, QString>;
72 template <class DomClass> using DomObjectHashConstIt =
74
75 template <class DomClass>
76 DomObjectHashConstIt<DomClass> findByAttributeNameIt(const DomObjectHash<DomClass> &domHash,
77 const QString &name) const;
78 template <class DomClass>
79 const DomClass *findByAttributeName(const DomObjectHash<DomClass> &domHash,
80 const QString &name) const;
81 template <class DomClass>
82 QString findOrInsert(DomObjectHash<DomClass> *domHash, const DomClass *dom, const QString &className,
83 bool isMember = true);
84
85 Option m_option;
86 QTextStream m_stdout;
87 QTextStream *m_output;
88
89 // symbol tables
90 DomObjectHash<DomWidget> m_widgets;
91 DomObjectHash<DomSpacer> m_spacers;
92 DomObjectHash<DomLayout> m_layouts;
93 DomObjectHash<DomActionGroup> m_actionGroups;
94 DomObjectHash<DomButtonGroup> m_buttonGroups;
95 DomObjectHash<DomAction> m_actions;
96 QHash<QString, bool> m_nameRepository;
97 bool m_idBasedTranslations = false;
98};
99
100QT_END_NAMESPACE
101
102#endif // DRIVER_H
int main(int argc, char *argv[])
[2]
Definition buffer.cpp:77
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:245
QTextStream & output() const
Definition driver.h:38
void setUseIdBasedTranslations(bool u)
Definition driver.h:68
const DomAction * actionByName(const QString &attributeName) const
Definition driver.cpp:305
QString widgetVariableName(const QString &attributeName) const
Definition driver.cpp:294
static QString qtify(const QString &name)
Definition driver.cpp:166
const DomActionGroup * actionGroupByName(const QString &attributeName) const
Definition driver.cpp:300
QString unique(const QString &instanceName=QString(), const QString &className=QString())
Definition driver.cpp:136
QString findOrInsertButtonGroup(const DomButtonGroup *ui_group)
Definition driver.cpp:110
static QString normalizedName(const QString &name)
Definition driver.cpp:127
bool useIdBasedTranslations() const
Definition driver.h:67
Option & option()
Definition driver.h:39
QString findOrInsertWidget(const DomWidget *ui_widget)
Definition driver.cpp:65
const DomWidget * widgetByName(const QString &attributeName) const
Definition driver.cpp:289
QString findOrInsertActionGroup(const DomActionGroup *ui_group)
Definition driver.cpp:100
bool uic(const QString &fileName, DomUI *ui, QTextStream *output=nullptr)
Definition driver.cpp:228
static QString headerFileName(const QString &fileName)
Definition driver.cpp:196
QString findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem)
Definition driver.cpp:82
virtual ~Driver()
const DomButtonGroup * findButtonGroup(const QString &attributeName) const
Definition driver.cpp:116
QString headerFileName() const
Definition driver.cpp:184
QString findOrInsertAction(const DomAction *ui_action)
Definition driver.cpp:105
QString findOrInsertLayout(const DomLayout *ui_layout)
Definition driver.cpp:77
QString findOrInsertSpacer(const DomSpacer *ui_spacer)
Definition driver.cpp:72
QString findOrInsertName(const QString &name)
Definition driver.cpp:122
bool printDependencies(const QString &fileName)
Definition driver.cpp:218
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
\inmodule QtCore
Definition qfile.h:95
\inmodule QtCore
Definition qhash.h:837
Definition qlist.h:80
Definition uic.h:30
bool printDependencies()
Definition uic.cpp:36
bool isButton(const QString &className) const
Definition uic.cpp:292
~Uic()
QString pixmapFunction() const
Definition uic.h:47
QTextStream & output()
Definition uic.h:41
bool write(QIODevice *in)
Definition uic.cpp:191
const DatabaseInfo * databaseInfo() const
Definition uic.h:53
const CustomWidgetsInfo * customWidgetsInfo() const
Definition uic.h:56
bool write(DomUI *ui)
Definition uic.cpp:220
bool isMenu(const QString &className) const
Definition uic.cpp:314
void setPixmapFunction(const QString &f)
Definition uic.h:50
bool isContainer(const QString &className) const
Definition uic.cpp:302
const Option & option() const
Definition uic.h:44
Driver * driver() const
Definition uic.h:38
Language
Definition language.h:12
Combined button and popup list for selecting options.
void setLanguage(Language l)
Definition language.cpp:18
static QString pythonRoot(const QString &pythonPath, const QString &uiFileIn)
Definition main.cpp:25
static const char pythonPathVar[]
Definition main.cpp:22
int runUic(int argc, char *argv[])
Definition main.cpp:52
QString outputFile
Definition option.h:36
unsigned int headerProtection
Definition option.h:20
unsigned int rcPrefix
Definition option.h:32
unsigned int idBased
Definition option.h:28
QString pythonRoot
Definition option.h:43
unsigned int forceMemberFnPtrConnectionSyntax
Definition option.h:29
QString includeFile
Definition option.h:42
unsigned int implicitIncludes
Definition option.h:27
unsigned int forceStringConnectionSyntax
Definition option.h:30
QString indent
Definition option.h:38
QString postfix
Definition option.h:40
QString messagePrefix() const
Definition option.h:65
QString qrcOutputFile
Definition option.h:37
unsigned int useStarImports
Definition option.h:31
unsigned int dependencies
Definition option.h:25
QString translateFunction
Definition option.h:41
unsigned int generateImplemetation
Definition option.h:22
PythonResourceImport
Definition option.h:14
unsigned int limitXPM_LineLength
Definition option.h:26
unsigned int generateNamespace
Definition option.h:23
unsigned int qtNamespace
Definition option.h:33
PythonResourceImport pythonResourceImport
Definition option.h:45
QString prefix
Definition option.h:39
Option()
Definition option.h:47
QString inputFile
Definition option.h:35
unsigned int copyrightHeader
Definition option.h:21
unsigned int autoConnection
Definition option.h:24
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)
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)
Definition treewalker.cpp:9
virtual void acceptButtonGroups(const DomButtonGroups *buttonGroups)
virtual void acceptConnections(DomConnections *connections)
virtual void acceptLayout(DomLayout *layout)