refactor: fix aurora icon build error

This commit is contained in:
2026-09-02 14:07:57 +08:00
parent 63ba6d44f7
commit 988a9fc04f
11 changed files with 242 additions and 193 deletions
+4 -40
View File
@@ -1,50 +1,14 @@
from pathlib import Path
from dataclasses import dataclass
from typing import Optional
from .assemblicon.cli import (
SvgRenderKind,
StdOptsSetup,
create_argparser,
parse_standard_opts,
)
from .assemblicon.highlevel.environment import Prologue, Environment
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 . import std_icons, nostd_icons
@dataclass(frozen=True)
class AuroraOpts:
selection: Optional[list[str]]
"""The list holding all name of jobs for building."""
svg_render: SvgRenderKind
"""The render kind for SVG file."""
def parse_opts() -> AuroraOpts:
setup = StdOptsSetup(require_input=False, require_output=False)
parser = create_argparser(setup)
parser.prog = "Aurora Icon Set Builder"
parser.description = "The Programmatic Icon Assembly Workflow for Aurora Icon Set."
ns = parser.parse_args()
opts = parse_standard_opts(setup, ns)
return AuroraOpts(
selection=opts.selection, svg_render=opts.svg_render.to_assemblicon_type()
)
@dataclass(frozen=True)
class AuroraPrologue(Prologue):
"""Aurora icon set builder specific prologue"""
pass
def main() -> None:
opts = parse_opts()
opts = parse()
repository_root = Path(__file__).resolve().parent.parent.parent.parent
iconset_input = repository_root / "src"
+31
View File
@@ -0,0 +1,31 @@
from dataclasses import dataclass
from typing import Optional
from .assemblicon.cli import (
SvgRenderKind,
StdOptsSetup,
create_argparser,
parse_standard_opts,
)
@dataclass(frozen=True)
class AuroraOpts:
selection: Optional[list[str]]
"""The list holding all name of jobs for building."""
svg_render: SvgRenderKind
"""The render kind for SVG file."""
def parse() -> AuroraOpts:
setup = StdOptsSetup(require_input=False, require_output=False)
parser = create_argparser(setup)
parser.prog = "Aurora Icon Set Builder"
parser.description = "The Programmatic Icon Assembly Workflow for Aurora Icon Set."
ns = parser.parse_args()
opts = parse_standard_opts(setup, ns)
return AuroraOpts(
selection=opts.selection, svg_render=opts.svg_render.to_assemblicon_type()
)
@@ -1,10 +1,8 @@
from ..assemblicon.highlevel.context import Context
from .action_icons import build_action_icons
from .mimetype_icons import build_mimetype_icons
from .application_icons import build_application_icons
from ..types import AuroraContext
from . import action_icons, application_icons, mimetype_icons
def register(ctx: Context) -> None:
build_mimetype_icons(ctx)
build_application_icons(ctx)
build_action_icons(ctx)
def register(ctx: AuroraContext) -> None:
action_icons.register(ctx)
application_icons.register(ctx)
mimetype_icons.register(ctx)
@@ -1,7 +1,8 @@
import PIL.Image
from ..assemblicon.context import AdvancedContext, FdContext
from ..assemblicon.artproc import (
anchor_to_pos,
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext
from ..assemblicon.lowlevel.artproc import (
art_anchor_to_offset,
align_paste,
align_alpha_composite,
VerticalAnchor,
@@ -9,79 +10,97 @@ from ..assemblicon.artproc import (
)
def build_action_icons(ctx: AdvancedContext) -> None:
_build_image_properties_icon(ctx)
_build_image_zoom_origin_icon(ctx)
def register(ctx: AuroraContext) -> None:
ctx.register(
"nostd/action/image-properties",
("nostd/mimetype/image-jpeg", "std/status/dialog-*"),
_build_image_properties_icon,
)
ctx.register(
"nostd/action/image-zoom-original",
("nostd/mimetype/image-jpeg", "std/action/zoom-*"),
_build_image_zoom_original_icon,
)
def _build_image_properties_icon(ctx: AdvancedContext) -> None:
art = ctx.load_temporary_artifact("image-jpeg.png")
def _build_image_properties_icon(env: AuroraEnvironment) -> None:
art = env.load_temporary_artifact("image-jpeg.png")
info_mark = ctx.load_temporary_artifact("dialog-infomation.png")
info_mark = env.load_temporary_artifact("dialog-infomation.png")
resized_info_mark = info_mark.resize((500, 500), PIL.Image.Resampling.LANCZOS)
align_alpha_composite(
art,
resized_info_mark,
anchor_to_pos(art, HorizontalAnchor.Right, VerticalAnchor.Bottom),
anchor_to_pos(resized_info_mark, HorizontalAnchor.Right, VerticalAnchor.Bottom),
art_anchor_to_offset(art, HorizontalAnchor.Right, VerticalAnchor.Bottom),
art_anchor_to_offset(
resized_info_mark, HorizontalAnchor.Right, VerticalAnchor.Bottom
),
)
# save artifact
ctx.save_fd_artifact(art, FdContext.Actions, "image-properties")
env.save_fd_artifact(art, FdContext.Actions, "image-properties")
def _build_image_zoom_origin_icon(ctx: AdvancedContext) -> None:
def _build_image_zoom_original_icon(env: AuroraEnvironment) -> None:
# load triangle assets
triangle_left = ctx.load_temporary_artifact("triangle-left.png").resize(
triangle_left = env.load_temporary_artifact("triangle-left.png").resize(
(300, 300), PIL.Image.Resampling.LANCZOS
)
triangle_down = ctx.load_temporary_artifact("triangle-down.png").resize(
triangle_down = env.load_temporary_artifact("triangle-down.png").resize(
(300, 300), PIL.Image.Resampling.LANCZOS
)
triangle_right = ctx.load_temporary_artifact("triangle-right.png").resize(
triangle_right = env.load_temporary_artifact("triangle-right.png").resize(
(300, 300), PIL.Image.Resampling.LANCZOS
)
triangle_up = ctx.load_temporary_artifact("triangle-up.png").resize(
triangle_up = env.load_temporary_artifact("triangle-up.png").resize(
(300, 300), PIL.Image.Resampling.LANCZOS
)
# load inner image
inner = ctx.load_temporary_artifact("image-jpeg.png")
inner = env.load_temporary_artifact("image-jpeg.png")
resized_inner = inner.resize((570, 570), PIL.Image.Resampling.LANCZOS)
# composite this icon
icon = ctx.new_artifact()
icon = env.new_artifact()
align_paste(
icon,
resized_inner,
anchor_to_pos(icon, HorizontalAnchor.Center, VerticalAnchor.Center),
anchor_to_pos(resized_inner, HorizontalAnchor.Center, VerticalAnchor.Center),
art_anchor_to_offset(icon, HorizontalAnchor.Center, VerticalAnchor.Center),
art_anchor_to_offset(
resized_inner, HorizontalAnchor.Center, VerticalAnchor.Center
),
)
align_alpha_composite(
icon,
triangle_left,
anchor_to_pos(icon, HorizontalAnchor.Left, VerticalAnchor.Center),
anchor_to_pos(triangle_left, HorizontalAnchor.Left, VerticalAnchor.Center),
art_anchor_to_offset(icon, HorizontalAnchor.Left, VerticalAnchor.Center),
art_anchor_to_offset(
triangle_left, HorizontalAnchor.Left, VerticalAnchor.Center
),
)
align_alpha_composite(
icon,
triangle_right,
anchor_to_pos(icon, HorizontalAnchor.Right, VerticalAnchor.Center),
anchor_to_pos(triangle_right, HorizontalAnchor.Right, VerticalAnchor.Center),
art_anchor_to_offset(icon, HorizontalAnchor.Right, VerticalAnchor.Center),
art_anchor_to_offset(
triangle_right, HorizontalAnchor.Right, VerticalAnchor.Center
),
)
align_alpha_composite(
icon,
triangle_up,
anchor_to_pos(icon, HorizontalAnchor.Center, VerticalAnchor.Top),
anchor_to_pos(triangle_up, HorizontalAnchor.Center, VerticalAnchor.Top),
art_anchor_to_offset(icon, HorizontalAnchor.Center, VerticalAnchor.Top),
art_anchor_to_offset(triangle_up, HorizontalAnchor.Center, VerticalAnchor.Top),
)
align_alpha_composite(
icon,
triangle_down,
anchor_to_pos(icon, HorizontalAnchor.Center, VerticalAnchor.Bottom),
anchor_to_pos(triangle_down, HorizontalAnchor.Center, VerticalAnchor.Bottom),
art_anchor_to_offset(icon, HorizontalAnchor.Center, VerticalAnchor.Bottom),
art_anchor_to_offset(
triangle_down, HorizontalAnchor.Center, VerticalAnchor.Bottom
),
)
# save it
ctx.save_fd_artifact(icon, FdContext.Actions, "image-zoom-original")
env.save_fd_artifact(icon, FdContext.Actions, "image-zoom-original")
@@ -1,35 +1,42 @@
import PIL.Image
from ..assemblicon.context import AdvancedContext, FdContext, WinCategory, MacCategory
from ..assemblicon.artproc import (
anchor_to_pos,
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext, WinCategory, MacCategory
from ..assemblicon.lowlevel.artproc import (
art_anchor_to_offset,
align_paste,
VerticalAnchor,
HorizontalAnchor,
)
def build_application_icons(ctx: AdvancedContext) -> None:
_build_sarasacw_picture_icons(ctx)
def _build_sarasacw_picture_icons(ctx: AdvancedContext) -> None:
app = ctx.new_artifact()
frame = ctx.render_svg_then_load(
ctx.input_artifact("app", "sarasacw-picture", "app-frame.svg")
def register(ctx: AuroraContext) -> None:
ctx.register(
"nostd/application/org.sarasachipworkshop.picture",
("nostd/mimetype/image-jpeg", ),
build_sarasacw_picture_icons,
)
inner = ctx.load_temporary_artifact("image-jpeg.png")
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")
)
inner = env.load_temporary_artifact("image-jpeg.png")
resized_inner = inner.resize((990, 990), PIL.Image.Resampling.LANCZOS)
align_paste(
app,
resized_inner,
anchor_to_pos(app, HorizontalAnchor.Center, VerticalAnchor.Center),
anchor_to_pos(resized_inner, HorizontalAnchor.Center, VerticalAnchor.Center),
art_anchor_to_offset(app, HorizontalAnchor.Center, VerticalAnchor.Center),
art_anchor_to_offset(
resized_inner, HorizontalAnchor.Center, VerticalAnchor.Center
),
)
app.alpha_composite(frame, (0, 0))
# save artifact
ctx.save_fd_artifact(app, FdContext.Applications, "org.sarasachipworkshop.picture")
ctx.save_win_artifact(app, WinCategory.Application, "sarasacw-picture")
ctx.save_mac_artifact(app, MacCategory.Application, "sarasacw-picture")
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")
@@ -1,44 +1,43 @@
import PIL.Image
import PIL.ImageEnhance
from ..assemblicon.context import AdvancedContext, FdContext, WinCategory, MacCategory
from ..assemblicon.utils import Artifact
from ..assemblicon.geometry import MinMaxRect, PosSizeRect
from ..assemblicon.artio import load_input_artifact, save_artifact
from ..assemblicon.artproc import (
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext, WinCategory, MacCategory
from ..assemblicon.highlevel.utils import Artifact
from ..assemblicon.geometry import Rectangle, Point
from ..assemblicon.lowlevel.artproc import (
aspect_ratio_scale_and_crop,
VerticalAnchor,
HorizontalAnchor,
)
def build_mimetype_icons(ctx: AdvancedContext) -> None:
_build_image_icons(ctx)
def register(ctx: AuroraContext) -> None:
ctx.register("nostd/mimetype/image-jpeg", (), _build_image_icons)
IMAGE_INNER_RECT_MINMAX = MinMaxRect(20 * 4, 52 * 4, 236 * 4, 204 * 4)
IMAGE_INNER_RECT_POSSIZE = IMAGE_INNER_RECT_MINMAX.to_pos_size_rect()
IMAGE_INNER_RECT = Rectangle(Point(20 * 4, 52 * 4), Point(236 * 4, 204 * 4))
def _build_image_icons(ctx: AdvancedContext) -> None:
def _build_image_icons(env: AuroraEnvironment) -> None:
# build image base
image_base = ctx.render_svg_then_load(
ctx.input_artifact("component", "image-base.svg"),
image_base = env.render_svg_then_load(
env.input_artifact("component", "image-base.svg"),
)
# load image base
with image_base:
_build_jpg_icon(ctx, image_base)
_build_jpg_icon(env, image_base)
def _build_jpg_icon(ctx: AdvancedContext, base: Artifact) -> None:
def _build_jpg_icon(env: AuroraEnvironment, base: Artifact) -> None:
jpg_image = base.copy()
jpg_image_inner = load_input_artifact(
ctx.input_artifact("ext", "bitmap", "Niinsaare_järv.jpg")
jpg_image_inner = env.load_input_bitmap_artifact(
"ext", "bitmap", "Niinsaare_järv.jpg"
)
with jpg_image_inner:
# crop the area which is interested by ourselves
interest_area = PosSizeRect(2700, 0, 5016, 3888).to_min_max_rect()
crop_jpg_image_inner = jpg_image_inner.crop(interest_area.to_pillow_tuple())
interest_area = Rectangle.from_pos_size_rect(Point(2700, 0), 5016, 3888)
crop_jpg_image_inner = jpg_image_inner.crop(interest_area.to_tuple())
# do a flip
flip_jpg_image_inner = crop_jpg_image_inner.transpose(
PIL.Image.Transpose.FLIP_LEFT_RIGHT
@@ -50,24 +49,20 @@ def _build_jpg_icon(ctx: AdvancedContext, base: Artifact) -> None:
# fit to inner rect
bestfit_jpg_image_inner = aspect_ratio_scale_and_crop(
saturated_jpg_image_inner,
IMAGE_INNER_RECT_POSSIZE.width,
IMAGE_INNER_RECT_POSSIZE.height,
IMAGE_INNER_RECT.width,
IMAGE_INNER_RECT.height,
PIL.Image.Resampling.NEAREST,
HorizontalAnchor.Center,
VerticalAnchor.Center,
)
# paste into inner rect
jpg_image.paste(
bestfit_jpg_image_inner, IMAGE_INNER_RECT_POSSIZE.to_pillow_tuple()
)
jpg_image.paste(bestfit_jpg_image_inner, IMAGE_INNER_RECT.to_tuple())
# build artifacts
# save as temporary for future use
ctx.save_temporary_artifact(jpg_image, "image-jpeg.png")
env.save_temporary_artifact(jpg_image, "image-jpeg.png")
# save for FD
ctx.save_fd_artifact(jpg_image, FdContext.MimeTypes, "image-jpeg")
# use image/jpeg as the default image icon
ctx.dup_fd_artifact(FdContext.MimeTypes, "image-jpeg", FdContext.MimeTypes, "image-x-generic")
env.save_fd_artifact(jpg_image, FdContext.MimeTypes, "image-jpeg")
# save for windows and mac
ctx.save_win_artifact(jpg_image, WinCategory.Extension, "jpg")
ctx.save_mac_artifact(jpg_image, MacCategory.Extension, "jpg")
env.save_win_artifact(jpg_image, WinCategory.Extension, "jpg")
env.save_mac_artifact(jpg_image, MacCategory.Extension, "jpg")
@@ -1,8 +1,8 @@
from ..assemblicon.highlevel.context import Context
from .action_icons import build_action_icons
from .status_icons import build_status_icons
from ..types import AuroraContext
from . import action_icons, status_icons, mimetype_icons
def register(ctx: Context) -> None:
build_action_icons(ctx)
build_status_icons(ctx)
def register(ctx: AuroraContext) -> None:
action_icons.register(ctx)
mimetype_icons.register(ctx)
status_icons.register(ctx)
@@ -1,28 +1,31 @@
import PIL.Image
from ..assemblicon.context import AdvancedContext, FdContext
from ..assemblicon.utils import Artifact
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext
from ..assemblicon.highlevel.utils import Artifact
def build_action_icons(ctx: AdvancedContext) -> None:
_build_go_icons(ctx)
def register(ctx: AuroraContext) -> None:
ctx.register("std/action/go-[previous|down|next|up]", (), build_go_icons)
_build_object_flip_icons(ctx)
_build_object_rotate_icons(ctx)
ctx.register("std/action/object-flip-*", (), build_object_flip_icons)
ctx.register("std/action/object-rotate-*", (), build_object_rotate_icons)
_build_zoom_origin_and_fit_best_icons(ctx)
_build_zoom_in_out_icons(ctx)
ctx.register(
"std/action/zoom-[original|fit-best]", (), build_zoom_origin_and_fit_best_icons
)
ctx.register("std/action/zoom-[in|out]", (), build_zoom_in_out_icons)
def _build_go_icons(ctx: AdvancedContext) -> None:
def build_go_icons(env: AuroraEnvironment) -> None:
# build go-* base
go_base = ctx.render_svg_then_load(ctx.input_artifact("component", "go-base.svg"))
go_base = env.render_svg_then_load(env.input_artifact("component", "go-base.svg"))
# build go-* shining
go_inner_shining = ctx.render_svg_then_load(
ctx.input_artifact("component", "go-inner-shining.svg"),
go_inner_shining = env.render_svg_then_load(
env.input_artifact("component", "go-inner-shining.svg"),
)
# build go-* inner
go_inner = ctx.render_svg_then_load(
ctx.input_artifact("component", "go-inner.svg"),
go_inner = env.render_svg_then_load(
env.input_artifact("component", "go-inner.svg"),
)
with go_base, go_inner_shining, go_inner:
@@ -33,71 +36,71 @@ def _build_go_icons(ctx: AdvancedContext) -> None:
go.paste(go_inner_shining, (0, 0), go_mask)
# save as FD action
ctx.save_fd_artifact(go, FdContext.Actions, f"go-{part}")
env.save_fd_artifact(go, FdContext.Actions, f"go-{part}")
# rotate it for next calling
go_mask = go_mask.transpose(PIL.Image.Transpose.ROTATE_90)
def _build_object_flip_icons(ctx: AdvancedContext) -> None:
art = ctx.render_svg_then_load(ctx.input_artifact("object-flip-horizontal.svg"))
def build_object_flip_icons(env: AuroraEnvironment) -> None:
art = env.render_svg_then_load(env.input_artifact("object-flip-horizontal.svg"))
with art:
ctx.save_fd_artifact(art, FdContext.Actions, "object-flip-horizontal")
art = ctx.render_svg_then_load(ctx.input_artifact("object-flip-vertical.svg"))
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:
ctx.save_fd_artifact(art, FdContext.Actions, "object-flip-vertical")
env.save_fd_artifact(art, FdContext.Actions, "object-flip-vertical")
def _build_object_rotate_icons(ctx: AdvancedContext) -> None:
art = ctx.render_svg_then_load(ctx.input_artifact("object-rotate-left.svg"))
def build_object_rotate_icons(env: AuroraEnvironment) -> None:
art = env.render_svg_then_load(env.input_artifact("object-rotate-left.svg"))
with art:
ctx.save_fd_artifact(art, FdContext.Actions, "object-rotate-left")
art = ctx.render_svg_then_load(ctx.input_artifact("object-rotate-right.svg"))
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:
ctx.save_fd_artifact(art, FdContext.Actions, "object-rotate-right")
env.save_fd_artifact(art, FdContext.Actions, "object-rotate-right")
def _build_zoom_origin_and_fit_best_icons(ctx: AdvancedContext) -> None:
def build_zoom_origin_and_fit_best_icons(env: AuroraEnvironment) -> None:
# load triangle assets
triangle = ctx.render_svg_then_load(ctx.input_artifact("component", "triangle.svg"))
background = ctx.render_svg_then_load(
ctx.input_artifact("component", "background.svg")
triangle = env.render_svg_then_load(env.input_artifact("component", "triangle.svg"))
background = env.render_svg_then_load(
env.input_artifact("component", "background.svg")
)
# create 4 triangle icons for following building
triangle_left = ctx.new_artifact()
triangle_left = env.new_artifact()
triangle_left.paste(background, (0, 0), triangle)
triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90)
triangle_down = ctx.new_artifact()
triangle_down = env.new_artifact()
triangle_down.paste(background, (0, 0), triangle)
triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90)
triangle_right = ctx.new_artifact()
triangle_right = env.new_artifact()
triangle_right.paste(background, (0, 0), triangle)
triangle = triangle.transpose(PIL.Image.Transpose.ROTATE_90)
triangle_up = ctx.new_artifact()
triangle_up = env.new_artifact()
triangle_up.paste(background, (0, 0), triangle)
# save them for reuse
ctx.save_temporary_artifact(triangle_left, "triangle-left.png")
ctx.save_temporary_artifact(triangle_down, "triangle-down.png")
ctx.save_temporary_artifact(triangle_right, "triangle-right.png")
ctx.save_temporary_artifact(triangle_up, "triangle-up.png")
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")
# build icons
with triangle_left, triangle_down, triangle_right, triangle_up:
_build_zoom_origin_icon(
ctx, 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(
ctx, triangle_left, triangle_down, triangle_right, triangle_up
build_zoom_fit_best_icon(
env, triangle_left, triangle_down, triangle_right, triangle_up
)
def _build_zoom_origin_icon(
ctx: AdvancedContext,
def build_zoom_origin_icon(
env: AuroraEnvironment,
triangle_left: Artifact,
triangle_down: Artifact,
triangle_right: Artifact,
@@ -107,8 +110,8 @@ def _build_zoom_origin_icon(
pass
def _build_zoom_fit_best_icon(
ctx: AdvancedContext,
def build_zoom_fit_best_icon(
env: AuroraEnvironment,
triangle_left: Artifact,
triangle_down: Artifact,
triangle_right: Artifact,
@@ -118,5 +121,5 @@ def _build_zoom_fit_best_icon(
pass
def _build_zoom_in_out_icons(ctx: AdvancedContext) -> None:
def build_zoom_in_out_icons(env: AuroraEnvironment) -> None:
pass
@@ -0,0 +1,15 @@
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext
def register(ctx: AuroraContext) -> None:
ctx.register(
"std/status/dialog-*", ("nostd/mimetype/image-jpeg"), build_image_x_generic
)
def build_image_x_generic(env: AuroraEnvironment) -> None:
# use image/jpeg as the default image icon
env.dup_fd_artifact(
FdContext.MimeTypes, "image-jpeg", FdContext.MimeTypes, "image-x-generic"
)
@@ -1,29 +1,32 @@
from ..assemblicon.context import AdvancedContext, FdContext
from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.environment import FdContext
def build_status_icons(ctx: AdvancedContext) -> None:
_build_dialog_icons(ctx)
def register(ctx: AuroraContext) -> None:
ctx.register("std/status/dialog-*", (), build_dialog_icons)
def _build_dialog_icons(ctx: AdvancedContext) -> None:
def build_dialog_icons(env: AuroraEnvironment) -> None:
# save dialog icon with FreeDesktop icon and temp icon for reuse.
art = ctx.render_svg_then_load(
ctx.input_artifact("dialog-infomation.svg"),
ctx.temporary_artifact("dialog-infomation.png"),
art = env.render_svg_then_load(
env.input_artifact("dialog-infomation.svg"),
env.temporary_artifact("dialog-infomation.png"),
)
with art:
ctx.save_fd_artifact(art, FdContext.Status, "dialog-infomation")
env.save_fd_artifact(art, FdContext.Status, "dialog-infomation")
art = ctx.render_svg_then_load(
ctx.input_artifact("dialog-warning.svg"),
ctx.temporary_artifact("dialog-warning.png"),
art = env.render_svg_then_load(
env.input_artifact("dialog-warning.svg"),
env.temporary_artifact("dialog-warning.png"),
)
with art:
ctx.save_fd_artifact(art, FdContext.Status, "dialog-warning")
env.save_fd_artifact(art, FdContext.Status, "dialog-warning")
art = ctx.render_svg_then_load(
ctx.input_artifact("dialog-error.svg"),
ctx.temporary_artifact("dialog-error.png"),
art = env.render_svg_then_load(
env.input_artifact("dialog-error.svg"),
env.temporary_artifact("dialog-error.png"),
)
with art:
ctx.save_fd_artifact(art, FdContext.Status, "dialog-error")
env.save_fd_artifact(art, FdContext.Status, "dialog-error")
# TODO: add dialog-question generation
+14
View File
@@ -0,0 +1,14 @@
from dataclasses import dataclass
from .assemblicon.highlevel.environment import Environment, Prologue
from .assemblicon.highlevel.context import Context
@dataclass(frozen=True)
class AuroraPrologue(Prologue):
"""Aurora icon set builder specific prologue"""
pass
type AuroraEnvironment = Environment[AuroraPrologue]
type AuroraContext = Context[AuroraPrologue]