chiark / gitweb /
Initial fakeouts for Mangrove
[cura.git] / Cura / gui / firmwareInstall.py
index e825568f6b163bc6223b26e3fbdb466d46628580..722a293be798b78fd98f04d7eb1d443eba229d7c 100644 (file)
@@ -25,9 +25,9 @@ def getDefaultFirmware(machineIndex = None):
                        'lulzbot_TAZ_4_SingleV1': "Taz4-5-Single-or-Flexystruder-Budaschnozzle-2014Q3.hex",
                        'lulzbot_TAZ_5_SingleV1': "Taz4-5-Single-or-Flexystruder-Budaschnozzle-2014Q3.hex",
                        'lulzbot_TAZ_4_05nozzle': "Taz4-Single-Extruder-LBHexagon-2015Q3.hex",
-                       'lulzbot_TAZ_5_05nozzle': "Taz5-Single-Extruder-LBHexagon-2015Q2.hex",
+                       'lulzbot_TAZ_5_05nozzle': "Taz5-Single-Extruder-LBHexagon-2015Q3.hex",
                        'lulzbot_TAZ_4_035nozzle': "Taz4-Single-Extruder-LBHexagon-2015Q3.hex",
-                       'lulzbot_TAZ_5_035nozzle': "Taz5-Single-Extruder-LBHexagon-2015Q2.hex",
+                       'lulzbot_TAZ_5_035nozzle': "Taz5-Single-Extruder-LBHexagon-2015Q3.hex",
                        'lulzbot_TAZ_4_FlexystruderV1': "Taz4-5-Single-or-Flexystruder-Budaschnozzle-2014Q3.hex",
                        'lulzbot_TAZ_5_FlexystruderV1': "Taz4-5-Single-or-Flexystruder-Budaschnozzle-2014Q3.hex",
                        'lulzbot_TAZ_4_FlexystruderV2': "Taz4-5-Flexystruder-LBHexagon-2015Q3.hex",
@@ -39,7 +39,8 @@ def getDefaultFirmware(machineIndex = None):
                        'lulzbot_TAZ_4_FlexyDuallyV1': "Taz4-5-Dual-or-FlexyDually-Budaschnozzle-2015Q1.hex",
                        'lulzbot_TAZ_5_FlexyDuallyV1': "Taz4-5-Dual-or-FlexyDually-Budaschnozzle-2015Q1.hex",
                        'lulzbot_TAZ_4_FlexyDuallyV2': "Taz4-5-FlexyDually-LBHexagon-2015Q3.hex",
-                       'lulzbot_TAZ_5_FlexyDuallyV2': "Taz4-5-FlexyDually-LBHexagon-2015Q3.hex"
+                       'lulzbot_TAZ_5_FlexyDuallyV2': "Taz4-5-FlexyDually-LBHexagon-2015Q3.hex",
+                       'lulzbot_TAZ_6_SingleTilapia': "Taz6-Single-Tilapia-2015-Q4.hex"
        }
        machine_type = profile.getMachineSetting('machine_type', machineIndex)
        extruders = profile.getMachineSettingFloat('extruder_amount', machineIndex)
@@ -94,10 +95,6 @@ class InstallFirmwareDialog(wx.Dialog):
                        port = profile.getMachineSetting('serial_port')
                if filename is None:
                        filename = getDefaultFirmware(machineIndex)
-               if filename is None:
-                       wx.MessageBox(_("I am sorry, but Cura does not ship with a default firmware for your machine configuration."), _("Firmware update"), wx.OK | wx.ICON_ERROR)
-                       self.Destroy()
-                       return
                self._machine_type = profile.getMachineSetting('machine_type', machineIndex)
                if self._machine_type == 'reprap':
                        wx.MessageBox(_("Cura only supports firmware updates for ATMega2560 based hardware.\nSo updating your RepRap with Cura might or might not work."), _("Firmware update"), wx.OK | wx.ICON_INFORMATION)
@@ -120,14 +117,23 @@ class InstallFirmwareDialog(wx.Dialog):
                self.Layout()
                self.Fit()
                self.success = False
+               self.show_connect_dialog = False
 
        def Run(self):
+               if self.filename is None:
+                       wx.MessageBox(_("I am sorry, but Cura does not ship with a default firmware for your machine configuration."), _("Firmware update"), wx.OK | wx.ICON_ERROR)
+                       return False
                self.success = False
                self.thread = threading.Thread(target=self.OnRun)
                self.thread.daemon = True
                self.thread.start()
 
                self.ShowModal()
+               # Creating a MessageBox in a separate thread while main thread is locked inside a ShowModal
+               # will cause Python to crash with X errors. So we need to show the dialog here instead
+               if self.show_connect_dialog:
+                       wx.MessageBox(_("Failed to find machine for firmware upgrade\nIs your machine connected to the PC?"),
+                                                 _("Firmware update"), wx.OK | wx.ICON_ERROR)
                return self.success
 
        def OnRun(self):
@@ -137,7 +143,7 @@ class InstallFirmwareDialog(wx.Dialog):
                programmer = stk500v2.Stk500v2()
                programmer.progressCallback = self.OnProgress
                if self.port == 'AUTO':
-                       wx.CallAfter(self.updateLabel, _("Please connect the printer to\nyour computer with the USB cable."))
+                       wx.CallAfter(self.updateLabel, _("Please connect the printer to your\ncomputer with a USB cable and power it on."))
                        while not programmer.isConnected():
                                for self.port in machineCom.serialList(True):
                                        try:
@@ -154,10 +160,12 @@ class InstallFirmwareDialog(wx.Dialog):
                                programmer.connect(self.port)
                        except ispBase.IspError:
                                programmer.close()
+                       if not self:
+                               #Window destroyed
+                               return
 
                if not programmer.isConnected():
-                       wx.MessageBox(_("Failed to find machine for firmware upgrade\nIs your machine connected to the PC?"),
-                                                 _("Firmware update"), wx.OK | wx.ICON_ERROR)
+                       self.show_connect_dialog = True
                        wx.CallAfter(self.Close)
                        return
 
@@ -187,7 +195,7 @@ class InstallFirmwareDialog(wx.Dialog):
 
        def updateLabel(self, text):
                self.progressLabel.SetLabel(text)
-               #self.Layout()
+               self.Layout()
 
        def OnProgress(self, value, max):
                if self:
@@ -306,7 +314,7 @@ class AutoUpdateFirmware(wx.Dialog):
                programmer = stk500v2.Stk500v2()
                programmer.progressCallback = self.OnProgress
                if self.port == 'AUTO':
-                       wx.CallAfter(self.updateLabel, _("Please connect the printer to\nyour computer with the USB cable."))
+                       wx.CallAfter(self.updateLabel, _("Please connect the printer to your\ncomputer with a USB cable and power it on."))
                        while not programmer.isConnected():
                                for self.port in machineCom.serialList(True):
                                        try:
@@ -340,7 +348,7 @@ class AutoUpdateFirmware(wx.Dialog):
 
        def updateLabel(self, text):
                self.progressLabel.SetLabel(text)
-               #self.Layout()
+               self.Layout()
 
        def OnProgress(self, value, max):
                wx.CallAfter(self.progressGauge.SetRange, max)