Adds layer count

Brings back the layer count, the min & max. And it does not display these untill Cura is done slicing.

Fixes #117
This commit is contained in:
Tamara Hogenhout 2015-07-08 18:01:03 +02:00
parent ef86eb480f
commit 53a94c23e1
5 changed files with 90 additions and 5 deletions

View File

@ -27,9 +27,13 @@ class LayerView(View):
self._max_layers = 10 self._max_layers = 10
self._current_layer_num = 10 self._current_layer_num = 10
self._current_layer_mesh = None self._current_layer_mesh = None
self._activity = False
self._solid_layers = 5 self._solid_layers = 5
def getActivity(self):
return self._activity
def getCurrentLayer(self): def getCurrentLayer(self):
return self._current_layer_num return self._current_layer_num
@ -121,6 +125,7 @@ class LayerView(View):
scene = self.getController().getScene() scene = self.getController().getScene()
renderer = self.getRenderer() renderer = self.getRenderer()
if renderer and self._material: if renderer and self._material:
self._activity = True
renderer.setRenderSelection(False) renderer.setRenderSelection(False)
self._old_max_layers = self._max_layers self._old_max_layers = self._max_layers
## Recalculate num max layers ## Recalculate num max layers
@ -138,6 +143,7 @@ class LayerView(View):
if new_max_layers > 0 and new_max_layers != self._old_max_layers: if new_max_layers > 0 and new_max_layers != self._old_max_layers:
self._max_layers = new_max_layers self._max_layers = new_max_layers
self.maxLayersChanged.emit() self.maxLayersChanged.emit()
self._current_layer_num = self._max_layers
# This makes sure we update the current layer # This makes sure we update the current layer
self.setLayer(int(self._max_layers * (self._current_layer_num / self._old_max_layers))) self.setLayer(int(self._max_layers * (self._current_layer_num / self._old_max_layers)))

View File

@ -18,6 +18,7 @@ Item
width: 10 width: 10
height: 250 height: 250
anchors.right : parent.right anchors.right : parent.right
anchors.rightMargin: UM.Theme.sizes.default_margin.width * 2
orientation: Qt.Vertical orientation: Qt.Vertical
minimumValue: 0; minimumValue: 0;
maximumValue: UM.LayerView.numLayers; maximumValue: UM.LayerView.numLayers;
@ -26,6 +27,6 @@ Item
value: UM.LayerView.currentLayer value: UM.LayerView.currentLayer
onValueChanged: UM.LayerView.setCurrentLayer(value) onValueChanged: UM.LayerView.setCurrentLayer(value)
style: UM.Theme.styles.slider; style: UM.LayerView.getLayerActivity ? UM.Theme.styles.layerViewSlider : UM.Theme.styles.slider
} }
} }

View File

@ -11,6 +11,12 @@ class LayerViewProxy(QObject):
currentLayerChanged = pyqtSignal() currentLayerChanged = pyqtSignal()
maxLayersChanged = 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) @pyqtProperty(int, notify = maxLayersChanged)
def numLayers(self): def numLayers(self):
@ -31,8 +37,12 @@ class LayerViewProxy(QObject):
if type(active_view) == LayerView.LayerView.LayerView: if type(active_view) == LayerView.LayerView.LayerView:
active_view.setLayer(layer_num) active_view.setLayer(layer_num)
def _layerActivityChanged(self):
self.activityChanged.emit()
def _onLayerChanged(self): def _onLayerChanged(self):
self.currentLayerChanged.emit() self.currentLayerChanged.emit()
self._layerActivityChanged()
def _onMaxLayersChanged(self): def _onMaxLayersChanged(self):
self.maxLayersChanged.emit() self.maxLayersChanged.emit()

View File

@ -272,6 +272,7 @@ QtObject {
} }
handle: UM.AngledCornerRectangle { handle: UM.AngledCornerRectangle {
id: scrollViewHandle
implicitWidth: UM.Theme.sizes.scrollbar.width; implicitWidth: UM.Theme.sizes.scrollbar.width;
cornerSize: 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 { property Component text_field: Component {
TextFieldStyle { TextFieldStyle {
textColor: UM.Theme.colors.setting_control_text; textColor: UM.Theme.colors.setting_control_text;

View File

@ -100,6 +100,7 @@
"slider_groove_fill": [160, 163, 171, 255], "slider_groove_fill": [160, 163, 171, 255],
"slider_handle": [12, 169, 227, 255], "slider_handle": [12, 169, 227, 255],
"slider_handle_hover": [34, 150, 190, 255], "slider_handle_hover": [34, 150, 190, 255],
"slider_text_background": [255, 255, 255, 255],
"checkbox": [255, 255, 255, 255], "checkbox": [255, 255, 255, 255],
"checkbox_hover": [245, 245, 245, 255], "checkbox_hover": [245, 245, 245, 255],