Filter all TCs for suitability for a given op.

This commit is contained in:
markus
2020-11-13 14:43:18 -08:00
committed by Markus Lampert
parent b7a356cceb
commit d5beaf806d
3 changed files with 18 additions and 7 deletions

View File

@@ -324,7 +324,7 @@ class ObjectOp(object):
if 1 < len(job.Operations.Group):
obj.ToolController = PathUtil.toolControllerForOp(job.Operations.Group[-2])
else:
obj.ToolController = PathUtils.findToolController(obj)
obj.ToolController = PathUtils.findToolController(obj, self)
if not obj.ToolController:
return None
obj.OpToolDiameter = obj.ToolController.Tool.Diameter
@@ -585,3 +585,11 @@ class ObjectOp(object):
obj.Base = baselist
else:
PathLog.notice((translate("Path", "Base object %s.%s rejected by operation") + "\n") % (base.Label, sub))
def isToolSupported(self, obj, tool):
'''toolSupported(obj, tool) ... Returns true if the op supports the given tool.
This function can safely be overwritten by subclasses.'''
return True

View File

@@ -383,7 +383,7 @@ class TaskPanelPage(object):
combo.blockSignals(False)
if obj.ToolController is None:
obj.ToolController = PathUtils.findToolController(obj)
obj.ToolController = PathUtils.findToolController(obj, obj.Proxy)
if obj.ToolController is not None:
self.selectInComboBox(obj.ToolController.Label, combo)
@@ -391,7 +391,7 @@ class TaskPanelPage(object):
'''updateToolController(obj, combo) ...
helper function to update obj's ToolController property if a different
one has been selected in the combo box.'''
tc = PathUtils.findToolController(obj, combo.currentText())
tc = PathUtils.findToolController(obj, obj.Proxy, combo.currentText())
if obj.ToolController != tc:
obj.ToolController = tc

View File

@@ -392,19 +392,22 @@ def reverseEdge(e):
return newedge
def getToolControllers(obj):
def getToolControllers(obj, proxy=None):
'''returns all the tool controllers'''
if proxy is None:
proxy = obj.Proxy
try:
job = findParentJob(obj)
except Exception: # pylint: disable=broad-except
job = None
print("op={} ({})".format(obj.Label, type(obj)))
if job:
return job.ToolController
return [c for c in job.ToolController if proxy.isToolSupported(obj, c.Tool)]
return []
def findToolController(obj, name=None):
def findToolController(obj, proxy, name=None):
'''returns a tool controller with a given name.
If no name is specified, returns the first controller.
if no controller is found, returns None'''
@@ -416,7 +419,7 @@ def findToolController(obj, name=None):
if c is not None:
return c
controllers = getToolControllers(obj)
controllers = getToolControllers(obj, proxy)
if len(controllers) == 0:
return None