chiark / gitweb /
Fix bug in UM2 firmware where the abort print did not home the head. Added option...
authordaid <daid303@gmail.com>
Wed, 18 Dec 2013 13:20:00 +0000 (14:20 +0100)
committerdaid <daid303@gmail.com>
Wed, 18 Dec 2013 13:20:00 +0000 (14:20 +0100)
Cura/gui/newVersionDialog.py
Cura/gui/sceneView.py
Cura/gui/util/openglGui.py
Cura/resources/firmware/MarlinUltimaker2.hex
changelog

index 52aeefa7d7d16f0c96f421c7b1c1a412cc0e3594..0301088fb6fdd4905e02f1ffdd93abec5217c556 100644 (file)
@@ -51,6 +51,7 @@ class newVersionDialog(wx.Dialog):
                        s.Add(wx.StaticLine(p), flag=wx.EXPAND|wx.TOP|wx.BOTTOM, border=10)
                        s.Add(wx.StaticText(p, -1, 'New firmware for your Ultimaker2:'))
                        s.Add(wx.StaticText(p, -1, '* Fixed bug in acceleration planning causing slow moves on rare occasions.'))
+                       s.Add(wx.StaticText(p, -1, '* Fixed the problem where aborting a print did not always home the head.'))
                        s.Add(wx.StaticText(p, -1, '* Disabled normal LCD menu curing USB printing.'))
                        button = wx.Button(p, -1, 'Install now')
                        self.Bind(wx.EVT_BUTTON, self.OnUltimaker2Firmware, button)
index c7ad9c8573819f808575fcee96846a2c1ae011fc..49c4ccc511aab39496a6368f1a2d27edc92e24ac 100644 (file)
@@ -25,6 +25,7 @@ from Cura.util import sliceEngine
 from Cura.util import machineCom
 from Cura.util import removableStorage
 from Cura.util import gcodeInterpreter
+from Cura.util import explorer
 from Cura.util.printerConnection import printerConnectionManager
 from Cura.gui.util import previewTools
 from Cura.gui.util import opengl
@@ -306,13 +307,21 @@ class SceneView(openglGui.glGuiPanel):
                        self.notification.message("Failed to save")
                else:
                        if allowEject:
-                               self.notification.message("Saved as %s" % (fileB), lambda : self.notification.message('You can now eject the card.') if removableStorage.ejectDrive(allowEject) else self.notification.message('Safe remove failed...'))
+                               self.notification.message("Saved as %s" % (fileB), lambda : self._doEjectSD(allowEject), 31, 'Eject')
+                       elif explorer.hasExplorer():
+                               self.notification.message("Saved as %s" % (fileB), lambda : explorer.openExplorer(fileB), 4, 'Open folder')
                        else:
                                self.notification.message("Saved as %s" % (fileB))
                self.printButton.setProgressBar(None)
                if fileA == self._slicer.getGCodeFilename():
                        self._slicer.submitSliceInfoOnline()
 
+       def _doEjectSD(self, drive):
+               if removableStorage.ejectDrive(drive):
+                       self.notification.message('You can now eject the card.')
+               else:
+                       self.notification.message('Safe remove failed...')
+
        def _showSliceLog(self):
                dlg = wx.TextEntryDialog(self, _("The slicing engine reported the following"), _("Engine log..."), '\n'.join(self._slicer.getSliceLog()), wx.TE_MULTILINE | wx.OK | wx.CENTRE)
                dlg.ShowModal()
index bab767e3235ba62e5e1d2846f8d70f05e33df86c..19aa9ecff9cd76b0dba3d6b2ead0cdae09a95175 100644 (file)
@@ -709,7 +709,7 @@ class glNotification(glFrame):
                super(glNotification, self).__init__(parent, pos)
                glGuiLayoutGrid(self)._alignBottom = False
                self._label = glLabel(self, "Notification", (0, 0))
-               self._buttonEject = glButton(self, 31, "Eject", (1, 0), self.onEject, 25)
+               self._buttonExtra = glButton(self, 31, "???", (1, 0), self.onExtraButton, 25)
                self._button = glButton(self, 30, "", (2, 0), self.onClose, 25)
                self._padding = glLabel(self, "", (0, 1))
                self.setHidden(True)
@@ -727,18 +727,20 @@ class glNotification(glFrame):
                self.updateLayout()
                super(glNotification, self).draw()
 
-       def message(self, text, ejectCallback = None):
+       def message(self, text, extraButtonCallback = None, extraButtonIcon = None, extraButtonTooltip = None):
                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._buttonExtra.setHidden(extraButtonCallback is None)
+               self._buttonExtra._imageID = extraButtonIcon
+               self._buttonExtra._tooltip = extraButtonTooltip
+               self._extraButtonCallback = extraButtonCallback
                self._base._queueRefresh()
                self.updateLayout()
 
-       def onEject(self, button):
+       def onExtraButton(self, button):
                self.onClose(button)
-               self._ejectCallback()
+               self._extraButtonCallback()
 
        def onClose(self, button):
                if self._anim is not None:
index f0f0a28d26ce5b5870a094fb89d8ebd48793fe91..8e06295e16fabf74edd32a77350cc48160f95e5c 100644 (file)
 :100990006E672066696C652E006F6B004D32390002\r
 :1009A0002020506C616E6E6572427566666572429B\r
 :1009B000797465733A20002046726565204D656D37\r
-:1009C0006F72793A2000446563203136203230312D\r
+:1009C0006F72793A2000446563203138203230312B\r
 :1009D0003300436F6D70696C65643A200056657230\r
 :1009E00073696F6E2031332E313200207C204175C7\r
-:1009F00074686F723A2000446563203136203230CB\r
-:100A000031332031353A30373A353500204C617377\r
+:1009F00074686F723A2000446563203138203230C9\r
+:100A000031332031333A35333A353600204C617377\r
 :100A10007420557064617465643A2000312E302E64\r
 :100A200030004D61726C696E200020536F667477E0\r
 :100A30006172652052657365740020576174636844\r
 :1028B00000746F2064656661756C743F00526573C7\r
 :1028C00065742065766572797468696E67004E4F2D\r
 :1028D000005945530056657273696F6E2031332E6F\r
-:1028E00031320044656320313620323031332031BB\r
-:1028F000353A30383A30300052657475726E006D7A\r
+:1028E00031320044656320313820323031332031B9\r
+:1028F000333A35343A30310052657475726E006D7A\r
 :102900006D2F736563004D61782073706565642079\r
 :102910005A006D6D2F736563004D6178207370658B\r
 :1029200065642059006D6D2F736563004D617820DB\r
 :104080008F5F1817E0F760587F4F6A177B0719F0AA\r
 :10409000FB01852FF6CF842F90E080959095877057\r
 :1040A00090702FEF30E002C0359527958A95E2F7A2\r
-:1040B000FB01952F209504C08081822381939F5F0F\r
+:1040B000952FFB01209504C08081822381939F5F0F\r
 :1040C0001917D0F7DF91CF911F910895FF920F93A9\r
 :1040D0001F93182FF42E022F282F30E0862F86955D\r
 :1040E00086958695E82FF0E0F695FE2FEE27F7955A\r
index 34f2c1904706e0c1bc76dce91eb7d167647f8f00..6e5f0c8199d06b871d1305bee3ac8817a669e0f0 100644 (file)
--- a/changelog
+++ b/changelog
@@ -6,6 +6,7 @@ Development
 * Fixed problem with retractions not happening when they should.
 
 Ultimaker2 - Firmware update - 13.12
+* Fixed the problem where aborting a print did not always home the head.
 * Fixed bug in acceleration planning causing slow moves on rare occasions.
 * Disable the normal menus during USB printing, and support for USB based menus.
 * Expert feature: Support M907 for setting the motor current.