Filter all TCs for suitability for a given op.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user