chiark / gitweb /
Add option to add/remove machines from machine setting menu.
authordaid <daid303@gmail.com>
Thu, 26 Sep 2013 12:35:42 +0000 (14:35 +0200)
committerdaid <daid303@gmail.com>
Thu, 26 Sep 2013 12:35:42 +0000 (14:35 +0200)
Cura/gui/preferencesDialog.py
Cura/util/profile.py

index 6eb312dfa99ada6858987f64fa1d97430b1e4889..fd587892bb3661926865e2647ab94001a5d95ba6 100644 (file)
@@ -3,6 +3,7 @@ __copyright__ = "Copyright (C) 2013 David Braam - Released under terms of the AG
 
 import wx
 
+from Cura.gui import configWizard
 from Cura.gui import configBase
 from Cura.util import machineCom
 from Cura.util import profile
@@ -98,13 +99,54 @@ class machineSettingsDialog(wx.Dialog):
 
                self.nb.SetSelection(int(profile.getPreferenceFloat('active_machine')))
 
-               self.okButton = wx.Button(self.panel, -1, 'Ok')
-               self.panel.GetSizer().Add(self.okButton, flag=wx.ALL, border=5)
+               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)
 
                main.Fit()
                self.Fit()
 
+       def OnAddMachine(self, e):
+               self.Hide()
+               self.parent.Hide()
+               profile.setActiveMachine(profile.getMachineCount())
+               configWizard.configWizard(True)
+               self.parent.Show()
+               self.parent.reloadSettingPanels()
+               self.parent.updateMachineMenu()
+
+               prefDialog = machineSettingsDialog(self.parent)
+               prefDialog.Centre()
+               prefDialog.Show()
+               wx.CallAfter(self.Close)
+
+       def OnRemoveMachine(self, e):
+               if profile.getMachineCount() < 2:
+                       wx.MessageBox(_("Cannot remove the last machine configuration in Cura"), _("Machine remove error"), wx.OK | wx.ICON_ERROR)
+                       return
+
+               self.Hide()
+               profile.removeMachine(self.nb.GetSelection())
+               self.parent.reloadSettingPanels()
+               self.parent.updateMachineMenu()
+
+               prefDialog = machineSettingsDialog(self.parent)
+               prefDialog.Centre()
+               prefDialog.Show()
+               wx.CallAfter(self.Close)
+
        def OnClose(self, e):
                self.parent.reloadSettingPanels()
                self.Destroy()
index 2c57493f4f7f52710199f7fee5a41e78871ad012..160f7d199dcffae726f0f1a432ba58d60d06e413 100644 (file)
@@ -753,6 +753,19 @@ def setActiveMachine(index):
        _selectedMachineIndex = index
        putPreference('active_machine', _selectedMachineIndex)
 
+def removeMachine(index):
+       global _selectedMachineIndex
+       global settingsList
+       if getMachineCount() < 2:
+               return
+       for n in xrange(index, getMachineCount()):
+               for setting in settingsList:
+                       if setting.isMachineSetting():
+                               setting.setValue(setting.getValue(n+1), n)
+
+       if _selectedMachineIndex >= index:
+               setActiveMachine(getMachineCount() - 1)
+
 ## Temp overrides for multi-extruder slicing and the project planner.
 tempOverride = {}
 def setTempOverride(name, value):