diff --git a/CHANGELOG.md b/CHANGELOG.md index 01953056..adb52a70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta ================================================= +8.01.2021 + +- in Isolation Plugin fixed the issue with clicking the header not toggling all tools rows +- in Isolation Plugin fixed an issue in the reset_fields() method + 6.01.2022 - modified the 'laser-lines' method in the Paint Plugin such that the rounded part of a painted trace is painted too in the case that the trace width is much higher than the clearing tool diameter diff --git a/appPlugins/ToolIsolation.py b/appPlugins/ToolIsolation.py index d04654c7..85e075d9 100644 --- a/appPlugins/ToolIsolation.py +++ b/appPlugins/ToolIsolation.py @@ -877,7 +877,7 @@ class ToolIsolation(AppTool, Gerber): self.update_ui() def update_ui(self): - self.blockSignals(True) + self.ui_disconnect() sel_rows = set() table_items = self.ui.tools_table.selectedItems() @@ -891,7 +891,7 @@ class ToolIsolation(AppTool, Gerber): self.ui.tool_data_label.setText( "%s: %s" % (_('Parameters for'), _("No Tool Selected")) ) - self.blockSignals(False) + self.ui_connect() return else: self.ui.generate_iso_button.setDisabled(False) @@ -903,9 +903,11 @@ class ToolIsolation(AppTool, Gerber): if item is not None: tooluid = int(item.text()) else: + self.ui_connect() return except Exception as e: log.error("Tool missing. Add a tool in the Tool Table. %s" % str(e)) + self.ui_connect() return # update the QLabel that shows for which Tool we have the parameters in the UI form @@ -928,7 +930,7 @@ class ToolIsolation(AppTool, Gerber): "%s: %s" % (_('Parameters for'), _("Multiple Tools")) ) - self.blockSignals(False) + self.ui_connect() def storage_to_form(self, dict_storage): for form_key in self.form_fields: @@ -1323,7 +1325,6 @@ class ToolIsolation(AppTool, Gerber): self.app.worker_task.emit({'fcn': job_thread, 'params': [self.app]}) def on_tool_add(self, custom_dia=None): - self.blockSignals(True) self.ui_disconnect() filename = self.app.tools_database_path() @@ -1344,7 +1345,6 @@ class ToolIsolation(AppTool, Gerber): self.build_ui() self.app.inform.emit('[WARNING_NOTCL] %s' % _("Please enter a tool diameter with non-zero value, " "in Float format.")) - self.blockSignals(False) self.ui_connect() return truncated_tooldia = self.app.dec_format(tool_dia, self.decimals) @@ -1362,8 +1362,6 @@ class ToolIsolation(AppTool, Gerber): except IOError: self.app.log.error("Could not load tools DB file.") self.app.inform.emit('[ERROR] %s' % _("Could not load Tools DB file.")) - self.blockSignals(False) - self.ui_connect() self.on_tool_default_add(dia=tool_dia) return @@ -1374,8 +1372,6 @@ class ToolIsolation(AppTool, Gerber): e = sys.exc_info()[0] self.app.log.error(str(e)) self.app.inform.emit('[ERROR] %s' % _("Failed to parse Tools DB file.")) - self.blockSignals(False) - self.ui_connect() self.on_tool_default_add(dia=tool_dia) return @@ -1419,15 +1415,12 @@ class ToolIsolation(AppTool, Gerber): if tool_found == 0: self.app.inform.emit('[WARNING_NOTCL] %s' % _("Tool not in Tools Database. Adding a default tool.")) self.on_tool_default_add(dia=tool_dia) - self.blockSignals(False) - self.ui_connect() return if tool_found > 1: self.app.inform.emit( '[WARNING_NOTCL] %s' % _("Cancelled.\n" "Multiple tools for one tool diameter found in Tools Database.")) - self.blockSignals(False) self.ui_connect() return @@ -1445,8 +1438,6 @@ class ToolIsolation(AppTool, Gerber): 'solid_geometry': [] } }) - self.blockSignals(False) - self.ui_connect() self.build_ui() # select the tool just added @@ -1461,7 +1452,7 @@ class ToolIsolation(AppTool, Gerber): self.app.inform.emit('[success] %s' % _("New tool added to Tool Table from Tools Database.")) def on_tool_default_add(self, dia=None, muted=None): - self.blockSignals(True) + self.ui_disconnect() tool_dia = dia if dia is not None else self.ui.new_tooldia_entry.get_value() @@ -1469,7 +1460,6 @@ class ToolIsolation(AppTool, Gerber): self.build_ui() self.app.inform.emit('[WARNING_NOTCL] %s' % _("Please enter a tool diameter with non-zero value, " "in Float format.")) - self.blockSignals(False) return # construct a list of all 'tooluid' in the self.iso_tools @@ -1495,7 +1485,6 @@ class ToolIsolation(AppTool, Gerber): }) # print("after", self.iso_tools) - self.blockSignals(False) self.build_ui() # select the tool just added @@ -1511,7 +1500,7 @@ class ToolIsolation(AppTool, Gerber): self.app.inform.emit('[success] %s' % _("Default tool added to Tool Table.")) def on_tool_edit(self, item): - self.blockSignals(True) + self.ui_disconnect() edited_row = item.row() editeduid = int(self.ui.tools_table.item(edited_row, 3).text()) @@ -1525,17 +1514,21 @@ class ToolIsolation(AppTool, Gerber): new_tool_dia = float(self.ui.tools_table.item(edited_row, 1).text().replace(',', '.')) except ValueError: self.app.inform.emit('[ERROR_NOTCL] %s' % _("Wrong value format entered, use a number.")) - self.blockSignals(False) + self.ui_connect() return for v in self.iso_tools.values(): - tool_dias = [float('%.*f' % (self.decimals, v[tool_v])) for tool_v in v.keys() if tool_v == 'tooldia'] + tool_dias = [self.app.dec_format(v[tool_v], self.decimals) for tool_v in v.keys() if tool_v == 'tooldia'] # identify the tool that was edited and get it's tooluid if new_tool_dia not in tool_dias: - self.iso_tools[editeduid]['tooldia'] = deepcopy(float('%.*f' % (self.decimals, new_tool_dia))) + try: + self.iso_tools[editeduid]['tooldia'] = deepcopy(float('%.*f' % (self.decimals, new_tool_dia))) + except Exception as err: + self.app.inform.emit('[ERROR_NOTCL] %s' % _("Failed.")) + self.app.log.error("Failed due: %s" % str(err)) + self.app.inform.emit('[success] %s' % _("Tool from Tool Table was edited.")) - self.blockSignals(False) self.build_ui() return @@ -1548,7 +1541,6 @@ class ToolIsolation(AppTool, Gerber): break self.app.inform.emit('[WARNING_NOTCL] %s' % _("Cancelled. New diameter value is already in the Tool Table.")) - self.blockSignals(False) self.build_ui() def on_tool_delete(self, rows_to_delete=None, all_tools=None): @@ -1559,13 +1551,12 @@ class ToolIsolation(AppTool, Gerber): :param all_tools: delete all tools in the tool table :return: """ - self.blockSignals(True) + self.ui_disconnect() deleted_tools_list = [] if all_tools: self.iso_tools.clear() - self.blockSignals(False) self.build_ui() return @@ -1581,7 +1572,6 @@ class ToolIsolation(AppTool, Gerber): for t in deleted_tools_list: self.iso_tools.pop(t, None) - self.blockSignals(False) self.build_ui() return @@ -1599,13 +1589,12 @@ class ToolIsolation(AppTool, Gerber): except AttributeError: self.app.inform.emit('[WARNING_NOTCL] %s' % _("Delete failed. Select a tool to delete.")) - self.blockSignals(False) + self.ui_connect() return except Exception as e: log.error(str(e)) self.app.inform.emit('[success] %s' % _("Tool(s) deleted from Tool Table.")) - self.blockSignals(False) self.build_ui() def on_generate_buffer(self): @@ -2965,7 +2954,6 @@ class ToolIsolation(AppTool, Gerber): self.app.inform.emit('[success] %s' % _("New tool added to Tool Table.")) - self.ui_connect() self.build_ui() # select the tool just added @@ -2999,7 +2987,7 @@ class ToolIsolation(AppTool, Gerber): self.app.tools_db_tab.ui.cancel_tool_from_db.show() def reset_fields(self): - self.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) + self.ui.object_combo.setRootModelIndex(self.app.collection.index(0, 0, QtCore.QModelIndex())) @staticmethod def poly2rings(poly):