SYMBOL INDEX (1649 symbols across 194 files) FILE: bottles/backend/cabextract.py class CabExtract (line 29) | class CabExtract: method __init__ (line 43) | def __init__(self): method run (line 46) | def run( method __checks (line 66) | def __checks(self): method __extract (line 73) | def __extract(self) -> bool: FILE: bottles/backend/diff.py class Diff (line 5) | class Diff: method hashify (line 14) | def hashify(path: str) -> dict: method file_hashify (line 46) | def file_hashify(path: str) -> str: method compare (line 54) | def compare(parent: dict, child: dict) -> dict: FILE: bottles/backend/dlls/dll.py class DLLComponent (line 32) | class DLLComponent: method __init__ (line 38) | def __init__(self, version: str): method get_base_path (line 45) | def get_base_path(version: str) -> str: method get_override_keys (line 50) | def get_override_keys() -> str: method check (line 53) | def check(self) -> bool: method install (line 78) | def install(self, config: BottleConfig, overrides_only: bool = False, ... method uninstall (line 109) | def uninstall(self, config: BottleConfig, exclude=None): method __get_sys_path (line 138) | def __get_sys_path(config: BottleConfig, path: str) -> str: method __install_dll (line 151) | def __install_dll( method __uninstall_dll (line 199) | def __uninstall_dll(self, config, path: str, dll: str): FILE: bottles/backend/dlls/dxvk.py class DXVKComponent (line 22) | class DXVKComponent(DLLComponent): method get_override_keys (line 29) | def get_override_keys() -> str: method get_base_path (line 33) | def get_base_path(version: str) -> str: FILE: bottles/backend/dlls/latencyflex.py class LatencyFleXComponent (line 22) | class LatencyFleXComponent(DLLComponent): method get_override_keys (line 31) | def get_override_keys() -> str: method get_base_path (line 35) | def get_base_path(version: str) -> str: FILE: bottles/backend/dlls/nvapi.py class NVAPIComponent (line 30) | class NVAPIComponent(DLLComponent): method get_override_keys (line 38) | def get_override_keys() -> str: method get_base_path (line 43) | def get_base_path(version: str) -> str: method check_bottle_nvngx (line 47) | def check_bottle_nvngx(bottle_path: str, bottle_config: BottleConfig): FILE: bottles/backend/dlls/vkd3d.py class VKD3DComponent (line 22) | class VKD3DComponent(DLLComponent): method get_override_keys (line 29) | def get_override_keys() -> str: method get_base_path (line 33) | def get_base_path(version: str) -> str: FILE: bottles/backend/downloader.py class DownloadCancelled (line 36) | class DownloadCancelled(Exception): class Downloader (line 40) | class Downloader: method __init__ (line 47) | def __init__( method download (line 60) | def download(self) -> Result: method __progress (line 107) | def __progress(self, received_size, total_size): FILE: bottles/backend/globals.py class Paths (line 26) | class Paths: method is_vkbasalt_available (line 55) | def is_vkbasalt_available(): class TrdyPaths (line 67) | class TrdyPaths: FILE: bottles/backend/health.py class HealthChecker (line 32) | class HealthChecker: method __init__ (line 54) | def __init__(self): method check_x11 (line 68) | def check_x11(self): method check_wayland (line 76) | def check_wayland(): method check_desktop (line 79) | def check_desktop(self): method get_bottles_envs (line 83) | def get_bottles_envs(): method check_system_info (line 95) | def check_system_info(self): method get_disk_data (line 99) | def get_disk_data(self): method get_ram_data (line 103) | def get_ram_data(self): method get_results (line 118) | def get_results(self, plain: bool = False): FILE: bottles/backend/logger.py class Logger (line 28) | class Logger(logging.getLoggerClass()): method __color (line 40) | def __color(self, level, message: str): method __init__ (line 46) | def __init__(self, formatter=None): method debug (line 58) | def debug(self, message, **kwargs): method info (line 63) | def info(self, message, jn=False, **kwargs): method warning (line 70) | def warning(self, message, jn=True, **kwargs): method error (line 77) | def error(self, message, jn=True, **kwargs): method critical (line 84) | def critical(self, message, jn=True, **kwargs): method write_log (line 92) | def write_log(data: list): method set_silent (line 112) | def set_silent(self): FILE: bottles/backend/managers/backup.py class ProgressTrackingFilter (line 38) | class ProgressTrackingFilter: method __init__ (line 44) | def __init__( method __call__ (line 56) | def __call__(self, tarinfo: tarfile.TarInfo) -> Optional[tarfile.TarIn... method _update_progress (line 70) | def _update_progress(self): class BackupManager (line 78) | class BackupManager: method _validate_path (line 80) | def _validate_path(path: str) -> bool: method _calculate_dir_size (line 88) | def _calculate_dir_size( method _create_tarfile (line 120) | def _create_tarfile( method _safe_extract_tarfile (line 159) | def _safe_extract_tarfile( method export_backup (line 206) | def export_backup(config: BottleConfig, scope: str, path: str) -> Result: method exclude_filter (line 240) | def exclude_filter(tarinfo: tarfile.TarInfo) -> tarfile.TarInfo | None: method import_backup (line 249) | def import_backup(scope: str, path: str) -> Result: method _import_config_backup (line 267) | def _import_config_backup(path: str) -> Result: method _import_full_backup (line 285) | def _import_full_backup(path: str) -> Result: method duplicate_bottle (line 299) | def duplicate_bottle(config: BottleConfig, name: str) -> Result: method _duplicate_bottle_directory (line 314) | def _duplicate_bottle_directory( FILE: bottles/backend/managers/component.py class ComponentManager (line 48) | class ComponentManager: method __init__ (line 49) | def __init__(self, manager, offline: bool = False): method get_component (line 55) | def get_component(self, name: str, plain: bool = False) -> dict: method fetch_catalog (line 58) | def fetch_catalog(self) -> dict: method download (line 129) | def download( method extract (line 272) | def extract(name: str, component: str, archive: str) -> bool: method install (line 327) | def install( method __post_rename (line 423) | def __post_rename(component_type: str, post: dict): method is_in_use (line 446) | def is_in_use(self, component_type: str, component_name: str): method uninstall (line 463) | def uninstall(self, component_type: str, component_name: str): FILE: bottles/backend/managers/conf.py class ConfigManager (line 8) | class ConfigManager(object): method __init__ (line 9) | def __init__( method checks (line 29) | def checks(self): method read (line 38) | def read(self): method get_dict (line 70) | def get_dict(self): method write_json (line 74) | def write_json(self): method write_yaml (line 79) | def write_yaml(self): method write_ini (line 84) | def write_ini(self): method write_dict (line 97) | def write_dict(self, config_file: Optional[str] = None): method merge_dict (line 113) | def merge_dict(self, changes: dict): method del_key (line 130) | def del_key(self, key_struct: dict): FILE: bottles/backend/managers/data.py class UserDataKeys (line 29) | class UserDataKeys: class DataManager (line 37) | class DataManager: method __init__ (line 47) | def __init__(self): method __get_data (line 50) | def __get_data(self): method __create_data_file (line 67) | def __create_data_file(self): method list (line 74) | def list(self): method set (line 78) | def set(self, key, value, of_type=None): method remove (line 95) | def remove(self, key): method get (line 103) | def get(self, key, default=None): FILE: bottles/backend/managers/dependency.py class DependencyManager (line 49) | class DependencyManager: method __init__ (line 50) | def __init__(self, manager, offline: bool = False): method get_dependency (line 56) | def get_dependency(self, name: str, plain: bool = False) -> str | dict... method fetch_catalog (line 60) | def fetch_catalog(self) -> dict: method __notify_progress (line 79) | def __notify_progress( method __notify_progress_fraction (line 92) | def __notify_progress_fraction( method __build_progress_handler (line 99) | def __build_progress_handler( method __describe_step (line 124) | def __describe_step(step: dict) -> str: method install (line 156) | def install( method __perform_steps (line 299) | def __perform_steps( method __get_real_dest (line 390) | def __get_real_dest(config: BottleConfig, dest: str) -> str | bool: method __step_download_archive (line 416) | def __step_download_archive( method __step_install_exe_msi (line 440) | def __step_install_exe_msi( method __step_uninstall (line 491) | def __step_uninstall(config: BottleConfig, file_name: str) -> bool: method __step_cab_extract (line 499) | def __step_cab_extract( method __step_delete_dlls (line 556) | def __step_delete_dlls(self, config: BottleConfig, step: dict): method __step_get_from_cab (line 567) | def __step_get_from_cab(self, config: BottleConfig, step: dict): method __step_archive_extract (line 593) | def __step_archive_extract( method __step_install_fonts (line 641) | def __step_install_fonts(config: BottleConfig, step: dict): method __step_copy_dll (line 662) | def __step_copy_dll(self, config: BottleConfig, step: dict): method __step_register_dll (line 722) | def __step_register_dll(config: BottleConfig, step: dict): method __step_override_dll (line 732) | def __step_override_dll(config: BottleConfig, step: dict): method __step_set_register_key (line 766) | def __step_set_register_key(config: BottleConfig, step: dict): method __step_register_font (line 778) | def __step_register_font(config: BottleConfig, step: dict): method __step_replace_font (line 789) | def __step_replace_font(config: BottleConfig, step: dict): method __step_set_windows (line 812) | def __step_set_windows(config: BottleConfig, step: dict): method __step_use_windows (line 819) | def __step_use_windows(config: BottleConfig, step: dict): FILE: bottles/backend/managers/eagle.py class EagleManager (line 44) | class EagleManager: method __init__ (line 122) | def __init__(self, config: BottleConfig): method _load_yara_rules (line 127) | def _load_yara_rules(cls) -> None: method _is_safe_neighbor_dir (line 140) | def _is_safe_neighbor_dir(self, directory: str) -> bool: method _send_step (line 175) | def _send_step(self, msg: str, delay: bool = True) -> None: method _scan_yara (line 182) | def _scan_yara(self, file_path: str, insights: dict, source: str = "Ma... method _extract_asar (line 264) | def _extract_asar(self, asar_path: str) -> tuple: method _extract_installer (line 326) | def _extract_installer(self, installer_path: str, installer_type: str)... method _cleanup_extraction (line 373) | def _cleanup_extraction(self, extract_dir: str) -> None: method analyze (line 381) | def analyze(self, executable_path: str) -> None: FILE: bottles/backend/managers/epicgamesstore.py class EpicGamesStoreManager (line 26) | class EpicGamesStoreManager: method find_dat_path (line 28) | def find_dat_path(config: BottleConfig) -> str | None: method is_epic_supported (line 45) | def is_epic_supported(config: BottleConfig) -> bool: method get_installed_games (line 52) | def get_installed_games(config: BottleConfig) -> list: FILE: bottles/backend/managers/importer.py class ImportManager (line 31) | class ImportManager: method __init__ (line 32) | def __init__(self, manager): method search_wineprefixes (line 36) | def search_wineprefixes() -> Result: method import_wineprefix (line 88) | def import_wineprefix(self, wineprefix: dict) -> Result: FILE: bottles/backend/managers/installer.py class InstallerManager (line 39) | class InstallerManager: method __init__ (line 40) | def __init__(self, manager, offline: bool = False): method get_review (line 48) | def get_review(self, installer_name, parse: bool = True) -> str: method get_installer (line 58) | def get_installer( method fetch_catalog (line 68) | def fetch_catalog(self) -> dict: method get_icon_url (line 81) | def get_icon_url(self, installer): method __download_icon (line 85) | def __download_icon(self, config, executable: dict, manifest): method __process_local_resources (line 105) | def __process_local_resources(self, exe_msi_steps, installer): method __install_dependencies (line 115) | def __install_dependencies( method __perform_checks (line 141) | def __perform_checks(config, checks: dict): method __perform_steps (line 160) | def __perform_steps(self, config: BottleConfig, steps: list): method __step_run_winecommand (line 213) | def __step_run_winecommand(config: BottleConfig, step: dict): method __step_run_script (line 230) | def __step_run_script(config: BottleConfig, step: dict): method __step_update_config (line 261) | def __step_update_config(config: BottleConfig, step: dict): method __set_parameters (line 280) | def __set_parameters(self, config: BottleConfig, new_params: dict): method count_steps (line 316) | def count_steps(self, installer) -> dict: method has_local_resources (line 339) | def has_local_resources(self, installer): method install (line 355) | def install( FILE: bottles/backend/managers/journal.py class JournalSeverity (line 29) | class JournalSeverity: class JournalManager (line 40) | class JournalManager: method __get_journal (line 49) | def __get_journal() -> dict: method __clean_old (line 79) | def __clean_old(): method __save_journal (line 103) | def __save_journal(journal: Optional[dict] = None): method get (line 113) | def get(period: str = "today", plain: bool = False): method __filter_by_date (line 138) | def __filter_by_date(journal: dict, period: str): method get_event (line 170) | def get_event(event_id: str): method first_event_date (line 176) | def first_event_date(): method write (line 193) | def write(severity: JournalSeverity, message: str): FILE: bottles/backend/managers/library.py class LibraryManager (line 30) | class LibraryManager: method __init__ (line 39) | def __init__(self): method load_library (line 42) | def load_library(self, silent=False): method add_to_library (line 64) | def add_to_library(self, data: dict, config: BottleConfig): method download_thumbnail (line 81) | def download_thumbnail(self, _uuid: str, config: BottleConfig): method __already_in_library (line 98) | def __already_in_library(self, data: dict): method remove_from_library (line 108) | def remove_from_library(self, _uuid: str): method save_library (line 119) | def save_library(self, silent=False): method get_library (line 129) | def get_library(self): FILE: bottles/backend/managers/manager.py class Manager (line 83) | class Manager(metaclass=Singleton): method __init__ (line 113) | def __init__( method checks (line 200) | def checks( method __del__ (line 316) | def __del__(self): method _initialize_playtime_tracker (line 324) | def _initialize_playtime_tracker(self) -> None: method _on_playtime_enabled_changed (line 334) | def _on_playtime_enabled_changed(self, _settings, _key) -> None: method playtime_start (line 354) | def playtime_start( method playtime_finish (line 376) | def playtime_finish( method _on_program_started (line 395) | def _on_program_started(self, data: Optional[Result] = None) -> None: method _on_program_finished (line 421) | def _on_program_finished(self, data: Optional[Result] = None) -> None: method _get_payload_config (line 441) | def _get_payload_config(self, payload) -> Optional[BottleConfig]: method __clear_temp (line 456) | def __clear_temp(self, force: bool = False): method get_cache_details (line 468) | def get_cache_details(self) -> dict: method clear_temp_cache (line 508) | def clear_temp_cache(self) -> Result[None]: method clear_template_cache (line 517) | def clear_template_cache(self, template_uuid: str) -> Result[None]: method clear_templates_cache (line 527) | def clear_templates_cache(self) -> Result[None]: method clear_all_caches (line 538) | def clear_all_caches(self) -> Result[None]: method update_bottles (line 549) | def update_bottles(self, silent: bool = False): method check_app_dirs (line 554) | def check_app_dirs(self): method organize_components (line 608) | def organize_components(self): method organize_dependencies (line 628) | def organize_dependencies(self): method organize_installers (line 641) | def organize_installers(self): method remove_dependency (line 653) | def remove_dependency(self, config: BottleConfig, dependency: list): method check_runners (line 673) | def check_runners(self, install_latest: bool = True) -> bool: method check_runtimes (line 766) | def check_runtimes(self, install_latest: bool = True) -> bool: method __winebridge_status (line 797) | def __winebridge_status(self) -> tuple[Optional[str], Optional[str], b... method winebridge_update_status (line 839) | def winebridge_update_status(self) -> dict: method check_winebridge (line 848) | def check_winebridge( method check_dxvk (line 869) | def check_dxvk(self, install_latest: bool = True) -> bool: method check_vkd3d (line 875) | def check_vkd3d(self, install_latest: bool = True) -> bool: method check_nvapi (line 881) | def check_nvapi(self, install_latest: bool = True) -> bool: method check_latencyflex (line 887) | def check_latencyflex(self, install_latest: bool = True) -> bool: method get_offline_components (line 893) | def get_offline_components( method __check_component (line 959) | def __check_component( method get_programs (line 1032) | def get_programs(self, config: BottleConfig) -> List[dict]: method check_bottles (line 1179) | def check_bottles(self, silent: bool = False): method update_config (line 1334) | def update_config( method apply_audio_driver (line 1403) | def apply_audio_driver(self, driver: str) -> Result[None]: method create_bottle_from_config (line 1418) | def create_bottle_from_config(self, config: BottleConfig) -> bool: method create_bottle (line 1522) | def create_bottle( method __sort_runners (line 2033) | def __sort_runners(runner_list: list, prefix: str) -> sorted: method get_latest_runner (line 2047) | def get_latest_runner(self, runner_prefix: str = "soda") -> list: method delete_bottle (line 2054) | def delete_bottle(self, config: BottleConfig) -> bool: method repair_bottle (line 2098) | def repair_bottle(self, config: BottleConfig) -> bool: method install_dll_component (line 2130) | def install_dll_component( FILE: bottles/backend/managers/origin.py class OriginManager (line 24) | class OriginManager: method find_manifests_path (line 26) | def find_manifests_path(config: BottleConfig) -> str | None: method is_origin_supported (line 43) | def is_origin_supported(config: BottleConfig) -> bool: method get_installed_games (line 50) | def get_installed_games(config: BottleConfig) -> list: FILE: bottles/backend/managers/playtime.py class PlaytimeTotalsDict (line 27) | class PlaytimeTotalsDict(TypedDict): class _TrackedSession (line 40) | class _TrackedSession: function _utc_now_seconds (line 49) | def _utc_now_seconds() -> int: function _normalize_path_to_windows (line 53) | def _normalize_path_to_windows(bottle_path: str, program_path: str) -> str: function _compute_program_id (line 100) | def _compute_program_id(bottle_id: str, bottle_path: str, program_path: ... class ProcessSessionTracker (line 120) | class ProcessSessionTracker: method __init__ (line 129) | def __init__( method _connect (line 160) | def _connect(self) -> sqlite3.Connection: method _ensure_schema (line 169) | def _ensure_schema(self) -> None: method disable_tracking (line 231) | def disable_tracking(self) -> None: method shutdown (line 235) | def shutdown(self) -> None: method _atexit_shutdown (line 257) | def _atexit_shutdown(self) -> None: method start_session (line 263) | def start_session( method mark_exit (line 373) | def mark_exit( method mark_failure (line 420) | def mark_failure(self, session_id: int, *, status: str) -> None: method recover_open_sessions (line 426) | def recover_open_sessions(self) -> None: method _heartbeat_loop (line 456) | def _heartbeat_loop(self) -> None: method _flush_heartbeats (line 463) | def _flush_heartbeats(self) -> None: method _update_totals (line 489) | def _update_totals( method get_totals (line 552) | def get_totals( method get_all_program_totals (line 600) | def get_all_program_totals( method get_weekly_playtime (line 653) | def get_weekly_playtime( method get_daily_playtime (line 733) | def get_daily_playtime( method get_monthly_playtime (line 835) | def get_monthly_playtime( method get_weekly_session_count (line 907) | def get_weekly_session_count( method get_daily_session_count (line 951) | def get_daily_session_count( method get_yearly_session_count (line 989) | def get_yearly_session_count( FILE: bottles/backend/managers/queue.py class QueueManager (line 19) | class QueueManager: method __init__ (line 22) | def __init__(self, end_fn, add_fn=None): method add_task (line 26) | def add_task(self): method end_task (line 31) | def end_task(self): FILE: bottles/backend/managers/registry_rule.py class RegistryRuleManager (line 17) | class RegistryRuleManager: method load_rules (line 21) | def load_rules(config: BottleConfig) -> dict[str, RegistryRule]: method list_rules (line 30) | def list_rules(cls, config: BottleConfig) -> List[RegistryRule]: method upsert_rule (line 34) | def upsert_rule( method delete_rule (line 43) | def delete_rule(cls, manager: "Manager", config: BottleConfig, name: s... method apply_rules (line 53) | def apply_rules( FILE: bottles/backend/managers/repository.py class RepositoryManager (line 35) | class RepositoryManager: method __init__ (line 54) | def __init__(self, get_index=True): method get_repo (line 64) | def get_repo(self, name: str, offline: bool = False): method __check_personals (line 71) | def __check_personals(self): method __curl_progress (line 101) | def __curl_progress(self, _download_t, _download_d, _upload_t, _upload... method __stop_index (line 108) | def __stop_index(self, res: Result): method __get_index (line 112) | def __get_index(self): FILE: bottles/backend/managers/runtime.py class RuntimeManager (line 24) | class RuntimeManager: method get_runtimes (line 27) | def get_runtimes(_filter: str = "bottles"): method get_runtime_env (line 40) | def get_runtime_env(_filter: str = "bottles"): method get_eac (line 60) | def get_eac(): method get_be (line 71) | def get_be(): method __get_runtime (line 82) | def __get_runtime(paths: list, structure: list): method __get_bottles_runtime (line 116) | def __get_bottles_runtime(): method __get_steam_runtime (line 123) | def __get_steam_runtime(): FILE: bottles/backend/managers/sandbox.py class SandboxManager (line 25) | class SandboxManager: method __init__ (line 26) | def __init__( method __get_bwrap (line 53) | def __get_bwrap(self, cmd: str): method __get_flatpak_spawn (line 97) | def __get_flatpak_spawn(self, cmd: str): method get_cmd (line 141) | def get_cmd(self, cmd: str): method run (line 149) | def run(self, cmd: str) -> subprocess.Popen[bytes]: FILE: bottles/backend/managers/steam.py class SteamManager (line 44) | class SteamManager: method __init__ (line 51) | def __init__( method __find_steam_path (line 68) | def __find_steam_path(self) -> str | None: method __get_scoped_path (line 92) | def __get_scoped_path(self, scope: str = "steamapps"): method get_acf_data (line 103) | def get_acf_data(libraryfolder: str, app_id: str) -> dict | None: method __get_local_config_path (line 113) | def __get_local_config_path(self) -> str | None: method __get_library_folders (line 124) | def __get_library_folders(self) -> list | None: method get_appid_library_path (line 155) | def get_appid_library_path(self, appid: str) -> str | None: method __get_local_config (line 166) | def __get_local_config(self) -> dict: method save_local_config (line 179) | def save_local_config(self, new_data: dict): method get_runner_path (line 194) | def get_runner_path(pfx_path: str) -> Optional[str]: method list_apps_ids (line 222) | def list_apps_ids(self) -> dict: method get_installed_apps_as_programs (line 238) | def get_installed_apps_as_programs(self) -> list: method list_prefixes (line 275) | def list_prefixes(self) -> Dict[str, BottleConfig]: method update_bottles (line 366) | def update_bottles(self): method get_app_config (line 379) | def get_app_config(self, prefix: str) -> dict: method get_launch_options (line 405) | def get_launch_options(self, prefix: str, app_conf: Optional[dict] = N... method set_launch_options (line 432) | def set_launch_options(self, prefix: str, options: dict): method del_launch_option (line 466) | def del_launch_option(self, prefix: str, key_type: str, key: str): method update_bottle (line 505) | def update_bottle(self, config: BottleConfig) -> BottleConfig: method launch_app (line 528) | def launch_app(prefix: str): method add_shortcut (line 533) | def add_shortcut(self, program_name: str, program_path: str): FILE: bottles/backend/managers/steamgriddb.py class SteamGridDBManager (line 30) | class SteamGridDBManager: method get_game_grid (line 32) | def get_game_grid(name: str, config: BottleConfig): method __save_grid (line 42) | def __save_grid(url: str, config: BottleConfig): FILE: bottles/backend/managers/template.py class TemplateManager (line 35) | class TemplateManager: method new (line 37) | def new(env: str, config: BottleConfig): method __validate_template (line 82) | def __validate_template(template_uuid: str): method get_template_manifest (line 115) | def get_template_manifest(template: str): method get_templates (line 120) | def get_templates(): method delete_template (line 133) | def delete_template(template_uuid: str): method check_outdated (line 147) | def check_outdated(template: dict): method get_env_template (line 169) | def get_env_template(env: str): method unpack_template (line 180) | def unpack_template(template: dict, config: BottleConfig): FILE: bottles/backend/managers/thumbnail.py class ThumbnailManager (line 27) | class ThumbnailManager: method get_path (line 29) | def get_path(config: BottleConfig, uri: str): method __load_grid (line 40) | def __load_grid(config: BottleConfig, uri: str): FILE: bottles/backend/managers/ubisoftconnect.py class UbisoftConnectManager (line 26) | class UbisoftConnectManager: method find_conf_path (line 28) | def find_conf_path(config: BottleConfig) -> str | None: method is_uconnect_supported (line 45) | def is_uconnect_supported(config: BottleConfig) -> bool: method get_installed_games (line 53) | def get_installed_games(config: BottleConfig) -> list: FILE: bottles/backend/managers/versioning.py class VersioningManager (line 45) | class VersioningManager: method __init__ (line 46) | def __init__(self, manager): method __get_patterns (line 50) | def __get_patterns(config: BottleConfig): method is_initialized (line 57) | def is_initialized(config: BottleConfig): method needs_migration (line 65) | def needs_migration(config: BottleConfig): method re_initialize (line 89) | def re_initialize(config: BottleConfig): method update_system (line 107) | def update_system(self, config: BottleConfig): method create_state (line 111) | def create_state(self, config: BottleConfig, message: str = "No messag... method list_states (line 134) | def list_states( method set_state (line 180) | def set_state( method get_state_files (line 279) | def get_state_files( method get_index (line 299) | def get_index(config: BottleConfig): method get_branches (line 321) | def get_branches(self, config: BottleConfig) -> list: method get_active_branch (line 332) | def get_active_branch(self, config: BottleConfig) -> str: method create_branch (line 343) | def create_branch(self, config: BottleConfig, branch_name: str) -> Res... method delete_branch (line 355) | def delete_branch(self, config: BottleConfig, branch_name: str) -> Res... method checkout_branch (line 367) | def checkout_branch(self, config: BottleConfig, branch_name: str) -> R... FILE: bottles/backend/models/config.py class DictCompatMixIn (line 16) | class DictCompatMixIn: method yaml_serialize_handler (line 18) | def yaml_serialize_handler(dumper, data): method json_serialize_handler (line 23) | def json_serialize_handler(data): method keys (line 26) | def keys(self): method get (line 29) | def get(self, key, __default=None): method copy (line 32) | def copy(self): method to_dict (line 35) | def to_dict(self) -> dict: method items (line 38) | def items(self) -> ItemsView[str, Container]: method __iter__ (line 41) | def __iter__(self): method __getitem__ (line 45) | def __getitem__(self, item): method __delitem__ (line 49) | def __delitem__(self, key): method __setitem__ (line 53) | def __setitem__(self, key, value): class BottleSandboxParams (line 59) | class BottleSandboxParams(DictCompatMixIn): class BottleParams (line 69) | class BottleParams(DictCompatMixIn): class BottleConfig (line 119) | class BottleConfig(DictCompatMixIn): method dump (line 157) | def dump(self, file: str | IO, mode="w", encoding=None, indent=4) -> R... method load (line 179) | def load(cls, file: str | IO, mode="r") -> Result[Optional["BottleConf... method _fill_with (line 212) | def _fill_with(cls, data: dict) -> Result[Optional["BottleConfig"]]: method _fix (line 230) | def _fix(cls, data: dict) -> dict: method _filter (line 264) | def _filter(cls, data: dict, clazz: object = None) -> dict: FILE: bottles/backend/models/enum.py class Arch (line 1) | class Arch: FILE: bottles/backend/models/process.py class ProcessStartedPayload (line 6) | class ProcessStartedPayload: class ProcessFinishedPayload (line 16) | class ProcessFinishedPayload: FILE: bottles/backend/models/registry_rule.py class RegistryRule (line 6) | class RegistryRule: method from_dict (line 20) | def from_dict(cls, data: dict) -> "RegistryRule": method to_dict (line 29) | def to_dict(self) -> dict: FILE: bottles/backend/models/result.py class Result (line 22) | class Result(Generic[T]): method __init__ (line 33) | def __init__(self, status: bool = False, data: T = None, message: str ... method set_status (line 38) | def set_status(self, v: bool): method ok (line 42) | def ok(self): method has_data (line 46) | def has_data(self): method ready (line 50) | def ready(self): FILE: bottles/backend/models/samples.py class Samples (line 1) | class Samples: FILE: bottles/backend/models/vdict.py class _kView (line 31) | class _kView(_c.KeysView): method __iter__ (line 32) | def __iter__(self): class _vView (line 36) | class _vView(_c.ValuesView): method __iter__ (line 37) | def __iter__(self): class _iView (line 41) | class _iView(_c.ItemsView): method __iter__ (line 42) | def __iter__(self): class VDFDict (line 46) | class VDFDict(dict): method __init__ (line 47) | def __init__(self, data=None): method __repr__ (line 69) | def __repr__(self): method __len__ (line 74) | def __len__(self): method _verify_key_tuple (line 78) | def _verify_key_tuple(key): method _normalize_key (line 86) | def _normalize_key(self, key): method __setitem__ (line 95) | def __setitem__(self, key, value): method __getitem__ (line 108) | def __getitem__(self, key): method __delitem__ (line 111) | def __delitem__(self, key): method __iter__ (line 141) | def __iter__(self): method __contains__ (line 144) | def __contains__(self, key): method __eq__ (line 147) | def __eq__(self, other): method __ne__ (line 153) | def __ne__(self, other): method clear (line 156) | def clear(self): method get (line 161) | def get(self, key, *_args): method setdefault (line 164) | def setdefault(self, key, default=None): method pop (line 169) | def pop(self, key): method popitem (line 175) | def popitem(self): method update (line 181) | def update(self, data=None, **kwargs): method iterkeys (line 190) | def iterkeys(self): method keys (line 193) | def keys(self): method itervalues (line 196) | def itervalues(self): method values (line 199) | def values(self): method iteritems (line 202) | def iteritems(self): method items (line 205) | def items(self): method get_all_for (line 208) | def get_all_for(self, key): method remove_all_for (line 214) | def remove_all_for(self, key): method has_duplicates (line 226) | def has_duplicates(self): FILE: bottles/backend/repos/component.py class ComponentRepo (line 21) | class ComponentRepo(Repo): method get (line 24) | def get(self, name: str, plain: bool = False) -> str | dict | bool: FILE: bottles/backend/repos/dependency.py class DependencyRepo (line 21) | class DependencyRepo(Repo): method get (line 24) | def get(self, name: str, plain: bool = False) -> str | dict | bool: FILE: bottles/backend/repos/installer.py class InstallerRepo (line 21) | class InstallerRepo(Repo): method get (line 24) | def get(self, name: str, plain: bool = False) -> str | dict | bool: method get_review (line 31) | def get_review(self, name: str) -> str | dict | bool: method get_icon (line 36) | def get_icon(self, name: str) -> str | bytes | None: FILE: bottles/backend/repos/repo.py class Repo (line 30) | class Repo: method __init__ (line 33) | def __init__(self, url: str, index: str, offline: bool = False): method __get_catalog (line 43) | def __get_catalog(self, index: str, offline: bool = False): method get_manifest (line 65) | def get_manifest(self, url: str, plain: bool = False) -> str | dict | ... FILE: bottles/backend/runner.py class Runner (line 35) | class Runner: method runner_update (line 44) | def runner_update( FILE: bottles/backend/state.py class Locks (line 14) | class Locks(Enum): class Events (line 18) | class Events(Enum): class Signals (line 27) | class Signals(Enum): class Status (line 64) | class Status(Enum): class TaskStreamUpdateHandler (line 71) | class TaskStreamUpdateHandler(Protocol): method __call__ (line 72) | def __call__( class SignalHandler (line 80) | class SignalHandler(Protocol): method __call__ (line 81) | def __call__(self, data: Optional[Result] = None) -> None: ... class Notification (line 85) | class Notification: class Task (line 92) | class Task: method __init__ (line 99) | def __init__( method task_id (line 112) | def task_id(self) -> Optional[UUID]: method task_id (line 116) | def task_id(self, value: UUID): method subtitle (line 124) | def subtitle(self) -> str: method subtitle (line 128) | def subtitle(self, value: str): method stream_update (line 132) | def stream_update( class LockManager (line 154) | class LockManager: method lock (line 158) | def lock(cls, name: Locks): method get (line 174) | def get(cls, name: Locks) -> PyLock: class EventManager (line 178) | class EventManager: method wait (line 188) | def wait(cls, event: Events): method done (line 196) | def done(cls, event: Events): method reset (line 202) | def reset(cls, event: Events): class TaskManager (line 208) | class TaskManager: method get (line 214) | def get(cls, task_id: UUID) -> Optional[Task]: method add (line 218) | def add(cls, task: Task) -> UUID: method remove (line 227) | def remove(cls, task: UUID | Task): class SignalManager (line 234) | class SignalManager: method connect (line 240) | def connect(cls, signal: Signals, handler: SignalHandler) -> None: method send (line 245) | def send(cls, signal: Signals, data: Optional[Result] = None) -> None: FILE: bottles/backend/utils/connection.py class ConnectionUtils (line 32) | class ConnectionUtils: method __init__ (line 42) | def __init__(self, force_offline=False, **kwargs): method status (line 50) | def status(self) -> Optional[bool]: method status (line 54) | def status(self, value: bool): method __curl_progress (line 61) | def __curl_progress(self, _download_t, _download_d, _upload_t, _upload... method stop_check (line 68) | def stop_check(self, res: Result): method check_connection (line 72) | def check_connection(self, show_notification=False) -> Optional[bool]: FILE: bottles/backend/utils/decorators.py function cache (line 22) | def cache(_func=None, *, seconds: int = 600, maxsize: int = 128, typed: ... FILE: bottles/backend/utils/display.py class DisplayUtils (line 6) | class DisplayUtils: method get_x_display (line 9) | def get_x_display(): method check_nvidia_device (line 36) | def check_nvidia_device(): method display_server_type (line 56) | def display_server_type(): FILE: bottles/backend/utils/file.py class FileUtils (line 27) | class FileUtils: method get_checksum (line 34) | def get_checksum(file): method use_insensitive_ext (line 49) | def use_insensitive_ext(string): method get_human_size (line 56) | def get_human_size(size: float) -> str: method get_human_size_legacy (line 65) | def get_human_size_legacy(size: float) -> str: method get_path_size (line 74) | def get_path_size(self, path: str, human: bool = True) -> str | float: method get_disk_size (line 87) | def get_disk_size(self, human: bool = True) -> dict: method wait_for_files (line 106) | def wait_for_files(files: list, timeout: int = 0.5) -> bool: method remove_path (line 118) | def remove_path(path: str) -> bool: method chattr_f (line 133) | def chattr_f(directory: str) -> bool: FILE: bottles/backend/utils/generic.py function validate_url (line 30) | def validate_url(url: str): function detect_encoding (line 45) | def detect_encoding(text: bytes, locale_hint: str = None) -> Optional[str]: function is_glibc_min_available (line 77) | def is_glibc_min_available(): function sort_by_version (line 93) | def sort_by_version(_list: list, extra_check: str = "async"): function get_mime (line 105) | def get_mime(path: str): function random_string (line 114) | def random_string(length: int): FILE: bottles/backend/utils/gpu.py class GPUVendors (line 29) | class GPUVendors(Enum): class GPUUtils (line 36) | class GPUUtils: method __init__ (line 43) | def __init__(self): method list_all (line 46) | def list_all(self): method assume_discrete (line 63) | def assume_discrete(vendors: list): method is_nouveau (line 73) | def is_nouveau(): method get_gpu (line 86) | def get_gpu(self): method is_gpu (line 146) | def is_gpu(vendor: GPUVendors) -> bool: FILE: bottles/backend/utils/gsettings_stub.py class GSettingsStub (line 6) | class GSettingsStub: method get_boolean (line 8) | def get_boolean(key: str) -> bool: method get_string (line 13) | def get_string(key: str) -> str: method set_string (line 18) | def set_string(key: str, value: str) -> None: FILE: bottles/backend/utils/imagemagick.py class ImageMagickUtils (line 22) | class ImageMagickUtils: method __init__ (line 23) | def __init__(self, path: str): method __validate_path (line 27) | def __validate_path(path: str): method list_assets (line 34) | def list_assets(self): method convert (line 53) | def convert( FILE: bottles/backend/utils/json.py class ExtJSONEncoder (line 12) | class ExtJSONEncoder(_json.JSONEncoder): method default (line 13) | def default(self, o): function load (line 19) | def load(fp: IO[str]) -> Any: function loads (line 24) | def loads(s: str | bytes) -> Any: function dump (line 29) | def dump( function dumps (line 49) | def dumps( FILE: bottles/backend/utils/lnk.py class LnkUtils (line 23) | class LnkUtils: method get_data (line 26) | def get_data(path): FILE: bottles/backend/utils/manager.py class ManagerUtils (line 42) | class ManagerUtils: method open_filemanager (line 49) | def open_filemanager( method get_bottle_path (line 89) | def get_bottle_path(config: BottleConfig) -> str: method get_runner_path (line 99) | def get_runner_path(runner: str) -> str: method get_dxvk_path (line 105) | def get_dxvk_path(dxvk: str) -> str: method get_vkd3d_path (line 109) | def get_vkd3d_path(vkd3d: str) -> str: method get_nvapi_path (line 113) | def get_nvapi_path(nvapi: str) -> str: method get_latencyflex_path (line 117) | def get_latencyflex_path(latencyflex: str) -> str: method get_temp_path (line 121) | def get_temp_path(dest: str) -> str: method get_template_path (line 125) | def get_template_path(template: str) -> str: method move_file_to_bottle (line 129) | def move_file_to_bottle( method get_exe_parent_dir (line 177) | def get_exe_parent_dir(config, executable_path): method extract_icon (line 186) | def extract_icon(config: BottleConfig, program_name: str, program_path... method create_desktop_entry (line 227) | def create_desktop_entry( method browse_wineprefix (line 281) | def browse_wineprefix(wineprefix: dict): method get_languages (line 288) | def get_languages( FILE: bottles/backend/utils/nvidia.py class LinkMap (line 15) | class LinkMap(Structure): function get_nvidia_glx_path (line 36) | def get_nvidia_glx_path(): function get_nvidia_dll_path (line 88) | def get_nvidia_dll_path(): FILE: bottles/backend/utils/proc.py class Proc (line 22) | class Proc: method __init__ (line 23) | def __init__(self, pid): method __get_data (line 26) | def __get_data(self, data): method get_cmdline (line 33) | def get_cmdline(self): method get_env (line 36) | def get_env(self): method get_cwd (line 39) | def get_cwd(self): method get_name (line 42) | def get_name(self): method kill (line 45) | def kill(self): class ProcUtils (line 53) | class ProcUtils: method get_procs (line 55) | def get_procs(): method get_by_cmdline (line 63) | def get_by_cmdline(cmdline): method get_by_env (line 68) | def get_by_env(env): method get_by_cwd (line 73) | def get_by_cwd(cwd): method get_by_name (line 78) | def get_by_name(name): method get_by_pid (line 83) | def get_by_pid(pid): FILE: bottles/backend/utils/singleton.py class Singleton (line 1) | class Singleton(type): method __call__ (line 4) | def __call__(cls, *args, **kwargs): FILE: bottles/backend/utils/snake.py class Snake (line 8) | class Snake: method __init__ (line 9) | def __init__(self, stdscr: curses.window): method generate_food (line 27) | def generate_food(self): method draw (line 36) | def draw(self): method move (line 55) | def move(self): method get_input (line 75) | def get_input(self): method get_result (line 88) | def get_result(self): method run (line 91) | def run(self): function main (line 103) | def main(stdscr): FILE: bottles/backend/utils/steam.py class SteamUtils (line 29) | class SteamUtils: method parse_acf (line 31) | def parse_acf(data: str) -> VDFDict: method parse_vdf (line 38) | def parse_vdf(data: str) -> VDFDict: method to_vdf (line 45) | def to_vdf(data: VDFDict, fp: TextIO): method is_proton (line 52) | def is_proton(path: str) -> bool: method get_associated_runtime (line 69) | def get_associated_runtime(path: str) -> Optional[str]: method get_dist_directory (line 91) | def get_dist_directory(path: str) -> str: method handle_launch_options (line 108) | def handle_launch_options(launch_options: str) -> tuple[str, str, dict... FILE: bottles/backend/utils/terminal.py class TerminalUtils (line 27) | class TerminalUtils: method __init__ (line 61) | def __init__(self): method check_support (line 64) | def check_support(self): method execute (line 86) | def execute(self, command, env=None, colors="default", cwd=None): method launch_snake (line 172) | def launch_snake(self): FILE: bottles/backend/utils/threading.py class RunAsync (line 31) | class RunAsync(threading.Thread): method __init__ (line 37) | def __init__( method __target (line 68) | def __target(self, *args, **kwargs): method cancel (line 109) | def cancel(self): method run_async (line 115) | def run_async(func): FILE: bottles/backend/utils/vdf.py function strip_bom (line 40) | def strip_bom(line): function _re_escape_match (line 61) | def _re_escape_match(m): function _re_unescape_match (line 65) | def _re_unescape_match(m): function _escape (line 69) | def _escape(text): function _unescape (line 73) | def _unescape(text): function parse (line 80) | def parse(fp, mapper=dict, merge_duplicate_keys=True, escaped=True): function loads (line 229) | def loads(s, **kwargs): function load (line 245) | def load(fp, **kwargs): function dumps (line 253) | def dumps(obj, pretty=False, escaped=True): function dump (line 267) | def dump(obj, fp, pretty=False, escaped=True): function _dump_gen (line 285) | def _dump_gen(data, pretty=False, escaped=True, level=0): class BASE_INT (line 309) | class BASE_INT(int_type): method __repr__ (line 310) | def __repr__(self): class UINT_64 (line 314) | class UINT_64(BASE_INT): class INT_64 (line 318) | class INT_64(BASE_INT): class POINTER (line 322) | class POINTER(BASE_INT): class COLOR (line 326) | class COLOR(BASE_INT): function binary_loads (line 343) | def binary_loads( function binary_load (line 364) | def binary_load( function binary_dumps (line 484) | def binary_dumps(obj, alt_format=False): function binary_dump (line 493) | def binary_dump(obj, fp, alt_format=False): function _binary_dump_gen (line 506) | def _binary_dump_gen(obj, level=0, alt_format=False): function vbkv_loads (line 554) | def vbkv_loads(s, mapper=dict, merge_duplicate_keys=True): function vbkv_dumps (line 575) | def vbkv_dumps(obj): FILE: bottles/backend/utils/vulkan.py class VulkanUtils (line 25) | class VulkanUtils: method __init__ (line 38) | def __init__(self): method __get_vk_icd_loaders (line 41) | def __get_vk_icd_loaders(self): method get_vk_icd (line 67) | def get_vk_icd(self, vendor: str, as_string=False): method check_support (line 80) | def check_support(): method test_vulkan (line 84) | def test_vulkan(): FILE: bottles/backend/utils/wine.py class WineUtils (line 4) | class WineUtils: method get_user_dir (line 6) | def get_user_dir(prefix_path: str): FILE: bottles/backend/utils/yaml.py function register_serializer (line 11) | def register_serializer(cls): function dump (line 16) | def dump(data, stream=None, **kwargs): function load (line 28) | def load(stream, Loader=SafeLoader): FILE: bottles/backend/wine/cmd.py class CMD (line 9) | class CMD(WineProgram): method run_batch (line 13) | def run_batch( FILE: bottles/backend/wine/control.py class Control (line 7) | class Control(WineProgram): method load_applet (line 11) | def load_applet(self, name: str): method load_joystick (line 15) | def load_joystick(self): method load_appwiz (line 18) | def load_appwiz(self): method load_inetcpl (line 21) | def load_inetcpl(self): FILE: bottles/backend/wine/drives.py class Drives (line 10) | class Drives: method __init__ (line 11) | def __init__(self, config: BottleConfig): method get_all (line 16) | def get_all(self): method get_drive (line 28) | def get_drive(self, letter: str): method set_drive_path (line 34) | def set_drive_path(self, letter: str, path: str): method remove_drive (line 48) | def remove_drive(self, letter: str): FILE: bottles/backend/wine/eject.py class Eject (line 7) | class Eject(WineProgram): method cdrom (line 11) | def cdrom(self, drive: str, unmount_only: bool = False): method all (line 17) | def all(self): FILE: bottles/backend/wine/executor.py class WineExecutor (line 32) | class WineExecutor: method __init__ (line 42) | def __init__( method run_program (line 133) | def run_program(cls, config: BottleConfig, program: dict, terminal: bo... method _build_placeholder_map (line 165) | def _build_placeholder_map(config: BottleConfig, program: dict) -> dic... method _replace_placeholders (line 196) | def _replace_placeholders( method __get_cwd (line 208) | def __get_cwd(self, cwd: str) -> str | None: method __validate_path (line 223) | def __validate_path(exec_path): method __move_file (line 241) | def __move_file(self, exec_path, move_upd_fn): method __get_exec_type (line 253) | def __get_exec_type(exec_path): method run_cli (line 269) | def run_cli(self): method run (line 294) | def run(self) -> Result: method __launch_with_bridge (line 371) | def __launch_with_bridge(self): method __launch_exe (line 404) | def __launch_exe(self): method __launch_msi (line 430) | def __launch_msi(self): method __launch_batch (line 442) | def __launch_batch(self): method __launch_with_starter (line 453) | def __launch_with_starter(self): method __launch_with_explorer (line 469) | def __launch_with_explorer(self): method __launch_dll (line 485) | def __launch_dll(): method __set_monitors (line 489) | def __set_monitors(self): FILE: bottles/backend/wine/expand.py class Expand (line 7) | class Expand(WineProgram): method extract (line 11) | def extract(self, cabinet: str, filename: str): method extract_all (line 15) | def extract_all(self, cabinet: str, filenames: list): FILE: bottles/backend/wine/explorer.py class Explorer (line 9) | class Explorer(WineProgram): method launch_desktop (line 13) | def launch_desktop( FILE: bottles/backend/wine/hh.py class Hh (line 7) | class Hh(WineProgram): FILE: bottles/backend/wine/icinfo.py class Icinfo (line 7) | class Icinfo(WineProgram): method get_output (line 11) | def get_output(self): method get_dict (line 14) | def get_dict(self): FILE: bottles/backend/wine/msiexec.py class MsiExec (line 9) | class MsiExec(WineProgram): method install (line 13) | def install( method repair (line 33) | def repair( method uninstall (line 81) | def uninstall(self, pkg_path: str, cwd: Optional[str] = None): method apply_patch (line 87) | def apply_patch(self, patch: str, update: bool = False, cwd: Optional[... method uninstall_patch (line 96) | def uninstall_patch( method register_module (line 111) | def register_module(self, module: str, cwd: Optional[str] = None): method unregister_module (line 121) | def unregister_module(self, module: str, cwd: Optional[str] = None): FILE: bottles/backend/wine/net.py class Net (line 9) | class Net(WineProgram): method start (line 13) | def start(self, name: Optional[str] = None): method stop (line 21) | def stop(self, name: Optional[str] = None): method use (line 29) | def use(self, name: Optional[str] = None): method list (line 38) | def list(self): FILE: bottles/backend/wine/notepad.py class Notepad (line 9) | class Notepad(WineProgram): method open (line 13) | def open(self, path: str, as_ansi: bool = False, as_utf16: bool = False): method print (line 21) | def print(self, path: str, printer_name: Optional[str] = None): FILE: bottles/backend/wine/oleview.py class Oleview (line 7) | class Oleview(WineProgram): FILE: bottles/backend/wine/progman.py class Progman (line 7) | class Progman(WineProgram): FILE: bottles/backend/wine/reg.py class RegItem (line 20) | class RegItem: class Reg (line 27) | class Reg(WineProgram): method bulk_add (line 31) | def bulk_add(self, regs: List[RegItem]): method add (line 77) | def add(self, key: str, value: str, data: str, value_type: Optional[st... method remove (line 95) | def remove(self, key: str, value: str): method import_bundle (line 110) | def import_bundle(self, bundle: dict): FILE: bottles/backend/wine/regedit.py class Regedit (line 7) | class Regedit(WineProgram): FILE: bottles/backend/wine/register.py class WinRegister (line 25) | class WinRegister: method __init__ (line 26) | def __init__(self): method new (line 32) | def new(self, path: str): method __get_header (line 41) | def __get_header(self): method __parse_dict (line 48) | def __parse_dict(path: str): method compare (line 104) | def compare(self, path: Optional[str] = None, register: object = None): method __get_diff (line 115) | def __get_diff(self, register: "WinRegister"): method update (line 136) | def update(self, diff: Optional[dict] = None): method export_json (line 163) | def export_json(self, path: str): FILE: bottles/backend/wine/regkeys.py class RegKeys (line 14) | class RegKeys: method __init__ (line 15) | def __init__(self, config: BottleConfig): method lg_set_windows (line 19) | def lg_set_windows(self, version: str): method set_windows (line 29) | def set_windows(self, version: str): method set_app_default (line 156) | def set_app_default(self, version: str, executable: str): method toggle_virtual_desktop (line 173) | def toggle_virtual_desktop(self, state: bool, resolution: str = "800x6... method toggle_wayland_driver (line 197) | def toggle_wayland_driver(self, state: bool): method apply_cmd_settings (line 205) | def apply_cmd_settings(self, scheme=None): method apply_font_smoothing (line 238) | def apply_font_smoothing(self, mode: str = "rgb"): method set_renderer (line 276) | def set_renderer(self, value: str): method set_audio_driver (line 290) | def set_audio_driver(self, driver: Optional[str]): method set_dpi (line 318) | def set_dpi(self, value: int): method set_grab_fullscreen (line 329) | def set_grab_fullscreen(self, state: bool): method set_take_focus (line 340) | def set_take_focus(self, state: bool): method set_decorated (line 351) | def set_decorated(self, state: bool): method set_mouse_warp (line 362) | def set_mouse_warp(self, state: int, executable: str = ""): FILE: bottles/backend/wine/regsvr32.py class Regsvr32 (line 7) | class Regsvr32(WineProgram): method register (line 11) | def register(self, dll: str): method unregister (line 15) | def unregister(self, dll: str): method register_all (line 19) | def register_all(self, dlls: list): method unregister_all (line 23) | def unregister_all(self, dlls: list): FILE: bottles/backend/wine/rundll32.py class RunDLL32 (line 7) | class RunDLL32(WineProgram): FILE: bottles/backend/wine/start.py class Start (line 10) | class Start(WineProgram): method run (line 14) | def run( FILE: bottles/backend/wine/taskmgr.py class Taskmgr (line 7) | class Taskmgr(WineProgram): FILE: bottles/backend/wine/uninstaller.py class Uninstaller (line 9) | class Uninstaller(WineProgram): method get_uuid (line 13) | def get_uuid(self, name: Optional[str] = None): method from_uuid (line 21) | def from_uuid(self, uuid: Optional[str] = None): method from_name (line 29) | def from_name(self, name: str): FILE: bottles/backend/wine/wineboot.py class WineBoot (line 11) | class WineBoot(WineProgram): method send_status (line 15) | def send_status(self, status: int): method force (line 41) | def force(self): method kill (line 44) | def kill(self, force_if_stalled: bool = False): method restart (line 53) | def restart(self): method shutdown (line 56) | def shutdown(self): method update (line 59) | def update(self): method init (line 62) | def init(self): method nv_stop_all_processes (line 65) | def nv_stop_all_processes(self): FILE: bottles/backend/wine/winebridge.py class WineBridge (line 11) | class WineBridge(WineProgram): method __wineserver_status (line 17) | def __wineserver_status(self): method is_available (line 20) | def is_available(self): method get_procs (line 26) | def get_procs(self): method kill_proc (line 58) | def kill_proc(self, pid: str): method kill_proc_by_name (line 62) | def kill_proc_by_name(self, name: str): method run_exe (line 66) | def run_exe(self, exec_path: str): FILE: bottles/backend/wine/winecfg.py class WineCfg (line 11) | class WineCfg(WineProgram): method set_windows_version (line 15) | def set_windows_version(self, version): FILE: bottles/backend/wine/winecommand.py class WineEnv (line 33) | class WineEnv: method __init__ (line 41) | def __init__(self, clean: bool = False, allowed_keys: Optional[Iterabl... method add (line 54) | def add(self, key, value, override=False): method add_bundle (line 62) | def add_bundle(self, bundle, override=False): method get (line 66) | def get(self): method remove (line 73) | def remove(self, key): method is_empty (line 77) | def is_empty(self, key): method concat (line 80) | def concat(self, key, values, sep=":"): method has (line 89) | def has(self, key): function apply_wayland_preferences (line 93) | def apply_wayland_preferences(env: "WineEnv", params) -> None: function _needs_steam_virtual_gamepad_workaround (line 105) | def _needs_steam_virtual_gamepad_workaround(runner_name: Optional[str]) ... class WineCommand (line 129) | class WineCommand: method __init__ (line 135) | def __init__( method _get_config (line 176) | def _get_config(self, config: BottleConfig) -> BottleConfig: method _get_cwd (line 186) | def _get_cwd(self, cwd) -> str: method get_env (line 209) | def get_env( method _get_runner_info (line 507) | def _get_runner_info(self) -> tuple[str, str]: method get_cmd (line 545) | def get_cmd( method _get_gamescope_cmd (line 676) | def _get_gamescope_cmd(self, return_steam_cmd: bool = False) -> str: method _vmtouch_preload (line 713) | def _vmtouch_preload(self): method _vmtouch_free (line 728) | def _vmtouch_free(self): method _get_sandbox_manager (line 747) | def _get_sandbox_manager(self) -> SandboxManager: method run (line 757) | def run(self) -> Result[Optional[str]]: FILE: bottles/backend/wine/winedbg.py class WineDbg (line 15) | class WineDbg(WineProgram): method __wineserver_status (line 20) | def __wineserver_status(self): method get_processes (line 24) | def get_processes(self): method wait_for_process (line 69) | def wait_for_process(self, name: str, timeout: float = 0.5): method kill_process (line 83) | def kill_process(self, pid: Optional[str] = None, name: Optional[str] ... method is_process_alive (line 112) | def is_process_alive(self, pid: Optional[str] = None, name: Optional[s... FILE: bottles/backend/wine/winefile.py class WineFile (line 7) | class WineFile(WineProgram): method open_path (line 11) | def open_path(self, path: str = "C:\\\\"): FILE: bottles/backend/wine/winepath.py class WinePath (line 11) | class WinePath(WineProgram): method is_windows (line 17) | def is_windows(path: str): method is_unix (line 22) | def is_unix(path: str): method __clean_path (line 27) | def __clean_path(path): method to_unix (line 31) | def to_unix(self, path: str, native: bool = False): method to_windows (line 44) | def to_windows(self, path: str, native: bool = False): method to_long (line 67) | def to_long(self, path: str): method to_short (line 73) | def to_short(self, path: str): FILE: bottles/backend/wine/wineprogram.py class WineProgram (line 12) | class WineProgram: method __init__ (line 20) | def __init__(self, config: BottleConfig, silent=False): method get_command (line 28) | def get_command(self, args: Optional[str] = None): method launch (line 39) | def launch( method launch_terminal (line 87) | def launch_terminal(self, args: Optional[str] = None): method launch_minimal (line 90) | def launch_minimal(self, args: Optional[str] = None): FILE: bottles/backend/wine/wineserver.py class WineServer (line 14) | class WineServer(WineProgram): method is_alive (line 18) | def is_alive(self): method wait (line 59) | def wait(self): method kill (line 84) | def kill(self, signal: int = -1): method force_kill (line 93) | def force_kill(self): FILE: bottles/backend/wine/winhelp.py class WinHelp (line 7) | class WinHelp(WineProgram): FILE: bottles/backend/wine/xcopy.py class Xcopy (line 10) | class Xcopy(WineProgram): method copy (line 14) | def copy( FILE: bottles/frontend/cli/cli.py class CLI (line 69) | class CLI: method __init__ (line 72) | def __init__(self): method __clear (line 278) | def __clear(): method __process_args (line 281) | def __process_args(self): method show_info (line 341) | def show_info(self): method list_bottles (line 357) | def list_bottles(self, c_filter=None): method list_components (line 379) | def list_components(self, c_filter=None): method list_programs (line 412) | def list_programs(self): method launch_tool (line 437) | def launch_tool(self): method add_program (line 467) | def add_program(self): method manage_reg (line 521) | def manage_reg(self): method manage_reg_rules (line 550) | def manage_reg_rules(self): method edit_bottle (line 628) | def edit_bottle(self): method new_bottle (line 722) | def new_bottle(self): method run_program (line 750) | def run_program(self): method run_shell (line 822) | def run_shell(self): method generate_standalone (line 842) | def generate_standalone(self): FILE: bottles/frontend/main.py class Bottles (line 84) | class Bottles(Adw.Application): method __init__ (line 90) | def __init__(self): method __register_arguments (line 107) | def __register_arguments(self): method do_command_line (line 166) | def do_command_line(self, command): method __process_uri (line 207) | def __process_uri(self, uri): method do_startup (line 239) | def do_startup(self): method do_activate (line 247) | def do_activate(self): method __quit (line 265) | def __quit(self, *args): method __help (line 277) | def __help(action=None, param=None): method __refresh (line 287) | def __refresh(self, action=None, param=None): method __show_preferences (line 297) | def __show_preferences(self, *args): method __new_bottle (line 301) | def __new_bottle(self, *args): method __show_importer_view (line 304) | def __show_importer_view(self, widget=False, *args): method __show_journal (line 307) | def __show_journal(self, *args): method __on_journal_close (line 319) | def __on_journal_close(self, *_args): method __show_about_dialog (line 323) | def __show_about_dialog(self, *_args): method __create_action (line 396) | def __create_action(self, name, callback, shortcuts=None, param=None): function main (line 416) | def main(version): FILE: bottles/frontend/operation.py class TaskEntry (line 27) | class TaskEntry(Adw.ActionRow): method __init__ (line 35) | def __init__(self, window, title, cancellable=True, **kwargs): method update (line 48) | def update(self, subtitle: str): class TaskSyncer (line 52) | class TaskSyncer: method __init__ (line 57) | def __init__(self, window): method _new_widget (line 60) | def _new_widget(self, title, cancellable=True) -> TaskEntry: method _set_task_btn_visible (line 66) | def _set_task_btn_visible(self, visible: bool): method task_added_handler (line 69) | def task_added_handler(self, res: Result): method task_updated_handler (line 76) | def task_updated_handler(self, res: Result): method task_removed_handler (line 84) | def task_removed_handler(self, res: Result): FILE: bottles/frontend/utils/common.py function open_doc_url (line 21) | def open_doc_url(widget, page): FILE: bottles/frontend/utils/filters.py function add_executable_filters (line 22) | def add_executable_filters(dialog): function add_yaml_filters (line 35) | def add_yaml_filters(dialog): function add_all_filters (line 47) | def add_all_filters(dialog): FILE: bottles/frontend/utils/gtk.py class GtkUtils (line 27) | class GtkUtils: method validate_entry (line 29) | def validate_entry(entry, extend=None) -> bool: method validate_env_var_name (line 53) | def validate_env_var_name(entry, extend=None) -> bool: method reset_entry_apply_button (line 76) | def reset_entry_apply_button(entry) -> None: method run_in_main_loop (line 86) | def run_in_main_loop(func): method get_parent_window (line 101) | def get_parent_window() -> Optional[GObject.Object]: FILE: bottles/frontend/utils/playtime.py class PlaytimeRecord (line 40) | class PlaytimeRecord: class PlaytimeCache (line 52) | class PlaytimeCache: method __init__ (line 55) | def __init__(self, ttl_seconds: int = 30): method get (line 59) | def get(self, bottle_id: str, program_id: str) -> Optional[PlaytimeRec... method set (line 75) | def set(self, bottle_id: str, program_id: str, record: PlaytimeRecord)... method invalidate (line 80) | def invalidate(self, bottle_id: str, program_id: str) -> None: method clear (line 88) | def clear(self) -> None: class PlaytimeService (line 93) | class PlaytimeService: method __init__ (line 100) | def __init__(self, manager): method is_enabled (line 110) | def is_enabled(self) -> bool: method get_program_playtime (line 117) | def get_program_playtime( method get_bottle_playtime (line 177) | def get_bottle_playtime(self, bottle_id: str) -> Optional[PlaytimeReco... method invalidate_program (line 228) | def invalidate_program( method invalidate_cache (line 242) | def invalidate_cache(self) -> None: method get_weekly_data (line 251) | def get_weekly_data( method get_hourly_data (line 294) | def get_hourly_data( method get_monthly_data (line 337) | def get_monthly_data(self, bottle_id: str, program_id: str, year: int)... method get_weekly_session_count (line 378) | def get_weekly_session_count( method get_daily_session_count (line 397) | def get_daily_session_count( method get_yearly_session_count (line 416) | def get_yearly_session_count( method format_playtime (line 436) | def format_playtime(total_seconds: int) -> str: method format_last_played (line 475) | def format_last_played(last_played: Optional[datetime]) -> str: method format_subtitle (line 515) | def format_subtitle(self, record: Optional[PlaytimeRecord]) -> str: FILE: bottles/frontend/utils/sh.py class ShUtils (line 23) | class ShUtils: method is_name (line 25) | def is_name(text: str) -> bool: method split_assignment (line 29) | def split_assignment(text: str) -> tuple[str, str]: FILE: bottles/frontend/views/bottle_dependencies.py class DependenciesView (line 32) | class DependenciesView(Adw.Bin): method __init__ (line 49) | def __init__(self, details, config: BottleConfig, **kwargs): method __search_dependencies (line 73) | def __search_dependencies(self, *_args): method __filter_dependencies (line 82) | def __filter_dependencies(row, terms=None): method empty_list (line 88) | def empty_list(self): method update (line 94) | def update(self, _widget=False, config: Optional[BottleConfig] = None): FILE: bottles/frontend/views/bottle_details.py class BottleView (line 59) | class BottleView(Adw.PreferencesPage): method __init__ (line 122) | def __init__(self, details, config, **kwargs): method __change_page (line 201) | def __change_page(self, _widget, page_name): method __show_versioning_settings (line 214) | def __show_versioning_settings(self, widget): method __update_fvs2_badge (line 219) | def __update_fvs2_badge(self, bottle_path): method on_drop (line 236) | def on_drop(self, drop_target, value: Gdk.FileList, x, y, user_data=No... method on_enter (line 264) | def on_enter(self, drop_target, x, y): method on_leave (line 268) | def on_leave(self, drop_target): method set_config (line 271) | def set_config(self, config: BottleConfig): method add (line 320) | def add(self, widget=False): method update_programs (line 369) | def update_programs( method add_program (line 435) | def add_program(self, widget): method __toggle_removed (line 443) | def __toggle_removed(self, widget=False): method __scan_programs (line 454) | def __scan_programs(self, widget=False): method empty_list (line 457) | def empty_list(self): method _on_program_finished (line 465) | def _on_program_finished(self, data=None): method _on_task_added (line 498) | def _on_task_added(self, data=None): method _on_task_removed (line 514) | def _on_task_removed(self, data=None): method _on_task_updated (line 524) | def _on_task_updated(self, data=None): method _show_backup_progress (line 535) | def _show_backup_progress(self): method _hide_backup_progress (line 541) | def _hide_backup_progress(self): method _update_backup_progress (line 546) | def _update_backup_progress(self, text: str): method populate_updates (line 550) | def populate_updates(self): method __collect_component_updates (line 563) | def __collect_component_updates(self) -> List[Dict[str, object]]: method __collect_dll_component_update (line 608) | def __collect_dll_component_update( method __collect_runner_update (line 627) | def __collect_runner_update(self) -> Optional[Dict[str, object]]: method __collect_winebridge_update (line 653) | def __collect_winebridge_update(self) -> Optional[Dict[str, object]]: method __resolve_runner_catalog (line 676) | def __resolve_runner_catalog(self, runner: str) -> Tuple[List[str], str]: method __match_runner_candidates (line 691) | def __match_runner_candidates(self, runner: str, catalog: dict) -> Lis... method __runner_family (line 700) | def __runner_family(runner: str) -> str: method __get_latest_supported (line 712) | def __get_latest_supported(supported_dict: dict) -> Optional[str]: method __is_version_newer (line 721) | def __is_version_newer(self, latest: str, current: Optional[str]) -> b... method __build_update_row (line 733) | def __build_update_row(self, update: Dict[str, object]) -> Adw.ActionRow: method __run_update (line 755) | def __run_update(self, button, spinner, update): method __ensure_component_available (line 804) | def __ensure_component_available(self, component: str, version: str) -... method __update_dll_component (line 816) | def __update_dll_component( method __update_runner_component (line 850) | def __update_runner_component( method __update_winebridge_component (line 863) | def __update_winebridge_component( method __run_executable_with_args (line 870) | def __run_executable_with_args(self, widget): method run_executable (line 878) | def run_executable(self, widget, args=False): method run_eagle (line 941) | def run_eagle(self, _widget): method __backup (line 970) | def __backup(self, widget, backup_type): method __duplicate (line 1022) | def __duplicate(self, widget): method __upgrade_versioning (line 1030) | def __upgrade_versioning(self): method __confirm_delete (line 1038) | def __confirm_delete(self, widget): method __alert_missing_runner (line 1068) | def __alert_missing_runner(self): method __update_by_env (line 1089) | def __update_by_env(self): method run_winecfg (line 1099) | def run_winecfg(self, widget): method run_debug (line 1103) | def run_debug(self, widget): method run_browse (line 1107) | def run_browse(self, widget): method run_explorer (line 1110) | def run_explorer(self, widget): method run_cmd (line 1114) | def run_cmd(self, widget): method run_snake (line 1119) | def run_snake(widget, event): method run_taskmanager (line 1123) | def run_taskmanager(self, widget): method run_controlpanel (line 1127) | def run_controlpanel(self, widget): method run_uninstaller (line 1131) | def run_uninstaller(self, widget): method run_regedit (line 1135) | def run_regedit(self, widget): method wineboot (line 1139) | def wineboot(self, widget, status): method __set_steam_rules (line 1166) | def __set_steam_rules(self): FILE: bottles/frontend/views/bottle_installers.py class InstallersView (line 30) | class InstallersView(Adw.Bin): method __init__ (line 47) | def __init__(self, details, config, **kwargs): method __search_installers (line 62) | def __search_installers(self, *_args): method __filter_installers (line 71) | def __filter_installers(row, terms=None): method empty_list (line 77) | def empty_list(self): method update (line 83) | def update(self, widget=False, config=None): FILE: bottles/frontend/views/bottle_preferences.py class PreferencesView (line 62) | class PreferencesView(Adw.PreferencesPage): method __init__ (line 133) | def __init__(self, details, config, **kwargs): method __create_unavailable_popover (line 298) | def __create_unavailable_popover(self, command: str | None) -> Gtk.Pop... method __add_unavailable_indicator (line 343) | def __add_unavailable_indicator(self, row: Adw.ActionRow, command: str... method __copy_command_to_clipboard (line 357) | def __copy_command_to_clipboard(self, _widget, command: str): method __check_entry_name (line 366) | def __check_entry_name(self, *_args): method __save_name (line 377) | def __save_name(self, *_args): method choose_cwd (line 405) | def choose_cwd(self, widget): method reset_cwd (line 427) | def reset_cwd(self, *_args): method __update_working_directory_row (line 431) | def __update_working_directory_row(self, working_dir=None): method update_combo_components (line 447) | def update_combo_components(self): method set_config (line 502) | def set_config(self, config: BottleConfig): method __show_display_settings (line 655) | def __show_display_settings(self, widget): method __show_feature_dialog (line 666) | def __show_feature_dialog(self, _widget: Gtk.Widget, dialog: Adw.Windo... method __toggle_feature (line 671) | def __toggle_feature(self, state: bool, key: str) -> None: method __toggle_feature_cb (line 677) | def __toggle_feature_cb(self, _widget: Gtk.Widget, state: bool, key: s... method __toggle_wayland (line 680) | def __toggle_wayland(self, _widget: Gtk.Widget, state: bool) -> None: method __set_sync_type (line 685) | def __set_sync_type(self, *_args): method __toggle_nvapi (line 706) | def __toggle_nvapi(self, widget=False, state=False): method __set_runner (line 721) | def __set_runner(self, *_args): method __dll_component_task_func (line 786) | def __dll_component_task_func(self, *args, **kwargs): method __set_dxvk (line 796) | def __set_dxvk(self, *_args): method __set_vkd3d (line 836) | def __set_vkd3d(self, *_args): method __set_nvapi (line 876) | def __set_nvapi(self, *_args): method __set_latencyflex (line 899) | def __set_latencyflex(self, *_args): method __set_windows (line 932) | def __set_windows(self, *_args): method __set_language (line 958) | def __set_language(self, *_args): method set_dxvk_status (line 969) | def set_dxvk_status(self, status=None, error=None, pending=False): method set_vkd3d_status (line 981) | def set_vkd3d_status(self, status=None, error=None, pending=False): method set_nvapi_status (line 993) | def set_nvapi_status(self, status=None, error=None, pending=False): method set_latencyflex_status (line 1010) | def set_latencyflex_status(self, status=None, error=None, pending=False): method __set_steam_rules (line 1021) | def __set_steam_rules(self): FILE: bottles/frontend/views/bottle_registry_rules.py class RegistryRulesView (line 29) | class RegistryRulesView(Adw.Bin): method __init__ (line 43) | def __init__(self, details, config: BottleConfig, **kwargs): method update (line 59) | def update(self, _widget=False, config: Optional[BottleConfig] = None): method __search_rules (line 66) | def __search_rules(self, *_args): method __filter_rules (line 71) | def __filter_rules(row, terms=None): method __load_rules (line 77) | def __load_rules(self): method __clear_rules (line 91) | def __clear_rules(self): method __open_rule_dialog (line 97) | def __open_rule_dialog(self, *_args, rule: Optional[RegistryRule] = No... method __on_rule_saved (line 104) | def __on_rule_saved(self, *_args): method populate_form (line 107) | def populate_form(self, rule: RegistryRule): method remove_entry (line 110) | def remove_entry(self, entry: RegistryRuleEntry): class RegistryRulesDialog (line 121) | class RegistryRulesDialog(Adw.Dialog): method __init__ (line 142) | def __init__( method present (line 161) | def present(self): method __populate_form (line 164) | def __populate_form(self, rule: RegistryRule): method __save_rule (line 175) | def __save_rule(self, *_args): FILE: bottles/frontend/views/bottle_taskmanager.py class TaskManagerView (line 30) | class TaskManagerView(Gtk.ScrolledWindow): method __init__ (line 41) | def __init__(self, details, config, **kwargs): method set_config (line 75) | def set_config(self, config): method show_kill_btn (line 78) | def show_kill_btn(self, widget): method update (line 86) | def update(self, widget=False, config: Optional[BottleConfig] = None): method sensitive_update (line 123) | def sensitive_update(self, widget): method kill_process (line 133) | def kill_process(self, widget): FILE: bottles/frontend/views/bottle_versioning.py class VersioningView (line 34) | class VersioningView(Adw.PreferencesPage): method __init__ (line 54) | def __init__(self, details, config, **kwargs): method _on_mapped (line 72) | def _on_mapped(self, widget): method _refresh_dirty_state (line 75) | def _refresh_dirty_state(self): method _set_busy (line 92) | def _set_busy(self, busy, label=""): method _refresh_details_badge (line 102) | def _refresh_details_badge(self): method on_branch_changed (line 110) | def on_branch_changed(self, widget, pspec): method show_add_branch_dialog (line 131) | def show_add_branch_dialog(self, widget): method show_manage_branches_dialog (line 135) | def show_manage_branches_dialog(self, widget): method create_branch (line 139) | def create_branch(self, branch_name: str): method empty_list (line 157) | def empty_list(self): method update (line 163) | def update(self, widget=None, config=None, states=None, active=0): method show_add_state_dialog (line 255) | def show_add_state_dialog(self, widget): method add_state (line 259) | def add_state(self, message: str): FILE: bottles/frontend/views/details.py class DetailsView (line 39) | class DetailsView(Adw.Bin): method __init__ (line 66) | def __init__(self, window, config: Optional[BottleConfig] = None, **kw... method set_title (line 102) | def set_title(self, title, subtitle: str = ""): method __on_leaflet_folded (line 110) | def __on_leaflet_folded(self, widget, *_args): method __on_page_change (line 116) | def __on_page_change(self, *_args): method build_pages (line 139) | def build_pages(self): method set_actions (line 197) | def set_actions(self, widget: Gtk.Widget = None): method set_config (line 207) | def set_config(self, config: BottleConfig, rebuild_pages=True): method __on_operations_toggled (line 227) | def __on_operations_toggled(self, widget): method __spin_tasks_toggle (line 231) | def __spin_tasks_toggle(self, widget, *_args): method go_back (line 239) | def go_back(self, _widget=False): method go_back_sidebar (line 242) | def go_back_sidebar(self, *_args): method unload_view (line 245) | def unload_view(self, *_args): method lock_back (line 250) | def lock_back(self): method unlock_back (line 255) | def unlock_back(self): method update_runner_label (line 259) | def update_runner_label(self, runner: str): FILE: bottles/frontend/views/eagle.py class EagleView (line 35) | class EagleView(Gtk.Box): method __init__ (line 53) | def __init__(self, details, config: BottleConfig, **kwargs): method analyze (line 70) | def analyze(self, executable_path: str) -> None: method __reset_steps (line 118) | def __reset_steps(self) -> None: method __create_step_row (line 129) | def __create_step_row(self, text: str) -> Gtk.Box: method __mark_last_step_completed (line 156) | def __mark_last_step_completed(self) -> None: method __set_step_completed (line 164) | def __set_step_completed(self, row: Adw.ActionRow) -> None: method __on_eagle_step (line 173) | def __on_eagle_step(self, res: Result) -> None: method __create_info_row (line 191) | def __create_info_row(self, title: str, subtitle: str, icon: str = Non... method __on_eagle_finished (line 200) | def __on_eagle_finished(self, res: Result) -> None: method __on_launch_clicked (line 497) | def __on_launch_clicked(self, _widget) -> None: method __on_report_clicked (line 550) | def __on_report_clicked(self, _widget) -> None: FILE: bottles/frontend/views/importer.py class ImporterView (line 31) | class ImporterView(Adw.Bin): method __init__ (line 48) | def __init__(self, window, **kwargs): method __find_prefixes (line 68) | def __find_prefixes(self, widget): method __finish (line 97) | def __finish(self, result, error=False): method __import_full_bck (line 103) | def __import_full_bck(self, *_args): method __import_config_bck (line 143) | def __import_config_bck(self, *_args): method _on_task_added (line 176) | def _on_task_added(self, data=None): method _on_task_removed (line 191) | def _on_task_removed(self, data=None): method _on_task_updated (line 201) | def _on_task_updated(self, data=None): method _show_import_progress (line 212) | def _show_import_progress(self): method _hide_import_progress (line 218) | def _hide_import_progress(self): method _update_import_progress (line 223) | def _update_import_progress(self, text: str): method go_back (line 227) | def go_back(self, *_args): FILE: bottles/frontend/views/library.py class LibraryView (line 29) | class LibraryView(Adw.Bin): method __init__ (line 41) | def __init__(self, window, **kwargs): method update (line 47) | def update(self): method remove_entry (line 65) | def remove_entry(self, entry): method __delete_entry (line 85) | def __delete_entry(self, entry): method go_back (line 89) | def go_back(self, widget=False): FILE: bottles/frontend/views/list.py class BottlesBottleRow (line 33) | class BottlesBottleRow(Adw.ActionRow): method __init__ (line 44) | def __init__(self, window, config: BottleConfig, **kwargs): method run_executable (line 83) | def run_executable(self, *_args): method show_details (line 115) | def show_details(self, widget=None, config=None): method disable (line 121) | def disable(self): class BottleView (line 127) | class BottleView(Adw.Bin): method __init__ (line 145) | def __init__(self, window, arg_bottle=None, **kwargs): method __search_bottles (line 165) | def __search_bottles(self, widget, event=None, data=None): method __filter_bottles (line 175) | def __filter_bottles(row, terms=None): method update_bottles_list (line 179) | def update_bottles_list(self, *args) -> None: method show_page (line 209) | def show_page(self, page: str) -> None: method disable_bottle (line 213) | def disable_bottle(self, config): FILE: bottles/frontend/views/loading.py class LoadingView (line 29) | class LoadingView(Adw.Bin): method __init__ (line 40) | def __init__(self, **kwargs): method add_fetched (line 46) | def add_fetched(self, res: Result): method go_offline (line 56) | def go_offline(self, _widget): FILE: bottles/frontend/views/new_bottle_dialog.py class BottlesCheckRow (line 35) | class BottlesCheckRow(Adw.ActionRow): class BottlesNewBottleDialog (line 55) | class BottlesNewBottleDialog(Adw.Dialog): method __init__ (line 85) | def __init__(self, **kwargs: Any) -> None: method __check_validity (line 137) | def __check_validity(self, *_args: Any) -> tuple[bool, bool]: method __check_entry_name (line 142) | def __check_entry_name(self, *_args: Any) -> None: method __entry_activated (line 153) | def __entry_activated(self, *_args: Any) -> None: method __remove_notifications (line 157) | def __remove_notifications(self, *_args: Any) -> None: method __choose_env_recipe (line 160) | def __choose_env_recipe(self, *_args: Any) -> None: method __choose_path (line 196) | def __choose_path(self, *_args: Any) -> None: method create_bottle (line 217) | def create_bottle(self, *_args: Any) -> None: method update_output (line 252) | def update_output(self, text: str) -> None: method __create_step_row (line 281) | def __create_step_row(self, text: str) -> Adw.ActionRow: method __mark_last_step_completed (line 295) | def __mark_last_step_completed(self) -> None: method __set_step_completed (line 301) | def __set_step_completed(self, row: Adw.ActionRow) -> None: method finish (line 307) | def finish(self, result: Optional[Result], error=None) -> None: method __reset_env_recipe (line 375) | def __reset_env_recipe(self, *_args: Any) -> None: method __reset_path (line 380) | def __reset_path(self, *_args: Any) -> None: method __close_dialog (line 385) | def __close_dialog(self, *_args: Any) -> None: method __prompt_cancel_confirmation (line 397) | def __prompt_cancel_confirmation( method __cancel_creation (line 425) | def __cancel_creation(self) -> None: method __finalize_close (line 449) | def __finalize_close(self) -> None: method __clear_creation_task (line 453) | def __clear_creation_task(self) -> None: method __reset_creation_steps (line 464) | def __reset_creation_steps(self) -> None: method __build_cleanup_config (line 473) | def __build_cleanup_config(self) -> BottleConfig: method __start_cancellation_cleanup (line 489) | def __start_cancellation_cleanup(self) -> None: method __on_cleanup_finished (line 501) | def __on_cleanup_finished(self, success: Optional[bool], error=None) -... FILE: bottles/frontend/views/preferences.py class PreferencesWindow (line 33) | class PreferencesWindow(Adw.PreferencesWindow): method __init__ (line 82) | def __init__(self, window, **kwargs): method empty_list (line 251) | def empty_list(self): method ui_update (line 258) | def ui_update(self): method __toggle_night (line 268) | def __toggle_night(self, widget, state): method __toggle_update_date (line 274) | def __toggle_update_date(self, widget, state): method __toggle_rc (line 277) | def __toggle_rc(self, widget, state): method __on_eagle_limit_changed (line 280) | def __on_eagle_limit_changed(self, spin_row, _pspec): method __open_steam_proton_doc (line 283) | def __open_steam_proton_doc(self, widget): method __choose_bottles_path (line 288) | def __choose_bottles_path(self, widget): method handle_restart (line 310) | def handle_restart(self, widget, response_id): method prompt_restart (line 316) | def prompt_restart(self, force=False): method __reset_bottles_path (line 337) | def __reset_bottles_path(self, widget): method __on_personal_repo_changed (line 343) | def __on_personal_repo_changed(self, row, repo_name): method __on_personal_repo_apply (line 349) | def __on_personal_repo_apply(self, row, repo_name): method __persist_personal_repositories (line 359) | def __persist_personal_repositories(self): method __on_audio_driver_setting_changed (line 371) | def __on_audio_driver_setting_changed(self, *_args): method __sync_audio_driver_selection (line 374) | def __sync_audio_driver_selection(self, *_args): method __on_audio_driver_selected (line 385) | def __on_audio_driver_selected(self, combo, _pspec): method __display_unstable_candidate (line 400) | def __display_unstable_candidate(self, component=["", {"Channel": "uns... method __populate_component_list (line 405) | def __populate_component_list( method populate_dlls_list (line 445) | def populate_dlls_list(self): method __populate_runners_helper (line 461) | def __populate_runners_helper( method populate_runners_list (line 520) | def populate_runners_list(self): method populate_cache_list (line 637) | def populate_cache_list(self): method __render_cache_details (line 651) | def __render_cache_details(self, cache_details: dict): method __populate_template_cache_rows (line 671) | def __populate_template_cache_rows(self, templates: list[dict]): method __format_template_title (line 715) | def __format_template_title(self, template: dict) -> str: method __format_template_subtitle (line 719) | def __format_template_subtitle(self, template: dict) -> str: method __format_env_label (line 731) | def __format_env_label(self, env: str) -> str: method __confirm_clear_all_caches (line 744) | def __confirm_clear_all_caches(self, widget): method __confirm_clear_temp_cache (line 755) | def __confirm_clear_temp_cache(self, widget): method __confirm_clear_templates_cache (line 766) | def __confirm_clear_templates_cache(self, widget): method __confirm_clear_template (line 777) | def __confirm_clear_template(self, widget, template: dict): method __confirm_cache_action (line 792) | def __confirm_cache_action(self, title: str, description: str, action,... method __cache_action_finished (line 819) | def __cache_action_finished(self, result, button=None): FILE: bottles/frontend/widgets/component.py class ComponentEntry (line 34) | class ComponentEntry(Adw.ActionRow): method __init__ (line 53) | def __init__( method download (line 95) | def download(self, widget): method uninstall (line 150) | def uninstall(self, widget): method run_browse (line 168) | def run_browse(self, widget): method update_progress (line 175) | def update_progress( method set_err (line 219) | def set_err(self, msg=None, retry=True): method set_installed (line 231) | def set_installed(self): method set_uninstalled (line 240) | def set_uninstalled(self): method cancel_download (line 250) | def cancel_download(self, widget): method _restore_pre_download_visibility (line 261) | def _restore_pre_download_visibility(self): method _set_spinner_active (line 284) | def _set_spinner_active(self, active: bool): method _sanitize_progress_value (line 294) | def _sanitize_progress_value(value: Optional[int]) -> int: method _clear_download_context (line 307) | def _clear_download_context(self): class ComponentExpander (line 313) | class ComponentExpander(Adw.ExpanderRow): method __init__ (line 314) | def __init__(self, title, subtitle=None, **kwargs): FILE: bottles/frontend/widgets/dependency.py class DependencyEntry (line 33) | class DependencyEntry(Adw.ActionRow): method __init__ (line 49) | def __init__(self, window, config: BottleConfig, dependency, plain=Fal... method open_manifest (line 111) | def open_manifest(self, _widget): method open_license (line 124) | def open_license(self, _widget): method install_dependency (line 134) | def install_dependency(self, _widget): method remove_dependency (line 160) | def remove_dependency(self, _widget): method set_install_status (line 174) | def set_install_status(self, result: Result, error=None): method set_err (line 201) | def set_err(self): method set_installed (line 213) | def set_installed(self, installer=True, removed=False): FILE: bottles/frontend/widgets/executable.py class ExecButton (line 24) | class ExecButton(Gtk.Button): method __init__ (line 25) | def __init__(self, parent, data, config, **kwargs): method on_clicked (line 34) | def on_clicked(self, widget): FILE: bottles/frontend/widgets/importer.py class ImporterEntry (line 28) | class ImporterEntry(Adw.ActionRow): method __init__ (line 39) | def __init__(self, im_manager, prefix, **kwargs): method browse_wineprefix (line 60) | def browse_wineprefix(self, widget): method import_wineprefix (line 63) | def import_wineprefix(self, widget): FILE: bottles/frontend/widgets/installer.py class InstallerEntry (line 28) | class InstallerEntry(Adw.ActionRow): method __init__ (line 40) | def __init__(self, window, config, installer, **kwargs): method __open_manifest (line 78) | def __open_manifest(self, widget): method __open_review (line 89) | def __open_review(self, widget): method __open_bug_report (line 102) | def __open_bug_report(widget): method __execute_installer (line 106) | def __execute_installer(self, widget): FILE: bottles/frontend/widgets/library.py class LibraryEntryInitializationError (line 34) | class LibraryEntryInitializationError(Exception): class LibraryEntry (line 41) | class LibraryEntry(Gtk.Box): method __init__ (line 59) | def __init__(self, library, uuid, entry, *args, **kwargs): method __get_config (line 127) | def __get_config(self): method __get_program (line 137) | def __get_program(self): method __remove_from_library (line 149) | def __remove_from_library(self): method __handle_initialization_failure (line 153) | def __handle_initialization_failure(self, message: str): method __reset_buttons (line 160) | def __reset_buttons(self, result: Result | bool = None, error=False): method __is_alive (line 176) | def __is_alive(self): method __remove_entry (line 197) | def __remove_entry(self, *args): method run_executable (line 200) | def run_executable(self, widget, with_terminal=False): method run_steam (line 210) | def run_steam(self, widget): method stop_process (line 213) | def stop_process(self, widget): method __on_motion_enter (line 219) | def __on_motion_enter(self, *args): method __on_motion_leave (line 223) | def __on_motion_leave(self, *args): method hide (line 229) | def hide(self): method show (line 232) | def show(self): FILE: bottles/frontend/widgets/playtimechart_hourly.py class PlaytimeChartHourly (line 39) | class PlaytimeChartHourly(Gtk.Box): method __init__ (line 48) | def __init__(self, **kwargs: Any) -> None: method _get_font_scale (line 73) | def _get_font_scale(self) -> float: method _on_width_changed (line 82) | def _on_width_changed(self, *_args: Any) -> None: method _on_style_changed (line 88) | def _on_style_changed(self, *_args: Any) -> None: method _build_ui (line 98) | def _build_ui(self) -> None: method set_hourly_data (line 112) | def set_hourly_data( method _render_chart (line 125) | def _render_chart(self, max_hours_override: Optional[int] = None) -> N... method _draw_hour_labels (line 199) | def _draw_hour_labels( method _on_chart_motion (line 240) | def _on_chart_motion( method _on_chart_tooltip (line 247) | def _on_chart_tooltip( method _draw_chart (line 278) | def _draw_chart( method _format_time (line 466) | def _format_time(self, minutes: int) -> str: FILE: bottles/frontend/widgets/playtimechart_monthly.py class PlaytimeChartMonthly (line 39) | class PlaytimeChartMonthly(Gtk.Box): method __init__ (line 48) | def __init__(self, **kwargs: Any) -> None: method _get_font_scale (line 72) | def _get_font_scale(self) -> float: method _on_width_changed (line 81) | def _on_width_changed(self, *_args: Any) -> None: method _on_style_changed (line 87) | def _on_style_changed(self, *_args: Any) -> None: method _build_ui (line 97) | def _build_ui(self) -> None: method set_monthly_data (line 112) | def set_monthly_data( method _render_chart (line 125) | def _render_chart(self, max_hours_override: Optional[int] = None) -> N... method _draw_month_labels (line 210) | def _draw_month_labels( method _on_chart_motion (line 263) | def _on_chart_motion( method _on_chart_tooltip (line 270) | def _on_chart_tooltip( method _draw_chart (line 302) | def _draw_chart( method _format_time (line 489) | def _format_time(self, minutes: int) -> str: FILE: bottles/frontend/widgets/playtimechart_weekly.py class PlaytimeChartWeekly (line 38) | class PlaytimeChartWeekly(Gtk.Box): method __init__ (line 47) | def __init__(self, **kwargs: Any) -> None: method _get_font_scale (line 71) | def _get_font_scale(self) -> float: method _on_width_changed (line 80) | def _on_width_changed(self, *_args: Any) -> None: method _on_style_changed (line 86) | def _on_style_changed(self, *_args: Any) -> None: method _build_ui (line 96) | def _build_ui(self) -> None: method set_daily_data (line 111) | def set_daily_data( method _render_chart (line 124) | def _render_chart(self, max_hours_override: Optional[int] = None) -> N... method _draw_day_labels (line 207) | def _draw_day_labels( method _on_chart_motion (line 245) | def _on_chart_motion( method _on_chart_tooltip (line 252) | def _on_chart_tooltip( method _draw_chart (line 284) | def _draw_chart( method _format_time (line 468) | def _format_time(self, minutes: int) -> str: FILE: bottles/frontend/widgets/program.py class ProgramEntry (line 42) | class ProgramEntry(Adw.ActionRow): method __init__ (line 66) | def __init__( method __update_subtitle (line 136) | def __update_subtitle(self): method show_launch_options_view (line 172) | def show_launch_options_view(self, _widget=False): method show_playtime_stats (line 181) | def show_playtime_stats(self, _widget=False): method __reset_buttons (line 201) | def __reset_buttons(self, result: bool | Result = False, _error=False): method __is_alive (line 219) | def __is_alive(self): method run_executable (line 236) | def run_executable(self, _widget, with_terminal=False): method run_steam (line 248) | def run_steam(self, _widget): method stop_process (line 255) | def stop_process(self, widget): method update_programs (line 263) | def update_programs(self, _result=False, _error=False): method uninstall_program (line 266) | def uninstall_program(self, _widget): method hide_program (line 274) | def hide_program(self, _widget=None, update=True): method save_program (line 288) | def save_program(self): method remove_program (line 296) | def remove_program(self, _widget=None): method rename_program (line 307) | def rename_program(self, _widget): method browse_program_folder (line 346) | def browse_program_folder(self, _widget): method add_entry (line 352) | def add_entry(self, _widget): method add_to_library (line 368) | def add_to_library(self, _widget): method add_to_steam (line 393) | def add_to_steam(self, _widget): method update_playtime (line 408) | def update_playtime(self, playtime_service): FILE: bottles/frontend/widgets/state.py class StateEntry (line 31) | class StateEntry(Adw.ActionRow): method __init__ (line 43) | def __init__(self, parent, config, state, active, **kwargs): method set_state (line 86) | def set_state(self, widget): method set_completed (line 131) | def set_completed(self, result, error=False): FILE: bottles/frontend/windows/bottlepicker.py class BottleEntry (line 27) | class BottleEntry(Adw.ActionRow): method __init__ (line 28) | def __init__(self, config: BottleConfig): class BottlePickerDialog (line 35) | class BottlePickerDialog(Adw.ApplicationWindow): method __init__ (line 50) | def __init__(self, arg_exe, **kwargs): method __close (line 66) | def __close(*_args): method __select (line 69) | def __select(self, *_args): method __open (line 84) | def __open(self, *_args): FILE: bottles/frontend/windows/crash.py class SimilarReportEntry (line 28) | class SimilarReportEntry(Adw.ActionRow): method __init__ (line 29) | def __init__(self, report: dict): method __on_btn_report_clicked (line 40) | def __on_btn_report_clicked(button, report): class CrashReportDialog (line 49) | class CrashReportDialog(Adw.Window): method __init__ (line 62) | def __init__(self, window, log, **kwargs): method __on_unlock_send (line 105) | def __on_unlock_send(self, widget): method __get_similarity (line 113) | def __get_similarity(log: str, issue: dict) -> int: method __get_similar_issues (line 137) | def __get_similar_issues(log): method __open_github (line 164) | def __open_github(self, widget, log): FILE: bottles/frontend/windows/dependency_install.py class DependencyInstallDialog (line 28) | class DependencyInstallDialog(Adw.Window): method __init__ (line 40) | def __init__(self, parent, dependency_name: str, **kwargs): method __create_step_row (line 55) | def __create_step_row(self, text: str) -> Adw.ActionRow: method __mark_last_step_completed (line 69) | def __mark_last_step_completed(self) -> None: method __scroll_to_bottom (line 77) | def __scroll_to_bottom(self) -> bool: method __on_close_clicked (line 82) | def __on_close_clicked(self, *_args): method add_step (line 86) | def add_step(self, text: str) -> None: method update_progress (line 100) | def update_progress(self, fraction: Optional[float]) -> None: method finish (line 115) | def finish(self, success: bool) -> None: FILE: bottles/frontend/windows/depscheck.py class DependenciesCheckDialog (line 22) | class DependenciesCheckDialog(Adw.Window): method __init__ (line 30) | def __init__(self, window, **kwargs): method __quit (line 37) | def __quit(self, *_args): FILE: bottles/frontend/windows/display.py class DisplayDialog (line 34) | class DisplayDialog(Adw.Window): method __init__ (line 49) | def __init__( method __update (line 68) | def __update(self, config): method __idle_save (line 93) | def __idle_save(self, *args): method __save (line 270) | def __save(self, *args): FILE: bottles/frontend/windows/dlloverrides.py class DLLEntry (line 26) | class DLLEntry(Adw.ComboRow): method __init__ (line 34) | def __init__(self, window, config, override, **kwargs): method __set_override_type (line 55) | def __set_override_type(self, *_args): method __remove_override (line 69) | def __remove_override(self, *_args): class DLLOverridesDialog (line 85) | class DLLOverridesDialog(Adw.PreferencesWindow): method __init__ (line 95) | def __init__(self, window, config, **kwargs): method __check_override (line 110) | def __check_override(self, *_args): method __save_override (line 133) | def __save_override(self, *_args): method __populate_overrides_list (line 152) | def __populate_overrides_list(self): FILE: bottles/frontend/windows/drives.py class DriveEntry (line 27) | class DriveEntry(Adw.ActionRow): method __init__ (line 36) | def __init__(self, parent, drive, **kwargs): method __choose_path (line 58) | def __choose_path(self, *_args): method __remove (line 79) | def __remove(self, *_args): class DrivesDialog (line 87) | class DrivesDialog(Adw.Window): method __init__ (line 99) | def __init__(self, window, config, **kwargs): method __save (line 113) | def __save(self, *_args): method __populate_combo_and_drives (line 122) | def __populate_combo_and_drives(self): method add_combo_letter (line 138) | def add_combo_letter(self, letter: str): FILE: bottles/frontend/windows/duplicate.py class DuplicateDialog (line 28) | class DuplicateDialog(Adw.Window): method __init__ (line 40) | def __init__(self, parent, **kwargs): method __check_entry_name (line 53) | def __check_entry_name(self, *_args): method __duplicate_bottle (line 62) | def __duplicate_bottle(self, widget): method finish (line 83) | def finish(self, result, error=None): method pulse (line 88) | def pulse(self): FILE: bottles/frontend/windows/envvars.py class EnvironmentVariableEntryRow (line 32) | class EnvironmentVariableEntryRow(Adw.EntryRow): method __init__ (line 39) | def __init__(self, parent, env, **kwargs): method __customize_layout (line 56) | def __customize_layout(self): method __save (line 80) | def __save(self, *_args): method __remove (line 100) | def __remove(self, *_args): method __remove_config (line 108) | def __remove_config(self, *_args): method __validate (line 118) | def __validate(self, *_args): class InheritedEnvironmentVariableRow (line 128) | class InheritedEnvironmentVariableRow(Adw.ActionRow): method __init__ (line 133) | def __init__(self, parent, name: str, **kwargs): method __remove (line 140) | def __remove(self, *_args): class EnvironmentVariablesDialog (line 145) | class EnvironmentVariablesDialog(Adw.Dialog): method __init__ (line 158) | def __init__(self, window, config, **kwargs): method present (line 181) | def present(self): method __validate (line 184) | def __validate(self, *_args): method __save_var (line 189) | def __save_var(self, *_args): method remove_entry (line 206) | def remove_entry(self, _entry): method __set_description (line 210) | def __set_description(self): method __populate_vars_list (line 214) | def __populate_vars_list(self): method __validate_inherited (line 226) | def __validate_inherited(self, *_args): method __toggle_inherited_limit (line 229) | def __toggle_inherited_limit(self, *_args): method __populate_inherited_list (line 246) | def __populate_inherited_list(self): method __update_inherited_placeholder (line 260) | def __update_inherited_placeholder(self): method __update_inherited_state (line 275) | def __update_inherited_state(self): method __save_inherited_var (line 281) | def __save_inherited_var(self, *_args): method remove_inherited_entry (line 303) | def remove_inherited_entry(self, entry: InheritedEnvironmentVariableRow): FILE: bottles/frontend/windows/exclusionpatterns.py class ExclusionPatternEntry (line 24) | class ExclusionPatternEntry(Adw.ActionRow): method __init__ (line 31) | def __init__(self, parent, pattern, **kwargs): method __remove (line 45) | def __remove(self, *_args): class ExclusionPatternsDialog (line 61) | class ExclusionPatternsDialog(Adw.Window): method __init__ (line 69) | def __init__(self, window, config, **kwargs): method __save_var (line 83) | def __save_var(self, *_args): method __populate_patterns_list (line 98) | def __populate_patterns_list(self): FILE: bottles/frontend/windows/funding.py class FundingDialog (line 24) | class FundingDialog(Adw.Window): method __init__ (line 29) | def __init__(self, parent, **kwargs): method on_donate_clicked (line 77) | def on_donate_clicked(self, btn): method on_dont_show_clicked (line 82) | def on_dont_show_clicked(self, btn): method __on_close_request (line 86) | def __on_close_request(self, *args): FILE: bottles/frontend/windows/gamescope.py class GamescopeDialog (line 22) | class GamescopeDialog(Adw.Window): method __init__ (line 43) | def __init__(self, window, config, **kwargs): method __change_wtype (line 59) | def __change_wtype(self, widget, wtype): method __update (line 72) | def __update(self, config): method __idle_save (line 93) | def __idle_save(self, *_args): method __save (line 119) | def __save(self, *_args): FILE: bottles/frontend/windows/generic.py class MessageDialog (line 23) | class MessageDialog(Gtk.MessageDialog): method __init__ (line 24) | def __init__(self, window, message=_("An error has occurred."), log=Fa... class SourceDialog (line 48) | class SourceDialog(Adw.Window): method __init__ (line 49) | def __init__(self, parent, title, message, buttons=None, lang="yaml", ... method __build_ui (line 64) | def __build_ui(self): method __copy_text (line 107) | def __copy_text(self, widget): class TextDialog (line 112) | class TextDialog(Adw.Window): method __init__ (line 113) | def __init__(self, parent, title, message, **kwargs): method __build_ui (line 123) | def __build_ui(self): method __copy_text (line 146) | def __copy_text(self, widget): class WebDialog (line 151) | class WebDialog(Adw.Window): method __init__ (line 157) | def __init__(self, parent, title, message): method __build_ui (line 169) | def __build_ui(self): method __copy_text (line 190) | def __copy_text(self, widget): FILE: bottles/frontend/windows/generic_cli.py class MessageDialog (line 1) | class MessageDialog: method __init__ (line 2) | def __init__( FILE: bottles/frontend/windows/installer.py class LocalResourceEntry (line 28) | class LocalResourceEntry(Adw.ActionRow): method __init__ (line 36) | def __init__(self, parent, resource, **kwargs): method __choose_path (line 48) | def __choose_path(self, *_args): class InstallerDialog (line 74) | class InstallerDialog(Adw.Window): method __init__ (line 100) | def __init__(self, window, config, installer, **kwargs): method __set_icon (line 132) | def __set_icon(self): method __check_resources (line 151) | def __check_resources(self, *_args): method __install (line 166) | def __install(self, *_args): method __installed (line 192) | def __installed(self): method __error (line 198) | def __error(self, error): method next_step (line 203) | def next_step(self, detail=None): method set_steps (line 216) | def set_steps(self, steps): method add_resource (line 221) | def add_resource(self, resource, path): method __close (line 226) | def __close(self, *_args): FILE: bottles/frontend/windows/journal.py class JournalDialog (line 27) | class JournalDialog(Adw.Window): method __init__ (line 42) | def __init__(self, **kwargs): method __setup_tree_view (line 64) | def __setup_tree_view(self): method populate_tree_view (line 102) | def populate_tree_view(self, query="", severity=None): method on_search_changed (line 151) | def on_search_changed(self, entry): method filter_results (line 154) | def filter_results(self, _, severity): method __get_cell_data_func (line 169) | def __get_cell_data_func(self, column_index): method __populate_cell (line 175) | def __populate_cell(self, renderer, model, iter_, column_index): FILE: bottles/frontend/windows/launchoptions.py class LaunchOptionsDialog (line 29) | class LaunchOptionsDialog(Adw.Window): method __set_disabled_switches (line 70) | def __set_disabled_switches(self): method __init__ (line 86) | def __init__(self, parent, config, program, **kwargs): method __check_override (line 206) | def __check_override(self, widget, state, action, name): method get_config (line 210) | def get_config(self): method __set_override (line 213) | def __set_override(self, name, program_value, global_value): method __idle_save (line 220) | def __idle_save(self, *_args): method __save (line 254) | def __save(self, *_args): method __choose_pre_script (line 257) | def __choose_pre_script(self, *_args): method __choose_post_script (line 290) | def __choose_post_script(self, *_args): method __reset_pre_script (line 321) | def __reset_pre_script(self, *_args): method __reset_post_script (line 329) | def __reset_post_script(self, *_args): method __choose_cwd (line 337) | def __choose_cwd(self, *_args): method __reset_cwd (line 366) | def __reset_cwd(self, *_args): method __reset_defaults (line 376) | def __reset_defaults(self, *_args): FILE: bottles/frontend/windows/mangohud.py class MangoHudDialog (line 26) | class MangoHudDialog(Adw.Window): method __init__ (line 33) | def __init__(self, window, config, **kwargs): method __update (line 47) | def __update(self, config): method __idle_save (line 51) | def __idle_save(self, *_args): method __save (line 66) | def __save(self, *_args): FILE: bottles/frontend/windows/onboard.py class OnboardDialog (line 28) | class OnboardDialog(Adw.Dialog): method __init__ (line 57) | def __init__(self, window, **kwargs): method __theme_changed (line 81) | def __theme_changed(self, settings, key): method __get_page (line 86) | def __get_page(self, index): method __page_changed (line 89) | def __page_changed(self, widget=False, index=0, *_args): method __quit (line 112) | def __quit(widget=False): method __install_runner (line 115) | def __install_runner(self, widget): method __previous_page (line 148) | def __previous_page(self, widget=False): method __next_page (line 153) | def __next_page(self, widget=False): method __handle_progress (line 158) | def __handle_progress(self, **kwargs): method __update_progress (line 162) | def __update_progress( method __update_progress (line 190) | def __update_progress( method __close_dialog (line 217) | def __close_dialog(self, widget): FILE: bottles/frontend/windows/playtimegraph.py class PlaytimeGraphDialog (line 35) | class PlaytimeGraphDialog(Adw.Window): method __init__ (line 56) | def __init__( method __on_view_toggled (line 88) | def __on_view_toggled(self, button: Gtk.ToggleButton, view: str) -> None: method __on_prev_week (line 108) | def __on_prev_week(self, _widget: Gtk.Button) -> None: method __on_next_week (line 113) | def __on_next_week(self, _widget: Gtk.Button) -> None: method __load_data (line 120) | def __load_data(self) -> None: method __get_weekly_data (line 288) | def __get_weekly_data(self) -> List[int]: method __get_hourly_data (line 303) | def __get_hourly_data(self) -> List[int]: method __get_monthly_data (line 319) | def __get_monthly_data(self) -> List[int]: method __render_chart (line 334) | def __render_chart(self, data: List[int]) -> None: method __format_time (line 359) | def __format_time(self, minutes: int, allow_less_than_minute: bool = F... FILE: bottles/frontend/windows/protonalert.py class ProtonAlertDialog (line 22) | class ProtonAlertDialog(Adw.Window): method __init__ (line 33) | def __init__(self, window, callback, **kwargs): method __callback (line 44) | def __callback(self, _, status): method __toggle_btn_use (line 49) | def __toggle_btn_use(self, widget, *_args): FILE: bottles/frontend/windows/registry_rules.py class RegistryRuleEntry (line 25) | class RegistryRuleEntry(Adw.ActionRow): method __init__ (line 34) | def __init__(self, parent, rule: RegistryRule, config, manager, **kwar... method _set_subtitle (line 53) | def _set_subtitle(self): method __apply (line 65) | def __apply(self, *_args): method __delete (line 71) | def __delete(self, *_args): method __edit (line 76) | def __edit(self, *_args): FILE: bottles/frontend/windows/rename.py class RenameDialog (line 22) | class RenameDialog(Adw.Window): method __init__ (line 33) | def __init__(self, window, name, on_save, **kwargs): method __on_save (line 52) | def __on_save(self, *_args): method __close_window (line 57) | def __close_window(self, *_args): method on_change (line 60) | def on_change(self, *_args): FILE: bottles/frontend/windows/sandbox.py class SandboxDialog (line 22) | class SandboxDialog(Adw.Window): method __init__ (line 31) | def __init__(self, window, config, **kwargs): method __set_flag (line 45) | def __set_flag(self, widget, state, flag): method __update (line 50) | def __update(self, config): FILE: bottles/frontend/windows/upgradeversioning.py class UpgradeVersioningDialog (line 26) | class UpgradeVersioningDialog(Adw.Window): method __init__ (line 38) | def __init__(self, parent, **kwargs): method __upgrade (line 50) | def __upgrade(self, widget): method __proceed (line 68) | def __proceed(self, widget): method finish (line 73) | def finish(self, result, error=False): method pulse (line 78) | def pulse(self): FILE: bottles/frontend/windows/versioning_branch.py class VersioningBranchDialog (line 22) | class VersioningBranchDialog(Adw.PreferencesDialog): method __init__ (line 27) | def __init__(self, parent, callback, **kwargs): method on_apply (line 34) | def on_apply(self, widget): FILE: bottles/frontend/windows/versioning_commit.py class VersioningCommitDialog (line 22) | class VersioningCommitDialog(Adw.PreferencesDialog): method __init__ (line 27) | def __init__(self, parent, callback, **kwargs): method on_apply (line 34) | def on_apply(self, widget): FILE: bottles/frontend/windows/versioning_manage_branches.py class VersioningManageBranchesDialog (line 24) | class VersioningManageBranchesDialog(Adw.PreferencesDialog): method __init__ (line 29) | def __init__(self, parent, versioning_view, **kwargs): method refresh_branches (line 37) | def refresh_branches(self): method on_delete_branch (line 68) | def on_delete_branch(self, button, branch_name): FILE: bottles/frontend/windows/versioning_settings.py class VersioningSettingsDialog (line 27) | class VersioningSettingsDialog(Adw.Window): method __init__ (line 34) | def __init__(self, window, config: BottleConfig, **kwargs): method __toggle_feature (line 51) | def __toggle_feature(self, state: bool, key: str) -> None: method __toggle_feature_cb (line 57) | def __toggle_feature_cb(self, _widget: Gtk.Widget, state: bool, key: s... FILE: bottles/frontend/windows/vkbasalt.py class VkBasaltSettings (line 39) | class VkBasaltSettings: class VkBasaltDialog (line 61) | class VkBasaltDialog(Adw.Window): method __init__ (line 85) | def __init__(self, window, config, **kwargs): method __idle_save (line 150) | def __idle_save(self, *args): method __save (line 181) | def __save(self, *args): method __check_state (line 185) | def __check_state(self, *args): method __default (line 189) | def __default(self, widget, state): method __change_edge_detection_type (line 195) | def __change_edge_detection_type(self, widget, edge_detection_type): method effects_widgets (line 210) | def effects_widgets(self, status=True): method check_effects_states (line 215) | def check_effects_states(self): method get_subeffects (line 222) | def get_subeffects(self, VkBasaltSettings): method set_effects (line 247) | def set_effects(self): FILE: bottles/frontend/windows/vmtouch.py class VmtouchDialog (line 24) | class VmtouchDialog(Adw.Window): method __init__ (line 34) | def __init__(self, window, config, **kwargs): method __update (line 48) | def __update(self, config): method __idle_save (line 51) | def __idle_save(self, *_args): method __save (line 64) | def __save(self, *_args): FILE: bottles/frontend/windows/window.py class BottlesWindow (line 58) | class BottlesWindow(Adw.ApplicationWindow): method __init__ (line 81) | def __init__(self, arg_bottle, **kwargs): method __schedule_donate_icon_swap (line 196) | def __schedule_donate_icon_swap(self): method __on_donate_icon_timeout (line 199) | def __on_donate_icon_timeout(self): method __resolve_donate_icon_name (line 206) | def __resolve_donate_icon_name(self) -> Optional[str]: method on_close_request (line 231) | def on_close_request(self, *args): method network_changed_handler (line 236) | def network_changed_handler(self, res: Result): method g_notification_handler (line 239) | def g_notification_handler(self, res: Result): method g_show_uri_handler (line 244) | def g_show_uri_handler(self, res: Result): method update_library (line 251) | def update_library(self): method title (line 254) | def title(self, title, subtitle: str = ""): method check_for_connection (line 258) | def check_for_connection(self, status): method __maybe_prompt_winebridge_update (line 267) | def __maybe_prompt_winebridge_update(self): method __on_start (line 303) | def __on_start(self): method send_notification (line 400) | def send_notification(self, title, text, image="", ignore_user=False): method go_back (line 416) | def go_back(self, *_args): method show_details_view (line 419) | def show_details_view(self, widget=False, config: Optional[BottleConfi... method show_loading_view (line 423) | def show_loading_view(self, widget=False): method show_onboard_view (line 427) | def show_onboard_view(self, widget=False): method show_add_view (line 431) | def show_add_view(self, widget=False): method show_list_view (line 435) | def show_list_view(self, widget=False): method show_importer_view (line 438) | def show_importer_view(self, widget=False): method show_prefs_view (line 441) | def show_prefs_view(self, widget=False, view=0): method show_download_preferences_view (line 445) | def show_download_preferences_view(self, widget=False): method show_runners_preferences_view (line 448) | def show_runners_preferences_view(self, widget=False): method check_crash_log (line 451) | def check_crash_log(self): method __maybe_show_funding_dialog (line 463) | def __maybe_show_funding_dialog(self): method __funding_response (line 477) | def __funding_response(self, dialog, response): method toggle_selection_mode (line 484) | def toggle_selection_mode(self, status: bool = True): method lock_ui (line 491) | def lock_ui(self, status: bool = True): method show_toast (line 501) | def show_toast( method __on_page_changed (line 526) | def __on_page_changed(self, stack, *args): method proper_close (line 531) | def proper_close(): method open_url (line 536) | def open_url(widget, url): FILE: bottles/frontend/windows/winebridgeupdate.py class WineBridgeUpdateDialog (line 14) | class WineBridgeUpdateDialog(Adw.Window): method __init__ (line 28) | def __init__( method __populate_details (line 52) | def __populate_details(self): method __start_update (line 74) | def __start_update(self, *_args): method __on_cancel (line 98) | def __on_cancel(self, *_args): method __close (line 107) | def __close(self, *_args): method __show_error (line 110) | def __show_error(self): method __update_progress (line 117) | def __update_progress( method __on_install_complete (line 140) | def __on_install_complete(self, result: Result, error=False): FILE: bottles/fvs/exceptions.py class FVSException (line 1) | class FVSException(Exception): class FVSNothingToCommit (line 4) | class FVSNothingToCommit(FVSException): class FVSNothingToRestore (line 7) | class FVSNothingToRestore(FVSException): class FVSStateNotFound (line 10) | class FVSStateNotFound(FVSException): class FVSStateZeroNotDeletable (line 13) | class FVSStateZeroNotDeletable(FVSException): class FVSStateAlreadyExists (line 16) | class FVSStateAlreadyExists(FVSException): class FVSMissingStateIndex (line 19) | class FVSMissingStateIndex(FVSException): class FVSEmptyStateIndex (line 22) | class FVSEmptyStateIndex(FVSException): FILE: bottles/fvs/repo.py class FVSRepo (line 31) | class FVSRepo: method __init__ (line 32) | def __init__(self, repo_path: str, use_compression: bool = False, no_i... method _get_fvs2_bin (line 51) | def _get_fvs2_bin(self): method _run_cmd (line 54) | def _run_cmd(self, *args, check=True): method _init_repo (line 58) | def _init_repo(self): method commit (line 71) | def commit(self, message: str, ignore: list = None): method restore_state (line 81) | def restore_state(self, state_id: str, ignore: list = None, reset: boo... method _refresh (line 103) | def _refresh(self): method check_dirty (line 150) | def check_dirty(self): method has_no_states (line 168) | def has_no_states(self) -> bool: method states (line 172) | def states(self) -> dict: method active_state_id (line 176) | def active_state_id(self) -> str: method active_branch (line 180) | def active_branch(self) -> str: method dirty (line 184) | def dirty(self) -> bool: method changed_files (line 188) | def changed_files(self) -> int: method branches (line 192) | def branches(self) -> list: method create_branch (line 195) | def create_branch(self, branch_name: str): method delete_branch (line 202) | def delete_branch(self, branch_name: str): method checkout (line 209) | def checkout(self, target: str): FILE: bottles/tests/backend/integration/playtime/conftest.py class _FVSRepoStub (line 18) | class _FVSRepoStub: method __init__ (line 19) | def __init__(self, *args, **kwargs): method commit (line 24) | def commit(self, *_args, **_kwargs): method restore_state (line 27) | def restore_state(self, *_args, **_kwargs): class _FVSError (line 31) | class _FVSError(Exception): function temp_xdg_home (line 51) | def temp_xdg_home(monkeypatch): function test_settings_stub (line 58) | def test_settings_stub(): function manager (line 70) | def manager(temp_xdg_home, test_settings_stub): function open_db (line 83) | def open_db(m: Manager) -> sqlite3.Connection: FILE: bottles/tests/backend/integration/playtime/test_aggregation.py function test_same_program_aggregates_into_one_row (line 8) | def test_same_program_aggregates_into_one_row(manager): function test_different_programs_separate_rows (line 49) | def test_different_programs_separate_rows(manager): FILE: bottles/tests/backend/integration/playtime/test_disabled_tracking.py function test_disabled_tracking_smoke (line 9) | def test_disabled_tracking_smoke(temp_xdg_home): FILE: bottles/tests/backend/integration/playtime/test_failure_run.py function test_failure_run_marks_unknown_and_updates_totals (line 8) | def test_failure_run_marks_unknown_and_updates_totals(manager): function test_multiple_failures_different_bottles (line 37) | def test_multiple_failures_different_bottles(manager): function test_multiple_failures_same_bottle_different_programs (line 73) | def test_multiple_failures_same_bottle_different_programs(manager): FILE: bottles/tests/backend/integration/playtime/test_playtime_signals.py class _Settings (line 15) | class _Settings: method get_boolean (line 16) | def get_boolean(self, key: str) -> bool: method get_int (line 19) | def get_int(self, key: str) -> int: function _new_manager (line 23) | def _new_manager(tmpdir: str) -> Manager: function test_signals_flow_success (line 39) | def test_signals_flow_success(): function test_signals_flow_unknown_failure (line 71) | def test_signals_flow_unknown_failure(): FILE: bottles/tests/backend/integration/playtime/test_recovery.py function test_recovery_smoke (line 10) | def test_recovery_smoke(manager): function test_recovery_different_bottles (line 46) | def test_recovery_different_bottles(manager): function test_recovery_same_bottle_different_programs (line 87) | def test_recovery_same_bottle_different_programs(manager): FILE: bottles/tests/backend/integration/playtime/test_schema_meta.py function test_schema_meta_smoke (line 7) | def test_schema_meta_smoke(manager): FILE: bottles/tests/backend/integration/playtime/test_successful_run.py function test_successful_run_finalizes_and_updates_totals (line 8) | def test_successful_run_finalizes_and_updates_totals(manager): function test_success_multiple_apps_two_same_bottle_one_other (line 39) | def test_success_multiple_apps_two_same_bottle_one_other(manager): FILE: bottles/tests/backend/integration/playtime/test_uniqueness_retry.py function test_uniqueness_retry_smoke (line 8) | def test_uniqueness_retry_smoke(manager): FILE: bottles/tests/backend/integration/playtime/test_wine_executor_playtime.py class _Settings (line 13) | class _Settings: method get_boolean (line 14) | def get_boolean(self, key: str) -> bool: method get_int (line 17) | def get_int(self, key: str) -> int: function _new_manager (line 21) | def _new_manager(tmpdir: str) -> Manager: function _config (line 35) | def _config(name: str) -> BottleConfig: function test_wine_executor_emits_and_updates_totals (line 42) | def test_wine_executor_emits_and_updates_totals(mocker): FILE: bottles/tests/backend/manager/test_manager.py function test_manager_is_singleton (line 7) | def test_manager_is_singleton(): function test_manager_default_gsettings_stub (line 16) | def test_manager_default_gsettings_stub(): FILE: bottles/tests/backend/manager/test_playtime.py function _new_tracker (line 9) | def _new_tracker(tmpdir, enabled=True, heartbeat_interval=5): function test_schema_created_and_wal (line 16) | def test_schema_created_and_wal(): function test_start_and_heartbeat_and_exit_updates_totals (line 31) | def test_start_and_heartbeat_and_exit_updates_totals(): function test_recovery_finalizes_running_sessions (line 65) | def test_recovery_finalizes_running_sessions(): function test_disabled_tracker_is_noop (line 97) | def test_disabled_tracker_is_noop(): function test_mark_failure (line 111) | def test_mark_failure(): function test_multiple_sessions_aggregate (line 131) | def test_multiple_sessions_aggregate(): function test_different_programs_separate_totals (line 168) | def test_different_programs_separate_totals(): function test_program_id_consistency (line 196) | def test_program_id_consistency(): function test_indices_exist (line 226) | def test_indices_exist(): function test_user_version_set (line 239) | def test_user_version_set(): function test_unique_constraint (line 249) | def test_unique_constraint(): function test_disable_tracking_method (line 281) | def test_disable_tracking_method(): function test_start_session_collapses_duplicate_running_session (line 305) | def test_start_session_collapses_duplicate_running_session(): function test_get_totals_returns_program_stats (line 335) | def test_get_totals_returns_program_stats(): function test_get_totals_returns_none_when_not_found (line 364) | def test_get_totals_returns_none_when_not_found(): function test_get_totals_returns_none_when_disabled (line 373) | def test_get_totals_returns_none_when_disabled(): function test_get_all_program_totals_returns_all_programs (line 382) | def test_get_all_program_totals_returns_all_programs(): function test_get_all_program_totals_returns_empty_when_disabled (line 416) | def test_get_all_program_totals_returns_empty_when_disabled(): function test_normalize_path_to_windows (line 425) | def test_normalize_path_to_windows(): function test_database_stores_normalized_paths (line 446) | def test_database_stores_normalized_paths(): FILE: bottles/tests/backend/state/test_events.py class Events (line 11) | class Events(Enum): function approx_time (line 20) | def approx_time(start, target): function test_simple_event (line 31) | def test_simple_event(): function test_wait_after_done_event (line 47) | def test_wait_after_done_event(): function test_set_reset (line 56) | def test_set_reset(): function test_event_singleton_wait (line 98) | def test_event_singleton_wait(): function test_event_singleton_done_reset (line 124) | def test_event_singleton_done_reset(): function test_correct_internal_flag (line 138) | def test_correct_internal_flag(): FILE: bottles/tests/backend/utils/test_generic.py function test_detect_encoding (line 24) | def test_detect_encoding(text: str, hint: Optional[str], codec: Optional... FILE: bottles/tests/backend/wine/test_executor.py function _make_config (line 10) | def _make_config(name: str = "TestBottle", path: str = "TestBottlePath")... function test_build_placeholder_map_uses_program_values (line 14) | def test_build_placeholder_map_uses_program_values(): function test_replace_placeholders_handles_unknown_tokens (line 31) | def test_replace_placeholders_handles_unknown_tokens(): function test_run_program_substitutes_placeholders (line 42) | def test_run_program_substitutes_placeholders(monkeypatch): function test_wine_env_respects_allowed_keys (line 111) | def test_wine_env_respects_allowed_keys(monkeypatch): function test_winecommand_filters_host_environment (line 122) | def test_winecommand_filters_host_environment(monkeypatch, tmp_path): FILE: bottles/tests/conftest.py function _add_repo_root_to_syspath (line 2) | def _add_repo_root_to_syspath() -> None: FILE: bottles/tests/frontend/test_playtime_service.py class MockManager (line 10) | class MockManager: method __init__ (line 13) | def __init__(self, tracker): function test_format_playtime (line 17) | def test_format_playtime(): function test_format_last_played (line 31) | def test_format_last_played(): function test_format_subtitle_with_data (line 58) | def test_format_subtitle_with_data(): function test_format_subtitle_never_played (line 80) | def test_format_subtitle_never_played(): function test_service_disabled_returns_none (line 88) | def test_service_disabled_returns_none(): FILE: test_path_normalization.py function test_normalize_path (line 5) | def test_normalize_path(): FILE: tests/conftest.py function _add_repo_root_to_syspath (line 11) | def _add_repo_root_to_syspath() -> None: FILE: tests/test_fvs.py function main (line 10) | def main():