From: pmsimard Date: Wed, 7 Jan 2015 03:23:22 +0000 (-0500) Subject: Single layer view X-Git-Tag: 15.01-RC8~15^2^2 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=0fc81665a174d94d828d594fef31d1f8b6aa591a;p=cura.git Single layer view Moving it out of the view mode this is now a toggle once in layer view. Adding support for buttons size to stay a portion of the size of the base button size --- diff --git a/Cura/gui/util/engineResultView.py b/Cura/gui/util/engineResultView.py index 295f47e1..f5a3f12a 100644 --- a/Cura/gui/util/engineResultView.py +++ b/Cura/gui/util/engineResultView.py @@ -19,12 +19,14 @@ class engineResultView(object): self._parent = parent self._result = None self._enabled = False + self._singleLayer = False self._gcodeLoadProgress = 0 self._resultLock = threading.Lock() self._layerVBOs = [] self._layer20VBOs = [] self.layerSelect = openglGui.glSlider(self._parent, 10000, 0, 1, (-1,-2), lambda : self._parent.QueueRefresh()) + self.singleLayerToggle = openglGui.glButton(self._parent, 23, _("Single Layer"), (-1,-1.5), self.OnSingleLayerToggle, 0.5) #stay half size of the base size def setResult(self, result): if self._result == result: @@ -46,9 +48,19 @@ class engineResultView(object): self._layer20VBOs = [] self._resultLock.release() + def OnSingleLayerToggle(self, button): + self._singleLayer = not self._singleLayer + if self._singleLayer: + self.singleLayerToggle._tooltip = "Multi Layer" + else: + self.singleLayerToggle._tooltip = "Single Layer" + def setEnabled(self, enabled): self._enabled = enabled + self._singleLayer = False self.layerSelect.setHidden(not enabled) + self.singleLayerToggle.setHidden(not enabled) + def _gcodeLoadCallback(self, result, progress): if result != self._result: @@ -124,8 +136,10 @@ class engineResultView(object): polygons += result._polygons[n + i][typeName] layerVBOs[typeName] = self._polygonsToVBO_lines(polygons) generatedVBO = True - glColor4f(color[0]*0.5,color[1]*0.5,color[2]*0.5,color[3]) - layerVBOs[typeName].render() + + if not self._singleLayer or n == layerNr - 1: + glColor4f(color[0]*0.5,color[1]*0.5,color[2]*0.5,color[3]) + layerVBOs[typeName].render() n -= 20 else: c = 1.0 - ((layerNr - n) - 1) * 0.05 @@ -139,8 +153,10 @@ class engineResultView(object): continue if 'GCODE-' + typeName not in layerVBOs: layerVBOs['GCODE-' + typeName] = self._gcodeToVBO_quads(gcodeLayers[n+1:n+2], typeName) - glColor4f(color[0]*c,color[1]*c,color[2]*c,color[3]) - layerVBOs['GCODE-' + typeName].render() + + if not self._singleLayer or n == layerNr - 1: + glColor4f(color[0]*c,color[1]*c,color[2]*c,color[3]) + layerVBOs['GCODE-' + typeName].render() if n == layerNr - 1: if 'GCODE-MOVE' not in layerVBOs: @@ -153,8 +169,10 @@ class engineResultView(object): if typeName in polygons: if typeName not in layerVBOs: layerVBOs[typeName] = self._polygonsToVBO_lines(polygons[typeName]) - glColor4f(color[0]*c,color[1]*c,color[2]*c,color[3]) - layerVBOs[typeName].render() + + if not self._singleLayer or n == layerNr - 1: + glColor4f(color[0]*c,color[1]*c,color[2]*c,color[3]) + layerVBOs[typeName].render() n -= 1 glPopMatrix() if generatedVBO: diff --git a/Cura/gui/util/openglGui.py b/Cura/gui/util/openglGui.py index 37a27ead..4554b61b 100644 --- a/Cura/gui/util/openglGui.py +++ b/Cura/gui/util/openglGui.py @@ -441,6 +441,9 @@ class glButton(glGuiControl): if self._hidden: return 0, 0 if self._buttonSize is not None: + if self._buttonSize > 0 and self._buttonSize < 1: + return self._base._buttonSize * self._buttonSize, self._base._buttonSize * self._buttonSize + return self._buttonSize, self._buttonSize return self._base._buttonSize, self._base._buttonSize