import wx from configtool.page import Page class AccelerationPage(wx.Panel, Page): def __init__(self, parent, nb, idPg, font): wx.Panel.__init__(self, nb, wx.ID_ANY) Page.__init__(self, font) self.parent = parent self.id = idPg self.accTypeKeys = ['ACCELERATION_REPRAP', 'ACCELERATION_RAMPING', 'ACCELERATION_TEMPORAL'] self.jerkKeys = ['MAX_JERK_X', 'MAX_JERK_Y', 'MAX_JERK_Z', 'MAX_JERK_E'] self.labels = {'ACCELERATION_REPRAP': "RepRap", 'ACCELERATION_RAMPING': "Ramping", 'ACCELERATION_TEMPORAL': "Temporal", 'ACCELERATION': "Acceleration:", 'LOOKAHEAD': "Look Ahead", 'MAX_JERK_X': "X:", 'MAX_JERK_Y': "Y:", 'MAX_JERK_Z': "Z:", 'MAX_JERK_E': "E:"} sz = wx.GridBagSizer() sz.AddSpacer((20, 40), pos = (0, 0)) b = wx.StaticBox(self, wx.ID_ANY, "Acceleration Type") b.SetFont(font) sbox = wx.StaticBoxSizer(b, wx.VERTICAL) sbox.AddSpacer((5, 5)) style = wx.RB_GROUP for k in self.accTypeKeys: rb = self.addRadioButton(k, style, self.onAccTypeSelect) style = 0 sbox.Add(rb, 1, wx.LEFT + wx.RIGHT, 16) sbox.AddSpacer((5, 5)) self.rbNone = wx.RadioButton(self, wx.ID_ANY, "None", style = style) self.rbNone.SetFont(font) self.rbNone.SetValue(True) self.Bind(wx.EVT_RADIOBUTTON, self.onAccTypeSelect, self.rbNone) sbox.Add(self.rbNone, 1, wx.LEFT + wx.RIGHT, 16) sbox.AddSpacer((5, 5)) sz.Add(sbox, pos = (1, 1)) b = wx.StaticBox(self, wx.ID_ANY, "Ramping Parameters") b.SetFont(font) sbox = wx.StaticBoxSizer(b, wx.VERTICAL) sbox.AddSpacer((5, 5)) k = 'ACCELERATION' tc = self.addTextCtrl(k, 80, self.onTextCtrlFloat) self.textControls[k].Enable(False) sbox.Add(tc) sbox.AddSpacer((5, 5)) k = 'LOOKAHEAD' cb = self.addCheckBox(k, self.onCheckBox) self.checkBoxes[k].Enable(False) sbox.Add(cb, 1, wx.ALIGN_CENTER_HORIZONTAL) sbox.AddSpacer((5, 5)) sz.Add(sbox, pos = (1, 3)) b = wx.StaticBox(self, wx.ID_ANY, "Maximum Jerk") b.SetFont(font) sbox = wx.StaticBoxSizer(b, wx.VERTICAL) sbox.AddSpacer((5, 5)) for k in self.jerkKeys: tc = self.addTextCtrl(k, 40, self.onTextCtrlInteger) sbox.Add(tc) sbox.AddSpacer((5, 5)) sz.AddSpacer((80, 20), pos = (1, 4)) sz.Add(sbox, pos = (1, 5)) self.SetSizer(sz) self.enableAll(False) def enableAll(self, flag = True): self.rbNone.Enable(flag) Page.enableAll(self, flag) def onAccTypeSelect(self, evt): self.assertModified(True) rb = evt.GetEventObject() label = rb.GetLabel() if label == self.labels['ACCELERATION_RAMPING']: ena = True else: ena = False self.checkBoxes['LOOKAHEAD'].Enable(ena) self.textControls['ACCELERATION'].Enable(ena) evt.Skip() def insertValues(self, cfgValues): self.assertValid(True) self.enableAll(True) for k in self.fieldValid.keys(): self.fieldValid[k] = True self.checkBoxes['LOOKAHEAD'].Enable(False) self.textControls['ACCELERATION'].Enable(False) for k in self.textControls.keys(): if k in cfgValues.keys(): self.textControls[k].SetValue(cfgValues[k]) else: self.textControls[k].SetValue("") for tag in ['ACCELERATION_REPRAP', 'ACCELERATION_RAMPING', 'ACCELERATION_TEMPORAL']: if tag in cfgValues.keys() and cfgValues[tag]: self.radioButtons[tag].SetValue(True) if tag == 'ACCELERATION_RAMPING': self.checkBoxes['LOOKAHEAD'].Enable(True) self.textControls['ACCELERATION'].Enable(True) k = 'LOOKAHEAD' if k in cfgValues.keys() and cfgValues[k]: self.checkBoxes[k].SetValue(True) else: self.checkBoxes[k].SetValue(False) self.assertModified(False)