diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index fb130cb3ff..da58c526fe 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -74,10 +74,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_helpers", True) @@ -197,8 +194,9 @@ class LayerView(View): # \param extruder_nr 0..3 # \param opacity 0.0 .. 1.0 def setExtruderOpacity(self, extruder_nr, opacity): - self._extruder_opacity[extruder_nr] = opacity - self.currentLayerNumChanged.emit() + if extruder_nr <= 3: + self._extruder_opacity[extruder_nr] = opacity + self.currentLayerNumChanged.emit() def getExtruderOpacities(self): return self._extruder_opacity @@ -380,10 +378,12 @@ 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"))) + for extruder_nr, extruder_opacity in enumerate(Preferences.getInstance().getValue("layerview/extruder_opacities").split("|")): + try: + opacity = float(extruder_opacity) + except ValueError: + 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) @@ -400,10 +400,7 @@ class LayerView(View): "view/only_show_top_layers", "view/force_layer_view_compatibility_mode", "layerview/layer_view_type", - "layerview/extruder0_opacity", - "layerview/extruder1_opacity", - "layerview/extruder2_opacity", - "layerview/extruder3_opacity", + "layerview/extruder_opacities", "layerview/show_travel_moves", "layerview/show_helpers", "layerview/show_skin", @@ -413,24 +410,6 @@ class LayerView(View): self._updateWithPreferences() - def _getLegendItems(self): - if self._legend_items is None: - theme = Application.getInstance().getTheme() - self._legend_items = [ - {"color": theme.getColor("layerview_inset_0").name(), "title": catalog.i18nc("@label:layerview polygon type", "Outer Wall")}, # Inset0Type - {"color": theme.getColor("layerview_inset_x").name(), "title": catalog.i18nc("@label:layerview polygon type", "Inner Wall")}, # InsetXType - {"color": theme.getColor("layerview_skin").name(), "title": catalog.i18nc("@label:layerview polygon type", "Top / Bottom")}, # SkinType - {"color": theme.getColor("layerview_infill").name(), "title": catalog.i18nc("@label:layerview polygon type", "Infill")}, # InfillType - {"color": theme.getColor("layerview_support").name(), "title": catalog.i18nc("@label:layerview polygon type", "Support Skin")}, # SupportType - {"color": theme.getColor("layerview_support_infill").name(), "title": catalog.i18nc("@label:layerview polygon type", "Support Infill")}, # SupportInfillType - {"color": theme.getColor("layerview_support_interface").name(), "title": catalog.i18nc("@label:layerview polygon type", "Support Interface")}, # SupportInterfaceType - {"color": theme.getColor("layerview_skirt").name(), "title": catalog.i18nc("@label:layerview polygon type", "Build Plate Adhesion")}, # SkirtType - {"color": theme.getColor("layerview_move_combing").name(), "title": catalog.i18nc("@label:layerview polygon type", "Travel Move")}, # MoveCombingType - {"color": theme.getColor("layerview_move_retraction").name(), "title": catalog.i18nc("@label:layerview polygon type", "Retraction Move")}, # MoveRetractionType - #{"color": theme.getColor("layerview_none").name(), "title": catalog.i18nc("@label:layerview polygon type", "Unknown")} # NoneType - ] - return self._legend_items - class _CreateTopLayersJob(Job): def __init__(self, scene, layer_number, solid_layers): diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index d66e9ab436..5dda1f8639 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -35,11 +35,26 @@ Item 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") 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 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 @@ -75,14 +90,18 @@ Item ListModel // matches LayerView.py { id: layerViewTypes - ListElement { - text: "Material Color" + } + + Component.onCompleted: + { + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Material Color"), type_id: 0 - } - ListElement { - text: "Line Type" + }) + layerViewTypes.append({ + text: catalog.i18nc("@label:listbox", "Line Type"), type_id: 1 // these ids match the switching in the shader - } + }) } ComboBox @@ -98,7 +117,7 @@ Item currentIndex: layer_view_type // index matches type_id onActivated: { // Combobox selection - var type_id = layerViewTypes.get(index).type_id; + var type_id = index; // layerViewTypes.get(index).type_id; UM.Preferences.setValue("layerview/layer_view_type", type_id); updateLegend(); } @@ -108,7 +127,7 @@ Item // Update visibility of legend. function updateLegend() { - var type_id = layerViewTypes.get(currentIndex).type_id; + var type_id = model.get(currentIndex).type_id; if (UM.LayerView.compatibilityMode || (type_id == 1)) { // Line type view_settings.show_legend = true; @@ -121,7 +140,6 @@ Item Label { id: compatibilityModeLabel - //anchors.top: layersLabel.bottom anchors.left: parent.left text: catalog.i18nc("@label","Compatibility Mode") visible: UM.LayerView.compatibilityMode @@ -143,67 +161,33 @@ 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_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"); + 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"); } } - CheckBox { - id: extruder0CheckBox - checked: view_settings.extruder0_checked - onClicked: { - UM.Preferences.setValue("layerview/extruder0_opacity", checked ? 1.0 : 0.0); + Repeater { + model: UM.LayerView.extruderCount + CheckBox { + 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.join("|")); + } + text: catalog.i18nc("@label", "Extruder %1").arg(index + 1) + visible: !UM.LayerView.compatibilityMode + enabled: index + 1 <= 4 + Layout.fillWidth: true + Layout.preferredHeight: UM.Theme.getSize("layerview_row").height + Layout.preferredWidth: UM.Theme.getSize("layerview_row").width } - 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.getSize("layerview_row").width } - 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) - Layout.fillWidth: true - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - } - 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.extruderCount >= 3) - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - Layout.preferredWidth: UM.Theme.getSize("layerview_row").width - } - 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) - Layout.preferredHeight: UM.Theme.getSize("layerview_row").height - 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.getSize("layerview_row").width - } CheckBox { checked: view_settings.show_travel_moves onClicked: { @@ -448,6 +432,22 @@ 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/resources/qml/Cura.qml b/resources/qml/Cura.qml index b73bd21600..8d82dbfa2f 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -306,18 +306,6 @@ UM.MainWindow } } - Legend - { - id: legend - anchors - { - top: parent.top - topMargin: UM.Theme.getSize("default_margin").height - right: sidebar.left - rightMargin: UM.Theme.getSize("default_margin").width - } - } - JobSpecs { id: jobSpecs diff --git a/resources/qml/Legend.qml b/resources/qml/Legend.qml deleted file mode 100644 index 94eeb1e903..0000000000 --- a/resources/qml/Legend.qml +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright (c) 2015 Ultimaker B.V. -// Cura is released under the terms of the AGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Controls 1.1 -import QtQuick.Controls.Styles 1.1 -import QtQuick.Layouts 1.1 - -import UM 1.1 as UM -import Cura 1.0 as Cura - -Item { - id: base - - UM.I18nCatalog { id: catalog; name:"cura"} - - width: childrenRect.width - height: childrenRect.height - - Connections - { - target: Printer - onViewLegendItemsChanged: - { - legendItemRepeater.model = items - } - } - - Column - { - Repeater - { - id: legendItemRepeater - - Item { - anchors.right: parent.right - height: childrenRect.height - width: childrenRect.width - - Rectangle { - id: swatch - - anchors.right: parent.right - anchors.verticalCenter: label.verticalCenter - height: UM.Theme.getSize("setting_control").height / 2 - width: height - - color: modelData.color - border.width: UM.Theme.getSize("default_lining").width - border.color: UM.Theme.getColor("text_subtext") - } - Label { - id: label - - text: modelData.title - font: UM.Theme.getFont("small") - color: UM.Theme.getColor("text_subtext") - - anchors.right: swatch.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width / 2 - } - } - } - } -} diff --git a/resources/qml/Preferences/GeneralPage.qml b/resources/qml/Preferences/GeneralPage.qml index 017de45521..71c314f668 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") @@ -257,44 +255,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 diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 13fffb5bdf..eb112fc50b 100644 --- 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, 20.0], + "layerview_menu_size": [16.5, 17.0], "layerview_legend_size": [1.0, 1.0], "layerview_row": [11.0, 1.5], "layerview_row_spacing": [0.0, 0.5],