From 32dd8870f89a221e2198227123b026ba3d35162d Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Sat, 13 Jun 2020 01:03:36 +0300 Subject: [PATCH] - modified the Tools Database such that there is now a way to mark a tool as meant to be used in a certain part of the application; it will disable or enable parts of the parameters of the tool --- CHANGELOG.md | 4 ++ appDatabase.py | 104 ++++++++++++++++++++++++++++++++++++++++++------- 2 files changed, 95 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1aa56b20..2dcfc87f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta ================================================= +13.06.2020 + +- modified the Tools Database such that there is now a way to mark a tool as meant to be used in a certain part of the application; it will disable or enable parts of the parameters of the tool + 12.06.2020 - NCC Tool optimization - moved the UI in its own class diff --git a/appDatabase.py b/appDatabase.py index a99594f2..972b2ed8 100644 --- a/appDatabase.py +++ b/appDatabase.py @@ -1008,6 +1008,21 @@ class ToolsDB2(QtWidgets.QWidget): # ########################################################################### # ############## The UI form ################################################ # ########################################################################### + + # Tool description box + self.tool_description_box = QtWidgets.QGroupBox() + self.tool_description_box.setStyleSheet(""" + QGroupBox + { + font-size: 16px; + font-weight: bold; + } + """) + self.description_vlay = QtWidgets.QVBoxLayout() + self.tool_description_box.setTitle(_("Tool Description")) + self.tool_description_box.setFixedWidth(250) + + # Geometry Basic box self.basic_box = QtWidgets.QGroupBox() self.basic_box.setStyleSheet(""" QGroupBox @@ -1020,6 +1035,7 @@ class ToolsDB2(QtWidgets.QWidget): self.basic_box.setTitle(_("Basic Geo Parameters")) self.basic_box.setFixedWidth(250) + # Geometry Advanced box self.advanced_box = QtWidgets.QGroupBox() self.advanced_box.setStyleSheet(""" QGroupBox @@ -1071,6 +1087,7 @@ class ToolsDB2(QtWidgets.QWidget): self.iso_box.setTitle(_("Isolation Parameters")) self.iso_box.setFixedWidth(250) + self.tool_description_box.setLayout(self.description_vlay) self.basic_box.setLayout(self.basic_vlay) self.advanced_box.setLayout(self.advanced_vlay) self.ncc_box.setLayout(self.ncc_vlay) @@ -1078,6 +1095,7 @@ class ToolsDB2(QtWidgets.QWidget): self.iso_box.setLayout(self.iso_vlay) geo_vlay = QtWidgets.QVBoxLayout() + geo_vlay.addWidget(self.tool_description_box) geo_vlay.addWidget(self.basic_box) geo_vlay.addWidget(self.advanced_box) geo_vlay.addStretch() @@ -1093,14 +1111,13 @@ class ToolsDB2(QtWidgets.QWidget): param_hlay.addStretch() # ########################################################################### - # ############### BASIC UI form ############################################# + # ################ Tool UI form ############################################# # ########################################################################### - - self.grid0 = QtWidgets.QGridLayout() - self.basic_vlay.addLayout(self.grid0) - self.grid0.setColumnStretch(0, 0) - self.grid0.setColumnStretch(1, 1) - self.basic_vlay.addStretch() + self.grid_tool = QtWidgets.QGridLayout() + self.description_vlay.addLayout(self.grid_tool) + self.grid_tool.setColumnStretch(0, 0) + self.grid_tool.setColumnStretch(1, 1) + self.description_vlay.addStretch() # Tool Name self.name_label = QtWidgets.QLabel('%s:' % _('Tool Name')) @@ -1112,8 +1129,29 @@ class ToolsDB2(QtWidgets.QWidget): self.name_entry = FCEntry() self.name_entry.setObjectName('gdb_name') - self.grid0.addWidget(self.name_label, 0, 0) - self.grid0.addWidget(self.name_entry, 0, 1) + self.grid_tool.addWidget(self.name_label, 0, 0) + self.grid_tool.addWidget(self.name_entry, 0, 1) + + # Tool Object Type + self.tool_object_label = QtWidgets.QLabel('%s:' % _('Object Type')) + self.tool_object_label.setToolTip( + _("The kind of application object where the tool is to be used.")) + + self.object_type_combo = FCComboBox() + self.object_type_combo.addItems([_("Application Tool"), _("Geometry"), _("Excellon")]) + self.object_type_combo.setObjectName('gdb_object_type') + + self.grid_tool.addWidget(self.tool_object_label, 1, 0) + self.grid_tool.addWidget(self.object_type_combo, 1, 1) + + # ########################################################################### + # ############### BASIC UI form ############################################# + # ########################################################################### + self.grid0 = QtWidgets.QGridLayout() + self.basic_vlay.addLayout(self.grid0) + self.grid0.setColumnStretch(0, 0) + self.grid0.setColumnStretch(1, 1) + self.basic_vlay.addStretch() # Tool Dia self.dia_label = QtWidgets.QLabel('%s:' % _('Tool Dia')) @@ -1641,7 +1679,7 @@ class ToolsDB2(QtWidgets.QWidget): self.grid3.addWidget(self.paintcontour_cb, 10, 1) # ########################################################################### - # ############### Paint UI form ############################################# + # ############### Isolation UI form ######################################### # ########################################################################### self.grid4 = QtWidgets.QGridLayout() @@ -1823,6 +1861,7 @@ class ToolsDB2(QtWidgets.QWidget): # ############################################################################## self.form_fields = { + "object_type": self.object_type_combo, # Basic "name": self.name_entry, "tooldia": self.dia_entry, @@ -1874,6 +1913,8 @@ class ToolsDB2(QtWidgets.QWidget): } self.name2option = { + "gdb_object_type": "object_type", + # Basic "gdb_name": "name", "gdb_dia": "tooldia", @@ -1950,6 +1991,8 @@ class ToolsDB2(QtWidgets.QWidget): self.tree_widget.itemDoubleClicked.connect(self.on_item_double_clicked) + self.object_type_combo.currentIndexChanged.connect(self.on_object_type_changed) + self.setup_db_ui() def on_menu_request(self, pos): @@ -2004,7 +2047,6 @@ class ToolsDB2(QtWidgets.QWidget): widget_changed = self.sender() wdg_objname = widget_changed.objectName() option_changed = self.name2option[wdg_objname] - tooluid_item = int(tool) for tooluid_key, tooluid_val in self.db_tool_dict.items(): @@ -2014,7 +2056,6 @@ class ToolsDB2(QtWidgets.QWidget): tooluid_val[option_changed] = new_option_value if option_changed in tooluid_val['data']: tooluid_val['data'][option_changed] = new_option_value - self.blockSignals(False) def setup_db_ui(self): @@ -2071,6 +2112,7 @@ class ToolsDB2(QtWidgets.QWidget): self.storage_to_form(self.db_tool_dict['1']) # Enable appGUI + self.tool_description_box.setEnabled(True) self.basic_box.setEnabled(True) self.advanced_box.setEnabled(True) self.ncc_box.setEnabled(True) @@ -2082,6 +2124,7 @@ class ToolsDB2(QtWidgets.QWidget): else: # Disable appGUI + self.tool_description_box.setEnabled(False) self.basic_box.setEnabled(False) self.advanced_box.setEnabled(False) self.ncc_box.setEnabled(False) @@ -2092,6 +2135,36 @@ class ToolsDB2(QtWidgets.QWidget): self.ui_connect() + def on_object_type_changed(self, index=None, val=None): + + if val is None: + object_type = self.object_type_combo.get_value() + else: + object_type = val + + if self.db_tool_dict: + if object_type == _("Application Tool"): + self.tool_description_box.setEnabled(True) + self.basic_box.setEnabled(True) + self.advanced_box.setEnabled(True) + self.ncc_box.setEnabled(True) + self.paint_box.setEnabled(True) + self.iso_box.setEnabled(True) + elif object_type == _("Geometry"): + self.tool_description_box.setEnabled(True) + self.basic_box.setEnabled(True) + self.advanced_box.setEnabled(True) + self.ncc_box.setEnabled(False) + self.paint_box.setEnabled(False) + self.iso_box.setEnabled(False) + else: + self.tool_description_box.setEnabled(True) + self.basic_box.setEnabled(True) + self.advanced_box.setEnabled(True) + self.ncc_box.setEnabled(False) + self.paint_box.setEnabled(False) + self.iso_box.setEnabled(False) + def on_tool_add(self): """ Add a tool in the DB Tool Table @@ -2122,6 +2195,8 @@ class ToolsDB2(QtWidgets.QWidget): "startz": self.app.defaults["geometry_startz"], "endz": float(self.app.defaults["geometry_endz"]), + "object_type": _("Application Tool"), + # NCC "tools_nccoperation": self.app.defaults["tools_nccoperation"], "tools_nccmilling_type": self.app.defaults["tools_nccmilling_type"], @@ -2191,6 +2266,7 @@ class ToolsDB2(QtWidgets.QWidget): self.tree_widget.setCurrentItem(last_item) last_item.setSelected(True) + self.on_object_type_changed(val=dict_elem['data']['object_type']) self.app.inform.emit('[success] %s' % _("Tool added to DB.")) def on_tool_copy(self): @@ -2524,7 +2600,9 @@ class ToolsDB2(QtWidgets.QWidget): elif wdg_name == "gdb_shape": self.db_tool_dict[tool_id]['tool_type'] = val else: - if wdg_name == "gdb_cutz": + if wdg_name == "gdb_object_type": + self.db_tool_dict[tool_id]['data']['object_type'] = val + elif wdg_name == "gdb_cutz": self.db_tool_dict[tool_id]['data']['cutz'] = val elif wdg_name == "gdb_multidepth": self.db_tool_dict[tool_id]['data']['multidepth'] = val