###############################################################################
# This file is a part of Dear ImGui Bundle, NOT a part of ImFileDialog
# -----------------------------------------------------------------------------
# im_file_dialog.pyi: auto-generated bindings for ImFileDialog.
# based on https://github.com/dfranx/ImFileDialog
# Thanks to dfranx (https://github.com/dfranx)
#
# Most of the code of this file is automatically generated (using https://pthom.github.io/litgen/),
# and is generally very close to the C++ version. Comments, docs are identical.
# Do not manually edit the autogenerated parts (look for "Autogenerated" comments)!
###############################################################################
# ruff: noqa: F821
from __future__ import annotations
from typing import List

from imgui_bundle.imgui import ImTextureID

class Path:
    def __init__(self, path: str) -> None:
        pass

    def path(self) -> str:
        pass

    def filename(self) -> str:
        pass

    def extension(self) -> str:
        pass

    def parent_path(self) -> str:
        pass

# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  AUTOGENERATED CODE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# <litgen_stub> // Autogenerated code below! Do not edit!
####################    <generated_from:ImFileDialog.h>    ####################

# u8path is deprecated in C++20; use char8_t path constructor instead

class FileDialog:
    @staticmethod
    def instance() -> FileDialog:
        pass

    def __init__(self) -> None:
        pass

    def save(self, key: str, title: str, filter: str, starting_dir: str = "") -> bool:
        pass

    def open(
        self,
        key: str,
        title: str,
        filter: str,
        is_multiselect: bool = False,
        starting_dir: str = "",
    ) -> bool:
        pass

    def is_done(self, key: str) -> bool:
        pass

    def has_result(self) -> bool:
        pass

    def get_result(self) -> Path:
        pass

    def get_results(self) -> List[Path]:
        pass

    def close(self) -> None:
        pass

    def remove_favorite(self, path: str) -> None:
        pass

    def add_favorite(self, path: str) -> None:
        pass

    def get_favorites(self) -> List[str]:
        pass

    def set_zoom(self, z: float) -> None:
        pass

    def get_zoom(self) -> float:
        pass

    class FileTreeNode:
        def __init__(self, path: str) -> None:
            pass
        path: Path
        read: bool
        children: List[FileDialog.FileTreeNode]

    class FileData:
        def __init__(self, path: Path) -> None:
            pass
        path: Path
        is_directory: bool
        size: int
        date_modified: int

        has_icon_preview: bool
        icon_preview: ImTextureID
        icon_preview_data: int
        icon_preview_width: int
        icon_preview_height: int

####################    </generated_from:ImFileDialog.h>    ####################

# </litgen_stub> // Autogenerated code end!
