diff --git a/AddMachineWizard.qml b/AddMachineWizard.qml new file mode 100644 index 0000000000..fc8dd4d4be --- /dev/null +++ b/AddMachineWizard.qml @@ -0,0 +1,73 @@ +import QtQuick 2.2 +import QtQuick.Controls 1.1 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.1 + +import UM 1.0 as UM + +Window { + id: base + + width: 640 + height: 480 + + //: Add Printer dialog title + title: qsTr("Add Printer"); + + Rectangle { + anchors.fill: parent; + color: palette.window; + + ColumnLayout { + anchors.fill: parent; + anchors.margins: UM.Theme.defaultMargin; + + Label { + text: qsTr("Please select the type of printer:"); + } + + ScrollView { + Layout.fillWidth: true; + + ListView { + id: machineList; + model: UM.Models.availableMachinesModel + delegate: RadioButton { exclusiveGroup: printerGroup; text: model.name; onClicked: ListView.view.currentIndex = index; } + } + } + + Label { + text: qsTr("Printer Name:"); + } + + TextField { id: machineName; Layout.fillWidth: true; text: machineList.model.getItem(machineList.currentIndex).name } + + Item { Layout.fillWidth: true; Layout.fillHeight: true; } + + ExclusiveGroup { id: printerGroup; } + + RowLayout { + Layout.fillWidth: true + + Item { Layout.fillWidth: true; } + + Button { + text: qsTr("Next"); + onClicked: { + if(machineList.currentIndex != -1) { + UM.Models.availableMachinesModel.createMachine(machineList.currentIndex, machineName.text) + base.visible = false + } + } + } + + Button { + text: qsTr("Cancel"); + onClicked: base.visible = false; + } + } + } + } + + SystemPalette { id: palette; colorGroup: SystemPalette.Active } +} diff --git a/Printer.qml b/Printer.qml index 9136e8bc5f..d82e06226f 100644 --- a/Printer.qml +++ b/Printer.qml @@ -213,6 +213,8 @@ UM.MainWindow { deleteSelection.onTriggered: UM.Controller.removeSelection(); + addMachine.onTriggered: addMachine.visible = true; + preferences.onTriggered: preferences.visible = true; settings.onTriggered: preferences.visible = true; } @@ -256,4 +258,13 @@ UM.MainWindow { Printer.saveGCode(fileUrl); } } + + AddMachineWizard { + id: addMachine; + } + + Connections { + target: Printer + onRequestAddPrinter: addMachine.visible = true; + } } diff --git a/PrinterApplication.py b/PrinterApplication.py index 382bc7d0f6..63a9617b57 100644 --- a/PrinterApplication.py +++ b/PrinterApplication.py @@ -12,7 +12,7 @@ from UM.Scene.Selection import Selection from PlatformPhysics import PlatformPhysics from BuildVolume import BuildVolume -from PyQt5.QtCore import pyqtSlot, QUrl, Qt +from PyQt5.QtCore import pyqtSlot, QUrl, Qt, pyqtSignal from PyQt5.QtGui import QColor import os.path @@ -66,13 +66,17 @@ class PrinterApplication(QtApplication): controller.getScene().setActiveCamera('3d') - self.setActiveMachine(self.getMachines()[0]) - self.showSplashMessage('Loading interface...') self.setMainQml(os.path.dirname(__file__) + "/Printer.qml") self.initializeEngine() - + + #TODO: Add support for active machine preference + if self.getMachines(): + self.setActiveMachine(self.getMachines()[0]) + else: + self.requestAddPrinter.emit() + if self._engine.rootObjects: self.closeSplash() self.exec_() @@ -102,6 +106,8 @@ class PrinterApplication(QtApplication): with open(file.toLocalFile(), 'w') as f: f.write(gcode) + requestAddPrinter = pyqtSignal() + def _onActiveMachineChanged(self): machine = self.getActiveMachine() if machine: