chiark / gitweb /
Initial fakeouts for Mangrove
[cura.git] / Cura / gui / configWizard.py
index 6ec668c5ff40138c2e438c08fb170dde07776211..b5d8fa92f5f3d1300186eb7df39162fd53b49e09 100644 (file)
@@ -156,6 +156,16 @@ class ImageButton(wx.Panel):
                                if ImageButton.__last_group__ == self:
                                        ImageButton.__last_group__ = None
 
+       def TriggerGroupCallbacks(self):
+               if self.group:
+                       for ib in ImageButton.__groups__[self.group]:
+                               if ib.GetValue() and ib.callback:
+                                       ib.callback()
+                                       break
+               else:
+                       if self.GetValue() and self.callback:
+                               self.callback()
+
        def OnLeftClick(self, e):
                self.SetValue(True)
 
@@ -1095,8 +1105,6 @@ class LulzbotMachineSelectPage(InfoPage):
 
        def __init__(self, parent):
                super(LulzbotMachineSelectPage, self).__init__(parent, _("Select your machine"))
-               self.AddBitmap(wx.Bitmap(resources.getPathForImage('Lulzbot_logo.png')))
-               self.AddText(_("Select your printer :"))
 
                self.panel = self.AddPanel()
 
@@ -1104,16 +1112,22 @@ class LulzbotMachineSelectPage(InfoPage):
                self.LulzbotMini = self.AddImageButton(self.panel, 0, 0, _("LulzBot Mini"),
                                                                                           'Lulzbot_mini.jpg', image_size, style=ImageButton.IB_GROUP)
                self.LulzbotMini.OnSelected(self.OnLulzbotMiniSelected)
-               self.LulzbotMini.SetValue(True)
-               self.LulzbotTaz5 = self.AddImageButton(self.panel, 0, 1, _("LulzBot TAZ 5"),
+               
+               self.LulzbotTaz6 = self.AddImageButton(self.panel, 0, 1, _("LulzBot TAZ 6"),
+                                                                                          'Lulzbot_TAZ6.jpg', image_size)
+               self.LulzbotTaz6.OnSelected(self.OnLulzbotTaz6Selected)
+               
+               self.LulzbotTaz = self.AddImageButton(self.panel, 1, 0, _("LulzBot TAZ 4 or 5"),
                                                                                           'Lulzbot_TAZ5.jpg', image_size)
-               self.LulzbotTaz5.OnSelected(self.OnLulzbotTazSelected)
-               self.LulzbotTaz4 = self.AddImageButton(self.panel, 1, 0, _("LulzBot TAZ 4"),
-                                                                                          'Lulzbot_TAZ4.jpg', image_size)
-               self.LulzbotTaz4.OnSelected(self.OnLulzbotTazSelected)
+               self.LulzbotTaz.OnSelected(self.OnLulzbotTazSelected)
+               
                self.OtherPrinters = self.AddImageButton(self.panel, 1, 1, _("Other Printers"),
                                                                                                 'Generic-3D-Printer.png', image_size)
                self.OtherPrinters.OnSelected(self.OnOthersSelected)
+               self.LulzbotMini.SetValue(True)
+
+       def OnPageShown(self):
+               self.LulzbotMini.TriggerGroupCallbacks()
 
        def OnOthersSelected(self):
                wx.wizard.WizardPageSimple.Chain(self, self.GetParent().machineSelectPage)
@@ -1121,10 +1135,13 @@ class LulzbotMachineSelectPage(InfoPage):
        def OnLulzbotMiniSelected(self):
                wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotMiniToolheadPage)
                wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotMiniToolheadPage,
-                                                                                self.GetParent().lulzbotFirmwarePage)
+                                                                                self.GetParent().lulzbotReadyPage)
+
+       def OnLulzbotTaz6Selected(self):
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTaz6SelectPage)
 
        def OnLulzbotTazSelected(self):
-               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTazHotendPage)
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTazSelectPage)
 
        def AllowNext(self):
                return True
@@ -1133,27 +1150,19 @@ class LulzbotMachineSelectPage(InfoPage):
                return False
 
        def StoreData(self):
-               if self.LulzbotTaz4.GetValue() or self.LulzbotTaz5.GetValue() or self.LulzbotMini.GetValue():
-                       if self.LulzbotTaz4.GetValue():
-                               # Nozzle size will be set in the toolhead selection page
-                               # We set the machine_type here so later pages can differenciate between TAZ 4 and 5
-                               profile.putMachineSetting('machine_width', '290')
-                               profile.putMachineSetting('machine_depth', '275')
-                               profile.putMachineSetting('machine_height', '250')
-                               profile.putMachineSetting('machine_type', 'lulzbot_TAZ_4')
-                               profile.putMachineSetting('machine_name', 'LulzBot TAZ 4')
-                               profile.putMachineSetting('serial_baud', '115200')
-                       elif self.LulzbotTaz5.GetValue():
-                               # Nozzle size will be set in the toolhead selection page
-                               # We set the machine_type here so later pages can differenciate between TAZ 4 and 5
-                               profile.putMachineSetting('machine_type', 'lulzbot_TAZ_5')
-                               profile.putMachineSetting('machine_name', 'LulzBot TAZ 5')
+               if self.LulzbotTaz.GetValue() or self.LulzbotMini.GetValue():
+                       if self.LulzbotTaz.GetValue():
                                profile.putMachineSetting('machine_width', '290')
                                profile.putMachineSetting('machine_depth', '275')
                                profile.putMachineSetting('machine_height', '250')
                                profile.putMachineSetting('serial_baud', '115200')
+                               profile.putMachineSetting('extruder_head_size_min_x', '0.0')
+                               profile.putMachineSetting('extruder_head_size_max_x', '0.0')
+                               profile.putMachineSetting('extruder_head_size_min_y', '0.0')
+                               profile.putMachineSetting('extruder_head_size_max_y', '0.0')
+                               profile.putMachineSetting('extruder_head_size_height', '0.0')
                        else:
-                               # Nozzle size and machine type will be set in the toolhead selection page
+                               # Nozzle diameter and machine type will be set in the toolhead selection page
                                profile.putMachineSetting('machine_name', 'LulzBot Mini')
                                profile.putMachineSetting('machine_width', '155')
                                profile.putMachineSetting('machine_depth', '155')
@@ -1168,11 +1177,6 @@ class LulzbotMachineSelectPage(InfoPage):
                        profile.putMachineSetting('machine_center_is_zero', 'False')
                        profile.putMachineSetting('gcode_flavor', 'RepRap (Marlin/Sprinter)')
                        profile.putMachineSetting('has_heated_bed', 'True')
-                       profile.putMachineSetting('extruder_head_size_min_x', '0.0')
-                       profile.putMachineSetting('extruder_head_size_min_y', '0.0')
-                       profile.putMachineSetting('extruder_head_size_max_x', '0.0')
-                       profile.putMachineSetting('extruder_head_size_max_y', '0.0')
-                       profile.putMachineSetting('extruder_head_size_height', '0.0')
                        profile.putProfileSetting('retraction_enable', 'True')
                        profile.putPreference('startMode', 'Simple')
                        profile.putProfileSetting('wall_thickness', float(profile.getProfileSetting('nozzle_size')) * 2)
@@ -1181,33 +1185,23 @@ class LulzbotMachineSelectPage(InfoPage):
 class LulzbotReadyPage(InfoPage):
        def __init__(self, parent):
                super(LulzbotReadyPage, self).__init__(parent, _("LulzBot TAZ/Mini"))
-               self.AddBitmap(wx.Bitmap(resources.getPathForImage('Lulzbot_logo.png')))
                self.AddText(_('Cura is now ready to be used with your LulzBot 3D printer.'))
                self.AddSeperator()
                self.AddText(_('For more information about using Cura with your LulzBot'))
                self.AddText(_('3D printer, please visit www.LulzBot.com/cura'))
                self.AddSeperator()
 
-class LulzbotToolheadSelectPage(InfoPage):
-       def __init__(self, parent, title):
-               super(LulzbotToolheadSelectPage, self).__init__(parent, title)
-               self.AddBitmap(wx.Bitmap(resources.getPathForImage('Lulzbot_logo.png')))
-               self.AddText(_('Please select your currently installed Tool Head'))
-               txt = self.AddText(_('WARNING: Carefully select the right Tool Head.\nFlashing the firmware with the wrong Tool Head can damage your LulzBot printer.'))
-               txt.SetForegroundColour(wx.RED)
-               self.AddSeperator()
-
-class LulzbotMiniToolheadSelectPage(LulzbotToolheadSelectPage):
+class LulzbotMiniToolheadSelectPage(InfoPage):
        def __init__(self, parent, allowBack = True):
-               super(LulzbotMiniToolheadSelectPage, self).__init__(parent, _("LulzBot Mini Toolhead Selection"))
+               super(LulzbotMiniToolheadSelectPage, self).__init__(parent, _("LulzBot Mini Tool Head Selection"))
 
                self.allowBack = allowBack
                self.panel = self.AddPanel()
                image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
-               self.standard = self.AddImageButton(self.panel, 0, 0, _('Single Extruder v2'),
-                                                                                       'Lulzbot_Toolhead_Mini_Standard.jpg', image_size,
+               self.standard = self.AddImageButton(self.panel, 0, 0, _('Standard LulzBot Mini'),
+                                                                                       'Lulzbot_mini.jpg', image_size,
                                                                                        style=ImageButton.IB_GROUP)
-               self.flexy = self.AddImageButton(self.panel, 0, 1, _('Flexystruder v2'),
+               self.flexy = self.AddImageButton(self.panel, 0, 1, _('LulzBot Mini with Flexystruder'),
                                                                                        'Lulzbot_Toolhead_Mini_Flexystruder.jpg', image_size)
                self.standard.SetValue(True)
 
@@ -1218,20 +1212,117 @@ class LulzbotMiniToolheadSelectPage(LulzbotToolheadSelectPage):
                if self.standard.GetValue():
                        profile.putProfileSetting('nozzle_size', '0.5')
                        profile.putMachineSetting('extruder_amount', '1')
-                       profile.putMachineSetting('toolhead', 'Single Extruder V2')
+                       profile.putMachineSetting('toolhead', 'Single Extruder v2')
                        profile.putMachineSetting('toolhead_shortname', '')
                        profile.putMachineSetting('machine_type', 'lulzbot_mini')
                else:
                        profile.putProfileSetting('nozzle_size', '0.6')
                        profile.putMachineSetting('extruder_amount', '1')
-                       profile.putMachineSetting('toolhead', 'Flexystruder V2')
+                       profile.putMachineSetting('toolhead', 'Flexystruder v2')
                        profile.putMachineSetting('toolhead_shortname', 'Flexystruder')
                        profile.putMachineSetting('machine_type', 'lulzbot_mini_flexystruder')
 
+class LulzbotTaz6SelectPage(InfoPage):
+       def __init__(self, parent):
+               super(LulzbotTaz6SelectPage, self).__init__(parent, _("LulzBot TAZ 6 Selection"))
+
+               self.panel = self.AddPanel()
+               image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
+               self.taz6 = self.AddImageButton(self.panel, 0, 0, _('Tilapia'),
+                                                                               'Lulzbot_Toolhead_TAZ_Tilapia.jpg', image_size,
+                                                                               style=ImageButton.IB_GROUP)
+               self.taz6.OnSelected(self.OnTilapiaSelected)
+               self.taz6.SetValue(True)
+
+       def OnPageShown(self):
+               self.taz6.TriggerGroupCallbacks()
 
-class LulzbotTazToolheadSelectPage(LulzbotToolheadSelectPage):
+       def OnTilapiaSelected(self):
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotReadyPage)
+
+       def StoreData(self):
+               profile.putProfileSetting('nozzle_size',  '0.5')
+               profile.putMachineSetting('extruder_amount', '1')
+               profile.putMachineSetting('toolhead', 'Single Extruder Tilapia')
+               profile.putMachineSetting('toolhead_shortname', 'Tilapia')
+               profile.putMachineSetting('machine_type', 'lulzbot_TAZ_6_Single_Tilapia')
+               profile.putMachineSetting('machine_name', 'LulzBot TAZ 6')
+
+class LulzbotTazSelectPage(InfoPage):
        def __init__(self, parent):
-               super(LulzbotTazToolheadSelectPage, self).__init__(parent, _("LulzBot TAZ Toolhead Selection"))
+               super(LulzbotTazSelectPage, self).__init__(parent, _("LulzBot TAZ 4-5 Selection"))
+
+               self.panel = self.AddPanel()
+               image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
+               self.taz5 = self.AddImageButton(self.panel, 0, 0, _('Stock TAZ 5 (PEI && v2)'),
+                                                                               'Lulzbot_TAZ_5_Hex_and_PEI.jpg', image_size,
+                                                                               style=ImageButton.IB_GROUP)
+               self.taz5.OnSelected(self.OnTaz5Selected)
+               self.taz4 = self.AddImageButton(self.panel, 0, 1, _('Stock TAZ 4 (PET && v1)'),
+                                                                               'Lulzbot_TAZ_4_Buda_and_PET.jpg', image_size)
+               self.taz4.OnSelected(self.OnTaz4Selected)
+               self.modified = self.AddImageButton(self.panel, 1, 0, _('Modified LulzBot TAZ 4 or 5'),
+                                                                                       'Lulzbot_TAZ5.jpg', image_size)
+               self.modified.OnSelected(self.OnModifiedSelected)
+               self.taz5.SetValue(True)
+
+       def OnPageShown(self):
+               self.taz5.TriggerGroupCallbacks()
+
+       def OnTaz5Selected(self):
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTaz5NozzleSelectPage)
+               wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotTaz5NozzleSelectPage,
+                                                                                self.GetParent().lulzbotReadyPage)
+
+       def OnTaz4Selected(self):
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotReadyPage)
+
+       def OnModifiedSelected(self):
+               wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTazBedSelectPage)
+               wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotTazBedSelectPage,
+                                                                                self.GetParent().lulzbotTazHotendPage)
+
+       def StoreData(self):
+               if self.taz5.GetValue():
+                       profile.putProfileSetting('nozzle_size',  '0.5')
+                       profile.putMachineSetting('extruder_amount', '1')
+                       profile.putMachineSetting('toolhead', 'Single Extruder V2')
+                       profile.putMachineSetting('toolhead_shortname', '')
+                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_5_SingleV2')
+                       profile.putMachineSetting('machine_name', 'LulzBot TAZ 5')
+               elif self.taz4.GetValue():
+                       profile.putProfileSetting('nozzle_size', '0.35')
+                       profile.putMachineSetting('extruder_amount', '1')
+                       profile.putMachineSetting('toolhead', 'Single Extruder V1')
+                       profile.putMachineSetting('toolhead_shortname', '')
+                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_4_SingleV1')
+                       profile.putMachineSetting('machine_name', 'LulzBot TAZ 4')
+
+class LulzbotTazBedSelectPage(InfoPage):
+       def __init__(self, parent):
+               super(LulzbotTazBedSelectPage, self).__init__(parent, _("Bed Surface"))
+
+               self.panel = self.AddPanel()
+               image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
+               self.pei = self.AddImageButton(self.panel, 0, 0, _('PEI'),
+                                                                          'Lulzbot_TAZ_PEI_Bed.jpg', image_size,
+                                                                          style=ImageButton.IB_GROUP)
+               self.pet = self.AddImageButton(self.panel, 0, 1, _('PET'),
+                                                                          'Lulzbot_TAZ_PET_Bed.jpg', image_size)
+               self.pei.SetValue(True)
+
+       def StoreData(self):
+               if self.pei.GetValue():
+                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_5')
+                       profile.putMachineSetting('machine_name', 'LulzBot TAZ 5')
+               else:
+                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_4')
+                       profile.putMachineSetting('machine_name', 'LulzBot TAZ 4')
+
+
+class LulzbotTazToolheadSelectPage(InfoPage):
+       def __init__(self, parent):
+               super(LulzbotTazToolheadSelectPage, self).__init__(parent, _("LulzBot TAZ Tool Head Selection"))
 
                self.panel = self.AddPanel()
                image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
@@ -1274,6 +1365,7 @@ class LulzbotTazToolheadSelectPage(LulzbotToolheadSelectPage):
                                wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotTaz5NozzleSelectPage, self.GetParent().lulzbotFirmwarePage)
                        else:
                                wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotFirmwarePage)
+               wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotFirmwarePage, self.GetParent().lulzbotReadyPage)
 
        def OnSingleV2(self):
                wx.wizard.WizardPageSimple.Chain(self, self.GetParent().lulzbotTaz5NozzleSelectPage)
@@ -1306,8 +1398,8 @@ class LulzbotTazToolheadSelectPage(LulzbotToolheadSelectPage):
                        profile.putMachineSetting('extruder_offset_x1', '0.0')
                        profile.putMachineSetting('extruder_offset_y1', '-50.0' if self.version == 2 else '-52.00')
                        profile.putMachineSetting('toolhead', 'Dual Extruder V%d' % self.version)
-                       profile.putMachineSetting('toolhead_shortname', 'Dually v%d' % self.version)
-                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_%d_DuallyV%d' % version)
+                       profile.putMachineSetting('toolhead_shortname', 'Dual v%d' % self.version)
+                       profile.putMachineSetting('machine_type', 'lulzbot_TAZ_%d_DualV%d' % version)
                elif self.flexydually.GetValue():
                        profile.putProfileSetting('nozzle_size', '0.6')
                        profile.putMachineSetting('extruder_amount', '2')
@@ -1318,17 +1410,17 @@ class LulzbotTazToolheadSelectPage(LulzbotToolheadSelectPage):
                        profile.putMachineSetting('machine_type', 'lulzbot_TAZ_%d_FlexyDuallyV%d' % version)
 
 
-class LulzbotHotendSelectPage(LulzbotToolheadSelectPage):
+class LulzbotHotendSelectPage(InfoPage):
        def __init__(self, parent, allowBack = True):
-               super(LulzbotHotendSelectPage, self).__init__(parent, _("LulzBot Toolhead Hotend Selection"))
+               super(LulzbotHotendSelectPage, self).__init__(parent, _("LulzBot Tool Head Hot end Selection"))
 
                self.allowBack = allowBack
                self.panel = self.AddPanel()
                image_size=(LulzbotMachineSelectPage.IMAGE_WIDTH, LulzbotMachineSelectPage.IMAGE_HEIGHT)
-               self.v1 = self.AddImageButton(self.panel, 0, 0, _('v1 (Budaschnozzle Hotends)'),
+               self.v1 = self.AddImageButton(self.panel, 0, 0, _('v1 (Budaschnozzle)'),
                                                                                        'Lulzbot_Toolhead_v1.jpg', image_size,
                                                                                        style=ImageButton.IB_GROUP)
-               self.v2 = self.AddImageButton(self.panel, 0, 1, _('v2 (Hexagon Hotends)'),
+               self.v2 = self.AddImageButton(self.panel, 0, 1, _('v2 (LulzBot Hexagon)'),
                                                                                        'Lulzbot_Toolhead_v2.jpg', image_size)
                self.v1.SetValue(True)
 
@@ -1338,20 +1430,20 @@ class LulzbotHotendSelectPage(LulzbotToolheadSelectPage):
        def StoreData(self):
                self.GetParent().lulzbotTazToolheadPage.SetVersion(1 if self.v1.GetValue() else 2)
 
-class LulzbotTaz5NozzleSelectPage(LulzbotToolheadSelectPage):
+class LulzbotTaz5NozzleSelectPage(InfoPage):
        url2='http://lulzbot.com/printer-identification'
 
        def __init__(self, parent):
-               super(LulzbotTaz5NozzleSelectPage, self).__init__(parent, _("LulzBot TAZ Single V2 Nozzle Selection"))
+               super(LulzbotTaz5NozzleSelectPage, self).__init__(parent, _("LulzBot TAZ Single v2 Nozzle Selection"))
 
-               self.AddText(_('Please select your Hexagon hotend\'s nozzle size:'))
+               self.AddText(_('Please select your LulzBot Hexagon Hot End\'s nozzle diameter:'))
                self.Nozzle35Radio = self.AddRadioButton("0.35 mm", style=wx.RB_GROUP)
                self.Nozzle35Radio.SetValue(True)
                self.Nozzle50Radio = self.AddRadioButton("0.5 mm")
                self.AddText(_(' '))
                self.AddSeperator()
 
-               self.AddText(_('If you are not sure which nozzle size you have'))
+               self.AddText(_('If you are not sure which nozzle diameter you have,'))
                self.AddText(_('please check this webpage: '))
                button = self.AddButton(LulzbotTaz5NozzleSelectPage.url2)
                button.Bind(wx.EVT_BUTTON, self.OnUrlClick)
@@ -1366,13 +1458,13 @@ class LulzbotTaz5NozzleSelectPage(LulzbotToolheadSelectPage):
                        taz_version = 5
                if self.Nozzle35Radio.GetValue():
                        profile.putProfileSetting('nozzle_size', '0.35')
-                       profile.putMachineSetting('toolhead', 'Single Extruder V2 (0.35mm nozzle)')
+                       profile.putMachineSetting('toolhead', 'Single Extruder v2 (0.35mm nozzle)')
                        profile.putMachineSetting('toolhead_shortname', '0.35 nozzle')
                        profile.putMachineSetting('machine_type', 'lulzbot_TAZ_%d_035nozzle' % taz_version)
 
                else:
                        profile.putProfileSetting('nozzle_size', '0.5')
-                       profile.putMachineSetting('toolhead', 'Single Extruder V2 (0.5mm nozzle)')
+                       profile.putMachineSetting('toolhead', 'Single Extruder v2 (0.5mm nozzle)')
                        profile.putMachineSetting('toolhead_shortname', '0.5 nozzle')
                        profile.putMachineSetting('machine_type', 'lulzbot_TAZ_%d_05nozzle' % taz_version)
 
@@ -1380,15 +1472,14 @@ class LulzbotFirmwareUpdatePage(InfoPage):
        def __init__(self, parent):
                super(LulzbotFirmwareUpdatePage, self).__init__(parent, _("LulzBot Firmware Update"))
 
-               self.AddBitmap(wx.Bitmap(resources.getPathForImage('Lulzbot_logo.png')))
-
-               self.AddText(_('Your Lulzbot printer\'s firmware will now be updated'))
+               self.AddText(_("Your LulzBot printer\'s firmware will now be updated.\n" +
+               "Note: this will overwrite your existing firmware."))
                self.AddSeperator()
-               self.AddText(_("Firmware is the piece of software running directly on your 3D printer.\nThis firmware controls the stepper motors, regulates the temperature\nand ultimately makes your printer work."))
-               self.AddHiddenSeperator()
-               self.AddText(_("The firmware shipping with new Lulzbot printers works, but upgrades may be available\nwhich improve the functionality of your printer.\nIf you changed your toolhead, you will also need to flash\na new firmware or you may risk damaging the toolhead."))
-               self.AddHiddenSeperator()
-               self.AddText(_("To avoid any possible confusion, make sure to disconnect all printers from your PC\nexpect the printer that you are currently configuring."))
+               self.AddText(_("Follow these steps to prevent writing firmware to the wrong device:\n" +
+                                          "    1) Unplug all USB devices from your computer\n" +
+                                          "    2) Plug your 3D Printer into the computer with a USB cable\n" +
+                                          "    3) Turn on your 3D Printer\n" +
+                                          "    4) Click \"Flash the firmware\""))
                self.AddHiddenSeperator()
                upgradeButton, skipUpgradeButton = self.AddDualButton(_('Flash the firmware'), _('Skip upgrade'))
                upgradeButton.Bind(wx.EVT_BUTTON, self.OnUpgradeClick)
@@ -1400,11 +1491,16 @@ class LulzbotFirmwareUpdatePage(InfoPage):
        def OnUpgradeClick(self, e):
                if firmwareInstall.InstallFirmware():
                        self.GetParent().FindWindowById(wx.ID_FORWARD).Enable()
+                       self.GetParent().ShowPage(self.GetNext())
 
        def OnSkipClick(self, e):
-               dlg = wx.MessageDialog(self, _("Are you sure you want to skip the firmware upgrade?\n" +
-                                                                          "It could damage your printer if you changed your toolhead and have not updated thefirmware!"),
-                                                       _('Skip firmware upgrade?'), wx.YES_NO | wx.ICON_EXCLAMATION)
+               dlg = wx.MessageDialog(self,
+                       _("CAUTION: Updating firmware is necessary when changing the\n" \
+                         "tool head on your LulzBot desktop 3D Printer." \
+                         "\n\n" +
+                         "Are you sure you want to skip the firmware update?"),
+                       _('Skip firmware update?'),
+                       wx.YES_NO | wx.ICON_EXCLAMATION)
                skip = dlg.ShowModal() == wx.ID_YES
                dlg.Destroy()
                if skip:
@@ -1413,7 +1509,7 @@ class LulzbotFirmwareUpdatePage(InfoPage):
 
 class LulzbotChangeToolheadWizard(wx.wizard.Wizard):
        def __init__(self):
-               super(LulzbotChangeToolheadWizard, self).__init__(None, -1, _("Change Lulzbot Toolhead Wizard"))
+               super(LulzbotChangeToolheadWizard, self).__init__(None, -1, _("Change LulzBot Tool Head Wizard"))
 
                self._nozzle_size = profile.getProfileSettingFloat('nozzle_size')
                self._machine_name = profile.getMachineSetting('machine_name')
@@ -1430,9 +1526,11 @@ class LulzbotChangeToolheadWizard(wx.wizard.Wizard):
                self.lulzbotTazToolheadPage = LulzbotTazToolheadSelectPage(self)
                self.lulzbotTazHotendPage = LulzbotHotendSelectPage(self, False)
                self.lulzbotTaz5NozzleSelectPage = LulzbotTaz5NozzleSelectPage(self)
+               self.lulzbotTazBedSelectPage = LulzbotTazBedSelectPage(self)
+               self.lulzbotTazSelectPage = LulzbotTazSelectPage(self)
+               self.lulzbotTaz6SelectPage = LulzbotTaz6SelectPage(self)
 
-               wx.wizard.WizardPageSimple.Chain(self.lulzbotMiniToolheadPage, self.lulzbotFirmwarePage)
-               wx.wizard.WizardPageSimple.Chain(self.lulzbotFirmwarePage, self.lulzbotReadyPage)
+               wx.wizard.WizardPageSimple.Chain(self.lulzbotMiniToolheadPage, self.lulzbotReadyPage)
                wx.wizard.WizardPageSimple.Chain(self.lulzbotTazHotendPage, self.lulzbotTazToolheadPage)
 
                if profile.getMachineSetting('machine_type').startswith('lulzbot_mini'):
@@ -1453,6 +1551,8 @@ class LulzbotChangeToolheadWizard(wx.wizard.Wizard):
                        self.FindWindowById(wx.ID_BACKWARD).Enable()
                else:
                        self.FindWindowById(wx.ID_BACKWARD).Disable()
+               if hasattr(e.GetPage(), 'OnPageShown'):
+                       e.GetPage().OnPageShown()
 
        def OnCancel(self, e):
                profile.putProfileSetting('nozzle_size', self._nozzle_size)
@@ -1493,10 +1593,11 @@ class ConfigWizard(wx.wizard.Wizard):
                self.lulzbotTazHotendPage = LulzbotHotendSelectPage(self)
                self.lulzbotTaz5NozzleSelectPage = LulzbotTaz5NozzleSelectPage(self)
                self.lulzbotMachineSelectPage = LulzbotMachineSelectPage(self)
+               self.lulzbotTazBedSelectPage = LulzbotTazBedSelectPage(self)
+               self.lulzbotTazSelectPage = LulzbotTazSelectPage(self)
 
                wx.wizard.WizardPageSimple.Chain(self.lulzbotMachineSelectPage, self.lulzbotMiniToolheadPage)
-               wx.wizard.WizardPageSimple.Chain(self.lulzbotMiniToolheadPage, self.lulzbotFirmwarePage)
-               wx.wizard.WizardPageSimple.Chain(self.lulzbotFirmwarePage, self.lulzbotReadyPage)
+               wx.wizard.WizardPageSimple.Chain(self.lulzbotMiniToolheadPage, self.lulzbotReadyPage)
                wx.wizard.WizardPageSimple.Chain(self.lulzbotTazHotendPage, self.lulzbotTazToolheadPage)
                wx.wizard.WizardPageSimple.Chain(self.machineSelectPage, self.ultimakerSelectParts)
                wx.wizard.WizardPageSimple.Chain(self.ultimakerSelectParts, self.ultimakerFirmwareUpgradePage)
@@ -1520,6 +1621,8 @@ class ConfigWizard(wx.wizard.Wizard):
                        self.FindWindowById(wx.ID_BACKWARD).Enable()
                else:
                        self.FindWindowById(wx.ID_BACKWARD).Disable()
+               if hasattr(e.GetPage(), 'OnPageShown'):
+                       e.GetPage().OnPageShown()
 
        def OnCancel(self, e):
                new_machine_index = int(profile.getPreferenceFloat('active_machine'))