Import and opening current tool tables

Handle opening and importing current  (pre-0.19) tool tables.
This commit is contained in:
Daniel Wood
2019-08-26 20:19:12 +01:00
parent 9a5766e451
commit 8faf893f98

View File

@@ -146,7 +146,6 @@ class ToolLibraryManager():
'''
#TODO: copy & Duplicate tools between lists
#TODO: update version number and handle upgrading
TooltableTypeJSON = translate("TooltableEditor", "Tooltable JSON (*.json)")
TooltableTypeXML = translate("TooltableEditor", "Tooltable XML (*.xml)")
@@ -181,18 +180,18 @@ class ToolLibraryManager():
if table.Name == name:
return table
def getNextToolTableName(self):
def getNextToolTableName(self, tableName='Tool Table'):
''' get a unique name for a new tool table '''
iter = 1
tableNames = []
tempName = tableName[-2:]
for table in self.toolTables:
tableNames.append(table.Name)
while "ToolTable-" + str(iter) in tableNames:
if tempName[0] == '-' and tempName[-1].isdigit():
tableName = tableName[:-2]
while any(table.Name == tableName + '-' + str(iter) for table in self.toolTables):
iter += 1
return "ToolTable-" + str(iter)
return tableName + '-' + str(iter)
def addNewToolTable(self):
''' creates a new tool table '''
@@ -248,13 +247,16 @@ class ToolLibraryManager():
tt = Path.Tooltable()
tt.Version = 1
tt.Name = self.getNextToolTableName()
if stringattrs.get('Version'):
tt.Version = stringattrs.get('Version')
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"])
@@ -278,15 +280,22 @@ class ToolLibraryManager():
self.toolTables = []
self.currentTableName = ''
prefsData = self.prefs.GetString(self.PreferenceMainLibraryJSON, "")
if prefsData:
for table in json.loads(prefsData):
def addTable(tt):
if tt:
self.toolTables.append(tt)
else:
PathLog.error(translate('PathToolLibraryManager', "Unsupported Path tooltable"))
prefsData = json.loads(self.prefs.GetString(self.PreferenceMainLibraryJSON, ""))
if isinstance(prefsData, dict):
tt = self.tooltableFromAttrs(prefsData)
addTable(tt)
if isinstance(prefsData, list):
for table in prefsData:
tt = self.tooltableFromAttrs(table)
if tt:
self.toolTables.append(tt)
else:
PathLog.error(translate('PathToolLibraryManager', "Unsupported Path tooltable"))
addTable(tt)
def saveMainLibrary(self):
'''Persists the permanent library to FreeCAD user preferences'''
@@ -384,6 +393,8 @@ class ToolLibraryManager():
def read(self, filename, listname):
"imports a tooltable from a file"
importedTables = []
try:
fileExtension = os.path.splitext(filename[0])[1].lower()
xmlHandler = None
@@ -403,15 +414,35 @@ class ToolLibraryManager():
ht = xmlHandler.tooltable
else:
with open(PathUtil.toUnicode(filename[0]), "rb") as fp:
ht = self.tooltableFromAttrs(json.load(fp))
tableData = json.load(fp)
tt = self.getTableFromName(listname)
for t in ht.Tools:
newt = ht.getTool(t).copy()
tt.addTools(newt)
if listname == self.getCurrentTableName():
if isinstance(tableData, dict):
ht = self.tooltableFromAttrs(tableData)
if ht:
importedTables.append(ht)
if isinstance(tableData, list):
for table in tableData:
ht = self.tooltableFromAttrs(table)
if ht:
importedTables.append(ht)
if importedTables:
for tt in importedTables:
self.toolTables.append(tt)
self.saveMainLibrary()
return True
return True
else:
return False
# tt = self.getTableFromName(listname)
# for t in ht.Tools:
# newt = ht.getTool(t).copy()
# tt.addTools(newt)
# if listname == self.getCurrentTableName():
# self.saveMainLibrary()
# return True
except Exception as e: # pylint: disable=broad-except
print("could not parse file", e)
@@ -648,7 +679,8 @@ class EditorPanel():
if filename[0]:
listname = self.TLM.getNextToolTableName()
if self.TLM.read(filename, listname):
self.loadTable(listname)
self.loadToolTables()
#self.loadTable(listname)
def exportFile(self):