Merge pull request #52 from ful1e5/dev

 Update `builder` module
This commit is contained in:
Kaiz Khatri 2021-04-24 17:07:39 +05:30 committed by GitHub
commit a7bb7bf3f0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 90 additions and 118 deletions

View file

@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [unreleased]
### Added
- Setup target updated inside `builder/Makefile`
### Changed
- `applbuild` modules relative imports
- Removed `setup.py` from `builder/`
## [1.1.4] - 4 Apr 2021
### Added

View file

@ -18,7 +18,6 @@ windows: clean render bitmaps
@cd builder && make build_windows && make clean
# Installation
theme := macOSBigSur
src := ./themes/$(theme)

View file

@ -9,17 +9,12 @@ WIN_CANVAS_SIZE ?= 32
WIN_SIZE ?= 24
clean:
@rm -rf applbuild.egg-info build dist
@python3 -m pip uninstall -y clickgen
@find -iname "*.pyc" -delete
@rm -rf applbuild/__pycache__
# Removing setup.py package files if installed
@if [ -f "files.txt" ]; then
@xargs rm -rf < files.txt
@rm -rf files.txt
@fi
setup: clean setup.py
@python3 setup.py install --user --record files.txt
setup: clean
@python3 -m pip install clickgen==1.1.9 --user
build: setup build.py
@python3 build.py --xsizes $(X_SIZES) --win-size $(WIN_SIZE) --win-canvas-size $(WIN_CANVAS_SIZE)

View file

@ -1,12 +1,12 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pathlib import Path
from typing import Any, Dict, Tuple, TypeVar, Union
from typing import Any, Dict, Tuple, TypeVar
from applbuild.constants import WIN_CURSORS_CFG, WIN_DELAY, X_CURSORS_CFG, X_DELAY
from clickgen.util import PNGProvider
from .constants import WIN_CURSORS_CFG, WIN_DELAY, X_CURSORS_CFG, X_DELAY
X = TypeVar("X")
@ -14,29 +14,31 @@ def to_tuple(x: X) -> Tuple[X, X]:
return (x, x)
def get_config(bitmaps_dir: Union[str, Path], **kwargs) -> Dict[str, Any]:
"""Return configuration of `macOSBigSur` pointers.
def get_config(bitmaps_dir, **kwargs) -> Dict[str, Any]:
"""Return configuration of `GoogleDot` pointers.
:param bitmaps_dir: Path to .png file's directory.
:type bitmaps_dir: Union[str, Path]
:type bitmaps_dir: ``str`` or ``pathlib.Path``
:param x_sizes: List of pixel-sizes for xcursors.
:type x_sizes: List[int]
:param **kwargs:
See below
:param win_canvas_size: Windows cursor's canvas pixel-size.
:type win_canvas_size: int
:param win_size: Pixel-size for Windows cursor.
:type win_size: int
:Keyword Arguments:
* *x_sizes* (``List[int]``) --
List of pixel-sizes for xcursors.
* *win_canvas_size* (``int``) --
Windows cursor's canvas pixel-size.
* *win_size* (``int``) --
Pixel-size for Windows cursor.
Example:
```python
get_config(
"./bitmaps",
x_sizes=[(24, 24), (32, 32)],
win_canvas_size=(32, 32),
win_size=(24, 24),
bitmaps_dir="./bitmaps",
x_sizes=[24, 28, 32],
win_canvas_size=32,
win_size=24,
)
```
"""
@ -49,6 +51,7 @@ def get_config(bitmaps_dir: Union[str, Path], **kwargs) -> Dict[str, Any]:
for size in raw_x_sizes:
x_sizes.append(to_tuple(size))
png_provider = PNGProvider(bitmaps_dir)
config: Dict[str, Any] = {}
for key, item in X_CURSORS_CFG.items():
@ -57,13 +60,12 @@ def get_config(bitmaps_dir: Union[str, Path], **kwargs) -> Dict[str, Any]:
hotspot: Tuple[int, int] = (x_hot, y_hot)
delay: int = int(item.get("delay", X_DELAY))
pngs = PNGProvider(bitmaps_dir).get(key)
if not pngs:
raise FileNotFoundError(f"{key} not found in {bitmaps_dir}")
png = png_provider.get(key)
if not png:
raise FileNotFoundError(f"{key} not found")
data = {
"png": pngs,
"png": png,
"x_sizes": x_sizes,
"hotspot": hotspot,
"delay": delay,
@ -94,7 +96,6 @@ def get_config(bitmaps_dir: Union[str, Path], **kwargs) -> Dict[str, Any]:
"win_size": win_size,
"win_delay": win_delay,
}
else:
config[key] = data

View file

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

View file

@ -12,7 +12,7 @@ def add_missing_xcursor(directory: Union[str, Path]) -> None:
"""Add missing `XCursor` to the Unix cursor package.
:param directory: directory where XCursors are available.
:type directory: Union[str, Path]
:type directory: ``str`` or ``pathlib.Path``
"""
symlinks: List[Dict[str, Union[str, List[str]]]] = [

View file

@ -1,22 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name="applbuild",
version="1.1.4",
description="Generate 'macOSBigSur' cursor theme from PNGs file",
url="https://github.com/ful1e5/apple_cursor",
packages=["applbuild"],
package_dir={"applbuild": "applbuild"},
author="Kaiz Khatri",
author_email="kaizmandhu@gamil.com",
install_requires=["clickgen==1.1.9"],
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
],
python_requires=">=3.8",
zip_safe=True,
)