Browse Source

WIP: Put all MachineSettings stuff together

Lipu Fei 6 years ago
parent
commit
8242a3801c

+ 1 - 1
resources/qml/WelcomePages/MachineSettingsExtruderTab.qml

@@ -30,7 +30,7 @@ Item
     property var labelFont: UM.Theme.getFont("medium")
 
     property int columnWidth: (parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2
-    property int columnSpacing: 10
+    property int columnSpacing: 3
     property int propertyStoreIndex: 5  // definition_changes
 
     Item

+ 1 - 1
resources/qml/WelcomePages/MachineSettingsPrinterTab.qml

@@ -27,7 +27,7 @@ Item
     property var labelFont: UM.Theme.getFont("medium")
 
     property int columnWidth: (parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2
-    property int columnSpacing: 10
+    property int columnSpacing: 3
     property int propertyStoreIndex: 5  // definition_changes
 
     Item

+ 42 - 279
resources/qml/WelcomePages/TestContent.qml

@@ -3,11 +3,13 @@
 
 import QtQuick 2.10
 import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.3
 
 import UM 1.3 as UM
 import Cura 1.1 as Cura
 
 import "../MachineSettings"
+import "../Widgets"
 
 
 //
@@ -19,310 +21,71 @@ Item
     id: base
     UM.I18nCatalog { id: catalog; name: "cura" }
 
-    anchors.left: parent.left
-    anchors.right: parent.right
-    anchors.top: parent.top
+    anchors.fill: parent
+    anchors.margins: UM.Theme.getSize("default_margin").width
 
-    property int labelWidth: 130
-    property int controlWidth: UM.Theme.getSize("setting_control").width * 3 / 4
-    property var labelFont: UM.Theme.getFont("medium")
+    property var extrudersModel: Cura.ExtrudersModel {}
 
-    property int columnWidth: (parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2
-    property int columnSpacing: 10
-    property int propertyStoreIndex: 5  // definition_changes
-
-    Item
+    onVisibleChanged:
     {
-        id: upperBlock
-        anchors.top: parent.top
-        anchors.left: parent.left
-        anchors.right: parent.right
-        anchors.margins: UM.Theme.getSize("default_margin").width
-
-        height: childrenRect.height
-
-        // =======================================
-        // Left-side column for "Printer Settings"
-        // =======================================
-        Column
+        if (visible)
         {
-            anchors.top: parent.top
-            anchors.left: parent.left
-            width: base.columnWidth
-
-            spacing: base.columnSpacing
-
-            Label   // Title Label
-            {
-                text: catalog.i18nc("@title:label", "Printer Settings")
-                font: UM.Theme.getFont("medium_bold")
-                renderType: Text.NativeRendering
-            }
-
-            NumericTextFieldWithUnit  // "X (Width)"
-            {
-                id: machineXWidthField
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_width"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "X (Width)")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-                // TODO: add forceUpdateOnChangeFunction:
-            }
-
-            NumericTextFieldWithUnit  // "Y (Depth)"
-            {
-                id: machineYDepthField
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_depth"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Y (Depth)")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-                // TODO: add forceUpdateOnChangeFunction:
-            }
-
-            NumericTextFieldWithUnit  // "Z (Height)"
-            {
-                id: machineZHeightField
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_height"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Z (Height)")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-                // TODO: add forceUpdateOnChangeFunction:
-            }
+            tabBar.currentIndex = 0
+        }
+    }
 
-            ComboBoxWithOptions  // "Build plate shape"
-            {
-                id: buildPlateShapeComboBox
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_shape"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Build plate shape")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                // TODO: add forceUpdateOnChangeFunction:
-            }
+    Rectangle
+    {
+        anchors.fill: parent
+        border.color: tabBar.visible ? UM.Theme.getColor("lining") : "transparent"
+        border.width: UM.Theme.getSize("default_lining").width
+        radius: UM.Theme.getSize("default_radius").width
 
-            SimpleCheckBox  // "Origin at center"
-            {
-                id: originAtCenterCheckBox
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_center_is_zero"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Origin at center")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                // TODO: add forceUpdateOnChangeFunction:
-            }
+        UM.TabRow
+        {
+            id: tabBar
+            width: parent.width
 
-            SimpleCheckBox  // "Heated bed"
+            CuraTabButton
             {
-                id: heatedBedCheckBox
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_heated_bed"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Heated bed")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                // TODO: add forceUpdateOnChangeFunction:
+                text: catalog.i18nc("@title:tab", "Printer")
             }
 
-            ComboBoxWithOptions  // "G-code flavor"
+            Repeater
             {
-                id: gcodeFlavorComboBox
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_gcode_flavor"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "G-code flavor")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                // TODO: add forceUpdateOnChangeFunction:
-                // TODO: add afterOnActivate: manager.updateHasMaterialsMetadata
+                model: extrudersModel
+                delegate: CuraTabButton
+                {
+                    text: model.name
+                }
             }
         }
 
-        // =======================================
-        // Right-side column for "Printhead Settings"
-        // =======================================
-        Column
+        StackLayout
         {
-            anchors.top: parent.top
+            id: tabStack
+            anchors.top: tabBar.bottom
+            anchors.left: parent.left
             anchors.right: parent.right
-            width: base.columnWidth
-
-            spacing: base.columnSpacing
-
-            Label   // Title Label
-            {
-                text: catalog.i18nc("@title:label", "Printhead Settings")
-                font: UM.Theme.getFont("medium_bold")
-                renderType: Text.NativeRendering
-            }
-
-            PrintHeadMinMaxTextField  // "X min"
-            {
-                id: machineXMinField
-
-                settingStoreIndex: propertyStoreIndex
-
-                labelText: catalog.i18nc("@label", "X min")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-
-                axisName: "x"
-                axisMinOrMax: "min"
-
-                // TODO: add forceUpdateOnChangeFunction:
-            }
-
-            PrintHeadMinMaxTextField  // "Y min"
-            {
-                id: machineYMinField
-
-                settingStoreIndex: propertyStoreIndex
-
-                labelText: catalog.i18nc("@label", "Y min")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-
-                axisName: "y"
-                axisMinOrMax: "min"
-
-                // TODO: add forceUpdateOnChangeFunction:
-            }
-
-            PrintHeadMinMaxTextField  // "X max"
-            {
-                id: machineXMaxField
-
-                settingStoreIndex: propertyStoreIndex
-
-                labelText: catalog.i18nc("@label", "X max")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-
-                axisName: "x"
-                axisMinOrMax: "max"
-
-                // TODO: add forceUpdateOnChangeFunction:
-            }
-
-            PrintHeadMinMaxTextField  // "Y max"
-            {
-                id: machineYMaxField
-
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_head_with_fans_polygon"
-                settingStoreIndex: propertyStoreIndex
-
-                labelText: catalog.i18nc("@label", "Y max")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-
-                axisName: "y"
-                axisMinOrMax: "max"
+            anchors.bottom: parent.bottom
 
-                // TODO: add forceUpdateOnChangeFunction:
-            }
+            width: parent.width
+            currentIndex: tabBar.currentIndex
 
-            NumericTextFieldWithUnit  // "Gantry Height"
+            MachineSettingsPrinterTab
             {
-                id: machineGantryHeightField
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "gantry_height"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Gantry Height")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                unitText: catalog.i18nc("@label", "mm")
-                // TODO: add forceUpdateOnChangeFunction:
+                id: printerTab
             }
 
-            ComboBoxWithOptions  // "Number of Extruders"
+            Repeater
             {
-                id: numberOfExtrudersComboBox
-                containerStackId: Cura.MachineManager.activeMachineId
-                settingKey: "machine_extruder_count"
-                settingStoreIndex: propertyStoreIndex
-                labelText: catalog.i18nc("@label", "Number of Extruders")
-                labelFont: base.labelFont
-                labelWidth: base.labelWidth
-                controlWidth: base.controlWidth
-                // TODO: add forceUpdateOnChangeFunction:
-                // TODO: add afterOnActivate: manager.updateHasMaterialsMetadata
-
-                optionModel: ListModel
+                model: extrudersModel
+                delegate: MachineSettingsExtruderTab
                 {
-                    id: extruderCountModel
-                    Component.onCompleted:
-                    {
-                        extruderCountModel.clear()
-                        for (var i = 1; i <= Cura.MachineManager.activeMachine.maxExtruderCount; i++)
-                        {
-                            extruderCountModel.append({text: String(i), value: i})
-                        }
-                    }
+                    id: discoverTab
+                    extruderStackId: model.id
                 }
             }
         }
     }
-
-    Item  // Start and End G-code
-    {
-        id: lowerBlock
-        anchors.top: upperBlock.bottom
-        anchors.bottom: parent.bottom
-        anchors.left: parent.left
-        anchors.right: parent.right
-        anchors.margins: UM.Theme.getSize("default_margin").width
-
-        GcodeTextArea   // "Start G-code"
-        {
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.bottomMargin: UM.Theme.getSize("default_margin").height
-            anchors.left: parent.left
-            width: base.columnWidth - UM.Theme.getSize("default_margin").width
-
-            labelText: catalog.i18nc("@title:label", "Start G-code")
-            containerStackId: Cura.MachineManager.activeMachineId
-            settingKey: "machine_start_gcode"
-            settingStoreIndex: propertyStoreIndex
-        }
-
-        GcodeTextArea   // "End G-code"
-        {
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.bottomMargin: UM.Theme.getSize("default_margin").height
-            anchors.right: parent.right
-            width: base.columnWidth - UM.Theme.getSize("default_margin").width
-
-            labelText: catalog.i18nc("@title:label", "End G-code")
-            containerStackId: Cura.MachineManager.activeMachineId
-            settingKey: "machine_end_gcode"
-            settingStoreIndex: propertyStoreIndex
-        }
-    }
 }

+ 29 - 0
resources/qml/Widgets/CuraTabButton.qml

@@ -0,0 +1,29 @@
+// Copyright (c) 2019 Ultimaker B.V.
+// Cura is released under the terms of the LGPLv3 or higher.
+
+import QtQuick 2.10
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.3
+
+import UM 1.3 as UM
+import Cura 1.1 as Cura
+
+
+//
+// This is the default Cura Tab button which is a plaintext label.
+//
+UM.TabRowButton
+{
+    id: tabButton
+    text: model.name
+
+    contentItem: Label
+    {
+        anchors.centerIn: tabButton
+        horizontalAlignment: Text.AlignHCenter
+        verticalAlignment: Text.AlignVCenter
+        text: tabButton.text
+        font: tabButton.checked ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")
+        renderType: Text.NativeRendering
+    }
+}