Configtool: take advantage of the now recognized values.

This is for now to restore disabled values as well, not only
active ones. More uses are thinkable.
This commit is contained in:
Markus Hitter 2015-07-16 19:01:50 +02:00
parent 3795c7a36f
commit 6b5156d459
8 changed files with 128 additions and 49 deletions

View File

@ -104,10 +104,17 @@ class AccelerationPage(wx.Panel, Page):
self.checkBoxes['LOOKAHEAD'].Enable(False) self.checkBoxes['LOOKAHEAD'].Enable(False)
self.textControls['ACCELERATION'].Enable(False) self.textControls['ACCELERATION'].Enable(False)
for tag in ['ACCELERATION_REPRAP', 'ACCELERATION_RAMPING', for tag in self.accTypeKeys:
'ACCELERATION_TEMPORAL']:
if tag in cfgValues.keys() and cfgValues[tag]: if tag in cfgValues.keys() and cfgValues[tag]:
self.radioButtons[tag].SetValue(True) self.radioButtons[tag].SetValue(True)
if tag == 'ACCELERATION_RAMPING': if tag == 'ACCELERATION_RAMPING':
self.checkBoxes['LOOKAHEAD'].Enable(True) self.checkBoxes['LOOKAHEAD'].Enable(True)
self.textControls['ACCELERATION'].Enable(True) self.textControls['ACCELERATION'].Enable(True)
def getValues(self):
result = Page.getValues(self)
for tag in self.accTypeKeys:
result[tag] = self.radioButtons[tag].GetValue()
return result

View File

@ -649,23 +649,37 @@ class BoardPanel(wx.Panel):
candCPUClocksWritten = True candCPUClocksWritten = True
continue continue
m = reDefine.match(ln)
if m:
t = m.groups()
if len(t) == 2 and t[0] in values.keys():
v = values[t[0]]
self.cfgValues[t[0]] = v
if v[1] == False:
fp.write("//")
fp.write(defineValueFormat % (t[0], v[0]))
else:
print "Value key " + t[0] + " not found in GUI."
continue
m = reDefBoolBL.match(ln) m = reDefBoolBL.match(ln)
if m: if m:
t = m.groups() t = m.groups()
if len(t) == 1: if len(t) == 1 and t[0] in values.keys():
if t[0] in values.keys(): v = values[t[0]]
v = values[t[0]] self.cfgValues[t[0]] = v
self.cfgValues[t[0]] = v if v == "" or v == False:
if v == "" or v == False: fp.write("//")
fp.write("//" + ln) fp.write(defineBoolFormat % t[0])
elif v == True: else:
fp.write(ln) if t[0] == 'MOTHERBOARD':
else: # Known to be absent in the GUI, also won't be added anytime soon.
fp.write(defineValueFormat % (t[0], v))
else:
fp.write(ln) fp.write(ln)
else:
print "Boolean key " + t[0] + " not found in GUI."
continue continue
fp.write(ln) fp.write(ln)

View File

@ -45,7 +45,11 @@ class CommunicationsPage(wx.Panel, Page):
def insertValues(self, cfgValues): def insertValues(self, cfgValues):
Page.insertValues(self, cfgValues) Page.insertValues(self, cfgValues)
self.setChoice('BAUD', cfgValues, self.defaultBaud) k = 'BAUD'
self.setChoice(k, cfgValues, self.defaultBaud)
if k in cfgValues.keys():
self.choicesOriginal[k] = cfgValues[k]
if self.checkBoxes['USB_SERIAL'].IsChecked(): if self.checkBoxes['USB_SERIAL'].IsChecked():
self.checkBoxes['XONXOFF'].Enable(False) self.checkBoxes['XONXOFF'].Enable(False)
self.choices['BAUD'].Enable(False) self.choices['BAUD'].Enable(False)
@ -54,7 +58,7 @@ class CommunicationsPage(wx.Panel, Page):
result = Page.getValues(self) result = Page.getValues(self)
if result['USB_SERIAL']: if result['USB_SERIAL']:
result['BAUD'] = "" result['BAUD'][1] = False
result['XONXOFF'] = False result['XONXOFF'] = False
return result return result

View File

@ -184,8 +184,9 @@ class MechanicalPage(wx.Panel, Page):
def insertValues(self, cfgValues): def insertValues(self, cfgValues):
Page.insertValues(self, cfgValues) Page.insertValues(self, cfgValues)
if 'KINEMATICS' in cfgValues.keys(): k = 'KINEMATICS'
k = cfgValues['KINEMATICS'] if k in cfgValues.keys():
k = cfgValues[k]
if k in self.kinematicsKeys: if k in self.kinematicsKeys:
self.radioButtons[k].SetValue(True) self.radioButtons[k].SetValue(True)
else: else:
@ -199,13 +200,7 @@ class MechanicalPage(wx.Panel, Page):
for tag in self.kinematicsKeys: for tag in self.kinematicsKeys:
rb = self.radioButtons[tag] rb = self.radioButtons[tag]
if rb.GetValue(): if rb.GetValue():
result['KINEMATICS'] = tag result['KINEMATICS'] = tag, True
break break
for tag in self.kinematicsKeys:
try:
del result[tag]
except:
pass
return result return result

View File

@ -233,6 +233,13 @@ class MiscellaneousPage(wx.Panel, Page):
v = 0 v = 0
self.choices[k].SetSelection(v) self.choices[k].SetSelection(v)
def insertValues(self, cfgValues):
Page.insertValues(self, cfgValues)
for k in self.choices.keys():
if k in cfgValues.keys():
self.choicesOriginal[k] = cfgValues[k]
def getValues(self): def getValues(self):
result = Page.getValues(self) result = Page.getValues(self)
@ -240,8 +247,11 @@ class MiscellaneousPage(wx.Panel, Page):
s = self.choices[k].GetSelection() s = self.choices[k].GetSelection()
v = self.choices[k].GetString(s) v = self.choices[k].GetString(s)
if v == self.heaterNameNone: if v == self.heaterNameNone:
result[k] = "" if k in self.choicesOriginal.keys():
result[k] = self.choicesOriginal[k][0], False
else:
result[k] = "", False
else: else:
result[k] = "HEATER_%s" % v result[k] = "HEATER_%s" % v, True
return result return result

View File

@ -11,10 +11,12 @@ class Page:
self.valid = True self.valid = True
self.fieldValid = {} self.fieldValid = {}
self.textControls = {} self.textControls = {}
self.textControlsOriginal = {}
self.checkBoxes = {} self.checkBoxes = {}
self.radioButtons = {} self.radioButtons = {}
self.radioButtonBoxes = {} self.radioButtonBoxes = {}
self.choices = {} self.choices = {}
self.choicesOriginal = {}
self.deco = Decoration() self.deco = Decoration()
self.font = font self.font = font
@ -224,30 +226,41 @@ class Page:
self.checkBoxes[k].SetValue(False) self.checkBoxes[k].SetValue(False)
for k in self.textControls.keys(): for k in self.textControls.keys():
if k in cfgValues.keys() and cfgValues[k][1] == True: if k in cfgValues.keys():
self.textControls[k].SetValue(str(cfgValues[k][0])) self.textControlsOriginal[k] = cfgValues[k]
if cfgValues[k][1] == True:
self.textControls[k].SetValue(str(cfgValues[k][0]))
else:
self.textControls[k].SetValue("")
else: else:
self.textControls[k].SetValue("") print "Key " + k + " not found in config data."
self.assertModified(False) self.assertModified(False)
def getValues(self): def getValues(self):
self.assertModified(False) self.assertModified(False)
result = {} result = {}
for k in self.checkBoxes.keys(): for k in self.checkBoxes.keys():
cb = self.checkBoxes[k] cb = self.checkBoxes[k]
result[k] = cb.IsChecked() result[k] = cb.IsChecked()
for k in self.textControls.keys(): for k in self.textControls.keys():
v = self.textControls[k].GetValue() v = self.textControls[k].GetValue()
result[k] = v if v == "":
if k in self.textControlsOriginal.keys():
result[k] = self.textControlsOriginal[k][0], False
else:
result[k] = "", False
else:
result[k] = v, True
for k in self.radioButtons.keys(): for k in self.radioButtons.keys():
result[k] = self.radioButtons[k].GetValue() result[k] = self.radioButtons[k].GetValue(), True
for k in self.choices.keys(): for k in self.choices.keys():
v = self.choices[k].GetSelection() v = self.choices[k].GetSelection()
result[k] = self.choices[k].GetString(v) result[k] = self.choices[k].GetString(v), True
return result return result

View File

@ -182,13 +182,20 @@ class PinoutsPage(wx.Panel, Page):
Page.insertValues(self, cfgValues) Page.insertValues(self, cfgValues)
for k in self.choices.keys(): for k in self.choices.keys():
self.setChoice(k, cfgValues, "-") if k in cfgValues.keys():
self.choicesOriginal[k] = cfgValues[k]
self.setChoice(k, cfgValues, "-")
else:
print "Key " + k + " not found in config data."
def getValues(self): def getValues(self):
result = Page.getValues(self) result = Page.getValues(self)
for k in self.choices.keys(): for k in self.choices.keys():
if k in result.keys() and result[k] == "-": if result[k][0] == "-":
result[k] = "" if k in self.choicesOriginal.keys():
result[k] = self.choicesOriginal[k][0], False
else:
result[k] = "", False
return result return result

View File

@ -403,22 +403,51 @@ class PrinterPanel(wx.Panel):
values[k] = v1[k] values[k] = v1[k]
for ln in self.cfgBuffer: for ln in self.cfgBuffer:
m = reDefine.match(ln)
if m:
t = m.groups()
if len(t) == 2 and t[0] in values.keys():
v = values[t[0]]
self.cfgValues[t[0]] = v
if v[1] == False:
fp.write("//")
fp.write(defineValueFormat % (t[0], v[0]))
else:
if t[0] == 'CANNED_CYCLE':
# Known to be absent in the GUI. Worse, this value is replaced
# by the one in the metadata file.
#
# TODO: make value reading above recognize wether this value is
# commented out or not. Reading the value its self works
# already. Hint: it's the rule using reDefQS, reDefQSm, etc.
#
# TODO: add a multiline text field in the GUI to deal with this.
#
# TODO: write this value out properly. In /* comments */, if
# disabled.
#
# TODO: currently, the lines beyond the ones with the #define are
# treated like arbitrary comments. Having the former TODOs
# done, this will lead to duplicates.
fp.write(ln)
else:
print "Value key " + t[0] + " not found in GUI."
continue
m = reDefBoolBL.match(ln) m = reDefBoolBL.match(ln)
if m: if m:
t = m.groups() t = m.groups()
if len(t) == 1: if len(t) == 1 and t[0] in values.keys():
if t[0] in values.keys(): v = values[t[0]]
v = values[t[0]] self.cfgValues[t[0]] = v
self.cfgValues[t[0]] = v if v == "" or v == False:
if v == "" or v == False: fp.write("//")
fp.write("//" + ln) fp.write(defineBoolFormat % t[0])
elif v == True: else:
fp.write(ln) print "Boolean key " + t[0] + " not found in GUI."
else:
fp.write(defineValueFormat % (t[0], v)) continue
else:
fp.write(ln)
continue
fp.write(ln) fp.write(ln)