diff options
-rw-r--r-- | examples/uml/duse-mt/duse-mt.qrc | 1 | ||||
-rw-r--r-- | examples/uml/duse-mt/mainwindow.cpp | 86 | ||||
-rw-r--r-- | examples/uml/duse-mt/mainwindow.h | 2 | ||||
-rw-r--r-- | examples/uml/duse-mt/qml/welcome-background.jpg | bin | 78559 -> 0 bytes | |||
-rw-r--r-- | examples/uml/duse-mt/qml/welcomeview.qml | 4 | ||||
-rw-r--r-- | examples/uml/xmi-read/main.cpp | 7 | ||||
-rw-r--r-- | examples/uml/xmi-write/main.cpp | 6 | ||||
-rw-r--r-- | src/modeling/qxmireader.cpp | 3 | ||||
-rw-r--r-- | src/modeling/qxmiwriter.cpp | 23 | ||||
-rw-r--r-- | src/modeling/qxmiwriter.h | 4 | ||||
-rw-r--r-- | src/modeling/qxmiwriter_p.h | 10 |
11 files changed, 73 insertions, 73 deletions
diff --git a/examples/uml/duse-mt/duse-mt.qrc b/examples/uml/duse-mt/duse-mt.qrc index 160c4ca9..1455a739 100644 --- a/examples/uml/duse-mt/duse-mt.qrc +++ b/examples/uml/duse-mt/duse-mt.qrc @@ -21,7 +21,6 @@ <file>metamodels/UML.xmi</file> <file>metamodels/SADuSEProfile.xmi</file> <file>qml/welcomeview.qml</file> - <file>qml/welcome-background.jpg</file> <file>qml/designspaceview.qml</file> </qresource> </RCC> diff --git a/examples/uml/duse-mt/mainwindow.cpp b/examples/uml/duse-mt/mainwindow.cpp index d7a4942f..e466e59a 100644 --- a/examples/uml/duse-mt/mainwindow.cpp +++ b/examples/uml/duse-mt/mainwindow.cpp @@ -220,7 +220,7 @@ void MainWindow::on_actionFileNewModel_triggered() // } } -void MainWindow::saveXmi(QModelingElement *rootElement) +void MainWindow::saveXmi(QList<QModelingObject *> modelObjects) { QFile file(_currentFileName); if (!file.open(QFile::WriteOnly | QFile::Text)) { @@ -228,9 +228,9 @@ void MainWindow::saveXmi(QModelingElement *rootElement) return; } - QXmiWriter writer(rootElement->asQModelingObject()); + QXmiWriter writer; setCursor(Qt::WaitCursor); - if (!writer.writeFile(&file)) + if (!writer.writeFile(modelObjects, &file)) QMessageBox::critical(this, tr("Save As"), tr("Error when writing XMI file !")); else { statusBar()->showMessage("XMI file successfully saved !", 3000); @@ -406,7 +406,7 @@ void MainWindow::on_actionFileSaveAs_triggered() QString fileName = QFileDialog::getSaveFileName(this, tr("Save As"), QDir::currentPath(), "XMI files (*.xmi)"); if (!fileName.isEmpty()) { _currentFileName = fileName; - saveXmi(qModelingElement(_modelingObjectModel->modelingObjects().at(0))); + saveXmi(_modelingObjectModel->modelingObjects()); } } @@ -415,7 +415,7 @@ void MainWindow::on_actionFileSave_triggered() if (_currentFileName.isEmpty()) on_actionFileSaveAs_triggered(); else - saveXmi(qModelingElement(_modelingObjectModel->modelingObjects().at(0))); + saveXmi(_modelingObjectModel->modelingObjects()); } void MainWindow::on_actionHelpAboutPlugins_triggered() @@ -615,44 +615,44 @@ void MainWindow::designSpaceChanged() bool MainWindow::eventFilter(QObject *obj, QEvent *event) { -// if (event->type() == QEvent::KeyPress && obj == ui->txeJavaScript) { -// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); -// if (keyEvent->key() == 46) { -// QModelingObject *modelingObject = qwrappedobject_cast<QWrappedObject *>(dynamic_cast<QWrappedObject *>(_engine.evaluate(ui->txeJavaScript->toPlainText()).toQObject())); -// if (modelingObject) { -// const QMetaWrappedObject *metaWrappedObject = modelingObject->metaWrappedObject(); -// int propertyCount = metaWrappedObject->propertyCount(); -// QStringList propertyList; -// for (int i = 0; i < propertyCount; ++i) -// propertyList << metaWrappedObject->property(i).metaProperty.name(); -// _codeCompletionView->setModel(new QStringListModel(propertyList)); -// QFont font; -// QFontMetrics fm(font); -// _codeCompletionView->setGeometry(ui->txeJavaScript->cursorRect().x(), ui->txeJavaScript->cursorRect().y()+fm.height(), 200, 100); -// _codeCompletionView->show(); -// _codeCompletionView->setFocus(); -// } -// } -// return QObject::eventFilter(obj, event); -// } else if (event->type() == QEvent::KeyPress && obj == _codeCompletionView) { -// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); -// if (keyEvent->key() == 16777220 || keyEvent->key() == 32) { // spacebar or enter -// ui->txeJavaScript->insertPlainText(_codeCompletionView->model()->data(_codeCompletionView->selectionModel()->selectedIndexes().first()).toString()); -// _codeCompletionView->hide(); -// ui->txeJavaScript->setFocus(); -// return true; -// } -// else if (keyEvent->key() == 16777235 || keyEvent->key() == 16777237 || keyEvent->key() == 16777239 || keyEvent->key() == 16777238) { // uparrow and downarrow, pageup, pagedown -// return QObject::eventFilter(obj, event); -// } -// else { -// _codeCompletionView->hide(); -// ui->txeJavaScript->setFocus(); -// return true; -// } -// } -// // standard event processing -// return QObject::eventFilter(obj, event); + if (event->type() == QEvent::KeyPress && obj == ui->txeJavaScript) { + QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); + if (keyEvent->key() == 46) { + QModelingObject *modelingObject = dynamic_cast<QModelingObject *>(_engine.evaluate(ui->txeJavaScript->toPlainText()).toQObject()); + if (modelingObject) { + const QMetaObject *metaObject = modelingObject->metaObject(); + int propertyCount = metaObject->propertyCount(); + QStringList propertyList; + for (int i = 0; i < propertyCount; ++i) + propertyList << metaObject->property(i).name(); + _codeCompletionView->setModel(new QStringListModel(propertyList)); + QFont font; + QFontMetrics fm(font); + _codeCompletionView->setGeometry(ui->txeJavaScript->cursorRect().x(), ui->txeJavaScript->cursorRect().y()+fm.height(), 200, 100); + _codeCompletionView->show(); + _codeCompletionView->setFocus(); + } + } + return QObject::eventFilter(obj, event); + } else if (event->type() == QEvent::KeyPress && obj == _codeCompletionView) { + QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); + if (keyEvent->key() == 16777220 || keyEvent->key() == 32) { // spacebar or enter + ui->txeJavaScript->insertPlainText(_codeCompletionView->model()->data(_codeCompletionView->selectionModel()->selectedIndexes().first()).toString()); + _codeCompletionView->hide(); + ui->txeJavaScript->setFocus(); + return true; + } + else if (keyEvent->key() == 16777235 || keyEvent->key() == 16777237 || keyEvent->key() == 16777239 || keyEvent->key() == 16777238) { // uparrow and downarrow, pageup, pagedown + return QObject::eventFilter(obj, event); + } + else { + _codeCompletionView->hide(); + ui->txeJavaScript->setFocus(); + return true; + } + } + // standard event processing + return QObject::eventFilter(obj, event); } void MainWindow::loadPlugins() diff --git a/examples/uml/duse-mt/mainwindow.h b/examples/uml/duse-mt/mainwindow.h index b308a8a1..0eecc997 100644 --- a/examples/uml/duse-mt/mainwindow.h +++ b/examples/uml/duse-mt/mainwindow.h @@ -110,7 +110,7 @@ protected: private: void loadPlugins(); - void saveXmi(QModelingElement *rootElement); + void saveXmi(QList<QModelingObject *> modelObjects); QList<QModelingElement *> loadXmi(QString fileName = 0); void populateDesignSpaceView(QModelingElement *modelingObject); diff --git a/examples/uml/duse-mt/qml/welcome-background.jpg b/examples/uml/duse-mt/qml/welcome-background.jpg Binary files differdeleted file mode 100644 index c01beb4f..00000000 --- a/examples/uml/duse-mt/qml/welcome-background.jpg +++ /dev/null diff --git a/examples/uml/duse-mt/qml/welcomeview.qml b/examples/uml/duse-mt/qml/welcomeview.qml index b0d1dcee..40d56d91 100644 --- a/examples/uml/duse-mt/qml/welcomeview.qml +++ b/examples/uml/duse-mt/qml/welcomeview.qml @@ -40,9 +40,7 @@ ****************************************************************************/ import QtQuick 2.0 -Image { - fillMode: Image.Pad - source: "welcome-background.jpg" +Rectangle { Row { anchors { left: parent.left; right: parent.right; top: parent.top; margins: 20 } spacing: 10 diff --git a/examples/uml/xmi-read/main.cpp b/examples/uml/xmi-read/main.cpp index fe71a97d..c1a6dd3c 100644 --- a/examples/uml/xmi-read/main.cpp +++ b/examples/uml/xmi-read/main.cpp @@ -70,7 +70,10 @@ int main () qDebug() << "Cannot write file !"; return 1; } - QXmiWriter writer(rootElements.first()->asQModelingObject()); - writer.writeFile(&file2); + QXmiWriter writer; + QList<QModelingObject *> list; + foreach (QModelingElement *modelingElement, rootElements) + list << modelingElement->asQModelingObject(); + writer.writeFile(list, &file2); } diff --git a/examples/uml/xmi-write/main.cpp b/examples/uml/xmi-write/main.cpp index ee1194fa..d7630cd0 100644 --- a/examples/uml/xmi-write/main.cpp +++ b/examples/uml/xmi-write/main.cpp @@ -92,8 +92,10 @@ int main () return 1; } - QXmiWriter writer(model->asQModelingObject()); - if (writer.writeFile(&file)) + QXmiWriter writer; + QList<QModelingObject *> list; + list << model->asQModelingObject(); + if (writer.writeFile(list, &file)) qDebug() << "XMI file saved !"; else qDebug() << "Error when writing XMI file !"; diff --git a/src/modeling/qxmireader.cpp b/src/modeling/qxmireader.cpp index 188bfbf6..699124a9 100644 --- a/src/modeling/qxmireader.cpp +++ b/src/modeling/qxmireader.cpp @@ -227,8 +227,7 @@ QList<QModelingElement *> QXmiReader::readFile(QIODevice *device, QString import else if (metaProperty.isEnumType()) { QString enumName = attribute.value().toString(); enumName = enumName.left(1).toUpper() + enumName.mid(1); - QString propertyName = QString::fromLatin1(metaProperty.name()); - enumName.prepend(propertyName.left(1).toUpper() + propertyName.mid(1)); + enumName.prepend(QString::fromLatin1(metaProperty.typeName()).split(':').last()); if (!modelingObject->asQModelingObject()->setProperty(attribute.name().toString().toLatin1(), enumName)) d->errors << QStringLiteral("Error when setting property '%1' of object with id '%2'.").arg(attribute.name().toString()).arg(id); } diff --git a/src/modeling/qxmiwriter.cpp b/src/modeling/qxmiwriter.cpp index 655e465c..b6800700 100644 --- a/src/modeling/qxmiwriter.cpp +++ b/src/modeling/qxmiwriter.cpp @@ -54,8 +54,7 @@ QT_BEGIN_NAMESPACE -QXmiWriterPrivate::QXmiWriterPrivate(QModelingObject *modelingElement) - : modelingObject(modelingElement) +QXmiWriterPrivate::QXmiWriterPrivate() { writer.setAutoFormatting(true); writer.setAutoFormattingIndent(2); @@ -65,8 +64,8 @@ QXmiWriterPrivate::~QXmiWriterPrivate() { } -QXmiWriter::QXmiWriter(QModelingObject *modelingObject, QObject *parent) : - QObject(*new QXmiWriterPrivate(modelingObject), parent) +QXmiWriter::QXmiWriter(QObject *parent) : + QObject(*new QXmiWriterPrivate, parent) { loadPlugins(); } @@ -93,7 +92,7 @@ void QXmiWriter::loadPlugins() } } -bool QXmiWriter::writeFile(QIODevice *device) +bool QXmiWriter::writeFile(QList<QModelingObject *> modelingObjects, QIODevice *device) { Q_D(QXmiWriter); d->writer.setDevice(device); @@ -102,7 +101,7 @@ bool QXmiWriter::writeFile(QIODevice *device) d->writer.writeStartElement(QStringLiteral("xmi:XMI")); d->writer.writeNamespace(QStringLiteral("http://www.omg.org/spec/XMI/20110701"), QStringLiteral("xmi")); - QString metaModelClassName = QString::fromLatin1(d->modelingObject->metaObject()->className()); + QString metaModelClassName = QString::fromLatin1(modelingObjects.first()->metaObject()->className()); int pos = 2; while (metaModelClassName[pos] == metaModelClassName[pos].toLower()) pos++; QString metaModelImplementationNamespace = metaModelClassName.left(pos); @@ -121,9 +120,11 @@ bool QXmiWriter::writeFile(QIODevice *device) d->blacklistedOppositeEnds.clear(); d->visitedObjects.clear(); - populateIdMap(d->modelingObject); + foreach (QModelingObject *modelingObject, modelingObjects) + populateIdMap(modelingObject); d->visitedObjects.clear(); - writeObject(d->modelingObject); + foreach (QModelingObject *modelingObject, modelingObjects) + writeObject(modelingObject); d->writer.writeEndDocument(); return true; @@ -190,7 +191,7 @@ void QXmiWriter::writeObject(QModelingObject *modelingObject, QString elementNam d->visitedObjects.append(modelingObject); - d->writer.writeStartElement(elementName.isEmpty() ? QString::fromLatin1(d->modelingObject->metaObject()->className()).remove(d->metaModelPrefix).remove(QRegExp(QStringLiteral("Object$"))).prepend(QStringLiteral("%1:").arg(d->metaModelXmlNamespace)) + d->writer.writeStartElement(elementName.isEmpty() ? QString::fromLatin1(modelingObject->metaObject()->className()).remove(d->metaModelPrefix).remove(QRegExp(QStringLiteral("Object$"))).prepend(QStringLiteral("%1:").arg(d->metaModelXmlNamespace)) : elementName); if (!elementName.isEmpty()) @@ -218,8 +219,8 @@ void QXmiWriter::writeObject(QModelingObject *modelingObject, QString elementNam else if (metaProperty.isEnumType()) { if (!metaProperty.isResettable() || (metaProperty.isResettable() && modelingObject && modelingObject->isPropertyModified(metaProperty))) { QMetaEnum metaEnum = metaProperty.enumerator(); - if (!QString::fromLatin1(metaEnum.key(variant.toInt())).isEmpty()) - d->writer.writeAttribute(QString::fromLatin1(metaProperty.name()), QString::fromLatin1(metaEnum.key(variant.toInt())).toLower().remove(QString::fromLatin1(metaProperty.name()))); + if (variant.toInt() != 0 && !QString::fromLatin1(metaEnum.key(variant.toInt())).isEmpty()) + d->writer.writeAttribute(QString::fromLatin1(metaProperty.name()), QString::fromLatin1(metaEnum.key(variant.toInt())).remove(QString::fromLatin1(metaProperty.typeName()).split(':').last()).toLower()); } } } diff --git a/src/modeling/qxmiwriter.h b/src/modeling/qxmiwriter.h index d2649bca..53d4ea9c 100644 --- a/src/modeling/qxmiwriter.h +++ b/src/modeling/qxmiwriter.h @@ -64,10 +64,10 @@ class Q_MODELING_EXPORT QXmiWriter : public QObject Q_DECLARE_PRIVATE(QXmiWriter) public: - explicit QXmiWriter(QModelingObject *modelingObject, QObject *parent = 0); + explicit QXmiWriter(QObject *parent = 0); virtual ~QXmiWriter(); - bool writeFile(QIODevice *device); + bool writeFile(QList<QModelingObject *> modelingObjects, QIODevice *device); protected: void loadPlugins(); diff --git a/src/modeling/qxmiwriter_p.h b/src/modeling/qxmiwriter_p.h index 683446cc..41efdc9c 100644 --- a/src/modeling/qxmiwriter_p.h +++ b/src/modeling/qxmiwriter_p.h @@ -44,8 +44,6 @@ #include "qtmodelingglobal.h" #include "private/qobject_p.h" -#include <QtModeling/QModelingObject> - #include <QtCore/QStringList> #include <QtCore/QXmlStreamWriter> @@ -55,6 +53,7 @@ QT_BEGIN_NAMESPACE QT_MODULE(QtModeling) +class QModelingObject; class QMetaModelPlugin; class Q_MODELING_EXPORT QXmiWriterPrivate : public QObjectPrivate @@ -62,14 +61,13 @@ class Q_MODELING_EXPORT QXmiWriterPrivate : public QObjectPrivate Q_DECLARE_PUBLIC(QXmiWriter) public: - explicit QXmiWriterPrivate(QModelingObject *modelingObject); + explicit QXmiWriterPrivate(); virtual ~QXmiWriterPrivate(); - QModelingObject *modelingObject; QXmlStreamWriter writer; QHash< QString, QPair<QMetaModelPlugin *, QJsonObject> > metaModelPlugins; - QObjectList visitedObjects; - QHash<QObject *, QString> idMap; + QList<QModelingObject *> visitedObjects; + QHash<QModelingObject *, QString> idMap; QStringList idStack; QString metaModelPrefix; QString metaModelXmlNamespace; |