👔 Compact code for generator.py

This commit is contained in:
ful1e5 2021-04-22 16:39:58 +05:30
parent c152187bb8
commit 580b8d7f52

View file

@ -1,6 +1,8 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""This module provides build methods for ``macOSBigSur``."""
from pathlib import Path from pathlib import Path
from typing import Any, Dict from typing import Any, Dict
@ -11,29 +13,25 @@ from clickgen.core import CursorAlias
from clickgen.packagers import WindowsPackager, XPackager from clickgen.packagers import WindowsPackager, XPackager
def xbuild( def xbuild(config: Dict[str, Dict[str, Any]], x_out_dir: Path) -> None:
config: Dict[str, Dict[str, Any]],
x_out_dir: Path,
) -> None:
"""Build `macOSBigSur` cursor theme for only `X11`(UNIX) platform. """Build `macOSBigSur` cursor theme for only `X11`(UNIX) platform.
:param config: `macOSBigSur` configuration. :param config: `macOSBigSur` configuration.
:type config: Dict[str, Dict[str, Any]] :type config: Dict
:param x_out_dir: Path to the output directory,\ :param x_out_dir: Path to the output directory,\
Where the `X11` cursor theme package will\ Where the `X11` cursor theme package will generate.\
generate. It also creates a directory if not exists. It also creates a directory if not exists.
:type x_out_dir: Path :type x_out_dir: Path
:param info: Content theme name & comment
:type info: Info
""" """
for _, item in config.items(): for _, item in config.items():
png = item["png"] with CursorAlias.from_bitmap(item["png"], item["hotspot"]) as alias:
hotspot = item["hotspot"] x_cfg = alias.create(item["x_sizes"], item["delay"])
x_sizes = item["x_sizes"]
delay = item["delay"]
with CursorAlias.from_bitmap(png, hotspot) as alias:
x_cfg = alias.create(x_sizes, delay)
print(f"Building '{x_cfg.stem}' XCursor...") print(f"Building '{x_cfg.stem}' XCursor...")
XCursor.create(x_cfg, x_out_dir) XCursor.create(x_cfg, x_out_dir)
@ -45,33 +43,29 @@ def wbuild(config: Dict[str, Dict[str, Any]], win_out_dir: Path) -> None:
"""Build `macOSBigSur` cursor theme for only `Windows` platforms. """Build `macOSBigSur` cursor theme for only `Windows` platforms.
:param config: `macOSBigSur` configuration. :param config: `macOSBigSur` configuration.
:type config: Dict[str, Dict[str, Any]] :type config: Dict
:param win_out_dir: Path to the output directory,\ :param win_out_dir: Path to the output directory,\
Where the `Windows` cursor theme package will\ Where the `Windows` cursor theme package will generate.\
generate. It also creates a directory if not exists. It also creates a directory if not exists.
:type win_out_dir: Path :type win_out_dir: Path
:param info: Content theme name & comment
:type info: Info
""" """
for _, item in config.items(): for _, item in config.items():
png = item["png"] with CursorAlias.from_bitmap(item["png"], item["hotspot"]) as alias:
hotspot = item["hotspot"] alias.create(item["x_sizes"], item["delay"])
x_sizes = item["x_sizes"]
delay = item["delay"]
with CursorAlias.from_bitmap(png, hotspot) as alias:
alias.create(x_sizes, delay)
if item.get("win_key"): if item.get("win_key"):
position = item["position"]
win_size = item["win_size"]
win_key = item["win_key"]
canvas_size = item["canvas_size"]
win_delay = item["win_delay"]
win_cfg = alias.reproduce( win_cfg = alias.reproduce(
win_size, canvas_size, position, delay=win_delay size=item["win_size"],
).rename(win_key) canvas_size=item["canvas_size"],
position=item["position"],
delay=item["win_delay"],
).rename(item["win_key"])
print(f"Building '{win_cfg.stem}' Windows Cursor...") print(f"Building '{win_cfg.stem}' Windows Cursor...")
WindowsCursor.create(win_cfg, win_out_dir) WindowsCursor.create(win_cfg, win_out_dir)
@ -84,45 +78,40 @@ def build(
"""Build `macOSBigSur` cursor theme for `X11` & `Windows` platforms. """Build `macOSBigSur` cursor theme for `X11` & `Windows` platforms.
:param config: `macOSBigSur` configuration. :param config: `macOSBigSur` configuration.
:type config: Dict[str, Dict[str, Any]] :type config: Dict
:param x_out_dir: Path to the output directory,\ :param x_out_dir: Path to the output directory,\
Where the `X11` cursor theme package will\ Where the `X11` cursor theme package will generate.\
generate. It also creates a directory if not exists. It also creates a directory if not exists.
:type x_out_dir: Path :type x_out_dir: Path
:param win_out_dir: Path to the output directory,\ :param win_out_dir: Path to the output directory,\
Where the `Windows` cursor theme package will\ Where the `Windows` cursor theme package will generate.\
generate. It also creates a directory if not exists. It also creates a directory if not exists.
:type win_out_dir: Path :type win_out_dir: Path
:param info: Content theme name & comment
:type info: Info
""" """
def win_build(item: Dict[str, Any], alias: CursorAlias) -> None:
position = item["position"]
win_size = item["win_size"]
win_key = item["win_key"]
canvas_size = item["canvas_size"]
win_delay = item["win_delay"]
win_cfg = alias.reproduce(
win_size, canvas_size, position, delay=win_delay
).rename(win_key)
print(f"Building '{win_cfg.stem}' Windows Cursor...")
WindowsCursor.create(win_cfg, win_out_dir)
for _, item in config.items(): for _, item in config.items():
png = item["png"]
hotspot = item["hotspot"]
x_sizes = item["x_sizes"]
delay = item["delay"]
with CursorAlias.from_bitmap(png, hotspot) as alias: with CursorAlias.from_bitmap(item["png"], item["hotspot"]) as alias:
x_cfg = alias.create(x_sizes, delay) x_cfg = alias.create(item["x_sizes"], item["delay"])
print(f"Building '{x_cfg.stem}' XCursor...") print(f"Building '{x_cfg.stem}' XCursor...")
XCursor.create(x_cfg, x_out_dir) XCursor.create(x_cfg, x_out_dir)
if item.get("win_key"): if item.get("win_key"):
win_build(item, alias) win_cfg = alias.reproduce(
size=item["win_size"],
canvas_size=item["canvas_size"],
position=item["position"],
delay=item["win_delay"],
).rename(item["win_key"])
print(f"Building '{win_cfg.stem}' Windows Cursor...")
WindowsCursor.create(win_cfg, win_out_dir)
add_missing_xcursor(x_out_dir / "cursors") add_missing_xcursor(x_out_dir / "cursors")
XPackager(x_out_dir, THEME_NAME, COMMENT) XPackager(x_out_dir, THEME_NAME, COMMENT)