def updateMachineMenu(self): #Remove all items so we can rebuild the menu. Inserting items seems to cause crashes, so this is the safest way. for item in self.machineMenu.GetMenuItems(): self.machineMenu.RemoveItem(item) #Add a menu item for each machine configuration. for n in xrange(0, profile.getMachineCount()): i = self.machineMenu.Append(n + 0x1000, profile.getMachineName(n).title(), kind=wx.ITEM_RADIO) if n == int(profile.getPreferenceFloat('active_machine')): i.Check(True) self.Bind(wx.EVT_MENU, lambda e: self.OnSelectMachine(e.GetId() - 0x1000), i) self.machineMenu.AppendSeparator() i = self.machineMenu.Append(-1, _("Add new machine...")) self.Bind(wx.EVT_MENU, self.OnAddNewMachine, i) i = self.machineMenu.Append(-1, _("Machine settings...")) self.Bind(wx.EVT_MENU, self.OnMachineSettings, i) #Add tools for machines. self.machineMenu.AppendSeparator() self.defaultFirmwareInstallMenuItem = self.machineMenu.Append(-1, _("Install default firmware...")) self.Bind(wx.EVT_MENU, self.OnDefaultMarlinFirmware, self.defaultFirmwareInstallMenuItem) i = self.machineMenu.Append(-1, _("Install custom firmware...")) self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i)
def updateMachineMenu(self): #Remove all items so we can rebuild the menu. Inserting items seems to cause crashes, so this is the safest way. for item in self.machineMenu.GetMenuItems(): self.machineMenu.RemoveItem(item) #Add a menu item for each machine configuration. for n in xrange(0, profile.getMachineCount()): machine_name = profile.getMachineName(n) machine_title = machine_name.title() machine_title = machine_title.replace('Taz', 'TAZ') machine_title = machine_title.replace('Lulzbot', 'LulzBot') machine_title = machine_title.replace('Moarstruder', 'MOARstruder') i = self.machineMenu.Append(n + 0x1000, machine_title, kind=wx.ITEM_RADIO) if n == int(profile.getPreferenceFloat('active_machine')): i.Check(True) self.Bind(wx.EVT_MENU, lambda e: self.OnSelectMachine(e.GetId() - 0x1000), i) self.machineMenu.AppendSeparator() i = self.machineMenu.Append(-1, _("Add new machine...")) self.Bind(wx.EVT_MENU, self.OnAddNewMachine, i) i = self.machineMenu.Append(-1, _("Machine settings...")) self.Bind(wx.EVT_MENU, self.OnMachineSettings, i) #Add tools for machines. self.machineMenu.AppendSeparator() self.defaultFirmwareInstallMenuItem = self.machineMenu.Append(-1, _("Install default firmware...")) self.Bind(wx.EVT_MENU, self.OnDefaultMarlinFirmware, self.defaultFirmwareInstallMenuItem) i = self.machineMenu.Append(-1, _("Install custom firmware...")) self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i)
def __init__(self, parent=None, filename=None, port=None, machineIndex=None): super(InstallFirmwareDialog, self).__init__(parent=parent, title=_("Firmware install for %s") % (profile.getMachineName(machineIndex)), size=(250, 100)) if port is None: port = profile.getMachineSetting('serial_port') if filename is None: filename = getDefaultFirmware(machineIndex) self._machineIndex = machineIndex 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) sizer = wx.BoxSizer(wx.VERTICAL) self.progressLabel = wx.StaticText( self, -1, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nX\nX') sizer.Add(self.progressLabel, 0, flag=wx.ALIGN_CENTER | wx.ALL, border=5) self.progressGauge = wx.Gauge(self, -1) sizer.Add(self.progressGauge, 0, flag=wx.EXPAND) self.buttonPanel = wx.Panel(self) self.buttonPanel.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.okButton = wx.Button(self.buttonPanel, -1, _("Start")) self.okButton.Bind(wx.EVT_BUTTON, self.OnFlash) self.buttonPanel.GetSizer().Add(self.okButton, 0, flag=wx.ALIGN_CENTER | wx.ALL, border=5) self.cancelButton = wx.Button(self.buttonPanel, -1, _("Cancel")) self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel) self.buttonPanel.GetSizer().Add(self.cancelButton, 0, flag=wx.ALIGN_CENTER | wx.ALL, border=5) sizer.Add(self.buttonPanel, 0, flag=wx.ALIGN_CENTER | wx.ALL, border=5) self.SetSizer(sizer) self.filename = filename self.port = port self.Layout() self.Fit() self.thread = None self.success = False self.show_connect_dialog = False
def OnRenameMachine(self, e): dialog = wx.TextEntryDialog(self, _("Enter the new name:"), _("Change machine name"), profile.getMachineSetting('machine_name', self.nb.GetSelection())) if dialog.ShowModal() != wx.ID_OK: return profile.putMachineSetting('machine_name', dialog.GetValue(), self.nb.GetSelection()) self.nb.SetPageText(self.nb.GetSelection(), profile.getMachineName(self.nb.GetSelection())) self.parent.updateMachineMenu()
def OnRenameMachine(self, e): dialog = wx.TextEntryDialog( self, _("Enter the new name:"), _("Change machine name"), profile.getMachineSetting('machine_name', self.nb.GetSelection())) if dialog.ShowModal() != wx.ID_OK: return profile.putMachineSetting('machine_name', dialog.GetValue(), self.nb.GetSelection()) self.nb.SetPageText(self.nb.GetSelection(), profile.getMachineName(self.nb.GetSelection())) self.parent.updateMachineMenu()
def __init__(self, parent = None, filename = None, port = None, machineIndex = None): super(InstallFirmwareDialog, self).__init__(parent=parent, title=_("Firmware install for %s") % (profile.getMachineName(machineIndex)), size=(250, 100)) if port is None: port = profile.getMachineSetting('serial_port') if filename is None: filename = getDefaultFirmware(machineIndex) self._machineIndex = machineIndex 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) sizer = wx.BoxSizer(wx.VERTICAL) self.progressLabel = wx.StaticText(self, -1, 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\nX\nX') sizer.Add(self.progressLabel, 0, flag=wx.ALIGN_CENTER|wx.ALL, border=5) self.progressGauge = wx.Gauge(self, -1) sizer.Add(self.progressGauge, 0, flag=wx.EXPAND) self.buttonPanel = wx.Panel(self) self.buttonPanel.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.okButton = wx.Button(self.buttonPanel, -1, _("Start")) self.okButton.Bind(wx.EVT_BUTTON, self.OnFlash) self.buttonPanel.GetSizer().Add(self.okButton, 0, flag=wx.ALIGN_CENTER|wx.ALL, border=5) self.cancelButton = wx.Button(self.buttonPanel, -1, _("Cancel")) self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel) self.buttonPanel.GetSizer().Add(self.cancelButton, 0, flag=wx.ALIGN_CENTER|wx.ALL, border=5) sizer.Add(self.buttonPanel, 0, flag=wx.ALIGN_CENTER|wx.ALL, border=5) self.SetSizer(sizer) self.filename = filename self.port = port self.Layout() self.Fit() self.thread = None self.success = False self.show_connect_dialog = False
def __init__(self, parent): super(machineSettingsDialog, self).__init__(parent, title=_("Machine settings")) wx.EVT_CLOSE(self, self.OnClose) self.parent = parent self.panel = configBase.configPanelBase(self) self.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.GetSizer().Add(self.panel, 1, wx.EXPAND) self.nb = wx.Notebook(self.panel) self.panel.SetSizer(wx.BoxSizer(wx.VERTICAL)) self.panel.GetSizer().Add(self.nb, 1, wx.EXPAND) for idx in xrange(0, profile.getMachineCount()): extruderCount = int(profile.getMachineSetting('extruder_amount', idx)) left, right, main = self.panel.CreateConfigPanel(self.nb) configBase.TitleRow(left, _("Machine settings")) configBase.SettingRow(left, 'steps_per_e', index=idx) configBase.SettingRow(left, 'machine_width', index=idx) configBase.SettingRow(left, 'machine_depth', index=idx) configBase.SettingRow(left, 'machine_height', index=idx) configBase.SettingRow(left, 'extruder_z_offset', index=idx) configBase.SettingRow(left, 'extruder_amount', index=idx) configBase.SettingRow(left, 'has_heated_bed', index=idx) configBase.SettingRow(left, 'machine_center_is_zero', index=idx) configBase.SettingRow(left, 'machine_shape', index=idx) configBase.SettingRow(left, 'gcode_flavor', index=idx) printer_type = profile.getMachineSetting('machine_type', idx) if printer_type.startswith('lulzbot_'): configBase.TitleRow(right, _("Tool Head")) row = configBase.ToolHeadRow(right, 'toolhead', index=idx) row.button.Bind(wx.EVT_BUTTON, self.OnChangeToolheadButton) configBase.TitleRow(right, _("Printer head size")) configBase.SettingRow(right, 'extruder_head_size_min_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_min_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_height', index=idx) for i in xrange(1, extruderCount): configBase.TitleRow(left, _("Extruder %d") % (i+1)) configBase.SettingRow(left, 'extruder_offset_x%d' % (i), index=idx) configBase.SettingRow(left, 'extruder_offset_y%d' % (i), index=idx) configBase.TitleRow(right, _("Communication settings")) configBase.SettingRow(right, 'serial_port', ['AUTO'] + machineCom.serialList(), index=idx) configBase.SettingRow(right, 'serial_baud', ['AUTO'] + map(str, machineCom.baudrateList()), index=idx) self.nb.AddPage(main, profile.getMachineName(idx).title()) self.nb.SetSelection(int(profile.getPreferenceFloat('active_machine'))) self.buttonPanel = wx.Panel(self.panel) self.panel.GetSizer().Add(self.buttonPanel) self.buttonPanel.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.okButton = wx.Button(self.buttonPanel, -1, _('Ok')) self.okButton.Bind(wx.EVT_BUTTON, lambda e: self.Close()) self.buttonPanel.GetSizer().Add(self.okButton, flag=wx.ALL, border=5) self.addButton = wx.Button(self.buttonPanel, -1, _('Add new machine')) self.addButton.Bind(wx.EVT_BUTTON, self.OnAddMachine) self.buttonPanel.GetSizer().Add(self.addButton, flag=wx.ALL, border=5) self.remButton = wx.Button(self.buttonPanel, -1, _('Remove machine')) self.remButton.Bind(wx.EVT_BUTTON, self.OnRemoveMachine) self.buttonPanel.GetSizer().Add(self.remButton, flag=wx.ALL, border=5) self.renButton = wx.Button(self.buttonPanel, -1, _('Change machine name')) self.renButton.Bind(wx.EVT_BUTTON, self.OnRenameMachine) self.buttonPanel.GetSizer().Add(self.renButton, flag=wx.ALL, border=5) main.Fit() self.Fit()
def __init__(self, parent): super(machineSettingsDialog, self).__init__(parent, title=_("Machine settings")) wx.EVT_CLOSE(self, self.OnClose) self.parent = parent self.panel = configBase.configPanelBase(self) self.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.GetSizer().Add(self.panel, 1, wx.EXPAND) self.nb = wx.Notebook(self.panel) self.panel.SetSizer(wx.BoxSizer(wx.VERTICAL)) self.panel.GetSizer().Add(self.nb, 1, wx.EXPAND) for idx in xrange(0, profile.getMachineCount()): printer_type = profile.getMachineSetting('machine_type', idx) extruderCount = int( profile.getMachineSetting('extruder_amount', idx)) left, right, main = self.panel.CreateConfigPanel(self.nb) configBase.TitleRow(left, _("Machine settings")) configBase.SettingRow(left, 'steps_per_e', index=idx) configBase.SettingRow(left, 'machine_width', index=idx) configBase.SettingRow(left, 'machine_depth', index=idx) configBase.SettingRow(left, 'machine_height', index=idx) if not printer_type.startswith( 'lulzbot_TAZ_6' ): #Disabled for TAZ 6, use LCD controller instead configBase.SettingRow(left, 'extruder_z_offset', index=idx) configBase.SettingRow(left, 'extruder_amount', index=idx) configBase.SettingRow(left, 'has_heated_bed', index=idx) configBase.SettingRow(left, 'machine_center_is_zero', index=idx) configBase.SettingRow(left, 'machine_shape', index=idx) configBase.SettingRow(left, 'gcode_flavor', index=idx) configBase.SettingRow(left, 'machine_startup_energy_PLA', index=idx) configBase.SettingRow(left, 'machine_run_energy_PLA', index=idx) configBase.SettingRow(left, 'machine_startup_energy_ABS', index=idx) configBase.SettingRow(left, 'machine_run_energy_ABS', index=idx) configBase.SettingRow(left, 'machine_startup_energy_HIPS', index=idx) configBase.SettingRow(left, 'machine_run_energy_HIPS', index=idx) configBase.SettingRow(left, 'machine_startup_energy_PETT', index=idx) configBase.SettingRow(left, 'machine_run_energy_PETT', index=idx) configBase.SettingRow(left, 'machine_startup_energy_Nylon', index=idx) configBase.SettingRow(left, 'machine_run_energy_Nylon', index=idx) configBase.SettingRow(left, 'machine_startup_energy_Other', index=idx) configBase.SettingRow(left, 'machine_run_energy_Other', index=idx) if printer_type.startswith('lulzbot_'): configBase.TitleRow(right, _("Tool Head")) row = configBase.ToolHeadRow(right, 'toolhead', index=idx) row.button.Bind(wx.EVT_BUTTON, self.OnChangeToolheadButton) configBase.TitleRow(right, _("Printer head size")) configBase.SettingRow(right, 'extruder_head_size_min_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_min_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_height', index=idx) for i in xrange(1, extruderCount): configBase.TitleRow(left, _("Extruder %d") % (i + 1)) configBase.SettingRow(left, 'extruder_offset_x%d' % (i), index=idx) configBase.SettingRow(left, 'extruder_offset_y%d' % (i), index=idx) configBase.TitleRow(right, _("Communication settings")) serial_list = ['AUTO'] + machineCom.serialList() serial_list_labels = serial_list[:] if profile.getMachineSetting('serial_port') not in serial_list: serial_list.append(profile.getMachineSetting('serial_port')) serial_list_labels.append( profile.getMachineSetting('serial_port') + _(" (Currently unavailable)")) configBase.SettingRow(right, 'serial_port', serial_list, serial_list_labels, index=idx) configBase.SettingRow(right, 'serial_baud', ['AUTO'] + map(str, machineCom.baudrateList()), index=idx) machine_name = profile.getMachineName(idx) machine_title = machine_name.title() machine_title = machine_title.replace('Taz', 'TAZ') machine_title = machine_title.replace('Lulzbot', 'LulzBot') self.nb.AddPage(main, machine_title) self.nb.SetSelection(int(profile.getPreferenceFloat('active_machine'))) self.buttonPanel = wx.Panel(self.panel) self.panel.GetSizer().Add(self.buttonPanel) self.buttonPanel.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.okButton = wx.Button(self.buttonPanel, -1, _('Ok')) self.okButton.Bind(wx.EVT_BUTTON, lambda e: self.Close()) self.buttonPanel.GetSizer().Add(self.okButton, flag=wx.ALL, border=5) self.addButton = wx.Button(self.buttonPanel, -1, _('Add new machine')) self.addButton.Bind(wx.EVT_BUTTON, self.OnAddMachine) self.buttonPanel.GetSizer().Add(self.addButton, flag=wx.ALL, border=5) self.remButton = wx.Button(self.buttonPanel, -1, _('Remove machine')) self.remButton.Bind(wx.EVT_BUTTON, self.OnRemoveMachine) self.buttonPanel.GetSizer().Add(self.remButton, flag=wx.ALL, border=5) self.renButton = wx.Button(self.buttonPanel, -1, _('Change machine name')) self.renButton.Bind(wx.EVT_BUTTON, self.OnRenameMachine) self.buttonPanel.GetSizer().Add(self.renButton, flag=wx.ALL, border=5) main.Fit() self.Fit()
def __init__(self, parent): super(machineSettingsDialog, self).__init__(parent, title=_("Machine settings")) wx.EVT_CLOSE(self, self.OnClose) self.parent = parent self.panel = configBase.configPanelBase(self) self.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.GetSizer().Add(self.panel, 1, wx.EXPAND) self.nb = wx.Notebook(self.panel) self.panel.SetSizer(wx.BoxSizer(wx.VERTICAL)) self.panel.GetSizer().Add(self.nb, 1, wx.EXPAND) for idx in xrange(0, profile.getMachineCount()): extruderCount = int( profile.getMachineSetting('extruder_amount', idx)) left, right, main = self.panel.CreateConfigPanel(self.nb) configBase.TitleRow(left, _("Machine settings")) configBase.SettingRow(left, 'steps_per_e', index=idx) configBase.SettingRow(left, 'machine_width', index=idx) configBase.SettingRow(left, 'machine_depth', index=idx) configBase.SettingRow(left, 'machine_height', index=idx) configBase.SettingRow(left, 'extruder_z_offset', index=idx) configBase.SettingRow(left, 'extruder_amount', index=idx) configBase.SettingRow(left, 'has_heated_bed', index=idx) configBase.SettingRow(left, 'machine_center_is_zero', index=idx) configBase.SettingRow(left, 'machine_shape', index=idx) configBase.SettingRow(left, 'gcode_flavor', index=idx) printer_type = profile.getMachineSetting('machine_type', idx) if printer_type.startswith('lulzbot_'): configBase.TitleRow(right, _("Tool Head")) row = configBase.ToolHeadRow(right, 'toolhead', index=idx) row.button.Bind(wx.EVT_BUTTON, self.OnChangeToolheadButton) configBase.TitleRow(right, _("Printer head size")) configBase.SettingRow(right, 'extruder_head_size_min_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_min_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_x', index=idx) configBase.SettingRow(right, 'extruder_head_size_max_y', index=idx) configBase.SettingRow(right, 'extruder_head_size_height', index=idx) for i in xrange(1, extruderCount): configBase.TitleRow(left, _("Extruder %d") % (i + 1)) configBase.SettingRow(left, 'extruder_offset_x%d' % (i), index=idx) configBase.SettingRow(left, 'extruder_offset_y%d' % (i), index=idx) configBase.TitleRow(right, _("Communication settings")) configBase.SettingRow(right, 'serial_port', ['AUTO'] + machineCom.serialList(), index=idx) configBase.SettingRow(right, 'serial_baud', ['AUTO'] + map(str, machineCom.baudrateList()), index=idx) self.nb.AddPage(main, profile.getMachineName(idx).title()) self.nb.SetSelection(int(profile.getPreferenceFloat('active_machine'))) self.buttonPanel = wx.Panel(self.panel) self.panel.GetSizer().Add(self.buttonPanel) self.buttonPanel.SetSizer(wx.BoxSizer(wx.HORIZONTAL)) self.okButton = wx.Button(self.buttonPanel, -1, _('Ok')) self.okButton.Bind(wx.EVT_BUTTON, lambda e: self.Close()) self.buttonPanel.GetSizer().Add(self.okButton, flag=wx.ALL, border=5) self.addButton = wx.Button(self.buttonPanel, -1, _('Add new machine')) self.addButton.Bind(wx.EVT_BUTTON, self.OnAddMachine) self.buttonPanel.GetSizer().Add(self.addButton, flag=wx.ALL, border=5) self.remButton = wx.Button(self.buttonPanel, -1, _('Remove machine')) self.remButton.Bind(wx.EVT_BUTTON, self.OnRemoveMachine) self.buttonPanel.GetSizer().Add(self.remButton, flag=wx.ALL, border=5) self.renButton = wx.Button(self.buttonPanel, -1, _('Change machine name')) self.renButton.Bind(wx.EVT_BUTTON, self.OnRenameMachine) self.buttonPanel.GetSizer().Add(self.renButton, flag=wx.ALL, border=5) main.Fit() self.Fit()