Explorar o código

- fixed an issue in Tools Database (ToolsDB2 class) that did not made the Tab name in Red color when adding/deleting a tool by using the context menu
- optimized the Tools Database

Marius Stanciu %!s(int64=5) %!d(string=hai) anos
pai
achega
9b1e78d285
Modificáronse 3 ficheiros con 51 adicións e 32 borrados
  1. 2 0
      CHANGELOG.md
  2. 49 10
      appDatabase.py
  3. 0 22
      app_Main.py

+ 2 - 0
CHANGELOG.md

@@ -15,6 +15,8 @@ CHANGELOG for FlatCAM beta
 - fixed a bug in conversion of any to Gerber in the section of Excellon conversion
 - some PEP8 fixes
 - fixed a bug due of recent chagnes in FileMenuHandlers class
+- fixed an issue in Tools Database (ToolsDB2 class) that did not made the Tab name in Red color when adding/deleting a tool by using the context menu
+- optimized the Tools Database
 
 26.10.2020
 

+ 49 - 10
appDatabase.py

@@ -271,7 +271,7 @@ class ToolsDB2UI:
 
         self.tool_op_combo = FCComboBox()
         self.tool_op_combo.addItems(
-            [_("General"), _("Milling"), _("Drilling"), _('Isolation'), _('Paint'), _('NCC'), _("Cutout")])
+            [_("General"), _("Milling"), _("Drilling"), _('Isolation'), _('Paint'), _('NCC'), _('Cutout')])
         self.tool_op_combo.setObjectName('gdb_tool_target')
 
         self.grid_tool.addWidget(self.tool_op_label, 8, 0)
@@ -1393,13 +1393,12 @@ class ToolsDB2(QtWidgets.QWidget):
 
     mark_tools_rows = QtCore.pyqtSignal()
 
-    def __init__(self, app, callback_on_edited, callback_on_tool_request, parent=None):
+    def __init__(self, app, callback_on_tool_request, parent=None):
         super(ToolsDB2, self).__init__(parent)
 
         self.app = app
         self.app_ui = self.app.ui
         self.decimals = self.app.decimals
-        self.callback_app = callback_on_edited
 
         self.on_tool_request = callback_on_tool_request
 
@@ -2028,7 +2027,7 @@ class ToolsDB2(QtWidgets.QWidget):
             self.ui.tree_widget.setCurrentItem(last_item)
             last_item.setSelected(True)
 
-        self.callback_app()
+        self.on_tools_db_edited()
         self.app.inform.emit('[success] %s' % _("Tool copied from Tools DB."))
 
     def on_tool_delete(self):
@@ -2169,7 +2168,7 @@ class ToolsDB2(QtWidgets.QWidget):
                     if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Drilling'):
                         for k in list(self.db_tool_dict[tool_id]['data'].keys()):
                             if str(k).startswith('tools_'):
-                                if str(k).startswith('tools_drill'):
+                                if str(k).startswith('tools_drill') or str(k).startswith('tools_mill'):
                                     pass
                                 else:
                                     self.db_tool_dict[tool_id]['data'].pop(k, None)
@@ -2177,7 +2176,7 @@ class ToolsDB2(QtWidgets.QWidget):
                     if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Isolation'):
                         for k in list(self.db_tool_dict[tool_id]['data'].keys()):
                             if str(k).startswith('tools_'):
-                                if str(k).startswith('tools_iso'):
+                                if str(k).startswith('tools_iso') or str(k).startswith('tools_mill'):
                                     pass
                                 else:
                                     self.db_tool_dict[tool_id]['data'].pop(k, None)
@@ -2185,7 +2184,7 @@ class ToolsDB2(QtWidgets.QWidget):
                     if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Paint'):
                         for k in list(self.db_tool_dict[tool_id]['data'].keys()):
                             if str(k).startswith('tools_'):
-                                if str(k).startswith('tools_paint'):
+                                if str(k).startswith('tools_paint') or str(k).startswith('tools_mill'):
                                     pass
                                 else:
                                     self.db_tool_dict[tool_id]['data'].pop(k, None)
@@ -2193,7 +2192,15 @@ class ToolsDB2(QtWidgets.QWidget):
                     if self.db_tool_dict[tool_id]['data']['tool_target'] == _('NCC'):
                         for k in list(self.db_tool_dict[tool_id]['data'].keys()):
                             if str(k).startswith('tools_'):
-                                if str(k).startswith('tools_ncc'):
+                                if str(k).startswith('tools_ncc') or str(k).startswith('tools_mill'):
+                                    pass
+                                else:
+                                    self.db_tool_dict[tool_id]['data'].pop(k, None)
+
+                    if self.db_tool_dict[tool_id]['data']['tool_target'] == _('Cutout'):
+                        for k in list(self.db_tool_dict[tool_id]['data'].keys()):
+                            if str(k).startswith('tools_'):
+                                if str(k).startswith('tools_cutout') or str(k).startswith('tools_mill'):
                                     pass
                                 else:
                                     self.db_tool_dict[tool_id]['data'].pop(k, None)
@@ -2354,11 +2361,24 @@ class ToolsDB2(QtWidgets.QWidget):
             if wdg is None:
                 return
 
+            if isinstance(wdg, FCButton) or isinstance(wdg, QtWidgets.QAction):
+                # this is called when adding a new tool; no need to run the update below since that section is for
+                # when editing a tool
+                self.on_tools_db_edited()
+                return
+
             wdg_name = wdg.objectName()
             val = wdg.get_value()
-        except AttributeError:
+        except AttributeError as err:
+            self.app.log.debug("ToolsDB2.update_storage() -> %s" % str(err))
             return
 
+        # #############################################################################################################
+        # #############################################################################################################
+        # ################ EDITING PARAMETERS IN A TOOL SECTION
+        # #############################################################################################################
+        # #############################################################################################################
+
         # #############################################################################################################
         # this might change in the future; it makes sense to change values at once for all tools
         # for now change values only for one tool at once
@@ -2522,7 +2542,7 @@ class ToolsDB2(QtWidgets.QWidget):
             elif wdg_name == "gdb_ct_mb_spacing":
                 self.db_tool_dict[tool_id]['data']['tools_cutout_mb_spacing'] = val
 
-        self.callback_app()
+        self.on_tools_db_edited()
 
     def on_tool_requested_from_app(self):
         if not self.ui.tree_widget.selectedItems():
@@ -2541,6 +2561,25 @@ class ToolsDB2(QtWidgets.QWidget):
                     selected_tool = self.db_tool_dict[key]
                     self.on_tool_request(tool=selected_tool)
 
+    def on_tools_db_edited(self, silent=None):
+        """
+        Executed whenever a tool is edited in Tools Database.
+        Will color the text of the Tools Database tab to Red color.
+
+        :return:
+        """
+
+        for idx in range(self.app.ui.plot_tab_area.count()):
+            if self.app.ui.plot_tab_area.tabText(idx) == _("Tools Database"):
+                self.app.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red'))
+
+        self.ui.save_db_btn.setStyleSheet("QPushButton {color: red;}")
+
+        self.tools_db_changed_flag = True
+        if silent is None:
+            msg = '[WARNING_NOTCL] %s' % _("Tools in Tools Database edited but not saved.")
+            self.app.inform[str, bool].emit(msg, False)
+
     def on_cancel_tool(self):
         for idx in range(self.app_ui.plot_tab_area.count()):
             if self.app_ui.plot_tab_area.tabText(idx) == _("Tools Database"):

+ 0 - 22
app_Main.py

@@ -5648,35 +5648,30 @@ class App(QtCore.QObject):
             self.tools_db_tab = ToolsDB2(
                 app=self,
                 parent=self.ui,
-                callback_on_edited=self.on_tools_db_edited,
                 callback_on_tool_request=self.on_geometry_tool_add_from_db_executed
             )
         elif source == 'ncc':
             self.tools_db_tab = ToolsDB2(
                 app=self,
                 parent=self.ui,
-                callback_on_edited=self.on_tools_db_edited,
                 callback_on_tool_request=self.ncclear_tool.on_ncc_tool_add_from_db_executed
             )
         elif source == 'paint':
             self.tools_db_tab = ToolsDB2(
                 app=self,
                 parent=self.ui,
-                callback_on_edited=self.on_tools_db_edited,
                 callback_on_tool_request=self.paint_tool.on_paint_tool_add_from_db_executed
             )
         elif source == 'iso':
             self.tools_db_tab = ToolsDB2(
                 app=self,
                 parent=self.ui,
-                callback_on_edited=self.on_tools_db_edited,
                 callback_on_tool_request=self.isolation_tool.on_iso_tool_add_from_db_executed
             )
         elif source == 'cutout':
             self.tools_db_tab = ToolsDB2(
                 app=self,
                 parent=self.ui,
-                callback_on_edited=self.on_tools_db_edited,
                 callback_on_tool_request=self.cutout_tool.on_cutout_tool_add_from_db_executed
             )
 
@@ -5702,23 +5697,6 @@ class App(QtCore.QObject):
         # detect changes in the Tools in Tools DB, connect signals from table widget in tab
         self.tools_db_tab.ui_connect()
 
-    def on_tools_db_edited(self):
-        """
-        Executed whenever a tool is edited in Tools Database.
-        Will color the text of the Tools Database tab to Red color.
-
-        :return:
-        """
-
-        self.inform[str, bool].emit('[WARNING_NOTCL] %s' % _("Tools in Tools Database edited but not saved."), False)
-
-        for idx in range(self.ui.plot_tab_area.count()):
-            if self.ui.plot_tab_area.tabText(idx) == _("Tools Database"):
-                self.ui.plot_tab_area.tabBar.setTabTextColor(idx, QtGui.QColor('red'))
-                self.tools_db_tab.ui.save_db_btn.setStyleSheet("QPushButton {color: red;}")
-
-        self.tools_db_changed_flag = True
-
     def on_geometry_tool_add_from_db_executed(self, tool):
         """
         Here add the tool from DB  in the selected geometry object.