diff --git a/builder.py b/builder.py index 3b8330f..b44654e 100755 --- a/builder.py +++ b/builder.py @@ -218,7 +218,7 @@ def main(args) -> None: shutil.rmtree(thumbdir) os.makedirs(thumbdir, exist_ok=True) - darktheme = copy_static_files(args) + args.darktheme = copy_static_files(args) icons(args) if args.generate_webmanifest: @@ -228,13 +228,13 @@ def main(args) -> None: if args.non_interactive_mode: logger.info("generating HTML files") print("Generating HTML files...") - thumbnails = list_folder(args.root_directory, args.site_title, args, raw, VERSION, logo, darktheme=darktheme) + thumbnails = list_folder(args.root_directory, args.site_title, args, raw, VERSION, logo) with Pool(os.cpu_count()) as pool: logger.info("generating thumbnails") print("Generating thumbnails...") pool.map(generate_thumbnail, thumbnails) else: - thumbnails = list_folder(args.root_directory, args.site_title, args, raw, VERSION, logo, darktheme=darktheme) + thumbnails = list_folder(args.root_directory, args.site_title, args, raw, VERSION, logo) with Pool(os.cpu_count()) as pool: logger.info("generating thumbnails") diff --git a/files/global.css b/files/global.css index 6bdb99d..ef75885 100644 --- a/files/global.css +++ b/files/global.css @@ -302,6 +302,11 @@ input { border-style: none; } +.darkmodeswitch { + font-size: smaller; + height: 100%; +} + #dark-mode-switch { display: flex; align-items: center; diff --git a/modules/argumentparser.py b/modules/argumentparser.py index 20e82d3..de07e7f 100644 --- a/modules/argumentparser.py +++ b/modules/argumentparser.py @@ -60,6 +60,8 @@ class Args: Whether to enable fancy folder view. web_root_url : str The base URL of the web root for the image hosting site. + darktheme : bool + Whether a dark theme is present. """ author_name: str @@ -80,6 +82,7 @@ class Args: theme_path: str use_fancy_folders: bool web_root_url: str + darktheme: bool = False def to_dict(self) -> dict: result: dict = {} @@ -102,6 +105,7 @@ class Args: result["theme_path"] = self.theme_path result["use_fancy_folders"] = self.use_fancy_folders result["web_root_url"] = self.web_root_url + result["darktheme"] = self.darktheme return result @@ -172,5 +176,6 @@ def parse_arguments(version: str) -> Args: theme_path=parsed_args.theme_path, use_fancy_folders=parsed_args.use_fancy_folders, web_root_url=parsed_args.web_root_url, + darktheme=False, ) return _args diff --git a/modules/generate_html.py b/modules/generate_html.py index c4881da..3f8a5f9 100644 --- a/modules/generate_html.py +++ b/modules/generate_html.py @@ -389,7 +389,7 @@ def process_image(item: str, folder: str, _args: Args, baseurl: str, metadata: M return image, metadata -def generate_html(folder: str, title: str, _args: Args, raw: list[str], version: str, logo: str, darktheme: bool = False) -> set[str]: +def generate_html(folder: str, title: str, _args: Args, raw: list[str], version: str, logo: str) -> set[str]: """ Generates HTML content for a folder of images. @@ -459,7 +459,7 @@ def generate_html(folder: str, title: str, _args: Args, raw: list[str], version: update_metadata(metadata, folder) if should_generate_html(images, contains_files, _args): - subfoldertags = create_html_file(folder, title, foldername, images, subfolders, _args, version, logo, subfoldertags, darktheme=darktheme) + subfoldertags = create_html_file(folder, title, foldername, images, subfolders, _args, version, logo, subfoldertags) else: if os.path.exists(os.path.join(folder, "index.html")): logger.info("removing existing index.html", extra={"folder": folder}) @@ -564,16 +564,7 @@ def format_html(html: str) -> str: def create_html_file( - folder: str, - title: str, - foldername: str, - images: list[ImageMetadata], - subfolders: list[SubfolderMetadata], - _args: Args, - version: str, - logo: str, - subfoldertags: set[str], - darktheme: bool = False, + folder: str, title: str, foldername: str, images: list[ImageMetadata], subfolders: list[SubfolderMetadata], _args: Args, version: str, logo: str, subfoldertags: set[str] ) -> set[str]: """ Creates the HTML file using the template. @@ -630,7 +621,7 @@ def create_html_file( favicon=f"{_args.web_root_url}{FAVICON_PATH}", stylesheet=f"{_args.web_root_url}{GLOBAL_CSS_PATH}", theme=f"{_args.web_root_url}.static/theme.css", - darktheme=f"{_args.web_root_url}.static/theme-dark.css" if darktheme else None, + darktheme=f"{_args.web_root_url}.static/theme-dark.css" if _args.darktheme else None, root=_args.web_root_url, parent=f"{_args.web_root_url}{urllib.parse.quote(foldername)}", header=f"{header} - LICENSE", @@ -648,7 +639,7 @@ def create_html_file( favicon=f"{_args.web_root_url}{FAVICON_PATH}", stylesheet=f"{_args.web_root_url}{GLOBAL_CSS_PATH}", theme=f"{_args.web_root_url}.static/theme.css", - darktheme=f"{_args.web_root_url}.static/theme-dark.css" if darktheme else None, + darktheme=f"{_args.web_root_url}.static/theme-dark.css" if _args.darktheme else None, root=_args.web_root_url, parent=parent, header=header, @@ -669,7 +660,7 @@ def create_html_file( return set(sorted(alltags)) -def list_folder(folder: str, title: str, _args: Args, raw: list[str], version: str, logo: str, darktheme: bool = False) -> list[tuple[str, str, str]]: +def list_folder(folder: str, title: str, _args: Args, raw: list[str], version: str, logo: str) -> list[tuple[str, str, str]]: """ lists and processes a folder, generating HTML files. @@ -683,5 +674,5 @@ def list_folder(folder: str, title: str, _args: Args, raw: list[str], version: s Returns: list[tuple[str, str]]: list of thumbnails generated. """ - generate_html(folder, title, _args, raw, version, logo, darktheme=darktheme) + generate_html(folder, title, _args, raw, version, logo) return thumbnails diff --git a/templates/index.html.j2 b/templates/index.html.j2 index 42eedce..dd067f6 100644 --- a/templates/index.html.j2 +++ b/templates/index.html.j2 @@ -100,7 +100,7 @@