Files
2025-03-31 20:14:11 +02:00

72 lines
1.9 KiB
Python

from ignis.widgets import Widget
from ignis.app import IgnisApp
from user_options import user_options
from .active_page import active_page
from .pages import (
AboutEntry,
AppearanceEntry,
NotificationsEntry,
RecorderEntry,
UserEntry,
)
app = IgnisApp.get_default()
class Settings(Widget.RegularWindow):
def __init__(self) -> None:
content = Widget.Box(
hexpand=True,
vexpand=True,
child=active_page.bind("value", transform=lambda value: [value]),
)
self._listbox = Widget.ListBox()
navigation_sidebar = Widget.Box(
vertical=True,
css_classes=["settings-sidebar"],
child=[
Widget.Label(
label="Settings",
halign="start",
css_classes=["settings-sidebar-label"],
),
self._listbox,
],
)
super().__init__(
default_width=900,
default_height=600,
resizable=False,
hide_on_close=True,
visible=False,
child=Widget.Box(child=[navigation_sidebar, content]),
namespace="ignis_SETTINGS",
)
self.connect("notify::visible", self.__on_open)
def __on_open(self, *args) -> None:
if self.visible is False:
return
if len(self._listbox.rows) != 0:
return
rows = [
NotificationsEntry(),
RecorderEntry(),
AppearanceEntry(),
UserEntry(),
AboutEntry(),
]
self._listbox.rows = rows
self._listbox.select_row(rows[user_options.settings.last_page])
self._listbox.connect("row-activated", self.__update_last_page)
def __update_last_page(self, x, row) -> None:
user_options.settings.last_page = self._listbox.rows.index(row)