From 53a94c23e17ec711b3723c6b58b17fd651ff573c Mon Sep 17 00:00:00 2001 From: Tamara Hogenhout Date: Wed, 8 Jul 2015 18:01:03 +0200 Subject: [PATCH] Adds layer count Brings back the layer count, the min & max. And it does not display these untill Cura is done slicing. Fixes #117 --- plugins/LayerView/LayerView.py | 12 ++++-- plugins/LayerView/LayerView.qml | 3 +- plugins/LayerView/LayerViewProxy.py | 12 +++++- resources/themes/cura/styles.qml | 67 +++++++++++++++++++++++++++++ resources/themes/cura/theme.json | 1 + 5 files changed, 90 insertions(+), 5 deletions(-) diff --git a/plugins/LayerView/LayerView.py b/plugins/LayerView/LayerView.py index 617dda411a..13e389f247 100644 --- a/plugins/LayerView/LayerView.py +++ b/plugins/LayerView/LayerView.py @@ -27,9 +27,13 @@ class LayerView(View): self._max_layers = 10 self._current_layer_num = 10 self._current_layer_mesh = None + self._activity = False self._solid_layers = 5 + def getActivity(self): + return self._activity + def getCurrentLayer(self): return self._current_layer_num @@ -114,13 +118,14 @@ class LayerView(View): self._current_layer_mesh = None self.currentLayerNumChanged.emit() - + currentLayerNumChanged = Signal() - + def calculateMaxLayers(self): scene = self.getController().getScene() renderer = self.getRenderer() if renderer and self._material: + self._activity = True renderer.setRenderSelection(False) self._old_max_layers = self._max_layers ## Recalculate num max layers @@ -138,10 +143,11 @@ class LayerView(View): if new_max_layers > 0 and new_max_layers != self._old_max_layers: self._max_layers = new_max_layers self.maxLayersChanged.emit() + self._current_layer_num = self._max_layers # This makes sure we update the current layer self.setLayer(int(self._max_layers * (self._current_layer_num / self._old_max_layers))) - + maxLayersChanged = Signal() ## Hackish way to ensure the proxy is already created, which ensures that the layerview.qml is already created diff --git a/plugins/LayerView/LayerView.qml b/plugins/LayerView/LayerView.qml index f1d78d78f9..3f6e0deb37 100644 --- a/plugins/LayerView/LayerView.qml +++ b/plugins/LayerView/LayerView.qml @@ -18,6 +18,7 @@ Item width: 10 height: 250 anchors.right : parent.right + anchors.rightMargin: UM.Theme.sizes.default_margin.width * 2 orientation: Qt.Vertical minimumValue: 0; maximumValue: UM.LayerView.numLayers; @@ -26,6 +27,6 @@ Item value: UM.LayerView.currentLayer onValueChanged: UM.LayerView.setCurrentLayer(value) - style: UM.Theme.styles.slider; + style: UM.LayerView.getLayerActivity ? UM.Theme.styles.layerViewSlider : UM.Theme.styles.slider } } diff --git a/plugins/LayerView/LayerViewProxy.py b/plugins/LayerView/LayerViewProxy.py index b6a266233c..77672d1744 100644 --- a/plugins/LayerView/LayerViewProxy.py +++ b/plugins/LayerView/LayerViewProxy.py @@ -11,7 +11,13 @@ class LayerViewProxy(QObject): currentLayerChanged = pyqtSignal() maxLayersChanged = pyqtSignal() - + activityChanged = pyqtSignal() + + @pyqtProperty(bool, notify = activityChanged) + def getLayerActivity(self): + active_view = self._controller.getActiveView() + return active_view.getActivity() + @pyqtProperty(int, notify = maxLayersChanged) def numLayers(self): active_view = self._controller.getActiveView() @@ -30,9 +36,13 @@ class LayerViewProxy(QObject): active_view = self._controller.getActiveView() if type(active_view) == LayerView.LayerView.LayerView: active_view.setLayer(layer_num) + + def _layerActivityChanged(self): + self.activityChanged.emit() def _onLayerChanged(self): self.currentLayerChanged.emit() + self._layerActivityChanged() def _onMaxLayersChanged(self): self.maxLayersChanged.emit() diff --git a/resources/themes/cura/styles.qml b/resources/themes/cura/styles.qml index dedabd3b96..a46f36009d 100644 --- a/resources/themes/cura/styles.qml +++ b/resources/themes/cura/styles.qml @@ -272,6 +272,7 @@ QtObject { } handle: UM.AngledCornerRectangle { + id: scrollViewHandle implicitWidth: UM.Theme.sizes.scrollbar.width; cornerSize: UM.Theme.sizes.scrollbar.width; @@ -367,6 +368,72 @@ QtObject { } } + property Component layerViewSlider: Component { + SliderStyle { + groove: Rectangle { + id: layerSliderGroove + implicitWidth: control.width; + implicitHeight: UM.Theme.sizes.slider_groove.height; + + color: UM.Theme.colors.slider_groove; + border.width: 1; + border.color: UM.Theme.colors.slider_groove_border; + Rectangle { + anchors { + left: parent.left; + top: parent.top; + bottom: parent.bottom; + } + color: UM.Theme.colors.slider_groove_fill; + width: (control.value / (control.maximumValue - control.minimumValue)) * parent.width; + } + Label { + id: maxValueLabel + text: control.maximumValue + 1 + transformOrigin: Item.BottomLeft + rotation: 90 + x: parent.x + parent.width - maxValueLabel.height + y: parent.y + } + Label { + id: minValueLabel + text: '1' + transformOrigin: Item.BottomLeft + rotation: 90 + x: parent.x + y: parent.y + } + } + handle: Rectangle { + id: layerSliderControl + width: UM.Theme.sizes.slider_handle.width; + height: UM.Theme.sizes.slider_handle.height; + color: control.hovered ? UM.Theme.colors.slider_handle_hover : UM.Theme.colors.slider_handle; + Behavior on color { ColorAnimation { duration: 50; } } + Label { + id: valueLabel + text: control.value + 1 + anchors.bottom: layerSliderControl.bottom + anchors.right: layerSliderControl.left + anchors.bottomMargin: parent.width + UM.Theme.sizes.default_margin.width + transformOrigin: Item.BottomRight + rotation: 90 + Rectangle { + width: (parent.width + UM.Theme.sizes.tooltip_margins.width) < 35 ? 35 : parent.width + UM.Theme.sizes.tooltip_margins.width + height: parent.height + UM.Theme.sizes.tooltip_margins.height + anchors.verticalCenter: parent.verticalCenter + anchors.horizontalCenter: parent.horizontalCenter + z: parent.z - 1 + color: UM.Theme.colors.slider_text_background + border.width: 1 + border.color: UM.Theme.colors.slider_groove_fill; + + } + } + } + } + } + property Component text_field: Component { TextFieldStyle { textColor: UM.Theme.colors.setting_control_text; diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 8cd574b22c..910081e829 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -100,6 +100,7 @@ "slider_groove_fill": [160, 163, 171, 255], "slider_handle": [12, 169, 227, 255], "slider_handle_hover": [34, 150, 190, 255], + "slider_text_background": [255, 255, 255, 255], "checkbox": [255, 255, 255, 255], "checkbox_hover": [245, 245, 245, 255],