From bb1fa3ae04a5695c55123164d5e9bc67e19f4632 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 26 Jan 2017 17:29:39 +0100 Subject: [PATCH 01/22] Started changing layout of layer view. CURA-3321 --- plugins/LayerView/LayerView.qml | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 92948a7ec6..6dc74a3c3b 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -146,13 +146,14 @@ Item } Rectangle { - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - anchors.top: slider_background.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - //anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("slider_layerview_background").width * 3 - height: slider.height + UM.Theme.getSize("default_margin").height * 2 + anchors.left: parent.right + //anchors.verticalCenter: parent.verticalCenter + //anchors.top: toolbar.top + anchors.bottom: slider_background.top + //anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.leftMargin: UM.Theme.getSize("default_margin").width + width: UM.Theme.getSize("slider_layerview_background").width * 4 + height: slider.height + UM.Theme.getSize("default_margin").height * 10 color: UM.Theme.getColor("tool_panel_background"); border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") @@ -173,8 +174,10 @@ Item ComboBox { id: layer_type_combobox - anchors.top: slider_background.bottom + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width model: layerViewTypes visible: !UM.LayerView.compatibilityMode onActivated: { From b1d95f3464ab5511deb7ff484cb35bcd01bd93f1 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 30 Jan 2017 11:24:51 +0100 Subject: [PATCH 02/22] Layout Layer View menu, removed item, changed size. CURA-3321 --- plugins/LayerView/LayerView.py | 2 +- plugins/LayerView/LayerView.qml | 76 ++++++++++++++++++++++++++------ resources/themes/cura/theme.json | 3 ++ 3 files changed, 66 insertions(+), 15 deletions(-) diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 15a79c4412..54854c7618 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -60,7 +60,7 @@ class LayerView(View): self._controller.getScene().getRoot().childrenChanged.connect(self._onSceneChanged) self._layer_view_type = 0 # 0 is material color, 1 is color by linetype, 2 is speed - self._only_color_active_extruder = True + self._only_color_active_extruder = False self._extruder_opacity = [1.0, 1.0, 1.0, 1.0] self._show_travel_moves = 0 self._show_support = 1 diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 6dc74a3c3b..90e2528c87 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -148,16 +148,26 @@ Item Rectangle { anchors.left: parent.right //anchors.verticalCenter: parent.verticalCenter - //anchors.top: toolbar.top + //anchors.top: sidebar.top anchors.bottom: slider_background.top //anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.leftMargin: UM.Theme.getSize("default_margin").width - width: UM.Theme.getSize("slider_layerview_background").width * 4 - height: slider.height + UM.Theme.getSize("default_margin").height * 10 + width: UM.Theme.getSize("layerview_menu_size").width + height: UM.Theme.getSize("layerview_menu_size").height color: UM.Theme.getColor("tool_panel_background"); border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + Label + { + id: layerViewTypesLabel + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label","Color scheme") + } + ListModel { id: layerViewTypes @@ -173,12 +183,57 @@ Item ComboBox { - id: layer_type_combobox - anchors.top: parent.top + id: layerTypeCombobox + anchors.top: layerViewTypesLabel.bottom + anchors.topMargin: UM.Theme.getSize("margin_small").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + model: layerViewTypes + visible: !UM.LayerView.compatibilityMode + onActivated: { + UM.LayerView.setLayerViewType(layerViewTypes.get(index).type_id); + } + } + + Label + { + id: layerRangeTypeLabel + anchors.top: layerTypeCombobox.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - model: layerViewTypes + text: catalog.i18nc("@label","Layer range") + } + + ListModel + { + id: layerRangeTypes + ListElement { + text: "All layers" + range_type_id: 0 + } + ListElement { + text: "Layer range" + range_type_id: 1 + } + ListElement { + text: "Single layer" + range_type_id: 2 + } + } + + ComboBox + { + id: layerRangeTypeCombobox + anchors.top: layerRangeTypeLabel.bottom + anchors.topMargin: UM.Theme.getSize("margin_small").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + model: layerRangeTypes visible: !UM.LayerView.compatibilityMode onActivated: { UM.LayerView.setLayerViewType(layerViewTypes.get(index).type_id); @@ -195,7 +250,7 @@ Item ColumnLayout { id: view_settings - anchors.top: layer_type_combobox.bottom + anchors.top: layerRangeTypeCombobox.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height x: UM.Theme.getSize("default_margin").width @@ -249,13 +304,6 @@ Item } text: "Show infill" } - CheckBox { - checked: true - onClicked: { - UM.LayerView.setOnlyColorActiveExtruder(checked); - } - text: "Only color active extruder" - } } } } diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 31caeeabd4..9349d8858f 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -239,6 +239,7 @@ "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], "logo": [9.5, 2.0], + "margin_small": [0.5, 0.5], "sidebar": [35.0, 10.0], "sidebar_header": [0.0, 4.0], @@ -287,6 +288,8 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [3.0, 3.0], + "layerview_menu_size": [16.0, 25.0], + "checkbox": [2.0, 2.0], "tooltip": [20.0, 10.0], From 61e0cd4ff5abbd25aa27a4f18221061ce3ad720d Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 20 Feb 2017 11:09:34 +0100 Subject: [PATCH 03/22] Move legacy options to layerview options --- plugins/LayerView/LayerView.qml | 20 ++++++++++++ resources/qml/Preferences/GeneralPage.qml | 40 ----------------------- 2 files changed, 20 insertions(+), 40 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 66fd6d3f7b..e2581a568c 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -223,6 +223,8 @@ Item view_settings.show_adhesion = UM.Preferences.getValue("layerview/show_adhesion"); view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); + view_settings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers"); + view_settings.top_layer_count = UM.Preferences.getValue("view/top_layer_count"); } } @@ -238,6 +240,8 @@ Item property bool show_adhesion: UM.Preferences.getValue("layerview/show_adhesion") property bool show_skin: UM.Preferences.getValue("layerview/show_skin") property bool show_infill: UM.Preferences.getValue("layerview/show_infill") + property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") + property int top_layer_count: UM.Preferences.getValue("view/only_show_top_layers") anchors.top: UM.LayerView.compatibilityMode ? compatibilityModeLabel.bottom : layerTypeCombobox.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height @@ -315,6 +319,22 @@ Item } text: catalog.i18nc("@label", "Show Infill") } + CheckBox { + checked: view_settings.only_show_top_layers + onClicked: { + UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); + } + text: catalog.i18nc("@label", "Only Show Top Layers") + visible: UM.LayerView.compatibilityMode + } + CheckBox { + checked: view_settings.top_layer_count == 5 + onClicked: { + UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); + } + text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") + visible: UM.LayerView.compatibilityMode + } } } } diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 94b589a636..fc178ec19e 100644 --- a/resources/qml/Preferences/GeneralPage.qml +++ b/resources/qml/Preferences/GeneralPage.qml @@ -45,8 +45,6 @@ UM.PreferencesPage showOverhangCheckbox.checked = boolCheck(UM.Preferences.getValue("view/show_overhang")) UM.Preferences.resetPreference("view/center_on_select"); centerOnSelectCheckbox.checked = boolCheck(UM.Preferences.getValue("view/center_on_select")) - UM.Preferences.resetPreference("view/top_layer_count"); - topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count")) if (plugins.find("id", "SliceInfoPlugin") > -1) { UM.Preferences.resetPreference("info/send_slice_info") @@ -232,44 +230,6 @@ UM.PreferencesPage } } - UM.TooltipArea { - width: childrenRect.width; - height: childrenRect.height; - text: catalog.i18nc("@info:tooltip","Display 5 top layers in layer view or only the top-most layer. Rendering 5 layers takes longer, but may show more information.") - - CheckBox - { - id: topLayerCountCheckbox - text: catalog.i18nc("@action:button","Display five top layers in layer view compatibility mode"); - checked: UM.Preferences.getValue("view/top_layer_count") == 5 - onClicked: - { - if(UM.Preferences.getValue("view/top_layer_count") == 5) - { - UM.Preferences.setValue("view/top_layer_count", 1) - } - else - { - UM.Preferences.setValue("view/top_layer_count", 5) - } - } - } - } - - UM.TooltipArea { - width: childrenRect.width - height: childrenRect.height - text: catalog.i18nc("@info:tooltip", "Should only the top layers be displayed in layerview?") - - CheckBox - { - id: topLayersOnlyCheckbox - text: catalog.i18nc("@option:check", "Only display top layer(s) in layer view compatibility mode") - checked: boolCheck(UM.Preferences.getValue("view/only_show_top_layers")) - onCheckedChanged: UM.Preferences.setValue("view/only_show_top_layers", checked) - } - } - UM.TooltipArea { width: childrenRect.width height: childrenRect.height From f8a3c3b0ba9e5c2cca0b152d8027e53471943dc2 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 20 Feb 2017 12:20:54 +0100 Subject: [PATCH 04/22] Factor out repeated extruder visibility checkboxes --- plugins/LayerView/LayerView.py | 16 +++++----- plugins/LayerView/LayerView.qml | 55 ++++++++------------------------- 2 files changed, 21 insertions(+), 50 deletions(-) diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index fc75026475..63831a4bb8 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -73,10 +73,7 @@ class LayerView(View): Preferences.getInstance().addPreference("view/force_layer_view_compatibility_mode", False) Preferences.getInstance().addPreference("layerview/layer_view_type", 0) - Preferences.getInstance().addPreference("layerview/extruder0_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder1_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder2_opacity", 1.0) - Preferences.getInstance().addPreference("layerview/extruder3_opacity", 1.0) + Preferences.getInstance().addPreference("layerview/extruder_opacities", "") Preferences.getInstance().addPreference("layerview/show_travel_moves", False) Preferences.getInstance().addPreference("layerview/show_support", True) @@ -392,10 +389,13 @@ class LayerView(View): self.setLayerViewType(int(float(Preferences.getInstance().getValue("layerview/layer_view_type")))); - self.setExtruderOpacity(0, float(Preferences.getInstance().getValue("layerview/extruder0_opacity"))) - self.setExtruderOpacity(1, float(Preferences.getInstance().getValue("layerview/extruder1_opacity"))) - self.setExtruderOpacity(2, float(Preferences.getInstance().getValue("layerview/extruder2_opacity"))) - self.setExtruderOpacity(3, float(Preferences.getInstance().getValue("layerview/extruder3_opacity"))) + extruder_nr = 0 + for extruder_opacity in Preferences.getInstance().getValue("layerview/extruder_opacities").split(","): + try: + opacity = float(extruder_opacity) + except ValueError: + opacity = 1.0 + self.setExtruderOpacity(extruder_nr, opacity) self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) self.setShowSupport(bool(Preferences.getInstance().getValue("layerview/show_support"))) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index e2581a568c..f9143a89ad 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -214,10 +214,7 @@ Item onPreferenceChanged: { layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); - view_settings.extruder0_checked = UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5; - view_settings.extruder1_checked = UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5; - view_settings.extruder2_checked = UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5; - view_settings.extruder3_checked = UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5; + view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split(","); view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); view_settings.show_support = UM.Preferences.getValue("layerview/show_support"); view_settings.show_adhesion = UM.Preferences.getValue("layerview/show_adhesion"); @@ -231,10 +228,7 @@ Item ColumnLayout { id: view_settings - property bool extruder0_checked: UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5 - property bool extruder1_checked: UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5 - property bool extruder2_checked: UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5 - property bool extruder3_checked: UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5 + property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split(",") property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") property bool show_support: UM.Preferences.getValue("layerview/show_support") property bool show_adhesion: UM.Preferences.getValue("layerview/show_adhesion") @@ -248,42 +242,19 @@ Item anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - CheckBox { - checked: view_settings.extruder0_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder0_opacity", checked ? 1.0 : 0.0); + Repeater { + model: UM.LayerView.extruderCount + CheckBox { + checked: [undefined, ""].indexOf(view_settings.extruder_opacities[index]) >= 0 || view_settings.extruder_opacities[index] > 0.5 + onClicked: { + view_settings.extruder_opacities[index] = checked ? 1.0 : 0.0 + UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.toString()); + } + text: catalog.i18nc("@label", "Extruder %1").arg(index + 1) + visible: !UM.LayerView.compatibilityMode } - text: "Extruder 1" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 1) - } - CheckBox { - checked: view_settings.extruder1_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder1_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 2" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 2) - } - CheckBox { - checked: view_settings.extruder2_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder2_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 3" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.etruderCount >= 3) - } - CheckBox { - checked: view_settings.extruder3_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder3_opacity", checked ? 1.0 : 0.0); - } - text: "Extruder 4" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 4) - } - Label { - text: "Other extruders always visible" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 5) } + CheckBox { checked: view_settings.show_travel_moves onClicked: { From 26fe46ce1f26f819cbfa8f6f4a6621fc4c501632 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 20 Feb 2017 12:32:49 +0100 Subject: [PATCH 05/22] Translate layerview mode types --- plugins/LayerView/LayerView.qml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index f9143a89ad..be2a0fdd7e 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -160,14 +160,18 @@ Item ListModel // matches LayerView.py { id: layerViewTypes - ListElement { - text: "Material Color" + } + + Component.onCompleted: + { + layerViewTypes.append({ + text: catalog.i18nc("@title:layerview mode", "Material Color"), type_id: 0 - } - ListElement { - text: "Line Type" + }) + layerViewTypes.append({ + text: catalog.i18nc("@title:layerview mode", "Line Type"), type_id: 1 // these ids match the switching in the shader - } + }) } ComboBox From 73253d380704343f530471d0660cc6fb036a3cf3 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 20 Feb 2017 13:19:38 +0100 Subject: [PATCH 06/22] Fix loading opacities from preferences --- plugins/LayerView/LayerView.py | 1 + plugins/LayerView/LayerView.qml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 63831a4bb8..828030a076 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -396,6 +396,7 @@ class LayerView(View): except ValueError: opacity = 1.0 self.setExtruderOpacity(extruder_nr, opacity) + extruder_nr += 1 self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) self.setShowSupport(bool(Preferences.getInstance().getValue("layerview/show_support"))) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index be2a0fdd7e..a06a498158 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -249,7 +249,7 @@ Item Repeater { model: UM.LayerView.extruderCount CheckBox { - checked: [undefined, ""].indexOf(view_settings.extruder_opacities[index]) >= 0 || view_settings.extruder_opacities[index] > 0.5 + checked: view_settings.extruder_opacities[index] > 0.5 || view_settings.extruder_opacities[index] == undefined || view_settings.extruder_opacities[index] == "" onClicked: { view_settings.extruder_opacities[index] = checked ? 1.0 : 0.0 UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.toString()); From aef34d468858d2e7256679caacb7600dc7cbedff Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 21 Feb 2017 22:28:47 +0100 Subject: [PATCH 07/22] Fix i18n context --- plugins/LayerView/LayerView.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index a06a498158..41e39ef2c3 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -165,11 +165,11 @@ Item Component.onCompleted: { layerViewTypes.append({ - text: catalog.i18nc("@title:layerview mode", "Material Color"), + text: catalog.i18nc("@label:listbox", "Material Color"), type_id: 0 }) layerViewTypes.append({ - text: catalog.i18nc("@title:layerview mode", "Line Type"), + text: catalog.i18nc("@label:listbox", "Line Type"), type_id: 1 // these ids match the switching in the shader }) } From 7a336bbe679bc0782088746154065d2eb354d012 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 21 Feb 2017 22:37:32 +0100 Subject: [PATCH 08/22] Change separator for extruder_opacities to | Comma as a separator might cause confusion/(user-)errors with localised floating point numbers. --- plugins/LayerView/LayerView.qml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 41e39ef2c3..c254adcbb6 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -218,7 +218,7 @@ Item onPreferenceChanged: { layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); - view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split(","); + view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|"); view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); view_settings.show_support = UM.Preferences.getValue("layerview/show_support"); view_settings.show_adhesion = UM.Preferences.getValue("layerview/show_adhesion"); @@ -232,7 +232,7 @@ Item ColumnLayout { id: view_settings - property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split(",") + property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") property bool show_support: UM.Preferences.getValue("layerview/show_support") property bool show_adhesion: UM.Preferences.getValue("layerview/show_adhesion") @@ -252,7 +252,7 @@ Item checked: view_settings.extruder_opacities[index] > 0.5 || view_settings.extruder_opacities[index] == undefined || view_settings.extruder_opacities[index] == "" onClicked: { view_settings.extruder_opacities[index] = checked ? 1.0 : 0.0 - UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.toString()); + UM.Preferences.setValue("layerview/extruder_opacities", view_settings.extruder_opacities.join("|")); } text: catalog.i18nc("@label", "Extruder %1").arg(index + 1) visible: !UM.LayerView.compatibilityMode From fa1b332733a80b88998f16bffc018b5a75698750 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 27 Feb 2017 14:06:17 +0100 Subject: [PATCH 09/22] Moved layer view menu to left, next to sliders. CURA-3321 --- plugins/LayerView/LayerView.qml | 275 ++++++++++++++++--------------- resources/themes/cura/theme.json | 2 +- 2 files changed, 139 insertions(+), 138 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 240aee705e..107cd8f0a1 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -13,145 +13,12 @@ Item width: UM.Theme.getSize("button").width height: UM.Theme.getSize("slider_layerview_size").height - Slider - { - id: sliderMinimumLayer - width: UM.Theme.getSize("slider_layerview_size").width - height: UM.Theme.getSize("slider_layerview_size").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 - orientation: Qt.Vertical - minimumValue: 0; - maximumValue: UM.LayerView.numLayers-1; - stepSize: 1 - - property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - - value: UM.LayerView.minimumLayer - onValueChanged: { - UM.LayerView.setMinimumLayer(value) - if (value > UM.LayerView.currentLayer) { - UM.LayerView.setCurrentLayer(value); - } - } - - style: UM.Theme.styles.slider; - } - - Slider - { - id: slider - width: UM.Theme.getSize("slider_layerview_size").width - height: UM.Theme.getSize("slider_layerview_size").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 - orientation: Qt.Vertical - minimumValue: 0; - maximumValue: UM.LayerView.numLayers; - stepSize: 1 - - property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - - value: UM.LayerView.currentLayer - onValueChanged: { - UM.LayerView.setCurrentLayer(value); - if (value < UM.LayerView.minimumLayer) { - UM.LayerView.setMinimumLayer(value); - } - } - - style: UM.Theme.styles.slider; - - Rectangle - { - x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; - y: parent.height - (parent.value * parent.pixelsPerStep) - UM.Theme.getSize("slider_handle").height * 1.25; - - height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height - width: valueLabel.width + UM.Theme.getSize("default_margin").width - Behavior on height { NumberAnimation { duration: 50; } } - - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("slider_groove_border") - color: UM.Theme.getColor("tool_panel_background") - - visible: UM.LayerView.layerActivity && Printer.platformActivity ? true : false - - TextField - { - id: valueLabel - property string maxValue: slider.maximumValue + 1 - text: slider.value + 1 - horizontalAlignment: TextInput.AlignRight; - onEditingFinished: - { - // Ensure that the cursor is at the first position. On some systems the text isn't fully visible - // Seems to have to do something with different dpi densities that QML doesn't quite handle. - // Another option would be to increase the size even further, but that gives pretty ugly results. - cursorPosition = 0; - if(valueLabel.text != '') - { - slider.value = valueLabel.text - 1; - } - } - validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; } - - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; - anchors.verticalCenter: parent.verticalCenter; - - width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2, 20); - style: TextFieldStyle - { - textColor: UM.Theme.getColor("setting_control_text"); - font: UM.Theme.getFont("default"); - background: Item { } - } - } - - BusyIndicator - { - id: busyIndicator; - anchors.left: parent.right; - anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; - anchors.verticalCenter: parent.verticalCenter; - - width: UM.Theme.getSize("slider_handle").height; - height: width; - - running: UM.LayerView.busy; - visible: UM.LayerView.busy; - } - } - } - Rectangle { - id: slider_background + id: layerViewMenu anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - z: slider.z - 1 - width: UM.Theme.getSize("slider_layerview_background").width - height: slider.height + UM.Theme.getSize("default_margin").height * 2 - color: UM.Theme.getColor("tool_panel_background"); - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - - MouseArea { - id: sliderMouseArea - property double manualStepSize: slider.maximumValue / 11 - anchors.fill: parent - onWheel: { - slider.value = wheel.angleDelta.y < 0 ? slider.value - sliderMouseArea.manualStepSize : slider.value + sliderMouseArea.manualStepSize - } - } - } - - Rectangle { - anchors.left: parent.right - anchors.bottom: slider_background.top - anchors.leftMargin: UM.Theme.getSize("default_margin").width + anchors.top: slider_background.top width: UM.Theme.getSize("layerview_menu_size").width - height: UM.Theme.getSize("layerview_menu_size").height + height: slider.height + UM.Theme.getSize("default_margin").height * 2 color: UM.Theme.getColor("tool_panel_background"); border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") @@ -296,7 +163,7 @@ Item onClicked: { UM.Preferences.setValue("layerview/show_travel_moves", checked); } - text: catalog.i18nc("@label", "Show Travel Moves") + text: catalog.i18nc("@label", "Show Travels") } CheckBox { checked: view_settings.show_helpers @@ -321,4 +188,138 @@ Item } } } + + Slider + { + id: sliderMinimumLayer + width: UM.Theme.getSize("slider_layerview_size").width + height: UM.Theme.getSize("slider_layerview_size").height + anchors.left: layerViewMenu.right + anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 + orientation: Qt.Vertical + minimumValue: 0; + maximumValue: UM.LayerView.numLayers-1; + stepSize: 1 + + property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; + + value: UM.LayerView.minimumLayer + onValueChanged: { + UM.LayerView.setMinimumLayer(value) + if (value > UM.LayerView.currentLayer) { + UM.LayerView.setCurrentLayer(value); + } + } + + style: UM.Theme.styles.slider; + } + + Slider + { + id: slider + width: UM.Theme.getSize("slider_layerview_size").width + height: UM.Theme.getSize("slider_layerview_size").height + anchors.left: layerViewMenu.right + anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 + orientation: Qt.Vertical + minimumValue: 0; + maximumValue: UM.LayerView.numLayers; + stepSize: 1 + + property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; + + value: UM.LayerView.currentLayer + onValueChanged: { + UM.LayerView.setCurrentLayer(value); + if (value < UM.LayerView.minimumLayer) { + UM.LayerView.setMinimumLayer(value); + } + } + + style: UM.Theme.styles.slider; + + Rectangle + { + x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; + y: parent.height - (parent.value * parent.pixelsPerStep) - UM.Theme.getSize("slider_handle").height * 1.25; + + height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height + width: valueLabel.width + UM.Theme.getSize("default_margin").width + Behavior on height { NumberAnimation { duration: 50; } } + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("slider_groove_border") + color: UM.Theme.getColor("tool_panel_background") + + visible: UM.LayerView.layerActivity && Printer.platformActivity ? true : false + + TextField + { + id: valueLabel + property string maxValue: slider.maximumValue + 1 + text: slider.value + 1 + horizontalAlignment: TextInput.AlignRight; + onEditingFinished: + { + // Ensure that the cursor is at the first position. On some systems the text isn't fully visible + // Seems to have to do something with different dpi densities that QML doesn't quite handle. + // Another option would be to increase the size even further, but that gives pretty ugly results. + cursorPosition = 0; + if(valueLabel.text != '') + { + slider.value = valueLabel.text - 1; + } + } + validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; } + + anchors.left: parent.left; + anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; + anchors.verticalCenter: parent.verticalCenter; + + width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2, 20); + style: TextFieldStyle + { + textColor: UM.Theme.getColor("setting_control_text"); + font: UM.Theme.getFont("default"); + background: Item { } + } + } + + BusyIndicator + { + id: busyIndicator; + anchors.left: parent.right; + anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; + anchors.verticalCenter: parent.verticalCenter; + + width: UM.Theme.getSize("slider_handle").height; + height: width; + + running: UM.LayerView.busy; + visible: UM.LayerView.busy; + } + } + } + + Rectangle { + id: slider_background + anchors.left: layerViewMenu.right + anchors.verticalCenter: parent.verticalCenter + z: slider.z - 1 + width: UM.Theme.getSize("slider_layerview_background").width + height: slider.height + UM.Theme.getSize("default_margin").height * 2 + color: UM.Theme.getColor("tool_panel_background"); + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + + MouseArea { + id: sliderMouseArea + property double manualStepSize: slider.maximumValue / 11 + anchors.fill: parent + onWheel: { + slider.value = wheel.angleDelta.y < 0 ? slider.value - sliderMouseArea.manualStepSize : slider.value + sliderMouseArea.manualStepSize + } + } + } + } diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 8ac22e26f3..7efb8e5907 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -295,7 +295,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [3.0, 3.0], - "layerview_menu_size": [13.0, 25.0], + "layerview_menu_size": [11.0, 25.0], "checkbox": [2.0, 2.0], From 8b7aee166480496db98d9896aebefa4fc1a60cc2 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 27 Feb 2017 14:16:56 +0100 Subject: [PATCH 10/22] Adjusted menu, added View Mode: Layers. CURA-3321 --- plugins/LayerView/LayerView.qml | 13 ++++++++++++- resources/themes/cura/theme.json | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 107cd8f0a1..95e0fe61a1 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -25,11 +25,22 @@ Item Label { - id: layerViewTypesLabel + id: layersLabel anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@label","View Mode: Layers") + font.bold: true + } + + Label + { + id: layerViewTypesLabel + anchors.top: layersLabel.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("default_margin").width text: catalog.i18nc("@label","Color scheme") } diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 7efb8e5907..0a6a131eb5 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -295,7 +295,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [3.0, 3.0], - "layerview_menu_size": [11.0, 25.0], + "layerview_menu_size": [12.0, 25.0], "checkbox": [2.0, 2.0], From 27f013fd8143153440adde6f005065f0f20c5ebf Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 28 Feb 2017 11:52:51 +0100 Subject: [PATCH 11/22] Cleanup layout, finalizing --- plugins/LayerView/LayerView.qml | 543 +++++++++++++++++++------------ resources/themes/cura/theme.json | 9 +- 2 files changed, 332 insertions(+), 220 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 95e0fe61a1..8a47818c08 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -10,111 +10,23 @@ import UM 1.0 as UM Item { - width: UM.Theme.getSize("button").width - height: UM.Theme.getSize("slider_layerview_size").height + width: UM.Theme.getSize("layerview_menu_size").width + height: { + if (UM.LayerView.compatibilityMode) { + return UM.Theme.getSize("layerview_menu_size").height + } else { + return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) + } + } Rectangle { id: layerViewMenu anchors.left: parent.left - anchors.top: slider_background.top - width: UM.Theme.getSize("layerview_menu_size").width - height: slider.height + UM.Theme.getSize("default_margin").height * 2 + anchors.top: parent.top + width: parent.width + height: parent.height + z: slider.z - 1 color: UM.Theme.getColor("tool_panel_background"); - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - - Label - { - id: layersLabel - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label","View Mode: Layers") - font.bold: true - } - - Label - { - id: layerViewTypesLabel - anchors.top: layersLabel.bottom - anchors.topMargin: UM.Theme.getSize("default_margin").height - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@label","Color scheme") - } - - ListModel // matches LayerView.py - { - id: layerViewTypes - ListElement { - text: "Material Color" - type_id: 0 - } - ListElement { - text: "Line Type" - type_id: 1 // these ids match the switching in the shader - } - } - - ComboBox - { - id: layerTypeCombobox - anchors.topMargin: UM.Theme.getSize("margin_small").height - anchors.top: layerViewTypesLabel.bottom - anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("default_margin").width - anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - model: layerViewTypes - visible: !UM.LayerView.compatibilityMode - property int layer_view_type: UM.Preferences.getValue("layerview/layer_view_type") - currentIndex: layer_view_type // index matches type_id - onActivated: { - // Combobox selection - var type_id = layerViewTypes.get(index).type_id; - UM.Preferences.setValue("layerview/layer_view_type", type_id); - updateLegend(); - } - onModelChanged: { - updateLegend(); - } - // Update visibility of legend. - function updateLegend() { - var type_id = layerViewTypes.get(currentIndex).type_id; - if (UM.LayerView.compatibilityMode || (type_id == 1)) { - // Line type - UM.LayerView.enableLegend(); - } else { - UM.LayerView.disableLegend(); - } - } - } - - Label - { - id: compatibilityModeLabel - anchors.top: parent.top - anchors.left: parent.left - text: catalog.i18nc("@label","Compatibility Mode") - visible: UM.LayerView.compatibilityMode - } - - Connections { - target: UM.Preferences - onPreferenceChanged: - { - layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); - view_settings.extruder0_checked = UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5; - view_settings.extruder1_checked = UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5; - view_settings.extruder2_checked = UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5; - view_settings.extruder3_checked = UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5; - view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); - view_settings.show_helpers = UM.Preferences.getValue("layerview/show_helpers"); - view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); - view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); - } - } ColumnLayout { id: view_settings @@ -128,19 +40,132 @@ Item property bool show_skin: UM.Preferences.getValue("layerview/show_skin") property bool show_infill: UM.Preferences.getValue("layerview/show_infill") - anchors.top: UM.LayerView.compatibilityMode ? compatibilityModeLabel.bottom : layerTypeCombobox.bottom + anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width + spacing: UM.Theme.getValue("layerview_row_spacing").height + + Label + { + id: layersLabel + anchors.left: parent.left + text: catalog.i18nc("@label","View Mode: Layers") + font.bold: true + } + + Label + { + id: spaceLabel + anchors.left: parent.left + text: " " + font.pointSize: 0.5 + } + + Label + { + id: layerViewTypesLabel + anchors.left: parent.left + text: catalog.i18nc("@label","Color scheme") + visible: !UM.LayerView.compatibilityMode + Layout.fillWidth: true + } + + ListModel // matches LayerView.py + { + id: layerViewTypes + ListElement { + text: "Material Color" + type_id: 0 + } + ListElement { + text: "Line Type" + type_id: 1 // these ids match the switching in the shader + } + } + + ComboBox + { + id: layerTypeCombobox + anchors.left: parent.left + Layout.fillWidth: true + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + model: layerViewTypes + visible: !UM.LayerView.compatibilityMode + + property int layer_view_type: UM.Preferences.getValue("layerview/layer_view_type") + currentIndex: layer_view_type // index matches type_id + onActivated: { + // Combobox selection + var type_id = layerViewTypes.get(index).type_id; + UM.Preferences.setValue("layerview/layer_view_type", type_id); + updateLegend(); + } + onModelChanged: { + updateLegend(); + } + + // Update visibility of legend. + function updateLegend() { + var type_id = layerViewTypes.get(currentIndex).type_id; + if (UM.LayerView.compatibilityMode || (type_id == 1)) { + // Line type + UM.LayerView.enableLegend(); + } else { + UM.LayerView.disableLegend(); + } + } + } + + Label + { + id: compatibilityModeLabel + //anchors.top: layersLabel.bottom + anchors.left: parent.left + text: catalog.i18nc("@label","Compatibility Mode") + visible: UM.LayerView.compatibilityMode + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + } + + Label + { + id: space2Label + anchors.left: parent.left + text: " " + font.pointSize: 0.5 + } + + Connections { + target: UM.Preferences + onPreferenceChanged: + { + layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); + view_settings.extruder0_checked = UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5; + view_settings.extruder1_checked = UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5; + view_settings.extruder2_checked = UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5; + view_settings.extruder3_checked = UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5; + view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); + view_settings.show_helpers = UM.Preferences.getValue("layerview/show_helpers"); + view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); + view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); + } + } CheckBox { + id: extruder0CheckBox checked: view_settings.extruder0_checked onClicked: { UM.Preferences.setValue("layerview/extruder0_opacity", checked ? 1.0 : 0.0); } text: "Extruder 1" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 1) + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } + CheckBox { checked: view_settings.extruder1_checked onClicked: { @@ -148,6 +173,9 @@ Item } text: "Extruder 2" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 2) + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.extruder2_checked @@ -155,7 +183,9 @@ Item UM.Preferences.setValue("layerview/extruder2_opacity", checked ? 1.0 : 0.0); } text: "Extruder 3" - visible: !UM.LayerView.compatibilityMode && (UM.LayerView.etruderCount >= 3) + visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 3) + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.extruder3_checked @@ -164,10 +194,14 @@ Item } text: "Extruder 4" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 4) + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } Label { - text: "Other extruders always visible" + text: "Other extr. always visible" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 5) + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.show_travel_moves @@ -175,6 +209,19 @@ Item UM.Preferences.setValue("layerview/show_travel_moves", checked); } text: catalog.i18nc("@label", "Show Travels") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#00f" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.show_helpers @@ -182,6 +229,19 @@ Item UM.Preferences.setValue("layerview/show_helpers", checked); } text: catalog.i18nc("@label", "Show Helpers") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#0ff" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.show_skin @@ -189,6 +249,19 @@ Item UM.Preferences.setValue("layerview/show_skin", checked); } text: catalog.i18nc("@label", "Show Shell") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#f00" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } CheckBox { checked: view_settings.show_infill @@ -196,141 +269,177 @@ Item UM.Preferences.setValue("layerview/show_infill", checked); } text: catalog.i18nc("@label", "Show Infill") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#f80" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } - } - } - Slider - { - id: sliderMinimumLayer - width: UM.Theme.getSize("slider_layerview_size").width - height: UM.Theme.getSize("slider_layerview_size").height - anchors.left: layerViewMenu.right - anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 - orientation: Qt.Vertical - minimumValue: 0; - maximumValue: UM.LayerView.numLayers-1; - stepSize: 1 - - property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - - value: UM.LayerView.minimumLayer - onValueChanged: { - UM.LayerView.setMinimumLayer(value) - if (value > UM.LayerView.currentLayer) { - UM.LayerView.setCurrentLayer(value); + Label + { + id: topBottomLabel + anchors.left: parent.left + text: catalog.i18nc("@label","Top / Bottom") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#ff0" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width } + + Label + { + id: innerWallLabel + anchors.left: parent.left + text: catalog.i18nc("@label","Inner Wall") + Rectangle { + anchors.top: parent.top + anchors.topMargin: 2 + anchors.right: parent.right + width: UM.Theme.getSize("layerview_legend_size").width + height: UM.Theme.getSize("layerview_legend_size").height + color: "#0f0" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + } + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + } + } - style: UM.Theme.styles.slider; - } + Slider + { + id: sliderMinimumLayer + width: UM.Theme.getSize("slider_layerview_size").width + height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height // UM.Theme.getSize("slider_layerview_size").height + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height + anchors.right: layerViewMenu.right + anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 + orientation: Qt.Vertical + minimumValue: 0; + maximumValue: UM.LayerView.numLayers-1; + stepSize: 1 - Slider - { - id: slider - width: UM.Theme.getSize("slider_layerview_size").width - height: UM.Theme.getSize("slider_layerview_size").height - anchors.left: layerViewMenu.right - anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 - orientation: Qt.Vertical - minimumValue: 0; - maximumValue: UM.LayerView.numLayers; - stepSize: 1 + property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - - value: UM.LayerView.currentLayer - onValueChanged: { - UM.LayerView.setCurrentLayer(value); - if (value < UM.LayerView.minimumLayer) { - UM.LayerView.setMinimumLayer(value); + value: UM.LayerView.minimumLayer + onValueChanged: { + UM.LayerView.setMinimumLayer(value) + if (value > UM.LayerView.currentLayer) { + UM.LayerView.setCurrentLayer(value); } } - style: UM.Theme.styles.slider; + style: UM.Theme.styles.slider; + } - Rectangle + Slider { - x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; - y: parent.height - (parent.value * parent.pixelsPerStep) - UM.Theme.getSize("slider_handle").height * 1.25; + id: slider + width: UM.Theme.getSize("slider_layerview_size").width + height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height //UM.Theme.getSize("slider_layerview_size").height + anchors.top: parent.top + anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height + anchors.right: layerViewMenu.right + anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 + orientation: Qt.Vertical + minimumValue: 0; + maximumValue: UM.LayerView.numLayers; + stepSize: 1 - height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height - width: valueLabel.width + UM.Theme.getSize("default_margin").width - Behavior on height { NumberAnimation { duration: 50; } } + property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("slider_groove_border") - color: UM.Theme.getColor("tool_panel_background") - - visible: UM.LayerView.layerActivity && Printer.platformActivity ? true : false - - TextField - { - id: valueLabel - property string maxValue: slider.maximumValue + 1 - text: slider.value + 1 - horizontalAlignment: TextInput.AlignRight; - onEditingFinished: - { - // Ensure that the cursor is at the first position. On some systems the text isn't fully visible - // Seems to have to do something with different dpi densities that QML doesn't quite handle. - // Another option would be to increase the size even further, but that gives pretty ugly results. - cursorPosition = 0; - if(valueLabel.text != '') - { - slider.value = valueLabel.text - 1; + value: UM.LayerView.currentLayer + onValueChanged: { + UM.LayerView.setCurrentLayer(value); + if (value < UM.LayerView.minimumLayer) { + UM.LayerView.setMinimumLayer(value); } } - validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; } - anchors.left: parent.left; - anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; - anchors.verticalCenter: parent.verticalCenter; + style: UM.Theme.styles.slider; - width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2, 20); - style: TextFieldStyle + Rectangle + { + x: parent.width + UM.Theme.getSize("slider_layerview_background").width / 2; + y: parent.height - (parent.value * parent.pixelsPerStep) - UM.Theme.getSize("slider_handle").height * 1.25; + + height: UM.Theme.getSize("slider_handle").height + UM.Theme.getSize("default_margin").height + width: valueLabel.width + UM.Theme.getSize("default_margin").width + Behavior on height { NumberAnimation { duration: 50; } } + + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("slider_groove_border") + color: UM.Theme.getColor("tool_panel_background") + + visible: UM.LayerView.layerActivity && Printer.platformActivity ? true : false + + TextField { - textColor: UM.Theme.getColor("setting_control_text"); - font: UM.Theme.getFont("default"); - background: Item { } + id: valueLabel + property string maxValue: slider.maximumValue + 1 + text: slider.value + 1 + horizontalAlignment: TextInput.AlignRight; + onEditingFinished: + { + // Ensure that the cursor is at the first position. On some systems the text isn't fully visible + // Seems to have to do something with different dpi densities that QML doesn't quite handle. + // Another option would be to increase the size even further, but that gives pretty ugly results. + cursorPosition = 0; + if(valueLabel.text != '') + { + slider.value = valueLabel.text - 1; + } + } + validator: IntValidator { bottom: 1; top: slider.maximumValue + 1; } + + anchors.left: parent.left; + anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; + anchors.verticalCenter: parent.verticalCenter; + + width: Math.max(UM.Theme.getSize("line").width * maxValue.length + 2, 20); + style: TextFieldStyle + { + textColor: UM.Theme.getColor("setting_control_text"); + font: UM.Theme.getFont("default"); + background: Item { } + } + } + + BusyIndicator + { + id: busyIndicator; + anchors.left: parent.right; + anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; + anchors.verticalCenter: parent.verticalCenter; + + width: UM.Theme.getSize("slider_handle").height; + height: width; + + running: UM.LayerView.busy; + visible: UM.LayerView.busy; } } - - BusyIndicator - { - id: busyIndicator; - anchors.left: parent.right; - anchors.leftMargin: UM.Theme.getSize("default_margin").width / 2; - anchors.verticalCenter: parent.verticalCenter; - - width: UM.Theme.getSize("slider_handle").height; - height: width; - - running: UM.LayerView.busy; - visible: UM.LayerView.busy; - } } } - - Rectangle { - id: slider_background - anchors.left: layerViewMenu.right - anchors.verticalCenter: parent.verticalCenter - z: slider.z - 1 - width: UM.Theme.getSize("slider_layerview_background").width - height: slider.height + UM.Theme.getSize("default_margin").height * 2 - color: UM.Theme.getColor("tool_panel_background"); - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("lining") - - MouseArea { - id: sliderMouseArea - property double manualStepSize: slider.maximumValue / 11 - anchors.fill: parent - onWheel: { - slider.value = wheel.angleDelta.y < 0 ? slider.value - sliderMouseArea.manualStepSize : slider.value + sliderMouseArea.manualStepSize - } - } - } - } diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 0a6a131eb5..cb19d330e7 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -291,11 +291,14 @@ "slider_groove": [0.5, 0.5], "slider_handle": [1.5, 1.5], - "slider_layerview_size": [1.0, 16.0], + "slider_layerview_size": [1.0, 22.0], "slider_layerview_background": [4.0, 0.0], - "slider_layerview_margin": [3.0, 3.0], + "slider_layerview_margin": [3.0, 1.0], - "layerview_menu_size": [12.0, 25.0], + "layerview_menu_size": [17.0, 20.0], + "layerview_legend_size": [1.0, 1.0], + "layerview_row": [11.0, 1.5], + "layerview_row_spacing": [0.0, 0.5], "checkbox": [2.0, 2.0], From ba6a8eb869c0f4637378dbc80ef645668c6db74b Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 28 Feb 2017 13:34:58 +0100 Subject: [PATCH 12/22] Legend is now in the switching layer type area, removed legend upper right. CURA-3321 --- cura/CuraApplication.py | 5 --- plugins/LayerView/LayerView.py | 11 ------ plugins/LayerView/LayerView.qml | 56 ++++++++++++++++------------- plugins/LayerView/LayerViewProxy.py | 15 +------- 4 files changed, 33 insertions(+), 54 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index add7b4a143..43ca0d3dc5 100644 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -337,11 +337,6 @@ class CuraApplication(QtApplication): showPrintMonitor = pyqtSignal(bool, arguments = ["show"]) - def setViewLegendItems(self, items): - self.viewLegendItemsChanged.emit(items) - - viewLegendItemsChanged = pyqtSignal("QVariantList", arguments = ["items"]) - ## Cura has multiple locations where instance containers need to be saved, so we need to handle this differently. # # Note that the AutoSave plugin also calls this method. diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 0a315b5865..ca8d57926d 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -278,12 +278,6 @@ class LayerView(View): def endRendering(self): pass - def enableLegend(self): - Application.getInstance().setViewLegendItems(self._getLegendItems()) - - def disableLegend(self): - Application.getInstance().setViewLegendItems([]) - def event(self, event): modifiers = QApplication.keyboardModifiers() ctrl_is_active = modifiers == Qt.ControlModifier @@ -316,9 +310,6 @@ class LayerView(View): self._old_composite_shader = self._composite_pass.getCompositeShader() self._composite_pass.setCompositeShader(self._layerview_composite_shader) - if self.getLayerViewType() == self.LAYER_VIEW_TYPE_LINE_TYPE or self._compatibility_mode: - self.enableLegend() - elif event.type == Event.ViewDeactivateEvent: self._wireprint_warning_message.hide() Application.getInstance().globalContainerStackChanged.disconnect(self._onGlobalStackChanged) @@ -328,8 +319,6 @@ class LayerView(View): self._composite_pass.setLayerBindings(self._old_layer_bindings) self._composite_pass.setCompositeShader(self._old_composite_shader) - self.disableLegend() - def _onGlobalStackChanged(self): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 8a47818c08..d66e9ab436 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -26,7 +26,7 @@ Item width: parent.width height: parent.height z: slider.z - 1 - color: UM.Theme.getColor("tool_panel_background"); + color: UM.Theme.getColor("tool_panel_background") ColumnLayout { id: view_settings @@ -39,12 +39,13 @@ Item property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") property bool show_skin: UM.Preferences.getValue("layerview/show_skin") property bool show_infill: UM.Preferences.getValue("layerview/show_infill") + property bool show_legend: false anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width - spacing: UM.Theme.getValue("layerview_row_spacing").height + spacing: UM.Theme.getSize("layerview_row_spacing").height Label { @@ -89,7 +90,7 @@ Item id: layerTypeCombobox anchors.left: parent.left Layout.fillWidth: true - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width model: layerViewTypes visible: !UM.LayerView.compatibilityMode @@ -110,9 +111,9 @@ Item var type_id = layerViewTypes.get(currentIndex).type_id; if (UM.LayerView.compatibilityMode || (type_id == 1)) { // Line type - UM.LayerView.enableLegend(); + view_settings.show_legend = true; } else { - UM.LayerView.disableLegend(); + view_settings.show_legend = false; } } } @@ -126,7 +127,7 @@ Item visible: UM.LayerView.compatibilityMode Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } Label @@ -163,7 +164,7 @@ Item visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 1) Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { @@ -175,7 +176,7 @@ Item visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 2) Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.extruder2_checked @@ -185,7 +186,7 @@ Item text: "Extruder 3" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 3) Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.extruder3_checked @@ -195,13 +196,13 @@ Item text: "Extruder 4" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 4) Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } Label { text: "Other extr. always visible" visible: !UM.LayerView.compatibilityMode && (UM.LayerView.extruderCount >= 5) Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.show_travel_moves @@ -215,13 +216,14 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#00f" + color: UM.Theme.getColor("layerview_move_combing") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + visible: view_settings.show_legend } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.show_helpers @@ -235,13 +237,14 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#0ff" + color: UM.Theme.getColor("layerview_support") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + visible: view_settings.show_legend } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.show_skin @@ -255,13 +258,14 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#f00" + color: UM.Theme.getColor("layerview_inset_0") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + visible: view_settings.show_legend } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } CheckBox { checked: view_settings.show_infill @@ -275,13 +279,14 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#f80" + color: UM.Theme.getColor("layerview_infill") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + visible: view_settings.show_legend } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } Label @@ -295,13 +300,14 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#ff0" + color: UM.Theme.getColor("layerview_skin") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width + visible: view_settings.show_legend } Label @@ -315,13 +321,15 @@ Item anchors.right: parent.right width: UM.Theme.getSize("layerview_legend_size").width height: UM.Theme.getSize("layerview_legend_size").height - color: "#0f0" + color: UM.Theme.getColor("layerview_inset_x") border.width: UM.Theme.getSize("default_lining").width border.color: UM.Theme.getColor("lining") + visible: view_settings.show_legend } Layout.fillWidth: true Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getValue("layerview_row").width + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width + visible: view_settings.show_legend } } @@ -330,7 +338,7 @@ Item { id: sliderMinimumLayer width: UM.Theme.getSize("slider_layerview_size").width - height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height // UM.Theme.getSize("slider_layerview_size").height + height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height anchors.right: layerViewMenu.right diff --git a/plugins/LayerView/LayerViewProxy.py b/plugins/LayerView/LayerViewProxy.py index d214f36407..0c3998a334 100644 --- a/plugins/LayerView/LayerViewProxy.py +++ b/plugins/LayerView/LayerViewProxy.py @@ -30,8 +30,7 @@ class LayerViewProxy(QObject): active_view = self._controller.getActiveView() if type(active_view) == LayerView.LayerView.LayerView: return active_view.getMaxLayers() - #return 100 - + @pyqtProperty(int, notify = currentLayerChanged) def currentLayer(self): active_view = self._controller.getActiveView() @@ -124,18 +123,6 @@ class LayerViewProxy(QObject): return active_view.getExtruderCount() return 0 - @pyqtSlot() - def enableLegend(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.enableLegend() - - @pyqtSlot() - def disableLegend(self): - active_view = self._controller.getActiveView() - if type(active_view) == LayerView.LayerView.LayerView: - active_view.disableLegend() - def _layerActivityChanged(self): self.activityChanged.emit() From f22299c80d85089ee7405360d085a09f1a8672ec Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 28 Feb 2017 14:43:46 +0100 Subject: [PATCH 13/22] Added option for show_travels in compatibility mode top layers. CURA-3321 --- plugins/LayerView/LayerPass.py | 8 ++++---- plugins/LayerView/LayerView.py | 13 +++++++++++-- resources/themes/cura/theme.json | 2 +- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/LayerView/LayerPass.py b/plugins/LayerView/LayerPass.py index 4fc5f66793..b706f21877 100644 --- a/plugins/LayerView/LayerPass.py +++ b/plugins/LayerView/LayerPass.py @@ -97,11 +97,11 @@ class LayerPass(RenderPass): # Create a new batch that is not range-limited batch = RenderBatch(self._layer_shader, type = RenderBatch.RenderType.Solid) - if self._layer_view._current_layer_mesh: - batch.addItem(node.getWorldTransformation(), self._layer_view._current_layer_mesh) + if self._layer_view.getCurrentLayerMesh(): + batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerMesh()) - if self._layer_view._current_layer_jumps: - batch.addItem(node.getWorldTransformation(), self._layer_view._current_layer_jumps) + if self._layer_view.getCurrentLayerJumps(): + batch.addItem(node.getWorldTransformation(), self._layer_view.getCurrentLayerJumps()) if len(batch.items) > 0: batch.render(self._scene.getActiveCamera()) diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index ca8d57926d..fb130cb3ff 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -67,6 +67,7 @@ class LayerView(View): self._resetSettings() self._legend_items = None + self._show_travel_moves = False Preferences.getInstance().addPreference("view/top_layer_count", 5) Preferences.getInstance().addPreference("view/only_show_top_layers", False) @@ -319,6 +320,12 @@ class LayerView(View): self._composite_pass.setLayerBindings(self._old_layer_bindings) self._composite_pass.setCompositeShader(self._old_composite_shader) + def getCurrentLayerMesh(self): + return self._current_layer_mesh + + def getCurrentLayerJumps(self): + return self._current_layer_jumps + def _onGlobalStackChanged(self): if self._global_container_stack: self._global_container_stack.propertyChanged.disconnect(self._onPropertyChanged) @@ -359,7 +366,8 @@ class LayerView(View): return self.resetLayerData() # Reset the layer data only when job is done. Doing it now prevents "blinking" data. self._current_layer_mesh = job.getResult().get("layers") - self._current_layer_jumps = job.getResult().get("jumps") + if self._show_travel_moves: + self._current_layer_jumps = job.getResult().get("jumps") self._controller.getScene().sceneChanged.emit(self._controller.getScene().getRoot()) self._top_layers_job = None @@ -377,7 +385,8 @@ class LayerView(View): self.setExtruderOpacity(2, float(Preferences.getInstance().getValue("layerview/extruder2_opacity"))) self.setExtruderOpacity(3, float(Preferences.getInstance().getValue("layerview/extruder3_opacity"))) - self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) + self._show_travel_moves = bool(Preferences.getInstance().getValue("layerview/show_travel_moves")) + self.setShowTravelMoves(self._show_travel_moves) self.setShowHelpers(bool(Preferences.getInstance().getValue("layerview/show_helpers"))) self.setShowSkin(bool(Preferences.getInstance().getValue("layerview/show_skin"))) self.setShowInfill(bool(Preferences.getInstance().getValue("layerview/show_infill"))) diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index cb19d330e7..52eff89011 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -295,7 +295,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [3.0, 1.0], - "layerview_menu_size": [17.0, 20.0], + "layerview_menu_size": [16.5, 20.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], From 212a2bc4f3edd02831470fe11c0374527fe3ff86 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 28 Feb 2017 14:47:25 +0100 Subject: [PATCH 14/22] Removed unused theme element. CURA-3321 --- resources/themes/cura/theme.json | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 52eff89011..13fffb5bdf 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -244,7 +244,6 @@ "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], "logo": [9.5, 2.0], - "margin_small": [0.5, 0.5], "sidebar": [35.0, 10.0], "sidebar_header": [0.0, 4.0], From bdd07bd16089f791c90146c021c05110bf042db9 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Wed, 1 Mar 2017 14:54:12 +0100 Subject: [PATCH 15/22] Removed commented out stuff. CURA-3321 --- plugins/LayerView/LayerView.qml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 5dda1f8639..e72996598e 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -44,18 +44,6 @@ Item property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") property int top_layer_count: UM.Preferences.getValue("view/only_show_top_layers") - /* - layerTypeCombobox.layer_view_type = UM.Preferences.getValue("layerview/layer_view_type"); - view_settings.extruder_opacities = UM.Preferences.getValue("layerview/extruder_opacities").split("|"); - view_settings.show_travel_moves = UM.Preferences.getValue("layerview/show_travel_moves"); - view_settings.show_support = UM.Preferences.getValue("layerview/show_support"); - view_settings.show_adhesion = UM.Preferences.getValue("layerview/show_adhesion"); - view_settings.show_skin = UM.Preferences.getValue("layerview/show_skin"); - view_settings.show_infill = UM.Preferences.getValue("layerview/show_infill"); - view_settings.only_show_top_layers = UM.Preferences.getValue("view/only_show_top_layers"); - view_settings.top_layer_count = UM.Preferences.getValue("view/top_layer_count"); - */ - anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left From e89b1afa2cf61d3fad4ab4a3ba58fd3b0e1ef67b Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Thu, 2 Mar 2017 16:55:54 +0100 Subject: [PATCH 16/22] Initial layer view color mode -> legend. CURA-3321 --- plugins/LayerView/LayerView.qml | 2 +- resources/themes/cura/theme.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) mode change 100644 => 100755 plugins/LayerView/LayerView.qml mode change 100644 => 100755 resources/themes/cura/theme.json diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml old mode 100644 new mode 100755 index e72996598e..0cc1678f06 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -40,7 +40,7 @@ Item property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") property bool show_skin: UM.Preferences.getValue("layerview/show_skin") property bool show_infill: UM.Preferences.getValue("layerview/show_infill") - property bool show_legend: false + property bool show_legend: UM.LayerView.compatibilityMode || UM.Preferences.getValue("layerview/layer_view_type") == 1 property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") property int top_layer_count: UM.Preferences.getValue("view/only_show_top_layers") diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json old mode 100644 new mode 100755 index eb112fc50b..92597cfcf6 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -294,7 +294,7 @@ "slider_layerview_background": [4.0, 0.0], "slider_layerview_margin": [3.0, 1.0], - "layerview_menu_size": [16.5, 17.0], + "layerview_menu_size": [16.5, 21.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], From 1c40c94c447232727e9c1abb3d9fb7aa8b46aa36 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 6 Mar 2017 11:55:39 +0100 Subject: [PATCH 17/22] Fix compatibility options. CURA-3321 --- plugins/LayerView/LayerView.py | 0 plugins/LayerView/LayerView.qml | 48 +++++++++++++++-------------- plugins/LayerView/LayerViewProxy.py | 2 +- resources/themes/cura/theme.json | 1 + 4 files changed, 27 insertions(+), 24 deletions(-) mode change 100644 => 100755 plugins/LayerView/LayerView.py mode change 100644 => 100755 plugins/LayerView/LayerViewProxy.py diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py old mode 100644 new mode 100755 diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 0cc1678f06..bbb9b4c80e 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -10,10 +10,16 @@ import UM 1.0 as UM Item { - width: UM.Theme.getSize("layerview_menu_size").width + width: { + if (UM.LayerView.compatibilityMode) { + return UM.Theme.getSize("layerview_menu_size_compatibility").width; + } else { + return UM.Theme.getSize("layerview_menu_size").width; + } + } height: { if (UM.LayerView.compatibilityMode) { - return UM.Theme.getSize("layerview_menu_size").height + return UM.Theme.getSize("layerview_menu_size_compatibility").height; } else { return UM.Theme.getSize("layerview_menu_size").height + UM.LayerView.extruderCount * (UM.Theme.getSize("layerview_row").height + UM.Theme.getSize("layerview_row_spacing").height) } @@ -31,10 +37,6 @@ Item ColumnLayout { id: view_settings - property bool extruder0_checked: UM.Preferences.getValue("layerview/extruder0_opacity") > 0.5 - property bool extruder1_checked: UM.Preferences.getValue("layerview/extruder1_opacity") > 0.5 - property bool extruder2_checked: UM.Preferences.getValue("layerview/extruder2_opacity") > 0.5 - property bool extruder3_checked: UM.Preferences.getValue("layerview/extruder3_opacity") > 0.5 property var extruder_opacities: UM.Preferences.getValue("layerview/extruder_opacities").split("|") property bool show_travel_moves: UM.Preferences.getValue("layerview/show_travel_moves") property bool show_helpers: UM.Preferences.getValue("layerview/show_helpers") @@ -42,7 +44,7 @@ Item property bool show_infill: UM.Preferences.getValue("layerview/show_infill") property bool show_legend: UM.LayerView.compatibilityMode || UM.Preferences.getValue("layerview/layer_view_type") == 1 property bool only_show_top_layers: UM.Preferences.getValue("view/only_show_top_layers") - property int top_layer_count: UM.Preferences.getValue("view/only_show_top_layers") + property int top_layer_count: UM.Preferences.getValue("view/top_layer_count") anchors.top: parent.top anchors.topMargin: UM.Theme.getSize("default_margin").height @@ -260,6 +262,22 @@ Item Layout.preferredHeight: UM.Theme.getSize("layerview_row").height Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } + CheckBox { + checked: view_settings.only_show_top_layers + onClicked: { + UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); + } + text: catalog.i18nc("@label", "Only Show Top Layers") + visible: UM.LayerView.compatibilityMode + } + CheckBox { + checked: view_settings.top_layer_count == 5 + onClicked: { + UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); + } + text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") + visible: UM.LayerView.compatibilityMode + } Label { @@ -420,22 +438,6 @@ Item visible: UM.LayerView.busy; } } - CheckBox { - checked: view_settings.only_show_top_layers - onClicked: { - UM.Preferences.setValue("view/only_show_top_layers", checked ? 1.0 : 0.0); - } - text: catalog.i18nc("@label", "Only Show Top Layers") - visible: UM.LayerView.compatibilityMode - } - CheckBox { - checked: view_settings.top_layer_count == 5 - onClicked: { - UM.Preferences.setValue("view/top_layer_count", checked ? 5 : 1); - } - text: catalog.i18nc("@label", "Show 5 Detailed Layers On Top") - visible: UM.LayerView.compatibilityMode - } } } } diff --git a/plugins/LayerView/LayerViewProxy.py b/plugins/LayerView/LayerViewProxy.py old mode 100644 new mode 100755 index 0c3998a334..bc372aeaf8 --- a/plugins/LayerView/LayerViewProxy.py +++ b/plugins/LayerView/LayerViewProxy.py @@ -129,7 +129,7 @@ class LayerViewProxy(QObject): def _onLayerChanged(self): self.currentLayerChanged.emit() self._layerActivityChanged() - + def _onMaxLayersChanged(self): self.maxLayersChanged.emit() diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 92597cfcf6..bd3fbb6dc6 100755 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -295,6 +295,7 @@ "slider_layerview_margin": [3.0, 1.0], "layerview_menu_size": [16.5, 21.0], + "layerview_menu_size_compatibility": [22, 23.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5], From 1f61017946fba94657b1abeace717fa8f5cf8e9d Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 6 Mar 2017 13:20:14 +0100 Subject: [PATCH 18/22] Fix updateLegend function. CURA-3321 --- plugins/LayerView/LayerView.qml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index bbb9b4c80e..061aadc4ee 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -107,17 +107,16 @@ Item currentIndex: layer_view_type // index matches type_id onActivated: { // Combobox selection - var type_id = index; // layerViewTypes.get(index).type_id; + var type_id = index; UM.Preferences.setValue("layerview/layer_view_type", type_id); - updateLegend(); + updateLegend(type_id); } onModelChanged: { - updateLegend(); + updateLegend(UM.Preferences.getValue("layerview/layer_view_type")); } // Update visibility of legend. - function updateLegend() { - var type_id = model.get(currentIndex).type_id; + function updateLegend(type_id) { if (UM.LayerView.compatibilityMode || (type_id == 1)) { // Line type view_settings.show_legend = true; From b2e06bed3788858925aeb7d237d8e463219dacb9 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 6 Mar 2017 14:03:42 +0100 Subject: [PATCH 19/22] Fix 'inverting slider' when switching between Layer view and a different view. CURA-3321 --- plugins/LayerView/LayerView.qml | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index 061aadc4ee..a24409e8d6 100755 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -10,6 +10,7 @@ import UM 1.0 as UM Item { + id: base width: { if (UM.LayerView.compatibilityMode) { return UM.Theme.getSize("layerview_menu_size_compatibility").width; @@ -326,18 +327,21 @@ Item Slider { id: sliderMinimumLayer + + anchors { + top: parent.top + bottom: parent.bottom + right: layerViewMenu.right + margins: UM.Theme.getSize("slider_layerview_margin").height + rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 + } width: UM.Theme.getSize("slider_layerview_size").width - height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height - anchors.right: layerViewMenu.right - anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8 orientation: Qt.Vertical minimumValue: 0; - maximumValue: UM.LayerView.numLayers-1; + maximumValue: UM.LayerView.numLayers - 1; stepSize: 1 - property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize; + property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize value: UM.LayerView.minimumLayer onValueChanged: { @@ -353,12 +357,16 @@ Item Slider { id: slider + + anchors { + top: parent.top + bottom: parent.bottom + right: layerViewMenu.right + margins: UM.Theme.getSize("slider_layerview_margin").height + rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 + } width: UM.Theme.getSize("slider_layerview_size").width - height: parent.height - 2*UM.Theme.getSize("slider_layerview_margin").height //UM.Theme.getSize("slider_layerview_size").height - anchors.top: parent.top - anchors.topMargin: UM.Theme.getSize("slider_layerview_margin").height - anchors.right: layerViewMenu.right - anchors.rightMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.2 + orientation: Qt.Vertical minimumValue: 0; maximumValue: UM.LayerView.numLayers; From 3468bae732312a6c10541971f7c1945c5affe047 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 7 Mar 2017 10:31:11 +0100 Subject: [PATCH 20/22] Add result type. --- cura/BuildVolume.py | 2 +- resources/qml/Cura.qml | 0 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 cura/BuildVolume.py mode change 100644 => 100755 resources/qml/Cura.qml diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py old mode 100644 new mode 100755 index c911844b58..1b04e0390a --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -385,7 +385,7 @@ class BuildVolume(SceneNode): self.setPosition(Vector(0, -self._raft_thickness, 0), SceneNode.TransformSpace.World) self.raftThicknessChanged.emit() - def _updateExtraZClearance(self): + def _updateExtraZClearance(self) -> None: extra_z = 0.0 extruders = ExtruderManager.getInstance().getMachineExtruders(self._global_container_stack.getId()) use_extruders = False diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml old mode 100644 new mode 100755 From c10dc2f07cbd392239b9ed39c1d80a2fba5b0060 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 7 Mar 2017 10:36:30 +0100 Subject: [PATCH 21/22] Set old permissions back. CURA-3321 --- plugins/LayerView/LayerView.py | 0 plugins/LayerView/LayerView.qml | 0 plugins/LayerView/LayerViewProxy.py | 0 resources/themes/cura/theme.json | 0 4 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 plugins/LayerView/LayerView.py mode change 100755 => 100644 plugins/LayerView/LayerView.qml mode change 100755 => 100644 plugins/LayerView/LayerViewProxy.py mode change 100755 => 100644 resources/themes/cura/theme.json diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py old mode 100755 new mode 100644 diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml old mode 100755 new mode 100644 diff --git a/plugins/LayerView/LayerViewProxy.py b/plugins/LayerView/LayerViewProxy.py old mode 100755 new mode 100644 diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json old mode 100755 new mode 100644 From efbc624ea8768ca0f9d59b93b746e6bb6ec4500b Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Tue, 7 Mar 2017 10:40:59 +0100 Subject: [PATCH 22/22] More defensive setExtruderOpacity, removed unnecessary part. CURA-3321 --- plugins/LayerView/LayerView.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) mode change 100644 => 100755 plugins/LayerView/LayerView.py diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py old mode 100644 new mode 100755 index da58c526fe..c696081ca3 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -194,7 +194,7 @@ class LayerView(View): # \param extruder_nr 0..3 # \param opacity 0.0 .. 1.0 def setExtruderOpacity(self, extruder_nr, opacity): - if extruder_nr <= 3: + if 0 <= extruder_nr <= 3: self._extruder_opacity[extruder_nr] = opacity self.currentLayerNumChanged.emit() @@ -385,8 +385,7 @@ class LayerView(View): opacity = 1.0 self.setExtruderOpacity(extruder_nr, opacity) - self._show_travel_moves = bool(Preferences.getInstance().getValue("layerview/show_travel_moves")) - self.setShowTravelMoves(self._show_travel_moves) + self.setShowTravelMoves(bool(Preferences.getInstance().getValue("layerview/show_travel_moves"))) self.setShowHelpers(bool(Preferences.getInstance().getValue("layerview/show_helpers"))) self.setShowSkin(bool(Preferences.getInstance().getValue("layerview/show_skin"))) self.setShowInfill(bool(Preferences.getInstance().getValue("layerview/show_infill")))