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],