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)
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()
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)
wx.wizard.WizardPageSimple.Chain(self.GetParent().lulzbotMiniToolheadPage,
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
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
+ if self.LulzbotTaz.GetValue() or self.LulzbotMini.GetValue() or self.LulzbotTaz6.GetValue():
+ if self.LulzbotTaz.GetValue():
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')
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')
- 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')
- profile.putMachineSetting('machine_width', '290')
- profile.putMachineSetting('machine_depth', '275')
+ elif self.LulzbotTaz6.GetValue():
+ profile.putMachineSetting('machine_width', '280')
+ profile.putMachineSetting('machine_depth', '280')
profile.putMachineSetting('machine_height', '250')
- profile.putMachineSetting('serial_baud', '115200')
+ profile.putMachineSetting('serial_baud', '250000')
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')
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(_('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"))
profile.putMachineSetting('toolhead_shortname', 'Flexystruder')
profile.putMachineSetting('machine_type', 'lulzbot_mini_flexystruder')
+class LulzbotTaz6ToolheadSelectPage(InfoPage):
+ def __init__(self, parent, allowBack = True):
+ super(LulzbotTaz6ToolheadSelectPage, self).__init__(parent, _("LulzBot TAZ 6 Tool Head 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"))
profile.putMachineSetting('toolhead_shortname', 'FlexyDually v%d' % self.version)
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()
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)
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"))
- 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)
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 \"brain\" inside your 3D printer.\n" +
- "It controls motors/heaters, regulates temperature\n" +
- "and ultimately makes your printer work."))
- self.AddHiddenSeperator()
- self.AddText(_("When changing tool heads it is neccesary to update the firmware.\n" +
- "Please connect (with a USB cable) the printer you are currently configuring and power it on.\n" +
- "Disconnecting all other 3D printers helps reduce confusion."))
+ 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)
def OnSkipClick(self, e):
dlg = wx.MessageDialog(self,
- _("CAUTION: Updating your firmware is strongly recommended and " \
- "critical to protecting your LulzBot with the latest updates " \
- "and settings. Expert users note that this will overwrite " \
- " firmware changes or customization; you can skip this step " \
- "at your discretion.\n\n" +
- "Are you sure you want to skip the firmware upgrade?"),
- _('Skip firmware upgrade?'),
+ _("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()
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')
self.lulzbotFirmwarePage = LulzbotFirmwareUpdatePage(self)
self.lulzbotMiniToolheadPage = LulzbotMiniToolheadSelectPage(self, False)
self.lulzbotTazToolheadPage = LulzbotTazToolheadSelectPage(self)
+ self.lulzbotTaz6ToolheadPage = LulzbotTaz6ToolheadSelectPage(self, False)
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.lulzbotReadyPage)
wx.wizard.WizardPageSimple.Chain(self.lulzbotTazHotendPage, self.lulzbotTazToolheadPage)
if profile.getMachineSetting('machine_type').startswith('lulzbot_mini'):
self.RunWizard(self.lulzbotMiniToolheadPage)
- else:
+ elif profile.getMachineSetting('machine_type').startswith('lulzbot_TAZ_5'):
self.RunWizard(self.lulzbotTazHotendPage)
+ elif profile.getMachineSetting('machine_type').startswith('lulzbot_TAZ_6'):
+ self.RunWizard(self.lulzbotTaz6ToolheadPage)
self.Destroy()
def OnPageChanging(self, e):
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)
self.lulzbotTazHotendPage = LulzbotHotendSelectPage(self)
self.lulzbotTaz5NozzleSelectPage = LulzbotTaz5NozzleSelectPage(self)
self.lulzbotMachineSelectPage = LulzbotMachineSelectPage(self)
+ self.lulzbotTazBedSelectPage = LulzbotTazBedSelectPage(self)
+ self.lulzbotTazSelectPage = LulzbotTazSelectPage(self)
+ self.lulzbotTaz6SelectPage = LulzbotTaz6SelectPage(self)
+ self.lulzbotTaz6ToolheadPage = LulzbotTaz6ToolheadSelectPage(self)
wx.wizard.WizardPageSimple.Chain(self.lulzbotMachineSelectPage, self.lulzbotMiniToolheadPage)
wx.wizard.WizardPageSimple.Chain(self.lulzbotMiniToolheadPage, self.lulzbotReadyPage)
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'))