diff --git a/src/Mod/Path/PathScripts/PathToolLibraryEditor.py b/src/Mod/Path/PathScripts/PathToolLibraryEditor.py index da2bae994e..e4103357ec 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryEditor.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryEditor.py @@ -36,13 +36,14 @@ import PathScripts.PathToolLibraryManager as ToolLibraryManager from PySide import QtCore, QtGui PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) -#PathLog.trackModule(PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) -class EditorPanel(): +class EditorPanel: def __init__(self, job, cb): self.form = FreeCADGui.PySideUic.loadUi(":/panels/ToolLibraryEditor.ui") self.TLM = ToolLibraryManager.ToolLibraryManager() @@ -88,7 +89,7 @@ class EditorPanel(): return toolslist[tooltype] def getMaterial(self, material): - '''gets a combobox index number for a given material or vice versa''' + """gets a combobox index number for a given material or vice versa""" matslist = Path.Tool.getToolMaterials(Path.Tool()) if isinstance(material, str): if material in matslist: @@ -99,7 +100,7 @@ class EditorPanel(): return matslist[material] def addTool(self): - '''adds new tool to the current tool table''' + """adds new tool to the current tool table""" tool = Path.Tool() editor = self.toolEditor(tool) @@ -111,19 +112,19 @@ class EditorPanel(): self.loadTable(listname) def delete(self): - '''deletes the selected tool''' + """deletes the selected tool""" listname = self.TLM.getCurrentTableName() model = self.form.ToolsList.model() for i in range(model.rowCount()): item = model.item(i, 0) if item.checkState(): t = model.index(i, 1) - self.TLM.delete(int(t.data()) ,listname) + self.TLM.delete(int(t.data()), listname) self.loadTable(listname) self.toolSelectionChanged() def editTool(self, currItem): - '''load the tool edit dialog''' + """load the tool edit dialog""" if not currItem: currItem = self.form.ToolsList.selectedIndexes()[1] @@ -141,7 +142,7 @@ class EditorPanel(): self.loadTable(listname) def moveUp(self): - '''moves a tool to a lower number, if possible''' + """moves a tool to a lower number, if possible""" item = self.form.ToolsList.selectedIndexes()[1].data() if item: number = int(item) @@ -152,7 +153,7 @@ class EditorPanel(): self.updateSelection(newNum) def moveDown(self): - '''moves a tool to a higher number, if possible''' + """moves a tool to a higher number, if possible""" item = self.form.ToolsList.selectedIndexes()[1].data() if item: number = int(item) @@ -163,7 +164,7 @@ class EditorPanel(): self.updateSelection(newNum) def duplicate(self): - '''duplicated the selected tool in the current tool table''' + """duplicated the selected tool in the current tool table""" item = self.form.ToolsList.selectedIndexes()[1].data() if item: number = int(item) @@ -174,7 +175,7 @@ class EditorPanel(): self.updateSelection(newNum) def updateSelection(self, number): - '''update the tool list selection to track moves''' + """update the tool list selection to track moves""" model = self.form.ToolsList.model() for i in range(model.rowCount()): if int(model.index(i, 1).data()) == number: @@ -182,24 +183,41 @@ class EditorPanel(): self.form.ToolsList.model().item(i, 0).setCheckState(QtCore.Qt.Checked) return - def importFile(self): - '''imports a tooltable from a file''' - filename = QtGui.QFileDialog.getOpenFileName(self.form, translate( "TooltableEditor", "Open tooltable", None), None, "{};;{};;{}".format(self.TLM.TooltableTypeJSON, self.TLM.TooltableTypeXML, self.TLM.TooltableTypeHeekscad)) + """imports a tooltable from a file""" + filename = QtGui.QFileDialog.getOpenFileName( + self.form, + translate("TooltableEditor", "Open tooltable", None), + None, + "{};;{};;{}".format( + self.TLM.TooltableTypeJSON, + self.TLM.TooltableTypeXML, + self.TLM.TooltableTypeHeekscad, + ), + ) if filename[0]: listname = self.TLM.getNextToolTableName() if self.TLM.read(filename, listname): self.loadToolTables() def exportFile(self): - '''export a tooltable to a file''' - filename = QtGui.QFileDialog.getSaveFileName(self.form, translate("TooltableEditor", "Save tooltable", None), None, "{};;{};;{}".format(self.TLM.TooltableTypeJSON, self.TLM.TooltableTypeXML, self.TLM.TooltableTypeLinuxCNC)) + """export a tooltable to a file""" + filename = QtGui.QFileDialog.getSaveFileName( + self.form, + translate("TooltableEditor", "Save tooltable", None), + None, + "{};;{};;{}".format( + self.TLM.TooltableTypeJSON, + self.TLM.TooltableTypeXML, + self.TLM.TooltableTypeLinuxCNC, + ), + ) if filename[0]: listname = self.TLM.getCurrentTableName() self.TLM.write(filename, listname) def toolSelectionChanged(self, index=None): - ''' updates the ui when tools are selected''' + """updates the ui when tools are selected""" if index: self.form.ToolsList.selectRow(index.row()) @@ -222,7 +240,7 @@ class EditorPanel(): # only allow moving or deleting a single tool at a time. if checkCount == 1: - #make sure the row is highlighted when the check box gets ticked + # make sure the row is highlighted when the check box gets ticked self.form.ToolsList.selectRow(checkList[0]) self.form.ButtonDelete.setEnabled(True) self.form.ButtonUp.setEnabled(True) @@ -234,7 +252,7 @@ class EditorPanel(): self.form.btnCopyTools.setEnabled(False) def copyTools(self): - ''' copy selected tool ''' + """copy selected tool""" tools = [] model = self.form.ToolsList.model() for i in range(model.rowCount()): @@ -268,43 +286,54 @@ class EditorPanel(): for toolnum in tools: tool = self.TLM.getTool(currList, int(toolnum)) - PathLog.debug('tool: {}, toolnum: {}'.format(tool, toolnum)) + PathLog.debug("tool: {}, toolnum: {}".format(tool, toolnum)) if self.job: label = "T{}: {}".format(toolnum, tool.Name) - tc = PathScripts.PathToolController.Create(label, tool=tool, toolNumber=int(toolnum)) + tc = PathScripts.PathToolController.Create( + label, tool=tool, toolNumber=int(toolnum) + ) self.job.Proxy.addToolController(tc) else: for job in FreeCAD.ActiveDocument.findObjects("Path::Feature"): - if isinstance(job.Proxy, PathScripts.PathJob.ObjectJob) and job.Label == targetlist: + if ( + isinstance(job.Proxy, PathScripts.PathJob.ObjectJob) + and job.Label == targetlist + ): label = "T{}: {}".format(toolnum, tool.Name) - tc = PathScripts.PathToolController.Create(label, tool=tool, toolNumber=int(toolnum)) + tc = PathScripts.PathToolController.Create( + label, tool=tool, toolNumber=int(toolnum) + ) job.Proxy.addToolController(tc) if self.cb: self.cb() FreeCAD.ActiveDocument.recompute() def tableSelected(self, index): - ''' loads the tools for the selected tool table ''' - name = self.form.TableList.itemWidget(self.form.TableList.itemFromIndex(index)).getTableName() + """loads the tools for the selected tool table""" + name = self.form.TableList.itemWidget( + self.form.TableList.itemFromIndex(index) + ).getTableName() self.loadTable(name) def loadTable(self, name): - ''' loads the tools for the selected tool table ''' + """loads the tools for the selected tool table""" tooldata = self.TLM.getTools(name) if tooldata: self.form.ToolsList.setModel(tooldata) self.form.ToolsList.resizeColumnsToContents() - self.form.ToolsList.horizontalHeader().setResizeMode(self.form.ToolsList.model().columnCount() - 1, QtGui.QHeaderView.Stretch) + self.form.ToolsList.horizontalHeader().setResizeMode( + self.form.ToolsList.model().columnCount() - 1, QtGui.QHeaderView.Stretch + ) self.setCurrentToolTableByName(name) def addNewToolTable(self): - ''' adds new tool to selected tool table ''' + """adds new tool to selected tool table""" name = self.TLM.addNewToolTable() self.loadToolTables() self.loadTable(name) def loadToolTables(self): - ''' Load list of available tool tables ''' + """Load list of available tool tables""" self.form.TableList.clear() model = self.form.ToolsList.model() if model: @@ -314,44 +343,54 @@ class EditorPanel(): listWidgetItem = QtGui.QListWidgetItem() listItem = ToolTableListWidgetItem(self.TLM) listItem.setTableName(table.Name) - listItem.setIcon(QtGui.QPixmap(':/icons/Path_ToolTable.svg')) + listItem.setIcon(QtGui.QPixmap(":/icons/Path_ToolTable.svg")) listItem.toolMoved.connect(self.reloadReset) - listWidgetItem.setSizeHint(QtCore.QSize(0,40)) + listWidgetItem.setSizeHint(QtCore.QSize(0, 40)) self.form.TableList.addItem(listWidgetItem) self.form.TableList.setItemWidget(listWidgetItem, listItem) - #Load the first tooltable + # Load the first tooltable self.loadTable(self.TLM.getCurrentTableName()) def reloadReset(self): - ''' reloads the current tooltable''' + """reloads the current tooltable""" name = self.TLM.getCurrentTableName() self.loadTable(name) def setCurrentToolTableByName(self, name): - ''' get the current tool table ''' + """get the current tool table""" item = self.getToolTableByName(name) if item: self.form.TableList.setCurrentItem(item) def getToolTableByName(self, name): - ''' returns the listWidgetItem for the selected name''' + """returns the listWidgetItem for the selected name""" for i in range(self.form.TableList.count()): - tableName = self.form.TableList.itemWidget(self.form.TableList.item(i)).getTableName() + tableName = self.form.TableList.itemWidget( + self.form.TableList.item(i) + ).getTableName() if tableName == name: return self.form.TableList.item(i) return False def removeToolTable(self): - ''' delete the selected tool table ''' + """delete the selected tool table""" self.TLM.deleteToolTable() self.loadToolTables() def renameTable(self): - ''' provides dialog for new tablename and renames the selected tool table''' + """provides dialog for new tablename and renames the selected tool table""" name = self.TLM.getCurrentTableName() - newName, ok = QtGui.QInputDialog.getText(None, translate("TooltableEditor","Rename Tooltable"),translate("TooltableEditor","Enter Name:"),QtGui.QLineEdit.Normal,name) + newName, ok = QtGui.QInputDialog.getText( + None, + translate("TooltableEditor", "Rename Tooltable"), + translate("TooltableEditor", "Enter Name:"), + QtGui.QLineEdit.Normal, + name, + ) if ok and newName: - index = self.form.TableList.indexFromItem(self.getToolTableByName(name)).row() + index = self.form.TableList.indexFromItem( + self.getToolTableByName(name) + ).row() reloadTables = self.TLM.renameToolTable(newName, index) if reloadTables: self.loadToolTables() @@ -380,14 +419,21 @@ class EditorPanel(): self.form.TableList.itemChanged.connect(self.renameTable) self.form.ButtonAddToolTable.clicked.connect(self.addNewToolTable) - self.form.ButtonAddToolTable.setToolTip(translate("TooltableEditor","Add New Tool Table")) + self.form.ButtonAddToolTable.setToolTip( + translate("TooltableEditor", "Add New Tool Table") + ) self.form.ButtonRemoveToolTable.clicked.connect(self.removeToolTable) - self.form.ButtonRemoveToolTable.setToolTip(translate("TooltableEditor","Delete Selected Tool Table")) + self.form.ButtonRemoveToolTable.setToolTip( + translate("TooltableEditor", "Delete Selected Tool Table") + ) self.form.ButtonRenameToolTable.clicked.connect(self.renameTable) - self.form.ButtonRenameToolTable.setToolTip(translate("TooltableEditor","Rename Selected Tool Table")) + self.form.ButtonRenameToolTable.setToolTip( + translate("TooltableEditor", "Rename Selected Tool Table") + ) self.setFields() + class ToolTableListWidgetItem(QtGui.QWidget): toolMoved = QtCore.Signal() @@ -405,13 +451,13 @@ class ToolTableListWidgetItem(QtGui.QWidget): self.mainLayout.addWidget(self.tableNameLabel, 1) self.setLayout(self.mainLayout) - def setTableName (self, text): + def setTableName(self, text): self.tableNameLabel.setText(text) def getTableName(self): return self.tableNameLabel.text() - def setIcon (self, icon): + def setIcon(self, icon): icon = icon.scaled(24, 24) self.iconQLabel.setPixmap(icon) @@ -434,7 +480,7 @@ class ToolTableListWidgetItem(QtGui.QWidget): self.toolMoved.emit() -class CommandToolLibraryEdit(): +class CommandToolLibraryEdit: def __init__(self): pass @@ -449,10 +495,12 @@ class CommandToolLibraryEdit(): cb() def GetResources(self): - return {'Pixmap' : 'Path_ToolTable', - 'MenuText': QtCore.QT_TRANSLATE_NOOP("Path_ToolTable","Tool Manager"), - 'Accel': "P, T", - 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Path_ToolTable","Tool Manager")} + return { + "Pixmap": "Path_ToolTable", + "MenuText": QtCore.QT_TRANSLATE_NOOP("Path_ToolTable", "Tool Manager"), + "Accel": "P, T", + "ToolTip": QtCore.QT_TRANSLATE_NOOP("Path_ToolTable", "Tool Manager"), + } def IsActive(self): return not FreeCAD.ActiveDocument is None @@ -460,6 +508,7 @@ class CommandToolLibraryEdit(): def Activated(self): self.edit() + if FreeCAD.GuiUp: # register the FreeCAD command - FreeCADGui.addCommand('Path_ToolLibraryEdit',CommandToolLibraryEdit()) + FreeCADGui.addCommand("Path_ToolLibraryEdit", CommandToolLibraryEdit()) diff --git a/src/Mod/Path/PathScripts/PathToolLibraryManager.py b/src/Mod/Path/PathScripts/PathToolLibraryManager.py index a352840597..486a16e31b 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryManager.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryManager.py @@ -35,11 +35,13 @@ import xml.sax from PySide import QtCore, QtGui PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule()) -#PathLog.trackModule(PathLog.thisModule()) +# PathLog.trackModule(PathLog.thisModule()) + def translate(context, text, disambig=None): return QtCore.QCoreApplication.translate(context, text, disambig) + # Tooltable XML readers class FreeCADTooltableHandler(xml.sax.ContentHandler): # http://www.tutorialspoint.com/python/python_xml_processing.htm @@ -62,7 +64,7 @@ class FreeCADTooltableHandler(xml.sax.ContentHandler): self.tool.ToolType = str(attrs["type"]) self.tool.Material = str(attrs["mat"]) # for some reason without the following line I get an error - #print attrs["diameter"] + # print attrs["diameter"] self.tool.Diameter = float(attrs["diameter"]) self.tool.LengthOffset = float(attrs["length"]) self.tool.FlatRadius = float(attrs["flat"]) @@ -80,7 +82,6 @@ class FreeCADTooltableHandler(xml.sax.ContentHandler): class HeeksTooltableHandler(xml.sax.ContentHandler): - def __init__(self): xml.sax.ContentHandler.__init__(self) self.tooltable = Path.Tooltable() @@ -115,15 +116,13 @@ class HeeksTooltableHandler(xml.sax.ContentHandler): elif m == "1": self.tool.Material = "Carbide" # for some reason without the following line I get an error - #print attrs["diameter"] + # print attrs["diameter"] self.tool.Diameter = float(attrs["diameter"]) self.tool.LengthOffset = float(attrs["tool_length_offset"]) self.tool.FlatRadius = float(attrs["flat_radius"]) self.tool.CornerRadius = float(attrs["corner_radius"]) - self.tool.CuttingEdgeAngle = float( - attrs["cutting_edge_angle"]) - self.tool.CuttingEdgeHeight = float( - attrs["cutting_edge_height"]) + self.tool.CuttingEdgeAngle = float(attrs["cutting_edge_angle"]) + self.tool.CuttingEdgeHeight = float(attrs["cutting_edge_height"]) # Call when an elements ends def endElement(self, name): @@ -134,17 +133,21 @@ class HeeksTooltableHandler(xml.sax.ContentHandler): self.tool = None -class ToolLibraryManager(): - ''' +class ToolLibraryManager: + """ The Tool Library is a list of individual tool tables. Each Tool Table can contain n tools. The tool library will be persisted to user preferences and all or part of the library can be exported to other formats - ''' + """ - TooltableTypeJSON = translate("PathToolLibraryManager", "Tooltable JSON (*.json)") - TooltableTypeXML = translate("PathToolLibraryManager", "Tooltable XML (*.xml)") - TooltableTypeHeekscad = translate("PathToolLibraryManager", "HeeksCAD tooltable (*.tooltable)") - TooltableTypeLinuxCNC = translate("PathToolLibraryManager", "LinuxCNC tooltable (*.tbl)") + TooltableTypeJSON = translate("PathToolLibraryManager", "Tooltable JSON (*.json)") + TooltableTypeXML = translate("PathToolLibraryManager", "Tooltable XML (*.xml)") + TooltableTypeHeekscad = translate( + "PathToolLibraryManager", "HeeksCAD tooltable (*.tooltable)" + ) + TooltableTypeLinuxCNC = translate( + "PathToolLibraryManager", "LinuxCNC tooltable (*.tbl)" + ) PreferenceMainLibraryXML = "ToolLibrary" PreferenceMainLibraryJSON = "ToolLibrary-Main" @@ -156,38 +159,40 @@ class ToolLibraryManager(): self.loadToolTables() def getToolTables(self): - ''' Return tool table list ''' + """Return tool table list""" return self.toolTables def getCurrentTableName(self): - ''' return the name of the currently loaded tool table ''' + """return the name of the currently loaded tool table""" return self.currentTableName def getCurrentTable(self): - ''' returns an object of the current tool table ''' + """returns an object of the current tool table""" return self.getTableFromName(self.currentTableName) def getTableFromName(self, name): - ''' get the tool table object from the name ''' + """get the tool table object from the name""" for table in self.toolTables: if table.Name == name: return table - def getNextToolTableName(self, tableName='Tool Table'): - ''' get a unique name for a new tool table ''' + def getNextToolTableName(self, tableName="Tool Table"): + """get a unique name for a new tool table""" iter = 1 tempName = tableName[-2:] - if tempName[0] == '-' and tempName[-1].isdigit(): + if tempName[0] == "-" and tempName[-1].isdigit(): tableName = tableName[:-2] - while any(table.Name == tableName + '-' + str(iter) for table in self.toolTables): + while any( + table.Name == tableName + "-" + str(iter) for table in self.toolTables + ): iter += 1 - return tableName + '-' + str(iter) + return tableName + "-" + str(iter) def addNewToolTable(self): - ''' creates a new tool table ''' + """creates a new tool table""" tt = Path.Tooltable() tt.Version = 1 name = self.getNextToolTableName() @@ -197,20 +202,27 @@ class ToolLibraryManager(): return name def deleteToolTable(self): - ''' deletes the selected tool table ''' + """deletes the selected tool table""" if len(self.toolTables): - index = next((index for (index, d) in enumerate(self.toolTables) if d.Name == self.currentTableName), None) + index = next( + ( + index + for (index, d) in enumerate(self.toolTables) + if d.Name == self.currentTableName + ), + None, + ) self.toolTables.pop(index) self.saveMainLibrary() def renameToolTable(self, newName, index): - ''' renames a tool table with the new name''' + """renames a tool table with the new name""" currentTableName = self.toolTables[index].Name if newName == currentTableName: - PathLog.error(translate('PathToolLibraryManager', "Tool Table Same Name")) + PathLog.error(translate("PathToolLibraryManager", "Tool Table Same Name")) return False if newName in self.toolTables: - PathLog.error(translate('PathToolLibraryManager', "Tool Table Name Exists")) + PathLog.error(translate("PathToolLibraryManager", "Tool Table Name Exists")) return False tt = self.getTableFromName(currentTableName) if tt: @@ -218,67 +230,74 @@ class ToolLibraryManager(): self.saveMainLibrary() return True - def templateAttrs(self): - ''' gets the tool table arributes ''' + """gets the tool table arributes""" toolTables = [] for tt in self.toolTables: tableData = {} - tableData['Version'] = 1 - tableData['TableName'] = tt.Name + tableData["Version"] = 1 + tableData["TableName"] = tt.Name toolData = {} for tool in tt.Tools: toolData[tool] = tt.Tools[tool].templateAttrs() - tableData['Tools'] = toolData + tableData["Tools"] = toolData toolTables.append(tableData) return toolTables def tooltableFromAttrs(self, stringattrs): - if stringattrs.get('Version') and 1 == int(stringattrs['Version']): + if stringattrs.get("Version") and 1 == int(stringattrs["Version"]): tt = Path.Tooltable() tt.Version = 1 tt.Name = self.getNextToolTableName() - if stringattrs.get('Version'): - tt.Version = stringattrs.get('Version') + if stringattrs.get("Version"): + tt.Version = stringattrs.get("Version") - if stringattrs.get('TableName'): - tt.Name = stringattrs.get('TableName') + if stringattrs.get("TableName"): + tt.Name = stringattrs.get("TableName") if any(table.Name == tt.Name for table in self.toolTables): tt.Name = self.getNextToolTableName(tt.Name) - for key, attrs in PathUtil.keyValueIter(stringattrs['Tools']): - tool = Path.Tool() - tool.Name = str(attrs["name"]) - tool.ToolType = str(attrs["tooltype"]) - tool.Material = str(attrs["material"]) - tool.Diameter = float(attrs["diameter"]) - tool.LengthOffset = float(attrs["lengthOffset"]) - tool.FlatRadius = float(attrs["flatRadius"]) - tool.CornerRadius = float(attrs["cornerRadius"]) - tool.CuttingEdgeAngle = float(attrs["cuttingEdgeAngle"]) - tool.CuttingEdgeHeight = float(attrs["cuttingEdgeHeight"]) - tt.setTool(int(key), tool) + for key, attrs in PathUtil.keyValueIter(stringattrs["Tools"]): + tool = Path.Tool() + tool.Name = str(attrs["name"]) + tool.ToolType = str(attrs["tooltype"]) + tool.Material = str(attrs["material"]) + tool.Diameter = float(attrs["diameter"]) + tool.LengthOffset = float(attrs["lengthOffset"]) + tool.FlatRadius = float(attrs["flatRadius"]) + tool.CornerRadius = float(attrs["cornerRadius"]) + tool.CuttingEdgeAngle = float(attrs["cuttingEdgeAngle"]) + tool.CuttingEdgeHeight = float(attrs["cuttingEdgeHeight"]) + tt.setTool(int(key), tool) return tt else: - PathLog.error(translate('PathToolLibraryManager', "Unsupported Path tooltable template version %s") % stringattrs.get('Version')) + PathLog.error( + translate( + "PathToolLibraryManager", + "Unsupported Path tooltable template version %s", + ) + % stringattrs.get("Version") + ) return None def loadToolTables(self): - ''' loads the tool tables from the stored data ''' + """loads the tool tables from the stored data""" self.toolTables = [] - self.currentTableName = '' + self.currentTableName = "" def addTable(tt): if tt: self.toolTables.append(tt) else: - PathLog.error(translate('PathToolLibraryManager', "Unsupported Path tooltable")) + PathLog.error( + translate("PathToolLibraryManager", "Unsupported Path tooltable") + ) prefString = self.prefs.GetString(self.PreferenceMainLibraryJSON, "") @@ -300,14 +319,14 @@ class ToolLibraryManager(): self.currentTableName = self.toolTables[0].Name def saveMainLibrary(self): - '''Persists the permanent library to FreeCAD user preferences''' + """Persists the permanent library to FreeCAD user preferences""" tmpstring = json.dumps(self.templateAttrs()) self.prefs.SetString(self.PreferenceMainLibraryJSON, tmpstring) self.loadToolTables() return True def getJobList(self): - '''Builds the list of all Tool Table lists''' + """Builds the list of all Tool Table lists""" tablelist = [] for o in FreeCAD.ActiveDocument.Objects: @@ -318,27 +337,29 @@ class ToolLibraryManager(): return tablelist def getTool(self, listname, toolnum): - ''' gets the tool object ''' + """gets the tool object""" tt = self.getTableFromName(listname) return tt.getTool(toolnum) def getTools(self, tablename): - '''returns the tool data for a given table''' + """returns the tool data for a given table""" tooldata = [] - tableExists = any(table.Name == tablename for table in self.toolTables) + tableExists = any(table.Name == tablename for table in self.toolTables) if tableExists: self.currentTableName = tablename else: return None tt = self.getTableFromName(tablename) - headers = ["","Tool Num.","Name","Tool Type","Diameter"] + headers = ["", "Tool Num.", "Name", "Tool Type", "Diameter"] model = QtGui.QStandardItemModel() model.setHorizontalHeaderLabels(headers) def unitconv(ivalue): val = FreeCAD.Units.Quantity(ivalue, FreeCAD.Units.Length) - displayed_val = val.UserString #just the displayed value-not the internal one + displayed_val = ( + val.UserString + ) # just the displayed value-not the internal one return displayed_val if tt: @@ -348,10 +369,10 @@ class ToolLibraryManager(): itemcheck = QtGui.QStandardItem() itemcheck.setCheckable(True) - itemNumber = QtGui.QStandardItem(str(number)) - itemName = QtGui.QStandardItem(t.Name) - itemToolType = QtGui.QStandardItem(t.ToolType) - itemDiameter = QtGui.QStandardItem(unitconv(t.Diameter)) + itemNumber = QtGui.QStandardItem(str(number)) + itemName = QtGui.QStandardItem(t.Name) + itemToolType = QtGui.QStandardItem(t.ToolType) + itemDiameter = QtGui.QStandardItem(unitconv(t.Diameter)) row = [itemcheck, itemNumber, itemName, itemToolType, itemDiameter] model.appendRow(row) @@ -367,9 +388,9 @@ class ToolLibraryManager(): try: fileExtension = os.path.splitext(filename[0])[1].lower() xmlHandler = None - if fileExtension == '.tooltable': + if fileExtension == ".tooltable": xmlHandler = HeeksTooltableHandler() - if fileExtension == '.xml': + if fileExtension == ".xml": xmlHandler = FreeCADTooltableHandler() if xmlHandler: @@ -405,41 +426,58 @@ class ToolLibraryManager(): else: return False - except Exception as e: # pylint: disable=broad-except + except Exception as e: # pylint: disable=broad-except print("could not parse file", e) - def write(self, filename, listname): "exports the tooltable to a file" tt = self.getTableFromName(listname) if tt: try: + def openFileWithExtension(name, ext): fext = os.path.splitext(name)[1].lower() if fext != ext: name = "{}{}".format(name, ext) - return (open(PathUtil.toUnicode(name), 'w'), name) + return (open(PathUtil.toUnicode(name), "w"), name) if filename[1] == self.TooltableTypeXML: - fp,fname = openFileWithExtension(filename[0], '.xml') + fp, fname = openFileWithExtension(filename[0], ".xml") fp.write('\n') fp.write(tt.Content) elif filename[1] == self.TooltableTypeLinuxCNC: - fp,fname = openFileWithExtension(filename[0], '.tbl') + fp, fname = openFileWithExtension(filename[0], ".tbl") for key in tt.Tools: t = tt.Tools[key] - fp.write("T{0} P{0} Y{1} Z{2} A{3} B{4} C{5} U{6} V{7} W{8} D{9} I{10} J{11} Q{12} ;{13}\n".format(key,0,t.LengthOffset,0,0,0,0,0,0,t.Diameter,0,0,0,t.Name)) + fp.write( + "T{0} P{0} Y{1} Z{2} A{3} B{4} C{5} U{6} V{7} W{8} D{9} I{10} J{11} Q{12} ;{13}\n".format( + key, + 0, + t.LengthOffset, + 0, + 0, + 0, + 0, + 0, + 0, + t.Diameter, + 0, + 0, + 0, + t.Name, + ) + ) else: - fp,fname = openFileWithExtension(filename[0], '.json') + fp, fname = openFileWithExtension(filename[0], ".json") json.dump(self.templateAttrs(), fp, sort_keys=True, indent=2) fp.close() print("Written ", PathUtil.toUnicode(fname)) - except Exception as e: # pylint: disable=broad-except + except Exception as e: # pylint: disable=broad-except print("Could not write file:", e) - def addnew(self, listname, tool, position = None): + def addnew(self, listname, tool, position=None): "adds a new tool at the end of the table" tt = self.getTableFromName(listname) if not tt: @@ -456,7 +494,7 @@ class ToolLibraryManager(): return newID def updateTool(self, listname, toolnum, tool): - '''updates tool data''' + """updates tool data""" tt = self.getTableFromName(listname) tt.deleteTool(toolnum) tt.setTool(toolnum, tool) @@ -498,7 +536,7 @@ class ToolLibraryManager(): return True, target def duplicate(self, number, listname): - ''' duplicates the selected tool in the selected tool table ''' + """duplicates the selected tool in the selected tool table""" tt = self.getTableFromName(listname) tool = tt.getTool(number).copy() tt.addTools(tool) @@ -510,7 +548,7 @@ class ToolLibraryManager(): return True, newID def moveToTable(self, number, listname): - ''' Moves the tool to selected tool table ''' + """Moves the tool to selected tool table""" fromTable = self.getTableFromName(self.getCurrentTableName()) toTable = self.getTableFromName(listname) tool = fromTable.getTool(number).copy() @@ -518,9 +556,9 @@ class ToolLibraryManager(): fromTable.deleteTool(number) def delete(self, number, listname): - '''deletes a tool from the current list''' + """deletes a tool from the current list""" tt = self.getTableFromName(listname) tt.deleteTool(number) if listname == self.getCurrentTableName(): self.saveMainLibrary() - return True \ No newline at end of file + return True