onionshare/desktop/onionshare/settings_parent_tab.py

73 lines
2.2 KiB
Python

from PySide6 import QtCore, QtWidgets, QtGui
from onionshare_cli.mode_settings import ModeSettings
from . import strings
from .tab import Tab
from .threads import EventHandlerThread
from .gui_common import GuiCommon
from .tor_settings_tab import TorSettingsTab
from .settings_tab import SettingsTab
from .connection_tab import AutoConnectTab
class SettingsParentTab(QtWidgets.QTabWidget):
"""
The settings tab widget containing the tor settings
and app settings subtabs
"""
bring_to_front = QtCore.Signal()
close_this_tab = QtCore.Signal()
def __init__(
self, common, tab_id, parent=None, active_tab="general", from_autoconnect=False
):
super(SettingsParentTab, self).__init__()
self.parent = parent
self.common = common
self.common.log("SettingsParentTab", "__init__")
# Keep track of tabs in a dictionary that maps tab_id to tab.
# Each tab has a unique, auto-incremented id (tab_id). This is different than the
# tab's index, which changes as tabs are re-arranged.
self.tabs = {
"general": 0,
"tor": 1,
}
self.tab_id = tab_id
self.current_tab_id = self.tabs[active_tab]
# Use a custom tab bar
tab_bar = TabBar(self.common)
self.setTabBar(tab_bar)
settings_tab = SettingsTab(self.common, self.tabs["general"], parent=self)
self.tor_settings_tab = TorSettingsTab(
self.common,
self.tabs["tor"],
self.parent.are_tabs_active(),
self.parent.status_bar,
parent=self,
from_autoconnect=from_autoconnect,
)
self.addTab(settings_tab, strings._("gui_general_settings_window_title"))
self.addTab(self.tor_settings_tab, strings._("gui_tor_settings_window_title"))
# Set up the tab widget
self.setMovable(False)
self.setTabsClosable(False)
self.setUsesScrollButtons(False)
self.setCurrentIndex(self.current_tab_id)
class TabBar(QtWidgets.QTabBar):
"""
A custom tab bar
"""
move_new_tab_button = QtCore.Signal()
def __init__(self, common):
super(TabBar, self).__init__()
self.setStyleSheet(common.gui.css["settings_subtab_bar"])