diff options
Diffstat (limited to 'src/tools/uic/cpp/cppwriteinitialization.cpp')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 150 |
1 files changed, 37 insertions, 113 deletions
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index d208ec6718..ad9e040824 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -27,7 +27,6 @@ ****************************************************************************/ #include "cppwriteinitialization.h" -#include "cppwriteiconinitialization.h" #include "driver.h" #include "ui4.h" #include "utils.h" @@ -83,8 +82,8 @@ namespace { int w = 0; int h = 0; - if (properties.contains(QLatin1String("sizeHint"))) { - if (const DomSize *sizeHint = properties.value(QLatin1String("sizeHint"))->elementSize()) { + if (const DomProperty *sh = properties.value(QLatin1String("sizeHint"))) { + if (const DomSize *sizeHint = sh->elementSize()) { w = sizeHint->elementWidth(); h = sizeHint->elementHeight(); } @@ -92,17 +91,23 @@ namespace { output << w << ", " << h << ", "; // size type - QString sizeType = properties.contains(QLatin1String("sizeType")) ? - properties.value(QLatin1String("sizeType"))->elementEnum() : - QString::fromLatin1("Expanding"); + QString sizeType; + if (const DomProperty *st = properties.value(QLatin1String("sizeType"))) { + const QString value = st->elementEnum(); + if (value.startsWith(QLatin1String("QSizePolicy::"))) + sizeType = value; + else + sizeType = QLatin1String("QSizePolicy::") + value; + } else { + sizeType = QStringLiteral("QSizePolicy::Expanding"); + } - if (!sizeType.startsWith(QLatin1String("QSizePolicy::"))) - sizeType.prepend(QLatin1String("QSizePolicy::")); // orientation bool isVspacer = false; - if (properties.contains(QLatin1String("orientation"))) { - const QString orientation = properties.value(QLatin1String("orientation"))->elementEnum(); - if (orientation == QLatin1String("Qt::Vertical") || orientation == QLatin1String("Vertical")) isVspacer = true; + if (const DomProperty *o = properties.value(QLatin1String("orientation"))) { + const QString orientation = o->elementEnum(); + if (orientation == QLatin1String("Qt::Vertical") || orientation == QLatin1String("Vertical")) + isVspacer = true; } if (isVspacer) @@ -125,11 +130,6 @@ namespace { str << indent << varName << "->" << setter << '(' << v << ");\n"; } - void writeSetupUIScriptVariableDeclarations(const QString &indent, QTextStream &str) { - str << indent << "ScriptContext scriptContext;\n" - << indent << "QWidgetList childWidgets;\n"; - } - static inline bool iconHasStatePixmaps(const DomResourceIcon *i) { return i->hasElementNormalOff() || i->hasElementNormalOn() || i->hasElementDisabledOff() || i->hasElementDisabledOn() || @@ -396,10 +396,8 @@ void WriteInitialization::LayoutDefaultHandler::writeProperty(int p, const QStri int defaultStyleValue, bool suppressDefault, QTextStream &str) const { // User value - const DomPropertyMap::const_iterator mit = properties.constFind(propertyName); - const bool found = mit != properties.constEnd(); - if (found) { - const int value = mit.value()->elementNumber(); + if (const DomProperty *prop = properties.value(propertyName)) { + const int value = prop->elementNumber(); // Emulate the pre 4.3 behaviour: The value form default value was only used to determine // the default value, layout properties were always written const bool useLayoutFunctionPre43 = !suppressDefault && (m_state[p] == (HasDefaultFunction|HasDefaultValue)) && value == m_defaultValues[p]; @@ -461,7 +459,7 @@ static bool needsTranslation(const DomElement *element) } // --- WriteInitialization -WriteInitialization::WriteInitialization(Uic *uic, bool activateScripts) : +WriteInitialization::WriteInitialization(Uic *uic) : m_uic(uic), m_driver(uic->driver()), m_output(uic->output()), m_option(uic->option()), m_indent(m_option.indent + m_option.indent), @@ -472,14 +470,13 @@ WriteInitialization::WriteInitialization(Uic *uic, bool activateScripts) : m_delayedOut(&m_delayedInitialization, QIODevice::WriteOnly), m_refreshOut(&m_refreshInitialization, QIODevice::WriteOnly), m_actionOut(&m_delayedActionInitialization, QIODevice::WriteOnly), - m_activateScripts(activateScripts), m_layoutWidget(false), + m_layoutWidget(false), m_firstThemeIcon(true) { } void WriteInitialization::acceptUI(DomUI *node) { - m_registeredImages.clear(); m_actionGroupChain.push(0); m_widgetChain.push(0); m_layoutChain.push(0); @@ -490,9 +487,6 @@ void WriteInitialization::acceptUI(DomUI *node) if (node->elementCustomWidgets()) TreeWalker::acceptCustomWidgets(node->elementCustomWidgets()); - if (node->elementImages()) - TreeWalker::acceptImages(node->elementImages()); - if (m_option.generateImplemetation) m_output << "#include <" << m_driver->headerFileName() << ">\n\n"; @@ -512,9 +506,6 @@ void WriteInitialization::acceptUI(DomUI *node) m_output << m_option.indent << "void " << "setupUi(" << widgetClassName << " *" << varName << ")\n" << m_option.indent << "{\n"; - if (m_activateScripts) - writeSetupUIScriptVariableDeclarations(m_indent, m_output); - const QStringList connections = m_uic->databaseInfo()->connections(); for (int i=0; i<connections.size(); ++i) { QString connection = connections.at(i); @@ -591,15 +582,15 @@ void WriteInitialization::addWizardPage(const QString &pageVarName, const DomWid /* If the node has a (free-format) string "pageId" attribute (which could * an integer or an enumeration value), use setPage(), else addPage(). */ QString id; - const DomPropertyList attributes = page->elementAttribute(); + const auto &attributes = page->elementAttribute(); if (!attributes.empty()) { - const DomPropertyList::const_iterator acend = attributes.constEnd(); - for (DomPropertyList::const_iterator it = attributes.constBegin(); it != acend; ++it) - if ((*it)->attributeName() == QLatin1String("pageId")) { - if (const DomString *ds = (*it)->elementString()) + for (const DomProperty *p : attributes) { + if (p->attributeName() == QLatin1String("pageId")) { + if (const DomString *ds = p->elementString()) id = ds->text(); break; } + } } if (id.isEmpty()) { m_output << m_indent << parentWidget << "->addPage(" << pageVarName << ");\n"; @@ -884,7 +875,7 @@ void WriteInitialization::acceptLayout(DomLayout *node) const QString varName = m_driver->findOrInsertLayout(node); const DomPropertyMap properties = propertyMap(node->elementProperty()); - const bool oldLayoutProperties = properties.constFind(QLatin1String("margin")) != properties.constEnd(); + const bool oldLayoutProperties = properties.value(QLatin1String("margin")) != nullptr; bool isGroupBox = false; @@ -1149,9 +1140,7 @@ void WriteInitialization::writeProperties(const QString &varName, if (m_uic->customWidgetsInfo()->extends(className, QLatin1String("QAxWidget"))) { DomPropertyMap properties = propertyMap(lst); - if (properties.contains(QLatin1String("control"))) { - DomProperty *p = properties.value(QLatin1String("control")); - Q_ASSERT( p ); + if (DomProperty *p = properties.value(QLatin1String("control"))) { m_output << m_indent << varName << "->setControl(" << writeString(toString(p->elementString()), m_dindent) << ");\n"; } @@ -1708,7 +1697,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri return; // old format - const QList<DomColor*> colors = colorGroup->elementColor(); + const auto &colors = colorGroup->elementColor(); for (int i=0; i<colors.size(); ++i) { const DomColor *color = colors.at(i); @@ -1719,7 +1708,7 @@ void WriteInitialization::writeColorGroup(DomColorGroup *colorGroup, const QStri } // new format - const QList<DomColorRole *> colorRoles = colorGroup->elementColorRole(); + const auto &colorRoles = colorGroup->elementColorRole(); for (const DomColorRole *colorRole : colorRoles) { if (colorRole->hasAttributeRole()) { const QString brushName = writeBrushInitialization(colorRole->elementBrush()); @@ -1796,7 +1785,7 @@ void WriteInitialization::writeBrush(const DomBrush *brush, const QString &brush << gradient->attributeCoordinateMode() << ");\n"; } - const QList<DomGradientStop *> stops = gradient->elementGradientStop(); + const auto &stops = gradient->elementGradientStop(); for (const DomGradientStop *stop : stops) { const DomColor *color = stop->elementColor(); m_output << m_indent << gradientName << ".setColorAt(" @@ -1894,23 +1883,6 @@ QString WriteInitialization::pixCall(const QString &t, const QString &text) cons type += QLatin1String("()"); return type; } - if (const DomImage *image = findImage(text)) { - if (m_option.extractImages) { - const QString format = image->elementData()->attributeFormat(); - const QString extension = format.left(format.indexOf(QLatin1Char('.'))).toLower(); - return QLatin1String("QPixmap(QString::fromUtf8(\":/") - + m_generatedClass - + QLatin1String("/images/") - + text - + QLatin1Char('.') - + extension - + QLatin1String("\"))"); - } - return WriteIconInitialization::iconFromDataFunction() - + QLatin1Char('(') - + text - + QLatin1String("_ID)"); - } QString pixFunc = m_uic->pixmapFunction(); if (pixFunc.isEmpty()) @@ -1929,7 +1901,7 @@ void WriteInitialization::initializeComboBox(DomWidget *w) const QString varName = m_driver->findOrInsertWidget(w); const QString className = w->attributeClass(); - const QList<DomItem*> items = w->elementItem(); + const auto &items = w->elementItem(); if (items.isEmpty()) return; @@ -2120,7 +2092,7 @@ void WriteInitialization::initializeListWidget(DomWidget *w) const QString varName = m_driver->findOrInsertWidget(w); const QString className = w->attributeClass(); - const QList<DomItem*> items = w->elementItem(); + const auto &items = w->elementItem(); if (items.isEmpty()) return; @@ -2150,7 +2122,7 @@ void WriteInitialization::initializeTreeWidget(DomWidget *w) // columns Item item(QLatin1String("QTreeWidgetItem"), m_indent, m_output, m_refreshOut, m_driver); - const QList<DomColumn*> columns = w->elementColumn(); + const auto &columns = w->elementColumn(); for (int i = 0; i < columns.size(); ++i) { const DomColumn *column = columns.at(i); @@ -2193,7 +2165,7 @@ void WriteInitialization::initializeTreeWidget(DomWidget *w) conditions an item is needed needs to be done bottom-up, the whole process makes two passes, storing the intermediate result in a recursive StringInitializerListMap. */ -QList<WriteInitialization::Item *> WriteInitialization::initializeTreeWidgetItems(const QList<DomItem *> &domItems) +QList<WriteInitialization::Item *> WriteInitialization::initializeTreeWidgetItems(const QVector<DomItem *> &domItems) { // items QList<Item *> items; @@ -2237,7 +2209,7 @@ void WriteInitialization::initializeTableWidget(DomWidget *w) const QString varName = m_driver->findOrInsertWidget(w); // columns - const QList<DomColumn *> columns = w->elementColumn(); + const auto &columns = w->elementColumn(); if (columns.size() != 0) { m_output << m_indent << "if (" << varName << "->columnCount() < " << columns.size() << ")\n" @@ -2259,7 +2231,7 @@ void WriteInitialization::initializeTableWidget(DomWidget *w) } // rows - const QList<DomRow *> rows = w->elementRow(); + const auto &rows = w->elementRow(); if (rows.size() != 0) { m_output << m_indent << "if (" << varName << "->rowCount() < " << rows.size() << ")\n" @@ -2283,7 +2255,7 @@ void WriteInitialization::initializeTableWidget(DomWidget *w) // items QString tempName = disableSorting(w, varName); - const QList<DomItem *> items = w->elementItem(); + const auto &items = w->elementItem(); for (int i = 0; i < items.size(); ++i) { const DomItem *cell = items.at(i); @@ -2428,11 +2400,6 @@ void WriteInitialization::acceptConnection(DomConnection *connection) << ");\n"; } -DomImage *WriteInitialization::findImage(const QString &name) const -{ - return m_registeredImages.value(name); -} - DomWidget *WriteInitialization::findWidget(QLatin1String widgetClass) { for (int i = m_widgetChain.count() - 1; i >= 0; --i) { @@ -2445,49 +2412,6 @@ DomWidget *WriteInitialization::findWidget(QLatin1String widgetClass) return 0; } -void WriteInitialization::acceptImage(DomImage *image) -{ - if (!image->hasAttributeName()) - return; - - m_registeredImages.insert(image->attributeName(), image); -} - -void WriteInitialization::acceptWidgetScripts(const DomScripts &widgetScripts, DomWidget *node, const DomWidgets &childWidgets) -{ - // Add the per-class custom scripts to the per-widget ones. - DomScripts scripts(widgetScripts); - - if (DomScript *customWidgetScript = m_uic->customWidgetsInfo()->customWidgetScript(node->attributeClass())) - scripts.push_front(customWidgetScript); - - if (scripts.empty()) - return; - - // concatenate script snippets - QString script; - for (const DomScript *domScript : qAsConst(scripts)) { - const QString snippet = domScript->text(); - if (!snippet.isEmpty()) - script += QStringRef(&snippet).trimmed() + QLatin1Char('\n'); - } - if (script.isEmpty()) - return; - - // Build the list of children and insert call - m_output << m_indent << "childWidgets.clear();\n"; - if (!childWidgets.empty()) { - m_output << m_indent << "childWidgets"; - for (DomWidget *child : childWidgets) - m_output << " << " << m_driver->findOrInsertWidget(child); - m_output << ";\n"; - } - m_output << m_indent << "scriptContext.run(" - << writeString(script, m_dindent) << ", " - << m_driver->findOrInsertWidget(node) << ", childWidgets);\n"; -} - - static void generateMultiDirectiveBegin(QTextStream &outputStream, const QSet<QString> &directives) { if (directives.isEmpty()) |