From 4b611f5ce334b12352aa1525b67fc7f89f8ff457 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Fri, 11 Feb 2022 02:35:40 +0200 Subject: [PATCH] - a new feature that when selecting an object in the Project Tab, that object is redrawn over the other objects, in top position. Feature controlled from Preferences -> Gerber -> General. --- CHANGELOG.md | 4 ++++ appGUI/preferences/PreferencesUIManager.py | 1 + .../preferences/gerber/GerberGenPrefGroupUI.py | 7 +++++++ appObjects/FlatCAMGerber.py | 2 +- appObjects/ObjectCollection.py | 5 ++++- app_Main.py | 16 ++++++++++------ defaults.py | 1 + 7 files changed, 28 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7161aca7..18e21094 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ CHANGELOG for FlatCAM beta ================================================= +11.02.2022 + +- a new feature that when selecting an object in the Project Tab, that object is redrawn over the other objects, in top position. Feature controlled from Preferences -> Gerber -> General. + 10.02.2022 - added a new preprocessor: `default_laser` diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index 67c89f45..0d8e02b7 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -123,6 +123,7 @@ class PreferencesUIManager: "gerber_def_zeros": self.ui.gerber_pref_form.gerber_gen_group.gerber_zeros_radio, "gerber_clean_apertures": self.ui.gerber_pref_form.gerber_gen_group.gerber_clean_cb, "gerber_extra_buffering": self.ui.gerber_pref_form.gerber_gen_group.gerber_extra_buffering, + "gerber_plot_on_select": self.ui.gerber_pref_form.gerber_gen_group.gerber_plot_on_select_cb, "gerber_plot_fill": self.ui.gerber_pref_form.gerber_gen_group.fill_color_entry, "gerber_plot_line": self.ui.gerber_pref_form.gerber_gen_group.line_color_entry, diff --git a/appGUI/preferences/gerber/GerberGenPrefGroupUI.py b/appGUI/preferences/gerber/GerberGenPrefGroupUI.py index 3df74850..caeab9fc 100644 --- a/appGUI/preferences/gerber/GerberGenPrefGroupUI.py +++ b/appGUI/preferences/gerber/GerberGenPrefGroupUI.py @@ -162,6 +162,13 @@ class GerberGenPrefGroupUI(OptionsGroupUI): ) param_grid.addWidget(self.gerber_extra_buffering, 2, 0, 1, 3) + # Plot on Select + self.gerber_plot_on_select_cb = FCCheckBox(label='%s' % _('Plot on Select')) + self.gerber_plot_on_select_cb.setToolTip( + _("When active, selecting an object in the Project tab will replot it above the others.") + ) + param_grid.addWidget(self.gerber_plot_on_select_cb, 4, 0, 1, 3) + # ############################################################################################################# # Layers Frame # ############################################################################################################# diff --git a/appObjects/FlatCAMGerber.py b/appObjects/FlatCAMGerber.py index 71eacccb..16934936 100644 --- a/appObjects/FlatCAMGerber.py +++ b/appObjects/FlatCAMGerber.py @@ -913,7 +913,7 @@ class GerberObject(FlatCAMObj, Gerber): :param kwargs: Color and face_color, visible :return: """ - self.app.log.debug(str(inspect.stack()[1][3]) + " --> GerberObject.plot()") + # self.app.log.debug(str(inspect.stack()[1][3]) + " --> GerberObject.plot()") # Does all the required setup and returns False # if the 'ptint' option is set to False. diff --git a/appObjects/ObjectCollection.py b/appObjects/ObjectCollection.py index fed8008d..8d0a5080 100644 --- a/appObjects/ObjectCollection.py +++ b/appObjects/ObjectCollection.py @@ -999,7 +999,10 @@ class ObjectCollection(QtCore.QAbstractItemModel): # make sure that if the Properties Tab is selected then the Object UI is updated (built) self.app.on_notebook_tab_changed() - # don't emit the signal if there more than one objects selected + if self.app.defaults["gerber_plot_on_select"] is True: + self.app.on_enable_sel_plots(silent=True) + + # don't emit the signal if there is more than one objects selected # this signal is intended to be emitted for a single selection in the collection view if len(self.get_selected()) == 1: self.app.proj_selection_changed.emit(current, previous) diff --git a/app_Main.py b/app_Main.py index 84511e36..f576d10a 100644 --- a/app_Main.py +++ b/app_Main.py @@ -8834,11 +8834,13 @@ class App(QtCore.QObject): self.enable_plots(self.collection.get_non_selected()) self.inform.emit('[success] %s' % _("All non selected plots enabled.")) - def on_enable_sel_plots(self): - self.log.debug("App.on_enable_sel_plot()") + def on_enable_sel_plots(self, par=None, silent=False): + if silent is False: + self.log.debug("App.on_enable_sel_plots()") object_list = self.collection.get_selected() - self.enable_plots(objects=object_list) - self.inform.emit('[success] %s' % _("Selected plots enabled...")) + self.enable_plots(objects=object_list, silent=silent) + if silent is False: + self.inform.emit('[success] %s' % _("Selected plots enabled...")) def on_disable_sel_plots(self): self.log.debug("App.on_disable_sel_plot()") @@ -8848,14 +8850,16 @@ class App(QtCore.QObject): self.disable_plots(objects=object_list) self.inform.emit('[success] %s' % _("Selected plots disabled...")) - def enable_plots(self, objects): + def enable_plots(self, objects, silent=False): """ Enable plots :param objects: list of Objects to be enabled + :param silent: If True there are no messages from this method :return: """ - self.log.debug("Enabling plots ...") + if silent is False: + self.log.debug("Enabling plots ...") # self.inform.emit('%s...' % _("Working")) for obj in objects: diff --git a/defaults.py b/defaults.py index 640eea11..ac8f8dee 100644 --- a/defaults.py +++ b/defaults.py @@ -169,6 +169,7 @@ class FlatCAMDefaults: "gerber_use_buffer_for_union": True, "gerber_clean_apertures": True, "gerber_extra_buffering": False, + "gerber_plot_on_select": True, "gerber_plot_fill": '#BBF268BF', "gerber_plot_line": '#006E20BF',