From a3e15707472de8e4c8b43d7433dc49e1fa8e6467 Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Tue, 21 Jul 2020 00:04:18 +0300 Subject: [PATCH] - added a control in Preferences -> Gerber Tab for Gerber colors storage usage - made sure that the defaults on first install will set the number of workers to half the number of CPU's on the system but no less than 2 --- CHANGELOG.md | 2 + appGUI/preferences/PreferencesUIManager.py | 1 + .../gerber/GerberGenPrefGroupUI.py | 40 ++++++++++++++----- appObjects/AppObject.py | 32 ++++++++------- app_Main.py | 2 +- camlib.py | 2 +- defaults.py | 3 +- 7 files changed, 56 insertions(+), 26 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52e753d4..3c46f50b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ CHANGELOG for FlatCAM beta - fixed a bug in the FlatCAMGerber.on_mark_cb_click_table() method when moving a Gerber object - added a way to remember the colors set for the Gerber objects; it will remember the order that they were loaded and set a color previously given +- added a control in Preferences -> Gerber Tab for Gerber colors storage usage +- made sure that the defaults on first install will set the number of workers to half the number of CPU's on the system but no less than 2 18.07.2020 diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index 33c760e3..2eff2b2d 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -119,6 +119,7 @@ class PreferencesUIManager: "gerber_plot": self.ui.gerber_defaults_form.gerber_gen_group.plot_cb, "gerber_solid": self.ui.gerber_defaults_form.gerber_gen_group.solid_cb, "gerber_multicolored": self.ui.gerber_defaults_form.gerber_gen_group.multicolored_cb, + "gerber_store_color_list": self.ui.gerber_defaults_form.gerber_gen_group.store_colors_cb, "gerber_circle_steps": self.ui.gerber_defaults_form.gerber_gen_group.circle_steps_entry, "gerber_def_units": self.ui.gerber_defaults_form.gerber_gen_group.gerber_units_radio, "gerber_def_zeros": self.ui.gerber_defaults_form.gerber_gen_group.gerber_zeros_radio, diff --git a/appGUI/preferences/gerber/GerberGenPrefGroupUI.py b/appGUI/preferences/gerber/GerberGenPrefGroupUI.py index fc20e80e..3d35d04a 100644 --- a/appGUI/preferences/gerber/GerberGenPrefGroupUI.py +++ b/appGUI/preferences/gerber/GerberGenPrefGroupUI.py @@ -1,7 +1,7 @@ from PyQt5 import QtWidgets, QtCore, QtGui from PyQt5.QtCore import QSettings -from appGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCEntry, FCSliderWithSpinner, FCColorEntry +from appGUI.GUIElements import FCCheckBox, FCSpinner, RadioSet, FCButton, FCSliderWithSpinner, FCColorEntry from appGUI.preferences.OptionsGroupUI import OptionsGroupUI import gettext @@ -140,14 +140,30 @@ class GerberGenPrefGroupUI(OptionsGroupUI): ) grid0.addWidget(self.gerber_extra_buffering, 8, 0, 1, 3) + # Store colors + self.store_colors_cb = FCCheckBox(label='%s' % _('Store colors')) + self.store_colors_cb.setToolTip( + _("It will store the set colors for Gerber objects.\n" + "Those will be used each time the application is started.") + ) + grid0.addWidget(self.store_colors_cb, 11, 0) + + # Clear stored colors + self.clear_colors_button = FCButton('%s' % _('Clear Colors')) + self.clear_colors_button.setIcon(QtGui.QIcon(self.app.resource_location + '/trash32.png')) + self.clear_colors_button.setToolTip( + _("Reset the colors associated with Gerber objects.") + ) + grid0.addWidget(self.clear_colors_button, 11, 1, 1, 2) + separator_line = QtWidgets.QFrame() separator_line.setFrameShape(QtWidgets.QFrame.HLine) separator_line.setFrameShadow(QtWidgets.QFrame.Sunken) - grid0.addWidget(separator_line, 9, 0, 1, 3) + grid0.addWidget(separator_line, 13, 0, 1, 3) # Gerber Object Color self.gerber_color_label = QtWidgets.QLabel('%s' % _('Object Color')) - grid0.addWidget(self.gerber_color_label, 10, 0, 1, 3) + grid0.addWidget(self.gerber_color_label, 15, 0, 1, 3) # Plot Line Color self.line_color_label = QtWidgets.QLabel('%s:' % _('Outline')) @@ -156,8 +172,8 @@ class GerberGenPrefGroupUI(OptionsGroupUI): ) self.line_color_entry = FCColorEntry() - grid0.addWidget(self.line_color_label, 11, 0) - grid0.addWidget(self.line_color_entry, 11, 1, 1, 2) + grid0.addWidget(self.line_color_label, 17, 0) + grid0.addWidget(self.line_color_entry, 17, 1, 1, 2) # Plot Fill Color self.fill_color_label = QtWidgets.QLabel('%s:' % _('Fill')) @@ -168,8 +184,8 @@ class GerberGenPrefGroupUI(OptionsGroupUI): ) self.fill_color_entry = FCColorEntry() - grid0.addWidget(self.fill_color_label, 12, 0) - grid0.addWidget(self.fill_color_entry, 12, 1, 1, 2) + grid0.addWidget(self.fill_color_label, 20, 0) + grid0.addWidget(self.fill_color_entry, 20, 1, 1, 2) # Plot Fill Transparency Level self.gerber_alpha_label = QtWidgets.QLabel('%s:' % _('Alpha')) @@ -178,8 +194,8 @@ class GerberGenPrefGroupUI(OptionsGroupUI): ) self.gerber_alpha_entry = FCSliderWithSpinner(0, 255, 1) - grid0.addWidget(self.gerber_alpha_label, 13, 0) - grid0.addWidget(self.gerber_alpha_entry, 13, 1, 1, 2) + grid0.addWidget(self.gerber_alpha_label, 22, 0) + grid0.addWidget(self.gerber_alpha_entry, 22, 1, 1, 2) self.layout.addStretch() @@ -189,6 +205,8 @@ class GerberGenPrefGroupUI(OptionsGroupUI): self.gerber_alpha_entry.valueChanged.connect(self.on_gerber_alpha_changed) # alpha + self.clear_colors_button.clicked.connect(self.on_colors_clear_clicked) + # Setting plot colors handlers def on_fill_color_changed(self): self.app.defaults['gerber_plot_fill'] = self.fill_color_entry.get_value()[:7] + \ @@ -205,3 +223,7 @@ class GerberGenPrefGroupUI(OptionsGroupUI): def on_line_color_changed(self): self.app.defaults['gerber_plot_line'] = self.line_color_entry.get_value()[:7] + \ self.app.defaults['gerber_plot_line'][7:9] + + def on_colors_clear_clicked(self): + self.app.defaults['gerber_color_list'].clear() + self.app.inform.emit('[WARNING_NOTCL] %s' % _("Stored colors for Gerber objects are deleted.")) diff --git a/appObjects/AppObject.py b/appObjects/AppObject.py index 5ec28ce0..0ab1cc71 100644 --- a/appObjects/AppObject.py +++ b/appObjects/AppObject.py @@ -203,23 +203,27 @@ class AppObject(QtCore.QObject): obj.outline_color = self.app.defaults["excellon_plot_line"] if kind == 'gerber': - group = self.app.collection.group_items["gerber"] - index = group.child_count() + if self.app.defaults["gerber_store_color_list"] is True: + group = self.app.collection.group_items["gerber"] + index = group.child_count() - # when loading a Gerber object always create a color tuple (line color, fill_color) - # and add it to the self.app.defaults["gerber_color_list"] from where it will be picked and used - try: - colors = self.app.defaults["gerber_color_list"][index] - except IndexError: + # when loading a Gerber object always create a color tuple (line color, fill_color) + # and add it to the self.app.defaults["gerber_color_list"] from where it will be picked and used + try: + colors = self.app.defaults["gerber_color_list"][index] + except IndexError: + obj.outline_color = self.app.defaults["gerber_plot_line"] + obj.fill_color = self.app.defaults["gerber_plot_fill"] + self.app.defaults["gerber_color_list"].insert(index, (obj.outline_color, obj.fill_color)) + colors = self.app.defaults["gerber_color_list"][index] + + new_line_color = colors[0] + new_fill = colors[1] + obj.outline_color = new_line_color + obj.fill_color = new_fill + else: obj.outline_color = self.app.defaults["gerber_plot_line"] obj.fill_color = self.app.defaults["gerber_plot_fill"] - self.app.defaults["gerber_color_list"].insert(index, (obj.outline_color, obj.fill_color)) - colors = self.app.defaults["gerber_color_list"][index] - - new_line_color = colors[0] - new_color = colors[1] - obj.outline_color = new_line_color - obj.fill_color = new_color except Exception as e: log.warning("AppObject.new_object() -> setting colors error. %s" % str(e)) diff --git a/app_Main.py b/app_Main.py index 1a667808..b7256f3c 100644 --- a/app_Main.py +++ b/app_Main.py @@ -10131,7 +10131,7 @@ class App(QtCore.QObject): group = self.collection.group_items["gerber"] group_index = self.collection.index(group.row(), 0, QtCore.QModelIndex()) - new_c = (new_color, new_line_color) + new_c = (new_line_color, new_color) for sel_obj in sel_obj_list: if sel_obj.kind == 'gerber': diff --git a/camlib.py b/camlib.py index 665de530..14cb1fb2 100644 --- a/camlib.py +++ b/camlib.py @@ -5211,7 +5211,7 @@ class CNCjob(Geometry): # Only if there are locations to mill if not optimized_path: - log.debug("camlib.CNCJob.geometry_from_excellon_by_tool() -> Optimized path is empty.") + log.debug("camlib.CNCJob.geometry_tool_gcode_gen() -> Optimized path is empty.") return 'fail' if self.app.abort_flag: diff --git a/defaults.py b/defaults.py index 647988be..f3f750fe 100644 --- a/defaults.py +++ b/defaults.py @@ -94,7 +94,7 @@ class FlatCAMDefaults: "global_project_at_startup": False, "global_version_check": True, "global_send_stats": True, - "global_worker_number": 2, + "global_worker_number": int((os.cpu_count()) / 2) if os.cpu_count() > 4 else 2, "global_tolerance": 0.005, "global_save_compressed": True, @@ -157,6 +157,7 @@ class FlatCAMDefaults: "gerber_solid": True, "gerber_multicolored": False, "gerber_color_list": LoudUniqueList(), + "gerber_store_color_list": True, "gerber_circle_steps": 64, "gerber_use_buffer_for_union": True,