ModelEditor: Remove diagram's specific document and editor

Only one document is created per .qmodel file and only one editor is
opened (splitting is not yet supported). The editor shows one diagram,
another diagram can be shown from the model tree.

Change-Id: Icd8211c14cb09203c52769a8ea1c90edb741ae51
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
This commit is contained in:
Jochen Becher
2015-09-21 12:11:02 +02:00
parent 1c7fb225db
commit 64760f0a8d
36 changed files with 1145 additions and 2290 deletions

View File

@@ -52,7 +52,6 @@ namespace Internal {
class ModelDocument::ModelDocumentPrivate {
public:
ExtDocumentController *documentController = 0;
qmt::Uid diagramUid;
};
ModelDocument::ModelDocument(QObject *parent)
@@ -66,7 +65,7 @@ ModelDocument::ModelDocument(QObject *parent)
ModelDocument::~ModelDocument()
{
if (d->documentController)
ModelEditorPlugin::modelsManager()->release(d->documentController, this);
ModelEditorPlugin::modelsManager()->releaseModel(d->documentController);
delete d;
}
@@ -103,7 +102,6 @@ bool ModelDocument::save(QString *errorString, const QString &name, bool autoSav
emit changed();
}
onDiagramRenamed();
return true;
}
@@ -145,48 +143,22 @@ ExtDocumentController *ModelDocument::documentController() const
return d->documentController;
}
qmt::Uid ModelDocument::diagramUid() const
{
return d->diagramUid;
}
bool ModelDocument::load(QString *errorString, const QString &fileName)
{
d->documentController = ModelEditorPlugin::modelsManager()->findModelByFileName(fileName, this);
if (d->documentController) {
connect(d->documentController, &qmt::DocumentController::changed,
this, &IDocument::changed);
setFilePath(Utils::FileName::fromString(d->documentController->getProjectController()->getProject()->getFileName()));
} else {
d->documentController = ModelEditorPlugin::modelsManager()->createModel(this);
connect(d->documentController, &qmt::DocumentController::changed,
this, &IDocument::changed);
d->documentController = ModelEditorPlugin::modelsManager()->createModel(this);
connect(d->documentController, &qmt::DocumentController::changed, this, &IDocument::changed);
try {
d->documentController->loadProject(fileName);
setFilePath(Utils::FileName::fromString(d->documentController->getProjectController()->getProject()->getFileName()));
} catch (const qmt::Exception &ex) {
*errorString = ex.getErrorMsg();
return false;
}
try {
d->documentController->loadProject(fileName);
setFilePath(Utils::FileName::fromString(d->documentController->getProjectController()->getProject()->getFileName()));
} catch (const qmt::Exception &ex) {
*errorString = ex.getErrorMsg();
return false;
}
qmt::MDiagram *rootDiagram = d->documentController->findOrCreateRootDiagram();
d->diagramUid = rootDiagram->getUid();
onDiagramRenamed();
emit contentSet();
return true;
}
void ModelDocument::onDiagramRenamed()
{
qmt::MDiagram *diagram = d->documentController->getModelController()->findObject<qmt::MDiagram>(d->diagramUid);
if (diagram)
setPreferredDisplayName(tr("%1 [%2]").arg(diagram->getName()).arg(filePath().fileName()));
else
setPreferredDisplayName(QString());
}
} // namespace Internal
} // namespace ModelEditor