From 08b95047df4ec2fc496961f9c0a5c2b9d920f3db Mon Sep 17 00:00:00 2001 From: Nico Tonnhofer Date: Thu, 24 Jan 2019 22:50:47 +0100 Subject: [PATCH] configtool: add homing to GUI --- configtool/mechanicalpage.py | 46 ++++++++++++++++++++++++++++++++++++ configtool/printerpanel.py | 3 +++ 2 files changed, 49 insertions(+) diff --git a/configtool/mechanicalpage.py b/configtool/mechanicalpage.py index 0e3e011..f628cff 100644 --- a/configtool/mechanicalpage.py +++ b/configtool/mechanicalpage.py @@ -13,6 +13,8 @@ class MechanicalPage(wx.Panel, Page): self.parent = parent self.font = font + self.homing = [] + self.spmKeys = [ "STEPS_PER_M_X", "STEPS_PER_M_Y", @@ -39,6 +41,13 @@ class MechanicalPage(wx.Panel, Page): self.kinematicsKeys = ["KINEMATICS_STRAIGHT", "KINEMATICS_COREXY"] + self.homingKeys = [ + "HOMING_STEP1", + "HOMING_STEP2", + "HOMING_STEP3", + "HOMING_STEP4", + ] + self.labels = { "STEPS_PER_M_X": "X:", "STEPS_PER_M_Y": "Y:", @@ -63,6 +72,17 @@ class MechanicalPage(wx.Panel, Page): "E_ABSOLUTE": "Absolute E Coordinates", "KINEMATICS_STRAIGHT": "Straight", "KINEMATICS_COREXY": "CoreXY", + "HOMING_STEP1": "Step 1:", + "HOMING_STEP2": "Step 2:", + "HOMING_STEP3": "Step 3:", + "HOMING_STEP4": "Step 4:", + "none": "-", + "x_negative": "X min", + "x_positive": "X max", + "y_negative": "Y min", + "y_positive": "Y max", + "z_negative": "Z min", + "z_positive": "Z max", } labelWidth = 40 @@ -167,6 +187,16 @@ class MechanicalPage(wx.Panel, Page): sz.Add(bsz, pos=(1, 3)) + b = wx.StaticBox(self, wx.ID_ANY, "Homing Order") + b.SetFont(font) + sbox = wx.StaticBoxSizer(b, wx.VERTICAL) + sbox.Add((5, 5)) + for k in self.homingKeys: + tc = self.addChoice(k, self.homing, 0, labelWidth + 20, self.onChoice) + sbox.Add(tc) + sbox.Add((5, 5)) + sz.Add(sbox, pos=(3, 3)) + self.enableAll(False) self.SetSizer(sz) @@ -203,6 +233,15 @@ class MechanicalPage(wx.Panel, Page): for k in self.kinematicsKeys: self.radioButtons[k].SetToolTip(ht["KINEMATICS"]) + def setCandidateHomingOptions(self, hlist): + for k in self.homingKeys: + self.choices[k].Clear() + self.choices[k].AppendItems(hlist) + self.homingOptions = hlist + + def setHoming(self, homing): + self.homing = homing + def insertValues(self, cfgValues): Page.insertValues(self, cfgValues) @@ -210,6 +249,13 @@ class MechanicalPage(wx.Panel, Page): if tag in cfgValues.keys() and cfgValues[tag]: self.radioButtons[tag].SetValue(True) + for i, k in enumerate(self.homingKeys): + try: + index = self.homingOptions.index(self.homing[i]) + self.choices[k].SetSelection(index) + except IndexError: + self.choices[k].SetSelection(0) + def getValues(self): result = Page.getValues(self) diff --git a/configtool/printerpanel.py b/configtool/printerpanel.py index 95e97a9..4c7f656 100644 --- a/configtool/printerpanel.py +++ b/configtool/printerpanel.py @@ -198,7 +198,10 @@ class PrinterPanel(wx.Panel): else: self.protFileLoaded = False self.parent.enableSavePrinter(True, True) + self.parent.setPrinterTabFile(os.path.basename(fn)) + self.pgMech.setCandidateHomingOptions(self.printer.candHomingOptions) + self.pgMech.setHoming(self.printer.homing) for pg in self.pages: pg.insertValues(self.printer.cfgValues)