From b7b212ed152dfd199d56e543247b7a6a38175113 Mon Sep 17 00:00:00 2001 From: daid303 Date: Wed, 1 May 2013 14:04:10 +0200 Subject: [PATCH] You can now safely remove the SD card from within Cura. --- Cura/gui/sceneView.py | 2 +- Cura/gui/util/openglGui.py | 15 ++++++++++++--- Cura/resources/images/glButtons.png | Bin 76470 -> 77531 bytes 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Cura/gui/sceneView.py b/Cura/gui/sceneView.py index 6dc2f3f4..72ed1b03 100644 --- a/Cura/gui/sceneView.py +++ b/Cura/gui/sceneView.py @@ -160,7 +160,7 @@ class SceneView(openglGui.glGuiPanel): except: self.notification.message("Failed to save to SD card") else: - self.notification.message("Saved as %s" % (drive[1] + filename)) + self.notification.message("Saved as %s" % (drive[1] + filename), lambda : self.notification.message('You can now eject the card.') if removableStorage.ejectDrive(drive[1]) else self.notification.message('Safe remove failed...')) else: self.showSaveGCode() if button == 3: diff --git a/Cura/gui/util/openglGui.py b/Cura/gui/util/openglGui.py index adbbf001..3eac071c 100644 --- a/Cura/gui/util/openglGui.py +++ b/Cura/gui/util/openglGui.py @@ -380,6 +380,7 @@ class glGuiLayoutGrid(object): class glButton(glGuiControl): def __init__(self, parent, imageID, tooltip, pos, callback, size = None): self._buttonSize = size + self._hidden = False super(glButton, self).__init__(parent, pos) self._tooltip = tooltip self._parent = parent @@ -387,7 +388,6 @@ class glButton(glGuiControl): self._callback = callback self._selected = False self._focus = False - self._hidden = False self._disabled = False self._showExpandArrow = False self._progressBar = None @@ -415,6 +415,8 @@ class glButton(glGuiControl): return self._selected def getMinSize(self): + if self._hidden: + return 0, 0 if self._buttonSize is not None: return self._buttonSize, self._buttonSize return self._base._buttonSize, self._base._buttonSize @@ -681,7 +683,8 @@ class glNotification(glFrame): super(glNotification, self).__init__(parent, pos) glGuiLayoutGrid(self)._alignBottom = False self._label = glLabel(self, "Notification", (0, 0)) - self._button = glButton(self, 30, "", (1, 0), self.onClose, 25) + self._buttonEject = glButton(self, 31, "Eject", (1, 0), self.onEject, 25) + self._button = glButton(self, 30, "", (2, 0), self.onClose, 25) self._padding = glLabel(self, "", (0, 1)) self.setHidden(True) @@ -698,15 +701,21 @@ class glNotification(glFrame): self.updateLayout() super(glNotification, self).draw() - def message(self, text): + def message(self, text, ejectCallback = None): if self._anim is not None: self._anim = animation(self._base, self._anim.getPosition(), 25, 1) else: self._anim = animation(self._base, -20, 25, 1) self.setHidden(False) self._label.setLabel(text) + self._buttonEject.setHidden(ejectCallback is None) + self._ejectCallback = ejectCallback self.updateLayout() + def onEject(self, button): + self.onClose(button) + self._ejectCallback() + def onClose(self, button): if self._anim is not None: self._anim = animation(self._base, self._anim.getPosition(), -20, 1) diff --git a/Cura/resources/images/glButtons.png b/Cura/resources/images/glButtons.png index ab0b930d606c3985385619e69ff495a9fbe7f12c..2b91dda57bbad3a9a0742cc6e803c6a4e7fa9d78 100644 GIT binary patch literal 77531 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