diff --git a/__main__.py b/__main__.py index 402a42f..bded501 100644 --- a/__main__.py +++ b/__main__.py @@ -71,6 +71,14 @@ config.init_font() config.screen_width, config.screen_height = pygame.display.get_surface().get_size() logger.debug(f"Résolution d'écran : {config.screen_width}x{config.screen_height}") + +# Vérification des dossiers pour le débogage +logger.debug(f"SYSTEM_FOLDER: {config.SYSTEM_FOLDER}") +logger.debug(f"ROMS_FOLDER: {config.ROMS_FOLDER}") +logger.debug(f"SAVE_FOLDER: {config.SAVE_FOLDER}") +logger.debug(f"APP_FOLDER: {config.APP_FOLDER}") + + # Initialisation des variables de grille config.current_page = 0 config.selected_platform = 0 diff --git a/config.py b/config.py index a782c11..8ea25aa 100644 --- a/config.py +++ b/config.py @@ -1,19 +1,62 @@ import pygame # type: ignore import os +import sys import logging # Version actuelle de l'application app_version = "1.9.7.7" +def get_application_root(): + """Détermine le dossier de l'application de manière portable.""" + try: + # Obtenir le chemin absolu du fichier config.py + current_file = os.path.abspath(__file__) + # Remonter au dossier parent de config.py (par exemple, dossier de l'application) + app_root = os.path.dirname(os.path.dirname(current_file)) + return app_root + except NameError: + # Si __file__ n'est pas défini (par exemple, exécution dans un REPL) + return os.path.abspath(os.getcwd()) +def get_system_root(): + """Détermine le dossier racine du système de fichiers (par exemple, /userdata ou C:\\).""" + try: + if sys.platform.startswith("win"): + # Sur Windows, extraire la lettre de disque + current_path = os.path.abspath(__file__) + drive, _ = os.path.splitdrive(current_path) + system_root = drive + os.sep + return system_root + else: + # Sur Linux/Batocera, remonter jusqu'à atteindre /userdata ou / + current_path = os.path.abspath(__file__) + current_dir = current_path + while current_dir != os.path.dirname(current_dir): # Tant qu'on peut remonter + parent_dir = os.path.dirname(current_dir) + if os.path.basename(parent_dir) == "userdata": # Vérifier si le parent est userdata + system_root = parent_dir + return system_root + current_dir = parent_dir + # Si userdata n'est pas trouvé, retourner / + return "/" + except NameError: + # Si __file__ n'est pas défini, utiliser le répertoire de travail actuel + return "/" if not sys.platform.startswith("win") else os.path.splitdrive(os.getcwd())[0] + os.sep # Chemins de base -SYSTEM_FOLDER = "/userdata" +SYSTEM_FOLDER = get_system_root() +APP_FOLDER = os.path.join(get_application_root(), "RGSX") ROMS_FOLDER = os.path.join(SYSTEM_FOLDER, "roms") -APP_FOLDER = os.path.join(ROMS_FOLDER, "ports", "RGSX") +SAVE_FOLDER = os.path.join(SYSTEM_FOLDER, "saves", "ports", "rgsx") + +# Configuration du logging +logger = logging.getLogger(__name__) +log_dir = os.path.join(APP_FOLDER, "logs") +log_file = os.path.join(log_dir, "RGSX.log") + +# Chemins de base UPDATE_FOLDER = os.path.join(APP_FOLDER, "update") GAMELISTXML = os.path.join(APP_FOLDER, "gamelist.xml") -SAVE_FOLDER = os.path.join(SYSTEM_FOLDER, "saves", "ports", "rgsx") IMAGES_FOLDER = os.path.join(APP_FOLDER, "images", "systemes") GAMES_FOLDER = os.path.join(APP_FOLDER, "games") CONTROLS_CONFIG_PATH = os.path.join(SAVE_FOLDER, "controls.json") @@ -21,13 +64,11 @@ HISTORY_PATH = os.path.join(SAVE_FOLDER, "history.json") LANGUAGE_CONFIG_PATH = os.path.join(SAVE_FOLDER, "language.json") JSON_EXTENSIONS = os.path.join(APP_FOLDER, "rom_extensions.json") -# Configuration du logging -logger = logging.getLogger(__name__) -log_dir = os.path.join(APP_FOLDER, "logs") -log_file = os.path.join(log_dir, "RGSX.log") + + # URL -OTA_SERVER_URL = "https://retrogamesets.fr/softs" +OTA_SERVER_URL = "https://retrogamesets.fr/softs/" OTA_VERSION_ENDPOINT = os.path.join(OTA_SERVER_URL, "version.json") OTA_UPDATE_ZIP = os.path.join(OTA_SERVER_URL, "RGSX.zip") OTA_data_ZIP = os.path.join(OTA_SERVER_URL, "rgsx-data.zip") diff --git a/network.py b/network.py index fd508e9..ab54e96 100644 --- a/network.py +++ b/network.py @@ -1,6 +1,7 @@ import requests import subprocess import os +import sys import threading import pygame # type: ignore import zipfile @@ -24,17 +25,28 @@ cache = {} CACHE_TTL = 3600 # 1 heure def test_internet(): + """Teste la connexion Internet de manière portable pour Windows et Linux/Batocera.""" logger.debug("Test de connexion Internet") + + # Choisir l'option ping en fonction de la plateforme + ping_option = '-n' if sys.platform.startswith("win") else '-c' + logger.debug(f"Utilisation de ping avec option {ping_option}") + try: - result = subprocess.run(['ping', '-c', '4', '8.8.8.8'], capture_output=True, text=True, timeout=5) + result = subprocess.run( + ['ping', ping_option, '4', '8.8.8.8'], + capture_output=True, + text=True, + timeout=5 + ) if result.returncode == 0: - logger.debug("Connexion Internet OK") + logger.debug("Connexion Internet OK (ping)") return True else: - logger.debug("Échec ping 8.8.8.8") + logger.debug(f"Échec ping 8.8.8.8, code retour: {result.returncode}") return False except Exception as e: - logger.debug(f"Erreur test Internet: {str(e)}") + logger.debug(f"Erreur test Internet (ping): {str(e)}") return False