annotate tools/duic/d/dwriteinitialization.cpp @ 1:e78566595089

initial import
author mandel
date Mon, 11 May 2009 16:01:50 +0000
parents
children 2085c2157b50
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) {
e78566595089 initial import
mandel
parents:
diff changeset
57 static const QLatin1String prefix("qt.core.Qt.");
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: {
e78566595089 initial import
mandel
parents:
diff changeset
70 QString area = QLatin1String("(cast(qt.core.Qt.ToolBarArea)(");
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
e78566595089 initial import
mandel
parents:
diff changeset
102 if (!sizeType.startsWith(QLatin1String("qt.core.QSizePolicy.")))
e78566595089 initial import
mandel
parents:
diff changeset
103 sizeType.prepend(QLatin1String("qt.core.QSizePolicy."));
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();
e78566595089 initial import
mandel
parents:
diff changeset
108 if (orientation == QLatin1String("qt.core.Qt.Vertical") || orientation == QLatin1String("Vertical")) isVspacer = true;
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)
e78566595089 initial import
mandel
parents:
diff changeset
112 output << "qt.core.QSizePolicy.Minimum, " << sizeType << ')';
e78566595089 initial import
mandel
parents:
diff changeset
113 else
e78566595089 initial import
mandel
parents:
diff changeset
114 output << sizeType << ", qt.core.QSizePolicy.Minimum)";
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
e78566595089 initial import
mandel
parents:
diff changeset
173 inline void openIfndef(QTextStream &str, const QString &symbol) { str << endl << QLatin1String("#ifndef ") << symbol << endl; }
e78566595089 initial import
mandel
parents:
diff changeset
174 inline void closeIfdef(QTextStream &str, const QString &symbol) { str << QLatin1String("#endif // ") << symbol << endl << endl; }
e78566595089 initial import
mandel
parents:
diff changeset
175
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
e78566595089 initial import
mandel
parents:
diff changeset
483 m_output << m_option.indent << "void " << "setupUi(" << widgetClassName << " *" << varName << ")\n"
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)
e78566595089 initial import
mandel
parents:
diff changeset
535 m_output << "\n" << m_option.indent << "QMetaObject.connectSlotsByName(" << varName << ");\n";
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
e78566595089 initial import
mandel
parents:
diff changeset
546 m_output << m_option.indent << "void " << "retranslateUi(" << widgetClassName << " *" << varName << ")\n"
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"))) {
e78566595089 initial import
mandel
parents:
diff changeset
675 area += QLatin1String("(cast(qt.core.Qt.DockWidgetArea)(");
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
e78566595089 initial import
mandel
parents:
diff changeset
735 m_output << m_option.indent << parentWidget << ".addTab(" << varName << icon << ", " << "QString());\n";
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
e78566595089 initial import
mandel
parents:
diff changeset
795 m_output << m_option.indent << parent << ".setColumnLayout(0, qt.core.Qt.Vertical);\n";
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"));
e78566595089 initial import
mandel
parents:
diff changeset
816 m_output << m_option.indent << "QBoxLayout *" << tempName << " = qobject_cast<QBoxLayout *>(" <<
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) {
e78566595089 initial import
mandel
parents:
diff changeset
823 m_output << m_option.indent << varName << ".setAlignment(qt.core.Qt.AlignTop);\n";
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();
e78566595089 initial import
mandel
parents:
diff changeset
923 const QString role = node->attributeColumn() == 0 ? QLatin1String("qt.gui.QFormLayout.LabelRole") : QLatin1String("qt.gui.QFormLayout.FieldRole");
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"));
e78566595089 initial import
mandel
parents:
diff changeset
1028 m_output << m_option.indent << varName << ".setControl(qt.core.QString.fromUtf8("
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(" ");
e78566595089 initial import
mandel
parents:
diff changeset
1038 m_output << m_option.indent << "if (" << varName << ".objectName().isEmpty())\n";
e78566595089 initial import
mandel
parents:
diff changeset
1039 }
e78566595089 initial import
mandel
parents:
diff changeset
1040 m_output << m_option.indent << indent << varName << ".setObjectName(qt.core.QString.fromUtf8(" << fixString(varName, m_option.indent) << "));\n";
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
e78566595089 initial import
mandel
parents:
diff changeset
1095 QString shape = QLatin1String("qt.gui.QFrame.HLine");
e78566595089 initial import
mandel
parents:
diff changeset
1096 if (p->elementEnum() == QLatin1String("qt.core.Qt.Vertical"))
e78566595089 initial import
mandel
parents:
diff changeset
1097 shape = QLatin1String("qt.gui.QFrame.VLine");
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)
e78566595089 initial import
mandel
parents:
diff changeset
1102 m_output << m_option.indent << varName << ".setFrameShadow(qt.gui.QFrame.Sunken);\n";
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:
e78566595089 initial import
mandel
parents:
diff changeset
1164 propertyValue = QString::fromLatin1("qt.gui.QCursor(cast(qt.core.Qt.CursorShape)(%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()");
e78566595089 initial import
mandel
parents:
diff changeset
1170 propertyValue = QString::fromLatin1("QCursor(qt.core.Qt.%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();
e78566595089 initial import
mandel
parents:
diff changeset
1175 if (!propertyValue.contains(QLatin1String("."))) {
e78566595089 initial import
mandel
parents:
diff changeset
1176 QString scope = className;
e78566595089 initial import
mandel
parents:
diff changeset
1177 scope += QLatin1String(".");
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"));
e78566595089 initial import
mandel
parents:
diff changeset
1196 m_output << m_option.indent << "QPalette " << paletteName << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1197
e78566595089 initial import
mandel
parents:
diff changeset
1198 writeColorGroup(pal->elementActive(), QLatin1String("qt.gui.QPalette.Active"), paletteName);
e78566595089 initial import
mandel
parents:
diff changeset
1199 writeColorGroup(pal->elementInactive(), QLatin1String("qt.gui.QPalette.Inactive"), paletteName);
e78566595089 initial import
mandel
parents:
diff changeset
1200 writeColorGroup(pal->elementDisabled(), QLatin1String("qt.gui.QPalette.Disabled"), paletteName);
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();
e78566595089 initial import
mandel
parents:
diff changeset
1207 propertyValue = QString::fromLatin1("qt.core.QPoint(%1, %2)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1213 propertyValue = QString::fromLatin1("qt.core.QPointF(%1, %2)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1219 propertyValue = QString::fromLatin1("qt.core.QRect(%1, %2, %3, %4)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1226 propertyValue = QString::fromLatin1("qt.core.QRectF(%1, %2, %3, %4)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1233 propertyValue = QString::fromLatin1("qt.core.QLocale(qt.core.QLocale.%1, qt.core.QLocale.%2)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1248 propertyValue = QString::fromLatin1("qt.core.QSize(%1, %2)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1254 propertyValue = QString::fromLatin1("qt.core.QSizeF(%1, %2)")
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())) {
e78566595089 initial import
mandel
parents:
diff changeset
1269 propertyValue = QLatin1String("QString.fromUtf8(");
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();
e78566595089 initial import
mandel
parents:
diff changeset
1302 propertyValue = QString::fromLatin1("qt.core.QChar(%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();
e78566595089 initial import
mandel
parents:
diff changeset
1308 propertyValue = QString::fromLatin1("qt.core.QDate(%1, %2, %3)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1316 propertyValue = QString::fromLatin1("qt.core.QTime(%1, %2, %3)")
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();
e78566595089 initial import
mandel
parents:
diff changeset
1324 propertyValue = QString::fromLatin1("qt.core.QDateTime(qt.core.QDate(%1, %2, %3), qt.core.QTime(%4, %5, %6))")
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:
e78566595089 initial import
mandel
parents:
diff changeset
1334 propertyValue = QLatin1String("qt.core.QStringList()");
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();
e78566595089 initial import
mandel
parents:
diff changeset
1346 propertyValue = QString::fromLatin1("qt.core.QUrl(%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 }
e78566595089 initial import
mandel
parents:
diff changeset
1356
e78566595089 initial import
mandel
parents:
diff changeset
1357 if (propertyValue.size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1358 const char* defineC = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1359 if (propertyName == QLatin1String("toolTip"))
e78566595089 initial import
mandel
parents:
diff changeset
1360 defineC = toolTipDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1361 if (propertyName == QLatin1String("whatsThis"))
e78566595089 initial import
mandel
parents:
diff changeset
1362 defineC = whatsThisDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1363 if (propertyName == QLatin1String("statusTip"))
e78566595089 initial import
mandel
parents:
diff changeset
1364 defineC = statusTipDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1365 const bool needsTranslation = p->kind() == DomProperty::String && (!p->elementString()->hasAttributeNotr() || !toBool(p->elementString()->attributeNotr()));
e78566595089 initial import
mandel
parents:
diff changeset
1366 if (propertyName == QLatin1String("accessibleName") || propertyName == QLatin1String("accessibleDescription"))
e78566595089 initial import
mandel
parents:
diff changeset
1367 defineC = accessibilityDefineC;
e78566595089 initial import
mandel
parents:
diff changeset
1368
e78566595089 initial import
mandel
parents:
diff changeset
1369 QTextStream &o = needsTranslation ? m_refreshOut : m_output;
e78566595089 initial import
mandel
parents:
diff changeset
1370
e78566595089 initial import
mandel
parents:
diff changeset
1371 if (defineC)
e78566595089 initial import
mandel
parents:
diff changeset
1372 openIfndef(o, QLatin1String(defineC));
e78566595089 initial import
mandel
parents:
diff changeset
1373 o << m_option.indent << varNewName << setFunction << propertyValue;
e78566595089 initial import
mandel
parents:
diff changeset
1374 if (!stdset)
e78566595089 initial import
mandel
parents:
diff changeset
1375 o << ')';
e78566595089 initial import
mandel
parents:
diff changeset
1376 o << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1377 if (defineC)
e78566595089 initial import
mandel
parents:
diff changeset
1378 closeIfdef(o, QLatin1String(defineC));
e78566595089 initial import
mandel
parents:
diff changeset
1379 }
e78566595089 initial import
mandel
parents:
diff changeset
1380 }
e78566595089 initial import
mandel
parents:
diff changeset
1381 if (leftMargin != -1 || topMargin != -1 || rightMargin != -1 || bottomMargin != -1) {
e78566595089 initial import
mandel
parents:
diff changeset
1382 QString objectName = varName;
e78566595089 initial import
mandel
parents:
diff changeset
1383 if (m_widgetChain.top()) {
e78566595089 initial import
mandel
parents:
diff changeset
1384 const QString parentWidget = m_widgetChain.top()->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1385
e78566595089 initial import
mandel
parents:
diff changeset
1386 if (!m_layoutChain.top() && (m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3GroupBox"))
e78566595089 initial import
mandel
parents:
diff changeset
1387 || m_uic->customWidgetsInfo()->extends(parentWidget, QLatin1String("Q3ButtonGroup")))) {
e78566595089 initial import
mandel
parents:
diff changeset
1388 objectName = m_driver->findOrInsertWidget(m_widgetChain.top()) + QLatin1String(".layout()");
e78566595089 initial import
mandel
parents:
diff changeset
1389 }
e78566595089 initial import
mandel
parents:
diff changeset
1390 }
e78566595089 initial import
mandel
parents:
diff changeset
1391 m_output << m_option.indent << objectName << QLatin1String(".setContentsMargins(")
e78566595089 initial import
mandel
parents:
diff changeset
1392 << leftMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1393 << topMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1394 << rightMargin << QLatin1String(", ")
e78566595089 initial import
mandel
parents:
diff changeset
1395 << bottomMargin << QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
1396 }
e78566595089 initial import
mandel
parents:
diff changeset
1397 }
e78566595089 initial import
mandel
parents:
diff changeset
1398
e78566595089 initial import
mandel
parents:
diff changeset
1399 QString WriteInitialization::writeSizePolicy(const DomSizePolicy *sp)
e78566595089 initial import
mandel
parents:
diff changeset
1400 {
e78566595089 initial import
mandel
parents:
diff changeset
1401
e78566595089 initial import
mandel
parents:
diff changeset
1402 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1403 const SizePolicyHandle sizePolicyHandle(sp);
e78566595089 initial import
mandel
parents:
diff changeset
1404 const SizePolicyNameMap::const_iterator it = m_sizePolicyNameMap.constFind(sizePolicyHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1405 if ( it != m_sizePolicyNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1406 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1407 }
e78566595089 initial import
mandel
parents:
diff changeset
1408
e78566595089 initial import
mandel
parents:
diff changeset
1409
e78566595089 initial import
mandel
parents:
diff changeset
1410 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1411 const QString spName = m_driver->unique(QLatin1String("sizePolicy"));
e78566595089 initial import
mandel
parents:
diff changeset
1412 m_sizePolicyNameMap.insert(sizePolicyHandle, spName);
e78566595089 initial import
mandel
parents:
diff changeset
1413
e78566595089 initial import
mandel
parents:
diff changeset
1414 m_output << m_option.indent << "qt.core.QSizePolicy " << spName;
e78566595089 initial import
mandel
parents:
diff changeset
1415 do {
e78566595089 initial import
mandel
parents:
diff changeset
1416 if (sp->hasElementHSizeType() && sp->hasElementVSizeType()) {
e78566595089 initial import
mandel
parents:
diff changeset
1417 m_output << "(cast(qt.core.QSizePolicy.Policy)(" << sp->elementHSizeType()
e78566595089 initial import
mandel
parents:
diff changeset
1418 << "), cast(qt.core.QSizePolicy.Policy)(" << sp->elementVSizeType() << "));\n";
e78566595089 initial import
mandel
parents:
diff changeset
1419 break;
e78566595089 initial import
mandel
parents:
diff changeset
1420 }
e78566595089 initial import
mandel
parents:
diff changeset
1421 if (sp->hasAttributeHSizeType() && sp->hasAttributeVSizeType()) {
e78566595089 initial import
mandel
parents:
diff changeset
1422 m_output << "(qt.core.QSizePolicy." << sp->attributeHSizeType() << ", QSizePolicy."
e78566595089 initial import
mandel
parents:
diff changeset
1423 << sp->attributeVSizeType() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1424 break;
e78566595089 initial import
mandel
parents:
diff changeset
1425 }
e78566595089 initial import
mandel
parents:
diff changeset
1426 m_output << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1427 } while (false);
e78566595089 initial import
mandel
parents:
diff changeset
1428
e78566595089 initial import
mandel
parents:
diff changeset
1429 m_output << m_option.indent << spName << ".setHorizontalStretch("
e78566595089 initial import
mandel
parents:
diff changeset
1430 << sp->elementHorStretch() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1431 m_output << m_option.indent << spName << ".setVerticalStretch("
e78566595089 initial import
mandel
parents:
diff changeset
1432 << sp->elementVerStretch() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1433 return spName;
e78566595089 initial import
mandel
parents:
diff changeset
1434 }
e78566595089 initial import
mandel
parents:
diff changeset
1435 // Check for a font with the given properties in the FontPropertiesNameMap
e78566595089 initial import
mandel
parents:
diff changeset
1436 // or create a new one. Returns the name.
e78566595089 initial import
mandel
parents:
diff changeset
1437
e78566595089 initial import
mandel
parents:
diff changeset
1438 QString WriteInitialization::writeFontProperties(const DomFont *f)
e78566595089 initial import
mandel
parents:
diff changeset
1439 {
e78566595089 initial import
mandel
parents:
diff changeset
1440 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1441 const FontHandle fontHandle(f);
e78566595089 initial import
mandel
parents:
diff changeset
1442 const FontPropertiesNameMap::const_iterator it = m_fontPropertiesNameMap.constFind(fontHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1443 if ( it != m_fontPropertiesNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1444 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1445 }
e78566595089 initial import
mandel
parents:
diff changeset
1446
e78566595089 initial import
mandel
parents:
diff changeset
1447 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1448 const QString fontName = m_driver->unique(QLatin1String("font"));
e78566595089 initial import
mandel
parents:
diff changeset
1449 m_fontPropertiesNameMap.insert(FontHandle(f), fontName);
e78566595089 initial import
mandel
parents:
diff changeset
1450
e78566595089 initial import
mandel
parents:
diff changeset
1451 m_output << m_option.indent << "QFont " << fontName << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1452 if (f->hasElementFamily() && !f->elementFamily().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
1453 m_output << m_option.indent << fontName << ".setFamily(qt.core.QString.fromUtf8(" << fixString(f->elementFamily(), m_option.indent)
e78566595089 initial import
mandel
parents:
diff changeset
1454 << "));\n";
e78566595089 initial import
mandel
parents:
diff changeset
1455 }
e78566595089 initial import
mandel
parents:
diff changeset
1456 if (f->hasElementPointSize() && f->elementPointSize() > 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1457 m_output << m_option.indent << fontName << ".setPointSize(" << f->elementPointSize()
e78566595089 initial import
mandel
parents:
diff changeset
1458 << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1459 }
e78566595089 initial import
mandel
parents:
diff changeset
1460
e78566595089 initial import
mandel
parents:
diff changeset
1461 if (f->hasElementBold()) {
e78566595089 initial import
mandel
parents:
diff changeset
1462 m_output << m_option.indent << fontName << ".setBold("
e78566595089 initial import
mandel
parents:
diff changeset
1463 << (f->elementBold() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1464 }
e78566595089 initial import
mandel
parents:
diff changeset
1465 if (f->hasElementItalic()) {
e78566595089 initial import
mandel
parents:
diff changeset
1466 m_output << m_option.indent << fontName << ".setItalic("
e78566595089 initial import
mandel
parents:
diff changeset
1467 << (f->elementItalic() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1468 }
e78566595089 initial import
mandel
parents:
diff changeset
1469 if (f->hasElementUnderline()) {
e78566595089 initial import
mandel
parents:
diff changeset
1470 m_output << m_option.indent << fontName << ".setUnderline("
e78566595089 initial import
mandel
parents:
diff changeset
1471 << (f->elementUnderline() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1472 }
e78566595089 initial import
mandel
parents:
diff changeset
1473 if (f->hasElementWeight() && f->elementWeight() > 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1474 m_output << m_option.indent << fontName << ".setWeight("
e78566595089 initial import
mandel
parents:
diff changeset
1475 << f->elementWeight() << ");" << endl;
e78566595089 initial import
mandel
parents:
diff changeset
1476 }
e78566595089 initial import
mandel
parents:
diff changeset
1477 if (f->hasElementStrikeOut()) {
e78566595089 initial import
mandel
parents:
diff changeset
1478 m_output << m_option.indent << fontName << ".setStrikeOut("
e78566595089 initial import
mandel
parents:
diff changeset
1479 << (f->elementStrikeOut() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1480 }
e78566595089 initial import
mandel
parents:
diff changeset
1481 if (f->hasElementKerning()) {
e78566595089 initial import
mandel
parents:
diff changeset
1482 m_output << m_option.indent << fontName << ".setKerning("
e78566595089 initial import
mandel
parents:
diff changeset
1483 << (f->elementKerning() ? "true" : "false") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1484 }
e78566595089 initial import
mandel
parents:
diff changeset
1485 if (f->hasElementAntialiasing()) {
e78566595089 initial import
mandel
parents:
diff changeset
1486 m_output << m_option.indent << fontName << ".setStyleStrategy("
e78566595089 initial import
mandel
parents:
diff changeset
1487 << (f->elementAntialiasing() ? "qt.gui.QFont.PreferDefault" : "qt.gui.QFont.NoAntialias") << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1488 }
e78566595089 initial import
mandel
parents:
diff changeset
1489 if (f->hasElementStyleStrategy()) {
e78566595089 initial import
mandel
parents:
diff changeset
1490 m_output << m_option.indent << fontName << ".setStyleStrategy(qt.core.QFont."
e78566595089 initial import
mandel
parents:
diff changeset
1491 << f->elementStyleStrategy() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1492 }
e78566595089 initial import
mandel
parents:
diff changeset
1493 return fontName;
e78566595089 initial import
mandel
parents:
diff changeset
1494 }
e78566595089 initial import
mandel
parents:
diff changeset
1495
e78566595089 initial import
mandel
parents:
diff changeset
1496 QString WriteInitialization::writeIconProperties(const DomResourceIcon *i)
e78566595089 initial import
mandel
parents:
diff changeset
1497 {
e78566595089 initial import
mandel
parents:
diff changeset
1498 // check cache
e78566595089 initial import
mandel
parents:
diff changeset
1499 const IconHandle iconHandle(i);
e78566595089 initial import
mandel
parents:
diff changeset
1500 const IconPropertiesNameMap::const_iterator it = m_iconPropertiesNameMap.constFind(iconHandle);
e78566595089 initial import
mandel
parents:
diff changeset
1501 if (it != m_iconPropertiesNameMap.constEnd()) {
e78566595089 initial import
mandel
parents:
diff changeset
1502 return it.value();
e78566595089 initial import
mandel
parents:
diff changeset
1503 }
e78566595089 initial import
mandel
parents:
diff changeset
1504
e78566595089 initial import
mandel
parents:
diff changeset
1505 // insert with new name
e78566595089 initial import
mandel
parents:
diff changeset
1506 const QString iconName = m_driver->unique(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
1507 m_iconPropertiesNameMap.insert(IconHandle(i), iconName);
e78566595089 initial import
mandel
parents:
diff changeset
1508 if (isIconFormat44(i)) {
e78566595089 initial import
mandel
parents:
diff changeset
1509 const QString pixmap = QLatin1String("qt.gui.QPixmap");
e78566595089 initial import
mandel
parents:
diff changeset
1510 m_output << m_option.indent << "qt.gui.QIcon " << iconName << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1511 if (i->hasElementNormalOff())
e78566595089 initial import
mandel
parents:
diff changeset
1512 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOff()->text()) << ", qt.gui.QIcon.Normal, qt.gui.QIcon.Off);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1513 if (i->hasElementNormalOn())
e78566595089 initial import
mandel
parents:
diff changeset
1514 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementNormalOn()->text()) << ", qt.gui.QIcon.Normal, qt.gui.QIcon.On);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1515 if (i->hasElementDisabledOff())
e78566595089 initial import
mandel
parents:
diff changeset
1516 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOff()->text()) << ", qt.gui.QIcon.Disabled, qt.gui.QIcon.Off);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1517 if (i->hasElementDisabledOn())
e78566595089 initial import
mandel
parents:
diff changeset
1518 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementDisabledOn()->text()) << ", qt.gui.QIcon.Disabled, qt.gui.QIcon.On);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1519 if (i->hasElementActiveOff())
e78566595089 initial import
mandel
parents:
diff changeset
1520 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOff()->text()) << ", qt.gui.QIcon.Active, qt.gui.QIcon.Off);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1521 if (i->hasElementActiveOn())
e78566595089 initial import
mandel
parents:
diff changeset
1522 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementActiveOn()->text()) << ", qt.gui.QIcon.Active, qt.gui.QIcon.On);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1523 if (i->hasElementSelectedOff())
e78566595089 initial import
mandel
parents:
diff changeset
1524 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOff()->text()) << ", qt.gui.QIcon.Selected, qt.gui.QIcon.Off);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1525 if (i->hasElementSelectedOn())
e78566595089 initial import
mandel
parents:
diff changeset
1526 m_output << m_option.indent << iconName << ".addPixmap(" << pixCall(pixmap, i->elementSelectedOn()->text()) << ", qt.gui.QIcon.Selected, qt.gui.QIcon.On);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1527 } else { // pre-4.4 legacy
e78566595089 initial import
mandel
parents:
diff changeset
1528 m_output << m_option.indent << "const qt.gui.QIcon " << iconName << " = " << pixCall(QLatin1String("QIcon"), i->text())<< ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
1529 }
e78566595089 initial import
mandel
parents:
diff changeset
1530 return iconName;
e78566595089 initial import
mandel
parents:
diff changeset
1531 }
e78566595089 initial import
mandel
parents:
diff changeset
1532
e78566595089 initial import
mandel
parents:
diff changeset
1533 QString WriteInitialization::domColor2QString(const DomColor *c)
e78566595089 initial import
mandel
parents:
diff changeset
1534 {
e78566595089 initial import
mandel
parents:
diff changeset
1535 if (c->hasAttributeAlpha())
e78566595089 initial import
mandel
parents:
diff changeset
1536 return QString::fromLatin1("qt.gui.QColor(%1, %2, %3, %4)")
e78566595089 initial import
mandel
parents:
diff changeset
1537 .arg(c->elementRed())
e78566595089 initial import
mandel
parents:
diff changeset
1538 .arg(c->elementGreen())
e78566595089 initial import
mandel
parents:
diff changeset
1539 .arg(c->elementBlue())
e78566595089 initial import
mandel
parents:
diff changeset
1540 .arg(c->attributeAlpha());
e78566595089 initial import
mandel
parents:
diff changeset
1541 return QString::fromLatin1("qt.gui.QColor(%1, %2, %3)")
e78566595089 initial import
mandel
parents:
diff changeset
1542 .arg(c->elementRed())
e78566595089 initial import
mandel
parents:
diff changeset
1543 .arg(c->elementGreen())
e78566595089 initial import
mandel
parents:
diff changeset
1544 .arg(c->elementBlue());
e78566595089 initial import
mandel
parents:
diff changeset
1545 }
e78566595089 initial import
mandel
parents:
diff changeset
1546
e78566595089 initial import
mandel
parents:
diff changeset
1547 void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName)
e78566595089 initial import
mandel
parents:
diff changeset
1548 {
e78566595089 initial import
mandel
parents:
diff changeset
1549 if (!colorGroup)
e78566595089 initial import
mandel
parents:
diff changeset
1550 return;
e78566595089 initial import
mandel
parents:
diff changeset
1551
e78566595089 initial import
mandel
parents:
diff changeset
1552 // old format
e78566595089 initial import
mandel
parents:
diff changeset
1553 const QList<DomColor*> colors = colorGroup->elementColor();
e78566595089 initial import
mandel
parents:
diff changeset
1554 for (int i=0; i<colors.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1555 const DomColor *color = colors.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1556
e78566595089 initial import
mandel
parents:
diff changeset
1557 m_output << m_option.indent << paletteName << ".setColor(" << group
e78566595089 initial import
mandel
parents:
diff changeset
1558 << ", " << "cast(qt.gui.QPalette.ColorRole)(" << QString::number(i) << ')'
e78566595089 initial import
mandel
parents:
diff changeset
1559 << ", " << domColor2QString(color)
e78566595089 initial import
mandel
parents:
diff changeset
1560 << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1561 }
e78566595089 initial import
mandel
parents:
diff changeset
1562
e78566595089 initial import
mandel
parents:
diff changeset
1563 // new format
e78566595089 initial import
mandel
parents:
diff changeset
1564 const QList<DomColorRole *> colorRoles = colorGroup->elementColorRole();
e78566595089 initial import
mandel
parents:
diff changeset
1565 QListIterator<DomColorRole *> itRole(colorRoles);
e78566595089 initial import
mandel
parents:
diff changeset
1566 while (itRole.hasNext()) {
e78566595089 initial import
mandel
parents:
diff changeset
1567 const DomColorRole *colorRole = itRole.next();
e78566595089 initial import
mandel
parents:
diff changeset
1568 if (colorRole->hasAttributeRole()) {
e78566595089 initial import
mandel
parents:
diff changeset
1569 const QString brushName = writeBrushInitialization(colorRole->elementBrush());
e78566595089 initial import
mandel
parents:
diff changeset
1570 m_output << m_option.indent << paletteName << ".setBrush(" << group
e78566595089 initial import
mandel
parents:
diff changeset
1571 << ", " << "qt.gui.QPalette." << colorRole->attributeRole()
e78566595089 initial import
mandel
parents:
diff changeset
1572 << ", " << brushName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1573 }
e78566595089 initial import
mandel
parents:
diff changeset
1574 }
e78566595089 initial import
mandel
parents:
diff changeset
1575 }
e78566595089 initial import
mandel
parents:
diff changeset
1576
e78566595089 initial import
mandel
parents:
diff changeset
1577 // Write initialization for brush unless it is found in the cache. Returns the name to use
e78566595089 initial import
mandel
parents:
diff changeset
1578 // in an expression.
e78566595089 initial import
mandel
parents:
diff changeset
1579 QString WriteInitialization::writeBrushInitialization(const DomBrush *brush)
e78566595089 initial import
mandel
parents:
diff changeset
1580 {
e78566595089 initial import
mandel
parents:
diff changeset
1581 // Simple solid, colored brushes are cached
e78566595089 initial import
mandel
parents:
diff changeset
1582 const bool solidColoredBrush = !brush->hasAttributeBrushStyle() || brush->attributeBrushStyle() == QLatin1String("SolidPattern");
e78566595089 initial import
mandel
parents:
diff changeset
1583 uint rgb = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1584 if (solidColoredBrush) {
e78566595089 initial import
mandel
parents:
diff changeset
1585 if (const DomColor *color = brush->elementColor()) {
e78566595089 initial import
mandel
parents:
diff changeset
1586 rgb = ((color->elementRed() & 0xFF) << 24) |
e78566595089 initial import
mandel
parents:
diff changeset
1587 ((color->elementGreen() & 0xFF) << 16) |
e78566595089 initial import
mandel
parents:
diff changeset
1588 ((color->elementBlue() & 0xFF) << 8) |
e78566595089 initial import
mandel
parents:
diff changeset
1589 ((color->attributeAlpha() & 0xFF));
e78566595089 initial import
mandel
parents:
diff changeset
1590 const ColorBrushHash::const_iterator cit = m_colorBrushHash.constFind(rgb);
e78566595089 initial import
mandel
parents:
diff changeset
1591 if (cit != m_colorBrushHash.constEnd())
e78566595089 initial import
mandel
parents:
diff changeset
1592 return cit.value();
e78566595089 initial import
mandel
parents:
diff changeset
1593 }
e78566595089 initial import
mandel
parents:
diff changeset
1594 }
e78566595089 initial import
mandel
parents:
diff changeset
1595 // Create and enter into cache if simple
e78566595089 initial import
mandel
parents:
diff changeset
1596 const QString brushName = m_driver->unique(QLatin1String("brush"));
e78566595089 initial import
mandel
parents:
diff changeset
1597 writeBrush(brush, brushName);
e78566595089 initial import
mandel
parents:
diff changeset
1598 if (solidColoredBrush)
e78566595089 initial import
mandel
parents:
diff changeset
1599 m_colorBrushHash.insert(rgb, brushName);
e78566595089 initial import
mandel
parents:
diff changeset
1600 return brushName;
e78566595089 initial import
mandel
parents:
diff changeset
1601 }
e78566595089 initial import
mandel
parents:
diff changeset
1602
e78566595089 initial import
mandel
parents:
diff changeset
1603 void WriteInitialization::writeBrush(const DomBrush *brush, const QString &brushName)
e78566595089 initial import
mandel
parents:
diff changeset
1604 {
e78566595089 initial import
mandel
parents:
diff changeset
1605 QString style = QLatin1String("SolidPattern");
e78566595089 initial import
mandel
parents:
diff changeset
1606 if (brush->hasAttributeBrushStyle())
e78566595089 initial import
mandel
parents:
diff changeset
1607 style = brush->attributeBrushStyle();
e78566595089 initial import
mandel
parents:
diff changeset
1608
e78566595089 initial import
mandel
parents:
diff changeset
1609 if (style == QLatin1String("LinearGradientPattern") ||
e78566595089 initial import
mandel
parents:
diff changeset
1610 style == QLatin1String("RadialGradientPattern") ||
e78566595089 initial import
mandel
parents:
diff changeset
1611 style == QLatin1String("ConicalGradientPattern")) {
e78566595089 initial import
mandel
parents:
diff changeset
1612 const DomGradient *gradient = brush->elementGradient();
e78566595089 initial import
mandel
parents:
diff changeset
1613 const QString gradientType = gradient->attributeType();
e78566595089 initial import
mandel
parents:
diff changeset
1614 const QString gradientName = m_driver->unique(QLatin1String("gradient"));
e78566595089 initial import
mandel
parents:
diff changeset
1615 if (gradientType == QLatin1String("LinearGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1616 m_output << m_option.indent << "QLinearGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1617 << '(' << gradient->attributeStartX()
e78566595089 initial import
mandel
parents:
diff changeset
1618 << ", " << gradient->attributeStartY()
e78566595089 initial import
mandel
parents:
diff changeset
1619 << ", " << gradient->attributeEndX()
e78566595089 initial import
mandel
parents:
diff changeset
1620 << ", " << gradient->attributeEndY() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1621 } else if (gradientType == QLatin1String("RadialGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1622 m_output << m_option.indent << "QRadialGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1623 << '(' << gradient->attributeCentralX()
e78566595089 initial import
mandel
parents:
diff changeset
1624 << ", " << gradient->attributeCentralY()
e78566595089 initial import
mandel
parents:
diff changeset
1625 << ", " << gradient->attributeRadius()
e78566595089 initial import
mandel
parents:
diff changeset
1626 << ", " << gradient->attributeFocalX()
e78566595089 initial import
mandel
parents:
diff changeset
1627 << ", " << gradient->attributeFocalY() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1628 } else if (gradientType == QLatin1String("ConicalGradient")) {
e78566595089 initial import
mandel
parents:
diff changeset
1629 m_output << m_option.indent << "QConicalGradient " << gradientName
e78566595089 initial import
mandel
parents:
diff changeset
1630 << '(' << gradient->attributeCentralX()
e78566595089 initial import
mandel
parents:
diff changeset
1631 << ", " << gradient->attributeCentralY()
e78566595089 initial import
mandel
parents:
diff changeset
1632 << ", " << gradient->attributeAngle() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1633 }
e78566595089 initial import
mandel
parents:
diff changeset
1634
e78566595089 initial import
mandel
parents:
diff changeset
1635 m_output << m_option.indent << gradientName << ".setSpread(qt.gui.QGradient."
e78566595089 initial import
mandel
parents:
diff changeset
1636 << gradient->attributeSpread() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1637
e78566595089 initial import
mandel
parents:
diff changeset
1638 if (gradient->hasAttributeCoordinateMode()) {
e78566595089 initial import
mandel
parents:
diff changeset
1639 m_output << m_option.indent << gradientName << ".setCoordinateMode(qt.gui.QGradient."
e78566595089 initial import
mandel
parents:
diff changeset
1640 << gradient->attributeCoordinateMode() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1641 }
e78566595089 initial import
mandel
parents:
diff changeset
1642
e78566595089 initial import
mandel
parents:
diff changeset
1643 const QList<DomGradientStop *> stops = gradient->elementGradientStop();
e78566595089 initial import
mandel
parents:
diff changeset
1644 QListIterator<DomGradientStop *> it(stops);
e78566595089 initial import
mandel
parents:
diff changeset
1645 while (it.hasNext()) {
e78566595089 initial import
mandel
parents:
diff changeset
1646 const DomGradientStop *stop = it.next();
e78566595089 initial import
mandel
parents:
diff changeset
1647 const DomColor *color = stop->elementColor();
e78566595089 initial import
mandel
parents:
diff changeset
1648 m_output << m_option.indent << gradientName << ".setColorAt("
e78566595089 initial import
mandel
parents:
diff changeset
1649 << stop->attributePosition() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1650 << domColor2QString(color) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1651 }
e78566595089 initial import
mandel
parents:
diff changeset
1652 m_output << m_option.indent << "QBrush " << brushName << '('
e78566595089 initial import
mandel
parents:
diff changeset
1653 << gradientName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1654 } else if (style == QLatin1String("TexturePattern")) {
e78566595089 initial import
mandel
parents:
diff changeset
1655 const DomProperty *property = brush->elementTexture();
e78566595089 initial import
mandel
parents:
diff changeset
1656 const QString iconValue = iconCall(property);
e78566595089 initial import
mandel
parents:
diff changeset
1657
e78566595089 initial import
mandel
parents:
diff changeset
1658 m_output << m_option.indent << "QBrush " << brushName << " = QBrush("
e78566595089 initial import
mandel
parents:
diff changeset
1659 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1660 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1661 const DomColor *color = brush->elementColor();
e78566595089 initial import
mandel
parents:
diff changeset
1662 m_output << m_option.indent << "QBrush " << brushName << '('
e78566595089 initial import
mandel
parents:
diff changeset
1663 << domColor2QString(color) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1664
e78566595089 initial import
mandel
parents:
diff changeset
1665 m_output << m_option.indent << brushName << ".setStyle("
e78566595089 initial import
mandel
parents:
diff changeset
1666 << "qt.core.Qt." << style << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1667 }
e78566595089 initial import
mandel
parents:
diff changeset
1668 }
e78566595089 initial import
mandel
parents:
diff changeset
1669
e78566595089 initial import
mandel
parents:
diff changeset
1670 void WriteInitialization::acceptCustomWidget(DomCustomWidget *node)
e78566595089 initial import
mandel
parents:
diff changeset
1671 {
e78566595089 initial import
mandel
parents:
diff changeset
1672 Q_UNUSED(node);
e78566595089 initial import
mandel
parents:
diff changeset
1673 }
e78566595089 initial import
mandel
parents:
diff changeset
1674
e78566595089 initial import
mandel
parents:
diff changeset
1675 void WriteInitialization::acceptCustomWidgets(DomCustomWidgets *node)
e78566595089 initial import
mandel
parents:
diff changeset
1676 {
e78566595089 initial import
mandel
parents:
diff changeset
1677 Q_UNUSED(node);
e78566595089 initial import
mandel
parents:
diff changeset
1678 }
e78566595089 initial import
mandel
parents:
diff changeset
1679
e78566595089 initial import
mandel
parents:
diff changeset
1680 void WriteInitialization::acceptTabStops(DomTabStops *tabStops)
e78566595089 initial import
mandel
parents:
diff changeset
1681 {
e78566595089 initial import
mandel
parents:
diff changeset
1682 QString lastName;
e78566595089 initial import
mandel
parents:
diff changeset
1683
e78566595089 initial import
mandel
parents:
diff changeset
1684 const QStringList l = tabStops->elementTabStop();
e78566595089 initial import
mandel
parents:
diff changeset
1685 for (int i=0; i<l.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1686 const QString name = l.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1687
e78566595089 initial import
mandel
parents:
diff changeset
1688 if (!m_registeredWidgets.contains(name)) {
e78566595089 initial import
mandel
parents:
diff changeset
1689 fprintf(stderr, "'%s' isn't a valid widget\n", name.toLatin1().data());
e78566595089 initial import
mandel
parents:
diff changeset
1690 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1691 }
e78566595089 initial import
mandel
parents:
diff changeset
1692
e78566595089 initial import
mandel
parents:
diff changeset
1693 if (i == 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1694 lastName = name;
e78566595089 initial import
mandel
parents:
diff changeset
1695 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1696 } else if (name.isEmpty() || lastName.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
1697 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1698 }
e78566595089 initial import
mandel
parents:
diff changeset
1699
e78566595089 initial import
mandel
parents:
diff changeset
1700 m_output << m_option.indent << "qt.gui.QWidget.setTabOrder(" << lastName << ", " << name << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1701
e78566595089 initial import
mandel
parents:
diff changeset
1702 lastName = name;
e78566595089 initial import
mandel
parents:
diff changeset
1703 }
e78566595089 initial import
mandel
parents:
diff changeset
1704 }
e78566595089 initial import
mandel
parents:
diff changeset
1705
e78566595089 initial import
mandel
parents:
diff changeset
1706 void WriteInitialization::initializeQ3ListBox(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1707 {
e78566595089 initial import
mandel
parents:
diff changeset
1708 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1709 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1710
e78566595089 initial import
mandel
parents:
diff changeset
1711 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1712
e78566595089 initial import
mandel
parents:
diff changeset
1713 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1714 return;
e78566595089 initial import
mandel
parents:
diff changeset
1715
e78566595089 initial import
mandel
parents:
diff changeset
1716 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1717
e78566595089 initial import
mandel
parents:
diff changeset
1718 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1719 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1720
e78566595089 initial import
mandel
parents:
diff changeset
1721 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1722 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1723 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1724 if (!(text || pixmap))
e78566595089 initial import
mandel
parents:
diff changeset
1725 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1726
e78566595089 initial import
mandel
parents:
diff changeset
1727 m_refreshOut << m_option.indent << varName << ".insertItem(";
e78566595089 initial import
mandel
parents:
diff changeset
1728 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1729 m_refreshOut << pixCall(pixmap);
e78566595089 initial import
mandel
parents:
diff changeset
1730
e78566595089 initial import
mandel
parents:
diff changeset
1731 if (text)
e78566595089 initial import
mandel
parents:
diff changeset
1732 m_refreshOut << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1733 }
e78566595089 initial import
mandel
parents:
diff changeset
1734 if (text)
e78566595089 initial import
mandel
parents:
diff changeset
1735 m_refreshOut << trCall(text->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
1736 m_refreshOut << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1737 }
e78566595089 initial import
mandel
parents:
diff changeset
1738 }
e78566595089 initial import
mandel
parents:
diff changeset
1739
e78566595089 initial import
mandel
parents:
diff changeset
1740 void WriteInitialization::initializeQ3IconView(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1741 {
e78566595089 initial import
mandel
parents:
diff changeset
1742 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1743 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1744
e78566595089 initial import
mandel
parents:
diff changeset
1745 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1746
e78566595089 initial import
mandel
parents:
diff changeset
1747 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1748 return;
e78566595089 initial import
mandel
parents:
diff changeset
1749
e78566595089 initial import
mandel
parents:
diff changeset
1750 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1751
e78566595089 initial import
mandel
parents:
diff changeset
1752 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1753 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1754
e78566595089 initial import
mandel
parents:
diff changeset
1755 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1756 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1757 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1758 if (!(text || pixmap))
e78566595089 initial import
mandel
parents:
diff changeset
1759 continue;
e78566595089 initial import
mandel
parents:
diff changeset
1760
e78566595089 initial import
mandel
parents:
diff changeset
1761 const QString itemName = m_driver->unique(QLatin1String("__item"));
e78566595089 initial import
mandel
parents:
diff changeset
1762 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1763 m_refreshOut << m_option.indent << "Q3IconViewItem *" << itemName << " = new Q3IconViewItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1764
e78566595089 initial import
mandel
parents:
diff changeset
1765 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1766 m_refreshOut << m_option.indent << itemName << ".setPixmap(" << pixCall(pixmap) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1767 }
e78566595089 initial import
mandel
parents:
diff changeset
1768
e78566595089 initial import
mandel
parents:
diff changeset
1769 if (text) {
e78566595089 initial import
mandel
parents:
diff changeset
1770 m_refreshOut << m_option.indent << itemName << ".setText(" << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1771 }
e78566595089 initial import
mandel
parents:
diff changeset
1772 }
e78566595089 initial import
mandel
parents:
diff changeset
1773 }
e78566595089 initial import
mandel
parents:
diff changeset
1774
e78566595089 initial import
mandel
parents:
diff changeset
1775 void WriteInitialization::initializeQ3ListView(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1776 {
e78566595089 initial import
mandel
parents:
diff changeset
1777 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1778 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1779
e78566595089 initial import
mandel
parents:
diff changeset
1780 // columns
e78566595089 initial import
mandel
parents:
diff changeset
1781 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
1782 for (int i=0; i<columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1783 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1784
e78566595089 initial import
mandel
parents:
diff changeset
1785 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1786 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1787 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1788 const DomProperty *clickable = properties.value(QLatin1String("clickable"));
e78566595089 initial import
mandel
parents:
diff changeset
1789 const DomProperty *resizable = properties.value(QLatin1String("resizable"));
e78566595089 initial import
mandel
parents:
diff changeset
1790
e78566595089 initial import
mandel
parents:
diff changeset
1791 const QString txt = trCall(text->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
1792 m_output << m_option.indent << varName << ".addColumn(" << txt << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1793 m_refreshOut << m_option.indent << varName << ".header()->setLabel(" << i << ", " << txt << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1794
e78566595089 initial import
mandel
parents:
diff changeset
1795 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1796 m_output << m_option.indent << varName << ".header()->setLabel("
e78566595089 initial import
mandel
parents:
diff changeset
1797 << varName << ".header()->count() - 1, " << pixCall(pixmap) << ", " << txt << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1798 }
e78566595089 initial import
mandel
parents:
diff changeset
1799
e78566595089 initial import
mandel
parents:
diff changeset
1800 if (clickable != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1801 m_output << m_option.indent << varName << ".header()->setClickEnabled(" << clickable->elementBool() << ", " << varName << ".header()->count() - 1);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1802 }
e78566595089 initial import
mandel
parents:
diff changeset
1803
e78566595089 initial import
mandel
parents:
diff changeset
1804 if (resizable != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1805 m_output << m_option.indent << varName << ".header()->setResizeEnabled(" << resizable->elementBool() << ", " << varName << ".header()->count() - 1);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1806 }
e78566595089 initial import
mandel
parents:
diff changeset
1807 }
e78566595089 initial import
mandel
parents:
diff changeset
1808
e78566595089 initial import
mandel
parents:
diff changeset
1809 if (w->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1810 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1811
e78566595089 initial import
mandel
parents:
diff changeset
1812 initializeQ3ListViewItems(className, varName, w->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1813 }
e78566595089 initial import
mandel
parents:
diff changeset
1814 }
e78566595089 initial import
mandel
parents:
diff changeset
1815
e78566595089 initial import
mandel
parents:
diff changeset
1816 void WriteInitialization::initializeQ3ListViewItems(const QString &className, const QString &varName, const QList<DomItem *> &items)
e78566595089 initial import
mandel
parents:
diff changeset
1817 {
e78566595089 initial import
mandel
parents:
diff changeset
1818 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1819 return;
e78566595089 initial import
mandel
parents:
diff changeset
1820
e78566595089 initial import
mandel
parents:
diff changeset
1821 // items
e78566595089 initial import
mandel
parents:
diff changeset
1822 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1823 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1824
e78566595089 initial import
mandel
parents:
diff changeset
1825 const QString itemName = m_driver->unique(QLatin1String("__item"));
e78566595089 initial import
mandel
parents:
diff changeset
1826 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1827 m_refreshOut << m_option.indent << "Q3ListViewItem *" << itemName << " = new Q3ListViewItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1828
e78566595089 initial import
mandel
parents:
diff changeset
1829 int textCount = 0, pixCount = 0;
e78566595089 initial import
mandel
parents:
diff changeset
1830 const DomPropertyList properties = item->elementProperty();
e78566595089 initial import
mandel
parents:
diff changeset
1831 for (int i=0; i<properties.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1832 const DomProperty *p = properties.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1833 if (p->attributeName() == QLatin1String("text"))
e78566595089 initial import
mandel
parents:
diff changeset
1834 m_refreshOut << m_option.indent << itemName << ".setText(" << textCount++ << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1835 << trCall(p->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1836
e78566595089 initial import
mandel
parents:
diff changeset
1837 if (p->attributeName() == QLatin1String("pixmap"))
e78566595089 initial import
mandel
parents:
diff changeset
1838 m_refreshOut << m_option.indent << itemName << ".setPixmap(" << pixCount++ << ", "
e78566595089 initial import
mandel
parents:
diff changeset
1839 << pixCall(p) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1840 }
e78566595089 initial import
mandel
parents:
diff changeset
1841
e78566595089 initial import
mandel
parents:
diff changeset
1842 if (item->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
1843 m_refreshOut << m_option.indent << itemName << ".setOpen(true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
1844 initializeQ3ListViewItems(className, itemName, item->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1845 }
e78566595089 initial import
mandel
parents:
diff changeset
1846 }
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 void WriteInitialization::initializeQ3Table(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1851 {
e78566595089 initial import
mandel
parents:
diff changeset
1852 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1853 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1854
e78566595089 initial import
mandel
parents:
diff changeset
1855 // columns
e78566595089 initial import
mandel
parents:
diff changeset
1856 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
1857
e78566595089 initial import
mandel
parents:
diff changeset
1858 for (int i=0; i<columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1859 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1860
e78566595089 initial import
mandel
parents:
diff changeset
1861 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1862 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1863 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1864
e78566595089 initial import
mandel
parents:
diff changeset
1865 m_refreshOut << m_option.indent << varName << ".horizontalHeader()->setLabel(" << i << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1866 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1867 m_refreshOut << pixCall(pixmap) << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1868 }
e78566595089 initial import
mandel
parents:
diff changeset
1869 m_refreshOut << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1870 }
e78566595089 initial import
mandel
parents:
diff changeset
1871
e78566595089 initial import
mandel
parents:
diff changeset
1872 // rows
e78566595089 initial import
mandel
parents:
diff changeset
1873 const QList<DomRow*> rows = w->elementRow();
e78566595089 initial import
mandel
parents:
diff changeset
1874 for (int i=0; i<rows.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1875 const DomRow *row = rows.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1876
e78566595089 initial import
mandel
parents:
diff changeset
1877 const DomPropertyMap properties = propertyMap(row->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1878 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1879 const DomProperty *pixmap = properties.value(QLatin1String("pixmap"));
e78566595089 initial import
mandel
parents:
diff changeset
1880
e78566595089 initial import
mandel
parents:
diff changeset
1881 m_refreshOut << m_option.indent << varName << ".verticalHeader()->setLabel(" << i << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1882 if (pixmap) {
e78566595089 initial import
mandel
parents:
diff changeset
1883 m_refreshOut << pixCall(pixmap) << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
1884 }
e78566595089 initial import
mandel
parents:
diff changeset
1885 m_refreshOut << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1886 }
e78566595089 initial import
mandel
parents:
diff changeset
1887
e78566595089 initial import
mandel
parents:
diff changeset
1888
e78566595089 initial import
mandel
parents:
diff changeset
1889 //initializeQ3TableItems(className, varName, w->elementItem());
e78566595089 initial import
mandel
parents:
diff changeset
1890 }
e78566595089 initial import
mandel
parents:
diff changeset
1891
e78566595089 initial import
mandel
parents:
diff changeset
1892 void WriteInitialization::initializeQ3TableItems(const QString &className, const QString &varName, const QList<DomItem *> &items)
e78566595089 initial import
mandel
parents:
diff changeset
1893 {
e78566595089 initial import
mandel
parents:
diff changeset
1894 Q_UNUSED(className);
e78566595089 initial import
mandel
parents:
diff changeset
1895 Q_UNUSED(varName);
e78566595089 initial import
mandel
parents:
diff changeset
1896 Q_UNUSED(items);
e78566595089 initial import
mandel
parents:
diff changeset
1897 }
e78566595089 initial import
mandel
parents:
diff changeset
1898
e78566595089 initial import
mandel
parents:
diff changeset
1899 QString WriteInitialization::iconCall(const DomProperty *icon)
e78566595089 initial import
mandel
parents:
diff changeset
1900 {
e78566595089 initial import
mandel
parents:
diff changeset
1901 if (icon->kind() == DomProperty::IconSet)
e78566595089 initial import
mandel
parents:
diff changeset
1902 return writeIconProperties(icon->elementIconSet());
e78566595089 initial import
mandel
parents:
diff changeset
1903 return pixCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
1904 }
e78566595089 initial import
mandel
parents:
diff changeset
1905
e78566595089 initial import
mandel
parents:
diff changeset
1906 QString WriteInitialization::pixCall(const DomProperty *p) const
e78566595089 initial import
mandel
parents:
diff changeset
1907 {
e78566595089 initial import
mandel
parents:
diff changeset
1908 QString type, s;
e78566595089 initial import
mandel
parents:
diff changeset
1909 switch (p->kind()) {
e78566595089 initial import
mandel
parents:
diff changeset
1910 case DomProperty::IconSet:
e78566595089 initial import
mandel
parents:
diff changeset
1911 type = QLatin1String("QIcon");
e78566595089 initial import
mandel
parents:
diff changeset
1912 s = p->elementIconSet()->text();
e78566595089 initial import
mandel
parents:
diff changeset
1913 break;
e78566595089 initial import
mandel
parents:
diff changeset
1914 case DomProperty::Pixmap:
e78566595089 initial import
mandel
parents:
diff changeset
1915 type = QLatin1String("QPixmap");
e78566595089 initial import
mandel
parents:
diff changeset
1916 s = p->elementPixmap()->text();
e78566595089 initial import
mandel
parents:
diff changeset
1917 break;
e78566595089 initial import
mandel
parents:
diff changeset
1918 default:
e78566595089 initial import
mandel
parents:
diff changeset
1919 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
1920 return QLatin1String("QIcon()");
e78566595089 initial import
mandel
parents:
diff changeset
1921 break;
e78566595089 initial import
mandel
parents:
diff changeset
1922 }
e78566595089 initial import
mandel
parents:
diff changeset
1923 return pixCall(type, s);
e78566595089 initial import
mandel
parents:
diff changeset
1924 }
e78566595089 initial import
mandel
parents:
diff changeset
1925
e78566595089 initial import
mandel
parents:
diff changeset
1926 QString WriteInitialization::pixCall(const QString &t, const QString &text) const
e78566595089 initial import
mandel
parents:
diff changeset
1927 {
e78566595089 initial import
mandel
parents:
diff changeset
1928 QString type = t;
e78566595089 initial import
mandel
parents:
diff changeset
1929 if (text.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
1930 type += QLatin1String("()");
e78566595089 initial import
mandel
parents:
diff changeset
1931 return type;
e78566595089 initial import
mandel
parents:
diff changeset
1932 }
e78566595089 initial import
mandel
parents:
diff changeset
1933 if (const DomImage *image = findImage(text)) {
e78566595089 initial import
mandel
parents:
diff changeset
1934 if (m_option.extractImages) {
e78566595089 initial import
mandel
parents:
diff changeset
1935 const QString format = image->elementData()->attributeFormat();
e78566595089 initial import
mandel
parents:
diff changeset
1936 const QString extension = format.left(format.indexOf(QLatin1Char('.'))).toLower();
e78566595089 initial import
mandel
parents:
diff changeset
1937 QString rc = QLatin1String("qt.gui.QPixmap(qt.core.QString.fromUtf8(\":/");
e78566595089 initial import
mandel
parents:
diff changeset
1938 rc += m_generatedClass;
e78566595089 initial import
mandel
parents:
diff changeset
1939 rc += QLatin1String("/images/");
e78566595089 initial import
mandel
parents:
diff changeset
1940 rc += text;
e78566595089 initial import
mandel
parents:
diff changeset
1941 rc += QLatin1Char('.');
e78566595089 initial import
mandel
parents:
diff changeset
1942 rc += extension;
e78566595089 initial import
mandel
parents:
diff changeset
1943 rc += QLatin1String("\"))");
e78566595089 initial import
mandel
parents:
diff changeset
1944 return rc;
e78566595089 initial import
mandel
parents:
diff changeset
1945 }
e78566595089 initial import
mandel
parents:
diff changeset
1946 QString rc = WriteIconInitialization::iconFromDataFunction();
e78566595089 initial import
mandel
parents:
diff changeset
1947 rc += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1948 rc += text;
e78566595089 initial import
mandel
parents:
diff changeset
1949 rc += QLatin1String("_ID)");
e78566595089 initial import
mandel
parents:
diff changeset
1950 return rc;
e78566595089 initial import
mandel
parents:
diff changeset
1951 }
e78566595089 initial import
mandel
parents:
diff changeset
1952
e78566595089 initial import
mandel
parents:
diff changeset
1953 QString pixFunc = m_uic->pixmapFunction();
e78566595089 initial import
mandel
parents:
diff changeset
1954 if (pixFunc.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1955 pixFunc = QLatin1String("qt.core.QString.fromUtf8");
e78566595089 initial import
mandel
parents:
diff changeset
1956
e78566595089 initial import
mandel
parents:
diff changeset
1957 type += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1958 type += pixFunc;
e78566595089 initial import
mandel
parents:
diff changeset
1959 type += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
1960 type += fixString(text, m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
1961 type += QLatin1String("))");
e78566595089 initial import
mandel
parents:
diff changeset
1962 return type;
e78566595089 initial import
mandel
parents:
diff changeset
1963 }
e78566595089 initial import
mandel
parents:
diff changeset
1964
e78566595089 initial import
mandel
parents:
diff changeset
1965 void WriteInitialization::initializeComboBox(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
1966 {
e78566595089 initial import
mandel
parents:
diff changeset
1967 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
1968 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
1969
e78566595089 initial import
mandel
parents:
diff changeset
1970 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
1971
e78566595089 initial import
mandel
parents:
diff changeset
1972 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
1973 return;
e78566595089 initial import
mandel
parents:
diff changeset
1974
e78566595089 initial import
mandel
parents:
diff changeset
1975 // If possible use qcombobox's addItems() which is much faster then a bunch of addItem() calls
e78566595089 initial import
mandel
parents:
diff changeset
1976 bool noIcons = true;
e78566595089 initial import
mandel
parents:
diff changeset
1977 QStringList list;
e78566595089 initial import
mandel
parents:
diff changeset
1978 for (int i=0; i<items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1979 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1980 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
1981 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
1982 const DomProperty *pixmap = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
1983 if (pixmap != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
1984 noIcons = false;
e78566595089 initial import
mandel
parents:
diff changeset
1985 break;
e78566595089 initial import
mandel
parents:
diff changeset
1986 }
e78566595089 initial import
mandel
parents:
diff changeset
1987 list.append(trCall(text->elementString()));
e78566595089 initial import
mandel
parents:
diff changeset
1988 }
e78566595089 initial import
mandel
parents:
diff changeset
1989
e78566595089 initial import
mandel
parents:
diff changeset
1990 if (noIcons) {
e78566595089 initial import
mandel
parents:
diff changeset
1991 m_refreshOut << m_option.indent << varName << ".clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
1992 m_refreshOut << m_option.indent << varName << ".insertItems(0, QStringList()" << '\n';
e78566595089 initial import
mandel
parents:
diff changeset
1993 for (int i = 0; i < list.size(); ++i)
e78566595089 initial import
mandel
parents:
diff changeset
1994 m_refreshOut << m_option.indent << " << " << list.at(i) << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
1995 m_refreshOut << m_option.indent << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
1996 } else {
e78566595089 initial import
mandel
parents:
diff changeset
1997 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
1998 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
1999 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2000 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2001 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2002
e78566595089 initial import
mandel
parents:
diff changeset
2003 QString iconValue;
e78566595089 initial import
mandel
parents:
diff changeset
2004 if (icon)
e78566595089 initial import
mandel
parents:
diff changeset
2005 iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2006
e78566595089 initial import
mandel
parents:
diff changeset
2007 m_output << m_option.indent << varName << ".addItem(";
e78566595089 initial import
mandel
parents:
diff changeset
2008 if (icon)
e78566595089 initial import
mandel
parents:
diff changeset
2009 m_output << iconValue << ", ";
e78566595089 initial import
mandel
parents:
diff changeset
2010 m_output << "QString());\n";
e78566595089 initial import
mandel
parents:
diff changeset
2011
e78566595089 initial import
mandel
parents:
diff changeset
2012 if (!toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2013 m_refreshOut << m_option.indent << varName << ".setItemText(" << i << ", " << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2014 }
e78566595089 initial import
mandel
parents:
diff changeset
2015 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2016 }
e78566595089 initial import
mandel
parents:
diff changeset
2017 }
e78566595089 initial import
mandel
parents:
diff changeset
2018
e78566595089 initial import
mandel
parents:
diff changeset
2019 QString WriteInitialization::disableSorting(DomWidget *w, const QString &varName)
e78566595089 initial import
mandel
parents:
diff changeset
2020 {
e78566595089 initial import
mandel
parents:
diff changeset
2021 // turn off sortingEnabled to force programmatic item order (setItem())
e78566595089 initial import
mandel
parents:
diff changeset
2022 QString tempName;
e78566595089 initial import
mandel
parents:
diff changeset
2023 if (!w->elementItem().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2024 tempName = m_driver->unique(QLatin1String("__sortingEnabled"));
e78566595089 initial import
mandel
parents:
diff changeset
2025 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2026 m_refreshOut << m_option.indent << "const bool " << tempName
e78566595089 initial import
mandel
parents:
diff changeset
2027 << " = " << varName << ".isSortingEnabled();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2028 m_refreshOut << m_option.indent << varName << ".setSortingEnabled(false);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2029 }
e78566595089 initial import
mandel
parents:
diff changeset
2030 return tempName;
e78566595089 initial import
mandel
parents:
diff changeset
2031 }
e78566595089 initial import
mandel
parents:
diff changeset
2032
e78566595089 initial import
mandel
parents:
diff changeset
2033 void WriteInitialization::enableSorting(DomWidget *w, const QString &varName, const QString &tempName)
e78566595089 initial import
mandel
parents:
diff changeset
2034 {
e78566595089 initial import
mandel
parents:
diff changeset
2035 if (!w->elementItem().isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2036 m_refreshOut << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2037 m_refreshOut << m_option.indent << varName << ".setSortingEnabled(" << tempName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2038 }
e78566595089 initial import
mandel
parents:
diff changeset
2039 }
e78566595089 initial import
mandel
parents:
diff changeset
2040
e78566595089 initial import
mandel
parents:
diff changeset
2041 void WriteInitialization::initializeListWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2042 {
e78566595089 initial import
mandel
parents:
diff changeset
2043 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2044 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2045
e78566595089 initial import
mandel
parents:
diff changeset
2046 const QList<DomItem*> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
2047
e78566595089 initial import
mandel
parents:
diff changeset
2048 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2049 return;
e78566595089 initial import
mandel
parents:
diff changeset
2050
e78566595089 initial import
mandel
parents:
diff changeset
2051 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2052 // items
e78566595089 initial import
mandel
parents:
diff changeset
2053 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2054 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2055
e78566595089 initial import
mandel
parents:
diff changeset
2056 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2057 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2058 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2059
e78566595089 initial import
mandel
parents:
diff changeset
2060 QString itemCreation = QLatin1String("new QListWidgetItem(") + varName + QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
2061 if (icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2062 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2063 const QString itemName = m_driver->unique(QLatin1String("__listItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2064 m_output << m_option.indent << "QListWidgetItem *" << itemName << " = " << itemCreation;
e78566595089 initial import
mandel
parents:
diff changeset
2065 m_output << m_option.indent << itemName << ".setIcon(" << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2066 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2067 m_output << m_option.indent << itemCreation;
e78566595089 initial import
mandel
parents:
diff changeset
2068 }
e78566595089 initial import
mandel
parents:
diff changeset
2069
e78566595089 initial import
mandel
parents:
diff changeset
2070 if (!toString(text->elementString()).isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2071 m_refreshOut << m_option.indent << varName << ".item(" << i << ")->setText(" << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2072 }
e78566595089 initial import
mandel
parents:
diff changeset
2073 }
e78566595089 initial import
mandel
parents:
diff changeset
2074 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2075 }
e78566595089 initial import
mandel
parents:
diff changeset
2076
e78566595089 initial import
mandel
parents:
diff changeset
2077 void WriteInitialization::initializeTreeWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2078 {
e78566595089 initial import
mandel
parents:
diff changeset
2079 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2080 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2081
e78566595089 initial import
mandel
parents:
diff changeset
2082 // columns
e78566595089 initial import
mandel
parents:
diff changeset
2083 const QList<DomColumn*> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
2084 for (int i = 0; i < columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2085 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2086
e78566595089 initial import
mandel
parents:
diff changeset
2087 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2088 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2089 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2090
e78566595089 initial import
mandel
parents:
diff changeset
2091 if (!toString(text->elementString()).isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2092 const QString txt = trCall(text->elementString());
e78566595089 initial import
mandel
parents:
diff changeset
2093 m_refreshOut << m_option.indent << varName << ".headerItem()->setText(" << i << ", " << txt << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2094 }
e78566595089 initial import
mandel
parents:
diff changeset
2095
e78566595089 initial import
mandel
parents:
diff changeset
2096 if (icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2097 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2098 m_output << m_option.indent << varName << ".headerItem()->setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2099 << i << ", " << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2100 }
e78566595089 initial import
mandel
parents:
diff changeset
2101 }
e78566595089 initial import
mandel
parents:
diff changeset
2102
e78566595089 initial import
mandel
parents:
diff changeset
2103 if (w->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
2104 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2105
e78566595089 initial import
mandel
parents:
diff changeset
2106 initializeTreeWidgetItems(className, varName, w->elementItem(), varName + QLatin1String(".topLevelItem("));
e78566595089 initial import
mandel
parents:
diff changeset
2107
e78566595089 initial import
mandel
parents:
diff changeset
2108 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2109 }
e78566595089 initial import
mandel
parents:
diff changeset
2110 }
e78566595089 initial import
mandel
parents:
diff changeset
2111
e78566595089 initial import
mandel
parents:
diff changeset
2112 void WriteInitialization::initializeTreeWidgetItems(const QString &className, const QString &varName, const QList<DomItem *> &items, const QString &parentPath)
e78566595089 initial import
mandel
parents:
diff changeset
2113 {
e78566595089 initial import
mandel
parents:
diff changeset
2114 if (items.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2115 return;
e78566595089 initial import
mandel
parents:
diff changeset
2116
e78566595089 initial import
mandel
parents:
diff changeset
2117 // items
e78566595089 initial import
mandel
parents:
diff changeset
2118 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2119 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2120
e78566595089 initial import
mandel
parents:
diff changeset
2121 int textCount = 0;
e78566595089 initial import
mandel
parents:
diff changeset
2122 const DomPropertyList properties = item->elementProperty();
e78566595089 initial import
mandel
parents:
diff changeset
2123 QStringList icons;
e78566595089 initial import
mandel
parents:
diff changeset
2124 for (int j = 0; j < properties.size(); ++j) {
e78566595089 initial import
mandel
parents:
diff changeset
2125 const DomProperty *p = properties.at(j);
e78566595089 initial import
mandel
parents:
diff changeset
2126 if (p->attributeName() == QLatin1String("text")) {
e78566595089 initial import
mandel
parents:
diff changeset
2127 if (!toString(p->elementString()).isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2128 m_refreshOut << m_option.indent << parentPath << i << ")->setText(" << textCount << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2129 << trCall(p->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2130 }
e78566595089 initial import
mandel
parents:
diff changeset
2131 textCount++;
e78566595089 initial import
mandel
parents:
diff changeset
2132 }
e78566595089 initial import
mandel
parents:
diff changeset
2133
e78566595089 initial import
mandel
parents:
diff changeset
2134 if (p->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2135 const QString iconValue = iconCall(p);
e78566595089 initial import
mandel
parents:
diff changeset
2136 icons << QLatin1String(".setIcon(")
e78566595089 initial import
mandel
parents:
diff changeset
2137 + QString::number(textCount - 1)
e78566595089 initial import
mandel
parents:
diff changeset
2138 + QLatin1String(", ") + iconValue + QLatin1String(");\n");
e78566595089 initial import
mandel
parents:
diff changeset
2139 }
e78566595089 initial import
mandel
parents:
diff changeset
2140 }
e78566595089 initial import
mandel
parents:
diff changeset
2141 if (icons.isEmpty() && (item->elementItem().size() == 0)) {
e78566595089 initial import
mandel
parents:
diff changeset
2142 m_output << m_option.indent << "new QTreeWidgetItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2143 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2144 const QString itemName = m_driver->unique(QLatin1String("__treeItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2145 m_output << m_option.indent << "QTreeWidgetItem *" << itemName << " = new QTreeWidgetItem(" << varName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2146
e78566595089 initial import
mandel
parents:
diff changeset
2147 QStringListIterator it(icons);
e78566595089 initial import
mandel
parents:
diff changeset
2148 while (it.hasNext())
e78566595089 initial import
mandel
parents:
diff changeset
2149 m_output << m_option.indent << itemName << it.next();
e78566595089 initial import
mandel
parents:
diff changeset
2150
e78566595089 initial import
mandel
parents:
diff changeset
2151 if (item->elementItem().size()) {
e78566595089 initial import
mandel
parents:
diff changeset
2152 const QString childPath = parentPath + QString::number(i) + QLatin1String(")->child(");
e78566595089 initial import
mandel
parents:
diff changeset
2153 initializeTreeWidgetItems(className, itemName, item->elementItem(), childPath);
e78566595089 initial import
mandel
parents:
diff changeset
2154 }
e78566595089 initial import
mandel
parents:
diff changeset
2155 }
e78566595089 initial import
mandel
parents:
diff changeset
2156
e78566595089 initial import
mandel
parents:
diff changeset
2157 }
e78566595089 initial import
mandel
parents:
diff changeset
2158 m_output << "\n";
e78566595089 initial import
mandel
parents:
diff changeset
2159 }
e78566595089 initial import
mandel
parents:
diff changeset
2160
e78566595089 initial import
mandel
parents:
diff changeset
2161 void WriteInitialization::initializeTableWidget(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2162 {
e78566595089 initial import
mandel
parents:
diff changeset
2163 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2164 const QString className = w->attributeClass();
e78566595089 initial import
mandel
parents:
diff changeset
2165
e78566595089 initial import
mandel
parents:
diff changeset
2166 // columns
e78566595089 initial import
mandel
parents:
diff changeset
2167 const QList<DomColumn *> columns = w->elementColumn();
e78566595089 initial import
mandel
parents:
diff changeset
2168
e78566595089 initial import
mandel
parents:
diff changeset
2169 if (columns.size() != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
2170 m_output << m_option.indent << "if (" << varName << ".columnCount() < " << columns.size() << ")\n"
e78566595089 initial import
mandel
parents:
diff changeset
2171 << m_option.indent << m_option.indent << varName << ".setColumnCount(" << columns.size() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2172 }
e78566595089 initial import
mandel
parents:
diff changeset
2173
e78566595089 initial import
mandel
parents:
diff changeset
2174 for (int i = 0; i < columns.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2175 const DomColumn *column = columns.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2176
e78566595089 initial import
mandel
parents:
diff changeset
2177 const DomPropertyMap properties = propertyMap(column->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2178 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2179 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2180 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2181 const QString itemName = m_driver->unique(QLatin1String("__colItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2182 m_output << m_option.indent << "QTableWidgetItem *"
e78566595089 initial import
mandel
parents:
diff changeset
2183 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2184
e78566595089 initial import
mandel
parents:
diff changeset
2185 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2186 m_refreshOut << m_option.indent << varName << ".horizontalHeaderItem(" << i << ")->setText("
e78566595089 initial import
mandel
parents:
diff changeset
2187 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2188
e78566595089 initial import
mandel
parents:
diff changeset
2189 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2190 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2191 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2192 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2193 }
e78566595089 initial import
mandel
parents:
diff changeset
2194 m_output << m_option.indent << varName << ".setHorizontalHeaderItem("
e78566595089 initial import
mandel
parents:
diff changeset
2195 << i << ", " << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2196 }
e78566595089 initial import
mandel
parents:
diff changeset
2197 }
e78566595089 initial import
mandel
parents:
diff changeset
2198
e78566595089 initial import
mandel
parents:
diff changeset
2199 // rows
e78566595089 initial import
mandel
parents:
diff changeset
2200 const QList<DomRow *> rows = w->elementRow();
e78566595089 initial import
mandel
parents:
diff changeset
2201
e78566595089 initial import
mandel
parents:
diff changeset
2202 if (rows.size() != 0) {
e78566595089 initial import
mandel
parents:
diff changeset
2203 m_output << m_option.indent << "if (" << varName << ".rowCount() < " << rows.size() << ")\n"
e78566595089 initial import
mandel
parents:
diff changeset
2204 << m_option.indent << m_option.indent << varName << ".setRowCount(" << rows.size() << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2205 }
e78566595089 initial import
mandel
parents:
diff changeset
2206
e78566595089 initial import
mandel
parents:
diff changeset
2207 for (int i = 0; i < rows.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2208 const DomRow *row = rows.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2209
e78566595089 initial import
mandel
parents:
diff changeset
2210 const DomPropertyMap properties = propertyMap(row->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2211 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2212 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2213 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2214 const QString itemName = m_driver->unique(QLatin1String("__rowItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2215 m_output << m_option.indent << "QTableWidgetItem *"
e78566595089 initial import
mandel
parents:
diff changeset
2216 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2217
e78566595089 initial import
mandel
parents:
diff changeset
2218 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2219 m_refreshOut << m_option.indent << varName << ".verticalHeaderItem(" << i << ")->setText("
e78566595089 initial import
mandel
parents:
diff changeset
2220 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2221
e78566595089 initial import
mandel
parents:
diff changeset
2222 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2223 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2224 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2225 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2226 }
e78566595089 initial import
mandel
parents:
diff changeset
2227 m_output << m_option.indent << varName << ".setVerticalHeaderItem("
e78566595089 initial import
mandel
parents:
diff changeset
2228 << i << ", " << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2229 }
e78566595089 initial import
mandel
parents:
diff changeset
2230 }
e78566595089 initial import
mandel
parents:
diff changeset
2231
e78566595089 initial import
mandel
parents:
diff changeset
2232 // items
e78566595089 initial import
mandel
parents:
diff changeset
2233 QString tempName = disableSorting(w, varName);
e78566595089 initial import
mandel
parents:
diff changeset
2234
e78566595089 initial import
mandel
parents:
diff changeset
2235 const QList<DomItem *> items = w->elementItem();
e78566595089 initial import
mandel
parents:
diff changeset
2236 for (int i = 0; i < items.size(); ++i) {
e78566595089 initial import
mandel
parents:
diff changeset
2237 const DomItem *item = items.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2238 if (item->hasAttributeRow() && item->hasAttributeColumn()) {
e78566595089 initial import
mandel
parents:
diff changeset
2239 const DomPropertyMap properties = propertyMap(item->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2240 const DomProperty *text = properties.value(QLatin1String("text"));
e78566595089 initial import
mandel
parents:
diff changeset
2241 const DomProperty *icon = properties.value(QLatin1String("icon"));
e78566595089 initial import
mandel
parents:
diff changeset
2242 if (text || icon) {
e78566595089 initial import
mandel
parents:
diff changeset
2243 const QString itemName = m_driver->unique(QLatin1String("__tableItem"));
e78566595089 initial import
mandel
parents:
diff changeset
2244 m_output << m_option.indent << "QTableWidgetItem *"
e78566595089 initial import
mandel
parents:
diff changeset
2245 << itemName << " = new QTableWidgetItem();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2246
e78566595089 initial import
mandel
parents:
diff changeset
2247 if (text && text->attributeName() == QLatin1String("text") && !toString(text->elementString()).isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2248 m_refreshOut << m_option.indent << varName << ".item(" << item->attributeRow()
e78566595089 initial import
mandel
parents:
diff changeset
2249 << ", " << item->attributeColumn() << ")->setText("
e78566595089 initial import
mandel
parents:
diff changeset
2250 << trCall(text->elementString()) << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2251
e78566595089 initial import
mandel
parents:
diff changeset
2252 if (icon && icon->attributeName() == QLatin1String("icon")) {
e78566595089 initial import
mandel
parents:
diff changeset
2253 const QString iconValue = iconCall(icon);
e78566595089 initial import
mandel
parents:
diff changeset
2254 m_output << m_option.indent << itemName << ".setIcon("
e78566595089 initial import
mandel
parents:
diff changeset
2255 << iconValue << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2256 }
e78566595089 initial import
mandel
parents:
diff changeset
2257
e78566595089 initial import
mandel
parents:
diff changeset
2258 m_output << m_option.indent << varName << ".setItem("
e78566595089 initial import
mandel
parents:
diff changeset
2259 << item->attributeRow() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2260 << item->attributeColumn() << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2261 << itemName << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2262 }
e78566595089 initial import
mandel
parents:
diff changeset
2263 }
e78566595089 initial import
mandel
parents:
diff changeset
2264 }
e78566595089 initial import
mandel
parents:
diff changeset
2265 enableSorting(w, varName, tempName);
e78566595089 initial import
mandel
parents:
diff changeset
2266 }
e78566595089 initial import
mandel
parents:
diff changeset
2267
e78566595089 initial import
mandel
parents:
diff changeset
2268 QString WriteInitialization::trCall(const QString &str, const QString &commentHint) const
e78566595089 initial import
mandel
parents:
diff changeset
2269 {
e78566595089 initial import
mandel
parents:
diff changeset
2270 if (str.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2271 return QLatin1String("QString()");
e78566595089 initial import
mandel
parents:
diff changeset
2272
e78566595089 initial import
mandel
parents:
diff changeset
2273 QString result;
e78566595089 initial import
mandel
parents:
diff changeset
2274 const QString comment = commentHint.isEmpty() ? QString(QLatin1Char('0')) : fixString(commentHint, m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
2275
e78566595089 initial import
mandel
parents:
diff changeset
2276 if (m_option.translateFunction.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2277 result = QLatin1String("qt.gui.QApplication.translate(\"");
e78566595089 initial import
mandel
parents:
diff changeset
2278 result += m_generatedClass;
e78566595089 initial import
mandel
parents:
diff changeset
2279 result += QLatin1Char('"');
e78566595089 initial import
mandel
parents:
diff changeset
2280 result += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
2281 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2282 result = m_option.translateFunction;
e78566595089 initial import
mandel
parents:
diff changeset
2283 result += QLatin1Char('(');
e78566595089 initial import
mandel
parents:
diff changeset
2284 }
e78566595089 initial import
mandel
parents:
diff changeset
2285
e78566595089 initial import
mandel
parents:
diff changeset
2286 result += fixString(str, m_option.indent);
e78566595089 initial import
mandel
parents:
diff changeset
2287 result += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
2288 result += comment;
e78566595089 initial import
mandel
parents:
diff changeset
2289
e78566595089 initial import
mandel
parents:
diff changeset
2290 if (m_option.translateFunction.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2291 result += QLatin1String(", ");
e78566595089 initial import
mandel
parents:
diff changeset
2292 result += QLatin1String("qt.gui.QApplication.UnicodeUTF8");
e78566595089 initial import
mandel
parents:
diff changeset
2293 }
e78566595089 initial import
mandel
parents:
diff changeset
2294
e78566595089 initial import
mandel
parents:
diff changeset
2295 result += QLatin1Char(')');
e78566595089 initial import
mandel
parents:
diff changeset
2296 return result;
e78566595089 initial import
mandel
parents:
diff changeset
2297 }
e78566595089 initial import
mandel
parents:
diff changeset
2298
e78566595089 initial import
mandel
parents:
diff changeset
2299 void WriteInitialization::initializeQ3SqlDataTable(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2300 {
e78566595089 initial import
mandel
parents:
diff changeset
2301 const DomPropertyMap properties = propertyMap(w->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2302
e78566595089 initial import
mandel
parents:
diff changeset
2303 const DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2304 if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
e78566595089 initial import
mandel
parents:
diff changeset
2305 return;
e78566595089 initial import
mandel
parents:
diff changeset
2306
e78566595089 initial import
mandel
parents:
diff changeset
2307 QString connection;
e78566595089 initial import
mandel
parents:
diff changeset
2308 QString table;
e78566595089 initial import
mandel
parents:
diff changeset
2309 QString field;
e78566595089 initial import
mandel
parents:
diff changeset
2310
e78566595089 initial import
mandel
parents:
diff changeset
2311 const DomProperty *db = properties.value(QLatin1String("database"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2312 if (db && db->elementStringList()) {
e78566595089 initial import
mandel
parents:
diff changeset
2313 const QStringList info = db->elementStringList()->elementString();
e78566595089 initial import
mandel
parents:
diff changeset
2314 connection = info.size() > 0 ? info.at(0) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2315 table = info.size() > 1 ? info.at(1) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2316 field = info.size() > 2 ? info.at(2) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2317 }
e78566595089 initial import
mandel
parents:
diff changeset
2318
e78566595089 initial import
mandel
parents:
diff changeset
2319 if (table.isEmpty() || connection.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2320 fprintf(stderr, "invalid database connection\n");
e78566595089 initial import
mandel
parents:
diff changeset
2321 return;
e78566595089 initial import
mandel
parents:
diff changeset
2322 }
e78566595089 initial import
mandel
parents:
diff changeset
2323
e78566595089 initial import
mandel
parents:
diff changeset
2324 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2325
e78566595089 initial import
mandel
parents:
diff changeset
2326 m_output << m_option.indent << "if (!" << varName << ".sqlCursor()) {\n";
e78566595089 initial import
mandel
parents:
diff changeset
2327
e78566595089 initial import
mandel
parents:
diff changeset
2328 m_output << m_option.indent << m_option.indent << varName << ".setSqlCursor(";
e78566595089 initial import
mandel
parents:
diff changeset
2329
e78566595089 initial import
mandel
parents:
diff changeset
2330 if (connection == QLatin1String("(default)")) {
e78566595089 initial import
mandel
parents:
diff changeset
2331 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2332 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2333 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << ", true, " << connection << "Connection" << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2334 }
e78566595089 initial import
mandel
parents:
diff changeset
2335 m_output << m_option.indent << m_option.indent << varName << ".refresh(qt.qt3support.Q3DataTable.RefreshAll);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2336 m_output << m_option.indent << "}\n";
e78566595089 initial import
mandel
parents:
diff changeset
2337 }
e78566595089 initial import
mandel
parents:
diff changeset
2338
e78566595089 initial import
mandel
parents:
diff changeset
2339 void WriteInitialization::initializeQ3SqlDataBrowser(DomWidget *w)
e78566595089 initial import
mandel
parents:
diff changeset
2340 {
e78566595089 initial import
mandel
parents:
diff changeset
2341 const DomPropertyMap properties = propertyMap(w->elementProperty());
e78566595089 initial import
mandel
parents:
diff changeset
2342
e78566595089 initial import
mandel
parents:
diff changeset
2343 const DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2344 if (frameworkCode && toBool(frameworkCode->elementBool()) == false)
e78566595089 initial import
mandel
parents:
diff changeset
2345 return;
e78566595089 initial import
mandel
parents:
diff changeset
2346
e78566595089 initial import
mandel
parents:
diff changeset
2347 QString connection;
e78566595089 initial import
mandel
parents:
diff changeset
2348 QString table;
e78566595089 initial import
mandel
parents:
diff changeset
2349 QString field;
e78566595089 initial import
mandel
parents:
diff changeset
2350
e78566595089 initial import
mandel
parents:
diff changeset
2351 const DomProperty *db = properties.value(QLatin1String("database"), 0);
e78566595089 initial import
mandel
parents:
diff changeset
2352 if (db && db->elementStringList()) {
e78566595089 initial import
mandel
parents:
diff changeset
2353 const QStringList info = db->elementStringList()->elementString();
e78566595089 initial import
mandel
parents:
diff changeset
2354 connection = info.size() > 0 ? info.at(0) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2355 table = info.size() > 1 ? info.at(1) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2356 field = info.size() > 2 ? info.at(2) : QString();
e78566595089 initial import
mandel
parents:
diff changeset
2357 }
e78566595089 initial import
mandel
parents:
diff changeset
2358
e78566595089 initial import
mandel
parents:
diff changeset
2359 if (table.isEmpty() || connection.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2360 fprintf(stderr, "invalid database connection\n");
e78566595089 initial import
mandel
parents:
diff changeset
2361 return;
e78566595089 initial import
mandel
parents:
diff changeset
2362 }
e78566595089 initial import
mandel
parents:
diff changeset
2363
e78566595089 initial import
mandel
parents:
diff changeset
2364 const QString varName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2365
e78566595089 initial import
mandel
parents:
diff changeset
2366 m_output << m_option.indent << "if (!" << varName << ".sqlCursor()) {\n";
e78566595089 initial import
mandel
parents:
diff changeset
2367
e78566595089 initial import
mandel
parents:
diff changeset
2368 m_output << m_option.indent << m_option.indent << varName << ".setSqlCursor(";
e78566595089 initial import
mandel
parents:
diff changeset
2369
e78566595089 initial import
mandel
parents:
diff changeset
2370 if (connection == QLatin1String("(default)")) {
e78566595089 initial import
mandel
parents:
diff changeset
2371 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << "), true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2372 } else {
e78566595089 initial import
mandel
parents:
diff changeset
2373 m_output << "new Q3SqlCursor(" << fixString(table, m_option.indent) << ", true, " << connection << "Connection" << "), false, true);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2374 }
e78566595089 initial import
mandel
parents:
diff changeset
2375 m_output << m_option.indent << m_option.indent << varName << ".refresh();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2376 m_output << m_option.indent << "}\n";
e78566595089 initial import
mandel
parents:
diff changeset
2377 }
e78566595089 initial import
mandel
parents:
diff changeset
2378
e78566595089 initial import
mandel
parents:
diff changeset
2379 void WriteInitialization::initializeMenu(DomWidget *w, const QString &/*parentWidget*/)
e78566595089 initial import
mandel
parents:
diff changeset
2380 {
e78566595089 initial import
mandel
parents:
diff changeset
2381 const QString menuName = m_driver->findOrInsertWidget(w);
e78566595089 initial import
mandel
parents:
diff changeset
2382 const QString menuAction = menuName + QLatin1String("Action");
e78566595089 initial import
mandel
parents:
diff changeset
2383
e78566595089 initial import
mandel
parents:
diff changeset
2384 const DomAction *action = m_driver->actionByName(menuAction);
e78566595089 initial import
mandel
parents:
diff changeset
2385 if (action && action->hasAttributeMenu()) {
e78566595089 initial import
mandel
parents:
diff changeset
2386 m_output << m_option.indent << menuAction << " = " << menuName << ".menuAction();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2387 }
e78566595089 initial import
mandel
parents:
diff changeset
2388 }
e78566595089 initial import
mandel
parents:
diff changeset
2389
e78566595089 initial import
mandel
parents:
diff changeset
2390 QString WriteInitialization::trCall(DomString *str) const
e78566595089 initial import
mandel
parents:
diff changeset
2391 {
e78566595089 initial import
mandel
parents:
diff changeset
2392 return trCall(toString(str), str->attributeComment());
e78566595089 initial import
mandel
parents:
diff changeset
2393 }
e78566595089 initial import
mandel
parents:
diff changeset
2394
e78566595089 initial import
mandel
parents:
diff changeset
2395 bool WriteInitialization::isValidObject(const QString &name) const
e78566595089 initial import
mandel
parents:
diff changeset
2396 {
e78566595089 initial import
mandel
parents:
diff changeset
2397 return m_registeredWidgets.contains(name)
e78566595089 initial import
mandel
parents:
diff changeset
2398 || m_registeredActions.contains(name);
e78566595089 initial import
mandel
parents:
diff changeset
2399 }
e78566595089 initial import
mandel
parents:
diff changeset
2400
e78566595089 initial import
mandel
parents:
diff changeset
2401 QString WriteInitialization::findDeclaration(const QString &name)
e78566595089 initial import
mandel
parents:
diff changeset
2402 {
e78566595089 initial import
mandel
parents:
diff changeset
2403 const QString normalized = Driver::normalizedName(name);
e78566595089 initial import
mandel
parents:
diff changeset
2404
e78566595089 initial import
mandel
parents:
diff changeset
2405 if (DomWidget *widget = m_driver->widgetByName(normalized))
e78566595089 initial import
mandel
parents:
diff changeset
2406 return m_driver->findOrInsertWidget(widget);
e78566595089 initial import
mandel
parents:
diff changeset
2407 else if (DomAction *action = m_driver->actionByName(normalized))
e78566595089 initial import
mandel
parents:
diff changeset
2408 return m_driver->findOrInsertAction(action);
e78566595089 initial import
mandel
parents:
diff changeset
2409
e78566595089 initial import
mandel
parents:
diff changeset
2410 return QString();
e78566595089 initial import
mandel
parents:
diff changeset
2411 }
e78566595089 initial import
mandel
parents:
diff changeset
2412
e78566595089 initial import
mandel
parents:
diff changeset
2413 void WriteInitialization::acceptConnection(DomConnection *connection)
e78566595089 initial import
mandel
parents:
diff changeset
2414 {
e78566595089 initial import
mandel
parents:
diff changeset
2415 const QString sender = findDeclaration(connection->elementSender());
e78566595089 initial import
mandel
parents:
diff changeset
2416 const QString receiver = findDeclaration(connection->elementReceiver());
e78566595089 initial import
mandel
parents:
diff changeset
2417
e78566595089 initial import
mandel
parents:
diff changeset
2418 if (sender.isEmpty() || receiver.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2419 return;
e78566595089 initial import
mandel
parents:
diff changeset
2420
e78566595089 initial import
mandel
parents:
diff changeset
2421 m_output << m_option.indent << "QObject.connect("
e78566595089 initial import
mandel
parents:
diff changeset
2422 << sender
e78566595089 initial import
mandel
parents:
diff changeset
2423 << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2424 << "SIGNAL(" << connection->elementSignal() << ')'
e78566595089 initial import
mandel
parents:
diff changeset
2425 << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2426 << receiver
e78566595089 initial import
mandel
parents:
diff changeset
2427 << ", "
e78566595089 initial import
mandel
parents:
diff changeset
2428 << "SLOT(" << connection->elementSlot() << ')'
e78566595089 initial import
mandel
parents:
diff changeset
2429 << ");\n";
e78566595089 initial import
mandel
parents:
diff changeset
2430 }
e78566595089 initial import
mandel
parents:
diff changeset
2431
e78566595089 initial import
mandel
parents:
diff changeset
2432 DomImage *WriteInitialization::findImage(const QString &name) const
e78566595089 initial import
mandel
parents:
diff changeset
2433 {
e78566595089 initial import
mandel
parents:
diff changeset
2434 return m_registeredImages.value(name);
e78566595089 initial import
mandel
parents:
diff changeset
2435 }
e78566595089 initial import
mandel
parents:
diff changeset
2436
e78566595089 initial import
mandel
parents:
diff changeset
2437 DomWidget *WriteInitialization::findWidget(const QString &widgetClass)
e78566595089 initial import
mandel
parents:
diff changeset
2438 {
e78566595089 initial import
mandel
parents:
diff changeset
2439 for (int i = m_widgetChain.count() - 1; i >= 0; --i) {
e78566595089 initial import
mandel
parents:
diff changeset
2440 DomWidget *widget = m_widgetChain.at(i);
e78566595089 initial import
mandel
parents:
diff changeset
2441
e78566595089 initial import
mandel
parents:
diff changeset
2442 if (widget && m_uic->customWidgetsInfo()->extends(widget->attributeClass(), widgetClass))
e78566595089 initial import
mandel
parents:
diff changeset
2443 return widget;
e78566595089 initial import
mandel
parents:
diff changeset
2444 }
e78566595089 initial import
mandel
parents:
diff changeset
2445
e78566595089 initial import
mandel
parents:
diff changeset
2446 return 0;
e78566595089 initial import
mandel
parents:
diff changeset
2447 }
e78566595089 initial import
mandel
parents:
diff changeset
2448
e78566595089 initial import
mandel
parents:
diff changeset
2449 void WriteInitialization::acceptImage(DomImage *image)
e78566595089 initial import
mandel
parents:
diff changeset
2450 {
e78566595089 initial import
mandel
parents:
diff changeset
2451 if (!image->hasAttributeName())
e78566595089 initial import
mandel
parents:
diff changeset
2452 return;
e78566595089 initial import
mandel
parents:
diff changeset
2453
e78566595089 initial import
mandel
parents:
diff changeset
2454 m_registeredImages.insert(image->attributeName(), image);
e78566595089 initial import
mandel
parents:
diff changeset
2455 }
e78566595089 initial import
mandel
parents:
diff changeset
2456
e78566595089 initial import
mandel
parents:
diff changeset
2457 void WriteInitialization::acceptWidgetScripts(const DomScripts &widgetScripts, DomWidget *node, const DomWidgets &childWidgets)
e78566595089 initial import
mandel
parents:
diff changeset
2458 {
e78566595089 initial import
mandel
parents:
diff changeset
2459 // Add the per-class custom scripts to the per-widget ones.
e78566595089 initial import
mandel
parents:
diff changeset
2460 DomScripts scripts(widgetScripts);
e78566595089 initial import
mandel
parents:
diff changeset
2461
e78566595089 initial import
mandel
parents:
diff changeset
2462 if (DomScript *customWidgetScript = m_uic->customWidgetsInfo()->customWidgetScript(node->attributeClass()))
e78566595089 initial import
mandel
parents:
diff changeset
2463 scripts.push_front(customWidgetScript);
e78566595089 initial import
mandel
parents:
diff changeset
2464
e78566595089 initial import
mandel
parents:
diff changeset
2465 if (scripts.empty())
e78566595089 initial import
mandel
parents:
diff changeset
2466 return;
e78566595089 initial import
mandel
parents:
diff changeset
2467
e78566595089 initial import
mandel
parents:
diff changeset
2468 // concatenate script snippets
e78566595089 initial import
mandel
parents:
diff changeset
2469 QString script;
e78566595089 initial import
mandel
parents:
diff changeset
2470 foreach (const DomScript *domScript, scripts) {
e78566595089 initial import
mandel
parents:
diff changeset
2471 const QString snippet = domScript->text();
e78566595089 initial import
mandel
parents:
diff changeset
2472 if (!snippet.isEmpty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2473 script += snippet.trimmed();
e78566595089 initial import
mandel
parents:
diff changeset
2474 script += QLatin1Char('\n');
e78566595089 initial import
mandel
parents:
diff changeset
2475 }
e78566595089 initial import
mandel
parents:
diff changeset
2476 }
e78566595089 initial import
mandel
parents:
diff changeset
2477 if (script.isEmpty())
e78566595089 initial import
mandel
parents:
diff changeset
2478 return;
e78566595089 initial import
mandel
parents:
diff changeset
2479
e78566595089 initial import
mandel
parents:
diff changeset
2480 // Build the list of children and insert call
e78566595089 initial import
mandel
parents:
diff changeset
2481 m_output << m_option.indent << "childWidgets.clear();\n";
e78566595089 initial import
mandel
parents:
diff changeset
2482 if (!childWidgets.empty()) {
e78566595089 initial import
mandel
parents:
diff changeset
2483 m_output << m_option.indent << "childWidgets";
e78566595089 initial import
mandel
parents:
diff changeset
2484 foreach (DomWidget *child, childWidgets) {
e78566595089 initial import
mandel
parents:
diff changeset
2485 m_output << " << " << m_driver->findOrInsertWidget(child);
e78566595089 initial import
mandel
parents:
diff changeset
2486 }
e78566595089 initial import
mandel
parents:
diff changeset
2487 m_output << ";\n";
e78566595089 initial import
mandel
parents:
diff changeset
2488 }
e78566595089 initial import
mandel
parents:
diff changeset
2489 m_output << m_option.indent << "scriptContext.run(qt.core.QString.fromUtf8("
e78566595089 initial import
mandel
parents:
diff changeset
2490 << fixString(script, m_option.indent) << "), "
e78566595089 initial import
mandel
parents:
diff changeset
2491 << m_driver->findOrInsertWidget(node) << ", childWidgets);\n";
e78566595089 initial import
mandel
parents:
diff changeset
2492 }
e78566595089 initial import
mandel
parents:
diff changeset
2493
e78566595089 initial import
mandel
parents:
diff changeset
2494 } // namespace D
e78566595089 initial import
mandel
parents:
diff changeset
2495
e78566595089 initial import
mandel
parents:
diff changeset
2496 QT_END_NAMESPACE