diff --git a/src/interface/dialogs/settings.py b/src/interface/dialogs/settings.py index 3267730..795a9c8 100644 --- a/src/interface/dialogs/settings.py +++ b/src/interface/dialogs/settings.py @@ -1,7 +1,5 @@ -from interface.utils.tabhelper import general_tab -from interface.utils.tabhelper import network_tab +from interface.utils.tabhelper import create_tab from utils.config.settings import save_settings -from interface.utils.tabhelper import paths_tab from interface.utils.svghelper import svg_icon from utils.logging.logs import consoleLog from PySide6.QtCore import Qt, QSize @@ -19,7 +17,6 @@ from PySide6.QtWidgets import ( QCheckBox, QFileDialog, QComboBox, - QTabWidget, ) import platform @@ -264,10 +261,10 @@ def settings_dialog(self): layout.addWidget(cancel_btn) layout.addWidget(save_btn) - self.tabs = QTabWidget() - self.tab1 = general_tab("General", autoresume_container, update_checkbox_container, transparent_window_container, self.tabs) - self.tab2 = paths_tab("Paths", download_path_container, image_path_container, self.tabs) - self.tab3 = network_tab("Network", interface_container, max_connections_container, max_downloads_container, up_speed_limit_container, down_speed_limit_container, api_url_container, self.tabs) + self.tabs = QtWidgets.QTabWidget() + create_tab("General", [autoresume_container, update_checkbox_container, transparent_window_container], tabs=self.tabs) + create_tab("Paths", [download_path_container, image_path_container], tabs=self.tabs) + create_tab("Network", [interface_container, max_connections_container, max_downloads_container, up_speed_limit_container, down_speed_limit_container, api_url_container], tabs=self.tabs) dialog_layout.addWidget(self.tabs) dialog_layout.addLayout(layout) diff --git a/src/interface/gui.py b/src/interface/gui.py index a7f47d9..2c95efb 100644 --- a/src/interface/gui.py +++ b/src/interface/gui.py @@ -164,8 +164,8 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): self.horizontal_layout.addWidget(state.trackertable) # Tabs - self.tab1 = create_tab("Search", self.searchbar, state.trackertable, self.tabs, self.dlbutton, self.horizontal_layout) - self.tab2 = create_tab("Downloads", self.emptyDownload, self.downloadList, self.tabs, None, None) + create_tab("Search", [self.searchbar, state.trackertable, self.tabs, self.dlbutton, self.horizontal_layout], tabs=self.tabs) + create_tab("Downloads", [self.emptyDownload, self.downloadList], tabs=self.tabs) # Corner Widget (Settings Button, Tracker list, Tab button container) self.corner_widget = QWidget() diff --git a/src/interface/utils/tabhelper.py b/src/interface/utils/tabhelper.py index f22304b..d517835 100644 --- a/src/interface/utils/tabhelper.py +++ b/src/interface/utils/tabhelper.py @@ -1,54 +1,18 @@ -from PySide6.QtWidgets import QWidget, QVBoxLayout +from PySide6.QtWidgets import QWidget, QVBoxLayout, QLayout # Tab creation helper function -def create_tab(title, searchbar, software_list, tabs, dlbutton, layout2): - tab = QWidget() - layout = QVBoxLayout() - if searchbar: - layout.addWidget(searchbar) - if layout2: - layout.addLayout(layout2) - else: - layout.addWidget(software_list) - if dlbutton: - layout.addWidget(dlbutton) - tab.setLayout(layout) - tabs.addTab(tab, title) - return tab - -# Settings Tabs -def general_tab(title, autoresume, update_checkbox, transparent_window, tabs): +def create_tab(title, items, *, tabs, stretch=False): tab = QWidget() layout = QVBoxLayout() - layout.addWidget(autoresume) - layout.addWidget(update_checkbox) - layout.addWidget(transparent_window) - layout.addStretch() - tab.setLayout(layout) - tabs.addTab(tab, title) - return tab - -def paths_tab(title, download_path, image_path, tabs): - tab = QWidget() - layout = QVBoxLayout() - layout.addWidget(download_path) - layout.addWidget(image_path) - layout.addStretch() - tab.setLayout(layout) - tabs.addTab(tab, title) - return tab - - -def network_tab(title, network_interface, max_connections, max_downloads, up_speed_limit, down_speed_limit, api_url, tabs): - tab = QWidget() - layout = QVBoxLayout() - layout.addWidget(network_interface) - layout.addWidget(max_connections) - layout.addWidget(max_downloads) - layout.addWidget(up_speed_limit) - layout.addWidget(down_speed_limit) - layout.addWidget(api_url) - layout.addStretch() + for item in items: + if item is None: + continue + if isinstance(item, QLayout): + layout.addLayout(item) + else: + layout.addWidget(item) + if stretch: + layout.addStretch() tab.setLayout(layout) tabs.addTab(tab, title) return tab