From 3a392ec604700d710dcd493ed1f697202bf21223 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sun, 27 Aug 2017 15:04:44 -0700 Subject: [PATCH] Added tool controller edit in dialog and hooked it up to job edit. --- .../Resources/panels/DlgToolControllerEdit.ui | 2 +- src/Mod/Path/PathScripts/PathJobGui.py | 12 +++++++- .../Path/PathScripts/PathToolController.py | 30 ++++++++++++++++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui b/src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui index 85f2636228..66a120ffeb 100644 --- a/src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui +++ b/src/Mod/Path/Gui/Resources/panels/DlgToolControllerEdit.ui @@ -11,7 +11,7 @@ - Dialog + Tool Controller Editor diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index c483b9408e..0d915eb235 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -177,6 +177,9 @@ class TaskPanel: widget.blockSignals(False) def updateToolController(self): + tcRow = self.form.toolControllerList.currentRow() + tcCol = self.form.toolControllerList.currentColumn() + self.form.toolControllerList.blockSignals(True) self.form.toolControllerList.clearContents() self.form.toolControllerList.setRowCount(0) @@ -224,6 +227,8 @@ class TaskPanel: if index != -1: self.form.activeToolController.setCurrentIndex(index) + if tcRow != -1 and tcCol != -1: + self.form.toolControllerList.setCurrentCell(tcRow, tcCol) self.form.activeToolController.blockSignals(False) self.form.toolControllerList.blockSignals(False) @@ -302,7 +307,12 @@ class TaskPanel: self.form.toolControllerDelete.setEnabled(delete) def toolControllerEdit(self): - pass + for item in self.form.toolControllerList.selectedItems(): + tc = item.data(self.DataObject) + dlg = PathToolController.DlgToolControllerEdit(tc) + dlg.exec_() + self.setFields() + self.toolControllerSelect() def toolControllerAdd(self): PathToolLibraryManager.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) diff --git a/src/Mod/Path/PathScripts/PathToolController.py b/src/Mod/Path/PathScripts/PathToolController.py index a316ed9de1..1426ef299c 100644 --- a/src/Mod/Path/PathScripts/PathToolController.py +++ b/src/Mod/Path/PathScripts/PathToolController.py @@ -47,6 +47,7 @@ def translate(context, text, disambig=None): class ToolControllerTemplate: '''Attribute and sub element strings for template export/import.''' + Name = 'name' Label = 'label' ToolNumber = 'nr' VertFeed = 'vfeed' @@ -78,7 +79,9 @@ class ToolController: def assignTemplate(self, obj, template): '''assignTemplate(obj, xmlItem) ... extract properties from xmlItem and assign to receiver.''' - PathLog.track(obj.Label, template) + PathLog.track(obj.Name, template) + if template.get(ToolControllerTemplate.Label): + obj.Label = template.get(ToolControllerTemplate.Label) if template.get(ToolControllerTemplate.VertFeed): obj.VertFeed = template.get(ToolControllerTemplate.VertFeed) if template.get(ToolControllerTemplate.HorizFeed): @@ -102,6 +105,7 @@ class ToolController: def templateAttrs(self, obj): '''templateAttrs(obj) ... answer a dictionary with all properties that should be stored for a template.''' attrs = {} + attrs[ToolControllerTemplate.Name] = ("%s" % (obj.Name)) attrs[ToolControllerTemplate.Label] = ("%s" % (obj.Label)) attrs[ToolControllerTemplate.ToolNumber] = ("%d" % (obj.ToolNumber)) attrs[ToolControllerTemplate.VertFeed] = ("%s" % (obj.VertFeed)) @@ -224,7 +228,8 @@ def Create(name = 'Default Tool', tool=None, toolNumber=1, assignViewProvider=Tr def FromTemplate(template, assignViewProvider=True): PathLog.track() - obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", template.get(ToolControllerTemplate.Label)) + name = template.get(ToolControllerTemplate.Name, ToolControllerTemplate.Label) + obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name) tc = ToolController(obj) if FreeCAD.GuiUp and assignViewProvider: ViewProvider(obj.ViewObject) @@ -285,7 +290,6 @@ class ToolControllerEditor: return matslist[material] def updateUi(self): - PathLog.info("updateUI") tc = self.obj self.form.tcName.setText(tc.Label) self.form.tcNumber.setValue(tc.ToolNumber) @@ -309,7 +313,6 @@ class ToolControllerEditor: self.form.toolCuttingEdgeHeight.setText(FreeCAD.Units.Quantity(tc.Tool.CuttingEdgeHeight, FreeCAD.Units.Length).UserString) def updateToolController(self): - PathLog.info("updateToolController") tc = self.obj try: tc.Label = self.form.tcName.text() @@ -412,6 +415,25 @@ class TaskPanel: self.editor.setupUi() +class DlgToolControllerEdit: + def __init__(self, obj): + self.editor = ToolControllerEditor(obj, True) + self.editor.updateUi() + self.editor.setupUi() + self.obj = obj + + def exec_(self): + restoreTC = self.obj.Proxy.templateAttrs(self.obj) + restoreTool = self.obj.Tool.Content + + rc = False + if not self.editor.form.exec_(): + PathLog.info("revert") + root = xml.Element('ToolController', restoreTC) + root.append(xml.fromstring(restoreTool)) + self.obj.Proxy.assignTemplate(self.obj, root) + rc = True + return rc if FreeCAD.GuiUp: # register the FreeCAD command