| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- import multiprocessing
- import logging
- import os
- import sys
- import shutil
- from .icon import *
- def _pack_animation(pair: set):
- source, destination = pair
- image = file2image(source)
- image.write(destination)
- def pack_animations(source: str, destination: str):
- assert os.path.exists(source)
- # Create list for processing
- to_pack = []
- dirpath, dirnames = next(os.walk(source))[:2]
- dirnames.sort()
- for dirname in dirnames:
- current_directory = os.path.join(dirpath, dirname)
- # Ensure destination folder
- destination_directory = os.path.join(destination, dirname)
- os.makedirs(destination_directory, exist_ok=True)
- # Find all files
- filenames = next(os.walk(current_directory))[2]
- filenames.sort()
- for filename in filenames:
- if is_file_an_icon(filename):
- source_filename = os.path.join(current_directory, filename)
- destination_filename = os.path.join(
- destination_directory, os.path.splitext(filename)[0] + ".bm"
- )
- to_pack.append((source_filename, destination_filename))
- elif filename == "meta.txt":
- source_filename = os.path.join(current_directory, filename)
- destination_filename = os.path.join(destination_directory, filename)
- shutil.copyfile(source_filename, destination_filename)
- # Process images in parallel
- pool = multiprocessing.Pool()
- pool.map(_pack_animation, to_pack)
- shutil.copyfile(
- os.path.join(source, "manifest.txt"), os.path.join(destination, "manifest.txt")
- )
- def pack_dolphin(source_directory: str, destination_directory: str):
- pack_animations(
- os.path.join(source_directory, "animations"),
- os.path.join(destination_directory, "animations"),
- )
|