Fixed up ToolController template arguments and loading for the switch to JSON.

This commit is contained in:
Markus Lampert
2017-09-14 12:40:14 -07:00
committed by wmayer
parent f34b63f570
commit 4d37d8bbbe
5 changed files with 121 additions and 31 deletions

View File

@@ -115,7 +115,7 @@ class ObjectJob:
obj.Base = createResourceClone(obj, base, 'Base', 'BaseGeometry')
obj.Proxy = self
self.assignTemplate(obj, template)
self.setFromTemplate(obj, template)
if not obj.Stock:
obj.Stock = PathStock.CreateFromBase(obj)
if obj.Stock.ViewObject:
@@ -165,8 +165,8 @@ class ObjectJob:
return obj.Base.Objects[0]
return obj.Base
def assignTemplate(self, obj, template):
'''assignTemplate(obj, template) ... extract the properties from the given template file and assign to receiver.
def setFromTemplate(self, obj, template):
'''setFromTemplate(obj, template) ... extract the properties from the given template file and assign to receiver.
This will also create any TCs stored in the template.'''
tcs = []
if template:

View File

@@ -56,7 +56,7 @@ class ToolControllerTemplate:
HorizRapid = 'hrapid'
SpindleSpeed = 'speed'
SpindleDir = 'dir'
Tool = 'Tool'
Tool = 'tool'
class ToolController:
def __init__(self, obj, tool=1):
@@ -77,8 +77,8 @@ class ToolController:
mode = 2
obj.setEditorMode('Placement', mode)
def assignTemplate(self, obj, template):
'''assignTemplate(obj, xmlItem) ... extract properties from xmlItem and assign to receiver.'''
def setFromTemplate(self, obj, template):
'''setFromTemplate(obj, xmlItem) ... extract properties from xmlItem and assign to receiver.'''
PathLog.track(obj.Name, template)
if template.get(ToolControllerTemplate.Label):
obj.Label = template.get(ToolControllerTemplate.Label)
@@ -97,23 +97,27 @@ class ToolController:
if template.get(ToolControllerTemplate.ToolNumber):
obj.ToolNumber = int(template.get(ToolControllerTemplate.ToolNumber))
for t in template.iter(ToolControllerTemplate.Tool):
tool = Path.Tool()
tool.setFromTemplate(xml.tostring(t))
obj.Tool = tool
if hasattr(template, 'iter'):
for t in template.iter(ToolControllerTemplate.Tool):
tool = Path.Tool()
tool.setFromTemplate(xml.tostring(t))
obj.Tool = tool
elif template.get(ToolControllerTemplate.Tool):
obj.Tool.setFromTemplate(template.get(ToolControllerTemplate.Tool))
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.Name] = obj.Name
attrs[ToolControllerTemplate.Label] = obj.Label
attrs[ToolControllerTemplate.ToolNumber] = obj.ToolNumber
attrs[ToolControllerTemplate.VertFeed] = ("%s" % (obj.VertFeed))
attrs[ToolControllerTemplate.HorizFeed] = ("%s" % (obj.HorizFeed))
attrs[ToolControllerTemplate.VertRapid] = ("%s" % (obj.VertRapid))
attrs[ToolControllerTemplate.HorizRapid] = ("%s" % (obj.HorizRapid))
attrs[ToolControllerTemplate.SpindleSpeed] = ("%f" % (obj.SpindleSpeed))
attrs[ToolControllerTemplate.SpindleDir] = ("%s" % (obj.SpindleDir))
attrs[ToolControllerTemplate.SpindleSpeed] = obj.SpindleSpeed
attrs[ToolControllerTemplate.SpindleDir] = obj.SpindleDir
attrs[ToolControllerTemplate.Tool] = obj.Tool.templateAttrs()
return attrs
def execute(self, obj):
@@ -223,7 +227,7 @@ def FromTemplate(template, assignViewProvider=True):
if FreeCAD.GuiUp and assignViewProvider:
ViewProvider(obj.ViewObject)
tc.assignTemplate(obj, template)
tc.setFromTemplate(obj, template)
return obj
@@ -410,14 +414,11 @@ class DlgToolControllerEdit:
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)
self.obj.Proxy.setFromTemplate(self.obj, restoreTC)
rc = True
return rc