From a7c03248d6ced4b10cd3d4a74ecb489e6f4216ce Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 30 Oct 2020 10:57:01 +0200 Subject: [PATCH] - fixed the Punch Gerber Tool bug that did not allowed the projects to be loaded or to create a new project. Fixed issue #456 - in Tool Subtract added an option to delete the source objects after a successful operation. Fixed issue #455 --- CHANGELOG.md | 5 ++ appGUI/preferences/PreferencesUIManager.py | 3 + .../preferences/tools/ToolsSubPrefGroupUI.py | 11 +++- appTools/ToolPunchGerber.py | 16 +++--- appTools/ToolSub.py | 55 ++++++++++++++----- defaults.py | 1 + 6 files changed, 68 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4c21374..d1ab3a7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ CHANGELOG for FlatCAM beta ================================================= +30.10.2020 + +- fixed the Punch Gerber Tool bug that did not allowed the projects to be loaded or to create a new project. Fixed issue #456 +- in Tool Subtract added an option to delete the source objects after a successful operation. Fixed issue #455 + 29.10.2020 - added icons in most application Tools diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index 9157110f..26ddc154 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -538,7 +538,10 @@ class PreferencesUIManager: "tools_solderpaste_speedrev": self.ui.tools_defaults_form.tools_solderpaste_group.speedrev_entry, "tools_solderpaste_dwellrev": self.ui.tools_defaults_form.tools_solderpaste_group.dwellrev_entry, "tools_solderpaste_pp": self.ui.tools_defaults_form.tools_solderpaste_group.pp_combo, + + # Subtractor Tool "tools_sub_close_paths": self.ui.tools_defaults_form.tools_sub_group.close_paths_cb, + "tools_sub_delete_sources": self.ui.tools_defaults_form.tools_sub_group.delete_sources_cb, # Corner Markers Tool diff --git a/appGUI/preferences/tools/ToolsSubPrefGroupUI.py b/appGUI/preferences/tools/ToolsSubPrefGroupUI.py index 15aa4198..301355c5 100644 --- a/appGUI/preferences/tools/ToolsSubPrefGroupUI.py +++ b/appGUI/preferences/tools/ToolsSubPrefGroupUI.py @@ -38,5 +38,14 @@ class ToolsSubPrefGroupUI(OptionsGroupUI): self.close_paths_cb = FCCheckBox(_("Close paths")) self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the Geometry substractor object.")) self.layout.addWidget(self.close_paths_cb) - + self.delete_sources_cb = FCCheckBox(_("Delete source")) + self.delete_sources_cb.setToolTip( + _("If checked will delete the source objects.") + ) + self.delete_sources_cb = FCCheckBox(_("Delete source")) + self.delete_sources_cb.setToolTip( + _("When checked will delete the source objects\n" + "after a successful operation.") + ) + self.layout.addWidget(self.delete_sources_cb) self.layout.addStretch() diff --git a/appTools/ToolPunchGerber.py b/appTools/ToolPunchGerber.py index fa3780f4..e7daf010 100644 --- a/appTools/ToolPunchGerber.py +++ b/appTools/ToolPunchGerber.py @@ -98,17 +98,19 @@ class ToolPunchGerber(AppTool): if self.old_name != '': old_obj = self.app.collection.get_by_name(self.old_name) - old_obj.clear_plot_apertures() - old_obj.mark_shapes.enabled = False + if old_obj: + old_obj.clear_plot_apertures() + old_obj.mark_shapes.enabled = False # enable mark shapes - grb_obj.mark_shapes.enabled = True + if grb_obj: + grb_obj.mark_shapes.enabled = True - # create storage for shapes - for ap_code in grb_obj.apertures: - grb_obj.mark_shapes_storage[ap_code] = [] + # create storage for shapes + for ap_code in grb_obj.apertures: + grb_obj.mark_shapes_storage[ap_code] = [] - self.old_name = grb_obj.options['name'] + self.old_name = grb_obj.options['name'] def run(self, toggle=True): self.app.defaults.report_usage("ToolPunchGerber()") diff --git a/appTools/ToolSub.py b/appTools/ToolSub.py index c593e5c3..8a94e34d 100644 --- a/appTools/ToolSub.py +++ b/appTools/ToolSub.py @@ -133,6 +133,7 @@ class ToolSub(AppTool): self.ui.tools_frame.show() self.ui.close_paths_cb.setChecked(self.app.defaults["tools_sub_close_paths"]) + self.ui.delete_sources_cb.setChecked(self.app.defaults["tools_sub_delete_sources"]) def on_subtract_gerber_click(self): # reset previous values @@ -359,6 +360,11 @@ class ToolSub(AppTool): # GUI feedback self.app.inform.emit('[success] %s: %s' % (_("Created"), outname)) + # Delete source objects if it was selected + if self.ui.delete_sources_cb.get_value(): + self.app.collection.delete_by_name(self.target_grb_obj_name) + self.app.collection.delete_by_name(self.sub_grb_obj_name) + # cleanup self.new_apertures.clear() self.new_solid_geometry[:] = [] @@ -549,6 +555,11 @@ class ToolSub(AppTool): # GUI feedback self.app.inform.emit('[success] %s: %s' % (_("Created"), outname)) + # Delete source objects if it was selected + if self.ui.delete_sources_cb.get_value(): + self.app.collection.delete_by_name(self.target_geo_obj_name) + self.app.collection.delete_by_name(self.sub_geo_obj_name) + # cleanup self.new_tools.clear() self.new_solid_geometry[:] = [] @@ -667,8 +678,22 @@ class SubUI: grid0.setColumnStretch(1, 1) self.tools_box.addLayout(grid0) + self.delete_sources_cb = FCCheckBox(_("Delete source")) + self.delete_sources_cb.setToolTip( + _("When checked will delete the source objects\n" + "after a successful operation.") + ) + grid0.addWidget(self.delete_sources_cb, 0, 0, 1, 2) + + separator_line = QtWidgets.QFrame() + separator_line.setFrameShape(QtWidgets.QFrame.HLine) + separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) + grid0.addWidget(separator_line, 2, 0, 1, 3) + + grid0.addWidget(QtWidgets.QLabel(''), 4, 0, 1, 2) + self.gerber_title = QtWidgets.QLabel("%s" % _("GERBER")) - grid0.addWidget(self.gerber_title, 0, 0, 1, 2) + grid0.addWidget(self.gerber_title, 6, 0, 1, 2) # Target Gerber Object self.target_gerber_combo = FCComboBox() @@ -684,8 +709,8 @@ class SubUI: "the subtractor Gerber object.") ) - grid0.addWidget(self.target_gerber_label, 2, 0) - grid0.addWidget(self.target_gerber_combo, 2, 1) + grid0.addWidget(self.target_gerber_label, 8, 0) + grid0.addWidget(self.target_gerber_combo, 8, 1) # Substractor Gerber Object self.sub_gerber_combo = FCComboBox() @@ -700,8 +725,8 @@ class SubUI: "from the target Gerber object.") ) - grid0.addWidget(self.sub_gerber_label, 4, 0) - grid0.addWidget(self.sub_gerber_combo, 4, 1) + grid0.addWidget(self.sub_gerber_label, 10, 0) + grid0.addWidget(self.sub_gerber_combo, 10, 1) self.intersect_btn = FCButton(_('Subtract Gerber')) self.intersect_btn.setIcon(QtGui.QIcon(self.app.resource_location + '/subtract_btn32.png')) @@ -717,11 +742,11 @@ class SubUI: font-weight: bold; } """) - grid0.addWidget(self.intersect_btn, 6, 0, 1, 2) - grid0.addWidget(QtWidgets.QLabel(''), 8, 0, 1, 2) + grid0.addWidget(self.intersect_btn, 12, 0, 1, 2) + grid0.addWidget(QtWidgets.QLabel(''), 14, 0, 1, 2) self.geo_title = QtWidgets.QLabel("%s" % _("GEOMETRY")) - grid0.addWidget(self.geo_title, 10, 0, 1, 2) + grid0.addWidget(self.geo_title, 16, 0, 1, 2) # Target Geometry Object self.target_geo_combo = FCComboBox() @@ -737,8 +762,8 @@ class SubUI: "the subtractor Geometry object.") ) - grid0.addWidget(self.target_geo_label, 12, 0) - grid0.addWidget(self.target_geo_combo, 12, 1) + grid0.addWidget(self.target_geo_label, 18, 0) + grid0.addWidget(self.target_geo_combo, 18, 1) # Substractor Geometry Object self.sub_geo_combo = FCComboBox() @@ -753,13 +778,13 @@ class SubUI: "from the target Geometry object.") ) - grid0.addWidget(self.sub_geo_label, 14, 0) - grid0.addWidget(self.sub_geo_combo, 14, 1) + grid0.addWidget(self.sub_geo_label, 20, 0) + grid0.addWidget(self.sub_geo_combo, 20, 1) self.close_paths_cb = FCCheckBox(_("Close paths")) self.close_paths_cb.setToolTip(_("Checking this will close the paths cut by the Geometry subtractor object.")) - grid0.addWidget(self.close_paths_cb, 16, 0, 1, 2) + grid0.addWidget(self.close_paths_cb, 22, 0, 1, 2) self.intersect_geo_btn = FCButton(_('Subtract Geometry')) self.intersect_geo_btn.setIcon(QtGui.QIcon(self.app.resource_location + '/subtract_btn32.png')) @@ -774,8 +799,8 @@ class SubUI: } """) - grid0.addWidget(self.intersect_geo_btn, 18, 0, 1, 2) - grid0.addWidget(QtWidgets.QLabel(''), 20, 0, 1, 2) + grid0.addWidget(self.intersect_geo_btn, 24, 0, 1, 2) + grid0.addWidget(QtWidgets.QLabel(''), 26, 0, 1, 2) self.tools_box.addStretch() diff --git a/defaults.py b/defaults.py index ed913efd..a36aa0cb 100644 --- a/defaults.py +++ b/defaults.py @@ -608,6 +608,7 @@ class FlatCAMDefaults: # Subtract Tool "tools_sub_close_paths": True, + "tools_sub_delete_sources": False, # Distance Tool "tools_dist_snap_center": False,