chiark / gitweb /
Single layer view
authorpmsimard <pierrem.simard@gmail.com>
Wed, 7 Jan 2015 03:23:22 +0000 (22:23 -0500)
committerpmsimard <pierrem.simard@gmail.com>
Wed, 7 Jan 2015 03:23:22 +0000 (22:23 -0500)
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

Cura/gui/util/engineResultView.py
Cura/gui/util/openglGui.py

index 295f47e1909699c993f8ee441b7bd6ebc17f867e..f5a3f12a4ebfdc8dfadf833495ebd3bb7dbe730f 100644 (file)
@@ -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:
index 37a27ead31796bb3ecd73e7e97a90e1c172a8691..4554b61ba6b387597773599ea6586cc1a6b65f83 100644 (file)
@@ -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