From 05170c1fa14e1fc5951b5ec60ded2730f33f96e4 Mon Sep 17 00:00:00 2001 From: Feodor Fitsner Date: Wed, 13 Aug 2025 18:16:19 -0700 Subject: [PATCH 01/16] Icons as codepoints --- ci/generate_cupertino_icons.sh | 5 + ci/generate_cupertino_icons_dart.sh | 15 - ci/generate_cupertino_icons_python.sh | 11 - ci/generate_icons.py | 70 + ci/generate_material_icons.sh | 5 + ci/generate_material_icons_dart.sh | 15 - ci/generate_material_icons_python.sh | 11 - .../controls/cupertino_navigation_bar.dart | 3 +- .../flet/lib/src/controls/date_picker.dart | 4 +- .../controls/navigation_bar_destination.dart | 5 +- .../lib/src/controls/navigation_drawer.dart | 2 +- .../lib/src/controls/navigation_rail.dart | 8 +- packages/flet/lib/src/services/tester.dart | 6 +- packages/flet/lib/src/utils/icons.dart | 33 +- sdk/python/examples/controls/icon/basic.py | 18 +- .../controls/cupertino/cupertino_icons.py | 2473 +-- .../flet/src/flet/controls/material/icons.py | 17705 ++++++++-------- .../packages/flet/src/flet/controls/types.py | 12 +- 18 files changed, 10071 insertions(+), 10330 deletions(-) create mode 100644 ci/generate_cupertino_icons.sh delete mode 100644 ci/generate_cupertino_icons_dart.sh delete mode 100644 ci/generate_cupertino_icons_python.sh create mode 100644 ci/generate_icons.py create mode 100644 ci/generate_material_icons.sh delete mode 100644 ci/generate_material_icons_dart.sh delete mode 100644 ci/generate_material_icons_python.sh diff --git a/ci/generate_cupertino_icons.sh b/ci/generate_cupertino_icons.sh new file mode 100644 index 0000000000..7c363470c0 --- /dev/null +++ b/ci/generate_cupertino_icons.sh @@ -0,0 +1,5 @@ +url='https://raw.githubusercontent.com/flutter/flutter/refs/heads/stable/packages/flutter/lib/src/cupertino/icons.dart' +output_file="sdk/python/packages/flet/src/flet/controls/cupertino/cupertino_icons_generated.py" +set_id="2" + +uv run --with requests ci/generate_icons.py $url $output_file $set_id diff --git a/ci/generate_cupertino_icons_dart.sh b/ci/generate_cupertino_icons_dart.sh deleted file mode 100644 index 0a80b1ae37..0000000000 --- a/ci/generate_cupertino_icons_dart.sh +++ /dev/null @@ -1,15 +0,0 @@ -url='https://raw.githubusercontent.com/flutter/flutter/stable/packages/flutter/lib/src/cupertino/icons.dart' -output_file="cupertino_icons.txt" - -echo "Map cupertinoIcons = {" > "$output_file" - -curl -s $url | python -c ' -import re - -for line in __import__("sys").stdin: - match = re.search(r"const IconData ([a-z0-9_]+)", line) - if match: - print("\"cupertino_{}\": CupertinoIcons.{}, ".format(match.group(1), match.group(1))) -' >> "$output_file" - -echo "};" >> "$output_file" \ No newline at end of file diff --git a/ci/generate_cupertino_icons_python.sh b/ci/generate_cupertino_icons_python.sh deleted file mode 100644 index c9fd2fca76..0000000000 --- a/ci/generate_cupertino_icons_python.sh +++ /dev/null @@ -1,11 +0,0 @@ -url='https://raw.githubusercontent.com/flutter/flutter/stable/packages/flutter/lib/src/cupertino/icons.dart' -output_file="cupertino_icons_python.txt" - -curl -s $url | python -c ' -import re - -for line in __import__("sys").stdin: - match = re.search(r"const IconData ([a-z0-9_]+)", line) - if match: - print("{} = \"cupertino_{}\"".format(match.group(1).upper(), match.group(1))) -' >> "$output_file" \ No newline at end of file diff --git a/ci/generate_icons.py b/ci/generate_icons.py new file mode 100644 index 0000000000..567616da33 --- /dev/null +++ b/ci/generate_icons.py @@ -0,0 +1,70 @@ +import re +import sys + +import requests + +# Regex for parsing icon definitions (handles multi-line IconData) +ICON_ENTRY_PATTERN = re.compile( + r""" + ^\s*///.*?"(?P.+?)"(?:\s+\((?P