📄 writeinitialization.cpp
字号:
if (p->kind() == DomProperty::IconSet) { type = QLatin1String("QIcon"); s = p->elementIconSet()->text(); } else { type = QLatin1String("QPixmap"); s = p->elementPixmap()->text(); } if (s.isEmpty()) return type + QLatin1String("()"); else if (findImage(s) != 0) return QLatin1String("icon(") + s + QLatin1String("_ID)"); QString pixFunc = uic->pixmapFunction(); if (pixFunc.isEmpty()) pixFunc = QLatin1String("QString::fromUtf8"); return type + QLatin1String("(") + pixFunc + QLatin1String("(") + fixString(s, option.indent) + QLatin1String(")") + QLatin1String(")");}void WriteInitialization::initializeComboBox(DomWidget *w){ QString varName = driver->findOrInsertWidget(w); QString className = w->attributeClass(); QList<DomItem*> items = w->elementItem(); if (items.isEmpty()) return; refreshOut << option.indent << varName << "->clear();\n"; for (int i=0; i<items.size(); ++i) { DomItem *item = items.at(i); QHash<QString, DomProperty*> properties = propertyMap(item->elementProperty()); DomProperty *text = properties.value(QLatin1String("text")); DomProperty *pixmap = properties.value(QLatin1String("icon")); if (!(text || pixmap)) continue; refreshOut << option.indent << varName << "->addItem("; if (pixmap != 0) { refreshOut << pixCall(pixmap); if (text) refreshOut << ", "; } refreshOut << trCall(text->elementString()) << ");\n"; }}void WriteInitialization::initializeListWidget(DomWidget *w){ QString varName = driver->findOrInsertWidget(w); QString className = w->attributeClass(); QList<DomItem*> items = w->elementItem(); if (items.isEmpty()) return; refreshOut << option.indent << varName << "->clear();\n"; // items for (int i=0; i<items.size(); ++i) { DomItem *item = items.at(i); QString itemName = driver->unique(QLatin1String("__item")); refreshOut << "\n"; refreshOut << option.indent << "QListWidgetItem *" << itemName << " = new QListWidgetItem(" << varName << ");\n"; QList<DomProperty*> properties = item->elementProperty(); for (int i=0; i<properties.size(); ++i) { DomProperty *p = properties.at(i); if (p->attributeName() == QLatin1String("text")) refreshOut << option.indent << itemName << "->setText(" << trCall(p->elementString()) << ");\n"; if (p->attributeName() == QLatin1String("icon")) refreshOut << option.indent << itemName << "->setIcon(" << pixCall(p) << ");\n"; } }}void WriteInitialization::initializeTreeWidget(DomWidget *w){ QString varName = driver->findOrInsertWidget(w); QString className = w->attributeClass(); // columns QList<DomColumn*> columns = w->elementColumn(); for (int i=0; i<columns.size(); ++i) { DomColumn *column = columns.at(i); QHash<QString, DomProperty*> properties = propertyMap(column->elementProperty()); DomProperty *text = properties.value(QLatin1String("text")); DomProperty *icon = properties.value(QLatin1String("icon")); QString txt = trCall(text->elementString()); refreshOut << option.indent << varName << "->headerItem()->setText(" << i << ", " << txt << ");\n"; if (icon != 0 && icon->elementIconSet()) { output << option.indent << varName << "->headerItem()->setIcon(" << i << ", " << pixCall(icon) << ");\n"; } } if (w->elementItem().size()) { refreshOut << option.indent << varName << "->clear();\n"; initializeTreeWidgetItems(className, varName, w->elementItem()); }}void WriteInitialization::initializeTableWidget(DomWidget *w){ QString varName = driver->findOrInsertWidget(w); QString className = w->attributeClass(); refreshOut << option.indent << varName << "->clear();\n"; // columns QList<DomColumn *> columns = w->elementColumn(); refreshOut << option.indent << varName << "->setColumnCount(" << columns.size() << ");\n"; for (int i = 0; i < columns.size(); ++i) { DomColumn *column = columns.at(i); QHash<QString, DomProperty*> properties = propertyMap(column->elementProperty()); DomProperty *text = properties.value(QLatin1String("text")); DomProperty *icon = properties.value(QLatin1String("icon")); if (text || icon) { QString itemName = driver->unique(QLatin1String("__colItem")); refreshOut << "\n"; refreshOut << option.indent << "QTableWidgetItem *" << itemName << " = new QTableWidgetItem();\n"; if (text && text->attributeName() == QLatin1String("text")) refreshOut << option.indent << itemName << "->setText(" << trCall(text->elementString()) << ");\n"; if (icon && icon->attributeName() == QLatin1String("icon")) refreshOut << option.indent << itemName << "->setIcon(" << pixCall(icon) << ");\n"; refreshOut << option.indent << varName << "->setHorizontalHeaderItem(" << i << ", " << itemName << ");\n"; } } // rows QList<DomRow *> rows = w->elementRow(); refreshOut << option.indent << varName << "->setRowCount(" << rows.size() << ");\n"; for (int i = 0; i < rows.size(); ++i) { DomRow *row = rows.at(i); QHash<QString, DomProperty*> properties = propertyMap(row->elementProperty()); DomProperty *text = properties.value(QLatin1String("text")); DomProperty *icon = properties.value(QLatin1String("icon")); if (text || icon) { QString itemName = driver->unique(QLatin1String("__rowItem")); refreshOut << "\n"; refreshOut << option.indent << "QTableWidgetItem *" << itemName << " = new QTableWidgetItem();\n"; if (text && text->attributeName() == QLatin1String("text")) refreshOut << option.indent << itemName << "->setText(" << trCall(text->elementString()) << ");\n"; if (icon && icon->attributeName() == QLatin1String("icon")) refreshOut << option.indent << itemName << "->setIcon(" << pixCall(icon) << ");\n"; refreshOut << option.indent << varName << "->setVerticalHeaderItem(" << i << ", " << itemName << ");\n"; } } // items QList<DomItem *> items = w->elementItem(); for (int i = 0; i < items.size(); ++i) { DomItem *item = items.at(i); if (item->hasAttributeRow() && item->hasAttributeColumn()) { QHash<QString, DomProperty*> properties = propertyMap(item->elementProperty()); DomProperty *text = properties.value(QLatin1String("text")); DomProperty *icon = properties.value(QLatin1String("icon")); if (text || icon) { QString itemName = driver->unique(QLatin1String("__item")); refreshOut << "\n"; refreshOut << option.indent << "QTableWidgetItem *" << itemName << " = new QTableWidgetItem();\n"; if (text && text->attributeName() == QLatin1String("text")) refreshOut << option.indent << itemName << "->setText(" << trCall(text->elementString()) << ");\n"; if (icon && icon->attributeName() == QLatin1String("icon")) refreshOut << option.indent << itemName << "->setIcon(" << pixCall(icon) << ");\n"; refreshOut << option.indent << varName << "->setItem(" << item->attributeRow() << ", " << item->attributeColumn() << ", " << itemName << ");\n"; } } }}QString WriteInitialization::trCall(const QString &str, const QString &commentHint) const{ QString result; QString comment = commentHint.isEmpty() ? QString::fromUtf8("0") : fixString(commentHint, option.indent); if (option.translateFunction.isEmpty()) { result = QLatin1String("QApplication::translate(\""); result += m_generatedClass; result += QLatin1String("\""); result += QLatin1String(", "); } else { result = option.translateFunction + QLatin1String("("); } result += fixString(str, option.indent); result += QLatin1String(", "); result += comment; if (option.translateFunction.isEmpty()) { result += QLatin1String(", "); result += QLatin1String("QApplication::UnicodeUTF8"); } result += QLatin1String(")"); return result;}void WriteInitialization::initializeQ3SqlDataTable(DomWidget *w){ QHash<QString, DomProperty*> properties = propertyMap(w->elementProperty()); DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0); if (frameworkCode && toBool(frameworkCode->elementBool()) == false) return; QString connection; QString table; QString field; DomProperty *db = properties.value(QLatin1String("database"), 0); if (db && db->elementStringList()) { QStringList info = db->elementStringList()->elementString(); connection = info.size() > 0 ? info.at(0) : QString(); table = info.size() > 1 ? info.at(1) : QString(); field = info.size() > 2 ? info.at(2) : QString(); } if (table.isEmpty() || connection.isEmpty()) { fprintf(stderr, "invalid database connection\n"); return; } QString varName = driver->findOrInsertWidget(w); output << option.indent << "if (!" << varName << "->sqlCursor()) {\n"; output << option.indent << option.indent << varName << "->setSqlCursor("; if (connection == QLatin1String("(default)")) { output << "new Q3SqlCursor(" << fixString(table, option.indent) << "), false, true);\n"; } else { output << "new Q3SqlCursor(" << fixString(table, option.indent) << ", true, " << connection << "Connection" << "), false, true);\n"; } output << option.indent << option.indent << varName << "->refresh(Q3DataTable::RefreshAll);\n"; output << option.indent << "}\n";}void WriteInitialization::initializeQ3SqlDataBrowser(DomWidget *w){ QHash<QString, DomProperty*> properties = propertyMap(w->elementProperty()); DomProperty *frameworkCode = properties.value(QLatin1String("frameworkCode"), 0); if (frameworkCode && toBool(frameworkCode->elementBool()) == false) return; QString connection; QString table; QString field; DomProperty *db = properties.value(QLatin1String("database"), 0); if (db && db->elementStringList()) { QStringList info = db->elementStringList()->elementString(); connection = info.size() > 0 ? info.at(0) : QString(); table = info.size() > 1 ? info.at(1) : QString(); field = info.size() > 2 ? info.at(2) : QString(); } if (table.isEmpty() || connection.isEmpty()) { fprintf(stderr, "invalid database connection\n"); return; } QString varName = driver->findOrInsertWidget(w); output << option.indent << "if (!" << varName << "->sqlCursor()) {\n"; output << option.indent << option.indent << varName << "->setSqlCursor("; if (connection == QLatin1String("(default)")) { output << "new Q3SqlCursor(" << fixString(table, option.indent) << "), true);\n"; } else { output << "new Q3SqlCursor(" << fixString(table, option.indent) << ", true, " << connection << "Connection" << "), false, true);\n"; } output << option.indent << option.indent << varName << "->refresh();\n"; output << option.indent << "}\n";}void WriteInitialization::initializeMenu(DomWidget *w, const QString &/*parentWidget*/){ QString menuName = driver->findOrInsertWidget(w); QString menuAction = menuName + QLatin1String("Action"); DomAction *action = driver->actionByName(menuAction); if (action && action->hasAttributeMenu()) { output << option.indent << menuAction << " = " << menuName << "->menuAction();\n"; }}QString WriteInitialization::trCall(DomString *str) const{ return trCall(toString(str), str->attributeComment());}bool WriteInitialization::isValidObject(const QString &name) const{ return m_registeredWidgets.contains(name) || m_registeredActions.contains(name);}QString WriteInitialization::findDeclaration(const QString &name){ QString normalized = Driver::normalizedName(name); if (DomWidget *widget = driver->widgetByName(normalized)) return driver->findOrInsertWidget(widget); else if (DomAction *action = driver->actionByName(normalized)) return driver->findOrInsertAction(action); return QString();}void WriteInitialization::acceptConnection(DomConnection *connection){ QString sender = findDeclaration(connection->elementSender()); QString receiver = findDeclaration(connection->elementReceiver()); if (sender.isEmpty() || receiver.isEmpty()) return; output << option.indent << "QObject::connect(" << sender << ", " << "SIGNAL(" << connection->elementSignal() << ")" << ", " << receiver << ", " << "SLOT(" << connection->elementSlot() << ")" << ");\n";}DomImage *WriteInitialization::findImage(const QString &name) const{ return m_registeredImages.value(name);}DomWidget *WriteInitialization::findWidget(const QString &widgetClass){ for (int i = m_widgetChain.count() - 1; i >= 0; --i) { DomWidget *widget = m_widgetChain.at(i); if (widget && uic->customWidgetsInfo()->extends(widget->attributeClass(), widgetClass)) return widget; } return 0;}void WriteInitialization::acceptImage(DomImage *image){ if (!image->hasAttributeName()) return; m_registeredImages.insert(image->attributeName(), image);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -