annotate tools/duic/d/dwriteinitialization.cpp @ 395:d757b8b1ca75

Fixed generation of palettes from Qt Designer files.
author David Nadlinger <code@klickverbot.at>
date Wed, 20 Oct 2010 09:45:59 +0200
parents 4d17d96480db
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
e78566595089 initial import
mandel
parents:
diff changeset
1 /****************************************************************************
e78566595089 initial import
mandel
parents:
diff changeset
2 **
e78566595089 initial import
mandel
parents:
diff changeset
3 ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
e78566595089 initial import
mandel
parents:
diff changeset
4 ** Contact: Qt Software Information (qt-info@nokia.com)
e78566595089 initial import
mandel
parents:
diff changeset
5 **
e78566595089 initial import
mandel
parents:
diff changeset
6 ** This file is part of the tools applications of the Qt Toolkit.
e78566595089 initial import
mandel
parents:
diff changeset
7 **
e78566595089 initial import
mandel
parents:
diff changeset
8 ** Commercial Usage
e78566595089 initial import
mandel
parents:
diff changeset
9 ** Licensees holding valid Qt Commercial licenses may use this file in
e78566595089 initial import
mandel
parents:
diff changeset
10 ** accordance with the Qt Commercial License Agreement provided with the
e78566595089 initial import
mandel
parents:
diff changeset
11 ** Software or, alternatively, in accordance with the terms contained in
e78566595089 initial import
mandel
parents:
diff changeset
12 ** a written agreement between you and Nokia.
e78566595089 initial import
mandel
parents:
diff changeset
13 **
e78566595089 initial import
mandel
parents:
diff changeset
14 **
e78566595089 initial import
mandel
parents:
diff changeset
15 ** GNU General Public License Usage
e78566595089 initial import
mandel
parents:
diff changeset
16 ** Alternatively, this file may be used under the terms of the GNU
e78566595089 initial import
mandel
parents:
diff changeset
17 ** General Public License versions 2.0 or 3.0 as published by the Free
e78566595089 initial import
mandel
parents:
diff changeset
18 ** Software Foundation and appearing in the file LICENSE.GPL included in
e78566595089 initial import
mandel
parents:
diff changeset
19 ** the packaging of this file. Please review the following information
e78566595089 initial import
mandel
parents:
diff changeset
20 ** to ensure GNU General Public Licensing requirements will be met:
e78566595089 initial import
mandel
parents:
diff changeset
21 ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
e78566595089 initial import
mandel
parents:
diff changeset
22 ** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
e78566595089 initial import
mandel
parents:
diff changeset
23 ** exception, Nokia gives you certain additional rights. These rights
e78566595089 initial import
mandel
parents:
diff changeset
24 ** are described in the Nokia Qt GPL Exception version 1.3, included in
e78566595089 initial import
mandel
parents:
diff changeset
25 ** the file GPL_EXCEPTION.txt in this package.
e78566595089 initial import
mandel
parents:
diff changeset
26 **
e78566595089 initial import
mandel
parents:
diff changeset
27 ** Qt for Windows(R) Licensees
e78566595089 initial import
mandel
parents:
diff changeset
28 ** As a special exception, Nokia, as the sole copyright holder for Qt
e78566595089 initial import
mandel
parents:
diff changeset
29 ** Designer, grants users of the Qt/Eclipse Integration plug-in the
e78566595089 initial import
mandel
parents:
diff changeset
30 ** right for the Qt/Eclipse Integration to link to functionality
e78566595089 initial import
mandel
parents:
diff changeset
31 ** provided by Qt Designer and its related libraries.
e78566595089 initial import
mandel
parents:
diff changeset
32 **
e78566595089 initial import
mandel
parents:
diff changeset
33 ** If you are unsure which license is appropriate for your use, please
e78566595089 initial import
mandel
parents:
diff changeset
34 ** contact the sales department at qt-sales@nokia.com.
e78566595089 initial import
mandel
parents:
diff changeset
35 **
e78566595089 initial import
mandel
parents:
diff changeset
36 ****************************************************************************/
e78566595089 initial import
mandel
parents:
diff changeset
37
e78566595089 initial import
mandel
parents:
diff changeset
38 #include "dwriteinitialization.h"
e78566595089 initial import
mandel
parents:
diff changeset
39 #include "dwriteiconinitialization.h"
e78566595089 initial import
mandel
parents:
diff changeset
40 #include "driver.h"
e78566595089 initial import
mandel
parents:
diff changeset
41 #include "ui4.h"
e78566595089 initial import
mandel
parents:
diff changeset
42 #include "utils.h"
e78566595089 initial import
mandel
parents:
diff changeset
43 #include "uic.h"
e78566595089 initial import
mandel
parents:
diff changeset
44 #include "databaseinfo.h"
e78566595089 initial import
mandel
parents:
diff changeset
45 #include "globaldefs.h"
e78566595089 initial import
mandel
parents:
diff changeset
46
e78566595089 initial import
mandel
parents:
diff changeset
47 #include <QtCore/QTextStream>
e78566595089 initial import
mandel
parents:
diff changeset
48 #include <QtCore/QDebug>
e78566595089 initial import
mandel
parents:
diff changeset
49
e78566595089 initial import
mandel
parents:
diff changeset
50 QT_BEGIN_NAMESPACE
e78566595089 initial import
mandel
parents:
diff changeset
51
e78566595089 initial import
mandel
parents:
diff changeset
52 namespace {
e78566595089 initial import
mandel
parents:
diff changeset
53 // Fixup an enumeration name from class Qt.
e78566595089 initial import
mandel
parents:
diff changeset
54 // They are currently stored as "BottomToolBarArea" instead of "Qt::BottomToolBarArea".
e78566595089 initial import
mandel
parents:
diff changeset
55 // due to MO issues. This might be fixed in the future.
e78566595089 initial import
mandel
parents:
diff changeset
56 void fixQtEnumerationName(QString& name) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
57 static const QLatin1String prefix("Qt.");
1
e78566595089 initial import
mandel
parents:
diff changeset
58 if (name.indexOf(prefix) != 0)
e78566595089 initial import
mandel
parents:
diff changeset
59 name.prepend(prefix);
e78566595089 initial import
mandel
parents:
diff changeset
60 }
e78566595089 initial import
mandel
parents:
diff changeset
61 // figure out the toolbar area of a DOM attrib list.
e78566595089 initial import
mandel
parents:
diff changeset
62 // By legacy, it is stored as an integer. As of 4.3.0, it is the enumeration value.
e78566595089 initial import
mandel
parents:
diff changeset
63 QString toolBarAreaStringFromDOMAttributes(const D::WriteInitialization::DomPropertyMap &attributes) {
e78566595089 initial import
mandel
parents:
diff changeset
64 const DomProperty *pstyle = attributes.value(QLatin1String("toolBarArea"));
e78566595089 initial import
mandel
parents:
diff changeset
65 if (!pstyle)
e78566595089 initial import
mandel
parents:
diff changeset
66 return QString();
e78566595089 initial import
mandel
parents:
diff changeset
67
e78566595089 initial import
mandel
parents:
diff changeset
68 switch (pstyle->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
69 case DomProperty::Number: {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
70 QString area = QLatin1String("(cast(Qt.ToolBarArea)(");
1
e78566595089 initial import
mandel
parents:
diff changeset
71 area += QString::number(pstyle->elementNumber());
e78566595089 initial import
mandel
parents:
diff changeset
72 area += QLatin1String(")), ");
e78566595089 initial import
mandel
parents:
diff changeset
73 return area;
e78566595089 initial import
mandel
parents:
diff changeset
74 }
e78566595089 initial import
mandel
parents:
diff changeset
75 case DomProperty::Enum: {
e78566595089 initial import
mandel
parents:
diff changeset
76 QString area = pstyle->elementEnum();
e78566595089 initial import
mandel
parents:
diff changeset
77 fixQtEnumerationName(area);
e78566595089 initial import
mandel
parents:
diff changeset
78 area += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
79 return area;
e78566595089 initial import
mandel
parents:
diff changeset
80 }
e78566595089 initial import
mandel
parents:
diff changeset
81 default:
e78566595089 initial import
mandel
parents:
diff changeset
82 break;
e78566595089 initial import
mandel
parents:
diff changeset
83 }
e78566595089 initial import
mandel
parents:
diff changeset
84 return QString();
e78566595089 initial import
mandel
parents:
diff changeset
85 }
e78566595089 initial import
mandel
parents:
diff changeset
86
e78566595089 initial import
mandel
parents:
diff changeset
87 // Write a statement to create a spacer item.
e78566595089 initial import
mandel
parents:
diff changeset
88 void writeSpacerItem(const DomSpacer *node, QTextStream &output) {
e78566595089 initial import
mandel
parents:
diff changeset
89 const QHash<QString, DomProperty *> properties = propertyMap(node->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
90 output << "new QSpacerItem(";
e78566595089 initial import
mandel
parents:
diff changeset
91
e78566595089 initial import
mandel
parents:
diff changeset
92 if (properties.contains(QLatin1String("sizeHint"))) {
e78566595089 initial import
mandel
parents:
diff changeset
93 const DomSize *sizeHint = properties.value(QLatin1String("sizeHint"))->elementSize();
e78566595089 initial import
mandel
parents:
diff changeset
94 output << sizeHint->elementWidth() << ", " << sizeHint->elementHeight() << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
95 }
e78566595089 initial import
mandel
parents:
diff changeset
96
e78566595089 initial import
mandel
parents:
diff changeset
97 // size type
e78566595089 initial import
mandel
parents:
diff changeset
98 QString sizeType = properties.contains(QLatin1String("sizeType")) ?
e78566595089 initial import
mandel
parents:
diff changeset
99 properties.value(QLatin1String("sizeType"))->elementEnum() :
e78566595089 initial import
mandel
parents:
diff changeset
100 QString::fromLatin1("Expanding");
e78566595089 initial import
mandel
parents:
diff changeset
101
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
102 if (!sizeType.startsWith(QLatin1String("QSizePolicy.")))
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
103 sizeType.prepend(QLatin1String("QSizePolicy."));
1
e78566595089 initial import
mandel
parents:
diff changeset
104 // orientation
e78566595089 initial import
mandel
parents:
diff changeset
105 bool isVspacer = false;
e78566595089 initial import
mandel
parents:
diff changeset
106 if (properties.contains(QLatin1String("orientation"))) {
e78566595089 initial import
mandel
parents:
diff changeset
107 const QString orientation = properties.value(QLatin1String("orientation"))->elementEnum();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
108 if (orientation == QLatin1String("Qt.Vertical") || orientation == QLatin1String("Vertical")) isVspacer = true;
1
e78566595089 initial import
mandel
parents:
diff changeset
109 }
e78566595089 initial import
mandel
parents:
diff changeset
110
e78566595089 initial import
mandel
parents:
diff changeset
111 if (isVspacer)
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
112 output << "QSizePolicy.Minimum, " << sizeType << ')';
1
e78566595089 initial import
mandel
parents:
diff changeset
113 else
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
114 output << sizeType << ", QSizePolicy.Minimum)";
1
e78566595089 initial import
mandel
parents:
diff changeset
115 }
e78566595089 initial import
mandel
parents:
diff changeset
116
e78566595089 initial import
mandel
parents:
diff changeset
117
e78566595089 initial import
mandel
parents:
diff changeset
118 // Helper for implementing comparison functions for integers.
e78566595089 initial import
mandel
parents:
diff changeset
119 int compareInt(int i1, int i2) {
e78566595089 initial import
mandel
parents:
diff changeset
120 if (i1 < i2) return -1;
e78566595089 initial import
mandel
parents:
diff changeset
121 if (i1 > i2) return 1;
e78566595089 initial import
mandel
parents:
diff changeset
122 return 0;
e78566595089 initial import
mandel
parents:
diff changeset
123 }
e78566595089 initial import
mandel
parents:
diff changeset
124
e78566595089 initial import
mandel
parents:
diff changeset
125 // Write object->setFoo(x);
e78566595089 initial import
mandel
parents:
diff changeset
126 template <class Value>
e78566595089 initial import
mandel
parents:
diff changeset
127 void writeSetter(const QString &indent, const QString &varName,const QString &setter, Value v, QTextStream &str) {
e78566595089 initial import
mandel
parents:
diff changeset
128 str << indent << varName << "." << setter << '(' << v << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
129 }
e78566595089 initial import
mandel
parents:
diff changeset
130
e78566595089 initial import
mandel
parents:
diff changeset
131 void writeSetupUIScriptVariableDeclarations(const QString &indent, QTextStream &str) {
e78566595089 initial import
mandel
parents:
diff changeset
132 str << indent << "ScriptContext scriptContext;\n"
e78566595089 initial import
mandel
parents:
diff changeset
133 << indent << "QWidgetList childWidgets;\n";
e78566595089 initial import
mandel
parents:
diff changeset
134 }
e78566595089 initial import
mandel
parents:
diff changeset
135
e78566595089 initial import
mandel
parents:
diff changeset
136 static inline bool isIconFormat44(const DomResourceIcon *i) {
e78566595089 initial import
mandel
parents:
diff changeset
137 return i->hasElementNormalOff() || i->hasElementNormalOn() ||
e78566595089 initial import
mandel
parents:
diff changeset
138 i->hasElementDisabledOff() || i->hasElementDisabledOn() ||
e78566595089 initial import
mandel
parents:
diff changeset
139 i->hasElementActiveOff() || i->hasElementActiveOn() ||
e78566595089 initial import
mandel
parents:
diff changeset
140 i->hasElementSelectedOff() || i->hasElementSelectedOn();
e78566595089 initial import
mandel
parents:
diff changeset
141 }
e78566595089 initial import
mandel
parents:
diff changeset
142
e78566595089 initial import
mandel
parents:
diff changeset
143 // Check on properties. Filter out empty legacy pixmap/icon properties
e78566595089 initial import
mandel
parents:
diff changeset
144 // as Designer pre 4.4 used to remove missing resource references.
e78566595089 initial import
mandel
parents:
diff changeset
145 // This can no longer be handled by the code as we have 'setIcon(QIcon())' as well as 'QIcon icon'
e78566595089 initial import
mandel
parents:
diff changeset
146 static bool checkProperty(const QString &fileName, const DomProperty *p) {
e78566595089 initial import
mandel
parents:
diff changeset
147 switch (p->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
148 case DomProperty::IconSet:
e78566595089 initial import
mandel
parents:
diff changeset
149 if (const DomResourceIcon *dri = p->elementIconSet()) {
e78566595089 initial import
mandel
parents:
diff changeset
150 if (!isIconFormat44(dri)) {
e78566595089 initial import
mandel
parents:
diff changeset
151 if (dri->text().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
152 const QString msg = QString::fromUtf8("%1: An invalid icon property '%2' was encountered.").arg(fileName).arg(p->attributeName());
e78566595089 initial import
mandel
parents:
diff changeset
153 qWarning("%s", qPrintable(msg));
e78566595089 initial import
mandel
parents:
diff changeset
154 return false;
e78566595089 initial import
mandel
parents:
diff changeset
155 }
e78566595089 initial import
mandel
parents:
diff changeset
156 }
e78566595089 initial import
mandel
parents:
diff changeset
157 }
e78566595089 initial import
mandel
parents:
diff changeset
158 break;
e78566595089 initial import
mandel
parents:
diff changeset
159 case DomProperty::Pixmap:
e78566595089 initial import
mandel
parents:
diff changeset
160 if (const DomResourcePixmap *drp = p->elementPixmap())
e78566595089 initial import
mandel
parents:
diff changeset
161 if (drp->text().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
162 const QString msg = QString::fromUtf8("%1: An invalid pixmap property '%2' was encountered.").arg(fileName).arg(p->attributeName());
e78566595089 initial import
mandel
parents:
diff changeset
163 qWarning("%s", qPrintable(msg));
e78566595089 initial import
mandel
parents:
diff changeset
164 return false;
e78566595089 initial import
mandel
parents:
diff changeset
165 }
e78566595089 initial import
mandel
parents:
diff changeset
166 break;
e78566595089 initial import
mandel
parents:
diff changeset
167 default:
e78566595089 initial import
mandel
parents:
diff changeset
168 break;
e78566595089 initial import
mandel
parents:
diff changeset
169 }
e78566595089 initial import
mandel
parents:
diff changeset
170 return true;
e78566595089 initial import
mandel
parents:
diff changeset
171 }
e78566595089 initial import
mandel
parents:
diff changeset
172
84
2edf95ad41e5 fix for #6
eldar
parents: 83
diff changeset
173 inline void openIfndef(QTextStream &str, const QString &symbol) { str << endl << QLatin1String("version(") << symbol << QLatin1String(") {} else {") << endl; }
2edf95ad41e5 fix for #6
eldar
parents: 83
diff changeset
174 inline void closeIfdef(QTextStream &str, const QString &symbol) { str << QLatin1String("} // ") << symbol << endl << endl; }
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
175
1
e78566595089 initial import
mandel
parents:
diff changeset
176 const char *accessibilityDefineC = "QT_NO_ACCESSIBILITY";
e78566595089 initial import
mandel
parents:
diff changeset
177 const char *toolTipDefineC = "QT_NO_TOOLTIP";
e78566595089 initial import
mandel
parents:
diff changeset
178 const char *whatsThisDefineC = "QT_NO_WHATSTHIS";
e78566595089 initial import
mandel
parents:
diff changeset
179 const char *statusTipDefineC = "QT_NO_STATUSTIP";
e78566595089 initial import
mandel
parents:
diff changeset
180 const char *shortcutDefineC = "QT_NO_SHORTCUT";
e78566595089 initial import
mandel
parents:
diff changeset
181 }
e78566595089 initial import
mandel
parents:
diff changeset
182
e78566595089 initial import
mandel
parents:
diff changeset
183 namespace D {
e78566595089 initial import
mandel
parents:
diff changeset
184
e78566595089 initial import
mandel
parents:
diff changeset
185 FontHandle::FontHandle(const DomFont *domFont) :
e78566595089 initial import
mandel
parents:
diff changeset
186 m_domFont(domFont)
e78566595089 initial import
mandel
parents:
diff changeset
187 {
e78566595089 initial import
mandel
parents:
diff changeset
188 }
e78566595089 initial import
mandel
parents:
diff changeset
189
e78566595089 initial import
mandel
parents:
diff changeset
190 int FontHandle::compare(const FontHandle &rhs) const
e78566595089 initial import
mandel
parents:
diff changeset
191 {
e78566595089 initial import
mandel
parents:
diff changeset
192 const QString family = m_domFont->hasElementFamily() ? m_domFont->elementFamily() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
193 const QString rhsFamily = rhs.m_domFont->hasElementFamily() ? rhs.m_domFont->elementFamily() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
194
e78566595089 initial import
mandel
parents:
diff changeset
195 if (const int frc = family.compare(rhsFamily))
e78566595089 initial import
mandel
parents:
diff changeset
196 return frc;
e78566595089 initial import
mandel
parents:
diff changeset
197
e78566595089 initial import
mandel
parents:
diff changeset
198 const int pointSize = m_domFont->hasElementPointSize() ? m_domFont->elementPointSize() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
199 const int rhsPointSize = rhs.m_domFont->hasElementPointSize() ? rhs.m_domFont->elementPointSize() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
200
e78566595089 initial import
mandel
parents:
diff changeset
201 if (const int crc = compareInt(pointSize, rhsPointSize))
e78566595089 initial import
mandel
parents:
diff changeset
202 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
203
e78566595089 initial import
mandel
parents:
diff changeset
204 const int bold = m_domFont->hasElementBold() ? (m_domFont->elementBold() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
205 const int rhsBold = rhs.m_domFont->hasElementBold() ? (rhs.m_domFont->elementBold() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
206 if (const int crc = compareInt(bold, rhsBold))
e78566595089 initial import
mandel
parents:
diff changeset
207 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
208
e78566595089 initial import
mandel
parents:
diff changeset
209 const int italic = m_domFont->hasElementItalic() ? (m_domFont->elementItalic() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
210 const int rhsItalic = rhs.m_domFont->hasElementItalic() ? (rhs.m_domFont->elementItalic() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
211 if (const int crc = compareInt(italic, rhsItalic))
e78566595089 initial import
mandel
parents:
diff changeset
212 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
213
e78566595089 initial import
mandel
parents:
diff changeset
214 const int underline = m_domFont->hasElementUnderline() ? (m_domFont->elementUnderline() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
215 const int rhsUnderline = rhs.m_domFont->hasElementUnderline() ? (rhs.m_domFont->elementUnderline() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
216 if (const int crc = compareInt(underline, rhsUnderline))
e78566595089 initial import
mandel
parents:
diff changeset
217 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
218
e78566595089 initial import
mandel
parents:
diff changeset
219 const int weight = m_domFont->hasElementWeight() ? m_domFont->elementWeight() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
220 const int rhsWeight = rhs.m_domFont->hasElementWeight() ? rhs.m_domFont->elementWeight() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
221 if (const int crc = compareInt(weight, rhsWeight))
e78566595089 initial import
mandel
parents:
diff changeset
222 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
223
e78566595089 initial import
mandel
parents:
diff changeset
224 const int strikeOut = m_domFont->hasElementStrikeOut() ? (m_domFont->elementStrikeOut() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
225 const int rhsStrikeOut = rhs.m_domFont->hasElementStrikeOut() ? (rhs.m_domFont->elementStrikeOut() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
226 if (const int crc = compareInt(strikeOut, rhsStrikeOut))
e78566595089 initial import
mandel
parents:
diff changeset
227 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
228
e78566595089 initial import
mandel
parents:
diff changeset
229 const int kerning = m_domFont->hasElementKerning() ? (m_domFont->elementKerning() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
230 const int rhsKerning = rhs.m_domFont->hasElementKerning() ? (rhs.m_domFont->elementKerning() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
231 if (const int crc = compareInt(kerning, rhsKerning))
e78566595089 initial import
mandel
parents:
diff changeset
232 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
233
e78566595089 initial import
mandel
parents:
diff changeset
234 const int antialiasing = m_domFont->hasElementAntialiasing() ? (m_domFont->elementAntialiasing() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
235 const int rhsAntialiasing = rhs.m_domFont->hasElementAntialiasing() ? (rhs.m_domFont->elementAntialiasing() ? 1 : 0) : -1;
e78566595089 initial import
mandel
parents:
diff changeset
236 if (const int crc = compareInt(antialiasing, rhsAntialiasing))
e78566595089 initial import
mandel
parents:
diff changeset
237 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
238
e78566595089 initial import
mandel
parents:
diff changeset
239 const QString styleStrategy = m_domFont->hasElementStyleStrategy() ? m_domFont->elementStyleStrategy() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
240 const QString rhsStyleStrategy = rhs.m_domFont->hasElementStyleStrategy() ? rhs.m_domFont->elementStyleStrategy() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
241
e78566595089 initial import
mandel
parents:
diff changeset
242 if (const int src = styleStrategy.compare(rhsStyleStrategy))
e78566595089 initial import
mandel
parents:
diff changeset
243 return src;
e78566595089 initial import
mandel
parents:
diff changeset
244
e78566595089 initial import
mandel
parents:
diff changeset
245 return 0;
e78566595089 initial import
mandel
parents:
diff changeset
246 }
e78566595089 initial import
mandel
parents:
diff changeset
247
e78566595089 initial import
mandel
parents:
diff changeset
248 IconHandle::IconHandle(const DomResourceIcon *domIcon) :
e78566595089 initial import
mandel
parents:
diff changeset
249 m_domIcon(domIcon)
e78566595089 initial import
mandel
parents:
diff changeset
250 {
e78566595089 initial import
mandel
parents:
diff changeset
251 }
e78566595089 initial import
mandel
parents:
diff changeset
252
e78566595089 initial import
mandel
parents:
diff changeset
253 int IconHandle::compare(const IconHandle &rhs) const
e78566595089 initial import
mandel
parents:
diff changeset
254 {
e78566595089 initial import
mandel
parents:
diff changeset
255 const QString normalOff = m_domIcon->hasElementNormalOff() ? m_domIcon->elementNormalOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
256 const QString rhsNormalOff = rhs.m_domIcon->hasElementNormalOff() ? rhs.m_domIcon->elementNormalOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
257 if (const int comp = normalOff.compare(rhsNormalOff))
e78566595089 initial import
mandel
parents:
diff changeset
258 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
259
e78566595089 initial import
mandel
parents:
diff changeset
260 const QString normalOn = m_domIcon->hasElementNormalOn() ? m_domIcon->elementNormalOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
261 const QString rhsNormalOn = rhs.m_domIcon->hasElementNormalOn() ? rhs.m_domIcon->elementNormalOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
262 if (const int comp = normalOn.compare(rhsNormalOn))
e78566595089 initial import
mandel
parents:
diff changeset
263 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
264
e78566595089 initial import
mandel
parents:
diff changeset
265 const QString disabledOff = m_domIcon->hasElementDisabledOff() ? m_domIcon->elementDisabledOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
266 const QString rhsDisabledOff = rhs.m_domIcon->hasElementDisabledOff() ? rhs.m_domIcon->elementDisabledOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
267 if (const int comp = disabledOff.compare(rhsDisabledOff))
e78566595089 initial import
mandel
parents:
diff changeset
268 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
269
e78566595089 initial import
mandel
parents:
diff changeset
270 const QString disabledOn = m_domIcon->hasElementDisabledOn() ? m_domIcon->elementDisabledOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
271 const QString rhsDisabledOn = rhs.m_domIcon->hasElementDisabledOn() ? rhs.m_domIcon->elementDisabledOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
272 if (const int comp = disabledOn.compare(rhsDisabledOn))
e78566595089 initial import
mandel
parents:
diff changeset
273 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
274
e78566595089 initial import
mandel
parents:
diff changeset
275 const QString activeOff = m_domIcon->hasElementActiveOff() ? m_domIcon->elementActiveOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
276 const QString rhsActiveOff = rhs.m_domIcon->hasElementActiveOff() ? rhs.m_domIcon->elementActiveOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
277 if (const int comp = activeOff.compare(rhsActiveOff))
e78566595089 initial import
mandel
parents:
diff changeset
278 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
279
e78566595089 initial import
mandel
parents:
diff changeset
280 const QString activeOn = m_domIcon->hasElementActiveOn() ? m_domIcon->elementActiveOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
281 const QString rhsActiveOn = rhs.m_domIcon->hasElementActiveOn() ? rhs.m_domIcon->elementActiveOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
282 if (const int comp = activeOn.compare(rhsActiveOn))
e78566595089 initial import
mandel
parents:
diff changeset
283 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
284
e78566595089 initial import
mandel
parents:
diff changeset
285 const QString selectedOff = m_domIcon->hasElementSelectedOff() ? m_domIcon->elementSelectedOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
286 const QString rhsSelectedOff = rhs.m_domIcon->hasElementSelectedOff() ? rhs.m_domIcon->elementSelectedOff()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
287 if (const int comp = selectedOff.compare(rhsSelectedOff))
e78566595089 initial import
mandel
parents:
diff changeset
288 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
289
e78566595089 initial import
mandel
parents:
diff changeset
290 const QString selectedOn = m_domIcon->hasElementSelectedOn() ? m_domIcon->elementSelectedOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
291 const QString rhsSelectedOn = rhs.m_domIcon->hasElementSelectedOn() ? rhs.m_domIcon->elementSelectedOn()->text() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
292 if (const int comp = selectedOn.compare(rhsSelectedOn))
e78566595089 initial import
mandel
parents:
diff changeset
293 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
294 // Pre 4.4 Legacy
e78566595089 initial import
mandel
parents:
diff changeset
295 if (const int comp = m_domIcon->text().compare(rhs.m_domIcon->text()))
e78566595089 initial import
mandel
parents:
diff changeset
296 return comp;
e78566595089 initial import
mandel
parents:
diff changeset
297
e78566595089 initial import
mandel
parents:
diff changeset
298 return 0;
e78566595089 initial import
mandel
parents:
diff changeset
299 }
e78566595089 initial import
mandel
parents:
diff changeset
300
e78566595089 initial import
mandel
parents:
diff changeset
301
e78566595089 initial import
mandel
parents:
diff changeset
302 #if defined(Q_OS_MAC) && defined(Q_CC_GNU) && (__GNUC__ == 3 && __GNUC_MINOR__ == 3)
e78566595089 initial import
mandel
parents:
diff changeset
303 inline uint qHash(const SizePolicyHandle &handle) { return qHash(handle.m_domSizePolicy); }
e78566595089 initial import
mandel
parents:
diff changeset
304 inline uint qHash(const FontHandle &handle) { return qHash(handle.m_domFont); }
e78566595089 initial import
mandel
parents:
diff changeset
305 inline uint qHash(const IconHandle &handle) { return qHash(handle.m_domIcon); }
e78566595089 initial import
mandel
parents:
diff changeset
306 #endif
e78566595089 initial import
mandel
parents:
diff changeset
307
e78566595089 initial import
mandel
parents:
diff changeset
308 SizePolicyHandle::SizePolicyHandle(const DomSizePolicy *domSizePolicy) :
e78566595089 initial import
mandel
parents:
diff changeset
309 m_domSizePolicy(domSizePolicy)
e78566595089 initial import
mandel
parents:
diff changeset
310 {
e78566595089 initial import
mandel
parents:
diff changeset
311 }
e78566595089 initial import
mandel
parents:
diff changeset
312
e78566595089 initial import
mandel
parents:
diff changeset
313 int SizePolicyHandle::compare(const SizePolicyHandle &rhs) const
e78566595089 initial import
mandel
parents:
diff changeset
314 {
e78566595089 initial import
mandel
parents:
diff changeset
315
e78566595089 initial import
mandel
parents:
diff changeset
316 const int hSizeType = m_domSizePolicy->hasElementHSizeType() ? m_domSizePolicy->elementHSizeType() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
317 const int rhsHSizeType = rhs.m_domSizePolicy->hasElementHSizeType() ? rhs.m_domSizePolicy->elementHSizeType() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
318 if (const int crc = compareInt(hSizeType, rhsHSizeType))
e78566595089 initial import
mandel
parents:
diff changeset
319 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
320
e78566595089 initial import
mandel
parents:
diff changeset
321 const int vSizeType = m_domSizePolicy->hasElementVSizeType() ? m_domSizePolicy->elementVSizeType() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
322 const int rhsVSizeType = rhs.m_domSizePolicy->hasElementVSizeType() ? rhs.m_domSizePolicy->elementVSizeType() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
323 if (const int crc = compareInt(vSizeType, rhsVSizeType))
e78566595089 initial import
mandel
parents:
diff changeset
324 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
325
e78566595089 initial import
mandel
parents:
diff changeset
326 const int hStretch = m_domSizePolicy->hasElementHorStretch() ? m_domSizePolicy->elementHorStretch() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
327 const int rhsHStretch = rhs.m_domSizePolicy->hasElementHorStretch() ? rhs.m_domSizePolicy->elementHorStretch() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
328 if (const int crc = compareInt(hStretch, rhsHStretch))
e78566595089 initial import
mandel
parents:
diff changeset
329 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
330
e78566595089 initial import
mandel
parents:
diff changeset
331 const int vStretch = m_domSizePolicy->hasElementVerStretch() ? m_domSizePolicy->elementVerStretch() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
332 const int rhsVStretch = rhs.m_domSizePolicy->hasElementVerStretch() ? rhs.m_domSizePolicy->elementVerStretch() : -1;
e78566595089 initial import
mandel
parents:
diff changeset
333 if (const int crc = compareInt(vStretch, rhsVStretch))
e78566595089 initial import
mandel
parents:
diff changeset
334 return crc;
e78566595089 initial import
mandel
parents:
diff changeset
335
e78566595089 initial import
mandel
parents:
diff changeset
336 const QString attributeHSizeType = m_domSizePolicy->hasAttributeHSizeType() ? m_domSizePolicy->attributeHSizeType() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
337 const QString rhsAttributeHSizeType = rhs.m_domSizePolicy->hasAttributeHSizeType() ? rhs.m_domSizePolicy->attributeHSizeType() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
338
e78566595089 initial import
mandel
parents:
diff changeset
339 if (const int hrc = attributeHSizeType.compare(rhsAttributeHSizeType))
e78566595089 initial import
mandel
parents:
diff changeset
340 return hrc;
e78566595089 initial import
mandel
parents:
diff changeset
341
e78566595089 initial import
mandel
parents:
diff changeset
342 const QString attributeVSizeType = m_domSizePolicy->hasAttributeVSizeType() ? m_domSizePolicy->attributeVSizeType() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
343 const QString rhsAttributeVSizeType = rhs.m_domSizePolicy->hasAttributeVSizeType() ? rhs.m_domSizePolicy->attributeVSizeType() : QString();
e78566595089 initial import
mandel
parents:
diff changeset
344
e78566595089 initial import
mandel
parents:
diff changeset
345 return attributeVSizeType.compare(rhsAttributeVSizeType);
e78566595089 initial import
mandel
parents:
diff changeset
346 }
e78566595089 initial import
mandel
parents:
diff changeset
347
e78566595089 initial import
mandel
parents:
diff changeset
348 // --- WriteInitialization: LayoutDefaultHandler
e78566595089 initial import
mandel
parents:
diff changeset
349
e78566595089 initial import
mandel
parents:
diff changeset
350 WriteInitialization::LayoutDefaultHandler::LayoutDefaultHandler()
e78566595089 initial import
mandel
parents:
diff changeset
351 {
e78566595089 initial import
mandel
parents:
diff changeset
352 qFill(m_state, m_state + NumProperties, 0u);
e78566595089 initial import
mandel
parents:
diff changeset
353 qFill(m_defaultValues, m_defaultValues + NumProperties, 0);
e78566595089 initial import
mandel
parents:
diff changeset
354 }
e78566595089 initial import
mandel
parents:
diff changeset
355
e78566595089 initial import
mandel
parents:
diff changeset
356
e78566595089 initial import
mandel
parents:
diff changeset
357
e78566595089 initial import
mandel
parents:
diff changeset
358 void WriteInitialization::LayoutDefaultHandler::acceptLayoutDefault(DomLayoutDefault *node)
e78566595089 initial import
mandel
parents:
diff changeset
359 {
e78566595089 initial import
mandel
parents:
diff changeset
360 if (!node)
e78566595089 initial import
mandel
parents:
diff changeset
361 return;
e78566595089 initial import
mandel
parents:
diff changeset
362 if (node->hasAttributeMargin()) {
e78566595089 initial import
mandel
parents:
diff changeset
363 m_state[Margin] |= HasDefaultValue;
e78566595089 initial import
mandel
parents:
diff changeset
364 m_defaultValues[Margin] = node->attributeMargin();
e78566595089 initial import
mandel
parents:
diff changeset
365 }
e78566595089 initial import
mandel
parents:
diff changeset
366 if (node->hasAttributeSpacing()) {
e78566595089 initial import
mandel
parents:
diff changeset
367 m_state[Spacing] |= HasDefaultValue;
e78566595089 initial import
mandel
parents:
diff changeset
368 m_defaultValues[Spacing] = node->attributeSpacing();
e78566595089 initial import
mandel
parents:
diff changeset
369 }
e78566595089 initial import
mandel
parents:
diff changeset
370 }
e78566595089 initial import
mandel
parents:
diff changeset
371
e78566595089 initial import
mandel
parents:
diff changeset
372 void WriteInitialization::LayoutDefaultHandler::acceptLayoutFunction(DomLayoutFunction *node)
e78566595089 initial import
mandel
parents:
diff changeset
373 {
e78566595089 initial import
mandel
parents:
diff changeset
374 if (!node)
e78566595089 initial import
mandel
parents:
diff changeset
375 return;
e78566595089 initial import
mandel
parents:
diff changeset
376 if (node->hasAttributeMargin()) {
e78566595089 initial import
mandel
parents:
diff changeset
377 m_state[Margin] |= HasDefaultFunction;
e78566595089 initial import
mandel
parents:
diff changeset
378 m_functions[Margin] = node->attributeMargin();
e78566595089 initial import
mandel
parents:
diff changeset
379 m_functions[Margin] += QLatin1String("()");
e78566595089 initial import
mandel
parents:
diff changeset
380 }
e78566595089 initial import
mandel
parents:
diff changeset
381 if (node->hasAttributeSpacing()) {
e78566595089 initial import
mandel
parents:
diff changeset
382 m_state[Spacing] |= HasDefaultFunction;
e78566595089 initial import
mandel
parents:
diff changeset
383 m_functions[Spacing] = node->attributeSpacing();
e78566595089 initial import
mandel
parents:
diff changeset
384 m_functions[Spacing] += QLatin1String("()");
e78566595089 initial import
mandel
parents:
diff changeset
385 }
e78566595089 initial import
mandel
parents:
diff changeset
386 }
e78566595089 initial import
mandel
parents:
diff changeset
387
e78566595089 initial import
mandel
parents:
diff changeset
388 void WriteInitialization::LayoutDefaultHandler::writeProperty(int p, const QString &indent, const QString &objectName,
e78566595089 initial import
mandel
parents:
diff changeset
389 const DomPropertyMap &properties, const QString &propertyName, const QString &setter,
e78566595089 initial import
mandel
parents:
diff changeset
390 int defaultStyleValue, bool suppressDefault, QTextStream &str) const
e78566595089 initial import
mandel
parents:
diff changeset
391 {
e78566595089 initial import
mandel
parents:
diff changeset
392 // User value
e78566595089 initial import
mandel
parents:
diff changeset
393 const DomPropertyMap::const_iterator mit = properties.constFind(propertyName);
e78566595089 initial import
mandel
parents:
diff changeset
394 const bool found = mit != properties.constEnd();
e78566595089 initial import
mandel
parents:
diff changeset
395 if (found) {
e78566595089 initial import
mandel
parents:
diff changeset
396 const int value = mit.value()->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
397 // Emulate the pre 4.3 behaviour: The value form default value was only used to determine
e78566595089 initial import
mandel
parents:
diff changeset
398 // the default value, layout properties were always written
e78566595089 initial import
mandel
parents:
diff changeset
399 const bool useLayoutFunctionPre43 = !suppressDefault && (m_state[p] == (HasDefaultFunction|HasDefaultValue)) && value == m_defaultValues[p];
e78566595089 initial import
mandel
parents:
diff changeset
400 if (!useLayoutFunctionPre43) {
e78566595089 initial import
mandel
parents:
diff changeset
401 bool ifndefMac = (!(m_state[p] & (HasDefaultFunction|HasDefaultValue))
e78566595089 initial import
mandel
parents:
diff changeset
402 && value == defaultStyleValue);
e78566595089 initial import
mandel
parents:
diff changeset
403 if (ifndefMac)
e78566595089 initial import
mandel
parents:
diff changeset
404 str << "#ifndef Q_OS_MAC\n";
e78566595089 initial import
mandel
parents:
diff changeset
405 writeSetter(indent, objectName, setter, value, str);
e78566595089 initial import
mandel
parents:
diff changeset
406 if (ifndefMac)
e78566595089 initial import
mandel
parents:
diff changeset
407 str << "#endif\n";
e78566595089 initial import
mandel
parents:
diff changeset
408 return;
e78566595089 initial import
mandel
parents:
diff changeset
409 }
e78566595089 initial import
mandel
parents:
diff changeset
410 }
e78566595089 initial import
mandel
parents:
diff changeset
411 if (suppressDefault)
e78566595089 initial import
mandel
parents:
diff changeset
412 return;
e78566595089 initial import
mandel
parents:
diff changeset
413 // get default
e78566595089 initial import
mandel
parents:
diff changeset
414 if (m_state[p] & HasDefaultFunction) {
e78566595089 initial import
mandel
parents:
diff changeset
415 writeSetter(indent, objectName, setter, m_functions[p], str);
e78566595089 initial import
mandel
parents:
diff changeset
416 return;
e78566595089 initial import
mandel
parents:
diff changeset
417 }
e78566595089 initial import
mandel
parents:
diff changeset
418 if (m_state[p] & HasDefaultValue) {
e78566595089 initial import
mandel
parents:
diff changeset
419 writeSetter(indent, objectName, setter, m_defaultValues[p], str);
e78566595089 initial import
mandel
parents:
diff changeset
420 }
e78566595089 initial import
mandel
parents:
diff changeset
421 return;
e78566595089 initial import
mandel
parents:
diff changeset
422 }
e78566595089 initial import
mandel
parents:
diff changeset
423
e78566595089 initial import
mandel
parents:
diff changeset
424
e78566595089 initial import
mandel
parents:
diff changeset
425 void WriteInitialization::LayoutDefaultHandler::writeProperties(const QString &indent, const QString &varName,
e78566595089 initial import
mandel
parents:
diff changeset
426 const DomPropertyMap &properties, int marginType,
e78566595089 initial import
mandel
parents:
diff changeset
427 bool suppressMarginDefault,
e78566595089 initial import
mandel
parents:
diff changeset
428 QTextStream &str) const {
e78566595089 initial import
mandel
parents:
diff changeset
429 // Write out properties and ignore the ones found in
e78566595089 initial import
mandel
parents:
diff changeset
430 // subsequent writing of the property list.
e78566595089 initial import
mandel
parents:
diff changeset
431 int defaultSpacing = marginType == WriteInitialization::Use43UiFile ? -1 : 6;
e78566595089 initial import
mandel
parents:
diff changeset
432 writeProperty(Spacing, indent, varName, properties, QLatin1String("spacing"), QLatin1String("setSpacing"),
e78566595089 initial import
mandel
parents:
diff changeset
433 defaultSpacing, false, str);
e78566595089 initial import
mandel
parents:
diff changeset
434 // We use 9 as TopLevelMargin, since Designer seem to always use 9.
e78566595089 initial import
mandel
parents:
diff changeset
435 static const int layoutmargins[4] = {-1, 9, 9, 0};
e78566595089 initial import
mandel
parents:
diff changeset
436 writeProperty(Margin, indent, varName, properties, QLatin1String("margin"), QLatin1String("setMargin"),
e78566595089 initial import
mandel
parents:
diff changeset
437 layoutmargins[marginType], suppressMarginDefault, str);
e78566595089 initial import
mandel
parents:
diff changeset
438 }
e78566595089 initial import
mandel
parents:
diff changeset
439
e78566595089 initial import
mandel
parents:
diff changeset
440 // --- WriteInitialization
e78566595089 initial import
mandel
parents:
diff changeset
441 WriteInitialization::WriteInitialization(Uic *uic, bool activateScripts) :
e78566595089 initial import
mandel
parents:
diff changeset
442 m_uic(uic),
e78566595089 initial import
mandel
parents:
diff changeset
443 m_driver(uic->driver()), m_output(uic->output()), m_option(uic->option()),
e78566595089 initial import
mandel
parents:
diff changeset
444 m_layoutMarginType(TopLevelMargin),
e78566595089 initial import
mandel
parents:
diff changeset
445 m_delayedOut(&m_delayedInitialization, QIODevice::WriteOnly),
e78566595089 initial import
mandel
parents:
diff changeset
446 m_refreshOut(&m_refreshInitialization, QIODevice::WriteOnly),
e78566595089 initial import
mandel
parents:
diff changeset
447 m_actionOut(&m_delayedActionInitialization, QIODevice::WriteOnly),
e78566595089 initial import
mandel
parents:
diff changeset
448 m_activateScripts(activateScripts), m_layoutWidget(false)
e78566595089 initial import
mandel
parents:
diff changeset
449 {
e78566595089 initial import
mandel
parents:
diff changeset
450 }
e78566595089 initial import
mandel
parents:
diff changeset
451
e78566595089 initial import
mandel
parents:
diff changeset
452 void WriteInitialization::acceptUI(DomUI *node)
e78566595089 initial import
mandel
parents:
diff changeset
453 {
e78566595089 initial import
mandel
parents:
diff changeset
454 m_registeredImages.clear();
e78566595089 initial import
mandel
parents:
diff changeset
455 m_actionGroupChain.push(0);
e78566595089 initial import
mandel
parents:
diff changeset
456 m_widgetChain.push(0);
e78566595089 initial import
mandel
parents:
diff changeset
457 m_layoutChain.push(0);
e78566595089 initial import
mandel
parents:
diff changeset
458
e78566595089 initial import
mandel
parents:
diff changeset
459 acceptLayoutDefault(node->elementLayoutDefault());
e78566595089 initial import
mandel
parents:
diff changeset
460 acceptLayoutFunction(node->elementLayoutFunction());
e78566595089 initial import
mandel
parents:
diff changeset
461
e78566595089 initial import
mandel
parents:
diff changeset
462 if (node->elementCustomWidgets())
e78566595089 initial import
mandel
parents:
diff changeset
463 TreeWalker::acceptCustomWidgets(node->elementCustomWidgets());
e78566595089 initial import
mandel
parents:
diff changeset
464
e78566595089 initial import
mandel
parents:
diff changeset
465 if (node->elementImages())
e78566595089 initial import
mandel
parents:
diff changeset
466 TreeWalker::acceptImages(node->elementImages());
e78566595089 initial import
mandel
parents:
diff changeset
467
e78566595089 initial import
mandel
parents:
diff changeset
468 if (m_option.generateImplemetation)
e78566595089 initial import
mandel
parents:
diff changeset
469 m_output << "#include <" << m_driver->headerFileName() << ">\n\n";
e78566595089 initial import
mandel
parents:
diff changeset
470
e78566595089 initial import
mandel
parents:
diff changeset
471 m_stdsetdef = true;
e78566595089 initial import
mandel
parents:
diff changeset
472 if (node->hasAttributeStdSetDef())
e78566595089 initial import
mandel
parents:
diff changeset
473 m_stdsetdef = node->attributeStdSetDef();
e78566595089 initial import
mandel
parents:
diff changeset
474
e78566595089 initial import
mandel
parents:
diff changeset
475 const QString className = node->elementClass() + m_option.postfix;
e78566595089 initial import
mandel
parents:
diff changeset
476 m_generatedClass = className;
e78566595089 initial import
mandel
parents:
diff changeset
477
e78566595089 initial import
mandel
parents:
diff changeset
478 const QString varName = m_driver->findOrInsertWidget(node->elementWidget());
e78566595089 initial import
mandel
parents:
diff changeset
479 m_registeredWidgets.insert(varName, node->elementWidget()); // register the main widget
e78566595089 initial import
mandel
parents:
diff changeset
480
e78566595089 initial import
mandel
parents:
diff changeset
481 const QString widgetClassName = node->elementWidget()->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
482
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
483 m_output << m_option.indent << "void " << "setupUi(" << widgetClassName << " " << varName << ")\n"
1
e78566595089 initial import
mandel
parents:
diff changeset
484 << m_option.indent << "{\n";
e78566595089 initial import
mandel
parents:
diff changeset
485
e78566595089 initial import
mandel
parents:
diff changeset
486 if (m_activateScripts)
e78566595089 initial import
mandel
parents:
diff changeset
487 writeSetupUIScriptVariableDeclarations( m_option.indent, m_output);
e78566595089 initial import
mandel
parents:
diff changeset
488
e78566595089 initial import
mandel
parents:
diff changeset
489 const QStringList connections = m_uic->databaseInfo()->connections();
e78566595089 initial import
mandel
parents:
diff changeset
490 for (int i=0; i<connections.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
491 QString connection = connections.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
492
e78566595089 initial import
mandel
parents:
diff changeset
493 if (connection == QLatin1String("(default)"))
e78566595089 initial import
mandel
parents:
diff changeset
494 continue;
e78566595089 initial import
mandel
parents:
diff changeset
495
e78566595089 initial import
mandel
parents:
diff changeset
496 const QString varConn = connection + QLatin1String("Connection");
e78566595089 initial import
mandel
parents:
diff changeset
497 m_output << m_option.indent << varConn << " = QSqlDatabase::database(" << fixString(connection, m_option.indent) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
498 }
e78566595089 initial import
mandel
parents:
diff changeset
499
e78566595089 initial import
mandel
parents:
diff changeset
500 acceptWidget(node->elementWidget());
e78566595089 initial import
mandel
parents:
diff changeset
501
e78566595089 initial import
mandel
parents:
diff changeset
502 if (m_buddies.size() > 0)
e78566595089 initial import
mandel
parents:
diff changeset
503 openIfndef(m_output, QLatin1String(shortcutDefineC));
e78566595089 initial import
mandel
parents:
diff changeset
504 for (int i=0; i<m_buddies.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
505 const Buddy &b = m_buddies.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
506
e78566595089 initial import
mandel
parents:
diff changeset
507 if (!m_registeredWidgets.contains(b.objName)) {
e78566595089 initial import
mandel
parents:
diff changeset
508 fprintf(stderr, "'%s' isn't a valid widget\n", b.objName.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
509 continue;
e78566595089 initial import
mandel
parents:
diff changeset
510 } else if (!m_registeredWidgets.contains(b.buddy)) {
e78566595089 initial import
mandel
parents:
diff changeset
511 fprintf(stderr, "'%s' isn't a valid widget\n", b.buddy.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
512 continue;
e78566595089 initial import
mandel
parents:
diff changeset
513 }
e78566595089 initial import
mandel
parents:
diff changeset
514
e78566595089 initial import
mandel
parents:
diff changeset
515 m_output << m_option.indent << b.objName << ".setBuddy(" << b.buddy << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
516 }
e78566595089 initial import
mandel
parents:
diff changeset
517 if (m_buddies.size() > 0)
e78566595089 initial import
mandel
parents:
diff changeset
518 closeIfdef(m_output, QLatin1String(shortcutDefineC));
e78566595089 initial import
mandel
parents:
diff changeset
519
e78566595089 initial import
mandel
parents:
diff changeset
520 if (node->elementTabStops())
e78566595089 initial import
mandel
parents:
diff changeset
521 acceptTabStops(node->elementTabStops());
e78566595089 initial import
mandel
parents:
diff changeset
522
e78566595089 initial import
mandel
parents:
diff changeset
523 if (m_delayedActionInitialization.size())
e78566595089 initial import
mandel
parents:
diff changeset
524 m_output << "\n" << m_delayedActionInitialization;
e78566595089 initial import
mandel
parents:
diff changeset
525
e78566595089 initial import
mandel
parents:
diff changeset
526 m_output << "\n" << m_option.indent << "retranslateUi(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
527
e78566595089 initial import
mandel
parents:
diff changeset
528 if (node->elementConnections())
e78566595089 initial import
mandel
parents:
diff changeset
529 acceptConnections(node->elementConnections());
e78566595089 initial import
mandel
parents:
diff changeset
530
e78566595089 initial import
mandel
parents:
diff changeset
531 if (!m_delayedInitialization.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
532 m_output << "\n" << m_delayedInitialization << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
533
e78566595089 initial import
mandel
parents:
diff changeset
534 if (m_option.autoConnection)
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
535 m_output << "\n" << m_option.indent << "// QMetaObject.connectSlotsByName(" << varName << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
536
e78566595089 initial import
mandel
parents:
diff changeset
537 m_output << m_option.indent << "} // setupUi\n\n";
e78566595089 initial import
mandel
parents:
diff changeset
538
e78566595089 initial import
mandel
parents:
diff changeset
539 if (m_delayedActionInitialization.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
540 m_refreshInitialization += m_option.indent;
e78566595089 initial import
mandel
parents:
diff changeset
541 m_refreshInitialization += QLatin1String("Q_UNUSED(");
e78566595089 initial import
mandel
parents:
diff changeset
542 m_refreshInitialization += varName ;
e78566595089 initial import
mandel
parents:
diff changeset
543 m_refreshInitialization +=QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
544 }
e78566595089 initial import
mandel
parents:
diff changeset
545
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
546 m_output << m_option.indent << "void " << "retranslateUi(" << widgetClassName << " " << varName << ")\n"
1
e78566595089 initial import
mandel
parents:
diff changeset
547 << m_option.indent << "{\n"
e78566595089 initial import
mandel
parents:
diff changeset
548 << m_refreshInitialization
e78566595089 initial import
mandel
parents:
diff changeset
549 << m_option.indent << "} // retranslateUi\n\n";
e78566595089 initial import
mandel
parents:
diff changeset
550
e78566595089 initial import
mandel
parents:
diff changeset
551 m_layoutChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
552 m_widgetChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
553 m_actionGroupChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
554 }
e78566595089 initial import
mandel
parents:
diff changeset
555
e78566595089 initial import
mandel
parents:
diff changeset
556 void WriteInitialization::acceptWidget(DomWidget *node)
e78566595089 initial import
mandel
parents:
diff changeset
557 {
e78566595089 initial import
mandel
parents:
diff changeset
558 m_layoutMarginType = m_widgetChain.count() == 1 ? TopLevelMargin : ChildMargin;
e78566595089 initial import
mandel
parents:
diff changeset
559 const QString className = node->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
560 const QString varName = m_driver->findOrInsertWidget(node);
e78566595089 initial import
mandel
parents:
diff changeset
561 m_registeredWidgets.insert(varName, node); // register the current widget
e78566595089 initial import
mandel
parents:
diff changeset
562
e78566595089 initial import
mandel
parents:
diff changeset
563 QString parentWidget, parentClass;
e78566595089 initial import
mandel
parents:
diff changeset
564 if (m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
565 parentWidget = m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
566 parentClass = m_widgetChain.top()->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
567 }
e78566595089 initial import
mandel
parents:
diff changeset
568
e78566595089 initial import
mandel
parents:
diff changeset
569 const QString savedParentWidget = parentWidget;
e78566595089 initial import
mandel
parents:
diff changeset
570
e78566595089 initial import
mandel
parents:
diff changeset
571 if (m_uic->isContainer(parentClass) || m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3ToolBar")))
e78566595089 initial import
mandel
parents:
diff changeset
572 parentWidget.clear();
e78566595089 initial import
mandel
parents:
diff changeset
573
e78566595089 initial import
mandel
parents:
diff changeset
574 if (m_widgetChain.size() != 1)
e78566595089 initial import
mandel
parents:
diff changeset
575 m_output << m_option.indent << varName << " = new " << m_uic->customWidgetsInfo()->realClassName(className) << '(' << parentWidget << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
576
e78566595089 initial import
mandel
parents:
diff changeset
577 parentWidget = savedParentWidget;
e78566595089 initial import
mandel
parents:
diff changeset
578
e78566595089 initial import
mandel
parents:
diff changeset
579 if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QComboBox"))) {
e78566595089 initial import
mandel
parents:
diff changeset
580 initializeComboBox(node);
e78566595089 initial import
mandel
parents:
diff changeset
581 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QListWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
582 initializeListWidget(node);
e78566595089 initial import
mandel
parents:
diff changeset
583 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QTreeWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
584 initializeTreeWidget(node);
e78566595089 initial import
mandel
parents:
diff changeset
585 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QTableWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
586 initializeTableWidget(node);
e78566595089 initial import
mandel
parents:
diff changeset
587 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3ListBox"))) {
e78566595089 initial import
mandel
parents:
diff changeset
588 initializeQ3ListBox(node);
e78566595089 initial import
mandel
parents:
diff changeset
589 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3ListView"))) {
e78566595089 initial import
mandel
parents:
diff changeset
590 initializeQ3ListView(node);
e78566595089 initial import
mandel
parents:
diff changeset
591 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3IconView"))) {
e78566595089 initial import
mandel
parents:
diff changeset
592 initializeQ3IconView(node);
e78566595089 initial import
mandel
parents:
diff changeset
593 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3Table"))) {
e78566595089 initial import
mandel
parents:
diff changeset
594 initializeQ3Table(node);
e78566595089 initial import
mandel
parents:
diff changeset
595 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3DataTable"))) {
e78566595089 initial import
mandel
parents:
diff changeset
596 initializeQ3SqlDataTable(node);
e78566595089 initial import
mandel
parents:
diff changeset
597 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("Q3DataBrowser"))) {
e78566595089 initial import
mandel
parents:
diff changeset
598 initializeQ3SqlDataBrowser(node);
e78566595089 initial import
mandel
parents:
diff changeset
599 }
e78566595089 initial import
mandel
parents:
diff changeset
600
e78566595089 initial import
mandel
parents:
diff changeset
601 if (m_uic->isButton(className)) {
e78566595089 initial import
mandel
parents:
diff changeset
602 const DomPropertyMap attributes = propertyMap(node->elementAttribute());
e78566595089 initial import
mandel
parents:
diff changeset
603 if (const DomProperty *prop = attributes.value(QLatin1String("buttonGroup"))) {
e78566595089 initial import
mandel
parents:
diff changeset
604 const QString groupName = toString(prop->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
605 if (!m_buttonGroups.contains(groupName)) {
e78566595089 initial import
mandel
parents:
diff changeset
606 m_buttonGroups.insert(groupName, m_driver->findOrInsertName(groupName));
e78566595089 initial import
mandel
parents:
diff changeset
607 const QString g = m_buttonGroups.value(groupName);
e78566595089 initial import
mandel
parents:
diff changeset
608 m_output << m_option.indent << "QButtonGroup *" << g << " = new QButtonGroup(" << m_generatedClass << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
609 }
e78566595089 initial import
mandel
parents:
diff changeset
610
e78566595089 initial import
mandel
parents:
diff changeset
611 const QString g = m_buttonGroups.value(groupName);
e78566595089 initial import
mandel
parents:
diff changeset
612 m_output << m_option.indent << g << ".addButton(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
613 }
e78566595089 initial import
mandel
parents:
diff changeset
614 }
e78566595089 initial import
mandel
parents:
diff changeset
615
e78566595089 initial import
mandel
parents:
diff changeset
616 writeProperties(varName, className, node->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
617
e78566595089 initial import
mandel
parents:
diff changeset
618 if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QMenu")) && parentWidget.size()) {
e78566595089 initial import
mandel
parents:
diff changeset
619 initializeMenu(node, parentWidget);
e78566595089 initial import
mandel
parents:
diff changeset
620 }
e78566595089 initial import
mandel
parents:
diff changeset
621
e78566595089 initial import
mandel
parents:
diff changeset
622 if (node->elementLayout().isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
623 m_layoutChain.push(0);
e78566595089 initial import
mandel
parents:
diff changeset
624
e78566595089 initial import
mandel
parents:
diff changeset
625 m_layoutWidget = false;
e78566595089 initial import
mandel
parents:
diff changeset
626 if (className == QLatin1String("QWidget") && !node->hasAttributeNative()) {
e78566595089 initial import
mandel
parents:
diff changeset
627 if (m_widgetChain.top()
e78566595089 initial import
mandel
parents:
diff changeset
628 && m_widgetChain.top()->attributeClass() != QLatin1String("QMainWindow")
e78566595089 initial import
mandel
parents:
diff changeset
629 && !m_uic->isContainer(m_widgetChain.top()->attributeClass()))
e78566595089 initial import
mandel
parents:
diff changeset
630 m_layoutWidget = true;
e78566595089 initial import
mandel
parents:
diff changeset
631 }
e78566595089 initial import
mandel
parents:
diff changeset
632 m_widgetChain.push(node);
e78566595089 initial import
mandel
parents:
diff changeset
633 m_layoutChain.push(0);
e78566595089 initial import
mandel
parents:
diff changeset
634 TreeWalker::acceptWidget(node);
e78566595089 initial import
mandel
parents:
diff changeset
635 m_layoutChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
636 m_widgetChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
637 m_layoutWidget = false;
e78566595089 initial import
mandel
parents:
diff changeset
638
e78566595089 initial import
mandel
parents:
diff changeset
639 const DomPropertyMap attributes = propertyMap(node->elementAttribute());
e78566595089 initial import
mandel
parents:
diff changeset
640
e78566595089 initial import
mandel
parents:
diff changeset
641 QString title = QLatin1String("Page");
e78566595089 initial import
mandel
parents:
diff changeset
642 if (const DomProperty *ptitle = attributes.value(QLatin1String("title"))) {
e78566595089 initial import
mandel
parents:
diff changeset
643 title = toString(ptitle->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
644 }
e78566595089 initial import
mandel
parents:
diff changeset
645
e78566595089 initial import
mandel
parents:
diff changeset
646 QString label = QLatin1String("Page");
e78566595089 initial import
mandel
parents:
diff changeset
647 if (const DomProperty *plabel = attributes.value(QLatin1String("label"))) {
e78566595089 initial import
mandel
parents:
diff changeset
648 label = toString(plabel->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
649 }
e78566595089 initial import
mandel
parents:
diff changeset
650
e78566595089 initial import
mandel
parents:
diff changeset
651 int id = -1;
e78566595089 initial import
mandel
parents:
diff changeset
652 if (const DomProperty *pid = attributes.value(QLatin1String("id"))) {
e78566595089 initial import
mandel
parents:
diff changeset
653 id = pid->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
654 }
e78566595089 initial import
mandel
parents:
diff changeset
655
e78566595089 initial import
mandel
parents:
diff changeset
656 if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QMainWindow"))
e78566595089 initial import
mandel
parents:
diff changeset
657 || m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3MainWindow"))) {
e78566595089 initial import
mandel
parents:
diff changeset
658
e78566595089 initial import
mandel
parents:
diff changeset
659 if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QMenuBar"))) {
e78566595089 initial import
mandel
parents:
diff changeset
660 if (!m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3MainWindow")))
e78566595089 initial import
mandel
parents:
diff changeset
661 m_output << m_option.indent << parentWidget << ".setMenuBar(" << varName <<");\n";
e78566595089 initial import
mandel
parents:
diff changeset
662 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QToolBar"))) {
e78566595089 initial import
mandel
parents:
diff changeset
663 m_output << m_option.indent << parentWidget << ".addToolBar("
e78566595089 initial import
mandel
parents:
diff changeset
664 << toolBarAreaStringFromDOMAttributes(attributes) << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
665
e78566595089 initial import
mandel
parents:
diff changeset
666 if (const DomProperty *pbreak = attributes.value(QLatin1String("toolBarBreak"))) {
e78566595089 initial import
mandel
parents:
diff changeset
667 if (pbreak->elementBool() == QLatin1String("true")) {
e78566595089 initial import
mandel
parents:
diff changeset
668 m_output << m_option.indent << parentWidget << ".insertToolBarBreak(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
669 }
e78566595089 initial import
mandel
parents:
diff changeset
670 }
e78566595089 initial import
mandel
parents:
diff changeset
671
e78566595089 initial import
mandel
parents:
diff changeset
672 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QDockWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
673 QString area;
e78566595089 initial import
mandel
parents:
diff changeset
674 if (DomProperty *pstyle = attributes.value(QLatin1String("dockWidgetArea"))) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
675 area += QLatin1String("(cast(Qt.DockWidgetArea)(");
1
e78566595089 initial import
mandel
parents:
diff changeset
676 area += QString::number(pstyle->elementNumber());
e78566595089 initial import
mandel
parents:
diff changeset
677 area += QLatin1String(")), ");
e78566595089 initial import
mandel
parents:
diff changeset
678 }
e78566595089 initial import
mandel
parents:
diff changeset
679
e78566595089 initial import
mandel
parents:
diff changeset
680 m_output << m_option.indent << parentWidget << ".addDockWidget(" << area << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
681 } else if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStatusBar"))) {
e78566595089 initial import
mandel
parents:
diff changeset
682 m_output << m_option.indent << parentWidget << ".setStatusBar(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
683 } else if (className == QLatin1String("QWidget")) {
e78566595089 initial import
mandel
parents:
diff changeset
684 m_output << m_option.indent << parentWidget << ".setCentralWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
685 }
e78566595089 initial import
mandel
parents:
diff changeset
686 }
e78566595089 initial import
mandel
parents:
diff changeset
687
e78566595089 initial import
mandel
parents:
diff changeset
688 // Check for addPageMethod of a custom plugin first
e78566595089 initial import
mandel
parents:
diff changeset
689 const QString addPageMethod = m_uic->customWidgetsInfo()->customWidgetAddPageMethod(parentClass);
e78566595089 initial import
mandel
parents:
diff changeset
690 if (!addPageMethod.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
691 m_output << m_option.indent << parentWidget << "." << addPageMethod << '(' << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
692 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QStackedWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
693 m_output << m_option.indent << parentWidget << ".addWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
694 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QToolBar"))) {
e78566595089 initial import
mandel
parents:
diff changeset
695 m_output << m_option.indent << parentWidget << ".addWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
696 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3WidgetStack"))) {
e78566595089 initial import
mandel
parents:
diff changeset
697 m_output << m_option.indent << parentWidget << ".addWidget(" << varName << ", " << id << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
698 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QDockWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
699 m_output << m_option.indent << parentWidget << ".setWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
700 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QScrollArea"))) {
e78566595089 initial import
mandel
parents:
diff changeset
701 m_output << m_option.indent << parentWidget << ".setWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
702 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QSplitter"))) {
e78566595089 initial import
mandel
parents:
diff changeset
703 m_output << m_option.indent << parentWidget << ".addWidget(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
704 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QMdiArea"))) {
e78566595089 initial import
mandel
parents:
diff changeset
705 m_output << m_option.indent << parentWidget << ".addSubWindow(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
706 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QWorkspace"))) {
e78566595089 initial import
mandel
parents:
diff changeset
707 m_output << m_option.indent << parentWidget << ".addWindow(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
708 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QWizard"))) {
e78566595089 initial import
mandel
parents:
diff changeset
709 m_output << m_option.indent << parentWidget << ".addPage(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
710 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QToolBox"))) {
e78566595089 initial import
mandel
parents:
diff changeset
711 QString icon;
e78566595089 initial import
mandel
parents:
diff changeset
712 if (const DomProperty *picon = attributes.value(QLatin1String("icon"))) {
e78566595089 initial import
mandel
parents:
diff changeset
713 icon += QLatin1String(", ") ;
e78566595089 initial import
mandel
parents:
diff changeset
714 icon += iconCall(picon);
e78566595089 initial import
mandel
parents:
diff changeset
715 }
e78566595089 initial import
mandel
parents:
diff changeset
716
e78566595089 initial import
mandel
parents:
diff changeset
717 m_output << m_option.indent << parentWidget << ".addItem(" << varName << icon << ", " << trCall(label) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
718
e78566595089 initial import
mandel
parents:
diff changeset
719 m_refreshOut << m_option.indent << parentWidget << ".setItemText("
e78566595089 initial import
mandel
parents:
diff changeset
720 << parentWidget << ".indexOf(" << varName << "), " << trCall(label) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
721
e78566595089 initial import
mandel
parents:
diff changeset
722 #ifndef QT_NO_TOOLTIP
e78566595089 initial import
mandel
parents:
diff changeset
723 if (DomProperty *ptoolTip = attributes.value(QLatin1String("toolTip"))) {
e78566595089 initial import
mandel
parents:
diff changeset
724 m_refreshOut << m_option.indent << parentWidget << ".setItemToolTip("
e78566595089 initial import
mandel
parents:
diff changeset
725 << parentWidget << ".indexOf(" << varName << "), " << trCall(ptoolTip->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
726 }
e78566595089 initial import
mandel
parents:
diff changeset
727 #endif // QT_NO_TOOLTIP
e78566595089 initial import
mandel
parents:
diff changeset
728 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("QTabWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
729 QString icon;
e78566595089 initial import
mandel
parents:
diff changeset
730 if (const DomProperty *picon = attributes.value(QLatin1String("icon"))) {
e78566595089 initial import
mandel
parents:
diff changeset
731 icon += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
732 icon += iconCall(picon);
e78566595089 initial import
mandel
parents:
diff changeset
733 }
e78566595089 initial import
mandel
parents:
diff changeset
734
78
3d465c0a4f98 duic: replace "" with null
SokoL_SD
parents: 76
diff changeset
735 m_output << m_option.indent << parentWidget << ".addTab(" << varName << icon << ", " << "null);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
736
e78566595089 initial import
mandel
parents:
diff changeset
737 m_refreshOut << m_option.indent << parentWidget << ".setTabText("
e78566595089 initial import
mandel
parents:
diff changeset
738 << parentWidget << ".indexOf(" << varName << "), " << trCall(title) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
739
e78566595089 initial import
mandel
parents:
diff changeset
740 #ifndef QT_NO_TOOLTIP
e78566595089 initial import
mandel
parents:
diff changeset
741 if (const DomProperty *ptoolTip = attributes.value(QLatin1String("toolTip"))) {
e78566595089 initial import
mandel
parents:
diff changeset
742 m_refreshOut << m_option.indent << parentWidget << ".setTabToolTip("
e78566595089 initial import
mandel
parents:
diff changeset
743 << parentWidget << ".indexOf(" << varName << "), " << trCall(ptoolTip->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
744 }
e78566595089 initial import
mandel
parents:
diff changeset
745 #endif // QT_NO_TOOLTIP
e78566595089 initial import
mandel
parents:
diff changeset
746 } else if (m_uic->customWidgetsInfo()->extends(parentClass, QLatin1String("Q3Wizard"))) {
e78566595089 initial import
mandel
parents:
diff changeset
747 m_output << m_option.indent << parentWidget << ".addPage(" << varName << ", " << trCall(title) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
748
e78566595089 initial import
mandel
parents:
diff changeset
749 m_refreshOut << m_option.indent << parentWidget << ".setTitle("
e78566595089 initial import
mandel
parents:
diff changeset
750 << varName << ", " << trCall(title) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
751
e78566595089 initial import
mandel
parents:
diff changeset
752 }
e78566595089 initial import
mandel
parents:
diff changeset
753
e78566595089 initial import
mandel
parents:
diff changeset
754 if (node->elementLayout().isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
755 m_layoutChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
756
e78566595089 initial import
mandel
parents:
diff changeset
757 const QStringList zOrder = node->elementZOrder();
e78566595089 initial import
mandel
parents:
diff changeset
758 for (int i = 0; i < zOrder.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
759 const QString name = zOrder.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
760
e78566595089 initial import
mandel
parents:
diff changeset
761 if (!m_registeredWidgets.contains(name)) {
e78566595089 initial import
mandel
parents:
diff changeset
762 fprintf(stderr, "'%s' isn't a valid widget\n", name.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
763 continue;
e78566595089 initial import
mandel
parents:
diff changeset
764 }
e78566595089 initial import
mandel
parents:
diff changeset
765
e78566595089 initial import
mandel
parents:
diff changeset
766 if (name.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
767 continue;
e78566595089 initial import
mandel
parents:
diff changeset
768 }
e78566595089 initial import
mandel
parents:
diff changeset
769
e78566595089 initial import
mandel
parents:
diff changeset
770 m_output << m_option.indent << name << ".raise();\n";
e78566595089 initial import
mandel
parents:
diff changeset
771 }
e78566595089 initial import
mandel
parents:
diff changeset
772 }
e78566595089 initial import
mandel
parents:
diff changeset
773
e78566595089 initial import
mandel
parents:
diff changeset
774
e78566595089 initial import
mandel
parents:
diff changeset
775 void WriteInitialization::acceptLayout(DomLayout *node)
e78566595089 initial import
mandel
parents:
diff changeset
776 {
e78566595089 initial import
mandel
parents:
diff changeset
777 const QString className = node->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
778 const QString varName = m_driver->findOrInsertLayout(node);
e78566595089 initial import
mandel
parents:
diff changeset
779
e78566595089 initial import
mandel
parents:
diff changeset
780 const DomPropertyMap properties = propertyMap(node->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
781 const bool oldLayoutProperties = properties.constFind(QLatin1String("margin")) != properties.constEnd();
e78566595089 initial import
mandel
parents:
diff changeset
782
e78566595089 initial import
mandel
parents:
diff changeset
783 bool isGroupBox = false;
e78566595089 initial import
mandel
parents:
diff changeset
784
e78566595089 initial import
mandel
parents:
diff changeset
785 if (m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
786 const QString parentWidget = m_widgetChain.top()->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
787
e78566595089 initial import
mandel
parents:
diff changeset
788 if (!m_layoutChain.top() && (m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3GroupBox"))
e78566595089 initial import
mandel
parents:
diff changeset
789 || m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3ButtonGroup")))) {
e78566595089 initial import
mandel
parents:
diff changeset
790 const QString parent = m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
791
e78566595089 initial import
mandel
parents:
diff changeset
792 isGroupBox = true;
e78566595089 initial import
mandel
parents:
diff changeset
793 // special case for group box
e78566595089 initial import
mandel
parents:
diff changeset
794
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
795 m_output << m_option.indent << parent << ".setColumnLayout(0, Qt.Vertical);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
796 QString objectName = parent;
e78566595089 initial import
mandel
parents:
diff changeset
797 objectName += QLatin1String(".layout()");
e78566595089 initial import
mandel
parents:
diff changeset
798 int marginType = Use43UiFile;
e78566595089 initial import
mandel
parents:
diff changeset
799 if (oldLayoutProperties)
e78566595089 initial import
mandel
parents:
diff changeset
800 marginType = m_layoutMarginType;
e78566595089 initial import
mandel
parents:
diff changeset
801
e78566595089 initial import
mandel
parents:
diff changeset
802 m_LayoutDefaultHandler.writeProperties(m_option.indent,
e78566595089 initial import
mandel
parents:
diff changeset
803 objectName, properties, marginType, false, m_output);
e78566595089 initial import
mandel
parents:
diff changeset
804 }
e78566595089 initial import
mandel
parents:
diff changeset
805 }
e78566595089 initial import
mandel
parents:
diff changeset
806
e78566595089 initial import
mandel
parents:
diff changeset
807 m_output << m_option.indent << varName << " = new " << className << '(';
e78566595089 initial import
mandel
parents:
diff changeset
808
e78566595089 initial import
mandel
parents:
diff changeset
809 if (!m_layoutChain.top() && !isGroupBox)
e78566595089 initial import
mandel
parents:
diff changeset
810 m_output << m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
811
e78566595089 initial import
mandel
parents:
diff changeset
812 m_output << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
813
e78566595089 initial import
mandel
parents:
diff changeset
814 if (isGroupBox) {
e78566595089 initial import
mandel
parents:
diff changeset
815 const QString tempName = m_driver->unique(QLatin1String("boxlayout"));
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
816 m_output << m_option.indent << "QBoxLayout " << tempName << " = qobject_cast<QBoxLayout *>(" <<
1
e78566595089 initial import
mandel
parents:
diff changeset
817 m_driver->findOrInsertWidget(m_widgetChain.top()) << ".layout());\n";
e78566595089 initial import
mandel
parents:
diff changeset
818 m_output << m_option.indent << "if (" << tempName << ")\n";
e78566595089 initial import
mandel
parents:
diff changeset
819 m_output << m_option.indent << " " << tempName << ".addLayout(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
820 }
e78566595089 initial import
mandel
parents:
diff changeset
821
e78566595089 initial import
mandel
parents:
diff changeset
822 if (isGroupBox) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
823 m_output << m_option.indent << varName << ".setAlignment(Qt.AlignTop);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
824 } else {
e78566595089 initial import
mandel
parents:
diff changeset
825 // Suppress margin on a read child layout
e78566595089 initial import
mandel
parents:
diff changeset
826 const bool suppressMarginDefault = m_layoutChain.top();
e78566595089 initial import
mandel
parents:
diff changeset
827 int marginType = Use43UiFile;
e78566595089 initial import
mandel
parents:
diff changeset
828 if (oldLayoutProperties)
e78566595089 initial import
mandel
parents:
diff changeset
829 marginType = m_layoutMarginType;
e78566595089 initial import
mandel
parents:
diff changeset
830 m_LayoutDefaultHandler.writeProperties(m_option.indent, varName, properties, marginType, suppressMarginDefault, m_output);
e78566595089 initial import
mandel
parents:
diff changeset
831 }
e78566595089 initial import
mandel
parents:
diff changeset
832
e78566595089 initial import
mandel
parents:
diff changeset
833 m_layoutMarginType = SubLayoutMargin;
e78566595089 initial import
mandel
parents:
diff changeset
834
e78566595089 initial import
mandel
parents:
diff changeset
835 DomPropertyList propList = node->elementProperty();
e78566595089 initial import
mandel
parents:
diff changeset
836 if (m_layoutWidget) {
e78566595089 initial import
mandel
parents:
diff changeset
837 bool left, top, right, bottom;
e78566595089 initial import
mandel
parents:
diff changeset
838 left = top = right = bottom = false;
e78566595089 initial import
mandel
parents:
diff changeset
839 for (int i = 0; i < propList.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
840 const DomProperty *p = propList.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
841 const QString propertyName = p->attributeName();
e78566595089 initial import
mandel
parents:
diff changeset
842 if (propertyName == QLatin1String("leftMargin") && p->kind() == DomProperty::Number)
e78566595089 initial import
mandel
parents:
diff changeset
843 left = true;
e78566595089 initial import
mandel
parents:
diff changeset
844 else if (propertyName == QLatin1String("topMargin") && p->kind() == DomProperty::Number)
e78566595089 initial import
mandel
parents:
diff changeset
845 top = true;
e78566595089 initial import
mandel
parents:
diff changeset
846 else if (propertyName == QLatin1String("rightMargin") && p->kind() == DomProperty::Number)
e78566595089 initial import
mandel
parents:
diff changeset
847 right = true;
e78566595089 initial import
mandel
parents:
diff changeset
848 else if (propertyName == QLatin1String("bottomMargin") && p->kind() == DomProperty::Number)
e78566595089 initial import
mandel
parents:
diff changeset
849 bottom = true;
e78566595089 initial import
mandel
parents:
diff changeset
850 }
e78566595089 initial import
mandel
parents:
diff changeset
851 if (!left) {
e78566595089 initial import
mandel
parents:
diff changeset
852 DomProperty *p = new DomProperty();
e78566595089 initial import
mandel
parents:
diff changeset
853 p->setAttributeName(QLatin1String("leftMargin"));
e78566595089 initial import
mandel
parents:
diff changeset
854 p->setElementNumber(0);
e78566595089 initial import
mandel
parents:
diff changeset
855 propList.append(p);
e78566595089 initial import
mandel
parents:
diff changeset
856 }
e78566595089 initial import
mandel
parents:
diff changeset
857 if (!top) {
e78566595089 initial import
mandel
parents:
diff changeset
858 DomProperty *p = new DomProperty();
e78566595089 initial import
mandel
parents:
diff changeset
859 p->setAttributeName(QLatin1String("topMargin"));
e78566595089 initial import
mandel
parents:
diff changeset
860 p->setElementNumber(0);
e78566595089 initial import
mandel
parents:
diff changeset
861 propList.append(p);
e78566595089 initial import
mandel
parents:
diff changeset
862 }
e78566595089 initial import
mandel
parents:
diff changeset
863 if (!right) {
e78566595089 initial import
mandel
parents:
diff changeset
864 DomProperty *p = new DomProperty();
e78566595089 initial import
mandel
parents:
diff changeset
865 p->setAttributeName(QLatin1String("rightMargin"));
e78566595089 initial import
mandel
parents:
diff changeset
866 p->setElementNumber(0);
e78566595089 initial import
mandel
parents:
diff changeset
867 propList.append(p);
e78566595089 initial import
mandel
parents:
diff changeset
868 }
e78566595089 initial import
mandel
parents:
diff changeset
869 if (!bottom) {
e78566595089 initial import
mandel
parents:
diff changeset
870 DomProperty *p = new DomProperty();
e78566595089 initial import
mandel
parents:
diff changeset
871 p->setAttributeName(QLatin1String("bottomMargin"));
e78566595089 initial import
mandel
parents:
diff changeset
872 p->setElementNumber(0);
e78566595089 initial import
mandel
parents:
diff changeset
873 propList.append(p);
e78566595089 initial import
mandel
parents:
diff changeset
874 }
e78566595089 initial import
mandel
parents:
diff changeset
875 m_layoutWidget = false;
e78566595089 initial import
mandel
parents:
diff changeset
876 }
e78566595089 initial import
mandel
parents:
diff changeset
877
e78566595089 initial import
mandel
parents:
diff changeset
878 writeProperties(varName, className, propList, WritePropertyIgnoreMargin|WritePropertyIgnoreSpacing);
e78566595089 initial import
mandel
parents:
diff changeset
879
e78566595089 initial import
mandel
parents:
diff changeset
880 m_layoutChain.push(node);
e78566595089 initial import
mandel
parents:
diff changeset
881 TreeWalker::acceptLayout(node);
e78566595089 initial import
mandel
parents:
diff changeset
882 m_layoutChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
883 }
e78566595089 initial import
mandel
parents:
diff changeset
884
e78566595089 initial import
mandel
parents:
diff changeset
885 void WriteInitialization::acceptSpacer(DomSpacer *node)
e78566595089 initial import
mandel
parents:
diff changeset
886 {
e78566595089 initial import
mandel
parents:
diff changeset
887 m_output << m_option.indent << m_driver->findOrInsertSpacer(node) << " = ";
e78566595089 initial import
mandel
parents:
diff changeset
888 writeSpacerItem(node, m_output);
e78566595089 initial import
mandel
parents:
diff changeset
889 m_output << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
890 }
e78566595089 initial import
mandel
parents:
diff changeset
891
e78566595089 initial import
mandel
parents:
diff changeset
892 void WriteInitialization::acceptLayoutItem(DomLayoutItem *node)
e78566595089 initial import
mandel
parents:
diff changeset
893 {
e78566595089 initial import
mandel
parents:
diff changeset
894 TreeWalker::acceptLayoutItem(node);
e78566595089 initial import
mandel
parents:
diff changeset
895
e78566595089 initial import
mandel
parents:
diff changeset
896 DomLayout *layout = m_layoutChain.top();
e78566595089 initial import
mandel
parents:
diff changeset
897
e78566595089 initial import
mandel
parents:
diff changeset
898 if (!layout)
e78566595089 initial import
mandel
parents:
diff changeset
899 return;
e78566595089 initial import
mandel
parents:
diff changeset
900
e78566595089 initial import
mandel
parents:
diff changeset
901 const QString layoutName = m_driver->findOrInsertLayout(layout);
e78566595089 initial import
mandel
parents:
diff changeset
902 const QString itemName = m_driver->findOrInsertLayoutItem(node);
e78566595089 initial import
mandel
parents:
diff changeset
903
e78566595089 initial import
mandel
parents:
diff changeset
904 QString addArgs;
e78566595089 initial import
mandel
parents:
diff changeset
905 QString methodPrefix = QLatin1String("add"); //Consistent API-design galore!
e78566595089 initial import
mandel
parents:
diff changeset
906 if (layout->attributeClass() == QLatin1String("QGridLayout")) {
e78566595089 initial import
mandel
parents:
diff changeset
907 const int row = node->attributeRow();
e78566595089 initial import
mandel
parents:
diff changeset
908 const int col = node->attributeColumn();
e78566595089 initial import
mandel
parents:
diff changeset
909
e78566595089 initial import
mandel
parents:
diff changeset
910 int rowSpan = 1;
e78566595089 initial import
mandel
parents:
diff changeset
911 if (node->hasAttributeRowSpan())
e78566595089 initial import
mandel
parents:
diff changeset
912 rowSpan = node->attributeRowSpan();
e78566595089 initial import
mandel
parents:
diff changeset
913
e78566595089 initial import
mandel
parents:
diff changeset
914 int colSpan = 1;
e78566595089 initial import
mandel
parents:
diff changeset
915 if (node->hasAttributeColSpan())
e78566595089 initial import
mandel
parents:
diff changeset
916 colSpan = node->attributeColSpan();
e78566595089 initial import
mandel
parents:
diff changeset
917
e78566595089 initial import
mandel
parents:
diff changeset
918 addArgs = QString::fromLatin1("%1, %2, %3, %4, %5").arg(itemName).arg(row).arg(col).arg(rowSpan).arg(colSpan);
e78566595089 initial import
mandel
parents:
diff changeset
919 } else {
e78566595089 initial import
mandel
parents:
diff changeset
920 if (layout->attributeClass() == QLatin1String("QFormLayout")) {
e78566595089 initial import
mandel
parents:
diff changeset
921 methodPrefix = QLatin1String("set");
e78566595089 initial import
mandel
parents:
diff changeset
922 const int row = node->attributeRow();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
923 const QString role = node->attributeColumn() == 0 ? QLatin1String("QFormLayout.LabelRole") : QLatin1String("QFormLayout.FieldRole");
1
e78566595089 initial import
mandel
parents:
diff changeset
924 addArgs = QString::fromLatin1("%1, %2, %3").arg(row).arg(role).arg(itemName);
e78566595089 initial import
mandel
parents:
diff changeset
925 } else {
e78566595089 initial import
mandel
parents:
diff changeset
926 addArgs = itemName;
e78566595089 initial import
mandel
parents:
diff changeset
927 }
e78566595089 initial import
mandel
parents:
diff changeset
928 }
e78566595089 initial import
mandel
parents:
diff changeset
929
e78566595089 initial import
mandel
parents:
diff changeset
930 // figure out "add" method
e78566595089 initial import
mandel
parents:
diff changeset
931 m_output << "\n" << m_option.indent << layoutName << ".";
e78566595089 initial import
mandel
parents:
diff changeset
932 switch (node->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
933 case DomLayoutItem::Widget:
e78566595089 initial import
mandel
parents:
diff changeset
934 m_output << methodPrefix << "Widget(" << addArgs;
e78566595089 initial import
mandel
parents:
diff changeset
935 break;
e78566595089 initial import
mandel
parents:
diff changeset
936 case DomLayoutItem::Layout:
e78566595089 initial import
mandel
parents:
diff changeset
937 m_output << methodPrefix << "Layout(" << addArgs;
e78566595089 initial import
mandel
parents:
diff changeset
938 break;
e78566595089 initial import
mandel
parents:
diff changeset
939 case DomLayoutItem::Spacer:
e78566595089 initial import
mandel
parents:
diff changeset
940 m_output << methodPrefix << "Item(" << addArgs;
e78566595089 initial import
mandel
parents:
diff changeset
941 break;
e78566595089 initial import
mandel
parents:
diff changeset
942 case DomLayoutItem::Unknown:
e78566595089 initial import
mandel
parents:
diff changeset
943 Q_ASSERT( 0 );
e78566595089 initial import
mandel
parents:
diff changeset
944 break;
e78566595089 initial import
mandel
parents:
diff changeset
945 }
e78566595089 initial import
mandel
parents:
diff changeset
946 m_output << ");\n\n";
e78566595089 initial import
mandel
parents:
diff changeset
947 }
e78566595089 initial import
mandel
parents:
diff changeset
948
e78566595089 initial import
mandel
parents:
diff changeset
949 void WriteInitialization::acceptActionGroup(DomActionGroup *node)
e78566595089 initial import
mandel
parents:
diff changeset
950 {
e78566595089 initial import
mandel
parents:
diff changeset
951 const QString actionName = m_driver->findOrInsertActionGroup(node);
e78566595089 initial import
mandel
parents:
diff changeset
952 QString varName = m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
953
e78566595089 initial import
mandel
parents:
diff changeset
954 if (m_actionGroupChain.top())
e78566595089 initial import
mandel
parents:
diff changeset
955 varName = m_driver->findOrInsertActionGroup(m_actionGroupChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
956
e78566595089 initial import
mandel
parents:
diff changeset
957 m_output << m_option.indent << actionName << " = new QActionGroup(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
958 writeProperties(actionName, QLatin1String("QActionGroup"), node->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
959
e78566595089 initial import
mandel
parents:
diff changeset
960 m_actionGroupChain.push(node);
e78566595089 initial import
mandel
parents:
diff changeset
961 TreeWalker::acceptActionGroup(node);
e78566595089 initial import
mandel
parents:
diff changeset
962 m_actionGroupChain.pop();
e78566595089 initial import
mandel
parents:
diff changeset
963 }
e78566595089 initial import
mandel
parents:
diff changeset
964
e78566595089 initial import
mandel
parents:
diff changeset
965 void WriteInitialization::acceptAction(DomAction *node)
e78566595089 initial import
mandel
parents:
diff changeset
966 {
e78566595089 initial import
mandel
parents:
diff changeset
967 if (node->hasAttributeMenu())
e78566595089 initial import
mandel
parents:
diff changeset
968 return;
e78566595089 initial import
mandel
parents:
diff changeset
969
e78566595089 initial import
mandel
parents:
diff changeset
970 const QString actionName = m_driver->findOrInsertAction(node);
e78566595089 initial import
mandel
parents:
diff changeset
971 m_registeredActions.insert(actionName, node);
e78566595089 initial import
mandel
parents:
diff changeset
972 QString varName = m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
973
e78566595089 initial import
mandel
parents:
diff changeset
974 if (m_actionGroupChain.top())
e78566595089 initial import
mandel
parents:
diff changeset
975 varName = m_driver->findOrInsertActionGroup(m_actionGroupChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
976
e78566595089 initial import
mandel
parents:
diff changeset
977 m_output << m_option.indent << actionName << " = new QAction(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
978 writeProperties(actionName, QLatin1String("QAction"), node->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
979 }
e78566595089 initial import
mandel
parents:
diff changeset
980
e78566595089 initial import
mandel
parents:
diff changeset
981 void WriteInitialization::acceptActionRef(DomActionRef *node)
e78566595089 initial import
mandel
parents:
diff changeset
982 {
e78566595089 initial import
mandel
parents:
diff changeset
983 QString actionName = node->attributeName();
e78566595089 initial import
mandel
parents:
diff changeset
984 const bool isSeparator = actionName == QLatin1String("separator");
e78566595089 initial import
mandel
parents:
diff changeset
985 bool isMenu = false;
e78566595089 initial import
mandel
parents:
diff changeset
986
e78566595089 initial import
mandel
parents:
diff changeset
987 QString varName = m_driver->findOrInsertWidget(m_widgetChain.top());
e78566595089 initial import
mandel
parents:
diff changeset
988
e78566595089 initial import
mandel
parents:
diff changeset
989 if (actionName.isEmpty() || !m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
990 return;
e78566595089 initial import
mandel
parents:
diff changeset
991 } else if (m_driver->actionGroupByName(actionName)) {
e78566595089 initial import
mandel
parents:
diff changeset
992 return;
e78566595089 initial import
mandel
parents:
diff changeset
993 } else if (DomWidget *w = m_driver->widgetByName(actionName)) {
e78566595089 initial import
mandel
parents:
diff changeset
994 isMenu = m_uic->isMenu(w->attributeClass());
e78566595089 initial import
mandel
parents:
diff changeset
995 bool inQ3ToolBar = m_uic->customWidgetsInfo()->extends(m_widgetChain.top()->attributeClass(), QLatin1String("Q3ToolBar"));
e78566595089 initial import
mandel
parents:
diff changeset
996 if (!isMenu && inQ3ToolBar) {
e78566595089 initial import
mandel
parents:
diff changeset
997 m_actionOut << m_option.indent << actionName << ".setParent(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
998 return;
e78566595089 initial import
mandel
parents:
diff changeset
999 }
e78566595089 initial import
mandel
parents:
diff changeset
1000 } else if (!(m_driver->actionByName(actionName) || isSeparator)) {
e78566595089 initial import
mandel
parents:
diff changeset
1001 fprintf(stderr, "Warning: action `%s' not declared\n", actionName.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
1002 return;
e78566595089 initial import
mandel
parents:
diff changeset
1003 }
e78566595089 initial import
mandel
parents:
diff changeset
1004
e78566595089 initial import
mandel
parents:
diff changeset
1005 if (m_widgetChain.top() && isSeparator) {
e78566595089 initial import
mandel
parents:
diff changeset
1006 // separator is always reserved!
e78566595089 initial import
mandel
parents:
diff changeset
1007 m_actionOut << m_option.indent << varName << ".addSeparator();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1008 return;
e78566595089 initial import
mandel
parents:
diff changeset
1009 }
e78566595089 initial import
mandel
parents:
diff changeset
1010
e78566595089 initial import
mandel
parents:
diff changeset
1011 if (isMenu)
e78566595089 initial import
mandel
parents:
diff changeset
1012 actionName += QLatin1String(".menuAction()");
e78566595089 initial import
mandel
parents:
diff changeset
1013
e78566595089 initial import
mandel
parents:
diff changeset
1014 m_actionOut << m_option.indent << varName << ".addAction(" << actionName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1015 }
e78566595089 initial import
mandel
parents:
diff changeset
1016
e78566595089 initial import
mandel
parents:
diff changeset
1017 void WriteInitialization::writeProperties(const QString &varName,
e78566595089 initial import
mandel
parents:
diff changeset
1018 const QString &className,
e78566595089 initial import
mandel
parents:
diff changeset
1019 const DomPropertyList &lst,
e78566595089 initial import
mandel
parents:
diff changeset
1020 unsigned flags)
e78566595089 initial import
mandel
parents:
diff changeset
1021 {
e78566595089 initial import
mandel
parents:
diff changeset
1022 const bool isTopLevel = m_widgetChain.count() == 1;
e78566595089 initial import
mandel
parents:
diff changeset
1023
e78566595089 initial import
mandel
parents:
diff changeset
1024 if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QAxWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1025 DomPropertyMap properties = propertyMap(lst);
e78566595089 initial import
mandel
parents:
diff changeset
1026 if (properties.contains(QLatin1String("control"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1027 DomProperty *p = properties.value(QLatin1String("control"));
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1028 m_output << m_option.indent << varName << ".setControl(QStringUtil.fromUtf8("
1
e78566595089 initial import
mandel
parents:
diff changeset
1029 << fixString(toString(p->elementString()), m_option.indent) << "));\n";
e78566595089 initial import
mandel
parents:
diff changeset
1030 }
e78566595089 initial import
mandel
parents:
diff changeset
1031 }
e78566595089 initial import
mandel
parents:
diff changeset
1032
e78566595089 initial import
mandel
parents:
diff changeset
1033 DomWidget *buttonGroupWidget = findWidget(QLatin1String("Q3ButtonGroup"));
e78566595089 initial import
mandel
parents:
diff changeset
1034
e78566595089 initial import
mandel
parents:
diff changeset
1035 QString indent;
e78566595089 initial import
mandel
parents:
diff changeset
1036 if (!m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
1037 indent = QLatin1String(" ");
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
1038 m_output << m_option.indent << "if (" << varName << ".objectName().length == 0)\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1039 }
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1040 m_output << m_option.indent << indent << varName << ".setObjectName(QStringUtil.fromUtf8(" << fixString(varName, m_option.indent) << "));\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1041
e78566595089 initial import
mandel
parents:
diff changeset
1042 int leftMargin, topMargin, rightMargin, bottomMargin;
e78566595089 initial import
mandel
parents:
diff changeset
1043 leftMargin = topMargin = rightMargin = bottomMargin = -1;
e78566595089 initial import
mandel
parents:
diff changeset
1044 bool frameShadowEncountered = false;
e78566595089 initial import
mandel
parents:
diff changeset
1045
e78566595089 initial import
mandel
parents:
diff changeset
1046 for (int i=0; i<lst.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1047 const DomProperty *p = lst.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1048 if (!checkProperty(m_option.inputFile, p))
e78566595089 initial import
mandel
parents:
diff changeset
1049 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1050 const QString propertyName = p->attributeName();
e78566595089 initial import
mandel
parents:
diff changeset
1051 QString propertyValue;
e78566595089 initial import
mandel
parents:
diff changeset
1052
e78566595089 initial import
mandel
parents:
diff changeset
1053 // special case for the property `geometry': Do not use position
e78566595089 initial import
mandel
parents:
diff changeset
1054 if (isTopLevel && propertyName == QLatin1String("geometry") && p->elementRect()) {
e78566595089 initial import
mandel
parents:
diff changeset
1055 const DomRect *r = p->elementRect();
e78566595089 initial import
mandel
parents:
diff changeset
1056 m_output << m_option.indent << varName << ".resize(" << r->elementWidth() << ", " << r->elementHeight() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1057 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1058 } else if (propertyName == QLatin1String("buttonGroupId") && buttonGroupWidget) { // Q3ButtonGroup support
e78566595089 initial import
mandel
parents:
diff changeset
1059 m_output << m_option.indent << m_driver->findOrInsertWidget(buttonGroupWidget) << ".insert("
e78566595089 initial import
mandel
parents:
diff changeset
1060 << varName << ", " << p->elementNumber() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1061 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1062 } else if (propertyName == QLatin1String("currentRow") // QListWidget::currentRow
e78566595089 initial import
mandel
parents:
diff changeset
1063 && m_uic->customWidgetsInfo()->extends(className, QLatin1String("QListWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1064 m_delayedOut << m_option.indent << varName << ".setCurrentRow("
e78566595089 initial import
mandel
parents:
diff changeset
1065 << p->elementNumber() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1066 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1067 } else if (propertyName == QLatin1String("currentIndex") // set currentIndex later
e78566595089 initial import
mandel
parents:
diff changeset
1068 && (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QComboBox"))
e78566595089 initial import
mandel
parents:
diff changeset
1069 || m_uic->customWidgetsInfo()->extends(className, QLatin1String("QStackedWidget"))
e78566595089 initial import
mandel
parents:
diff changeset
1070 || m_uic->customWidgetsInfo()->extends(className, QLatin1String("QTabWidget"))
e78566595089 initial import
mandel
parents:
diff changeset
1071 || m_uic->customWidgetsInfo()->extends(className, QLatin1String("QToolBox")))) {
e78566595089 initial import
mandel
parents:
diff changeset
1072 m_delayedOut << m_option.indent << varName << ".setCurrentIndex("
e78566595089 initial import
mandel
parents:
diff changeset
1073 << p->elementNumber() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1074 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1075 } else if (propertyName == QLatin1String("tabSpacing")
e78566595089 initial import
mandel
parents:
diff changeset
1076 && m_uic->customWidgetsInfo()->extends(className, QLatin1String("QToolBox"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1077 m_delayedOut << m_option.indent << varName << ".layout()->setSpacing("
e78566595089 initial import
mandel
parents:
diff changeset
1078 << p->elementNumber() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1079 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1080 } else if (propertyName == QLatin1String("control") // ActiveQt support
e78566595089 initial import
mandel
parents:
diff changeset
1081 && m_uic->customWidgetsInfo()->extends(className, QLatin1String("QAxWidget"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1082 // already done ;)
e78566595089 initial import
mandel
parents:
diff changeset
1083 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1084 } else if (propertyName == QLatin1String("database")
e78566595089 initial import
mandel
parents:
diff changeset
1085 && p->elementStringList()) {
e78566595089 initial import
mandel
parents:
diff changeset
1086 // Sql support
e78566595089 initial import
mandel
parents:
diff changeset
1087 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1088 } else if (propertyName == QLatin1String("frameworkCode")
e78566595089 initial import
mandel
parents:
diff changeset
1089 && p->kind() == DomProperty::Bool) {
e78566595089 initial import
mandel
parents:
diff changeset
1090 // Sql support
e78566595089 initial import
mandel
parents:
diff changeset
1091 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1092 } else if (propertyName == QLatin1String("orientation")
e78566595089 initial import
mandel
parents:
diff changeset
1093 && m_uic->customWidgetsInfo()->extends(className, QLatin1String("Line"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1094 // Line support
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1095 QString shape = QLatin1String("QFrame.HLine");
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1096 if (p->elementEnum() == QLatin1String("Qt.Vertical"))
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1097 shape = QLatin1String("QFrame.VLine");
1
e78566595089 initial import
mandel
parents:
diff changeset
1098
e78566595089 initial import
mandel
parents:
diff changeset
1099 m_output << m_option.indent << varName << ".setFrameShape(" << shape << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1100 // QFrame Default is 'Plain'. Make the line 'Sunken' unless otherwise specified
e78566595089 initial import
mandel
parents:
diff changeset
1101 if (!frameShadowEncountered)
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1102 m_output << m_option.indent << varName << ".setFrameShadow(QFrame.Sunken);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1103 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1104 } else if ((flags & WritePropertyIgnoreMargin) && propertyName == QLatin1String("margin")) {
e78566595089 initial import
mandel
parents:
diff changeset
1105 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1106 } else if ((flags & WritePropertyIgnoreSpacing) && propertyName == QLatin1String("spacing")) {
e78566595089 initial import
mandel
parents:
diff changeset
1107 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1108 } else if (propertyName == QLatin1String("leftMargin") && p->kind() == DomProperty::Number) {
e78566595089 initial import
mandel
parents:
diff changeset
1109 leftMargin = p->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
1110 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1111 } else if (propertyName == QLatin1String("topMargin") && p->kind() == DomProperty::Number) {
e78566595089 initial import
mandel
parents:
diff changeset
1112 topMargin = p->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
1113 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1114 } else if (propertyName == QLatin1String("rightMargin") && p->kind() == DomProperty::Number) {
e78566595089 initial import
mandel
parents:
diff changeset
1115 rightMargin = p->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
1116 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1117 } else if (propertyName == QLatin1String("bottomMargin") && p->kind() == DomProperty::Number) {
e78566595089 initial import
mandel
parents:
diff changeset
1118 bottomMargin = p->elementNumber();
e78566595089 initial import
mandel
parents:
diff changeset
1119 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1120 } else if (propertyName == QLatin1String("frameShadow"))
e78566595089 initial import
mandel
parents:
diff changeset
1121 frameShadowEncountered = true;
e78566595089 initial import
mandel
parents:
diff changeset
1122
e78566595089 initial import
mandel
parents:
diff changeset
1123 bool stdset = m_stdsetdef;
e78566595089 initial import
mandel
parents:
diff changeset
1124 if (p->hasAttributeStdset())
e78566595089 initial import
mandel
parents:
diff changeset
1125 stdset = p->attributeStdset();
e78566595089 initial import
mandel
parents:
diff changeset
1126
e78566595089 initial import
mandel
parents:
diff changeset
1127 QString setFunction;
e78566595089 initial import
mandel
parents:
diff changeset
1128
e78566595089 initial import
mandel
parents:
diff changeset
1129 if (stdset) {
e78566595089 initial import
mandel
parents:
diff changeset
1130 setFunction = QLatin1String(".set");
e78566595089 initial import
mandel
parents:
diff changeset
1131 setFunction += propertyName.left(1).toUpper();
e78566595089 initial import
mandel
parents:
diff changeset
1132 setFunction += propertyName.mid(1);
e78566595089 initial import
mandel
parents:
diff changeset
1133 setFunction += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1134 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1135 setFunction = QLatin1String(".setProperty(\"");
e78566595089 initial import
mandel
parents:
diff changeset
1136 setFunction += propertyName;
e78566595089 initial import
mandel
parents:
diff changeset
1137 setFunction += QLatin1String("\", QVariant(");
e78566595089 initial import
mandel
parents:
diff changeset
1138 }
e78566595089 initial import
mandel
parents:
diff changeset
1139
e78566595089 initial import
mandel
parents:
diff changeset
1140 QString varNewName = varName;
e78566595089 initial import
mandel
parents:
diff changeset
1141
e78566595089 initial import
mandel
parents:
diff changeset
1142 switch (p->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
1143 case DomProperty::Bool: {
e78566595089 initial import
mandel
parents:
diff changeset
1144 propertyValue = p->elementBool();
e78566595089 initial import
mandel
parents:
diff changeset
1145 break;
e78566595089 initial import
mandel
parents:
diff changeset
1146 }
e78566595089 initial import
mandel
parents:
diff changeset
1147 case DomProperty::Color:
e78566595089 initial import
mandel
parents:
diff changeset
1148 propertyValue = domColor2QString(p->elementColor());
e78566595089 initial import
mandel
parents:
diff changeset
1149 break;
e78566595089 initial import
mandel
parents:
diff changeset
1150 case DomProperty::Cstring:
e78566595089 initial import
mandel
parents:
diff changeset
1151 if (propertyName == QLatin1String("buddy") && m_uic->customWidgetsInfo()->extends(className, QLatin1String("QLabel"))) {
e78566595089 initial import
mandel
parents:
diff changeset
1152 m_buddies.append(Buddy(varName, p->elementCstring()));
e78566595089 initial import
mandel
parents:
diff changeset
1153 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1154 if (stdset)
e78566595089 initial import
mandel
parents:
diff changeset
1155 propertyValue = fixString(p->elementCstring(), m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1156 else {
e78566595089 initial import
mandel
parents:
diff changeset
1157 propertyValue = QLatin1String("QByteArray(");
e78566595089 initial import
mandel
parents:
diff changeset
1158 propertyValue += fixString(p->elementCstring(), m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1159 propertyValue += QLatin1Char(')');
e78566595089 initial import
mandel
parents:
diff changeset
1160 }
e78566595089 initial import
mandel
parents:
diff changeset
1161 }
e78566595089 initial import
mandel
parents:
diff changeset
1162 break;
e78566595089 initial import
mandel
parents:
diff changeset
1163 case DomProperty::Cursor:
83
c64698c80409 duic: apply cursor.patch from denis.
SokoL_SD
parents: 82
diff changeset
1164 propertyValue = QString::fromLatin1("new QCursor(cast(Qt.CursorShape)(%1))")
1
e78566595089 initial import
mandel
parents:
diff changeset
1165 .arg(p->elementCursor());
e78566595089 initial import
mandel
parents:
diff changeset
1166 break;
e78566595089 initial import
mandel
parents:
diff changeset
1167 case DomProperty::CursorShape:
e78566595089 initial import
mandel
parents:
diff changeset
1168 if (p->hasAttributeStdset() && !p->attributeStdset())
e78566595089 initial import
mandel
parents:
diff changeset
1169 varNewName += QLatin1String(".viewport()");
83
c64698c80409 duic: apply cursor.patch from denis.
SokoL_SD
parents: 82
diff changeset
1170 propertyValue = QString::fromLatin1("new QCursor(Qt.%1)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1171 .arg(p->elementCursorShape());
e78566595089 initial import
mandel
parents:
diff changeset
1172 break;
e78566595089 initial import
mandel
parents:
diff changeset
1173 case DomProperty::Enum:
e78566595089 initial import
mandel
parents:
diff changeset
1174 propertyValue = p->elementEnum();
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
1175 if (!propertyValue.contains(QLatin1String("::"))) {
1
e78566595089 initial import
mandel
parents:
diff changeset
1176 QString scope = className;
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
1177 scope += QLatin1String("::");
1
e78566595089 initial import
mandel
parents:
diff changeset
1178 propertyValue.prepend(scope);
e78566595089 initial import
mandel
parents:
diff changeset
1179 }
e78566595089 initial import
mandel
parents:
diff changeset
1180 break;
e78566595089 initial import
mandel
parents:
diff changeset
1181 case DomProperty::Set:
e78566595089 initial import
mandel
parents:
diff changeset
1182 propertyValue = p->elementSet();
e78566595089 initial import
mandel
parents:
diff changeset
1183 break;
e78566595089 initial import
mandel
parents:
diff changeset
1184 case DomProperty::Font:
e78566595089 initial import
mandel
parents:
diff changeset
1185 propertyValue = writeFontProperties(p->elementFont());
e78566595089 initial import
mandel
parents:
diff changeset
1186 break;
e78566595089 initial import
mandel
parents:
diff changeset
1187 case DomProperty::IconSet:
e78566595089 initial import
mandel
parents:
diff changeset
1188 propertyValue = writeIconProperties(p->elementIconSet());
e78566595089 initial import
mandel
parents:
diff changeset
1189 break;
e78566595089 initial import
mandel
parents:
diff changeset
1190 case DomProperty::Pixmap:
e78566595089 initial import
mandel
parents:
diff changeset
1191 propertyValue = pixCall(p);
e78566595089 initial import
mandel
parents:
diff changeset
1192 break;
e78566595089 initial import
mandel
parents:
diff changeset
1193 case DomProperty::Palette: {
e78566595089 initial import
mandel
parents:
diff changeset
1194 const DomPalette *pal = p->elementPalette();
e78566595089 initial import
mandel
parents:
diff changeset
1195 const QString paletteName = m_driver->unique(QLatin1String("palette"));
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1196 m_output << m_option.indent << "auto " << paletteName << " = new QPalette;\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1197
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1198 writeColorGroup(pal->elementActive(), QLatin1String("QPalette.Active"), paletteName);
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1199 writeColorGroup(pal->elementInactive(), QLatin1String("QPalette.Inactive"), paletteName);
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1200 writeColorGroup(pal->elementDisabled(), QLatin1String("QPalette.Disabled"), paletteName);
1
e78566595089 initial import
mandel
parents:
diff changeset
1201
e78566595089 initial import
mandel
parents:
diff changeset
1202 propertyValue = paletteName;
e78566595089 initial import
mandel
parents:
diff changeset
1203 break;
e78566595089 initial import
mandel
parents:
diff changeset
1204 }
e78566595089 initial import
mandel
parents:
diff changeset
1205 case DomProperty::Point: {
e78566595089 initial import
mandel
parents:
diff changeset
1206 const DomPoint *po = p->elementPoint();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1207 propertyValue = QString::fromLatin1("QPoint(%1, %2)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1208 .arg(po->elementX()).arg(po->elementY());
e78566595089 initial import
mandel
parents:
diff changeset
1209 break;
e78566595089 initial import
mandel
parents:
diff changeset
1210 }
e78566595089 initial import
mandel
parents:
diff changeset
1211 case DomProperty::PointF: {
e78566595089 initial import
mandel
parents:
diff changeset
1212 const DomPointF *pof = p->elementPointF();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1213 propertyValue = QString::fromLatin1("QPointF(%1, %2)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1214 .arg(pof->elementX()).arg(pof->elementY());
e78566595089 initial import
mandel
parents:
diff changeset
1215 break;
e78566595089 initial import
mandel
parents:
diff changeset
1216 }
e78566595089 initial import
mandel
parents:
diff changeset
1217 case DomProperty::Rect: {
e78566595089 initial import
mandel
parents:
diff changeset
1218 const DomRect *r = p->elementRect();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1219 propertyValue = QString::fromLatin1("QRect(%1, %2, %3, %4)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1220 .arg(r->elementX()).arg(r->elementY())
e78566595089 initial import
mandel
parents:
diff changeset
1221 .arg(r->elementWidth()).arg(r->elementHeight());
e78566595089 initial import
mandel
parents:
diff changeset
1222 break;
e78566595089 initial import
mandel
parents:
diff changeset
1223 }
e78566595089 initial import
mandel
parents:
diff changeset
1224 case DomProperty::RectF: {
e78566595089 initial import
mandel
parents:
diff changeset
1225 const DomRectF *rf = p->elementRectF();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1226 propertyValue = QString::fromLatin1("QRectF(%1, %2, %3, %4)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1227 .arg(rf->elementX()).arg(rf->elementY())
e78566595089 initial import
mandel
parents:
diff changeset
1228 .arg(rf->elementWidth()).arg(rf->elementHeight());
e78566595089 initial import
mandel
parents:
diff changeset
1229 break;
e78566595089 initial import
mandel
parents:
diff changeset
1230 }
e78566595089 initial import
mandel
parents:
diff changeset
1231 case DomProperty::Locale: {
e78566595089 initial import
mandel
parents:
diff changeset
1232 const DomLocale *locale = p->elementLocale();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1233 propertyValue = QString::fromLatin1("QLocale(QLocale.%1, QLocale.%2)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1234 .arg(locale->attributeLanguage()).arg(locale->attributeCountry());
e78566595089 initial import
mandel
parents:
diff changeset
1235 break;
e78566595089 initial import
mandel
parents:
diff changeset
1236 }
e78566595089 initial import
mandel
parents:
diff changeset
1237 case DomProperty::SizePolicy: {
e78566595089 initial import
mandel
parents:
diff changeset
1238 const QString spName = writeSizePolicy( p->elementSizePolicy());
e78566595089 initial import
mandel
parents:
diff changeset
1239 m_output << m_option.indent << spName << QString::fromLatin1(
e78566595089 initial import
mandel
parents:
diff changeset
1240 ".setHeightForWidth(%1.sizePolicy().hasHeightForWidth());\n")
e78566595089 initial import
mandel
parents:
diff changeset
1241 .arg(varName);
e78566595089 initial import
mandel
parents:
diff changeset
1242
e78566595089 initial import
mandel
parents:
diff changeset
1243 propertyValue = spName;
e78566595089 initial import
mandel
parents:
diff changeset
1244 break;
e78566595089 initial import
mandel
parents:
diff changeset
1245 }
e78566595089 initial import
mandel
parents:
diff changeset
1246 case DomProperty::Size: {
e78566595089 initial import
mandel
parents:
diff changeset
1247 const DomSize *s = p->elementSize();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1248 propertyValue = QString::fromLatin1("QSize(%1, %2)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1249 .arg(s->elementWidth()).arg(s->elementHeight());
e78566595089 initial import
mandel
parents:
diff changeset
1250 break;
e78566595089 initial import
mandel
parents:
diff changeset
1251 }
e78566595089 initial import
mandel
parents:
diff changeset
1252 case DomProperty::SizeF: {
e78566595089 initial import
mandel
parents:
diff changeset
1253 const DomSizeF *sf = p->elementSizeF();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1254 propertyValue = QString::fromLatin1("QSizeF(%1, %2)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1255 .arg(sf->elementWidth()).arg(sf->elementHeight());
e78566595089 initial import
mandel
parents:
diff changeset
1256 break;
e78566595089 initial import
mandel
parents:
diff changeset
1257 }
e78566595089 initial import
mandel
parents:
diff changeset
1258 case DomProperty::String: {
e78566595089 initial import
mandel
parents:
diff changeset
1259 if (propertyName == QLatin1String("objectName")) {
e78566595089 initial import
mandel
parents:
diff changeset
1260 const QString v = p->elementString()->text();
e78566595089 initial import
mandel
parents:
diff changeset
1261 if (v == varName)
e78566595089 initial import
mandel
parents:
diff changeset
1262 break;
e78566595089 initial import
mandel
parents:
diff changeset
1263
e78566595089 initial import
mandel
parents:
diff changeset
1264 // ### qWarning("Deprecated: the property `objectName' is different from the variable name");
e78566595089 initial import
mandel
parents:
diff changeset
1265 }
e78566595089 initial import
mandel
parents:
diff changeset
1266
e78566595089 initial import
mandel
parents:
diff changeset
1267 if (p->elementString()->hasAttributeNotr()
e78566595089 initial import
mandel
parents:
diff changeset
1268 && toBool(p->elementString()->attributeNotr())) {
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1269 propertyValue = QLatin1String("QStringUtil.fromUtf8(");
1
e78566595089 initial import
mandel
parents:
diff changeset
1270 propertyValue += fixString(p->elementString()->text(), m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1271 propertyValue += QLatin1Char(')');
e78566595089 initial import
mandel
parents:
diff changeset
1272 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1273 propertyValue = trCall(p->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
1274 }
e78566595089 initial import
mandel
parents:
diff changeset
1275 break;
e78566595089 initial import
mandel
parents:
diff changeset
1276 }
e78566595089 initial import
mandel
parents:
diff changeset
1277 case DomProperty::Number:
e78566595089 initial import
mandel
parents:
diff changeset
1278 propertyValue = QString::number(p->elementNumber());
e78566595089 initial import
mandel
parents:
diff changeset
1279 break;
e78566595089 initial import
mandel
parents:
diff changeset
1280 case DomProperty::UInt:
e78566595089 initial import
mandel
parents:
diff changeset
1281 propertyValue = QString::number(p->elementUInt());
e78566595089 initial import
mandel
parents:
diff changeset
1282 propertyValue += QLatin1Char('u');
e78566595089 initial import
mandel
parents:
diff changeset
1283 break;
e78566595089 initial import
mandel
parents:
diff changeset
1284 case DomProperty::LongLong:
e78566595089 initial import
mandel
parents:
diff changeset
1285 propertyValue = QLatin1String("Q_INT64_C(");
e78566595089 initial import
mandel
parents:
diff changeset
1286 propertyValue += QString::number(p->elementLongLong());
e78566595089 initial import
mandel
parents:
diff changeset
1287 propertyValue += QLatin1Char(')');;
e78566595089 initial import
mandel
parents:
diff changeset
1288 break;
e78566595089 initial import
mandel
parents:
diff changeset
1289 case DomProperty::ULongLong:
e78566595089 initial import
mandel
parents:
diff changeset
1290 propertyValue = QLatin1String("Q_UINT64_C(");
e78566595089 initial import
mandel
parents:
diff changeset
1291 propertyValue += QString::number(p->elementULongLong());
e78566595089 initial import
mandel
parents:
diff changeset
1292 propertyValue += QLatin1Char(')');
e78566595089 initial import
mandel
parents:
diff changeset
1293 break;
e78566595089 initial import
mandel
parents:
diff changeset
1294 case DomProperty::Float:
e78566595089 initial import
mandel
parents:
diff changeset
1295 propertyValue = QString::number(p->elementFloat());
e78566595089 initial import
mandel
parents:
diff changeset
1296 break;
e78566595089 initial import
mandel
parents:
diff changeset
1297 case DomProperty::Double:
e78566595089 initial import
mandel
parents:
diff changeset
1298 propertyValue = QString::number(p->elementDouble());
e78566595089 initial import
mandel
parents:
diff changeset
1299 break;
e78566595089 initial import
mandel
parents:
diff changeset
1300 case DomProperty::Char: {
e78566595089 initial import
mandel
parents:
diff changeset
1301 const DomChar *c = p->elementChar();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1302 propertyValue = QString::fromLatin1("QChar(%1)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1303 .arg(c->elementUnicode());
e78566595089 initial import
mandel
parents:
diff changeset
1304 break;
e78566595089 initial import
mandel
parents:
diff changeset
1305 }
e78566595089 initial import
mandel
parents:
diff changeset
1306 case DomProperty::Date: {
e78566595089 initial import
mandel
parents:
diff changeset
1307 const DomDate *d = p->elementDate();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1308 propertyValue = QString::fromLatin1("QDate(%1, %2, %3)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1309 .arg(d->elementYear())
e78566595089 initial import
mandel
parents:
diff changeset
1310 .arg(d->elementMonth())
e78566595089 initial import
mandel
parents:
diff changeset
1311 .arg(d->elementDay());
e78566595089 initial import
mandel
parents:
diff changeset
1312 break;
e78566595089 initial import
mandel
parents:
diff changeset
1313 }
e78566595089 initial import
mandel
parents:
diff changeset
1314 case DomProperty::Time: {
e78566595089 initial import
mandel
parents:
diff changeset
1315 const DomTime *t = p->elementTime();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1316 propertyValue = QString::fromLatin1("QTime(%1, %2, %3)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1317 .arg(t->elementHour())
e78566595089 initial import
mandel
parents:
diff changeset
1318 .arg(t->elementMinute())
e78566595089 initial import
mandel
parents:
diff changeset
1319 .arg(t->elementSecond());
e78566595089 initial import
mandel
parents:
diff changeset
1320 break;
e78566595089 initial import
mandel
parents:
diff changeset
1321 }
e78566595089 initial import
mandel
parents:
diff changeset
1322 case DomProperty::DateTime: {
e78566595089 initial import
mandel
parents:
diff changeset
1323 const DomDateTime *dt = p->elementDateTime();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1324 propertyValue = QString::fromLatin1("QDateTime(QDate(%1, %2, %3), QTime(%4, %5, %6))")
1
e78566595089 initial import
mandel
parents:
diff changeset
1325 .arg(dt->elementYear())
e78566595089 initial import
mandel
parents:
diff changeset
1326 .arg(dt->elementMonth())
e78566595089 initial import
mandel
parents:
diff changeset
1327 .arg(dt->elementDay())
e78566595089 initial import
mandel
parents:
diff changeset
1328 .arg(dt->elementHour())
e78566595089 initial import
mandel
parents:
diff changeset
1329 .arg(dt->elementMinute())
e78566595089 initial import
mandel
parents:
diff changeset
1330 .arg(dt->elementSecond());
e78566595089 initial import
mandel
parents:
diff changeset
1331 break;
e78566595089 initial import
mandel
parents:
diff changeset
1332 }
e78566595089 initial import
mandel
parents:
diff changeset
1333 case DomProperty::StringList:
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1334 propertyValue = QLatin1String("QStringList()");
1
e78566595089 initial import
mandel
parents:
diff changeset
1335 if (p->elementStringList()->elementString().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1336 const QStringList lst = p->elementStringList()->elementString();
e78566595089 initial import
mandel
parents:
diff changeset
1337 for (int i=0; i<lst.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1338 propertyValue += QLatin1String(" << ");
e78566595089 initial import
mandel
parents:
diff changeset
1339 propertyValue +=fixString(lst.at(i), m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1340 }
e78566595089 initial import
mandel
parents:
diff changeset
1341 }
e78566595089 initial import
mandel
parents:
diff changeset
1342 break;
e78566595089 initial import
mandel
parents:
diff changeset
1343
e78566595089 initial import
mandel
parents:
diff changeset
1344 case DomProperty::Url: {
e78566595089 initial import
mandel
parents:
diff changeset
1345 const DomUrl* u = p->elementUrl();
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1346 propertyValue = QString::fromLatin1("QUrl(%1)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1347 .arg(fixString(u->elementString()->text(), m_option.indent));
e78566595089 initial import
mandel
parents:
diff changeset
1348 break;
e78566595089 initial import
mandel
parents:
diff changeset
1349 }
e78566595089 initial import
mandel
parents:
diff changeset
1350 case DomProperty::Brush:
e78566595089 initial import
mandel
parents:
diff changeset
1351 propertyValue = writeBrushInitialization(p->elementBrush());
e78566595089 initial import
mandel
parents:
diff changeset
1352 break;
e78566595089 initial import
mandel
parents:
diff changeset
1353 case DomProperty::Unknown:
e78566595089 initial import
mandel
parents:
diff changeset
1354 break;
e78566595089 initial import
mandel
parents:
diff changeset
1355 }
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1356
82
420f2aab9ab6 temporary fix for "::" in duic for all types
eldar
parents: 78
diff changeset
1357 propertyValue = propertyValue.replace("::", "."); // qtd
1
e78566595089 initial import
mandel
parents:
diff changeset
1358
e78566595089 initial import
mandel
parents:
diff changeset
1359 if (propertyValue.size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1360 const char* defineC = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1361 if (propertyName == QLatin1String("toolTip"))
e78566595089 initial import
mandel
parents:
diff changeset
1362 defineC = toolTipDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1363 if (propertyName == QLatin1String("whatsThis"))
e78566595089 initial import
mandel
parents:
diff changeset
1364 defineC = whatsThisDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1365 if (propertyName == QLatin1String("statusTip"))
e78566595089 initial import
mandel
parents:
diff changeset
1366 defineC = statusTipDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1367 const bool needsTranslation = p->kind() == DomProperty::String && (!p->elementString()->hasAttributeNotr() || !toBool(p->elementString()->attributeNotr()));
e78566595089 initial import
mandel
parents:
diff changeset
1368 if (propertyName == QLatin1String("accessibleName") || propertyName == QLatin1String("accessibleDescription"))
e78566595089 initial import
mandel
parents:
diff changeset
1369 defineC = accessibilityDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1370
e78566595089 initial import
mandel
parents:
diff changeset
1371 QTextStream &o = needsTranslation ? m_refreshOut : m_output;
e78566595089 initial import
mandel
parents:
diff changeset
1372
e78566595089 initial import
mandel
parents:
diff changeset
1373 if (defineC)
e78566595089 initial import
mandel
parents:
diff changeset
1374 openIfndef(o, QLatin1String(defineC));
e78566595089 initial import
mandel
parents:
diff changeset
1375 o << m_option.indent << varNewName << setFunction << propertyValue;
e78566595089 initial import
mandel
parents:
diff changeset
1376 if (!stdset)
e78566595089 initial import
mandel
parents:
diff changeset
1377 o << ')';
e78566595089 initial import
mandel
parents:
diff changeset
1378 o << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1379 if (defineC)
e78566595089 initial import
mandel
parents:
diff changeset
1380 closeIfdef(o, QLatin1String(defineC));
e78566595089 initial import
mandel
parents:
diff changeset
1381 }
e78566595089 initial import
mandel
parents:
diff changeset
1382 }
e78566595089 initial import
mandel
parents:
diff changeset
1383 if (leftMargin != -1 || topMargin != -1 || rightMargin != -1 || bottomMargin != -1) {
e78566595089 initial import
mandel
parents:
diff changeset
1384 QString objectName = varName;
e78566595089 initial import
mandel
parents:
diff changeset
1385 if (m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
1386 const QString parentWidget = m_widgetChain.top()->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1387
e78566595089 initial import
mandel
parents:
diff changeset
1388 if (!m_layoutChain.top() && (m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3GroupBox"))
e78566595089 initial import
mandel
parents:
diff changeset
1389 || m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3ButtonGroup")))) {
e78566595089 initial import
mandel
parents:
diff changeset
1390 objectName = m_driver->findOrInsertWidget(m_widgetChain.top()) + QLatin1String(".layout()");
e78566595089 initial import
mandel
parents:
diff changeset
1391 }
e78566595089 initial import
mandel
parents:
diff changeset
1392 }
e78566595089 initial import
mandel
parents:
diff changeset
1393 m_output << m_option.indent << objectName << QLatin1String(".setContentsMargins(")
e78566595089 initial import
mandel
parents:
diff changeset
1394 << leftMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1395 << topMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1396 << rightMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1397 << bottomMargin << QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
1398 }
e78566595089 initial import
mandel
parents:
diff changeset
1399 }
e78566595089 initial import
mandel
parents:
diff changeset
1400
e78566595089 initial import
mandel
parents:
diff changeset
1401 QString WriteInitialization::writeSizePolicy(const DomSizePolicy *sp)
e78566595089 initial import
mandel
parents:
diff changeset
1402 {
e78566595089 initial import
mandel
parents:
diff changeset
1403
e78566595089 initial import
mandel
parents:
diff changeset
1404 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1405 const SizePolicyHandle sizePolicyHandle(sp);
e78566595089 initial import
mandel
parents:
diff changeset
1406 const SizePolicyNameMap::const_iterator it = m_sizePolicyNameMap.constFind(sizePolicyHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1407 if ( it != m_sizePolicyNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1408 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1409 }
e78566595089 initial import
mandel
parents:
diff changeset
1410
e78566595089 initial import
mandel
parents:
diff changeset
1411
e78566595089 initial import
mandel
parents:
diff changeset
1412 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1413 const QString spName = m_driver->unique(QLatin1String("sizePolicy"));
e78566595089 initial import
mandel
parents:
diff changeset
1414 m_sizePolicyNameMap.insert(sizePolicyHandle, spName);
e78566595089 initial import
mandel
parents:
diff changeset
1415
391
4d17d96480db Fixed generation of size policies ? QSizePolicy is a class.
David Nadlinger <code@klickverbot.at>
parents: 338
diff changeset
1416 m_output << m_option.indent << "auto " << spName << " = new QSizePolicy";
1
e78566595089 initial import
mandel
parents:
diff changeset
1417 do {
e78566595089 initial import
mandel
parents:
diff changeset
1418 if (sp->hasElementHSizeType() && sp->hasElementVSizeType()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1419 m_output << "(cast(QSizePolicy.Policy)(" << sp->elementHSizeType()
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1420 << "), cast(QSizePolicy.Policy)(" << sp->elementVSizeType() << "));\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1421 break;
e78566595089 initial import
mandel
parents:
diff changeset
1422 }
e78566595089 initial import
mandel
parents:
diff changeset
1423 if (sp->hasAttributeHSizeType() && sp->hasAttributeVSizeType()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1424 m_output << "(QSizePolicy." << sp->attributeHSizeType() << ", QSizePolicy."
1
e78566595089 initial import
mandel
parents:
diff changeset
1425 << sp->attributeVSizeType() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1426 break;
e78566595089 initial import
mandel
parents:
diff changeset
1427 }
e78566595089 initial import
mandel
parents:
diff changeset
1428 m_output << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1429 } while (false);
e78566595089 initial import
mandel
parents:
diff changeset
1430
e78566595089 initial import
mandel
parents:
diff changeset
1431 m_output << m_option.indent << spName << ".setHorizontalStretch("
e78566595089 initial import
mandel
parents:
diff changeset
1432 << sp->elementHorStretch() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1433 m_output << m_option.indent << spName << ".setVerticalStretch("
e78566595089 initial import
mandel
parents:
diff changeset
1434 << sp->elementVerStretch() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1435 return spName;
e78566595089 initial import
mandel
parents:
diff changeset
1436 }
e78566595089 initial import
mandel
parents:
diff changeset
1437 // Check for a font with the given properties in the FontPropertiesNameMap
e78566595089 initial import
mandel
parents:
diff changeset
1438 // or create a new one. Returns the name.
e78566595089 initial import
mandel
parents:
diff changeset
1439
e78566595089 initial import
mandel
parents:
diff changeset
1440 QString WriteInitialization::writeFontProperties(const DomFont *f)
e78566595089 initial import
mandel
parents:
diff changeset
1441 {
e78566595089 initial import
mandel
parents:
diff changeset
1442 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1443 const FontHandle fontHandle(f);
e78566595089 initial import
mandel
parents:
diff changeset
1444 const FontPropertiesNameMap::const_iterator it = m_fontPropertiesNameMap.constFind(fontHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1445 if ( it != m_fontPropertiesNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1446 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1447 }
e78566595089 initial import
mandel
parents:
diff changeset
1448
e78566595089 initial import
mandel
parents:
diff changeset
1449 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1450 const QString fontName = m_driver->unique(QLatin1String("font"));
e78566595089 initial import
mandel
parents:
diff changeset
1451 m_fontPropertiesNameMap.insert(FontHandle(f), fontName);
e78566595089 initial import
mandel
parents:
diff changeset
1452
e78566595089 initial import
mandel
parents:
diff changeset
1453 m_output << m_option.indent << "QFont " << fontName << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1454 if (f->hasElementFamily() && !f->elementFamily().isEmpty()) {
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1455 m_output << m_option.indent << fontName << ".setFamily(QStringUtil.fromUtf8(" << fixString(f->elementFamily(), m_option.indent)
1
e78566595089 initial import
mandel
parents:
diff changeset
1456 << "));\n";
e78566595089 initial import
mandel
parents:
diff changeset
1457 }
e78566595089 initial import
mandel
parents:
diff changeset
1458 if (f->hasElementPointSize() && f->elementPointSize() > 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1459 m_output << m_option.indent << fontName << ".setPointSize(" << f->elementPointSize()
e78566595089 initial import
mandel
parents:
diff changeset
1460 << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1461 }
e78566595089 initial import
mandel
parents:
diff changeset
1462
e78566595089 initial import
mandel
parents:
diff changeset
1463 if (f->hasElementBold()) {
e78566595089 initial import
mandel
parents:
diff changeset
1464 m_output << m_option.indent << fontName << ".setBold("
e78566595089 initial import
mandel
parents:
diff changeset
1465 << (f->elementBold() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1466 }
e78566595089 initial import
mandel
parents:
diff changeset
1467 if (f->hasElementItalic()) {
e78566595089 initial import
mandel
parents:
diff changeset
1468 m_output << m_option.indent << fontName << ".setItalic("
e78566595089 initial import
mandel
parents:
diff changeset
1469 << (f->elementItalic() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1470 }
e78566595089 initial import
mandel
parents:
diff changeset
1471 if (f->hasElementUnderline()) {
e78566595089 initial import
mandel
parents:
diff changeset
1472 m_output << m_option.indent << fontName << ".setUnderline("
e78566595089 initial import
mandel
parents:
diff changeset
1473 << (f->elementUnderline() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1474 }
e78566595089 initial import
mandel
parents:
diff changeset
1475 if (f->hasElementWeight() && f->elementWeight() > 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1476 m_output << m_option.indent << fontName << ".setWeight("
e78566595089 initial import
mandel
parents:
diff changeset
1477 << f->elementWeight() << ");" << endl;
e78566595089 initial import
mandel
parents:
diff changeset
1478 }
e78566595089 initial import
mandel
parents:
diff changeset
1479 if (f->hasElementStrikeOut()) {
e78566595089 initial import
mandel
parents:
diff changeset
1480 m_output << m_option.indent << fontName << ".setStrikeOut("
e78566595089 initial import
mandel
parents:
diff changeset
1481 << (f->elementStrikeOut() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1482 }
e78566595089 initial import
mandel
parents:
diff changeset
1483 if (f->hasElementKerning()) {
e78566595089 initial import
mandel
parents:
diff changeset
1484 m_output << m_option.indent << fontName << ".setKerning("
e78566595089 initial import
mandel
parents:
diff changeset
1485 << (f->elementKerning() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1486 }
e78566595089 initial import
mandel
parents:
diff changeset
1487 if (f->hasElementAntialiasing()) {
e78566595089 initial import
mandel
parents:
diff changeset
1488 m_output << m_option.indent << fontName << ".setStyleStrategy("
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1489 << (f->elementAntialiasing() ? "QFont.PreferDefault" : "QFont.NoAntialias") << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1490 }
e78566595089 initial import
mandel
parents:
diff changeset
1491 if (f->hasElementStyleStrategy()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1492 m_output << m_option.indent << fontName << ".setStyleStrategy(QFont."
1
e78566595089 initial import
mandel
parents:
diff changeset
1493 << f->elementStyleStrategy() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1494 }
e78566595089 initial import
mandel
parents:
diff changeset
1495 return fontName;
e78566595089 initial import
mandel
parents:
diff changeset
1496 }
e78566595089 initial import
mandel
parents:
diff changeset
1497
e78566595089 initial import
mandel
parents:
diff changeset
1498 QString WriteInitialization::writeIconProperties(const DomResourceIcon *i)
e78566595089 initial import
mandel
parents:
diff changeset
1499 {
e78566595089 initial import
mandel
parents:
diff changeset
1500 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1501 const IconHandle iconHandle(i);
e78566595089 initial import
mandel
parents:
diff changeset
1502 const IconPropertiesNameMap::const_iterator it = m_iconPropertiesNameMap.constFind(iconHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1503 if (it != m_iconPropertiesNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1504 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1505 }
e78566595089 initial import
mandel
parents:
diff changeset
1506
e78566595089 initial import
mandel
parents:
diff changeset
1507 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1508 const QString iconName = m_driver->unique(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
1509 m_iconPropertiesNameMap.insert(IconHandle(i), iconName);
e78566595089 initial import
mandel
parents:
diff changeset
1510 if (isIconFormat44(i)) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1511 const QString pixmap = QLatin1String("QPixmap");
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1512 m_output << m_option.indent << "QIcon " << iconName << ";\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1513 if (i->hasElementNormalOff())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1514 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOff()->text()) << ", QIcon.Normal, QIcon.Off);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1515 if (i->hasElementNormalOn())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1516 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOn()->text()) << ", QIcon.Normal, QIcon.On);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1517 if (i->hasElementDisabledOff())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1518 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOff()->text()) << ", QIcon.Disabled, QIcon.Off);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1519 if (i->hasElementDisabledOn())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1520 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOn()->text()) << ", QIcon.Disabled, QIcon.On);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1521 if (i->hasElementActiveOff())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1522 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOff()->text()) << ", QIcon.Active, QIcon.Off);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1523 if (i->hasElementActiveOn())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1524 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOn()->text()) << ", QIcon.Active, QIcon.On);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1525 if (i->hasElementSelectedOff())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1526 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOff()->text()) << ", QIcon.Selected, QIcon.Off);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1527 if (i->hasElementSelectedOn())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1528 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOn()->text()) << ", QIcon.Selected, QIcon.On);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1529 } else { // pre-4.4 legacy
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1530 m_output << m_option.indent << "const QIcon " << iconName << " = " << pixCall(QLatin1String("QIcon"), i->text())<< ";\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1531 }
e78566595089 initial import
mandel
parents:
diff changeset
1532 return iconName;
e78566595089 initial import
mandel
parents:
diff changeset
1533 }
e78566595089 initial import
mandel
parents:
diff changeset
1534
e78566595089 initial import
mandel
parents:
diff changeset
1535 QString WriteInitialization::domColor2QString(const DomColor *c)
e78566595089 initial import
mandel
parents:
diff changeset
1536 {
e78566595089 initial import
mandel
parents:
diff changeset
1537 if (c->hasAttributeAlpha())
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1538 return QString::fromLatin1("new QColor(%1, %2, %3, %4)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1539 .arg(c->elementRed())
e78566595089 initial import
mandel
parents:
diff changeset
1540 .arg(c->elementGreen())
e78566595089 initial import
mandel
parents:
diff changeset
1541 .arg(c->elementBlue())
e78566595089 initial import
mandel
parents:
diff changeset
1542 .arg(c->attributeAlpha());
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1543 return QString::fromLatin1("new QColor(%1, %2, %3)")
1
e78566595089 initial import
mandel
parents:
diff changeset
1544 .arg(c->elementRed())
e78566595089 initial import
mandel
parents:
diff changeset
1545 .arg(c->elementGreen())
e78566595089 initial import
mandel
parents:
diff changeset
1546 .arg(c->elementBlue());
e78566595089 initial import
mandel
parents:
diff changeset
1547 }
e78566595089 initial import
mandel
parents:
diff changeset
1548
e78566595089 initial import
mandel
parents:
diff changeset
1549 void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName)
e78566595089 initial import
mandel
parents:
diff changeset
1550 {
e78566595089 initial import
mandel
parents:
diff changeset
1551 if (!colorGroup)
e78566595089 initial import
mandel
parents:
diff changeset
1552 return;
e78566595089 initial import
mandel
parents:
diff changeset
1553
e78566595089 initial import
mandel
parents:
diff changeset
1554 // old format
e78566595089 initial import
mandel
parents:
diff changeset
1555 const QList<DomColor*> colors = colorGroup->elementColor();
e78566595089 initial import
mandel
parents:
diff changeset
1556 for (int i=0; i<colors.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1557 const DomColor *color = colors.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1558
e78566595089 initial import
mandel
parents:
diff changeset
1559 m_output << m_option.indent << paletteName << ".setColor(" << group
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1560 << ", " << "cast(QPalette.ColorRole)(" << QString::number(i) << ')'
1
e78566595089 initial import
mandel
parents:
diff changeset
1561 << ", " << domColor2QString(color)
e78566595089 initial import
mandel
parents:
diff changeset
1562 << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1563 }
e78566595089 initial import
mandel
parents:
diff changeset
1564
e78566595089 initial import
mandel
parents:
diff changeset
1565 // new format
e78566595089 initial import
mandel
parents:
diff changeset
1566 const QList<DomColorRole *> colorRoles = colorGroup->elementColorRole();
e78566595089 initial import
mandel
parents:
diff changeset
1567 QListIterator<DomColorRole *> itRole(colorRoles);
e78566595089 initial import
mandel
parents:
diff changeset
1568 while (itRole.hasNext()) {
e78566595089 initial import
mandel
parents:
diff changeset
1569 const DomColorRole *colorRole = itRole.next();
e78566595089 initial import
mandel
parents:
diff changeset
1570 if (colorRole->hasAttributeRole()) {
e78566595089 initial import
mandel
parents:
diff changeset
1571 const QString brushName = writeBrushInitialization(colorRole->elementBrush());
e78566595089 initial import
mandel
parents:
diff changeset
1572 m_output << m_option.indent << paletteName << ".setBrush(" << group
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1573 << ", " << "QPalette." << colorRole->attributeRole()
1
e78566595089 initial import
mandel
parents:
diff changeset
1574 << ", " << brushName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1575 }
e78566595089 initial import
mandel
parents:
diff changeset
1576 }
e78566595089 initial import
mandel
parents:
diff changeset
1577 }
e78566595089 initial import
mandel
parents:
diff changeset
1578
e78566595089 initial import
mandel
parents:
diff changeset
1579 // Write initialization for brush unless it is found in the cache. Returns the name to use
e78566595089 initial import
mandel
parents:
diff changeset
1580 // in an expression.
e78566595089 initial import
mandel
parents:
diff changeset
1581 QString WriteInitialization::writeBrushInitialization(const DomBrush *brush)
e78566595089 initial import
mandel
parents:
diff changeset
1582 {
e78566595089 initial import
mandel
parents:
diff changeset
1583 // Simple solid, colored brushes are cached
e78566595089 initial import
mandel
parents:
diff changeset
1584 const bool solidColoredBrush = !brush->hasAttributeBrushStyle() || brush->attributeBrushStyle() == QLatin1String("SolidPattern");
e78566595089 initial import
mandel
parents:
diff changeset
1585 uint rgb = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1586 if (solidColoredBrush) {
e78566595089 initial import
mandel
parents:
diff changeset
1587 if (const DomColor *color = brush->elementColor()) {
e78566595089 initial import
mandel
parents:
diff changeset
1588 rgb = ((color->elementRed() & 0xFF) << 24) |
e78566595089 initial import
mandel
parents:
diff changeset
1589 ((color->elementGreen() & 0xFF) << 16) |
e78566595089 initial import
mandel
parents:
diff changeset
1590 ((color->elementBlue() & 0xFF) << 8) |
e78566595089 initial import
mandel
parents:
diff changeset
1591 ((color->attributeAlpha() & 0xFF));
e78566595089 initial import
mandel
parents:
diff changeset
1592 const ColorBrushHash::const_iterator cit = m_colorBrushHash.constFind(rgb);
e78566595089 initial import
mandel
parents:
diff changeset
1593 if (cit != m_colorBrushHash.constEnd())
e78566595089 initial import
mandel
parents:
diff changeset
1594 return cit.value();
e78566595089 initial import
mandel
parents:
diff changeset
1595 }
e78566595089 initial import
mandel
parents:
diff changeset
1596 }
e78566595089 initial import
mandel
parents:
diff changeset
1597 // Create and enter into cache if simple
e78566595089 initial import
mandel
parents:
diff changeset
1598 const QString brushName = m_driver->unique(QLatin1String("brush"));
e78566595089 initial import
mandel
parents:
diff changeset
1599 writeBrush(brush, brushName);
e78566595089 initial import
mandel
parents:
diff changeset
1600 if (solidColoredBrush)
e78566595089 initial import
mandel
parents:
diff changeset
1601 m_colorBrushHash.insert(rgb, brushName);
e78566595089 initial import
mandel
parents:
diff changeset
1602 return brushName;
e78566595089 initial import
mandel
parents:
diff changeset
1603 }
e78566595089 initial import
mandel
parents:
diff changeset
1604
e78566595089 initial import
mandel
parents:
diff changeset
1605 void WriteInitialization::writeBrush(const DomBrush *brush, const QString &brushName)
e78566595089 initial import
mandel
parents:
diff changeset
1606 {
e78566595089 initial import
mandel
parents:
diff changeset
1607 QString style = QLatin1String("SolidPattern");
e78566595089 initial import
mandel
parents:
diff changeset
1608 if (brush->hasAttributeBrushStyle())
e78566595089 initial import
mandel
parents:
diff changeset
1609 style = brush->attributeBrushStyle();
e78566595089 initial import
mandel
parents:
diff changeset
1610
e78566595089 initial import
mandel
parents:
diff changeset
1611 if (style == QLatin1String("LinearGradientPattern") ||
e78566595089 initial import
mandel
parents:
diff changeset
1612 style == QLatin1String("RadialGradientPattern") ||
e78566595089 initial import
mandel
parents:
diff changeset
1613 style == QLatin1String("ConicalGradientPattern")) {
e78566595089 initial import
mandel
parents:
diff changeset
1614 const DomGradient *gradient = brush->elementGradient();
e78566595089 initial import
mandel
parents:
diff changeset
1615 const QString gradientType = gradient->attributeType();
e78566595089 initial import
mandel
parents:
diff changeset
1616 const QString gradientName = m_driver->unique(QLatin1String("gradient"));
e78566595089 initial import
mandel
parents:
diff changeset
1617 if (gradientType == QLatin1String("LinearGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1618 m_output << m_option.indent << "QLinearGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1619 << '(' << gradient->attributeStartX()
e78566595089 initial import
mandel
parents:
diff changeset
1620 << ", " << gradient->attributeStartY()
e78566595089 initial import
mandel
parents:
diff changeset
1621 << ", " << gradient->attributeEndX()
e78566595089 initial import
mandel
parents:
diff changeset
1622 << ", " << gradient->attributeEndY() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1623 } else if (gradientType == QLatin1String("RadialGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1624 m_output << m_option.indent << "QRadialGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1625 << '(' << gradient->attributeCentralX()
e78566595089 initial import
mandel
parents:
diff changeset
1626 << ", " << gradient->attributeCentralY()
e78566595089 initial import
mandel
parents:
diff changeset
1627 << ", " << gradient->attributeRadius()
e78566595089 initial import
mandel
parents:
diff changeset
1628 << ", " << gradient->attributeFocalX()
e78566595089 initial import
mandel
parents:
diff changeset
1629 << ", " << gradient->attributeFocalY() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1630 } else if (gradientType == QLatin1String("ConicalGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1631 m_output << m_option.indent << "QConicalGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1632 << '(' << gradient->attributeCentralX()
e78566595089 initial import
mandel
parents:
diff changeset
1633 << ", " << gradient->attributeCentralY()
e78566595089 initial import
mandel
parents:
diff changeset
1634 << ", " << gradient->attributeAngle() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1635 }
e78566595089 initial import
mandel
parents:
diff changeset
1636
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1637 m_output << m_option.indent << gradientName << ".setSpread(QGradient."
1
e78566595089 initial import
mandel
parents:
diff changeset
1638 << gradient->attributeSpread() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1639
e78566595089 initial import
mandel
parents:
diff changeset
1640 if (gradient->hasAttributeCoordinateMode()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1641 m_output << m_option.indent << gradientName << ".setCoordinateMode(QGradient."
1
e78566595089 initial import
mandel
parents:
diff changeset
1642 << gradient->attributeCoordinateMode() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1643 }
e78566595089 initial import
mandel
parents:
diff changeset
1644
e78566595089 initial import
mandel
parents:
diff changeset
1645 const QList<DomGradientStop *> stops = gradient->elementGradientStop();
e78566595089 initial import
mandel
parents:
diff changeset
1646 QListIterator<DomGradientStop *> it(stops);
e78566595089 initial import
mandel
parents:
diff changeset
1647 while (it.hasNext()) {
e78566595089 initial import
mandel
parents:
diff changeset
1648 const DomGradientStop *stop = it.next();
e78566595089 initial import
mandel
parents:
diff changeset
1649 const DomColor *color = stop->elementColor();
e78566595089 initial import
mandel
parents:
diff changeset
1650 m_output << m_option.indent << gradientName << ".setColorAt("
e78566595089 initial import
mandel
parents:
diff changeset
1651 << stop->attributePosition() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1652 << domColor2QString(color) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1653 }
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1654 m_output << m_option.indent << "auto " << brushName << "= new QBrush("
1
e78566595089 initial import
mandel
parents:
diff changeset
1655 << gradientName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1656 } else if (style == QLatin1String("TexturePattern")) {
e78566595089 initial import
mandel
parents:
diff changeset
1657 const DomProperty *property = brush->elementTexture();
e78566595089 initial import
mandel
parents:
diff changeset
1658 const QString iconValue = iconCall(property);
e78566595089 initial import
mandel
parents:
diff changeset
1659
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1660 m_output << m_option.indent << "auto " << brushName << " = new QBrush("
1
e78566595089 initial import
mandel
parents:
diff changeset
1661 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1662 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1663 const DomColor *color = brush->elementColor();
395
d757b8b1ca75 Fixed generation of palettes from Qt Designer files.
David Nadlinger <code@klickverbot.at>
parents: 391
diff changeset
1664 m_output << m_option.indent << "auto " << brushName << " = new QBrush("
1
e78566595089 initial import
mandel
parents:
diff changeset
1665 << domColor2QString(color) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1666
e78566595089 initial import
mandel
parents:
diff changeset
1667 m_output << m_option.indent << brushName << ".setStyle("
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1668 << "Qt." << style << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1669 }
e78566595089 initial import
mandel
parents:
diff changeset
1670 }
e78566595089 initial import
mandel
parents:
diff changeset
1671
e78566595089 initial import
mandel
parents:
diff changeset
1672 void WriteInitialization::acceptCustomWidget(DomCustomWidget *node)
e78566595089 initial import
mandel
parents:
diff changeset
1673 {
e78566595089 initial import
mandel
parents:
diff changeset
1674 Q_UNUSED(node);
e78566595089 initial import
mandel
parents:
diff changeset
1675 }
e78566595089 initial import
mandel
parents:
diff changeset
1676
e78566595089 initial import
mandel
parents:
diff changeset
1677 void WriteInitialization::acceptCustomWidgets(DomCustomWidgets *node)
e78566595089 initial import
mandel
parents:
diff changeset
1678 {
e78566595089 initial import
mandel
parents:
diff changeset
1679 Q_UNUSED(node);
e78566595089 initial import
mandel
parents:
diff changeset
1680 }
e78566595089 initial import
mandel
parents:
diff changeset
1681
e78566595089 initial import
mandel
parents:
diff changeset
1682 void WriteInitialization::acceptTabStops(DomTabStops *tabStops)
e78566595089 initial import
mandel
parents:
diff changeset
1683 {
e78566595089 initial import
mandel
parents:
diff changeset
1684 QString lastName;
e78566595089 initial import
mandel
parents:
diff changeset
1685
e78566595089 initial import
mandel
parents:
diff changeset
1686 const QStringList l = tabStops->elementTabStop();
e78566595089 initial import
mandel
parents:
diff changeset
1687 for (int i=0; i<l.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1688 const QString name = l.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1689
e78566595089 initial import
mandel
parents:
diff changeset
1690 if (!m_registeredWidgets.contains(name)) {
e78566595089 initial import
mandel
parents:
diff changeset
1691 fprintf(stderr, "'%s' isn't a valid widget\n", name.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
1692 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1693 }
e78566595089 initial import
mandel
parents:
diff changeset
1694
e78566595089 initial import
mandel
parents:
diff changeset
1695 if (i == 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1696 lastName = name;
e78566595089 initial import
mandel
parents:
diff changeset
1697 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1698 } else if (name.isEmpty() || lastName.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
1699 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1700 }
e78566595089 initial import
mandel
parents:
diff changeset
1701
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1702 m_output << m_option.indent << "QWidget.setTabOrder(" << lastName << ", " << name << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1703
e78566595089 initial import
mandel
parents:
diff changeset
1704 lastName = name;
e78566595089 initial import
mandel
parents:
diff changeset
1705 }
e78566595089 initial import
mandel
parents:
diff changeset
1706 }
e78566595089 initial import
mandel
parents:
diff changeset
1707
e78566595089 initial import
mandel
parents:
diff changeset
1708 void WriteInitialization::initializeQ3ListBox(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1709 {
e78566595089 initial import
mandel
parents:
diff changeset
1710 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1711 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1712
e78566595089 initial import
mandel
parents:
diff changeset
1713 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1714
e78566595089 initial import
mandel
parents:
diff changeset
1715 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1716 return;
e78566595089 initial import
mandel
parents:
diff changeset
1717
e78566595089 initial import
mandel
parents:
diff changeset
1718 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1719
e78566595089 initial import
mandel
parents:
diff changeset
1720 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1721 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1722
e78566595089 initial import
mandel
parents:
diff changeset
1723 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1724 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1725 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1726 if (!(text || pixmap))
e78566595089 initial import
mandel
parents:
diff changeset
1727 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1728
e78566595089 initial import
mandel
parents:
diff changeset
1729 m_refreshOut << m_option.indent << varName << ".insertItem(";
e78566595089 initial import
mandel
parents:
diff changeset
1730 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1731 m_refreshOut << pixCall(pixmap);
e78566595089 initial import
mandel
parents:
diff changeset
1732
e78566595089 initial import
mandel
parents:
diff changeset
1733 if (text)
e78566595089 initial import
mandel
parents:
diff changeset
1734 m_refreshOut << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1735 }
e78566595089 initial import
mandel
parents:
diff changeset
1736 if (text)
e78566595089 initial import
mandel
parents:
diff changeset
1737 m_refreshOut << trCall(text->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
1738 m_refreshOut << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1739 }
e78566595089 initial import
mandel
parents:
diff changeset
1740 }
e78566595089 initial import
mandel
parents:
diff changeset
1741
e78566595089 initial import
mandel
parents:
diff changeset
1742 void WriteInitialization::initializeQ3IconView(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1743 {
e78566595089 initial import
mandel
parents:
diff changeset
1744 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1745 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1746
e78566595089 initial import
mandel
parents:
diff changeset
1747 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1748
e78566595089 initial import
mandel
parents:
diff changeset
1749 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1750 return;
e78566595089 initial import
mandel
parents:
diff changeset
1751
e78566595089 initial import
mandel
parents:
diff changeset
1752 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1753
e78566595089 initial import
mandel
parents:
diff changeset
1754 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1755 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1756
e78566595089 initial import
mandel
parents:
diff changeset
1757 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1758 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1759 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1760 if (!(text || pixmap))
e78566595089 initial import
mandel
parents:
diff changeset
1761 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1762
e78566595089 initial import
mandel
parents:
diff changeset
1763 const QString itemName = m_driver->unique(QLatin1String("__item"));
e78566595089 initial import
mandel
parents:
diff changeset
1764 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1765 m_refreshOut << m_option.indent << "Q3IconViewItem *" << itemName << " = new Q3IconViewItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1766
e78566595089 initial import
mandel
parents:
diff changeset
1767 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1768 m_refreshOut << m_option.indent << itemName << ".setPixmap(" << pixCall(pixmap) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1769 }
e78566595089 initial import
mandel
parents:
diff changeset
1770
e78566595089 initial import
mandel
parents:
diff changeset
1771 if (text) {
e78566595089 initial import
mandel
parents:
diff changeset
1772 m_refreshOut << m_option.indent << itemName << ".setText(" << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1773 }
e78566595089 initial import
mandel
parents:
diff changeset
1774 }
e78566595089 initial import
mandel
parents:
diff changeset
1775 }
e78566595089 initial import
mandel
parents:
diff changeset
1776
e78566595089 initial import
mandel
parents:
diff changeset
1777 void WriteInitialization::initializeQ3ListView(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1778 {
e78566595089 initial import
mandel
parents:
diff changeset
1779 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1780 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1781
e78566595089 initial import
mandel
parents:
diff changeset
1782 // columns
e78566595089 initial import
mandel
parents:
diff changeset
1783 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
1784 for (int i=0; i<columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1785 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1786
e78566595089 initial import
mandel
parents:
diff changeset
1787 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1788 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1789 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1790 const DomProperty *clickable = properties.value(QLatin1String("clickable"));
e78566595089 initial import
mandel
parents:
diff changeset
1791 const DomProperty *resizable = properties.value(QLatin1String("resizable"));
e78566595089 initial import
mandel
parents:
diff changeset
1792
e78566595089 initial import
mandel
parents:
diff changeset
1793 const QString txt = trCall(text->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
1794 m_output << m_option.indent << varName << ".addColumn(" << txt << ");\n";
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1795 m_refreshOut << m_option.indent << varName << ".header().setLabel(" << i << ", " << txt << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1796
e78566595089 initial import
mandel
parents:
diff changeset
1797 if (pixmap) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1798 m_output << m_option.indent << varName << ".header().>setLabel("
1
e78566595089 initial import
mandel
parents:
diff changeset
1799 << varName << ".header()->count() - 1, " << pixCall(pixmap) << ", " << txt << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1800 }
e78566595089 initial import
mandel
parents:
diff changeset
1801
e78566595089 initial import
mandel
parents:
diff changeset
1802 if (clickable != 0) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1803 m_output << m_option.indent << varName << ".header().setClickEnabled(" << clickable->elementBool() << ", " << varName << ".header()->count() - 1);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1804 }
e78566595089 initial import
mandel
parents:
diff changeset
1805
e78566595089 initial import
mandel
parents:
diff changeset
1806 if (resizable != 0) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1807 m_output << m_option.indent << varName << ".header().setResizeEnabled(" << resizable->elementBool() << ", " << varName << ".header()->count() - 1);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
1808 }
e78566595089 initial import
mandel
parents:
diff changeset
1809 }
e78566595089 initial import
mandel
parents:
diff changeset
1810
e78566595089 initial import
mandel
parents:
diff changeset
1811 if (w->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1812 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1813
e78566595089 initial import
mandel
parents:
diff changeset
1814 initializeQ3ListViewItems(className, varName, w->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1815 }
e78566595089 initial import
mandel
parents:
diff changeset
1816 }
e78566595089 initial import
mandel
parents:
diff changeset
1817
e78566595089 initial import
mandel
parents:
diff changeset
1818 void WriteInitialization::initializeQ3ListViewItems(const QString &className, const QString &varName, const QList<DomItem *> &items)
e78566595089 initial import
mandel
parents:
diff changeset
1819 {
e78566595089 initial import
mandel
parents:
diff changeset
1820 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1821 return;
e78566595089 initial import
mandel
parents:
diff changeset
1822
e78566595089 initial import
mandel
parents:
diff changeset
1823 // items
e78566595089 initial import
mandel
parents:
diff changeset
1824 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1825 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1826
e78566595089 initial import
mandel
parents:
diff changeset
1827 const QString itemName = m_driver->unique(QLatin1String("__item"));
e78566595089 initial import
mandel
parents:
diff changeset
1828 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1829 m_refreshOut << m_option.indent << "Q3ListViewItem *" << itemName << " = new Q3ListViewItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1830
e78566595089 initial import
mandel
parents:
diff changeset
1831 int textCount = 0, pixCount = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1832 const DomPropertyList properties = item->elementProperty();
e78566595089 initial import
mandel
parents:
diff changeset
1833 for (int i=0; i<properties.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1834 const DomProperty *p = properties.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1835 if (p->attributeName() == QLatin1String("text"))
e78566595089 initial import
mandel
parents:
diff changeset
1836 m_refreshOut << m_option.indent << itemName << ".setText(" << textCount++ << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1837 << trCall(p->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1838
e78566595089 initial import
mandel
parents:
diff changeset
1839 if (p->attributeName() == QLatin1String("pixmap"))
e78566595089 initial import
mandel
parents:
diff changeset
1840 m_refreshOut << m_option.indent << itemName << ".setPixmap(" << pixCount++ << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1841 << pixCall(p) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1842 }
e78566595089 initial import
mandel
parents:
diff changeset
1843
e78566595089 initial import
mandel
parents:
diff changeset
1844 if (item->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1845 m_refreshOut << m_option.indent << itemName << ".setOpen(true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1846 initializeQ3ListViewItems(className, itemName, item->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1847 }
e78566595089 initial import
mandel
parents:
diff changeset
1848 }
e78566595089 initial import
mandel
parents:
diff changeset
1849 }
e78566595089 initial import
mandel
parents:
diff changeset
1850
e78566595089 initial import
mandel
parents:
diff changeset
1851
e78566595089 initial import
mandel
parents:
diff changeset
1852 void WriteInitialization::initializeQ3Table(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1853 {
e78566595089 initial import
mandel
parents:
diff changeset
1854 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1855 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1856
e78566595089 initial import
mandel
parents:
diff changeset
1857 // columns
e78566595089 initial import
mandel
parents:
diff changeset
1858 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
1859
e78566595089 initial import
mandel
parents:
diff changeset
1860 for (int i=0; i<columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1861 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1862
e78566595089 initial import
mandel
parents:
diff changeset
1863 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1864 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1865 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1866
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1867 m_refreshOut << m_option.indent << varName << ".horizontalHeader().setLabel(" << i << ", ";
1
e78566595089 initial import
mandel
parents:
diff changeset
1868 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1869 m_refreshOut << pixCall(pixmap) << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1870 }
e78566595089 initial import
mandel
parents:
diff changeset
1871 m_refreshOut << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1872 }
e78566595089 initial import
mandel
parents:
diff changeset
1873
e78566595089 initial import
mandel
parents:
diff changeset
1874 // rows
e78566595089 initial import
mandel
parents:
diff changeset
1875 const QList<DomRow*> rows = w->elementRow();
e78566595089 initial import
mandel
parents:
diff changeset
1876 for (int i=0; i<rows.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1877 const DomRow *row = rows.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1878
e78566595089 initial import
mandel
parents:
diff changeset
1879 const DomPropertyMap properties = propertyMap(row->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1880 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1881 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1882
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
1883 m_refreshOut << m_option.indent << varName << ".verticalHeader().setLabel(" << i << ", ";
1
e78566595089 initial import
mandel
parents:
diff changeset
1884 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1885 m_refreshOut << pixCall(pixmap) << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1886 }
e78566595089 initial import
mandel
parents:
diff changeset
1887 m_refreshOut << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1888 }
e78566595089 initial import
mandel
parents:
diff changeset
1889
e78566595089 initial import
mandel
parents:
diff changeset
1890
e78566595089 initial import
mandel
parents:
diff changeset
1891 //initializeQ3TableItems(className, varName, w->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1892 }
e78566595089 initial import
mandel
parents:
diff changeset
1893
e78566595089 initial import
mandel
parents:
diff changeset
1894 void WriteInitialization::initializeQ3TableItems(const QString &className, const QString &varName, const QList<DomItem *> &items)
e78566595089 initial import
mandel
parents:
diff changeset
1895 {
e78566595089 initial import
mandel
parents:
diff changeset
1896 Q_UNUSED(className);
e78566595089 initial import
mandel
parents:
diff changeset
1897 Q_UNUSED(varName);
e78566595089 initial import
mandel
parents:
diff changeset
1898 Q_UNUSED(items);
e78566595089 initial import
mandel
parents:
diff changeset
1899 }
e78566595089 initial import
mandel
parents:
diff changeset
1900
e78566595089 initial import
mandel
parents:
diff changeset
1901 QString WriteInitialization::iconCall(const DomProperty *icon)
e78566595089 initial import
mandel
parents:
diff changeset
1902 {
e78566595089 initial import
mandel
parents:
diff changeset
1903 if (icon->kind() == DomProperty::IconSet)
e78566595089 initial import
mandel
parents:
diff changeset
1904 return writeIconProperties(icon->elementIconSet());
e78566595089 initial import
mandel
parents:
diff changeset
1905 return pixCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
1906 }
e78566595089 initial import
mandel
parents:
diff changeset
1907
e78566595089 initial import
mandel
parents:
diff changeset
1908 QString WriteInitialization::pixCall(const DomProperty *p) const
e78566595089 initial import
mandel
parents:
diff changeset
1909 {
e78566595089 initial import
mandel
parents:
diff changeset
1910 QString type, s;
e78566595089 initial import
mandel
parents:
diff changeset
1911 switch (p->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
1912 case DomProperty::IconSet:
e78566595089 initial import
mandel
parents:
diff changeset
1913 type = QLatin1String("QIcon");
e78566595089 initial import
mandel
parents:
diff changeset
1914 s = p->elementIconSet()->text();
e78566595089 initial import
mandel
parents:
diff changeset
1915 break;
e78566595089 initial import
mandel
parents:
diff changeset
1916 case DomProperty::Pixmap:
e78566595089 initial import
mandel
parents:
diff changeset
1917 type = QLatin1String("QPixmap");
e78566595089 initial import
mandel
parents:
diff changeset
1918 s = p->elementPixmap()->text();
e78566595089 initial import
mandel
parents:
diff changeset
1919 break;
e78566595089 initial import
mandel
parents:
diff changeset
1920 default:
e78566595089 initial import
mandel
parents:
diff changeset
1921 qWarning() << "Warning: Unknown icon format encountered. The ui-file was generated with a too-recent version of Designer.";
e78566595089 initial import
mandel
parents:
diff changeset
1922 return QLatin1String("QIcon()");
e78566595089 initial import
mandel
parents:
diff changeset
1923 break;
e78566595089 initial import
mandel
parents:
diff changeset
1924 }
e78566595089 initial import
mandel
parents:
diff changeset
1925 return pixCall(type, s);
e78566595089 initial import
mandel
parents:
diff changeset
1926 }
e78566595089 initial import
mandel
parents:
diff changeset
1927
e78566595089 initial import
mandel
parents:
diff changeset
1928 QString WriteInitialization::pixCall(const QString &t, const QString &text) const
e78566595089 initial import
mandel
parents:
diff changeset
1929 {
e78566595089 initial import
mandel
parents:
diff changeset
1930 QString type = t;
e78566595089 initial import
mandel
parents:
diff changeset
1931 if (text.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
1932 type += QLatin1String("()");
e78566595089 initial import
mandel
parents:
diff changeset
1933 return type;
e78566595089 initial import
mandel
parents:
diff changeset
1934 }
e78566595089 initial import
mandel
parents:
diff changeset
1935 if (const DomImage *image = findImage(text)) {
e78566595089 initial import
mandel
parents:
diff changeset
1936 if (m_option.extractImages) {
e78566595089 initial import
mandel
parents:
diff changeset
1937 const QString format = image->elementData()->attributeFormat();
e78566595089 initial import
mandel
parents:
diff changeset
1938 const QString extension = format.left(format.indexOf(QLatin1Char('.'))).toLower();
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1939 QString rc = QLatin1String("QPixmap(QStringUtil.fromUtf8(\":/");
1
e78566595089 initial import
mandel
parents:
diff changeset
1940 rc += m_generatedClass;
e78566595089 initial import
mandel
parents:
diff changeset
1941 rc += QLatin1String("/images/");
e78566595089 initial import
mandel
parents:
diff changeset
1942 rc += text;
e78566595089 initial import
mandel
parents:
diff changeset
1943 rc += QLatin1Char('.');
e78566595089 initial import
mandel
parents:
diff changeset
1944 rc += extension;
e78566595089 initial import
mandel
parents:
diff changeset
1945 rc += QLatin1String("\"))");
e78566595089 initial import
mandel
parents:
diff changeset
1946 return rc;
e78566595089 initial import
mandel
parents:
diff changeset
1947 }
e78566595089 initial import
mandel
parents:
diff changeset
1948 QString rc = WriteIconInitialization::iconFromDataFunction();
e78566595089 initial import
mandel
parents:
diff changeset
1949 rc += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1950 rc += text;
e78566595089 initial import
mandel
parents:
diff changeset
1951 rc += QLatin1String("_ID)");
e78566595089 initial import
mandel
parents:
diff changeset
1952 return rc;
e78566595089 initial import
mandel
parents:
diff changeset
1953 }
e78566595089 initial import
mandel
parents:
diff changeset
1954
e78566595089 initial import
mandel
parents:
diff changeset
1955 QString pixFunc = m_uic->pixmapFunction();
e78566595089 initial import
mandel
parents:
diff changeset
1956 if (pixFunc.isEmpty())
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
1957 pixFunc = QLatin1String("QStringUtil.fromUtf8");
1
e78566595089 initial import
mandel
parents:
diff changeset
1958
e78566595089 initial import
mandel
parents:
diff changeset
1959 type += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1960 type += pixFunc;
e78566595089 initial import
mandel
parents:
diff changeset
1961 type += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1962 type += fixString(text, m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1963 type += QLatin1String("))");
e78566595089 initial import
mandel
parents:
diff changeset
1964 return type;
e78566595089 initial import
mandel
parents:
diff changeset
1965 }
e78566595089 initial import
mandel
parents:
diff changeset
1966
e78566595089 initial import
mandel
parents:
diff changeset
1967 void WriteInitialization::initializeComboBox(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1968 {
e78566595089 initial import
mandel
parents:
diff changeset
1969 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1970 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1971
e78566595089 initial import
mandel
parents:
diff changeset
1972 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1973
e78566595089 initial import
mandel
parents:
diff changeset
1974 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1975 return;
e78566595089 initial import
mandel
parents:
diff changeset
1976
e78566595089 initial import
mandel
parents:
diff changeset
1977 // If possible use qcombobox's addItems() which is much faster then a bunch of addItem() calls
e78566595089 initial import
mandel
parents:
diff changeset
1978 bool noIcons = true;
e78566595089 initial import
mandel
parents:
diff changeset
1979 QStringList list;
e78566595089 initial import
mandel
parents:
diff changeset
1980 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1981 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1982 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1983 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1984 const DomProperty *pixmap = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
1985 if (pixmap != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1986 noIcons = false;
e78566595089 initial import
mandel
parents:
diff changeset
1987 break;
e78566595089 initial import
mandel
parents:
diff changeset
1988 }
e78566595089 initial import
mandel
parents:
diff changeset
1989 list.append(trCall(text->elementString()));
e78566595089 initial import
mandel
parents:
diff changeset
1990 }
e78566595089 initial import
mandel
parents:
diff changeset
1991
e78566595089 initial import
mandel
parents:
diff changeset
1992 if (noIcons) {
e78566595089 initial import
mandel
parents:
diff changeset
1993 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1994 m_refreshOut << m_option.indent << varName << ".insertItems(0, QStringList()" << '\n';
e78566595089 initial import
mandel
parents:
diff changeset
1995 for (int i = 0; i < list.size(); ++i)
e78566595089 initial import
mandel
parents:
diff changeset
1996 m_refreshOut << m_option.indent << " << " << list.at(i) << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1997 m_refreshOut << m_option.indent << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1998 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1999 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2000 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2001 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2002 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2003 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2004
e78566595089 initial import
mandel
parents:
diff changeset
2005 QString iconValue;
e78566595089 initial import
mandel
parents:
diff changeset
2006 if (icon)
e78566595089 initial import
mandel
parents:
diff changeset
2007 iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2008
e78566595089 initial import
mandel
parents:
diff changeset
2009 m_output << m_option.indent << varName << ".addItem(";
e78566595089 initial import
mandel
parents:
diff changeset
2010 if (icon)
e78566595089 initial import
mandel
parents:
diff changeset
2011 m_output << iconValue << ", ";
78
3d465c0a4f98 duic: replace "" with null
SokoL_SD
parents: 76
diff changeset
2012 m_output << "null);\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
2013
e78566595089 initial import
mandel
parents:
diff changeset
2014 if (!toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2015 m_refreshOut << m_option.indent << varName << ".setItemText(" << i << ", " << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2016 }
e78566595089 initial import
mandel
parents:
diff changeset
2017 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2018 }
e78566595089 initial import
mandel
parents:
diff changeset
2019 }
e78566595089 initial import
mandel
parents:
diff changeset
2020
e78566595089 initial import
mandel
parents:
diff changeset
2021 QString WriteInitialization::disableSorting(DomWidget *w, const QString &varName)
e78566595089 initial import
mandel
parents:
diff changeset
2022 {
e78566595089 initial import
mandel
parents:
diff changeset
2023 // turn off sortingEnabled to force programmatic item order (setItem())
e78566595089 initial import
mandel
parents:
diff changeset
2024 QString tempName;
e78566595089 initial import
mandel
parents:
diff changeset
2025 if (!w->elementItem().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2026 tempName = m_driver->unique(QLatin1String("__sortingEnabled"));
e78566595089 initial import
mandel
parents:
diff changeset
2027 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2028 m_refreshOut << m_option.indent << "const bool " << tempName
e78566595089 initial import
mandel
parents:
diff changeset
2029 << " = " << varName << ".isSortingEnabled();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2030 m_refreshOut << m_option.indent << varName << ".setSortingEnabled(false);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2031 }
e78566595089 initial import
mandel
parents:
diff changeset
2032 return tempName;
e78566595089 initial import
mandel
parents:
diff changeset
2033 }
e78566595089 initial import
mandel
parents:
diff changeset
2034
e78566595089 initial import
mandel
parents:
diff changeset
2035 void WriteInitialization::enableSorting(DomWidget *w, const QString &varName, const QString &tempName)
e78566595089 initial import
mandel
parents:
diff changeset
2036 {
e78566595089 initial import
mandel
parents:
diff changeset
2037 if (!w->elementItem().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2038 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2039 m_refreshOut << m_option.indent << varName << ".setSortingEnabled(" << tempName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2040 }
e78566595089 initial import
mandel
parents:
diff changeset
2041 }
e78566595089 initial import
mandel
parents:
diff changeset
2042
e78566595089 initial import
mandel
parents:
diff changeset
2043 void WriteInitialization::initializeListWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2044 {
e78566595089 initial import
mandel
parents:
diff changeset
2045 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2046 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2047
e78566595089 initial import
mandel
parents:
diff changeset
2048 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
2049
e78566595089 initial import
mandel
parents:
diff changeset
2050 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2051 return;
e78566595089 initial import
mandel
parents:
diff changeset
2052
e78566595089 initial import
mandel
parents:
diff changeset
2053 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2054 // items
e78566595089 initial import
mandel
parents:
diff changeset
2055 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2056 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2057
e78566595089 initial import
mandel
parents:
diff changeset
2058 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2059 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2060 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2061
e78566595089 initial import
mandel
parents:
diff changeset
2062 QString itemCreation = QLatin1String("new QListWidgetItem(") + varName + QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
2063 if (icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2064 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2065 const QString itemName = m_driver->unique(QLatin1String("__listItem"));
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2066 m_output << m_option.indent << "QListWidgetItem " << itemName << " = " << itemCreation;
1
e78566595089 initial import
mandel
parents:
diff changeset
2067 m_output << m_option.indent << itemName << ".setIcon(" << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2068 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2069 m_output << m_option.indent << itemCreation;
e78566595089 initial import
mandel
parents:
diff changeset
2070 }
e78566595089 initial import
mandel
parents:
diff changeset
2071
e78566595089 initial import
mandel
parents:
diff changeset
2072 if (!toString(text->elementString()).isEmpty()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2073 m_refreshOut << m_option.indent << varName << ".item(" << i << ").setText(" << trCall(text->elementString()) << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
2074 }
e78566595089 initial import
mandel
parents:
diff changeset
2075 }
e78566595089 initial import
mandel
parents:
diff changeset
2076 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2077 }
e78566595089 initial import
mandel
parents:
diff changeset
2078
e78566595089 initial import
mandel
parents:
diff changeset
2079 void WriteInitialization::initializeTreeWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2080 {
e78566595089 initial import
mandel
parents:
diff changeset
2081 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2082 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2083
e78566595089 initial import
mandel
parents:
diff changeset
2084 // columns
e78566595089 initial import
mandel
parents:
diff changeset
2085 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
2086 for (int i = 0; i < columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2087 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2088
e78566595089 initial import
mandel
parents:
diff changeset
2089 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2090 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2091 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2092
e78566595089 initial import
mandel
parents:
diff changeset
2093 if (!toString(text->elementString()).isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2094 const QString txt = trCall(text->elementString());
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2095 m_refreshOut << m_option.indent << varName << ".headerItem().setText(" << i << ", " << txt << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
2096 }
e78566595089 initial import
mandel
parents:
diff changeset
2097
e78566595089 initial import
mandel
parents:
diff changeset
2098 if (icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2099 const QString iconValue = iconCall(icon);
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2100 m_output << m_option.indent << varName << ".headerItem().setIcon("
1
e78566595089 initial import
mandel
parents:
diff changeset
2101 << i << ", " << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2102 }
e78566595089 initial import
mandel
parents:
diff changeset
2103 }
e78566595089 initial import
mandel
parents:
diff changeset
2104
e78566595089 initial import
mandel
parents:
diff changeset
2105 if (w->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
2106 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2107
e78566595089 initial import
mandel
parents:
diff changeset
2108 initializeTreeWidgetItems(className, varName, w->elementItem(), varName + QLatin1String(".topLevelItem("));
e78566595089 initial import
mandel
parents:
diff changeset
2109
e78566595089 initial import
mandel
parents:
diff changeset
2110 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2111 }
e78566595089 initial import
mandel
parents:
diff changeset
2112 }
e78566595089 initial import
mandel
parents:
diff changeset
2113
e78566595089 initial import
mandel
parents:
diff changeset
2114 void WriteInitialization::initializeTreeWidgetItems(const QString &className, const QString &varName, const QList<DomItem *> &items, const QString &parentPath)
e78566595089 initial import
mandel
parents:
diff changeset
2115 {
e78566595089 initial import
mandel
parents:
diff changeset
2116 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2117 return;
e78566595089 initial import
mandel
parents:
diff changeset
2118
e78566595089 initial import
mandel
parents:
diff changeset
2119 // items
e78566595089 initial import
mandel
parents:
diff changeset
2120 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2121 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2122
e78566595089 initial import
mandel
parents:
diff changeset
2123 int textCount = 0;
e78566595089 initial import
mandel
parents:
diff changeset
2124 const DomPropertyList properties = item->elementProperty();
e78566595089 initial import
mandel
parents:
diff changeset
2125 QStringList icons;
e78566595089 initial import
mandel
parents:
diff changeset
2126 for (int j = 0; j < properties.size(); ++j) {
e78566595089 initial import
mandel
parents:
diff changeset
2127 const DomProperty *p = properties.at(j);
e78566595089 initial import
mandel
parents:
diff changeset
2128 if (p->attributeName() == QLatin1String("text")) {
e78566595089 initial import
mandel
parents:
diff changeset
2129 if (!toString(p->elementString()).isEmpty()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2130 m_refreshOut << m_option.indent << parentPath << i << ").setText(" << textCount << ", "
1
e78566595089 initial import
mandel
parents:
diff changeset
2131 << trCall(p->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2132 }
e78566595089 initial import
mandel
parents:
diff changeset
2133 textCount++;
e78566595089 initial import
mandel
parents:
diff changeset
2134 }
e78566595089 initial import
mandel
parents:
diff changeset
2135
e78566595089 initial import
mandel
parents:
diff changeset
2136 if (p->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2137 const QString iconValue = iconCall(p);
e78566595089 initial import
mandel
parents:
diff changeset
2138 icons << QLatin1String(".setIcon(")
e78566595089 initial import
mandel
parents:
diff changeset
2139 + QString::number(textCount - 1)
e78566595089 initial import
mandel
parents:
diff changeset
2140 + QLatin1String(", ") + iconValue + QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
2141 }
e78566595089 initial import
mandel
parents:
diff changeset
2142 }
e78566595089 initial import
mandel
parents:
diff changeset
2143 if (icons.isEmpty() && (item->elementItem().size() == 0)) {
e78566595089 initial import
mandel
parents:
diff changeset
2144 m_output << m_option.indent << "new QTreeWidgetItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2145 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2146 const QString itemName = m_driver->unique(QLatin1String("__treeItem"));
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2147 m_output << m_option.indent << "QTreeWidgetItem " << itemName << " = new QTreeWidgetItem(" << varName << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
2148
e78566595089 initial import
mandel
parents:
diff changeset
2149 QStringListIterator it(icons);
e78566595089 initial import
mandel
parents:
diff changeset
2150 while (it.hasNext())
e78566595089 initial import
mandel
parents:
diff changeset
2151 m_output << m_option.indent << itemName << it.next();
e78566595089 initial import
mandel
parents:
diff changeset
2152
e78566595089 initial import
mandel
parents:
diff changeset
2153 if (item->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
2154 const QString childPath = parentPath + QString::number(i) + QLatin1String(")->child(");
e78566595089 initial import
mandel
parents:
diff changeset
2155 initializeTreeWidgetItems(className, itemName, item->elementItem(), childPath);
e78566595089 initial import
mandel
parents:
diff changeset
2156 }
e78566595089 initial import
mandel
parents:
diff changeset
2157 }
e78566595089 initial import
mandel
parents:
diff changeset
2158
e78566595089 initial import
mandel
parents:
diff changeset
2159 }
e78566595089 initial import
mandel
parents:
diff changeset
2160 m_output << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2161 }
e78566595089 initial import
mandel
parents:
diff changeset
2162
e78566595089 initial import
mandel
parents:
diff changeset
2163 void WriteInitialization::initializeTableWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2164 {
e78566595089 initial import
mandel
parents:
diff changeset
2165 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2166 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2167
e78566595089 initial import
mandel
parents:
diff changeset
2168 // columns
e78566595089 initial import
mandel
parents:
diff changeset
2169 const QList<DomColumn *> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
2170
e78566595089 initial import
mandel
parents:
diff changeset
2171 if (columns.size() != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
2172 m_output << m_option.indent << "if (" << varName << ".columnCount() < " << columns.size() << ")\n"
e78566595089 initial import
mandel
parents:
diff changeset
2173 << m_option.indent << m_option.indent << varName << ".setColumnCount(" << columns.size() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2174 }
e78566595089 initial import
mandel
parents:
diff changeset
2175
e78566595089 initial import
mandel
parents:
diff changeset
2176 for (int i = 0; i < columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2177 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2178
e78566595089 initial import
mandel
parents:
diff changeset
2179 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2180 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2181 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2182 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2183 const QString itemName = m_driver->unique(QLatin1String("__colItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2184 m_output << m_option.indent << "QTableWidgetItem *"
e78566595089 initial import
mandel
parents:
diff changeset
2185 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2186
e78566595089 initial import
mandel
parents:
diff changeset
2187 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2188 m_refreshOut << m_option.indent << varName << ".horizontalHeaderItem(" << i << ")->setText("
e78566595089 initial import
mandel
parents:
diff changeset
2189 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2190
e78566595089 initial import
mandel
parents:
diff changeset
2191 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2192 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2193 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2194 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2195 }
e78566595089 initial import
mandel
parents:
diff changeset
2196 m_output << m_option.indent << varName << ".setHorizontalHeaderItem("
e78566595089 initial import
mandel
parents:
diff changeset
2197 << i << ", " << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2198 }
e78566595089 initial import
mandel
parents:
diff changeset
2199 }
e78566595089 initial import
mandel
parents:
diff changeset
2200
e78566595089 initial import
mandel
parents:
diff changeset
2201 // rows
e78566595089 initial import
mandel
parents:
diff changeset
2202 const QList<DomRow *> rows = w->elementRow();
e78566595089 initial import
mandel
parents:
diff changeset
2203
e78566595089 initial import
mandel
parents:
diff changeset
2204 if (rows.size() != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
2205 m_output << m_option.indent << "if (" << varName << ".rowCount() < " << rows.size() << ")\n"
e78566595089 initial import
mandel
parents:
diff changeset
2206 << m_option.indent << m_option.indent << varName << ".setRowCount(" << rows.size() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2207 }
e78566595089 initial import
mandel
parents:
diff changeset
2208
e78566595089 initial import
mandel
parents:
diff changeset
2209 for (int i = 0; i < rows.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2210 const DomRow *row = rows.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2211
e78566595089 initial import
mandel
parents:
diff changeset
2212 const DomPropertyMap properties = propertyMap(row->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2213 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2214 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2215 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2216 const QString itemName = m_driver->unique(QLatin1String("__rowItem"));
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2217 m_output << m_option.indent << "QTableWidgetItem "
1
e78566595089 initial import
mandel
parents:
diff changeset
2218 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2219
e78566595089 initial import
mandel
parents:
diff changeset
2220 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2221 m_refreshOut << m_option.indent << varName << ".verticalHeaderItem(" << i << ").setText("
1
e78566595089 initial import
mandel
parents:
diff changeset
2222 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2223
e78566595089 initial import
mandel
parents:
diff changeset
2224 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2225 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2226 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2227 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2228 }
e78566595089 initial import
mandel
parents:
diff changeset
2229 m_output << m_option.indent << varName << ".setVerticalHeaderItem("
e78566595089 initial import
mandel
parents:
diff changeset
2230 << i << ", " << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2231 }
e78566595089 initial import
mandel
parents:
diff changeset
2232 }
e78566595089 initial import
mandel
parents:
diff changeset
2233
e78566595089 initial import
mandel
parents:
diff changeset
2234 // items
e78566595089 initial import
mandel
parents:
diff changeset
2235 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2236
e78566595089 initial import
mandel
parents:
diff changeset
2237 const QList<DomItem *> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
2238 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2239 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2240 if (item->hasAttributeRow() && item->hasAttributeColumn()) {
e78566595089 initial import
mandel
parents:
diff changeset
2241 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2242 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2243 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2244 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2245 const QString itemName = m_driver->unique(QLatin1String("__tableItem"));
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2246 m_output << m_option.indent << "QTableWidgetItem "
1
e78566595089 initial import
mandel
parents:
diff changeset
2247 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2248
e78566595089 initial import
mandel
parents:
diff changeset
2249 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2250 m_refreshOut << m_option.indent << varName << ".item(" << item->attributeRow()
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2251 << ", " << item->attributeColumn() << ").setText("
1
e78566595089 initial import
mandel
parents:
diff changeset
2252 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2253
e78566595089 initial import
mandel
parents:
diff changeset
2254 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2255 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2256 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2257 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2258 }
e78566595089 initial import
mandel
parents:
diff changeset
2259
e78566595089 initial import
mandel
parents:
diff changeset
2260 m_output << m_option.indent << varName << ".setItem("
e78566595089 initial import
mandel
parents:
diff changeset
2261 << item->attributeRow() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2262 << item->attributeColumn() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2263 << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2264 }
e78566595089 initial import
mandel
parents:
diff changeset
2265 }
e78566595089 initial import
mandel
parents:
diff changeset
2266 }
e78566595089 initial import
mandel
parents:
diff changeset
2267 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2268 }
e78566595089 initial import
mandel
parents:
diff changeset
2269
e78566595089 initial import
mandel
parents:
diff changeset
2270 QString WriteInitialization::trCall(const QString &str, const QString &commentHint) const
e78566595089 initial import
mandel
parents:
diff changeset
2271 {
e78566595089 initial import
mandel
parents:
diff changeset
2272 if (str.isEmpty())
78
3d465c0a4f98 duic: replace "" with null
SokoL_SD
parents: 76
diff changeset
2273 return QLatin1String("null");
1
e78566595089 initial import
mandel
parents:
diff changeset
2274
e78566595089 initial import
mandel
parents:
diff changeset
2275 QString result;
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2276 const QString comment = commentHint.isEmpty() ? QString("null") : fixString(commentHint, m_option.indent);
1
e78566595089 initial import
mandel
parents:
diff changeset
2277
e78566595089 initial import
mandel
parents:
diff changeset
2278 if (m_option.translateFunction.isEmpty()) {
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2279 result = QLatin1String("QApplication.translate(\"");
1
e78566595089 initial import
mandel
parents:
diff changeset
2280 result += m_generatedClass;
e78566595089 initial import
mandel
parents:
diff changeset
2281 result += QLatin1Char('"');
e78566595089 initial import
mandel
parents:
diff changeset
2282 result += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
2283 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2284 result = m_option.translateFunction;
e78566595089 initial import
mandel
parents:
diff changeset
2285 result += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
2286 }
e78566595089 initial import
mandel
parents:
diff changeset
2287
e78566595089 initial import
mandel
parents:
diff changeset
2288 result += fixString(str, m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
2289 result += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
2290 result += comment;
e78566595089 initial import
mandel
parents:
diff changeset
2291
e78566595089 initial import
mandel
parents:
diff changeset
2292 if (m_option.translateFunction.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2293 result += QLatin1String(", ");
48
2085c2157b50 started work on duic
eldar
parents: 1
diff changeset
2294 result += QLatin1String("QApplication.UnicodeUTF8");
1
e78566595089 initial import
mandel
parents:
diff changeset
2295 }
e78566595089 initial import
mandel
parents:
diff changeset
2296
e78566595089 initial import
mandel
parents:
diff changeset
2297 result += QLatin1Char(')');
e78566595089 initial import
mandel
parents:
diff changeset
2298 return result;
e78566595089 initial import
mandel
parents:
diff changeset
2299 }
e78566595089 initial import
mandel
parents:
diff changeset
2300
e78566595089 initial import
mandel
parents:
diff changeset
2301 void WriteInitialization::initializeQ3SqlDataTable(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2302 {
e78566595089 initial import
mandel
parents:
diff changeset
2303 const DomPropertyMap properties = propertyMap(w->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2304
e78566595089 initial import
mandel
parents:
diff changeset
2305 const DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2306 if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
e78566595089 initial import
mandel
parents:
diff changeset
2307 return;
e78566595089 initial import
mandel
parents:
diff changeset
2308
e78566595089 initial import
mandel
parents:
diff changeset
2309 QString connection;
e78566595089 initial import
mandel
parents:
diff changeset
2310 QString table;
e78566595089 initial import
mandel
parents:
diff changeset
2311 QString field;
e78566595089 initial import
mandel
parents:
diff changeset
2312
e78566595089 initial import
mandel
parents:
diff changeset
2313 const DomProperty *db = properties.value(QLatin1String("database"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2314 if (db && db->elementStringList()) {
e78566595089 initial import
mandel
parents:
diff changeset
2315 const QStringList info = db->elementStringList()->elementString();
e78566595089 initial import
mandel
parents:
diff changeset
2316 connection = info.size() > 0 ? info.at(0) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2317 table = info.size() > 1 ? info.at(1) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2318 field = info.size() > 2 ? info.at(2) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2319 }
e78566595089 initial import
mandel
parents:
diff changeset
2320
e78566595089 initial import
mandel
parents:
diff changeset
2321 if (table.isEmpty() || connection.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2322 fprintf(stderr, "invalid database connection\n");
e78566595089 initial import
mandel
parents:
diff changeset
2323 return;
e78566595089 initial import
mandel
parents:
diff changeset
2324 }
e78566595089 initial import
mandel
parents:
diff changeset
2325
e78566595089 initial import
mandel
parents:
diff changeset
2326 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2327
e78566595089 initial import
mandel
parents:
diff changeset
2328 m_output << m_option.indent << "if (!" << varName << ".sqlCursor()) {\n";
e78566595089 initial import
mandel
parents:
diff changeset
2329
e78566595089 initial import
mandel
parents:
diff changeset
2330 m_output << m_option.indent << m_option.indent << varName << ".setSqlCursor(";
e78566595089 initial import
mandel
parents:
diff changeset
2331
e78566595089 initial import
mandel
parents:
diff changeset
2332 if (connection == QLatin1String("(default)")) {
e78566595089 initial import
mandel
parents:
diff changeset
2333 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2334 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2335 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << ", true, " << connection << "Connection" << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2336 }
e78566595089 initial import
mandel
parents:
diff changeset
2337 m_output << m_option.indent << m_option.indent << varName << ".refresh(qt.qt3support.Q3DataTable.RefreshAll);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2338 m_output << m_option.indent << "}\n";
e78566595089 initial import
mandel
parents:
diff changeset
2339 }
e78566595089 initial import
mandel
parents:
diff changeset
2340
e78566595089 initial import
mandel
parents:
diff changeset
2341 void WriteInitialization::initializeQ3SqlDataBrowser(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2342 {
e78566595089 initial import
mandel
parents:
diff changeset
2343 const DomPropertyMap properties = propertyMap(w->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2344
e78566595089 initial import
mandel
parents:
diff changeset
2345 const DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2346 if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
e78566595089 initial import
mandel
parents:
diff changeset
2347 return;
e78566595089 initial import
mandel
parents:
diff changeset
2348
e78566595089 initial import
mandel
parents:
diff changeset
2349 QString connection;
e78566595089 initial import
mandel
parents:
diff changeset
2350 QString table;
e78566595089 initial import
mandel
parents:
diff changeset
2351 QString field;
e78566595089 initial import
mandel
parents:
diff changeset
2352
e78566595089 initial import
mandel
parents:
diff changeset
2353 const DomProperty *db = properties.value(QLatin1String("database"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2354 if (db && db->elementStringList()) {
e78566595089 initial import
mandel
parents:
diff changeset
2355 const QStringList info = db->elementStringList()->elementString();
e78566595089 initial import
mandel
parents:
diff changeset
2356 connection = info.size() > 0 ? info.at(0) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2357 table = info.size() > 1 ? info.at(1) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2358 field = info.size() > 2 ? info.at(2) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2359 }
e78566595089 initial import
mandel
parents:
diff changeset
2360
e78566595089 initial import
mandel
parents:
diff changeset
2361 if (table.isEmpty() || connection.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2362 fprintf(stderr, "invalid database connection\n");
e78566595089 initial import
mandel
parents:
diff changeset
2363 return;
e78566595089 initial import
mandel
parents:
diff changeset
2364 }
e78566595089 initial import
mandel
parents:
diff changeset
2365
e78566595089 initial import
mandel
parents:
diff changeset
2366 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2367
e78566595089 initial import
mandel
parents:
diff changeset
2368 m_output << m_option.indent << "if (!" << varName << ".sqlCursor()) {\n";
e78566595089 initial import
mandel
parents:
diff changeset
2369
e78566595089 initial import
mandel
parents:
diff changeset
2370 m_output << m_option.indent << m_option.indent << varName << ".setSqlCursor(";
e78566595089 initial import
mandel
parents:
diff changeset
2371
e78566595089 initial import
mandel
parents:
diff changeset
2372 if (connection == QLatin1String("(default)")) {
e78566595089 initial import
mandel
parents:
diff changeset
2373 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << "), true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2374 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2375 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << ", true, " << connection << "Connection" << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2376 }
e78566595089 initial import
mandel
parents:
diff changeset
2377 m_output << m_option.indent << m_option.indent << varName << ".refresh();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2378 m_output << m_option.indent << "}\n";
e78566595089 initial import
mandel
parents:
diff changeset
2379 }
e78566595089 initial import
mandel
parents:
diff changeset
2380
e78566595089 initial import
mandel
parents:
diff changeset
2381 void WriteInitialization::initializeMenu(DomWidget *w, const QString &/*parentWidget*/)
e78566595089 initial import
mandel
parents:
diff changeset
2382 {
e78566595089 initial import
mandel
parents:
diff changeset
2383 const QString menuName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2384 const QString menuAction = menuName + QLatin1String("Action");
e78566595089 initial import
mandel
parents:
diff changeset
2385
e78566595089 initial import
mandel
parents:
diff changeset
2386 const DomAction *action = m_driver->actionByName(menuAction);
e78566595089 initial import
mandel
parents:
diff changeset
2387 if (action && action->hasAttributeMenu()) {
e78566595089 initial import
mandel
parents:
diff changeset
2388 m_output << m_option.indent << menuAction << " = " << menuName << ".menuAction();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2389 }
e78566595089 initial import
mandel
parents:
diff changeset
2390 }
e78566595089 initial import
mandel
parents:
diff changeset
2391
e78566595089 initial import
mandel
parents:
diff changeset
2392 QString WriteInitialization::trCall(DomString *str) const
e78566595089 initial import
mandel
parents:
diff changeset
2393 {
e78566595089 initial import
mandel
parents:
diff changeset
2394 return trCall(toString(str), str->attributeComment());
e78566595089 initial import
mandel
parents:
diff changeset
2395 }
e78566595089 initial import
mandel
parents:
diff changeset
2396
e78566595089 initial import
mandel
parents:
diff changeset
2397 bool WriteInitialization::isValidObject(const QString &name) const
e78566595089 initial import
mandel
parents:
diff changeset
2398 {
e78566595089 initial import
mandel
parents:
diff changeset
2399 return m_registeredWidgets.contains(name)
e78566595089 initial import
mandel
parents:
diff changeset
2400 || m_registeredActions.contains(name);
e78566595089 initial import
mandel
parents:
diff changeset
2401 }
e78566595089 initial import
mandel
parents:
diff changeset
2402
e78566595089 initial import
mandel
parents:
diff changeset
2403 QString WriteInitialization::findDeclaration(const QString &name)
e78566595089 initial import
mandel
parents:
diff changeset
2404 {
e78566595089 initial import
mandel
parents:
diff changeset
2405 const QString normalized = Driver::normalizedName(name);
e78566595089 initial import
mandel
parents:
diff changeset
2406
e78566595089 initial import
mandel
parents:
diff changeset
2407 if (DomWidget *widget = m_driver->widgetByName(normalized))
e78566595089 initial import
mandel
parents:
diff changeset
2408 return m_driver->findOrInsertWidget(widget);
e78566595089 initial import
mandel
parents:
diff changeset
2409 else if (DomAction *action = m_driver->actionByName(normalized))
e78566595089 initial import
mandel
parents:
diff changeset
2410 return m_driver->findOrInsertAction(action);
e78566595089 initial import
mandel
parents:
diff changeset
2411
e78566595089 initial import
mandel
parents:
diff changeset
2412 return QString();
e78566595089 initial import
mandel
parents:
diff changeset
2413 }
e78566595089 initial import
mandel
parents:
diff changeset
2414
e78566595089 initial import
mandel
parents:
diff changeset
2415 void WriteInitialization::acceptConnection(DomConnection *connection)
e78566595089 initial import
mandel
parents:
diff changeset
2416 {
e78566595089 initial import
mandel
parents:
diff changeset
2417 const QString sender = findDeclaration(connection->elementSender());
e78566595089 initial import
mandel
parents:
diff changeset
2418 const QString receiver = findDeclaration(connection->elementReceiver());
e78566595089 initial import
mandel
parents:
diff changeset
2419
e78566595089 initial import
mandel
parents:
diff changeset
2420 if (sender.isEmpty() || receiver.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2421 return;
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2422 // qtd signal
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2423 QRegExp excl_brackets("\\((.*)\\)");
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2424 QString stripped_signal = connection->elementSignal().remove(excl_brackets);
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2425 QString stripped_slot = connection->elementSlot().remove(excl_brackets);
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2426 m_output << m_option.indent
1
e78566595089 initial import
mandel
parents:
diff changeset
2427 << sender
56
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2428 << "." << stripped_signal
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2429 << ".connect"
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2430 << "(&" << receiver << "."
d5a6b6269f44 duic is working now on the first testcase, if there are any issues with it please report
eldar
parents: 48
diff changeset
2431 << stripped_slot << ");\n";
1
e78566595089 initial import
mandel
parents:
diff changeset
2432 }
e78566595089 initial import
mandel
parents:
diff changeset
2433
e78566595089 initial import
mandel
parents:
diff changeset
2434 DomImage *WriteInitialization::findImage(const QString &name) const
e78566595089 initial import
mandel
parents:
diff changeset
2435 {
e78566595089 initial import
mandel
parents:
diff changeset
2436 return m_registeredImages.value(name);
e78566595089 initial import
mandel
parents:
diff changeset
2437 }
e78566595089 initial import
mandel
parents:
diff changeset
2438
e78566595089 initial import
mandel
parents:
diff changeset
2439 DomWidget *WriteInitialization::findWidget(const QString &widgetClass)
e78566595089 initial import
mandel
parents:
diff changeset
2440 {
e78566595089 initial import
mandel
parents:
diff changeset
2441 for (int i = m_widgetChain.count() - 1; i >= 0; --i) {
e78566595089 initial import
mandel
parents:
diff changeset
2442 DomWidget *widget = m_widgetChain.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2443
e78566595089 initial import
mandel
parents:
diff changeset
2444 if (widget && m_uic->customWidgetsInfo()->extends(widget->attributeClass(), widgetClass))
e78566595089 initial import
mandel
parents:
diff changeset
2445 return widget;
e78566595089 initial import
mandel
parents:
diff changeset
2446 }
e78566595089 initial import
mandel
parents:
diff changeset
2447
e78566595089 initial import
mandel
parents:
diff changeset
2448 return 0;
e78566595089 initial import
mandel
parents:
diff changeset
2449 }
e78566595089 initial import
mandel
parents:
diff changeset
2450
e78566595089 initial import
mandel
parents:
diff changeset
2451 void WriteInitialization::acceptImage(DomImage *image)
e78566595089 initial import
mandel
parents:
diff changeset
2452 {
e78566595089 initial import
mandel
parents:
diff changeset
2453 if (!image->hasAttributeName())
e78566595089 initial import
mandel
parents:
diff changeset
2454 return;
e78566595089 initial import
mandel
parents:
diff changeset
2455
e78566595089 initial import
mandel
parents:
diff changeset
2456 m_registeredImages.insert(image->attributeName(), image);
e78566595089 initial import
mandel
parents:
diff changeset
2457 }
e78566595089 initial import
mandel
parents:
diff changeset
2458
e78566595089 initial import
mandel
parents:
diff changeset
2459 void WriteInitialization::acceptWidgetScripts(const DomScripts &widgetScripts, DomWidget *node, const DomWidgets &childWidgets)
e78566595089 initial import
mandel
parents:
diff changeset
2460 {
e78566595089 initial import
mandel
parents:
diff changeset
2461 // Add the per-class custom scripts to the per-widget ones.
e78566595089 initial import
mandel
parents:
diff changeset
2462 DomScripts scripts(widgetScripts);
e78566595089 initial import
mandel
parents:
diff changeset
2463
e78566595089 initial import
mandel
parents:
diff changeset
2464 if (DomScript *customWidgetScript = m_uic->customWidgetsInfo()->customWidgetScript(node->attributeClass()))
e78566595089 initial import
mandel
parents:
diff changeset
2465 scripts.push_front(customWidgetScript);
e78566595089 initial import
mandel
parents:
diff changeset
2466
e78566595089 initial import
mandel
parents:
diff changeset
2467 if (scripts.empty())
e78566595089 initial import
mandel
parents:
diff changeset
2468 return;
e78566595089 initial import
mandel
parents:
diff changeset
2469
e78566595089 initial import
mandel
parents:
diff changeset
2470 // concatenate script snippets
e78566595089 initial import
mandel
parents:
diff changeset
2471 QString script;
e78566595089 initial import
mandel
parents:
diff changeset
2472 foreach (const DomScript *domScript, scripts) {
e78566595089 initial import
mandel
parents:
diff changeset
2473 const QString snippet = domScript->text();
e78566595089 initial import
mandel
parents:
diff changeset
2474 if (!snippet.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2475 script += snippet.trimmed();
e78566595089 initial import
mandel
parents:
diff changeset
2476 script += QLatin1Char('\n');
e78566595089 initial import
mandel
parents:
diff changeset
2477 }
e78566595089 initial import
mandel
parents:
diff changeset
2478 }
e78566595089 initial import
mandel
parents:
diff changeset
2479 if (script.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2480 return;
e78566595089 initial import
mandel
parents:
diff changeset
2481
e78566595089 initial import
mandel
parents:
diff changeset
2482 // Build the list of children and insert call
e78566595089 initial import
mandel
parents:
diff changeset
2483 m_output << m_option.indent << "childWidgets.clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2484 if (!childWidgets.empty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2485 m_output << m_option.indent << "childWidgets";
e78566595089 initial import
mandel
parents:
diff changeset
2486 foreach (DomWidget *child, childWidgets) {
e78566595089 initial import
mandel
parents:
diff changeset
2487 m_output << " << " << m_driver->findOrInsertWidget(child);
e78566595089 initial import
mandel
parents:
diff changeset
2488 }
e78566595089 initial import
mandel
parents:
diff changeset
2489 m_output << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
2490 }
338
e65f08f6262b fix for duic. QStringUtil instead of QString
Eldar Insafutdinov
parents: 84
diff changeset
2491 m_output << m_option.indent << "scriptContext.run(QStringUtil.fromUtf8("
1
e78566595089 initial import
mandel
parents:
diff changeset
2492 << fixString(script, m_option.indent) << "), "
e78566595089 initial import
mandel
parents:
diff changeset
2493 << m_driver->findOrInsertWidget(node) << ", childWidgets);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2494 }
e78566595089 initial import
mandel
parents:
diff changeset
2495
e78566595089 initial import
mandel
parents:
diff changeset
2496 } // namespace D
e78566595089 initial import
mandel
parents:
diff changeset
2497
e78566595089 initial import
mandel
parents:
diff changeset
2498 QT_END_NAMESPACE