From 22ad4f79469ac556e174f4a7ad3f4c073b51aace Mon Sep 17 00:00:00 2001 From: Marius Stanciu Date: Wed, 20 Apr 2022 18:04:30 +0300 Subject: [PATCH] - remade how the Preferences Tab is constructed such that now is made on demand for each section (tab) therefore making it faster to load (once a section is loaded - by clicking its tab - it will not be reloaded in the current session) --- CHANGELOG.md | 1 + appGUI/preferences/PreferencesUIManager.py | 189 +++++++++++++-------- 2 files changed, 123 insertions(+), 67 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c9c056db..e019619f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ CHANGELOG for FlatCAM Evo beta - in Solderpaste Plugin added a new parameter 'Margin' which allows reducing how much solderpaste is added and therefore adding a space between the solderpaste and the pad boundary - all CNCJob objects generated by the Solderpaste plugin now have the GCode saved as source_code which can be saved also from the CNCJob object context menu, and edited - updated some custom widgets in the GUI elements such that the scrolling in the Preferences can be done without blocking on some of the widgets +- remade how the Preferences Tab is constructed such that now is made on demand for each section (tab) therefore making it faster to load (once a section is loaded - by clicking its tab - it will not be reloaded in the current session) 19.04.2022 diff --git a/appGUI/preferences/PreferencesUIManager.py b/appGUI/preferences/PreferencesUIManager.py index cd3bcb53..b0d23f1f 100644 --- a/appGUI/preferences/PreferencesUIManager.py +++ b/appGUI/preferences/PreferencesUIManager.py @@ -28,6 +28,16 @@ class PreferencesUIManager(QtCore.QObject): """ super(PreferencesUIManager, self).__init__() + self.general_displayed = False + self.gerber_displayed = False + self.excellon_displayed = False + self.geometry_displayed = False + self.cnc_displayed = False + self.engrave_displayed = False + self.plugins_displayed = False + self.plugins2_displayed = False + self.util_displayed = False + self.defaults = defaults self.data_path = data_path self.ui = ui @@ -800,6 +810,14 @@ class PreferencesUIManager(QtCore.QObject): :return: None """ + self.pref_connect() + + # Initialize the color box's color in Preferences -> Global -> Colors + self.__init_color_pickers() + + # log.debug("Finished Preferences GUI form initialization.") + + def init_preferences_gui(self): gen_form = self.ui.general_pref_form try: self.ui.general_scroll_area.takeWidget() @@ -807,73 +825,13 @@ class PreferencesUIManager(QtCore.QObject): self.ui.app.log.debug("Nothing to remove") self.ui.general_scroll_area.setWidget(gen_form) gen_form.show() + self.general_displayed = True - ger_form = self.ui.gerber_pref_form - try: - self.ui.gerber_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.gerber_scroll_area.setWidget(ger_form) - ger_form.show() + def pref_connect(self): + self.pref_disconnect() - exc_form = self.ui.excellon_pref_form - try: - self.ui.excellon_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.excellon_scroll_area.setWidget(exc_form) - exc_form.show() - - geo_form = self.ui.geo_pref_form - try: - self.ui.geometry_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.geometry_scroll_area.setWidget(geo_form) - geo_form.show() - - cnc_form = self.ui.cncjob_pref_form - try: - self.ui.cncjob_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.cncjob_scroll_area.setWidget(cnc_form) - cnc_form.show() - - plugins_engraving_form = self.ui.plugin_eng_pref_form - try: - self.ui.plugins_engraving_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.plugins_engraving_scroll_area.setWidget(plugins_engraving_form) - plugins_engraving_form.show() - - plugins_form = self.ui.plugin_pref_form - try: - self.ui.tools_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.tools_scroll_area.setWidget(plugins_form) - plugins_form.show() - - plugins2_form = self.ui.plugin2_pref_form - try: - self.ui.tools2_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.tools2_scroll_area.setWidget(plugins2_form) - plugins2_form.show() - - fa_form = self.ui.util_pref_form - try: - self.ui.fa_scroll_area.takeWidget() - except Exception: - self.ui.app.log.debug("Nothing to remove") - self.ui.fa_scroll_area.setWidget(fa_form) - fa_form.show() - - # Initialize the color box's color in Preferences -> Global -> Colors - self.__init_color_pickers() + self.init_preferences_gui() + self.ui.pref_tab_area.tabBarClicked.connect(self.on_tab_clicked) # Button handlers self.ui.pref_save_button.clicked.connect(lambda: self.on_save_button(save_to_file=True)) @@ -881,9 +839,12 @@ class PreferencesUIManager(QtCore.QObject): self.ui.pref_close_button.clicked.connect(self.on_pref_close_button) self.ui.pref_defaults_button.clicked.connect(self.on_restore_defaults_preferences) - # log.debug("Finished Preferences GUI form initialization.") + def pref_disconnect(self): + try: + self.ui.pref_tab_area.tabBarClicked.disconnect() + except Exception: + pass - def clear_preferences_gui(self): # Disconnect Button handlers try: self.ui.pref_save_button.clicked.disconnect() @@ -950,6 +911,100 @@ class PreferencesUIManager(QtCore.QObject): except Exception: self.ui.app.log.debug("Nothing to remove") + def clear_preferences_gui(self): + self.pref_disconnect() + + def on_tab_clicked(self, idx): + if idx == 0 and self.general_displayed is False: + self.general_displayed = True + gen_form = self.ui.general_pref_form + try: + self.ui.general_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.general_scroll_area.setWidget(gen_form) + gen_form.show() + + if idx == 1 and self.gerber_displayed is False: + self.gerber_displayed = True + ger_form = self.ui.gerber_pref_form + try: + self.ui.gerber_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.gerber_scroll_area.setWidget(ger_form) + ger_form.show() + + if idx == 2 and self.excellon_displayed is False: + self.excellon_displayed = True + exc_form = self.ui.excellon_pref_form + try: + self.ui.excellon_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.excellon_scroll_area.setWidget(exc_form) + exc_form.show() + + if idx == 3 and self.geometry_displayed is False: + self.geometry_displayed = True + geo_form = self.ui.geo_pref_form + try: + self.ui.geometry_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.geometry_scroll_area.setWidget(geo_form) + geo_form.show() + + if idx == 4 and self.cnc_displayed is False: + self.cnc_displayed = True + cnc_form = self.ui.cncjob_pref_form + try: + self.ui.cncjob_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.cncjob_scroll_area.setWidget(cnc_form) + cnc_form.show() + + if idx == 5 and self.engrave_displayed is False: + self.engrave_displayed = True + plugins_engraving_form = self.ui.plugin_eng_pref_form + try: + self.ui.plugins_engraving_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.plugins_engraving_scroll_area.setWidget(plugins_engraving_form) + plugins_engraving_form.show() + + if idx == 6 and self.plugins_displayed is False: + self.plugins_displayed = True + plugins_form = self.ui.plugin_pref_form + try: + self.ui.tools_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.tools_scroll_area.setWidget(plugins_form) + plugins_form.show() + + if idx == 7 and self.plugins2_displayed is False: + self.plugins2_displayed = True + plugins2_form = self.ui.plugin2_pref_form + try: + self.ui.tools2_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.tools2_scroll_area.setWidget(plugins2_form) + plugins2_form.show() + + if idx == 8 and self.util_displayed is False: + self.util_displayed = True + fa_form = self.ui.util_pref_form + try: + self.ui.fa_scroll_area.takeWidget() + except Exception: + self.ui.app.log.debug("Nothing to remove") + self.ui.fa_scroll_area.setWidget(fa_form) + fa_form.show() + def __init_color_pickers(self): # Init Gerber Plot Colors self.ui.gerber_pref_form.gerber_gen_group.fill_color_entry.set_value(self.defaults['gerber_plot_fill'])