Deduplicate code creating widgets for prefs tabs

This commit is contained in:
David Robertson
2020-05-06 03:02:23 +01:00
parent 1fc076b158
commit f05540a587
11 changed files with 81 additions and 117 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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()

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")

View File

@@ -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")