WIP second slider LayerView

This commit is contained in:
Jack Ha 2017-01-02 09:20:27 +01:00
parent e3d77de6df
commit 73a8859b0e
4 changed files with 51 additions and 1 deletions

View file

@ -81,6 +81,8 @@ class LayerPass(RenderPass):
for layer, counts in element_counts.items(): for layer, counts in element_counts.items():
if layer > self._layer_view._current_layer_num: if layer > self._layer_view._current_layer_num:
break break
if self._layer_view._minimum_layer_num > layer:
start += counts
end += counts end += counts
# This uses glDrawRangeElements internally to only draw a certain range of lines. # This uses glDrawRangeElements internally to only draw a certain range of lines.

View file

@ -41,6 +41,7 @@ class LayerView(View):
self._max_layers = 0 self._max_layers = 0
self._current_layer_num = 0 self._current_layer_num = 0
self._minimum_layer_num = 0
self._current_layer_mesh = None self._current_layer_mesh = None
self._current_layer_jumps = None self._current_layer_jumps = None
self._top_layers_job = None self._top_layers_job = None
@ -94,6 +95,9 @@ class LayerView(View):
def getCurrentLayer(self): def getCurrentLayer(self):
return self._current_layer_num return self._current_layer_num
def getMinimumLayer(self):
return self._minimum_layer_num
def _onSceneChanged(self, node): def _onSceneChanged(self, node):
self.calculateMaxLayers() self.calculateMaxLayers()
@ -144,6 +148,18 @@ class LayerView(View):
self.currentLayerNumChanged.emit() self.currentLayerNumChanged.emit()
def setMinimumLayer(self, value):
if self._minimum_layer_num != value:
self._minimum_layer_num = value
if self._minimum_layer_num < 0:
self._minimum_layer_num = 0
if self._minimum_layer_num > self._current_layer_num:
self._minimum_layer_num = self._current_layer_num
self._startUpdateTopLayers()
self.currentLayerNumChanged.emit()
def setLayerViewType(self, layer_view_type): def setLayerViewType(self, layer_view_type):
self._layer_view_type = layer_view_type self._layer_view_type = layer_view_type
self.currentLayerNumChanged.emit() self.currentLayerNumChanged.emit()

View file

@ -13,13 +13,33 @@ Item
width: UM.Theme.getSize("button").width width: UM.Theme.getSize("button").width
height: UM.Theme.getSize("slider_layerview_size").height height: UM.Theme.getSize("slider_layerview_size").height
Slider
{
id: slider2
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;
stepSize: 1
property real pixelsPerStep: ((height - UM.Theme.getSize("slider_handle").height) / (maximumValue - minimumValue)) * stepSize;
value: UM.LayerView.minimumLayer
onValueChanged: UM.LayerView.setMinimumLayer(value)
style: UM.Theme.styles.slider;
}
Slider Slider
{ {
id: slider id: slider
width: UM.Theme.getSize("slider_layerview_size").width width: UM.Theme.getSize("slider_layerview_size").width
height: UM.Theme.getSize("slider_layerview_size").height height: UM.Theme.getSize("slider_layerview_size").height
anchors.left: parent.left anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width/2 anchors.leftMargin: UM.Theme.getSize("slider_layerview_margin").width * 0.8
orientation: Qt.Vertical orientation: Qt.Vertical
minimumValue: 0; minimumValue: 0;
maximumValue: UM.LayerView.numLayers; maximumValue: UM.LayerView.numLayers;

View file

@ -35,6 +35,12 @@ class LayerViewProxy(QObject):
if type(active_view) == LayerView.LayerView.LayerView: if type(active_view) == LayerView.LayerView.LayerView:
return active_view.getCurrentLayer() return active_view.getCurrentLayer()
@pyqtProperty(int, notify = currentLayerChanged)
def minimumLayer(self):
active_view = self._controller.getActiveView()
if type(active_view) == LayerView.LayerView.LayerView:
return active_view.getMinimumLayer()
busyChanged = pyqtSignal() busyChanged = pyqtSignal()
@pyqtProperty(bool, notify = busyChanged) @pyqtProperty(bool, notify = busyChanged)
def busy(self): def busy(self):
@ -50,6 +56,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)
@pyqtSlot(int)
def setMinimumLayer(self, layer_num):
active_view = self._controller.getActiveView()
if type(active_view) == LayerView.LayerView.LayerView:
active_view.setMinimumLayer(layer_num)
@pyqtSlot(int) @pyqtSlot(int)
def setLayerViewType(self, layer_view_type): def setLayerViewType(self, layer_view_type):
active_view = self._controller.getActiveView() active_view = self._controller.getActiveView()