From 573c1c1a5a491fb89e5071f5e682b0bada1fdb45 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Wed, 11 May 2016 15:35:41 +0200 Subject: [PATCH] Added MachineManagerModel to Cura CURA-1278 --- cura/CuraApplication.py | 6 +++++- cura/MachineManagerModel.py | 25 +++++++++++++++++++++++++ resources/qml/SidebarHeader.qml | 5 +++-- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 cura/MachineManagerModel.py diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 174621be03..9a0071a41f 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -36,10 +36,11 @@ from . import CuraActions from . import MultiMaterialDecorator from . import ZOffsetDecorator from . import CuraSplashScreen +from . import MachineManagerModel from PyQt5.QtCore import pyqtSlot, QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS from PyQt5.QtGui import QColor, QIcon -from PyQt5.QtQml import qmlRegisterUncreatableType +from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType import platform import sys @@ -201,6 +202,9 @@ class CuraApplication(QtApplication): self.setMainQml(Resources.getPath(self.ResourceTypes.QmlFiles, "Cura.qml")) self.initializeEngine() + qmlRegisterSingletonType(MachineManagerModel.MachineManagerModel, "Cura", 1, 0, "MachineManager", + MachineManagerModel.createMachineManagerModel) + if self._engine.rootObjects: self.closeSplash() diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py new file mode 100644 index 0000000000..3b89ae8048 --- /dev/null +++ b/cura/MachineManagerModel.py @@ -0,0 +1,25 @@ + +from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal +from UM.Application import Application +from UM.Signal import Signal, signalemitter + +class MachineManagerModel(QObject): + def __init__(self, parent = None): + super().__init__(parent) + Application.getInstance().globalContainerStackChanged.connect(self._onGlobalContainerChanged) + + globalContainerChanged = pyqtSignal() + + def _onGlobalContainerChanged(self): + self.globalContainerChanged.emit() + + @pyqtSlot(str) + def setActiveMachine(self, stack_id): + pass + + @pyqtProperty(str, notify = globalContainerChanged) + def activeMachineId(self): + return Application.getInstance().getGlobalContainerStack().getId() + +def createMachineManagerModel(engine, script_engine): + return MachineManagerModel() \ No newline at end of file diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 92be44bc51..b66aea084a 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -6,6 +6,7 @@ import QtQuick.Controls 1.1 import QtQuick.Controls.Styles 1.1 import UM 1.2 as UM +import Cura 1.0 as Cura Item { @@ -79,9 +80,9 @@ Item { text: model.name; checkable: true; - checked: model.active; + checked: Cura.MachineManager.activeMachineId == model.id exclusiveGroup: machineSelectionMenuGroup; - onTriggered: UM.MachineManager.setActiveMachineInstance(model.name); + onTriggered: Cura.MachineManager.setActiveMachine(model.id); } onObjectAdded: machineSelectionMenu.insertItem(index, object) onObjectRemoved: machineSelectionMenu.removeItem(object)