X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=Cura%2Fgui%2FmainWindow.py;h=590252a53d3bc4adfbe1d1751e5894bcd36ce187;hb=6208201bafdeaf82883181471c6da3a41283cfe7;hp=75fd9dac6cc7e762bc1f1d0f4a31d786390221c6;hpb=7376d494e56fbd25d76b32cdd5d87b9657d03604;p=cura.git diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 75fd9dac..590252a5 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -27,8 +27,6 @@ class mainWindow(wx.Frame): def __init__(self): super(mainWindow, self).__init__(None, title='Cura - ' + version.getVersion()) - self.extruderCount = int(profile.getMachineSetting('extruder_amount')) - wx.EVT_CLOSE(self, self.OnClose) # allow dropping any file, restrict later @@ -124,6 +122,17 @@ class mainWindow(wx.Frame): i = toolsMenu.Append(-1, _("Copy profile to clipboard")) self.Bind(wx.EVT_MENU, self.onCopyProfileClipboard,i) + + toolsMenu.AppendSeparator() + self.allAtOnceItem = toolsMenu.Append(-1, _("Print all at once"), kind=wx.ITEM_RADIO) + self.Bind(wx.EVT_MENU, self.onOneAtATimeSwitch, self.allAtOnceItem) + self.oneAtATime = toolsMenu.Append(-1, _("Print one at a time"), kind=wx.ITEM_RADIO) + self.Bind(wx.EVT_MENU, self.onOneAtATimeSwitch, self.oneAtATime) + if profile.getPreference('oneAtATime') == 'True': + self.oneAtATime.Check(True) + else: + self.allAtOnceItem.Check(True) + self.menubar.Append(toolsMenu, _("Tools")) #Machine menu for machine configuration/tooling @@ -142,17 +151,16 @@ class mainWindow(wx.Frame): self.Bind(wx.EVT_MENU, self.OnNormalSwitch, i) expertMenu.AppendSeparator() - i = expertMenu.Append(-1, _("Open expert settings...")) + i = expertMenu.Append(-1, _("Open expert settings...\tCTRL+E")) self.normalModeOnlyItems.append(i) self.Bind(wx.EVT_MENU, self.OnExpertOpen, i) expertMenu.AppendSeparator() i = expertMenu.Append(-1, _("Run first run wizard...")) self.Bind(wx.EVT_MENU, self.OnFirstRunWizard, i) - i = expertMenu.Append(-1, _("Run bed leveling wizard...")) - self.Bind(wx.EVT_MENU, self.OnBedLevelWizard, i) - if self.extruderCount > 1: - i = expertMenu.Append(-1, _("Run head offset wizard...")) - self.Bind(wx.EVT_MENU, self.OnHeadOffsetWizard, i) + self.bedLevelWizardMenuItem = expertMenu.Append(-1, _("Run bed leveling wizard...")) + self.Bind(wx.EVT_MENU, self.OnBedLevelWizard, self.bedLevelWizardMenuItem) + self.headOffsetWizardMenuItem = expertMenu.Append(-1, _("Run head offset wizard...")) + self.Bind(wx.EVT_MENU, self.OnHeadOffsetWizard, self.headOffsetWizardMenuItem) self.menubar.Append(expertMenu, _("Expert")) @@ -248,13 +256,15 @@ class mainWindow(wx.Frame): self.Centre() self.updateSliceMode() + self.scene.SetFocus() def onTimer(self, e): #Check if there is something in the clipboard profileString = "" try: if not wx.TheClipboard.IsOpened(): - wx.TheClipboard.Open() + if not wx.TheClipboard.Open(): + return do = wx.TextDataObject() if wx.TheClipboard.GetData(do): profileString = do.GetText() @@ -305,18 +315,32 @@ class mainWindow(wx.Frame): # Enabled sash self.splitter.SetSashSize(4) self.defaultFirmwareInstallMenuItem.Enable(firmwareInstall.getDefaultFirmware() is not None) + if profile.getMachineSetting('machine_type') == 'ultimaker2': + self.bedLevelWizardMenuItem.Enable(False) + self.headOffsetWizardMenuItem.Enable(False) + if int(profile.getMachineSetting('extruder_amount')) < 2: + self.headOffsetWizardMenuItem.Enable(False) self.scene.updateProfileToControls() + def onOneAtATimeSwitch(self, e): + profile.putPreference('oneAtATime', self.oneAtATime.IsChecked()) + if self.oneAtATime.IsChecked() and profile.getMachineSettingFloat('extruder_head_size_height') < 1: + wx.MessageBox(_('For "One at a time" printing, you need to have entered the correct head size and gantry height in the machine settings'), _('One at a time warning'), wx.OK | wx.ICON_WARNING) + self.scene.updateProfileToControls() + self.scene.sceneUpdated() + def OnPreferences(self, e): prefDialog = preferencesDialog.preferencesDialog(self) prefDialog.Centre() prefDialog.Show() + prefDialog.Raise() wx.CallAfter(prefDialog.Show) def OnMachineSettings(self, e): prefDialog = preferencesDialog.machineSettingsDialog(self) prefDialog.Centre() prefDialog.Show() + prefDialog.Raise() def OnDropFiles(self, files): if len(files) > 0: @@ -391,17 +415,19 @@ class mainWindow(wx.Frame): 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() - i = self.machineMenu.Append(-1, _("Install custom firmware...")) - self.Bind(wx.EVT_MENU, self.OnCustomFirmware, i) - self.defaultFirmwareInstallMenuItem = self.machineMenu.Append(-1, _("Install default Marlin firmware...")) + 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 OnLoadProfile(self, e): dlg=wx.FileDialog(self, _("Select profile file to load"), os.path.split(profile.getPreference('lastFile'))[0], style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) dlg.SetWildcard("ini files (*.ini)|*.ini") @@ -476,14 +502,6 @@ class mainWindow(wx.Frame): self.Show() self.reloadSettingPanels() - def OnAddNewMachine(self, e): - self.Hide() - profile.setActiveMachine(profile.getMachineCount()) - configWizard.configWizard(True) - self.Show() - self.reloadSettingPanels() - self.updateMachineMenu() - def OnSelectMachine(self, index): profile.setActiveMachine(index) self.reloadSettingPanels() @@ -557,7 +575,7 @@ class mainWindow(wx.Frame): #HACK: Set the paint function of the glCanvas to nothing so it won't keep refreshing. Which can keep wxWidgets from quiting. print "Closing down" self.scene.OnPaint = lambda e : e - self.scene._slicer.cleanup() + self.scene._engine.cleanup() self.Destroy() def OnQuit(self, e):