From f05540a5873f945b80c41c0f52a4a8961507a00f Mon Sep 17 00:00:00 2001 From: David Robertson Date: Wed, 6 May 2020 03:02:23 +0100 Subject: [PATCH] Deduplicate code creating widgets for prefs tabs --- flatcamGUI/FlatCAMGUI.py | 83 ------------------- .../preferences/PreferencesSectionUI.py | 27 +++++- .../preferences/PreferencesUIManager.py | 36 ++------ .../preferences/cncjob/CNCJobPreferencesUI.py | 7 ++ .../excellon/ExcellonPreferencesUI.py | 6 ++ .../general/GeneralPreferencesUI.py | 5 ++ .../geometry/GeometryPreferencesUI.py | 7 ++ .../preferences/gerber/GerberPreferencesUI.py | 8 +- .../preferences/tools/Tools2PreferencesUI.py | 8 +- .../preferences/tools/ToolsPreferencesUI.py | 5 ++ .../utilities/UtilPreferencesUI.py | 6 ++ 11 files changed, 81 insertions(+), 117 deletions(-) diff --git a/flatcamGUI/FlatCAMGUI.py b/flatcamGUI/FlatCAMGUI.py index 11b90242..f8faad02 100644 --- a/flatcamGUI/FlatCAMGUI.py +++ b/flatcamGUI/FlatCAMGUI.py @@ -1207,89 +1207,6 @@ class FlatCAMGUI(QtWidgets.QMainWindow): self.pref_tab_area_tabBar.setExpanding(True) self.pref_tab_layout.addWidget(self.pref_tab_area) - self.general_tab = QtWidgets.QWidget() - self.general_tab.setObjectName("general_tab") - self.pref_tab_area.addTab(self.general_tab, _("General")) - self.general_tab_lay = QtWidgets.QVBoxLayout() - self.general_tab_lay.setContentsMargins(2, 2, 2, 2) - self.general_tab.setLayout(self.general_tab_lay) - - self.hlay1 = QtWidgets.QHBoxLayout() - self.general_tab_lay.addLayout(self.hlay1) - - self.hlay1.addStretch() - - self.general_scroll_area = QtWidgets.QScrollArea() - self.general_tab_lay.addWidget(self.general_scroll_area) - - self.gerber_tab = QtWidgets.QWidget() - self.gerber_tab.setObjectName("gerber_tab") - self.pref_tab_area.addTab(self.gerber_tab, _("GERBER")) - self.gerber_tab_lay = QtWidgets.QVBoxLayout() - self.gerber_tab_lay.setContentsMargins(2, 2, 2, 2) - self.gerber_tab.setLayout(self.gerber_tab_lay) - - self.gerber_scroll_area = QtWidgets.QScrollArea() - self.gerber_tab_lay.addWidget(self.gerber_scroll_area) - - self.excellon_tab = QtWidgets.QWidget() - self.excellon_tab.setObjectName("excellon_tab") - self.pref_tab_area.addTab(self.excellon_tab, _("EXCELLON")) - self.excellon_tab_lay = QtWidgets.QVBoxLayout() - self.excellon_tab_lay.setContentsMargins(2, 2, 2, 2) - self.excellon_tab.setLayout(self.excellon_tab_lay) - - self.excellon_scroll_area = QtWidgets.QScrollArea() - self.excellon_tab_lay.addWidget(self.excellon_scroll_area) - - self.geometry_tab = QtWidgets.QWidget() - self.geometry_tab.setObjectName("geometry_tab") - self.pref_tab_area.addTab(self.geometry_tab, _("GEOMETRY")) - self.geometry_tab_lay = QtWidgets.QVBoxLayout() - self.geometry_tab_lay.setContentsMargins(2, 2, 2, 2) - self.geometry_tab.setLayout(self.geometry_tab_lay) - - self.geometry_scroll_area = QtWidgets.QScrollArea() - self.geometry_tab_lay.addWidget(self.geometry_scroll_area) - - self.text_editor_tab = QtWidgets.QWidget() - self.text_editor_tab.setObjectName("text_editor_tab") - self.pref_tab_area.addTab(self.text_editor_tab, _("CNC-JOB")) - self.cncjob_tab_lay = QtWidgets.QVBoxLayout() - self.cncjob_tab_lay.setContentsMargins(2, 2, 2, 2) - self.text_editor_tab.setLayout(self.cncjob_tab_lay) - - self.cncjob_scroll_area = QtWidgets.QScrollArea() - self.cncjob_tab_lay.addWidget(self.cncjob_scroll_area) - - self.tools_tab = QtWidgets.QWidget() - self.pref_tab_area.addTab(self.tools_tab, _("TOOLS")) - self.tools_tab_lay = QtWidgets.QVBoxLayout() - self.tools_tab_lay.setContentsMargins(2, 2, 2, 2) - self.tools_tab.setLayout(self.tools_tab_lay) - - self.tools_scroll_area = QtWidgets.QScrollArea() - self.tools_tab_lay.addWidget(self.tools_scroll_area) - - self.tools2_tab = QtWidgets.QWidget() - self.pref_tab_area.addTab(self.tools2_tab, _("TOOLS 2")) - self.tools2_tab_lay = QtWidgets.QVBoxLayout() - self.tools2_tab_lay.setContentsMargins(2, 2, 2, 2) - self.tools2_tab.setLayout(self.tools2_tab_lay) - - self.tools2_scroll_area = QtWidgets.QScrollArea() - self.tools2_tab_lay.addWidget(self.tools2_scroll_area) - - self.fa_tab = QtWidgets.QWidget() - self.fa_tab.setObjectName("fa_tab") - self.pref_tab_area.addTab(self.fa_tab, _("UTILITIES")) - self.fa_tab_lay = QtWidgets.QVBoxLayout() - self.fa_tab_lay.setContentsMargins(2, 2, 2, 2) - self.fa_tab.setLayout(self.fa_tab_lay) - - self.fa_scroll_area = QtWidgets.QScrollArea() - self.fa_tab_lay.addWidget(self.fa_scroll_area) - self.pref_tab_bottom_layout = QtWidgets.QHBoxLayout() self.pref_tab_bottom_layout.setAlignment(QtCore.Qt.AlignVCenter) self.pref_tab_layout.addLayout(self.pref_tab_bottom_layout) diff --git a/flatcamGUI/preferences/PreferencesSectionUI.py b/flatcamGUI/preferences/PreferencesSectionUI.py index 858bf3d8..e0c1d3b5 100644 --- a/flatcamGUI/preferences/PreferencesSectionUI.py +++ b/flatcamGUI/preferences/PreferencesSectionUI.py @@ -29,4 +29,29 @@ class PreferencesSectionUI(QtWidgets.QWidget): for group in self.groups: groupoptions = group.option_dict() result.update(groupoptions) - return result \ No newline at end of file + return result + + def build_tab(self): + tab = QtWidgets.QWidget() + + tab_lay = QtWidgets.QVBoxLayout() + tab_lay.setContentsMargins(2, 2, 2, 2) + tab.setLayout(tab_lay) + + # Not sure what the point of this is ??? + hlay1 = QtWidgets.QHBoxLayout() + hlay1.addStretch() + tab_lay.addLayout(hlay1) + + scroll_area = QtWidgets.QScrollArea() + scroll_area.setWidget(self) + self.show() + tab_lay.addWidget(scroll_area) + + return tab + + def get_tab_id(self) -> str: + raise NotImplementedError + + def get_tab_label(self) -> str: + raise NotImplementedError diff --git a/flatcamGUI/preferences/PreferencesUIManager.py b/flatcamGUI/preferences/PreferencesUIManager.py index 90d2cbf2..76f00eba 100644 --- a/flatcamGUI/preferences/PreferencesUIManager.py +++ b/flatcamGUI/preferences/PreferencesUIManager.py @@ -521,29 +521,7 @@ class PreferencesUIManager: } - self.child_forms = { - "general": ui.general_defaults_form, - "gerber": ui.gerber_defaults_form, - "excellon": ui.excellon_defaults_form, - "geometry": ui.geometry_defaults_form, - "cncjob": ui.cncjob_defaults_form, - "tools": ui.tools_defaults_form, - "tools2": ui.tools2_defaults_form, - "util": ui.util_defaults_form - } - self.child_scroll_areas = { - "general": ui.general_scroll_area, - "gerber": ui.gerber_scroll_area, - "excellon": ui.excellon_scroll_area, - "geometry": ui.geometry_scroll_area, - "cncjob": ui.cncjob_scroll_area, - "tools": ui.tools_scroll_area, - "tools2": ui.tools2_scroll_area, - "util": ui.fa_scroll_area - } - self.sections = [ - # FIXME ui.general_defaults_form, ui.gerber_defaults_form, ui.excellon_defaults_form, @@ -642,16 +620,12 @@ class PreferencesUIManager: :return: None """ + # FIXME this should be done in __init__ - for section in self.child_scroll_areas: - scroll_area = self.child_scroll_areas[section] - form = self.child_forms[section] - try: - scroll_area.takeWidget() - except Exception: - log.debug("Nothing to remove for section "+section) - scroll_area.setWidget(form) - form.show() + for section in self.sections: + tab = section.build_tab() + tab.setObjectName(section.get_tab_id()) + self.ui.pref_tab_area.addTab(tab, section.get_tab_label()) # Initialize the color box's color in Preferences -> Global -> Colo self.__init_color_pickers() diff --git a/flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py b/flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py index 5262a691..f9e617ad 100644 --- a/flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py +++ b/flatcamGUI/preferences/cncjob/CNCJobPreferencesUI.py @@ -22,3 +22,10 @@ class CNCJobPreferencesUI(PreferencesSectionUI): self.cncjob_opt_group, self.cncjob_adv_opt_group ] + + def get_tab_id(self): + # FIXME this doesn't seem right + return "text_editor_tab" + + def get_tab_label(self): + return _("CNC-JOB") \ No newline at end of file diff --git a/flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py b/flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py index 3ba51eb1..01616d37 100644 --- a/flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py +++ b/flatcamGUI/preferences/excellon/ExcellonPreferencesUI.py @@ -27,3 +27,9 @@ class ExcellonPreferencesUI(PreferencesSectionUI): self.excellon_editor_group ] + def get_tab_id(self): + return "excellon_tab" + + def get_tab_label(self): + return _("EXCELLON") + diff --git a/flatcamGUI/preferences/general/GeneralPreferencesUI.py b/flatcamGUI/preferences/general/GeneralPreferencesUI.py index c582ccd6..c88d7362 100644 --- a/flatcamGUI/preferences/general/GeneralPreferencesUI.py +++ b/flatcamGUI/preferences/general/GeneralPreferencesUI.py @@ -18,3 +18,8 @@ class GeneralPreferencesUI(PreferencesSectionUI): GeneralAppSettingsGroupUI(decimals=self.decimals) ] + def get_tab_id(self): + return "general_tab" + + def get_tab_label(self): + return _("General") diff --git a/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py b/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py index 621cf294..c0e5a10f 100644 --- a/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py +++ b/flatcamGUI/preferences/geometry/GeometryPreferencesUI.py @@ -23,3 +23,10 @@ class GeometryPreferencesUI(PreferencesSectionUI): self.geometry_adv_opt_group, self.geometry_editor_group ] + + def get_tab_id(self): + return "geometry_tab" + + def get_tab_label(self): + return _("GEOMETRY") + diff --git a/flatcamGUI/preferences/gerber/GerberPreferencesUI.py b/flatcamGUI/preferences/gerber/GerberPreferencesUI.py index f7306b21..2e564831 100644 --- a/flatcamGUI/preferences/gerber/GerberPreferencesUI.py +++ b/flatcamGUI/preferences/gerber/GerberPreferencesUI.py @@ -25,4 +25,10 @@ class GerberPreferencesUI(PreferencesSectionUI): self.gerber_exp_group, self.gerber_adv_opt_group, self.gerber_editor_group - ] \ No newline at end of file + ] + + def get_tab_id(self): + return "gerber_tab" + + def get_tab_label(self): + return _("GERBER") diff --git a/flatcamGUI/preferences/tools/Tools2PreferencesUI.py b/flatcamGUI/preferences/tools/Tools2PreferencesUI.py index 8cf6a95b..168940a0 100644 --- a/flatcamGUI/preferences/tools/Tools2PreferencesUI.py +++ b/flatcamGUI/preferences/tools/Tools2PreferencesUI.py @@ -46,4 +46,10 @@ class Tools2PreferencesUI(PreferencesSectionUI): # fixme column 5 self.tools2_punch_group, self.tools2_invert_group, - ] \ No newline at end of file + ] + + def get_tab_id(self): + return "tools2_tab" + + def get_tab_label(self): + return _("TOOLS 2") \ No newline at end of file diff --git a/flatcamGUI/preferences/tools/ToolsPreferencesUI.py b/flatcamGUI/preferences/tools/ToolsPreferencesUI.py index 2b9000cd..0c4ffd70 100644 --- a/flatcamGUI/preferences/tools/ToolsPreferencesUI.py +++ b/flatcamGUI/preferences/tools/ToolsPreferencesUI.py @@ -51,3 +51,8 @@ class ToolsPreferencesUI(PreferencesSectionUI): self.tools_solderpaste_group, ] + def get_tab_id(self): + return "tools_tab" + + def get_tab_label(self): + return _("TOOLS") diff --git a/flatcamGUI/preferences/utilities/UtilPreferencesUI.py b/flatcamGUI/preferences/utilities/UtilPreferencesUI.py index 2ce2047a..9e2f40b1 100644 --- a/flatcamGUI/preferences/utilities/UtilPreferencesUI.py +++ b/flatcamGUI/preferences/utilities/UtilPreferencesUI.py @@ -23,3 +23,9 @@ class UtilPreferencesUI(PreferencesSectionUI): self.fa_gerber_group, self.kw_group, ] + + def get_tab_id(self): + return "fa_tab" + + def get_tab_label(self): + return _("UTILITIES") \ No newline at end of file