diff options
author | Jochen Becher <jochen_becher@gmx.de> | 2018-01-07 20:31:02 +0100 |
---|---|---|
committer | Jochen Becher <jochen_becher@gmx.de> | 2018-01-10 15:39:45 +0000 |
commit | 4d99f47974a5afaecffba354a58fe897ffb9f9c3 (patch) | |
tree | 370c333d92e362fad88f8688059a057ce391d969 /src/plugins/modeleditor/modelsmanager.cpp | |
parent | bcc550a4e25121c836ce5f6c83a80bcfa9973548 (diff) |
ModelEditor: Implement shared clipboard between all open model-editors
Change-Id: Id2eb6f78f8aa1a698a49d35db6cfceab14a38e0b
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Diffstat (limited to 'src/plugins/modeleditor/modelsmanager.cpp')
-rw-r--r-- | src/plugins/modeleditor/modelsmanager.cpp | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/plugins/modeleditor/modelsmanager.cpp b/src/plugins/modeleditor/modelsmanager.cpp index 89d691ddc6..683006817d 100644 --- a/src/plugins/modeleditor/modelsmanager.cpp +++ b/src/plugins/modeleditor/modelsmanager.cpp @@ -34,10 +34,14 @@ #include "pxnodecontroller.h" #include "qmt/config/configcontroller.h" +#include "qmt/diagram_controller/dcontainer.h" +#include "qmt/diagram_controller/dreferences.h" #include "qmt/diagram_scene/diagramscenemodel.h" #include "qmt/diagram_ui/diagramsmanager.h" #include "qmt/model/mdiagram.h" #include "qmt/model_controller/modelcontroller.h" +#include "qmt/model_controller/mcontainer.h" +#include "qmt/model_controller/mreferences.h" #include "qmt/project_controller/projectcontroller.h" #include "qmt/project/project.h" #include "qmt/stereotype/stereotypecontroller.h" @@ -91,6 +95,11 @@ public: ModelIndexer *modelIndexer = nullptr; QList<Core::IDocument *> documentsToBeClosed; + ExtDocumentController *modelClipboardDocumentController = nullptr; + qmt::MContainer modelClipboard; + ExtDocumentController *diagramClipboardDocumentController = nullptr; + qmt::DContainer diagramClipboard; + QAction *openDiagramContextMenuItem = nullptr; ProjectExplorer::Node *contextMenuOwnerNode = nullptr; }; @@ -142,6 +151,10 @@ ExtDocumentController *ModelsManager::createModel(ModelDocument *modelDocument) void ModelsManager::releaseModel(ExtDocumentController *documentController) { + if (documentController == d->modelClipboardDocumentController) + d->modelClipboardDocumentController = nullptr; + if (documentController == d->diagramClipboardDocumentController) + d->diagramClipboardDocumentController = nullptr; for (int i = 0; i < d->managedModels.size(); ++i) { ManagedModel *managedModel = &d->managedModels[i]; if (managedModel->m_documentController == documentController) { @@ -165,6 +178,55 @@ void ModelsManager::openDiagram(const qmt::Uid &modelUid, const qmt::Uid &diagra } } +bool ModelsManager::isModelClipboardEmpty() const +{ + return d->modelClipboard.isEmpty(); +} + +ExtDocumentController *ModelsManager::modelClipboardDocumentController() const +{ + return d->modelClipboardDocumentController; +} + +qmt::MReferences ModelsManager::modelClipboard() const +{ + qmt::MReferences clipboard; + clipboard.setElements(d->modelClipboard.elements()); + return clipboard; +} + +void ModelsManager::setModelClipboard(ExtDocumentController *documentController, const qmt::MContainer &container) +{ + d->modelClipboardDocumentController = documentController; + d->modelClipboard = container; + emit modelClipboardChanged(isModelClipboardEmpty()); +} + +bool ModelsManager::isDiagramClipboardEmpty() const +{ + return d->diagramClipboard.isEmpty(); +} + +ExtDocumentController *ModelsManager::diagramClipboardDocumentController() const +{ + return d->diagramClipboardDocumentController; +} + +qmt::DReferences ModelsManager::diagramClipboard() const +{ + qmt::DReferences clipboard; + clipboard.setElements(d->diagramClipboard.elements()); + return clipboard; +} + +void ModelsManager::setDiagramClipboard(ExtDocumentController *documentController, const qmt::DContainer &dcontainer, const qmt::MContainer &mcontainer) +{ + setModelClipboard(documentController, mcontainer); + d->diagramClipboardDocumentController = documentController; + d->diagramClipboard = dcontainer; + emit diagramClipboardChanged(isDiagramClipboardEmpty()); +} + void ModelsManager::onAboutToShowContextMenu(ProjectExplorer::Project *project, ProjectExplorer::Node *node) { |