2323# ── Project layout ────────────────────────────────────────────────────────────
2424
2525PROJECT_DIR = Path (__file__ ).parent
26- PYTHON = sys .executable
26+ if getattr (sys , "frozen" , False ):
27+ import shutil as _shutil
28+ PYTHON = _shutil .which ("python3" ) or _shutil .which ("python" ) or "python3"
29+ else :
30+ PYTHON = sys .executable
2731
2832SCRIPTS = {
2933 "downloader" : PROJECT_DIR / "downloader.py" ,
@@ -207,7 +211,7 @@ def __init__(self, page: ft.Page) -> None:
207211 expand = True ,
208212 spacing = 0 ,
209213 auto_scroll = True ,
210- padding = ft .padding .symmetric (horizontal = 8 , vertical = 6 ),
214+ padding = ft .Padding .symmetric (horizontal = 8 , vertical = 6 ),
211215 )
212216
213217 self ._badge = ft .Text ("" , size = 11 , color = C_PRIMARY )
@@ -243,7 +247,7 @@ def __init__(self, page: ft.Page) -> None:
243247 self ._clear_btn ,
244248 ],
245249 ),
246- padding = ft .padding .only (top = 8 , bottom = 4 ),
250+ padding = ft .Padding .only (top = 8 , bottom = 4 ),
247251 ),
248252 # Scrollable text area — fixed height so form area gets the rest
249253 ft .Container (
@@ -412,7 +416,7 @@ def _chip(label: str, color: str) -> ft.Container:
412416 content = ft .Text (label , size = 10 , color = color , weight = ft .FontWeight .BOLD ),
413417 bgcolor = ft .Colors .with_opacity (0.12 , color ),
414418 border_radius = 12 ,
415- padding = ft .padding .symmetric (horizontal = 8 , vertical = 3 ),
419+ padding = ft .Padding .symmetric (horizontal = 8 , vertical = 3 ),
416420 )
417421
418422def _status_chip (done : int , total : int ) -> ft .Container :
@@ -473,7 +477,7 @@ def _run_btn(text: str, icon: str, on_click: callable) -> ft.FilledButton:
473477 style = ft .ButtonStyle (
474478 bgcolor = C_PRIMARY ,
475479 color = ft .Colors .BLACK ,
476- padding = ft .padding .symmetric (horizontal = 16 , vertical = 10 ),
480+ padding = ft .Padding .symmetric (horizontal = 16 , vertical = 10 ),
477481 ),
478482 on_click = on_click ,
479483 )
@@ -487,7 +491,7 @@ def _outlined_btn(text: str, icon: str, on_click: callable) -> ft.OutlinedButton
487491 ),
488492 style = ft .ButtonStyle (
489493 side = ft .BorderSide (1 , C_PRIMARY ),
490- padding = ft .padding .symmetric (horizontal = 14 , vertical = 10 ),
494+ padding = ft .Padding .symmetric (horizontal = 14 , vertical = 10 ),
491495 ),
492496 on_click = on_click ,
493497 )
@@ -563,7 +567,7 @@ def _go(_):
563567 bgcolor = ft .Colors .with_opacity (0.08 , ft .Colors .WHITE ),
564568 color = ft .Colors .WHITE ,
565569 side = ft .BorderSide (1 , ft .Colors .with_opacity (0.12 , ft .Colors .WHITE )),
566- padding = ft .padding .symmetric (horizontal = 12 , vertical = 8 ),
570+ padding = ft .Padding .symmetric (horizontal = 12 , vertical = 8 ),
567571 ),
568572 on_click = _go ,
569573 )
@@ -1289,13 +1293,13 @@ def _const_row(script: str, name: str, desc: str, default: str,
12891293 options = [ft .dropdown .Option (key = val , text = label ) for label , val in options ],
12901294 expand = True , dense = True ,
12911295 bgcolor = C_OUTPUT_BG , border_color = accent , text_size = 12 ,
1292- content_padding = ft .padding .symmetric (horizontal = 8 , vertical = 4 ),
1296+ content_padding = ft .Padding .symmetric (horizontal = 8 , vertical = 4 ),
12931297 )
12941298 else :
12951299 ctrl = ft .TextField (
12961300 value = cur , expand = True , dense = True ,
12971301 bgcolor = C_OUTPUT_BG , border_color = accent ,
1298- text_size = 12 , content_padding = ft .padding .symmetric (horizontal = 8 , vertical = 6 ),
1302+ text_size = 12 , content_padding = ft .Padding .symmetric (horizontal = 8 , vertical = 6 ),
12991303 on_change = lambda e : None , # ensures Flet syncs typed value to ctrl.value
13001304 )
13011305
@@ -1312,7 +1316,7 @@ def _reset(_, c=ctrl, s=script, n=name, d=default):
13121316 return ft .Row (controls = [
13131317 ft .Container (
13141318 ft .Text (script , size = 10 , color = accent , weight = ft .FontWeight .BOLD ),
1315- width = 74 , padding = ft .padding .symmetric (horizontal = 4 , vertical = 2 ),
1319+ width = 74 , padding = ft .Padding .symmetric (horizontal = 4 , vertical = 2 ),
13161320 border_radius = 4 ,
13171321 bgcolor = ft .Colors .with_opacity (0.12 , accent ),
13181322 ),
@@ -1379,7 +1383,7 @@ def _save_all(_):
13791383 on_click = _save_all ,
13801384 style = ft .ButtonStyle (
13811385 bgcolor = C_PRIMARY , color = ft .Colors .BLACK ,
1382- padding = ft .padding .symmetric (horizontal = 28 , vertical = 14 ),
1386+ padding = ft .Padding .symmetric (horizontal = 28 , vertical = 14 ),
13831387 ),
13841388 )
13851389 refresh_btn_settings = ft .OutlinedButton (
@@ -1388,7 +1392,7 @@ def _save_all(_):
13881392 on_click = lambda _ : _do_refresh (),
13891393 style = ft .ButtonStyle (
13901394 side = ft .BorderSide (1 , C_SECONDARY ), color = C_SECONDARY ,
1391- padding = ft .padding .symmetric (horizontal = 20 , vertical = 14 ),
1395+ padding = ft .Padding .symmetric (horizontal = 20 , vertical = 14 ),
13921396 ),
13931397 )
13941398
@@ -1458,7 +1462,7 @@ def _build_pages() -> list:
14581462 page_content = ft .Container (
14591463 content = pages [0 ],
14601464 expand = True ,
1461- padding = ft .padding .only (left = 16 , right = 16 , top = 16 , bottom = 8 ),
1465+ padding = ft .Padding .only (left = 16 , right = 16 , top = 16 , bottom = 8 ),
14621466 )
14631467
14641468 # Right-side panel: scrollable page content + pinned console
@@ -1467,7 +1471,7 @@ def _build_pages() -> list:
14671471 page_content ,
14681472 ft .Container (
14691473 content = console .container ,
1470- padding = ft .padding .only (left = 16 , right = 16 , bottom = 12 ),
1474+ padding = ft .Padding .only (left = 16 , right = 16 , bottom = 12 ),
14711475 ),
14721476 ],
14731477 spacing = 0 ,
@@ -1543,7 +1547,7 @@ def _rebuild() -> None:
15431547 weight = ft .FontWeight .BOLD ,
15441548 text_align = ft .TextAlign .CENTER ),
15451549 ], horizontal_alignment = ft .CrossAxisAlignment .CENTER , spacing = 2 ),
1546- padding = ft .padding .only (bottom = 12 ),
1550+ padding = ft .Padding .only (bottom = 12 ),
15471551 ),
15481552 )
15491553
0 commit comments