Просмотр исходного кода

Deduplicate code creating widgets for prefs tabs

David Robertson 5 лет назад
Родитель
Сommit
f05540a587

+ 0 - 83
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)

+ 26 - 1
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
+        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

+ 5 - 31
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()

+ 7 - 0
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")

+ 6 - 0
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")
+

+ 5 - 0
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")

+ 7 - 0
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")
+

+ 7 - 1
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
-        ]
+        ]
+
+    def get_tab_id(self):
+        return "gerber_tab"
+
+    def get_tab_label(self):
+        return _("GERBER")

+ 7 - 1
flatcamGUI/preferences/tools/Tools2PreferencesUI.py

@@ -46,4 +46,10 @@ class Tools2PreferencesUI(PreferencesSectionUI):
             # fixme column 5
             self.tools2_punch_group,
             self.tools2_invert_group,
-        ]
+        ]
+
+    def get_tab_id(self):
+        return "tools2_tab"
+
+    def get_tab_label(self):
+        return _("TOOLS 2")

+ 5 - 0
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")

+ 6 - 0
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")