Add a warning banner while changing settings
This commit is contained in:
parent
5616173290
commit
04e2352cd3
2 changed files with 74 additions and 27 deletions
|
@ -76,13 +76,15 @@ def main(page: ft.Page):
|
||||||
"/behaviour": BehaviourPage(),
|
"/behaviour": BehaviourPage(),
|
||||||
"/settings": SettingsPage()
|
"/settings": SettingsPage()
|
||||||
}
|
}
|
||||||
|
|
||||||
page.views.clear()
|
page.views.clear()
|
||||||
page.views.append(ft.View(route, [
|
view = ft.View(route, [
|
||||||
ft.Row([
|
ft.Row([
|
||||||
bar,
|
bar,
|
||||||
ft.Container(content=routes.get(route, HomePage()), expand=True)
|
ft.Container(content=routes.get(route, HomePage()), expand=True)
|
||||||
], expand=True)
|
], expand=True)
|
||||||
]))
|
])
|
||||||
|
page.views.append(view)
|
||||||
page.update()
|
page.update()
|
||||||
|
|
||||||
def on_route_change(e):
|
def on_route_change(e):
|
||||||
|
|
|
@ -4,12 +4,43 @@ from utils import setthemecolor, setlanguage
|
||||||
from i18n import _
|
from i18n import _
|
||||||
|
|
||||||
def SettingsPage():
|
def SettingsPage():
|
||||||
|
# Create the main container to hold everything
|
||||||
|
main_container = ft.Container()
|
||||||
|
|
||||||
|
# Create a custom notification that we'll show/hide
|
||||||
|
notification = ft.Container(
|
||||||
|
visible=False,
|
||||||
|
bgcolor=ft.colors.AMBER_100,
|
||||||
|
border_radius=5,
|
||||||
|
padding=10,
|
||||||
|
margin=ft.margin.only(bottom=20, left=20, right=20),
|
||||||
|
content=ft.Row([
|
||||||
|
ft.Icon(ft.icons.INFO_OUTLINED, color=ft.colors.AMBER),
|
||||||
|
ft.Text(_("Settings changed. Restart required for changes to take effect."),
|
||||||
|
color=ft.colors.BLACK, expand=True),
|
||||||
|
ft.IconButton(
|
||||||
|
icon=ft.icons.CLOSE,
|
||||||
|
icon_color=ft.colors.GREY_800,
|
||||||
|
icon_size=20,
|
||||||
|
on_click=lambda e: hide_notification()
|
||||||
|
)
|
||||||
|
])
|
||||||
|
)
|
||||||
|
|
||||||
|
def hide_notification():
|
||||||
|
notification.visible = False
|
||||||
|
main_container.update()
|
||||||
|
|
||||||
|
def show_notification():
|
||||||
|
notification.visible = True
|
||||||
|
main_container.update()
|
||||||
|
|
||||||
def getlangoptions():
|
def getlangoptions():
|
||||||
return [
|
return [
|
||||||
ft.DropdownOption(key="Polski", content=ft.Text("Polski")),
|
ft.DropdownOption(key="Polski", content=ft.Text("Polski")),
|
||||||
ft.DropdownOption(key="English", content=ft.Text("English")),
|
ft.DropdownOption(key="English", content=ft.Text("English")),
|
||||||
]
|
]
|
||||||
|
|
||||||
def getthemeoptions():
|
def getthemeoptions():
|
||||||
return [
|
return [
|
||||||
ft.DropdownOption(key="RED", content=ft.Text(_("Red"))),
|
ft.DropdownOption(key="RED", content=ft.Text(_("Red"))),
|
||||||
|
@ -23,34 +54,48 @@ def SettingsPage():
|
||||||
ft.DropdownOption(key="GREY", content=ft.Text(_("Grey"))),
|
ft.DropdownOption(key="GREY", content=ft.Text(_("Grey"))),
|
||||||
ft.DropdownOption(key="AMBER", content=ft.Text(_("Amber"))),
|
ft.DropdownOption(key="AMBER", content=ft.Text(_("Amber"))),
|
||||||
ft.DropdownOption(key="CYAN", content=ft.Text(_("Cyan"))),
|
ft.DropdownOption(key="CYAN", content=ft.Text(_("Cyan"))),
|
||||||
]
|
]
|
||||||
|
|
||||||
def onlangchange(e):
|
def onlangchange(e):
|
||||||
setlanguage(e)
|
setlanguage(e)
|
||||||
|
show_notification()
|
||||||
|
|
||||||
def onthemechange(e):
|
def onthemechange(e):
|
||||||
setthemecolor(e.data)
|
setthemecolor(e.data)
|
||||||
|
show_notification()
|
||||||
|
|
||||||
|
# Create a column with settings at top and notification container at bottom
|
||||||
|
main_content = ft.Column([
|
||||||
|
# Settings at the top
|
||||||
|
ft.Container(
|
||||||
|
content=ft.Column([
|
||||||
|
ft.Text(_("Settings"), size=30, weight="bold"),
|
||||||
|
ft.Row([
|
||||||
|
ft.Text(_("Language (Requires restart)")),
|
||||||
|
ft.Dropdown(
|
||||||
|
width=200,
|
||||||
|
label=(_("Language")),
|
||||||
|
options=getlangoptions(),
|
||||||
|
on_change=onlangchange
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
ft.Row([
|
||||||
|
ft.Text(_("Theme (Requires restart)")),
|
||||||
|
ft.Dropdown(
|
||||||
|
width=200,
|
||||||
|
label=(_("Theme")),
|
||||||
|
options=getthemeoptions(),
|
||||||
|
on_change=onthemechange
|
||||||
|
)
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
expand=True # Make this container expand to push the notification to the bottom
|
||||||
|
),
|
||||||
|
# Notification at the bottom
|
||||||
|
notification
|
||||||
|
], expand=True) # Make the column expand to fill the available space
|
||||||
|
|
||||||
return ft.Column([
|
main_container.content = main_content
|
||||||
ft.Text(_("Settings"), size=30, weight="bold"),
|
main_container.expand = True # Make the main container expand
|
||||||
ft.Row([
|
|
||||||
ft.Text(_("Language (Requires restart)")),
|
return main_container
|
||||||
ft.Dropdown(
|
|
||||||
width=200,
|
|
||||||
label=(_("Language")),
|
|
||||||
options=getlangoptions(),
|
|
||||||
on_change=onlangchange
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
|
|
||||||
ft.Row([
|
|
||||||
ft.Text(_("Theme (Requires restart)")),
|
|
||||||
ft.Dropdown(
|
|
||||||
width=200,
|
|
||||||
label=(_("Theme")),
|
|
||||||
options=getthemeoptions(),
|
|
||||||
on_change=onthemechange
|
|
||||||
)
|
|
||||||
]),
|
|
||||||
])
|
|
Loading…
Add table
Reference in a new issue