Skip to content

Commit

Permalink
Filter all TCs for suitability for a given op.
Browse files Browse the repository at this point in the history
  • Loading branch information
mlampert committed Dec 4, 2020
1 parent b7a356c commit d5beaf8
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
10 changes: 9 additions & 1 deletion src/Mod/Path/PathScripts/PathOp.py
Expand Up @@ -324,7 +324,7 @@ def setDefaultValues(self, obj):
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
Expand Down Expand Up @@ -585,3 +585,11 @@ def addBase(self, obj, base, sub):
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


4 changes: 2 additions & 2 deletions src/Mod/Path/PathScripts/PathOpGui.py
Expand Up @@ -383,15 +383,15 @@ def setupToolController(self, obj, combo):
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)

def updateToolController(self, obj, combo):
'''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

Expand Down
11 changes: 7 additions & 4 deletions src/Mod/Path/PathScripts/PathUtils.py
Expand Up @@ -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'''
Expand All @@ -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
Expand Down

0 comments on commit d5beaf8

Please sign in to comment.