Corrections bugs désinstallations et améliorations UI/UX

This commit is contained in:
2025-08-30 01:55:37 +02:00
parent 9d68a5892c
commit f8956776a3

View File

@@ -198,8 +198,6 @@ check_sudo_password() {
# Fonction pour demander et stocker le mot de passe sudo globalement
get_global_sudo_password() {
local app_list="$1"
# Si le mot de passe est déjà stocké et valide, ne pas le redemander
if [ -n "$GLOBAL_SUDO_PASSWORD" ]; then
if check_sudo_password "$GLOBAL_SUDO_PASSWORD"; then
@@ -208,7 +206,7 @@ get_global_sudo_password() {
fi
# Demander le mot de passe sudo pour toutes les installations
GLOBAL_SUDO_PASSWORD=$(zenity 2>/dev/null --password --title="Authentification - Debian Gaming Deployment Tool" --text="Mot de passe administrateur requis pour l'installation :\n$app_list")
GLOBAL_SUDO_PASSWORD=$(zenity 2>/dev/null --password --title="Authentification - Debian Gaming Deployment Tool" --text="Mot de passe administrateur requis pour procéder aux installations.")
if [ $? -eq 1 ]; then
return 1
@@ -259,10 +257,6 @@ start_batch_install() {
log_info "Mode installation groupée activé pour $app_count applications"
# Afficher une notification de début au lieu d'une barre de progression complexe
zenity 2>/dev/null --info --timeout=3 \
--title="Debian Gaming Deployment Tool" \
--text="Installation de $app_count applications en cours...\n\nApplications sélectionnées:$app_list" &
}
update_batch_progress() {
@@ -411,11 +405,12 @@ show_unified_selection() {
--title="Debian Gaming Deployment Tool" \
--text="Sélectionnez les applications puis choisissez l'action :" \
--column="Sélection" --column="Application" --column="Type" --column="Description" \
--width=1000 --height=600 \
--width=1000 --height=650 \
--ok-label="Installer" \
--extra-button="Désinstaller" \
--cancel-label="Annuler" \
--separator="|" \
FALSE "ACTION_UNINSTALL" "SPECIAL" "🗑️ MODE DÉSINSTALLATION - Cochez ceci pour désinstaller au lieu d'installer" \
FALSE "nvidia" "APT" "💻 NVIDIA + CUDA - Pilotes graphiques professionnels" \
FALSE "flatpak" "APT" "📦 Flatpak + Flathub - Gestionnaire d'applications universelles" \
FALSE "steam" "APT" "🎮 Steam - Plateforme de jeux numériques Valve" \
@@ -3213,7 +3208,7 @@ echo "Fichier de log: $(pwd)/$(basename "$LOG_FILE")" >&2
selection=$(show_unified_selection)
exit_code=$?
# Déterminer l'action selon le code de retour
# Déterminer l'action selon le code de retour et la sélection
# 0 = Installer (bouton OK)
# 1 = Désinstaller (bouton extra)
# autres = Annuler
@@ -3229,15 +3224,28 @@ if [ -z "$selection" ]; then
exit 0
fi
# Traiter la sélection selon le bouton cliqué
# Traiter la sélection
IFS='|' read -ra SELECTED <<< "$selection"
# Vérifier si le mode désinstallation est demandé via la checkbox
uninstall_mode=false
if [[ " ${SELECTED[*]} " =~ " ACTION_UNINSTALL " ]]; then
uninstall_mode=true
# Retirer ACTION_UNINSTALL de la liste
SELECTED=("${SELECTED[@]/ACTION_UNINSTALL}")
fi
if [ $exit_code -eq 1 ]; then
# Déterminer le mode final
if [ "$uninstall_mode" = "true" ] || [ $exit_code -eq 1 ]; then
# Mode désinstallation (bouton extra)
# Créer la liste des composants pour confirmation
uninstall_display=""
for component in "${SELECTED[@]}"; do
# Ignorer les éléments qui ne sont pas des applications (boutons, etc.)
case $component in
"Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;;
esac
case $component in
"steam") uninstall_display="$uninstall_display\n• Steam" ;;
"protonup") uninstall_display="$uninstall_display\n• ProtonUp-Qt" ;;
@@ -3259,7 +3267,7 @@ if [ $exit_code -eq 1 ]; then
done
# Demander confirmation globale une seule fois
if ! zenity 2>/dev/null --question --title="Confirmation de désinstallation" --text="Êtes-vous sûr de vouloir désinstaller les composants suivants ?$uninstall_display"; then
if ! zenity 2>/dev/null --question --title="Confirmation de désinstallation" --text="Récapitulatif des désinstallations :$uninstall_display\n\nVoulez-vous procéder à la désinstallation de ces composants ?" --width=400; then
exit 0
fi
@@ -3289,6 +3297,11 @@ if [ $exit_code -eq 1 ]; then
# Traiter les sélections de désinstallation
for component in "${SELECTED[@]}"; do
# Ignorer les éléments qui ne sont pas des applications (boutons, etc.)
case $component in
"Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;;
esac
log_info "Traitement du composant: $component"
case $component in
"steam")
@@ -3447,6 +3460,11 @@ else
# Créer la liste des applications pour confirmation
install_display=""
for component in "${SELECTED[@]}"; do
# Ignorer les éléments qui ne sont pas des applications (boutons, etc.)
case $component in
"Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;;
esac
case $component in
"steam") install_display="$install_display\n• Steam" ;;
"protonup") install_display="$install_display\n• ProtonUp-Qt" ;;
@@ -3467,8 +3485,13 @@ else
esac
done
# Afficher le récapitulatif et demander confirmation
if ! zenity 2>/dev/null --question --title="Confirmation d'installation" --text="Récapitulatif des installations :\n$install_display\n\nVoulez-vous procéder à l'installation de ces applications ?" --width=400; then
exit 0
fi
# Demander le mot de passe sudo une seule fois pour toutes les installations
if ! get_global_sudo_password "$install_display"; then
if ! get_global_sudo_password; then
exit 0
fi
@@ -3476,14 +3499,15 @@ else
if [ ${#SELECTED[@]} -gt 1 ]; then
start_batch_install ${#SELECTED[@]} "$install_display"
# Afficher une notification au début
zenity 2>/dev/null --info --timeout=5 \
--title="Debian Gaming Deployment Tool - Installation Multiple" \
--text="Installation de ${#SELECTED[@]} applications en cours...\n\nCeci peut prendre plusieurs minutes.\nVeuillez patienter..." &
fi
# Traiter les sélections d'installation
for component in "${SELECTED[@]}"; do
# Ignorer les éléments qui ne sont pas des applications (boutons, etc.)
case $component in
"Désinstaller"|"Installer"|"ACTION_UNINSTALL"|"") continue ;;
esac
case $component in
"steam")
install_steam