From da52ab502816f6dccf5ee5a31ae2e3789e098776 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Wed, 2 Sep 2026 17:08:35 +0800 Subject: [PATCH] refactor: rename some job names --- tool/src/aurora_iconset_builder/__init__.py | 7 +- .../assemblicon/highlevel/environment.py | 1 + .../nostd_icons/action_icons.py | 34 ++++---- .../nostd_icons/mimetype_icons.py | 16 ++-- .../std_icons/__init__.py | 3 +- .../std_icons/action_icons.py | 83 ++++++++++--------- .../std_icons/components.py | 13 +++ .../std_icons/mimetype_icons.py | 4 +- .../std_icons/status_icons.py | 23 ++++- 9 files changed, 112 insertions(+), 72 deletions(-) create mode 100644 tool/src/aurora_iconset_builder/std_icons/components.py diff --git a/tool/src/aurora_iconset_builder/__init__.py b/tool/src/aurora_iconset_builder/__init__.py index 2f23d16..9322692 100644 --- a/tool/src/aurora_iconset_builder/__init__.py +++ b/tool/src/aurora_iconset_builder/__init__.py @@ -3,7 +3,7 @@ from .assemblicon.highlevel.environment import Environment from .assemblicon.highlevel.context import Context from .assemblicon.logger import APP_LOGGER as LOGGER from .cli import parse -from .types import AuroraPrologue +from .types import AuroraPrologue, AuroraContext from . import std_icons, nostd_icons @@ -17,6 +17,9 @@ def main() -> None: env = Environment(prologue) ctx = Context(env) + # create our special temporary subdirectory + env.temporary_artifact("component").mkdir(parents=True, exist_ok=True) + try: register(ctx) ctx.run(opts.selection) @@ -24,6 +27,6 @@ def main() -> None: LOGGER.fatal("Runtime error: %s", e) -def register(ctx: Context) -> None: +def register(ctx: AuroraContext) -> None: std_icons.register(ctx) nostd_icons.register(ctx) diff --git a/tool/src/aurora_iconset_builder/assemblicon/highlevel/environment.py b/tool/src/aurora_iconset_builder/assemblicon/highlevel/environment.py index 14ac43d..def1394 100644 --- a/tool/src/aurora_iconset_builder/assemblicon/highlevel/environment.py +++ b/tool/src/aurora_iconset_builder/assemblicon/highlevel/environment.py @@ -84,6 +84,7 @@ class Environment(Generic[P]): def __init__(self, prologue: P) -> None: self.__prologue = prologue + self.__temp_dir = tempfile.TemporaryDirectory() # construct basic layout of temporary directory self.temporary_artifact(_TEMP_USER_DIR).mkdir(parents=True, exist_ok=True) diff --git a/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py b/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py index 67cae84..f61113d 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py @@ -13,12 +13,12 @@ from ..assemblicon.lowlevel.artproc import ( def register(ctx: AuroraContext) -> None: ctx.register( "nostd/action/image-properties", - ("nostd/mimetype/image-jpeg", "std/status/dialog-*"), + ("nostd/mimetype/image-jpeg", "std/status/dialog-infomation"), _build_image_properties_icon, ) ctx.register( "nostd/action/image-zoom-original", - ("nostd/mimetype/image-jpeg", "std/action/zoom-*"), + ("nostd/mimetype/image-jpeg", "component/triangles"), _build_image_zoom_original_icon, ) @@ -44,16 +44,16 @@ def _build_image_properties_icon(env: AuroraEnvironment) -> None: def _build_image_zoom_original_icon(env: AuroraEnvironment) -> None: # load triangle assets - triangle_left = env.load_temporary_artifact("triangle-left.png").resize( + tri_left = env.load_temporary_artifact("component", "triangle-left.png").resize( (300, 300), PIL.Image.Resampling.LANCZOS ) - triangle_down = env.load_temporary_artifact("triangle-down.png").resize( + tri_down = env.load_temporary_artifact("component", "triangle-down.png").resize( (300, 300), PIL.Image.Resampling.LANCZOS ) - triangle_right = env.load_temporary_artifact("triangle-right.png").resize( + tri_right = env.load_temporary_artifact("component", "triangle-right.png").resize( (300, 300), PIL.Image.Resampling.LANCZOS ) - triangle_up = env.load_temporary_artifact("triangle-up.png").resize( + tri_up = env.load_temporary_artifact("component", "triangle-up.png").resize( (300, 300), PIL.Image.Resampling.LANCZOS ) @@ -73,33 +73,27 @@ def _build_image_zoom_original_icon(env: AuroraEnvironment) -> None: ) align_alpha_composite( icon, - triangle_left, + tri_left, art_anchor_to_offset(icon, HorizontalAnchor.Left, VerticalAnchor.Center), - art_anchor_to_offset( - triangle_left, HorizontalAnchor.Left, VerticalAnchor.Center - ), + art_anchor_to_offset(tri_left, HorizontalAnchor.Left, VerticalAnchor.Center), ) align_alpha_composite( icon, - triangle_right, + tri_right, art_anchor_to_offset(icon, HorizontalAnchor.Right, VerticalAnchor.Center), - art_anchor_to_offset( - triangle_right, HorizontalAnchor.Right, VerticalAnchor.Center - ), + art_anchor_to_offset(tri_right, HorizontalAnchor.Right, VerticalAnchor.Center), ) align_alpha_composite( icon, - triangle_up, + tri_up, art_anchor_to_offset(icon, HorizontalAnchor.Center, VerticalAnchor.Top), - art_anchor_to_offset(triangle_up, HorizontalAnchor.Center, VerticalAnchor.Top), + art_anchor_to_offset(tri_up, HorizontalAnchor.Center, VerticalAnchor.Top), ) align_alpha_composite( icon, - triangle_down, + tri_down, art_anchor_to_offset(icon, HorizontalAnchor.Center, VerticalAnchor.Bottom), - art_anchor_to_offset( - triangle_down, HorizontalAnchor.Center, VerticalAnchor.Bottom - ), + art_anchor_to_offset(tri_down, HorizontalAnchor.Center, VerticalAnchor.Bottom), ) # save it diff --git a/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py b/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py index fdd96e9..cad0a80 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py @@ -12,24 +12,22 @@ from ..assemblicon.lowlevel.artproc import ( def register(ctx: AuroraContext) -> None: - ctx.register("nostd/mimetype/image-jpeg", (), _build_image_icons) + ctx.register("component/image-base", (), build_image_base_icon) + ctx.register("nostd/mimetype/image-jpeg", ("component/image-base",), build_jpg_icon) IMAGE_INNER_RECT = Rectangle(Point(20 * 4, 52 * 4), Point(236 * 4, 204 * 4)) -def _build_image_icons(env: AuroraEnvironment) -> None: - # build image base - image_base = env.render_svg_then_load( +def build_image_base_icon(env: AuroraEnvironment) -> None: + env.render_svg( env.input_artifact("component", "image-base.svg"), + env.temporary_artifact("component", "image-base.png"), ) - # load image base - with image_base: - _build_jpg_icon(env, image_base) -def _build_jpg_icon(env: AuroraEnvironment, base: Artifact) -> None: - jpg_image = base.copy() +def build_jpg_icon(env: AuroraEnvironment) -> None: + jpg_image = env.load_temporary_artifact("component", "image-base.png") jpg_image_inner = env.load_input_bitmap_artifact( "ext", "bitmap", "Niinsaare_järv.jpg" diff --git a/tool/src/aurora_iconset_builder/std_icons/__init__.py b/tool/src/aurora_iconset_builder/std_icons/__init__.py index 6806ea5..979280c 100644 --- a/tool/src/aurora_iconset_builder/std_icons/__init__.py +++ b/tool/src/aurora_iconset_builder/std_icons/__init__.py @@ -1,8 +1,9 @@ from ..types import AuroraContext -from . import action_icons, status_icons, mimetype_icons +from . import components, action_icons, status_icons, mimetype_icons def register(ctx: AuroraContext) -> None: + components.register(ctx) action_icons.register(ctx) mimetype_icons.register(ctx) status_icons.register(ctx) diff --git a/tool/src/aurora_iconset_builder/std_icons/action_icons.py b/tool/src/aurora_iconset_builder/std_icons/action_icons.py index 746bba6..d852dce 100644 --- a/tool/src/aurora_iconset_builder/std_icons/action_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/action_icons.py @@ -11,7 +11,14 @@ def register(ctx: AuroraContext) -> None: ctx.register("std/action/object-rotate-*", (), build_object_rotate_icons) ctx.register( - "std/action/zoom-[original|fit-best]", (), build_zoom_origin_and_fit_best_icons + "component/triangles", + ("component/generic-background",), + build_zoom_triangle_icons, + ) + ctx.register( + "std/action/zoom-[original|fit-best]", + ("component/triangles",), + build_zoom_origin_and_fit_best_icons, ) ctx.register("std/action/zoom-[in|out]", (), build_zoom_in_out_icons) @@ -60,51 +67,53 @@ def build_object_rotate_icons(env: AuroraEnvironment) -> None: env.save_fd_artifact(art, FdContext.Actions, "object-rotate-right") -def build_zoom_origin_and_fit_best_icons(env: AuroraEnvironment) -> None: - # load triangle assets - triangle = env.render_svg_then_load(env.input_artifact("component", "triangle.svg")) - background = env.render_svg_then_load( - env.input_artifact("component", "background.svg") - ) +def build_zoom_triangle_icons(env: AuroraEnvironment) -> None: + # load triangle and background assets + tri = env.render_svg_then_load(env.input_artifact("component", "triangle.svg")) + bg = env.load_temporary_artifact("component", "generic-background.png") # create 4 triangle icons for following building - triangle_left = env.new_artifact() - triangle_left.paste(background, (0, 0), triangle) - triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90) + tri_left = env.new_artifact() + tri_left.paste(bg, (0, 0), tri) + tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - triangle_down = env.new_artifact() - triangle_down.paste(background, (0, 0), triangle) - triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90) + tri_down = env.new_artifact() + tri_down.paste(bg, (0, 0), tri) + tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - triangle_right = env.new_artifact() - triangle_right.paste(background, (0, 0), triangle) - triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90) + tri_right = env.new_artifact() + tri_right.paste(bg, (0, 0), tri) + tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - triangle_up = env.new_artifact() - triangle_up.paste(background, (0, 0), triangle) + tri_up = env.new_artifact() + tri_up.paste(bg, (0, 0), tri) # save them for reuse - env.save_temporary_artifact(triangle_left, "triangle-left.png") - env.save_temporary_artifact(triangle_down, "triangle-down.png") - env.save_temporary_artifact(triangle_right, "triangle-right.png") - env.save_temporary_artifact(triangle_up, "triangle-up.png") + env.save_temporary_artifact(tri_left, "component", "triangle-left.png") + env.save_temporary_artifact(tri_down, "component", "triangle-down.png") + env.save_temporary_artifact(tri_right, "component", "triangle-right.png") + env.save_temporary_artifact(tri_up, "component", "triangle-up.png") + + +def build_zoom_origin_and_fit_best_icons(env: AuroraEnvironment) -> None: + # load triangle assets + tri_left = env.load_temporary_artifact("component", "triangle-left.png") + tri_down = env.load_temporary_artifact("component", "triangle-down.png") + tri_right = env.load_temporary_artifact("component", "triangle-right.png") + tri_up = env.load_temporary_artifact("component", "triangle-up.png") # build icons - with triangle_left, triangle_down, triangle_right, triangle_up: - build_zoom_origin_icon( - env, triangle_left, triangle_down, triangle_right, triangle_up - ) - build_zoom_fit_best_icon( - env, triangle_left, triangle_down, triangle_right, triangle_up - ) + with tri_left, tri_down, tri_right, tri_up: + build_zoom_origin_icon(env, tri_left, tri_down, tri_right, tri_up) + build_zoom_fit_best_icon(env, tri_left, tri_down, tri_right, tri_up) def build_zoom_origin_icon( env: AuroraEnvironment, - triangle_left: Artifact, - triangle_down: Artifact, - triangle_right: Artifact, - triangle_up: Artifact, + tri_left: Artifact, + tri_down: Artifact, + tri_right: Artifact, + tri_up: Artifact, ) -> None: # TODO: finihs this in future pass @@ -112,10 +121,10 @@ def build_zoom_origin_icon( def build_zoom_fit_best_icon( env: AuroraEnvironment, - triangle_left: Artifact, - triangle_down: Artifact, - triangle_right: Artifact, - triangle_up: Artifact, + tri_left: Artifact, + tri_down: Artifact, + tri_right: Artifact, + tri_up: Artifact, ) -> None: # TODO: finihs this in future pass diff --git a/tool/src/aurora_iconset_builder/std_icons/components.py b/tool/src/aurora_iconset_builder/std_icons/components.py new file mode 100644 index 0000000..b01e275 --- /dev/null +++ b/tool/src/aurora_iconset_builder/std_icons/components.py @@ -0,0 +1,13 @@ +import PIL.Image +from ..types import AuroraContext, AuroraEnvironment + + +def register(ctx: AuroraContext) -> None: + ctx.register("component/generic-background", (), build_generic_background) + + +def build_generic_background(env: AuroraEnvironment) -> None: + env.render_svg( + env.input_artifact("component", "generic-background.svg"), + env.temporary_artifact("component", "generic-background.png"), + ) diff --git a/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py b/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py index 7ba8ec8..85594e0 100644 --- a/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py @@ -4,7 +4,9 @@ from ..assemblicon.highlevel.environment import FdContext def register(ctx: AuroraContext) -> None: ctx.register( - "std/status/dialog-*", ("nostd/mimetype/image-jpeg"), build_image_x_generic + "std/mimetype/image-x-generic", + ("nostd/mimetype/image-jpeg",), + build_image_x_generic, ) diff --git a/tool/src/aurora_iconset_builder/std_icons/status_icons.py b/tool/src/aurora_iconset_builder/std_icons/status_icons.py index b9f86c4..c4f40a4 100644 --- a/tool/src/aurora_iconset_builder/std_icons/status_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/status_icons.py @@ -3,10 +3,13 @@ from ..assemblicon.highlevel.environment import FdContext def register(ctx: AuroraContext) -> None: - ctx.register("std/status/dialog-*", (), build_dialog_icons) + ctx.register("std/status/dialog-infomation", (), build_dialog_infomation_icon) + ctx.register("std/status/dialog-warning", (), build_dialog_warning_icon) + ctx.register("std/status/dialog-error", (), build_dialog_error_icon) + ctx.register("std/status/dialog-question", (), build_dialog_question_icon) -def build_dialog_icons(env: AuroraEnvironment) -> None: +def build_dialog_infomation_icon(env: AuroraEnvironment) -> None: # save dialog icon with FreeDesktop icon and temp icon for reuse. art = env.render_svg_then_load( env.input_artifact("dialog-infomation.svg"), @@ -15,6 +18,9 @@ def build_dialog_icons(env: AuroraEnvironment) -> None: with art: env.save_fd_artifact(art, FdContext.Status, "dialog-infomation") + +def build_dialog_warning_icon(env: AuroraEnvironment) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. art = env.render_svg_then_load( env.input_artifact("dialog-warning.svg"), env.temporary_artifact("dialog-warning.png"), @@ -22,6 +28,9 @@ def build_dialog_icons(env: AuroraEnvironment) -> None: with art: env.save_fd_artifact(art, FdContext.Status, "dialog-warning") + +def build_dialog_error_icon(env: AuroraEnvironment) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. art = env.render_svg_then_load( env.input_artifact("dialog-error.svg"), env.temporary_artifact("dialog-error.png"), @@ -29,4 +38,14 @@ def build_dialog_icons(env: AuroraEnvironment) -> None: with art: env.save_fd_artifact(art, FdContext.Status, "dialog-error") + +def build_dialog_question_icon(env: AuroraEnvironment) -> None: # TODO: add dialog-question generation + # # save dialog icon with FreeDesktop icon and temp icon for reuse. + # art = env.render_svg_then_load( + # env.input_artifact("dialog-question.svg"), + # env.temporary_artifact("dialog-question.png"), + # ) + # with art: + # env.save_fd_artifact(art, FdContext.Status, "dialog-question") + pass