summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/uml/duse-mt/duse-mt.qrc1
-rw-r--r--examples/uml/duse-mt/mainwindow.cpp86
-rw-r--r--examples/uml/duse-mt/mainwindow.h2
-rw-r--r--examples/uml/duse-mt/qml/welcome-background.jpgbin78559 -> 0 bytes
-rw-r--r--examples/uml/duse-mt/qml/welcomeview.qml4
-rw-r--r--examples/uml/xmi-read/main.cpp7
-rw-r--r--examples/uml/xmi-write/main.cpp6
-rw-r--r--src/modeling/qxmireader.cpp3
-rw-r--r--src/modeling/qxmiwriter.cpp23
-rw-r--r--src/modeling/qxmiwriter.h4
-rw-r--r--src/modeling/qxmiwriter_p.h10
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
deleted file mode 100644
index c01beb4f..00000000
--- a/examples/uml/duse-mt/qml/welcome-background.jpg
+++ /dev/null
Binary files differ
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;