From 20dd299c7a86606cb79e36520c00ed507865df78 Mon Sep 17 00:00:00 2001 From: Nico Tonnhofer Date: Thu, 24 Jan 2019 12:04:35 +0100 Subject: [PATCH] configtool: parse, load and write homing values --- configtool/printer.py | 69 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 3 deletions(-) diff --git a/configtool/printer.py b/configtool/printer.py index cd6ea0f..32b7dcf 100644 --- a/configtool/printer.py +++ b/configtool/printer.py @@ -16,16 +16,27 @@ from configtool.data import ( reDefQSm2, reDefBool, reDefBoolBL, + reCandHomingOptions, + reDefHoming, + reHoming, ) class Printer: def __init__(self, settings): + self.settings = settings self.configFile = None + self.cfgDir = os.path.join(self.settings.folder, "configtool") self.cfgValues = {} - self.settings = settings - self.cfgDir = os.path.join(self.settings.folder, "configtool") + self.homing = [] + self.candHomingOptions = [] + self.homingKeys = [ + "HOMING_STEP1", + "HOMING_STEP2", + "HOMING_STEP3", + "HOMING_STEP4", + ] def getValues(self): vars = [(x, self.cfgValues[x]) for x in self.cfgValues] @@ -51,6 +62,8 @@ class Printer: self.configFile = fn + self.homing = [] + self.candHomingOptions = [] gatheringHelpText = False helpTextString = "" helpKey = None @@ -129,7 +142,20 @@ class Printer: ln = prevLines + ln prevLines = "" - self.parseDefineValue(ln) + if self.parseCandidateValues(ln): + continue + + if self.parseDefineValue(ln): + continue + + m = reDefHoming.search(ln) + if m: + t = m.groups() + if len(t) == 1: + s = self.parseHoming(t[0]) + if s: + self.homing = s + continue # Parsing done. All parsed stuff is now in these array and dicts. if self.settings.verbose >= 2: @@ -197,6 +223,27 @@ class Printer: return False + def parseCandidateValues(self, ln): + m = reCandHomingOptions.match(ln) + if m: + t = m.groups() + if len(t) == 1: + self.candHomingOptions.append(t[0]) + return True + + def parseHoming(self, s): + m = re.findall(reHoming, s) + if not m: + return None + + for i, tag in enumerate(self.homingKeys): + try: + self.cfgValues[tag] = m[i], True + except IndexError: + self.cfgValues[tag] = "none", False + + return m + def saveConfigFile(self, path, values): if not values: values = self.cfgValues @@ -209,7 +256,23 @@ class Printer: fp = open(path, "w") self.configFile = path + homingWritten = False + for ln in self.cfgBuffer: + if reDefHoming.match(ln): + if not homingWritten: + home = [] + for h in self.homingKeys: + home.append(values[h][0]) + while "none" in home: + home.remove("none") + if not home: + home = ["none"] + homing_str = "DEFINE_HOMING({})\n".format(", ".join(home)) + fp.write(homing_str) + homingWritten = True + continue + m = reDefine.match(ln) if m: t = m.groups()