Skip to content

Commit f36e0be

Browse files
committed
v0.6.12: refresh button on dashboard, fix snack bar, better save messages
- Add Refresh courses button (icon) to Dashboard Course Overview header - Fix snack bar: use page.open() (Flet 0.82 API) so it actually appears - All save buttons now show "Saved successfully!" confirmation
1 parent c0e5208 commit f36e0be

1 file changed

Lines changed: 25 additions & 14 deletions

File tree

gui.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,8 @@ def _page_layout(scroll_controls: list[ft.Control]) -> ft.Column:
492492
# ── Page: Dashboard ───────────────────────────────────────────────────────────
493493

494494
def build_dashboard(page: ft.Page, console: OutputConsole,
495-
navigate: callable | None = None) -> ft.Column:
495+
navigate: callable | None = None,
496+
on_refresh: callable | None = None) -> ft.Column:
496497

497498
def _course_card(cid: int, name: str) -> ft.Card:
498499
vd, vt = _video_status(cid)
@@ -579,8 +580,19 @@ def _go(_):
579580
ft.Container(height=8),
580581
], horizontal_alignment=ft.CrossAxisAlignment.CENTER, spacing=10))]
581582

583+
refresh_btn = ft.IconButton(
584+
icon=ft.Icons.REFRESH,
585+
tooltip="Refresh courses from Canvas",
586+
icon_color=C_PRIMARY,
587+
on_click=lambda _: on_refresh() if on_refresh else None,
588+
)
589+
582590
scroll_content = [
583-
_section_title("Course Overview", ft.Icons.DASHBOARD_OUTLINED),
591+
ft.Row(controls=[
592+
_section_title("Course Overview", ft.Icons.DASHBOARD_OUTLINED),
593+
ft.Container(expand=True),
594+
refresh_btn,
595+
]),
584596
*course_rows,
585597
ft.Container(height=4),
586598
_section_title("Quick Actions", ft.Icons.BOLT_OUTLINED),
@@ -1031,13 +1043,11 @@ def build_settings(page: ft.Page,
10311043
on_courses_changed: callable | None = None) -> ft.Column:
10321044

10331045
def _snack(msg: str, ok: bool = True) -> None:
1034-
page.snack_bar = ft.SnackBar(
1046+
page.open(ft.SnackBar(
10351047
ft.Text(msg, color=ft.Colors.BLACK),
10361048
bgcolor=C_SUCCESS if ok else C_ERROR,
1037-
duration=2000,
1038-
)
1039-
page.snack_bar.open = True
1040-
page.update()
1049+
duration=2500,
1050+
))
10411051

10421052
def _key_row(label: str, tf: ft.TextField, on_save) -> ft.Row:
10431053
return ft.Row(controls=[
@@ -1076,14 +1086,14 @@ def _save_config(key: str, value: str) -> None:
10761086
def _save_canvas_url(_):
10771087
try:
10781088
_save_config("CANVAS_URL", tf_canvas_url.value.strip())
1079-
_snack("Canvas URL saved.")
1089+
_snack("Canvas URL saved successfully!")
10801090
except Exception as e:
10811091
_snack(f"Error: {e}", ok=False)
10821092

10831093
def _save_panopto(_):
10841094
try:
10851095
_save_config("PANOPTO_HOST", tf_panopto.value.strip())
1086-
_snack("Panopto host saved.")
1096+
_snack("Panopto host saved successfully!")
10871097
except Exception as e:
10881098
_snack(f"Error: {e}", ok=False)
10891099

@@ -1156,28 +1166,28 @@ def _do_refresh():
11561166
def _save_canvas(_):
11571167
try:
11581168
canvas_file.write_text(tf_canvas.value.strip())
1159-
_snack("Canvas token saved.")
1169+
_snack("Canvas token saved successfully!")
11601170
except Exception as e:
11611171
_snack(f"Error: {e}", ok=False)
11621172

11631173
def _save_openai(_):
11641174
try:
11651175
openai_file.write_text(tf_openai.value.strip())
1166-
_snack("OpenAI key saved to openai_api.txt.")
1176+
_snack("OpenAI key saved successfully!")
11671177
except Exception as e:
11681178
_snack(f"Error: {e}", ok=False)
11691179

11701180
def _save_anthropic(_):
11711181
try:
11721182
anthropic_file.write_text(tf_anthropic.value.strip())
1173-
_snack("Anthropic key saved to anthropic_key.txt.")
1183+
_snack("Anthropic key saved successfully!")
11741184
except Exception as e:
11751185
_snack(f"Error: {e}", ok=False)
11761186

11771187
def _save_gemini(_):
11781188
try:
11791189
gemini_file.write_text(tf_gemini.value.strip())
1180-
_snack("Gemini key saved to gemini_api.txt.")
1190+
_snack("Gemini key saved successfully!")
11811191
except Exception as e:
11821192
_snack(f"Error: {e}", ok=False)
11831193

@@ -1414,7 +1424,8 @@ def navigate(idx: int) -> None:
14141424

14151425
def _build_pages() -> list:
14161426
return [
1417-
build_dashboard(page, console, navigate=navigate),
1427+
build_dashboard(page, console, navigate=navigate,
1428+
on_refresh=lambda: _rebuild_ref[0] and _rebuild_ref[0]()),
14181429
build_pipeline(page, console),
14191430
build_download(page, console),
14201431
build_transcribe(page, console),

0 commit comments

Comments
 (0)