From 443f9a51e8b5647a09f61d992f044eeace269886 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Thu, 29 Oct 2020 12:53:19 +0200 Subject: [PATCH] - added a protection on opening the tools database UI if the tools DB file is not loaded --- CHANGELOG.md | 1 + appObjects/FlatCAMGeometry.py | 4 +++- appTools/ToolCutOut.py | 4 +++- appTools/ToolIsolation.py | 4 +++- appTools/ToolNCC.py | 4 +++- appTools/ToolPaint.py | 4 +++- app_Main.py | 15 +++++++++++++++ 7 files changed, 31 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a0419bb..e19e60fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ CHANGELOG for FlatCAM beta - updated Punch Gerber Tool such that the aperture table is updated upon clicking of the checboxes in Processed Pads Type - updated Punch Gerber Tool: the Excellon method now takes into consideration the pads choice - minor change for the FCComboBox UI element by setting its size policy as ignored so it will not expand the notebook when the name of one of its items is very long +- added a protection on opening the tools database UI if the tools DB file is not loaded 28.10.2020 diff --git a/appObjects/FlatCAMGeometry.py b/appObjects/FlatCAMGeometry.py index 549eadfa..b6c1fbb9 100644 --- a/appObjects/FlatCAMGeometry.py +++ b/appObjects/FlatCAMGeometry.py @@ -1100,7 +1100,9 @@ class GeometryObject(FlatCAMObj, Geometry): if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): self.app.ui.plot_tab_area.setCurrentWidget(self.app.tools_db_tab) break - self.app.on_tools_database() + ret_val = self.app.on_tools_database() + if ret_val == 'fail': + return self.app.tools_db_tab.ok_to_add = True self.app.tools_db_tab.ui.buttons_frame.hide() self.app.tools_db_tab.ui.add_tool_from_db.show() diff --git a/appTools/ToolCutOut.py b/appTools/ToolCutOut.py index e9762474..063f2671 100644 --- a/appTools/ToolCutOut.py +++ b/appTools/ToolCutOut.py @@ -525,7 +525,9 @@ class CutOut(AppTool): if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): self.app.ui.plot_tab_area.setCurrentWidget(self.app.tools_db_tab) break - self.app.on_tools_database(source='cutout') + ret_val = self.app.on_tools_database(source='cutout') + if ret_val == 'fail': + return self.app.tools_db_tab.ok_to_add = True self.app.tools_db_tab.ui.buttons_frame.hide() self.app.tools_db_tab.ui.add_tool_from_db.show() diff --git a/appTools/ToolIsolation.py b/appTools/ToolIsolation.py index 75ecf8ed..6ae016b6 100644 --- a/appTools/ToolIsolation.py +++ b/appTools/ToolIsolation.py @@ -2680,7 +2680,9 @@ class ToolIsolation(AppTool, Gerber): if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): self.app.ui.plot_tab_area.setCurrentWidget(self.app.tools_db_tab) break - self.app.on_tools_database(source='iso') + ret_val = self.app.on_tools_database(source='iso') + if ret_val == 'fail': + return self.app.tools_db_tab.ok_to_add = True self.app.tools_db_tab.ui.buttons_frame.hide() self.app.tools_db_tab.ui.add_tool_from_db.show() diff --git a/appTools/ToolNCC.py b/appTools/ToolNCC.py index 18fb1034..e4dd9bf6 100644 --- a/appTools/ToolNCC.py +++ b/appTools/ToolNCC.py @@ -3809,7 +3809,9 @@ class NonCopperClear(AppTool, Gerber): if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): self.app.ui.plot_tab_area.setCurrentWidget(self.app.tools_db_tab) break - self.app.on_tools_database(source='ncc') + ret_val = self.app.on_tools_database(source='ncc') + if ret_val == 'fail': + return self.app.tools_db_tab.ok_to_add = True self.app.tools_db_tab.ui.buttons_frame.hide() self.app.tools_db_tab.ui.add_tool_from_db.show() diff --git a/appTools/ToolPaint.py b/appTools/ToolPaint.py index 8c1ebb52..3c600dab 100644 --- a/appTools/ToolPaint.py +++ b/appTools/ToolPaint.py @@ -2725,7 +2725,9 @@ class ToolPaint(AppTool, Gerber): if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"): self.app.ui.plot_tab_area.setCurrentWidget(self.app.tools_db_tab) break - self.app.on_tools_database(source='paint') + ret_val = self.app.on_tools_database(source='paint') + if ret_val == 'fail': + return self.app.tools_db_tab.ok_to_add = True self.app.tools_db_tab.ui.buttons_frame.hide() self.app.tools_db_tab.ui.add_tool_from_db.show() diff --git a/app_Main.py b/app_Main.py index e2119e16..d549b5f4 100644 --- a/app_Main.py +++ b/app_Main.py @@ -5648,6 +5648,21 @@ class App(QtCore.QObject): :return: """ + filename = self.data_path + '\\tools_db.FlatDB' + + # load the database tools from the file + try: + with open(filename) as f: + __ = f.read() + except Exception as eros: + log.debug("The tools DB file is not loaded: %s" % str(eros)) + log.error("Could not access tools DB file. The file may be locked,\n" + "not existing or doesn't have the read permissions.\n" + "Check to see if exists, it should be here: %s\n" + "It may help to reboot the app, it will try to recreate it if it's missing." % self.data_path) + self.inform.emit('[ERROR] %s' % _("Could not load Tools DB file.")) + return 'fail' + for idx in range(self.ui.plot_tab_area.count()): if self.ui.plot_tab_area.tabText(idx) == _("Tools Database"): # there can be only one instance of Tools Database at one time