chiark / gitweb /
Initial fakeouts for Mangrove
[cura.git] / Cura / gui / configWizard.py
index 00cca477349acc3491c623c09ff47fd154845ecd..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,25 +1150,17 @@ 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 diameter 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 diameter 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 diameter and machine type will be set in the toolhead selection page
                                profile.putMachineSetting('machine_name', 'LulzBot Mini')
@@ -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')))
-               txt = self.AddText(_('Picking the correct Tool Head is important.'))
-               txt = self.AddText(_('WARNING: Printing with the incorrect firmware 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 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,18 +1212,115 @@ 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(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"))
 
@@ -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,9 +1410,9 @@ 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 Tool Head Hotend Selection"))
+               super(LulzbotHotendSelectPage, self).__init__(parent, _("LulzBot Tool Head Hot end Selection"))
 
                self.allowBack = allowBack
                self.panel = self.AddPanel()
@@ -1328,7 +1420,7 @@ class LulzbotHotendSelectPage(LulzbotToolheadSelectPage):
                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)'),
+               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 diameter:'))
+               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 diameter 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 tool head, you will also need to flash\n new firmware or you risk damaging your printer."))
-               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 tool head 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 Tool Head 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'))