Skip to content

Commit

Permalink
Moved usage of ToolBit into the experimental features.
Browse files Browse the repository at this point in the history
  • Loading branch information
mlampert committed Nov 29, 2019
1 parent 6db9fcb commit 6812b01
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 16 deletions.
12 changes: 10 additions & 2 deletions src/Mod/Path/InitGui.py
Expand Up @@ -71,8 +71,16 @@ def Initialize(self):
FreeCADGui.addIconPath(":/icons")
from PathScripts import PathGuiInit
from PathScripts import PathJobCmd

from PathScripts import PathToolBitCmd
from PathScripts import PathToolBitLibraryCmd
if PathPreferences.experimentalFeaturesEnabled():
toolbitcmdlist = PathToolBitCmd.CommandList + ["Separator"] + PathToolBitLibraryCmd.CommandList + ["Path_ToolController", "Separator"]
self.toolbitctxmenu = ["Path_ToolBitLibraryLoad", "Path_ToolController"]
else:
toolbitcmdlist = []
self.toolbitctxmenu = []

import PathCommands
PathGuiInit.Startup()

Expand Down Expand Up @@ -114,7 +122,7 @@ def Initialize(self):
if extracmdlist:
self.appendToolbar(QtCore.QT_TRANSLATE_NOOP("Path", "Helpful Tools"), extracmdlist)

self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path")], projcmdlist +["Path_ExportTemplate", "Separator"] + PathToolBitCmd.CommandList + ["Separator"] + PathToolBitLibraryCmd.CommandList + ["Path_ToolController", "Separator"] + toolcmdlist +["Separator"] + twodopcmdlist + engravecmdlist +["Separator"] +threedopcmdlist +["Separator"])
self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path")], projcmdlist +["Path_ExportTemplate", "Separator"] + toolbitcmdlist + toolcmdlist +["Separator"] + twodopcmdlist + engravecmdlist +["Separator"] +threedopcmdlist +["Separator"])
self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path"), QtCore.QT_TRANSLATE_NOOP(
"Path", "Path Dressup")], dressupcmdlist)
self.appendMenu([QtCore.QT_TRANSLATE_NOOP("Path", "&Path"), QtCore.QT_TRANSLATE_NOOP(
Expand Down Expand Up @@ -155,7 +163,7 @@ def ContextMenu(self, recipient):
if "Remote" in selectedName:
self.appendContextMenu("", ["Refresh_Path"])
if "Job" in selectedName:
self.appendContextMenu("", ["Path_ExportTemplate", "Path_ToolBitLibraryLoad", "Path_ToolController"])
self.appendContextMenu("", ["Path_ExportTemplate"] + self.toolbitctxmenu)
menuAppended = True
if isinstance(obj.Proxy, PathScripts.PathOp.ObjectOp):
self.appendContextMenu("", ["Path_OperationCopy", "Path_OpActiveToggle"])
Expand Down
3 changes: 3 additions & 0 deletions src/Mod/Path/PathScripts/PathPreferences.py
Expand Up @@ -152,6 +152,9 @@ def appendPath(p, sub):
def toolsUseLegacyTools():
return preferences().GetBool(UseLegacyTools, True)

def toolsReallyUseLegacyTools():
return toolsUseLegacyTools() or not experimentalFeaturesEnabled()

def toolsStoreAbsolutePaths():
return preferences().GetBool(UseAbsoluteToolPaths, False)

Expand Down
15 changes: 11 additions & 4 deletions src/Mod/Path/PathScripts/PathToolBit.py
Expand Up @@ -149,9 +149,12 @@ def __init__(self, obj, shapeFile):
obj.addProperty('App::PropertyLink', 'BitBody', 'Base', translate('PathToolBit', 'The parametrized body representing the tool bit'))
obj.addProperty('App::PropertyFile', 'File', 'Base', translate('PathToolBit', 'The file of the tool'))
if shapeFile is None:
shapeFile = 'endmill.fcstd'
obj.BitShape = shapeFile
self._setupBitShape(obj)
obj.BitShape = 'endmill.fcstd'
self._setupBitShape(obj)
self.unloadBitBody(obj)
else:
obj.BitShape = shapeFile
self._setupBitShape(obj)
self.onDocumentRestored(obj)

def __getstate__(self):
Expand Down Expand Up @@ -189,6 +192,10 @@ def onChanged(self, obj, prop):
#elif obj.getGroupOfProperty(prop) == PropertyGroupBit:
# self._updateBitShape(obj, [prop])

def onDelete(self, obj, arg2=None):
PathLog.track(obj.Label)
self.unloadBitBody(obj)

def _updateBitShape(self, obj, properties=None):
if not obj.BitBody is None:
if not properties:
Expand Down Expand Up @@ -237,9 +244,9 @@ def _deleteBitSetup(self, obj):

def loadBitBody(self, obj, force=False):
if force or not obj.BitBody:
activeDoc = FreeCAD.ActiveDocument
if force:
self._removeBitBody(obj)
activeDoc = FreeCAD.ActiveDocument
(doc, opened) = self._loadBitBody(obj)
obj.BitBody = obj.Document.copyObject(doc.RootObjects[0], True)
if opened:
Expand Down
4 changes: 4 additions & 0 deletions src/Mod/Path/PathScripts/PathToolBitGui.py
Expand Up @@ -77,6 +77,10 @@ def __setstate__(self, state):
# pylint: disable=unused-argument
return None

def onDelete(self, vobj, arg2=None):
PathLog.track(vobj.Object.Label)
vobj.Object.Proxy.onDelete(vobj.Object)

def getDisplayMode(self, mode):
# pylint: disable=unused-argument
return 'Default'
Expand Down
23 changes: 14 additions & 9 deletions src/Mod/Path/PathScripts/PathToolController.py
Expand Up @@ -31,13 +31,8 @@

from PySide import QtCore

LOGLEVEL = False

if LOGLEVEL:
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
PathLog.trackModule(PathLog.thisModule())
else:
PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule())
#PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
#PathLog.trackModule(PathLog.thisModule())

# Qt translation handling
def translate(context, text, disambig=None):
Expand Down Expand Up @@ -86,6 +81,8 @@ def onDelete(self, obj, arg2=None):
# pylint: disable=unused-argument
if not self.usesLegacyTool(obj):
if len(obj.Tool.InList) == 1:
if hasattr(obj.Tool.Proxy, 'onDelete'):
obj.Tool.Proxy.onDelete(obj.Tool)
obj.Document.removeObject(obj.Tool.Name)

def setFromTemplate(self, obj, template):
Expand Down Expand Up @@ -186,17 +183,23 @@ def usesLegacyTool(self, obj):

def ensureUseLegacyTool(self, obj, legacy):
if not hasattr(obj, 'Tool') or (legacy != self.usesLegacyTool(obj)):
if legacy and hasattr(obj, 'Tool') and len(obj.Tool.InList) == 1:
if hasattr(obj.Tool.Proxy, 'onDelete'):
obj.Tool.Proxy.onDelete(obj.Tool)
obj.Document.removeObject(obj.Tool.Name)

if hasattr(obj, 'Tool'):
obj.removeProperty('Tool')

if legacy:
obj.addProperty("Path::PropertyTool", "Tool", "Base", QtCore.QT_TRANSLATE_NOOP("PathToolController", "The tool used by this controller"))
else:
obj.addProperty("App::PropertyLink", "Tool", "Base", QtCore.QT_TRANSLATE_NOOP("PathToolController", "The tool used by this controller"))

def Create(name = 'Default Tool', tool=None, toolNumber=1, assignViewProvider=True):
PathLog.track(tool, toolNumber)
legacyTool = PathPreferences.toolsReallyUseLegacyTools() if tool is None else isinstance(tool, Path.Tool)

legacyTool = PathPreferences.toolsUseLegacyTools() if tool is None else isinstance(tool, Path.Tool)
PathLog.track(tool, toolNumber, legacyTool)

obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name)
obj.Label = name
Expand All @@ -215,6 +218,8 @@ def Create(name = 'Default Tool', tool=None, toolNumber=1, assignViewProvider=Tr
tool.Material = "HighSpeedSteel"
else:
tool = PathToolBit.Factory.Create()
if tool.ViewObject:
tool.ViewObject.Visibility = False

obj.Tool = tool
obj.ToolNumber = toolNumber
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Path/PathScripts/PathToolLibraryEditor.py
Expand Up @@ -441,7 +441,7 @@ def __init__(self):
pass

def edit(self, job=None, cb=None):
if PathPreferences.toolsUseLegacyTools():
if PathPreferences.toolsReallyUseLegacyTools():
editor = EditorPanel(job, cb)
editor.setupUi()
editor.form.exec_()
Expand Down

0 comments on commit 6812b01

Please sign in to comment.