From ddcc16a4d9c1c458d69714ba0f070d65a87009b1 Mon Sep 17 00:00:00 2001 From: Daniel Wood Date: Mon, 9 Sep 2019 18:52:31 +0100 Subject: [PATCH 1/3] Check there is preference data before attemping to load it. --- src/Mod/Path/PathScripts/PathToolLibraryManager.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Mod/Path/PathScripts/PathToolLibraryManager.py b/src/Mod/Path/PathScripts/PathToolLibraryManager.py index 8280b6ff1f..1b74150c64 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryManager.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryManager.py @@ -286,7 +286,12 @@ class ToolLibraryManager(): else: PathLog.error(translate('PathToolLibraryManager', "Unsupported Path tooltable")) - prefsData = json.loads(self.prefs.GetString(self.PreferenceMainLibraryJSON, "")) + prefString = self.prefs.GetString(self.PreferenceMainLibraryJSON, "") + + if not prefString: + return + + prefsData = json.loads(prefString) if isinstance(prefsData, dict): tt = self.tooltableFromAttrs(prefsData) From 2b46157bc6b4005bdc3e23db0362b66d13040c5d Mon Sep 17 00:00:00 2001 From: Daniel Wood Date: Mon, 9 Sep 2019 20:19:46 +0100 Subject: [PATCH 2/3] Make sure the tool current tool table gets set. --- src/Mod/Path/PathScripts/PathToolLibraryManager.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathToolLibraryManager.py b/src/Mod/Path/PathScripts/PathToolLibraryManager.py index 1b74150c64..9efb060fee 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryManager.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryManager.py @@ -156,11 +156,6 @@ class ToolLibraryManager(): self.toolTables = [] self.currentTableName = None self.loadToolTables() - - if len(self.toolTables): - self.currentTableName = self.toolTables[0].Name - - return def getToolTables(self): ''' Return tool table list ''' @@ -302,6 +297,9 @@ class ToolLibraryManager(): tt = self.tooltableFromAttrs(table) addTable(tt) + if len(self.toolTables): + self.currentTableName = self.toolTables[0].Name + def saveMainLibrary(self): '''Persists the permanent library to FreeCAD user preferences''' tmpstring = json.dumps(self.templateAttrs()) From aafd630a9ce5a5c15d8ca6eeecd45a54985dea04 Mon Sep 17 00:00:00 2001 From: Daniel Wood Date: Mon, 9 Sep 2019 20:26:55 +0100 Subject: [PATCH 3/3] Don't try deleting tool tables when none exist. --- src/Mod/Path/PathScripts/PathToolLibraryManager.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathToolLibraryManager.py b/src/Mod/Path/PathScripts/PathToolLibraryManager.py index 9efb060fee..2ad794413c 100644 --- a/src/Mod/Path/PathScripts/PathToolLibraryManager.py +++ b/src/Mod/Path/PathScripts/PathToolLibraryManager.py @@ -200,9 +200,10 @@ class ToolLibraryManager(): def deleteToolTable(self): ''' deletes the selected tool table ''' - index = next((index for (index, d) in enumerate(self.toolTables) if d.Name == self.currentTableName), None) - self.toolTables.pop(index) - self.saveMainLibrary() + if len(self.toolTables): + 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'''