This commit is contained in:
skymike03
2025-08-07 22:32:06 +02:00
5 changed files with 28 additions and 77 deletions

View File

@@ -8,12 +8,22 @@ import logging
import requests
import queue
import datetime
from display import init_display, draw_loading_screen, draw_error_screen, draw_platform_grid, draw_progress_screen, draw_controls, draw_virtual_keyboard, draw_popup_result_download, draw_extension_warning, draw_pause_menu, draw_controls_help, draw_game_list, draw_history_list, draw_clear_history_dialog, draw_cancel_download_dialog, draw_confirm_dialog, draw_redownload_game_cache_dialog, draw_popup, draw_gradient, THEME_COLORS
from display import (
init_display, draw_loading_screen, draw_error_screen, draw_platform_grid,
draw_progress_screen, draw_controls, draw_virtual_keyboard, draw_popup_result_download,
draw_extension_warning, draw_pause_menu, draw_controls_help, draw_game_list,
draw_history_list, draw_clear_history_dialog, draw_cancel_download_dialog,
draw_confirm_dialog, draw_redownload_game_cache_dialog, draw_popup, draw_gradient,
THEME_COLORS
)
from language import handle_language_menu_events, _
from network import test_internet, download_rom, is_1fichier_url, download_from_1fichier, check_for_updates
from controls import handle_controls, validate_menu_state, process_key_repeats
from controls_mapper import load_controls_config, map_controls, draw_controls_mapping, ACTIONS
from utils import detect_non_pc, load_sources, check_extension_before_download, extract_zip_data, play_random_music
from utils import (
detect_non_pc, load_sources, check_extension_before_download, extract_zip_data,
play_random_music, load_accessibility_settings, load_music_config
)
from history import load_history, save_history
import config
from config import OTA_data_ZIP
@@ -35,9 +45,8 @@ except Exception as e:
logger = logging.getLogger(__name__)
# Initialisation de Pygame et des polices
# Initialisation de Pygame
pygame.init()
config.init_font()
pygame.joystick.init()
logger.debug("--------------------------------------------------------------------")
logger.debug("---------------------------DEBUT LOG--------------------------------")
@@ -45,7 +54,6 @@ logger.debug("------------------------------------------------------------------
# Chargement des paramètres d'accessibilité
from utils import load_accessibility_settings
config.accessibility_settings = load_accessibility_settings()
for i, scale in enumerate(config.font_scale_options):
if scale == config.accessibility_settings.get("font_scale", 1.0):
@@ -139,7 +147,6 @@ if pygame.joystick.get_count() > 0:
# Initialisation du mixer Pygame
pygame.mixer.pre_init(44100, -16, 2, 4096)
pygame.mixer.init()
from utils import load_music_config
load_music_config()

View File

@@ -9,7 +9,11 @@ import json
import os
from display import draw_validation_transition
from network import download_rom, download_from_1fichier, is_1fichier_url
from utils import load_games, check_extension_before_download, is_extension_supported, load_extensions_json, play_random_music, sanitize_filename, load_api_key_1fichier, save_music_config
from utils import (
load_games, check_extension_before_download, is_extension_supported,
load_extensions_json, play_random_music, sanitize_filename,
load_api_key_1fichier, save_music_config
)
from history import load_history, clear_history, add_to_history, save_history
import logging
from language import _ # Import de la fonction de traduction
@@ -17,10 +21,6 @@ from language import _ # Import de la fonction de traduction
logger = logging.getLogger(__name__)
# Délais spécifiques pour les contrôles
JOYHAT_DEBOUNCE = 150 # Délai anti-rebond pour JOYHATMOTION (ms)
JOYAXIS_DEBOUNCE = 150 # Délai anti-rebond pour JOYAXISMOTION (ms)
# Variables globales pour la répétition
key_states = {} # Dictionnaire pour suivre l'état des touches
@@ -33,7 +33,6 @@ VALID_STATES = [
]
def validate_menu_state(state):
valid_states = ["platform", "game", "download_progress", "download_result", "confirm_exit", "extension_warning", "pause_menu", "controls_help", "controls_mapping", "redownload_game_cache", "restart_popup", "confirm_clear_history", "language_select"]
if state not in VALID_STATES:
logger.debug(f"État invalide {state}, retour à platform")
return "platform"

View File

@@ -1251,56 +1251,15 @@ def draw_pause_menu(screen, selected_option):
def draw_controls_help(screen, previous_state):
"""Affiche la liste des contrôles avec un style moderne."""
# Définir les noms d'actions traduits en dehors des f-strings pour éviter les problèmes de syntaxe
confirm_text = _("controls_action_confirm")
cancel_text = _("controls_action_cancel")
start_text = _("controls_action_start")
progress_text = _("controls_action_progress")
up_text = _("controls_action_up")
down_text = _("controls_action_down")
page_up_text = _("controls_action_page_up")
page_down_text = _("controls_action_page_down")
filter_text = _("controls_action_filter")
history_text = _("controls_action_history")
delete_text = _("controls_action_delete")
space_text = _("controls_action_space")
common_controls = {
"confirm": lambda action: f"{get_control_display('confirm', 'A')} : {action}",
"cancel": lambda action: f"{get_control_display('cancel', 'B')} : {action}",
"start": lambda: f"{get_control_display('start', 'Start')} : {start_text}",
"progress": lambda action: f"{get_control_display('progress', 'X')} : {action}",
"up": lambda action: f"{get_control_display('up', '')} : {action}",
"down": lambda action: f"{get_control_display('down', '')} : {action}",
"left": lambda action: f"{get_control_display('left', '')} : {action}",
"right": lambda action: f"{get_control_display('right', '')} : {action}",
"page_up": lambda action: f"{get_control_display('page_up', 'LB')} : {action}",
"page_down": lambda action: f"{get_control_display('page_down', 'RB')} : {action}",
"filter": lambda action: f"{get_control_display('filter', 'Select')} : {action}",
"history": lambda action: f"{get_control_display('history', 'Y')} : {action}",
"delete": lambda: f"{get_control_display('delete', 'Suppr')} : {delete_text}",
"space": lambda: f"{get_control_display('space', 'Espace')} : {space_text}"
}
# Utiliser des variables pour les traductions d'actions
action_translations = {
"retry": _("action_retry"),
"quit": _("action_quit"),
"select": _("action_select"),
"history": _("action_history"),
"progress": _("action_progress"),
"download": _("action_download"),
"filter": _("action_filter"),
"cancel": _("action_cancel"),
"back": _("action_back"),
"navigate": _("action_navigate"),
"page": _("action_page"),
"cancel_download": _("action_cancel_download"),
"background": _("action_background"),
"confirm": _("action_confirm"),
"redownload": _("action_redownload"),
"clear_history": _("action_clear_history")
}
# Catégories de contrôles
nav_text = _("controls_navigation")
pages_text = _("controls_pages")

View File

@@ -8,7 +8,7 @@ import zipfile
import asyncio
import config
from config import OTA_VERSION_ENDPOINT,APP_FOLDER, UPDATE_FOLDER, OTA_UPDATE_ZIP
from utils import sanitize_filename, extract_zip, extract_rar, load_api_key_1fichier
from utils import sanitize_filename, extract_zip, extract_rar, load_api_key_1fichier, normalize_platform_name
from history import save_history
import logging
import datetime
@@ -179,11 +179,11 @@ async def download_rom(url, platform, game_name, is_zip_non_supported=False, tas
dest_dir = None
for platform_dict in config.platform_dicts:
if platform_dict["platform"] == platform:
dest_dir = os.path.join(config.ROMS_FOLDER, platform_dict.get("folder", platform.lower().replace(" ", "")))
dest_dir = os.path.join(config.ROMS_FOLDER, platform_dict.get("folder", normalize_platform_name(platform)))
logger.debug(f"Répertoire de destination trouvé pour {platform}: {dest_dir}")
break
if not dest_dir:
dest_dir = os.path.join(os.path.dirname(os.path.dirname(config.APP_FOLDER)), platform.lower().replace(" ", ""))
dest_dir = os.path.join(os.path.dirname(os.path.dirname(config.APP_FOLDER)), normalize_platform_name(platform))
os.makedirs(dest_dir, exist_ok=True)
if not os.access(dest_dir, os.W_OK):
@@ -380,7 +380,7 @@ async def download_from_1fichier(url, platform, game_name, is_zip_non_supported=
dest_dir = None
for platform_dict in config.platform_dicts:
if platform_dict["platform"] == platform:
dest_dir = os.path.join(config.ROMS_FOLDER, platform_dict.get("folder", platform.lower().replace(" ", "")))
dest_dir = os.path.join(config.ROMS_FOLDER, platform_dict.get("folder", normalize_platform_name(platform)))
break
if not dest_dir:
logger.warning(f"Aucun dossier 'folder' trouvé pour la plateforme {platform}")

View File

@@ -11,7 +11,6 @@ import threading
import zipfile
import time
import random
import random
from config import JSON_EXTENSIONS, SAVE_FOLDER
def load_accessibility_settings():
@@ -39,8 +38,6 @@ from history import save_history
from language import _ # Import de la fonction de traduction
from datetime import datetime
from datetime import datetime
logger = logging.getLogger(__name__)
# Désactiver les logs DEBUG de urllib3 e requests pour supprimer les messages de connexion HTTP
@@ -165,21 +162,6 @@ def load_games(platform_id):
with open(games_path, 'r', encoding='utf-8') as f:
games = json.load(f)
# Tester la première URL si la liste n'est pas vide
# if games and len(games) > 0 and len(games[0]) > 1:
# first_url = games[0][1]
# try:
# response = requests.head(first_url, timeout=5, allow_redirects=True)
# if response.status_code not in (200, 303): # Ne logger que les codes autres que 200 et 303
# logger.debug(f"https://{first_url} \"HEAD {first_url} HTTP/1.1\" {response.status_code} 0")
# if response.status_code == 404:
# logger.error(f"URL non accessible pour {platform_id} : {first_url} (code 404)")
# unavailable_systems.append(platform_id) # Assurez-vous que unavailable_systems est défini
# except requests.RequestException as e:
# logger.error(f"Erreur lors du test de l'URL pour {platform_id} : {first_url} ({str(e)})")
# else:
# logger.debug(f"Aucune URL à tester pour {platform_id} (liste vide ou mal formée)")
logger.debug(f"Jeux chargés pour {platform_id}: {len(games)} jeux")
return games
except Exception as e:
@@ -642,12 +624,12 @@ def handle_ps3(dest_dir):
for f in files:
try:
os.chmod(os.path.join(root, f), 0o644)
except:
except (OSError, PermissionError):
pass
for d in dirs:
try:
os.chmod(os.path.join(root, d), 0o755)
except:
except (OSError, PermissionError):
pass
if os.path.exists(new_path):
@@ -873,3 +855,7 @@ def save_music_config():
except Exception as e:
logger.error(f"Erreur lors de la sauvegarde de music_config.json: {str(e)}")
def normalize_platform_name(platform):
"""Normalise un nom de plateforme en supprimant espaces et convertissant en minuscules."""
return platform.lower().replace(" ", "")