diff --git a/cura/MachineManagerModel.py b/cura/MachineManagerModel.py index c5f2fc3fa6..ec346710af 100644 --- a/cura/MachineManagerModel.py +++ b/cura/MachineManagerModel.py @@ -27,6 +27,11 @@ class MachineManagerModel(QObject): def activeMachineId(self): return Application.getInstance().getGlobalContainerStack().getId() + @pyqtSlot(str, str) + def renameMachine(self, machine_id, new_name): + containers = ContainerRegistry.getInstance().findContainerStacks(id = machine_id) + if containers: + containers[0].setName(new_name) def createMachineManagerModel(engine, script_engine): diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index 134d06c9d7..4314dc21e6 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -542,6 +542,8 @@ UM.MainWindow //: View preferences page title insertPage(1, catalog.i18nc("@title:tab","View"), Qt.resolvedUrl("ViewPage.qml")); + insertPage(2, catalog.i18nc("@title:tab", "Printers"), Qt.resolvedUrl("MachinesPage.qml")); + //Force refresh setPage(0); } diff --git a/resources/qml/MachinesPage.qml b/resources/qml/MachinesPage.qml new file mode 100644 index 0000000000..58a0878019 --- /dev/null +++ b/resources/qml/MachinesPage.qml @@ -0,0 +1,68 @@ +// Copyright (c) 2016 Ultimaker B.V. +// Uranium is released under the terms of the AGPLv3 or higher. + +import QtQuick 2.1 +import QtQuick.Controls 1.1 + +import UM 1.2 as UM +import Cura 1.0 as Cura + +UM.ManagementPage +{ + id: base; + + title: catalog.i18nc("@title:tab", "Printers"); + property int numInstances: model.rowCount(); + model: UM.ContainerStacksModel + { + filter: {"type": "machine"} + onDataChanged: numInstances = model.rowCount() + } + + onAddObject: model.requestAddMachine(); + onRemoveObject: confirmDialog.open(); + onRenameObject: renameDialog.open(); + + removeEnabled: numInstances > 1 + renameEnabled: numInstances > 0 + + Flow + { + anchors.fill: parent; + spacing: UM.Theme.getSize("default_margin").height; + + Label + { + text: base.currentItem && base.currentItem.name ? base.currentItem.name : "" + font: UM.Theme.getFont("large") + width: parent.width + elide: Text.ElideRight + } + + Label { text: catalog.i18nc("@label", "Type"); width: parent.width * 0.2; } + Label { text: base.currentItem && base.currentItem.typeName ? base.currentItem.typeName : ""; width: parent.width * 0.7; } + + UM.I18nCatalog { id: catalog; name: "uranium"; } + + UM.ConfirmRemoveDialog + { + id: confirmDialog; + object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; + onYes: base.model.removeMachineInstance(base.currentItem.name); + } + + UM.RenameDialog + { + id: renameDialog; + object: base.currentItem && base.currentItem.name ? base.currentItem.name : ""; + onAccepted: + { + Cura.MachineManager.renameMachine(base.currentItem.id, newName.trim()); + //Reselect current item to update details panel + var index = objectList.currentIndex + objectList.currentIndex = -1 + objectList.currentIndex = index + } + } + } +}