test ferst
This commit is contained in:
69
web/theme_manager.py
Normal file
69
web/theme_manager.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import flet as ft
|
||||
import designer as d
|
||||
|
||||
_ui_text = ft.TextTheme(
|
||||
body_medium=ft.TextStyle(font_family=d.FONT_UI),
|
||||
body_large=ft.TextStyle(font_family=d.FONT_UI),
|
||||
body_small=ft.TextStyle(font_family=d.FONT_UI),
|
||||
label_large=ft.TextStyle(font_family=d.FONT_UI),
|
||||
label_medium=ft.TextStyle(font_family=d.FONT_UI),
|
||||
label_small=ft.TextStyle(font_family=d.FONT_UI),
|
||||
title_large=ft.TextStyle(font_family=d.FONT_UI, weight=ft.FontWeight.W_600),
|
||||
title_medium=ft.TextStyle(font_family=d.FONT_UI, weight=ft.FontWeight.W_500),
|
||||
title_small=ft.TextStyle(font_family=d.FONT_UI),
|
||||
)
|
||||
|
||||
THEMES = {
|
||||
"light": ft.Theme(
|
||||
color_scheme_seed=d.PRIMARY,
|
||||
color_scheme=ft.ColorScheme(
|
||||
primary=d.PRIMARY,
|
||||
secondary=d.ACCENT,
|
||||
background=d.BACKGROUND,
|
||||
surface=d.SURFACE,
|
||||
),
|
||||
text_theme=_ui_text,
|
||||
),
|
||||
"dark": ft.Theme(
|
||||
color_scheme_seed=d.PRIMARY,
|
||||
color_scheme=ft.ColorScheme(
|
||||
primary=d.PRIMARY_LIGHT,
|
||||
secondary=d.ACCENT,
|
||||
background="#121212",
|
||||
surface="#1E1E1E",
|
||||
on_surface=ft.colors.WHITE,
|
||||
),
|
||||
text_theme=_ui_text,
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def apply(page: ft.Page, theme_id: str = "light"):
|
||||
theme = THEMES.get(theme_id, THEMES["light"])
|
||||
if theme_id == "dark":
|
||||
page.theme_mode = ft.ThemeMode.DARK
|
||||
page.dark_theme = theme
|
||||
else:
|
||||
page.theme_mode = ft.ThemeMode.LIGHT
|
||||
page.theme = theme
|
||||
|
||||
|
||||
def apply_article_font(page: ft.Page, font_family: str):
|
||||
"""Temporarily override body text font for article reading view."""
|
||||
article_text = ft.TextTheme(
|
||||
body_medium=ft.TextStyle(font_family=font_family, size=16, height=1.7),
|
||||
body_large=ft.TextStyle(font_family=font_family, size=18, height=1.7),
|
||||
body_small=ft.TextStyle(font_family=font_family),
|
||||
)
|
||||
if page.theme:
|
||||
page.theme.text_theme = article_text
|
||||
else:
|
||||
page.theme = ft.Theme(text_theme=article_text)
|
||||
page.update()
|
||||
|
||||
|
||||
def reset_font(page: ft.Page):
|
||||
"""Restore default UI font after leaving article view."""
|
||||
if page.theme:
|
||||
page.theme.text_theme = _ui_text
|
||||
page.update()
|
||||
Reference in New Issue
Block a user