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 cd1f62e..1326b2e 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py @@ -1,6 +1,7 @@ from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext -from ..assemblicon.highlevel.utils import VART_HW +from ..assemblicon.highlevel.utils import FdContext, VART_HW +from ..assemblicon.highlevel.source import TempArtSource, NewArtSource +from ..assemblicon.highlevel.sink import FdArtSink from ..assemblicon.geometry import Rectangle from ..assemblicon.lowlevel.artproc import ( art_anchor_to_offset, @@ -16,20 +17,37 @@ from ..assemblicon.lowlevel.artproc import ( def register(ctx: AuroraContext) -> None: ctx.register( "nostd/action/image-properties", - ("nostd/mimetype/image-jpeg", "std/status/dialog-infomation"), + ( + TempArtSource("image-jpeg.png"), + TempArtSource("dialog-infomation.png"), + FdArtSink(FdContext.Actions, "image-properties"), + ), build_image_properties_icon, ) ctx.register( "nostd/action/image-zoom-original", - ("nostd/mimetype/image-jpeg", "component/triangles"), + ( + TempArtSource("component", "triangle-left.png"), + TempArtSource("component", "triangle-down.png"), + TempArtSource("component", "triangle-right.png"), + TempArtSource("component", "triangle-up.png"), + TempArtSource("image-jpeg.png"), + NewArtSource(), + FdArtSink(FdContext.Actions, "image-zoom-original"), + ), build_image_zoom_original_icon, ) -def build_image_properties_icon(env: AuroraEnvironment) -> None: - art = env.load_temporary_artifact("image-jpeg.png") +def build_image_properties_icon( + env: AuroraEnvironment, + jpeg_src: TempArtSource, + infomation_src: TempArtSource, + fd_sink: FdArtSink, +) -> None: + art = jpeg_src.pull(env) - info_mark = env.load_temporary_artifact("dialog-infomation.png") + info_mark = infomation_src.pull(env) resized_info_mark = default_art_resize(info_mark, 500, 500) align_alpha_composite( @@ -42,31 +60,32 @@ def build_image_properties_icon(env: AuroraEnvironment) -> None: ) # save artifact - env.save_fd_artifact(art, FdContext.Actions, "image-properties") + fd_sink.push(env, art) -def build_image_zoom_original_icon(env: AuroraEnvironment) -> None: +def build_image_zoom_original_icon( + env: AuroraEnvironment, + tri_left_src: TempArtSource, + tri_down_src: TempArtSource, + tri_right_src: TempArtSource, + tri_up_src: TempArtSource, + inner_src: TempArtSource, + new_art: NewArtSource, + fd_sink: FdArtSink, +) -> None: # load triangle assets TRI_SIZE = (200, 200) - tri_left = default_art_resize( - env.load_temporary_artifact("component", "triangle-left.png"), *TRI_SIZE - ) - tri_down = default_art_resize( - env.load_temporary_artifact("component", "triangle-down.png"), *TRI_SIZE - ) - tri_right = default_art_resize( - env.load_temporary_artifact("component", "triangle-right.png"), *TRI_SIZE - ) - tri_up = default_art_resize( - env.load_temporary_artifact("component", "triangle-up.png"), *TRI_SIZE - ) + tri_left = default_art_resize(tri_left_src.pull(env), *TRI_SIZE) + tri_down = default_art_resize(tri_down_src.pull(env), *TRI_SIZE) + tri_right = default_art_resize(tri_right_src.pull(env), *TRI_SIZE) + tri_up = default_art_resize(tri_up_src.pull(env), *TRI_SIZE) # load inner image - inner = env.load_temporary_artifact("image-jpeg.png") + inner = inner_src.pull(env) resized_inner = default_art_resize(inner, 680, 680) # composite this icon - icon = env.new_artifact() + icon = new_art.pull() align_paste( icon, @@ -125,4 +144,4 @@ def build_image_zoom_original_icon(env: AuroraEnvironment) -> None: ) # save it - env.save_fd_artifact(icon, FdContext.Actions, "image-zoom-original") + fd_sink.push(env, icon) diff --git a/tool/src/aurora_iconset_builder/nostd_icons/application_icons.py b/tool/src/aurora_iconset_builder/nostd_icons/application_icons.py index 96a0e3c..e1b29ab 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/application_icons.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/application_icons.py @@ -1,6 +1,7 @@ -import PIL.Image from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext, WinCategory, MacCategory +from ..assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory +from ..assemblicon.highlevel.source import SvgSource, TempArtSource, NewArtSource +from ..assemblicon.highlevel.sink import FdArtSink, WinArtSink, MacArtSink from ..assemblicon.lowlevel.artproc import ( art_anchor_to_offset, default_art_resize, @@ -13,18 +14,31 @@ from ..assemblicon.lowlevel.artproc import ( def register(ctx: AuroraContext) -> None: ctx.register( "nostd/application/org.sarasachipworkshop.picture", - ("nostd/mimetype/image-jpeg", ), + ( + SvgSource("app", "sarasacw-picture", "app-frame.svg"), + TempArtSource("image-jpeg.png"), + NewArtSource(), + FdArtSink(FdContext.Applications, "org.sarasachipworkshop.picture"), + WinArtSink(WinCategory.Application, "sarasacw-picture"), + MacArtSink(MacCategory.Application, "sarasacw-picture"), + ), build_sarasacw_picture_icons, ) -def build_sarasacw_picture_icons(env: AuroraEnvironment) -> None: - app = env.new_artifact() - frame = env.render_svg_then_load( - env.input_artifact("app", "sarasacw-picture", "app-frame.svg") - ) +def build_sarasacw_picture_icons( + env: AuroraEnvironment, + frame_src: SvgSource, + inner_src: TempArtSource, + new_art: NewArtSource, + fd_sink: FdArtSink, + win_sink: WinArtSink, + mac_sink: MacArtSink, +) -> None: + app = new_art.pull() + frame = frame_src.pull(env) - inner = env.load_temporary_artifact("image-jpeg.png") + inner = inner_src.pull(env) resized_inner = default_art_resize(inner, 990, 990) align_paste( @@ -38,6 +52,6 @@ def build_sarasacw_picture_icons(env: AuroraEnvironment) -> None: app.alpha_composite(frame, (0, 0)) # save artifact - env.save_fd_artifact(app, FdContext.Applications, "org.sarasachipworkshop.picture") - env.save_win_artifact(app, WinCategory.Application, "sarasacw-picture") - env.save_mac_artifact(app, MacCategory.Application, "sarasacw-picture") + fd_sink.push(env, app) + win_sink.push(env, app) + mac_sink.push(env, app) 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 06b2b1b..ae0bc0e 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/mimetype_icons.py @@ -1,8 +1,9 @@ import PIL.Image import PIL.ImageEnhance from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext, WinCategory, MacCategory -from ..assemblicon.highlevel.utils import Artifact +from ..assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory +from ..assemblicon.highlevel.source import SvgSource, BitmapSource, TempArtSource +from ..assemblicon.highlevel.sink import TempArtSink, FdArtSink, WinArtSink, MacArtSink from ..assemblicon.geometry import Rectangle, Point from ..assemblicon.lowlevel.artproc import ( aspect_ratio_scale_and_crop, @@ -12,28 +13,49 @@ from ..assemblicon.lowlevel.artproc import ( def register(ctx: AuroraContext) -> None: - ctx.register("component/image-base", (), build_image_base_icon) ctx.register( - "nostd/mimetype/image-jpeg", ("component/image-base",), build_image_jpeg_icon + "component/image-base", + ( + SvgSource("component", "image-base.svg"), + TempArtSink("component", "image-base.png"), + ), + build_image_base_icon, + ) + ctx.register( + "nostd/mimetype/image-jpeg", + ( + TempArtSource("component", "image-base.png"), + BitmapSource("ext", "bitmap", "Niinsaare_järv.jpg"), + TempArtSink("image-jpeg.png"), + FdArtSink(FdContext.MimeTypes, "image-jpeg"), + WinArtSink(WinCategory.Extension, "jpg"), + MacArtSink(MacCategory.Extension, "jpg"), + ), + build_image_jpeg_icon, ) IMAGE_INNER_RECT = Rectangle(Point(20 * 4, 52 * 4), Point(236 * 4, 204 * 4)) -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"), - ) +def build_image_base_icon( + env: AuroraEnvironment, src: SvgSource, sink: TempArtSink +) -> None: + src.pull_to_temp(env, sink) -def build_image_jpeg_icon(env: AuroraEnvironment) -> None: - jpg_image = env.load_temporary_artifact("component", "image-base.png") +def build_image_jpeg_icon( + env: AuroraEnvironment, + base_src: TempArtSource, + bitmap_src: BitmapSource, + temp_sink: TempArtSink, + fd_sink: FdArtSink, + win_sink: WinArtSink, + mac_sink: MacArtSink, +) -> None: + jpg_image = base_src.pull(env) - jpg_image_inner = env.load_input_bitmap_artifact( - "ext", "bitmap", "Niinsaare_järv.jpg" - ) + jpg_image_inner = bitmap_src.pull(env) with jpg_image_inner: # crop the area which is interested by ourselves interest_area = Rectangle.from_pos_size_rect(Point(2700, 0), 5016, 3888) @@ -60,9 +82,9 @@ def build_image_jpeg_icon(env: AuroraEnvironment) -> None: # build artifacts # save as temporary for future use - env.save_temporary_artifact(jpg_image, "image-jpeg.png") + temp_sink.push(env, jpg_image) # save for FD - env.save_fd_artifact(jpg_image, FdContext.MimeTypes, "image-jpeg") + fd_sink.push(env, jpg_image) # save for windows and mac - env.save_win_artifact(jpg_image, WinCategory.Extension, "jpg") - env.save_mac_artifact(jpg_image, MacCategory.Extension, "jpg") + win_sink.push(env, jpg_image) + mac_sink.push(env, jpg_image) 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 539364c..00cde70 100644 --- a/tool/src/aurora_iconset_builder/std_icons/action_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/action_icons.py @@ -1,101 +1,142 @@ import PIL.Image from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext -from ..assemblicon.highlevel.utils import Artifact +from ..assemblicon.highlevel.utils import FdContext +from ..assemblicon.highlevel.source import SvgSource, TempArtSource +from ..assemblicon.highlevel.sink import FdArtSink def register(ctx: AuroraContext) -> None: - ctx.register("std/action/go-[previous|down|next|up]", (), build_go_icons) + ctx.register( + "std/action/go-[previous|down|next|up]", + ( + SvgSource("component", "go-base.svg"), + SvgSource("component", "go-inner-shining.svg"), + SvgSource("component", "go-inner.svg"), + FdArtSink(FdContext.Actions, "go-previous"), + FdArtSink(FdContext.Actions, "go-down"), + FdArtSink(FdContext.Actions, "go-next"), + FdArtSink(FdContext.Actions, "go-up"), + ), + build_go_icons, + ) - ctx.register("std/action/object-flip-*", (), build_object_flip_icons) - ctx.register("std/action/object-rotate-*", (), build_object_rotate_icons) + ctx.register( + "std/action/object-flip-*", + ( + SvgSource("object-flip-horizontal.svg"), + SvgSource("object-flip-vertical.svg"), + FdArtSink(FdContext.Actions, "object-flip-horizontal"), + FdArtSink(FdContext.Actions, "object-flip-vertical"), + ), + build_object_flip_icons, + ) + ctx.register( + "std/action/object-rotate-*", + ( + SvgSource("object-rotate-left.svg"), + SvgSource("object-rotate-right.svg"), + FdArtSink(FdContext.Actions, "object-rotate-left"), + FdArtSink(FdContext.Actions, "object-rotate-right"), + ), + build_object_rotate_icons, + ) ctx.register( "std/action/zoom-[original|fit-best]", - ("component/triangles",), + ( + TempArtSource("component", "triangle-left.png"), + TempArtSource("component", "triangle-down.png"), + TempArtSource("component", "triangle-right.png"), + TempArtSource("component", "triangle-up.png"), + FdArtSink(FdContext.Actions, "zoom-original"), + FdArtSink(FdContext.Actions, "zoom-fit-best"), + ), build_zoom_origin_and_fit_best_icons, ) - ctx.register("std/action/zoom-[in|out]", (), build_zoom_in_out_icons) + ctx.register( + "std/action/zoom-[in|out]", + ( + FdArtSink(FdContext.Actions, "zoom-in"), + FdArtSink(FdContext.Actions, "zoom-out"), + ), + build_zoom_in_out_icons, + ) -def build_go_icons(env: AuroraEnvironment) -> None: - # build go-* base - go_base = env.render_svg_then_load(env.input_artifact("component", "go-base.svg")) - # build go-* shining - go_inner_shining = env.render_svg_then_load( - env.input_artifact("component", "go-inner-shining.svg"), - ) - # build go-* inner - go_inner = env.render_svg_then_load( - env.input_artifact("component", "go-inner.svg"), - ) +def build_go_icons( + env: AuroraEnvironment, + base_src: SvgSource, + shining_src: SvgSource, + inner_src: SvgSource, + sink_previous: FdArtSink, + sink_down: FdArtSink, + sink_next: FdArtSink, + sink_up: FdArtSink, +) -> None: + # build go-* base, shining and inner + go_base = base_src.pull(env) + go_inner_shining = shining_src.pull(env) + go_inner = inner_src.pull(env) with go_base, go_inner_shining, go_inner: go_mask = go_inner - for part in ("previous", "down", "next", "up"): + for sink in (sink_previous, sink_down, sink_next, sink_up): go = go_base.copy() # render shining with inner mask go.paste(go_inner_shining, (0, 0), go_mask) # save as FD action - env.save_fd_artifact(go, FdContext.Actions, f"go-{part}") + sink.push(env, go) # rotate it for next calling go_mask = go_mask.transpose(PIL.Image.Transpose.ROTATE_90) -def build_object_flip_icons(env: AuroraEnvironment) -> None: - art = env.render_svg_then_load(env.input_artifact("object-flip-horizontal.svg")) - with art: - env.save_fd_artifact(art, FdContext.Actions, "object-flip-horizontal") - art = env.render_svg_then_load(env.input_artifact("object-flip-vertical.svg")) - with art: - env.save_fd_artifact(art, FdContext.Actions, "object-flip-vertical") - - -def build_object_rotate_icons(env: AuroraEnvironment) -> None: - art = env.render_svg_then_load(env.input_artifact("object-rotate-left.svg")) - with art: - env.save_fd_artifact(art, FdContext.Actions, "object-rotate-left") - art = env.render_svg_then_load(env.input_artifact("object-rotate-right.svg")) - with art: - env.save_fd_artifact(art, FdContext.Actions, "object-rotate-right") - - -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 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( +def build_object_flip_icons( env: AuroraEnvironment, - tri_left: Artifact, - tri_down: Artifact, - tri_right: Artifact, - tri_up: Artifact, + horizontal_src: SvgSource, + vertical_src: SvgSource, + horizontal_sink: FdArtSink, + vertical_sink: FdArtSink, ) -> None: - # TODO: finihs this in future - pass + art = horizontal_src.pull(env) + with art: + horizontal_sink.push(env, art) + art = vertical_src.pull(env) + with art: + vertical_sink.push(env, art) -def build_zoom_fit_best_icon( +def build_object_rotate_icons( env: AuroraEnvironment, - tri_left: Artifact, - tri_down: Artifact, - tri_right: Artifact, - tri_up: Artifact, + left_src: SvgSource, + right_src: SvgSource, + left_sink: FdArtSink, + right_sink: FdArtSink, ) -> None: + art = left_src.pull(env) + with art: + left_sink.push(env, art) + art = right_src.pull(env) + with art: + right_sink.push(env, art) + + +def build_zoom_origin_and_fit_best_icons( + env: AuroraEnvironment, + tri_left_src: TempArtSource, + tri_down_src: TempArtSource, + tri_right_src: TempArtSource, + tri_up_src: TempArtSource, + zoom_original_sink: FdArtSink, + zoom_fit_best_sink: FdArtSink, +) -> None: + # TODO: finish this in future pass -def build_zoom_in_out_icons(env: AuroraEnvironment) -> None: - # TODO: finihs this in future +def build_zoom_in_out_icons( + env: AuroraEnvironment, zoom_in_sink: FdArtSink, zoom_out_sink: FdArtSink +) -> None: + # TODO: finish 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 index fb0a515..d0a75f5 100644 --- a/tool/src/aurora_iconset_builder/std_icons/components.py +++ b/tool/src/aurora_iconset_builder/std_icons/components.py @@ -1,46 +1,71 @@ import PIL.Image from ..types import AuroraContext, AuroraEnvironment +from ..assemblicon.highlevel.source import SvgSource, TempArtSource, NewArtSource +from ..assemblicon.highlevel.sink import TempArtSink def register(ctx: AuroraContext) -> None: - ctx.register("component/generic-background", (), build_generic_background) + ctx.register( + "component/generic-background", + ( + SvgSource("component", "generic-background.svg"), + TempArtSink("component", "generic-background.png"), + ), + build_generic_background, + ) ctx.register( "component/triangles", - ("component/generic-background",), + ( + SvgSource("component", "triangle.svg"), + TempArtSource("component", "generic-background.png"), + NewArtSource(), + TempArtSink("component", "triangle-left.png"), + TempArtSink("component", "triangle-down.png"), + TempArtSink("component", "triangle-right.png"), + TempArtSink("component", "triangle-up.png"), + ), build_triangle_icons, ) -def build_generic_background(env: AuroraEnvironment) -> None: - env.render_svg( - env.input_artifact("component", "generic-background.svg"), - env.__temporary_artifact("component", "generic-background.png"), - ) +def build_generic_background( + env: AuroraEnvironment, src: SvgSource, sink: TempArtSink +) -> None: + src.pull_to_temp(env, sink) -def build_triangle_icons(env: AuroraEnvironment) -> None: +def build_triangle_icons( + env: AuroraEnvironment, + tri_src: SvgSource, + bg_src: TempArtSource, + new_art: NewArtSource, + sink_left: TempArtSink, + sink_down: TempArtSink, + sink_right: TempArtSink, + sink_up: TempArtSink, +) -> 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") + tri = tri_src.pull(env) + bg = bg_src.pull(env) # create 4 triangle icons for following building - tri_left = env.new_artifact() + tri_left = new_art.pull() tri_left.paste(bg, (0, 0), tri) tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - tri_down = env.new_artifact() + tri_down = new_art.pull() tri_down.paste(bg, (0, 0), tri) tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - tri_right = env.new_artifact() + tri_right = new_art.pull() tri_right.paste(bg, (0, 0), tri) tri = tri.transpose(PIL.Image.Transpose.ROTATE_90) - tri_up = env.new_artifact() + tri_up = new_art.pull() tri_up.paste(bg, (0, 0), tri) # save them for reuse - 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") + sink_left.push(env, tri_left) + sink_down.push(env, tri_down) + sink_right.push(env, tri_right) + sink_up.push(env, tri_up) 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 85594e0..62c3417 100644 --- a/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/mimetype_icons.py @@ -1,17 +1,22 @@ from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext +from ..assemblicon.highlevel.utils import FdContext +from ..assemblicon.highlevel.source import FdArtSource +from ..assemblicon.highlevel.sink import FdArtSink def register(ctx: AuroraContext) -> None: ctx.register( "std/mimetype/image-x-generic", - ("nostd/mimetype/image-jpeg",), + ( + FdArtSource(FdContext.MimeTypes, "image-jpeg"), + FdArtSink(FdContext.MimeTypes, "image-x-generic"), + ), build_image_x_generic, ) -def build_image_x_generic(env: AuroraEnvironment) -> None: +def build_image_x_generic( + env: AuroraEnvironment, src: FdArtSource, sink: FdArtSink +) -> None: # use image/jpeg as the default image icon - env.dup_fd_artifact( - FdContext.MimeTypes, "image-jpeg", FdContext.MimeTypes, "image-x-generic" - ) + src.link_to(env, sink) 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 ab146d8..aa569e8 100644 --- a/tool/src/aurora_iconset_builder/std_icons/status_icons.py +++ b/tool/src/aurora_iconset_builder/std_icons/status_icons.py @@ -1,51 +1,77 @@ from ..types import AuroraContext, AuroraEnvironment -from ..assemblicon.highlevel.environment import FdContext +from ..assemblicon.highlevel.utils import FdContext +from ..assemblicon.highlevel.source import SvgSource +from ..assemblicon.highlevel.sink import TempArtSink, FdArtSink def register(ctx: AuroraContext) -> None: - 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_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"), - env.__temporary_artifact("dialog-infomation.png"), + ctx.register( + "std/status/dialog-infomation", + ( + SvgSource("dialog-infomation.svg"), + TempArtSink("dialog-infomation.png"), + FdArtSink(FdContext.Status, "dialog-infomation"), + ), + build_dialog_infomation_icon, ) - 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"), + ctx.register( + "std/status/dialog-warning", + ( + SvgSource("dialog-warning.svg"), + TempArtSink("dialog-warning.png"), + FdArtSink(FdContext.Status, "dialog-warning"), + ), + build_dialog_warning_icon, ) - 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"), + ctx.register( + "std/status/dialog-error", + ( + SvgSource("dialog-error.svg"), + TempArtSink("dialog-error.png"), + FdArtSink(FdContext.Status, "dialog-error"), + ), + build_dialog_error_icon, + ) + ctx.register( + "std/status/dialog-question", + ( + SvgSource("dialog-question.svg"), + TempArtSink("dialog-question.png"), + FdArtSink(FdContext.Status, "dialog-question"), + ), + build_dialog_question_icon, ) - with art: - env.save_fd_artifact(art, FdContext.Status, "dialog-error") -def build_dialog_question_icon(env: AuroraEnvironment) -> None: +def build_dialog_infomation_icon( + env: AuroraEnvironment, src: SvgSource, temp_sink: TempArtSink, fd_sink: FdArtSink +) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. + src.pull_to_temp(env, temp_sink) + with temp_sink.repull(env) as art: + fd_sink.push(env, art) + + +def build_dialog_warning_icon( + env: AuroraEnvironment, src: SvgSource, temp_sink: TempArtSink, fd_sink: FdArtSink +) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. + src.pull_to_temp(env, temp_sink) + with temp_sink.repull(env) as art: + fd_sink.push(env, art) + + +def build_dialog_error_icon( + env: AuroraEnvironment, src: SvgSource, temp_sink: TempArtSink, fd_sink: FdArtSink +) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. + src.pull_to_temp(env, temp_sink) + with temp_sink.repull(env) as art: + fd_sink.push(env, art) + + +def build_dialog_question_icon( + env: AuroraEnvironment, src: SvgSource, temp_sink: TempArtSink, fd_sink: FdArtSink +) -> 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