diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index ca6acf576b24..d68b24cdcb5f 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -103,7 +103,6 @@ class NotificationClass(QtCore.QObject): class ObjectJob: - def __init__(self, obj, models, templateFile=None): self.obj = obj obj.addProperty("App::PropertyFile", "PostProcessorOutputFile", "Output", QtCore.QT_TRANSLATE_NOOP("PathJob", "The NC output file for this project")) @@ -155,7 +154,6 @@ def __init__(self, obj, models, templateFile=None): self.tooltip = None self.tooltipArgs = None - obj.Proxy = self self.setFromTemplateFile(obj, templateFile) diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index 5c3d1daf9dfa..8e6781a2a2c6 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -25,7 +25,6 @@ from contextlib import contextmanager import math import traceback - from pivy import coin from PySide import QtCore, QtGui @@ -45,6 +44,7 @@ import PathScripts.PathToolLibraryEditor as PathToolLibraryEditor import PathScripts.PathUtil as PathUtil import PathScripts.PathUtils as PathUtils +import PathScripts.PathToolBitGui as PathToolBitGui # lazily loaded modules from lazy_loader.lazy_loader import LazyLoader @@ -866,7 +866,15 @@ def toolControllerEdit(self): self.toolControllerSelect() def toolControllerAdd(self): - PathToolLibraryEditor.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) + if PathPreferences.toolsUseLegacyTools(): + PathToolLibraryEditor.CommandToolLibraryEdit().edit(self.obj, self.updateToolController) + else: + tools = PathToolBitGui.LoadTools() + for tool in tools: + tc = PathToolControllerGui.Create(name=tool.Label, tool=tool) + self.obj.Proxy.addToolController(tc) + FreeCAD.ActiveDocument.recompute() + self.updateToolController() def toolControllerDelete(self): self.objectDelete(self.form.toolControllerList) diff --git a/src/Mod/Path/PathScripts/PathOpGui.py b/src/Mod/Path/PathScripts/PathOpGui.py index c4ac06c29123..20e7dc678eda 100644 --- a/src/Mod/Path/PathScripts/PathOpGui.py +++ b/src/Mod/Path/PathScripts/PathOpGui.py @@ -545,7 +545,7 @@ def selectionSupportedAsBaseGeometry(self, selection, ignoreErrors): PathLog.error(translate("PathProject", "Faces are not supported")) return False else: - if not self.supportsPanels() or not 'Panel' in sel.Object.Name: + if not self.supportsPanels() or 'Panel' not in sel.Object.Name: if not ignoreErrors: PathLog.error(translate("PathProject", "Please select %s of a solid" % self.featureName())) return False @@ -636,6 +636,7 @@ def resizeBaseList(self): row = (qList.count() + qList.frameWidth()) * 15 qList.setFixedSize(col, row) + class TaskPanelBaseLocationPage(TaskPanelPage): '''Page controller for base locations. Uses PathGetPoint.''' @@ -936,6 +937,7 @@ def updateSelection(self, obj, sel): self.form.startDepthSet.setEnabled(False) self.form.finalDepthSet.setEnabled(False) + class TaskPanelDiametersPage(TaskPanelPage): '''Page controller for diameters.''' @@ -960,7 +962,7 @@ def getFields(self, obj): self.minDiameter.updateProperty() self.maxDiameter.updateProperty() - def setFields(self, obj): + def setFields(self, obj): self.minDiameter.updateSpinBox() self.maxDiameter.updateSpinBox() @@ -974,6 +976,7 @@ def pageUpdateData(self, obj, prop): if prop in ['MinDiameter', 'MaxDiameter']: self.setFields(obj) + class TaskPanel(object): ''' Generic TaskPanel implementation handling the standard Path operation layout. diff --git a/src/Mod/Path/PathScripts/PathProfileGui.py b/src/Mod/Path/PathScripts/PathProfileGui.py index cbd58ae75ac4..ff7b6d807f09 100644 --- a/src/Mod/Path/PathScripts/PathProfileGui.py +++ b/src/Mod/Path/PathScripts/PathProfileGui.py @@ -128,8 +128,6 @@ def getSignalsForUpdate(self, obj): def updateVisibility(self): hasFace = False - # hasGeom = False - # fullModel = False objBase = list() if hasattr(self.obj, 'Base'): @@ -141,8 +139,6 @@ def updateVisibility(self): if sub[:4] == 'Face': hasFace = True break - else: - fullModel = True if hasFace: self.form.processCircles.show() diff --git a/src/Mod/Path/PathScripts/PathToolBit.py b/src/Mod/Path/PathScripts/PathToolBit.py index 5b1b696594e2..a76150b59722 100644 --- a/src/Mod/Path/PathScripts/PathToolBit.py +++ b/src/Mod/Path/PathScripts/PathToolBit.py @@ -59,8 +59,7 @@ def translate(context, text, disambig=None): def _findTool(path, typ, dbg=False): - # PathLog.track("Path: {} typ: {}".format(path, typ)) - if os.path.exists(path): # absolute reference + if os.path.exists(path): # absolute reference if dbg: PathLog.debug("Found {} at {}".format(typ, path)) return path @@ -397,6 +396,7 @@ def __init__(self): PropertyGroupAttribute, translate('PathToolBit', 'Whether Spindle Power should be allowed')) + class ToolBitFactory(object): def CreateFromAttrs(self, attrs, name='ToolBit'): @@ -414,21 +414,15 @@ def CreateFromAttrs(self, attrs, name='ToolBit'): for pname in params: try: prop = proto.getProperty(pname) - # val = prop.valueFromString(params[pname]) prop.setupProperty(obj, pname, PropertyGroupAttribute, prop.valueFromString(params[pname])) except Exception: - # prop = obj.addProperty('App::PropertyString', pname, "Attribute", translate('PathTooolBit', 'User Defined Value')) - # setattr(obj, pname, params[pname]) prop = proto.getProperty("UserAttributes") uservals.update({pname: params[pname]}) - # prop.setupProperty(obj, pname, "UserAttributes", prop.valueFromString(params[pname])) if len(uservals.items()) > 0: prop.setupProperty(obj, "UserAttributes", PropertyGroupAttribute, uservals) - # print("prop[%s] = %s (%s)" % (pname, params[pname], type(val))) - # prop.setupProperty(obj, pname, PropertyGroupAttribute, prop.valueFromString(params[pname])) return obj def CreateFrom(self, path, name='ToolBit'): diff --git a/src/Mod/Path/PathScripts/PathToolBitEdit.py b/src/Mod/Path/PathScripts/PathToolBitEdit.py index 1f3f4c4c4d2a..7ac5e0c8742d 100644 --- a/src/Mod/Path/PathScripts/PathToolBitEdit.py +++ b/src/Mod/Path/PathScripts/PathToolBitEdit.py @@ -31,8 +31,8 @@ from PySide import QtCore, QtGui -# PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) -# PathLog.trackModule(PathLog.thisModule()) +PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) +PathLog.trackModule(PathLog.thisModule()) # Qt translation handling diff --git a/src/Mod/Path/PathScripts/PathToolBitGui.py b/src/Mod/Path/PathScripts/PathToolBitGui.py index 30ba0e164816..12d11241dea1 100644 --- a/src/Mod/Path/PathScripts/PathToolBitGui.py +++ b/src/Mod/Path/PathScripts/PathToolBitGui.py @@ -41,8 +41,9 @@ def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) -# PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) -# PathLog.trackModule(PathLog.thisModule()) + +PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) +PathLog.trackModule(PathLog.thisModule()) class ViewProvider(object): @@ -141,8 +142,7 @@ def reject(self): self.editor.reject() FreeCADGui.Control.closeDialog() if self.deleteOnReject: - FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', - 'Uncreate ToolBit')) + FreeCAD.ActiveDocument.openTransaction(translate('PathToolBit', 'Uncreate ToolBit')) self.editor.reject() FreeCAD.ActiveDocument.removeObject(self.obj.Name) FreeCAD.ActiveDocument.commitTransaction() diff --git a/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py b/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py index 12fc57f7d539..3d18989ee5ea 100644 --- a/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py +++ b/src/Mod/Path/PathScripts/PathToolBitLibraryCmd.py @@ -129,6 +129,7 @@ def Activated(self): # return True # return False + if FreeCAD.GuiUp: FreeCADGui.addCommand('Path_ToolBitLibraryOpen', CommandToolBitLibraryOpen()) FreeCADGui.addCommand('Path_ToolBitDock', CommandToolBitSelectorOpen()) diff --git a/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py b/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py index 72786f1a3f9e..a0a52f0de386 100644 --- a/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py +++ b/src/Mod/Path/PathScripts/PathToolBitLibraryGui.py @@ -36,7 +36,6 @@ import json import os import glob -import traceback import uuid as UUID from functools import partial @@ -130,7 +129,6 @@ def __init__(self, path=None): self.path = "" # self.currentLib = "" - def __libraryLoad(self, path, datamodel): PathLog.track(path) PathPreferences.setLastFileToolLibrary(path) @@ -153,7 +151,6 @@ def __libraryLoad(self, path, datamodel): msg = "Error loading tool: {} : {}".format(toolBit['path'], e) FreeCAD.Console.PrintError(msg) - def _toolAdd(self, nr, tool, path): strShape = os.path.splitext(os.path.basename(tool['shape']))[0] @@ -176,11 +173,6 @@ def _toolAdd(self, nr, tool, path): toolShape.setData(strShape, PySide.QtCore.Qt.EditRole) toolShape.setEditable(False) - # toolDiameter = PySide.QtGui.QStandardItem() - # toolDiameter.setData(strDiam, PySide.QtCore.Qt.EditRole) - # toolDiameter.setEditable(False) - - #return [toolNr, toolName, toolShape, toolDiameter] return [toolNr, toolName, toolShape] def newTool(self, datamodel, path): @@ -196,8 +188,8 @@ def newTool(self, datamodel, path): nr = max(nr, itemNr) nr += 1 tool = PathToolBit.Declaration(path) - except Exception: - PathLog.error(traceback.print_exc()) + except Exception as e: + PathLog.error(e) datamodel.appendRow(self._toolAdd(nr, tool, path)) @@ -388,7 +380,7 @@ def toolBitNew(self): return filename = PathToolBitGui.GetNewToolFile() - if filename == None: + if filename is None: return # Parse out the name of the file and write the structure @@ -569,7 +561,6 @@ def libraryOk(self): def libPaths(self): lib = PathPreferences.lastFileToolLibrary() loc = PathPreferences.lastPathToolLibrary() - #loc = os.path.split(lib)[0] PathLog.track("lib: {} loc: {}".format(lib, loc)) return lib, loc @@ -582,7 +573,6 @@ def loadData(self, path=None): self.toolTableView.setUpdatesEnabled(False) self.form.TableList.setUpdatesEnabled(False) - if path is None: path, loc = self.libPaths() @@ -600,7 +590,6 @@ def loadData(self, path=None): self.toolModel.setHorizontalHeaderLabels(self.columnNames()) self.listModel.setHorizontalHeaderLabels(['Library']) - # Select the current library in the list of tables curIndex = None for i in range(self.listModel.rowCount()): diff --git a/src/Mod/Path/PathScripts/PathToolController.py b/src/Mod/Path/PathScripts/PathToolController.py index 11fe248b4f2c..45e468500fd9 100644 --- a/src/Mod/Path/PathScripts/PathToolController.py +++ b/src/Mod/Path/PathScripts/PathToolController.py @@ -98,7 +98,6 @@ def onDelete(self, obj, arg2=None): if hasattr(obj.Tool, 'InList') and len(obj.Tool.InList) == 1: if hasattr(obj.Tool.Proxy, 'onDelete'): obj.Tool.Proxy.onDelete(obj.Tool) - #obj.Document.removeObject(obj.Name) def setFromTemplate(self, obj, template): ''' @@ -177,7 +176,6 @@ def execute(self, obj): commands += "(" + obj.Label + ")"+'\n' commands += 'M6 T'+str(obj.ToolNumber)+'\n' - # If a toolbit is used, check to see if spindlepower is allowed. # This is to prevent accidentally spinning the spindle with an # unpowered tool like probe or dragknife diff --git a/src/Mod/Path/PathScripts/PathToolControllerGui.py b/src/Mod/Path/PathScripts/PathToolControllerGui.py index c290abb29924..54daefa5cada 100644 --- a/src/Mod/Path/PathScripts/PathToolControllerGui.py +++ b/src/Mod/Path/PathScripts/PathToolControllerGui.py @@ -35,10 +35,12 @@ from lazy_loader.lazy_loader import LazyLoader Part = LazyLoader('Part', globals(), 'Part') + # Qt translation handling def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) + class ViewProvider: def __init__(self, vobj): @@ -122,7 +124,8 @@ def claimChildren(self): return [obj.Tool] return [] -def Create(name = 'Default Tool', tool=None, toolNumber=1): + +def Create(name='Default Tool', tool=None, toolNumber=1): PathLog.track(tool, toolNumber) obj = PathScripts.PathToolController.Create(name, tool, toolNumber) @@ -172,6 +175,7 @@ def Activated(self): job.Proxy.addToolController(tc) FreeCAD.ActiveDocument.recompute() + class ToolControllerEditor(object): def __init__(self, obj, asDialog): @@ -180,13 +184,18 @@ def __init__(self, obj, asDialog): self.form.buttonBox.hide() self.obj = obj - self.vertFeed = PathGui.QuantitySpinBox(self.form.vertFeed, obj, 'VertFeed') - self.horizFeed = PathGui.QuantitySpinBox(self.form.horizFeed, obj, 'HorizFeed') - self.vertRapid = PathGui.QuantitySpinBox(self.form.vertRapid, obj, 'VertRapid') - self.horizRapid = PathGui.QuantitySpinBox(self.form.horizRapid, obj, 'HorizRapid') + self.vertFeed = PathGui.QuantitySpinBox(self.form.vertFeed, obj, + 'VertFeed') + self.horizFeed = PathGui.QuantitySpinBox(self.form.horizFeed, obj, + 'HorizFeed') + self.vertRapid = PathGui.QuantitySpinBox(self.form.vertRapid, obj, + 'VertRapid') + self.horizRapid = PathGui.QuantitySpinBox(self.form.horizRapid, obj, + 'HorizRapid') if obj.Proxy.usesLegacyTool(obj): - self.editor = PathToolEdit.ToolEditor(obj.Tool, self.form.toolEditor) + self.editor = PathToolEdit.ToolEditor(obj.Tool, + self.form.toolEditor) else: self.editor = None self.form.toolBox.widget(1).hide() @@ -201,7 +210,8 @@ def updateUi(self): self.vertFeed.updateSpinBox() self.vertRapid.updateSpinBox() self.form.spindleSpeed.setValue(tc.SpindleSpeed) - index = self.form.spindleDirection.findText(tc.SpindleDir, QtCore.Qt.MatchFixedString) + index = self.form.spindleDirection.findText(tc.SpindleDir, + QtCore.Qt.MatchFixedString) if index >= 0: self.form.spindleDirection.setCurrentIndex(index) @@ -224,9 +234,9 @@ def updateToolController(self): self.editor.updateTool() tc.Tool = self.editor.tool - except Exception as e: # pylint: disable=broad-except - PathLog.error(translate("PathToolController", "Error updating TC: %s") % e) - + except Exception as e: + PathLog.error(translate("PathToolController", + "Error updating TC: %s") % e) def refresh(self): self.form.blockSignals(True) @@ -296,7 +306,8 @@ def resetObject(self, remove=None): def setupUi(self): if self.editor.editor: t = Part.makeCylinder(1, 1) - self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", "tool") + self.toolrep = FreeCAD.ActiveDocument.addObject("Part::Feature", + "tool") self.toolrep.Shape = t self.setFields() @@ -311,7 +322,7 @@ def __init__(self, obj): self.obj = obj def exec_(self): - restoreTC = self.obj.Proxy.templateAttrs(self.obj) + restoreTC = self.obj.Proxy.templateAttrs(self.obj) rc = False if not self.editor.form.exec_(): @@ -320,6 +331,7 @@ def exec_(self): rc = True return rc + if FreeCAD.GuiUp: # register the FreeCAD command FreeCADGui.addCommand('Path_ToolController', CommandPathToolController()) diff --git a/src/Mod/Path/Tools/Shape/chamfer.fcstd b/src/Mod/Path/Tools/Shape/chamfer.fcstd index a6acac7a43e4..e56a1359d4d0 100644 Binary files a/src/Mod/Path/Tools/Shape/chamfer.fcstd and b/src/Mod/Path/Tools/Shape/chamfer.fcstd differ