founded update details
This commit is contained in:
parent
8f8d7c1b26
commit
278f2353fe
@ -36,3 +36,28 @@ class AlertManager:
|
||||
box.setDefaultButton(yes)
|
||||
box.exec()
|
||||
return box.clickedButton() == yes
|
||||
|
||||
def show_choice_with_details(self, message: str, parent=None, details_callback=None) -> bool:
|
||||
"""
|
||||
Affiche une boîte de dialogue Oui/Non avec un bouton Détails.
|
||||
Si detailed_text est fourni, l'ajoute comme texte détaillé (affichable par l'utilisateur).
|
||||
Le callback details_callback est appelé lorsque l'utilisateur clique sur le bouton Détails.
|
||||
"""
|
||||
box = QMessageBox(parent)
|
||||
box.setWindowTitle(self.language_manager.get_text("confirmation"))
|
||||
box.setText(message)
|
||||
box.setIcon(QMessageBox.Icon.Question)
|
||||
yes = box.addButton(QMessageBox.StandardButton.Yes)
|
||||
no = box.addButton(QMessageBox.StandardButton.No)
|
||||
details = box.addButton(self.language_manager.get_text("details"), QMessageBox.ButtonRole.ActionRole)
|
||||
yes.setText(self.language_manager.get_text("yes"))
|
||||
no.setText(self.language_manager.get_text("no"))
|
||||
box.setDefaultButton(yes)
|
||||
|
||||
def on_button_clicked(button):
|
||||
if button == details and details_callback:
|
||||
details_callback()
|
||||
|
||||
box.buttonClicked.connect(on_button_clicked)
|
||||
box.exec()
|
||||
return box.clickedButton() == yes
|
@ -1,7 +1,7 @@
|
||||
import requests
|
||||
from packaging import version
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
from PyQt6.QtWidgets import QFileDialog, QDialog, QVBoxLayout
|
||||
from PyQt6.QtWidgets import QFileDialog, QDialog, QVBoxLayout, QTextEdit, QPushButton, QHBoxLayout, QLabel
|
||||
from app.core.alert_manager import AlertManager
|
||||
from app.core.settings_manager import SettingsManager
|
||||
from app.core.language_manager import LanguageManager
|
||||
@ -67,10 +67,7 @@ class UpdateManager:
|
||||
releases = self.get_releases_with_asset()
|
||||
release = releases[0] if releases else None
|
||||
if release and version.parse(release["tag_name"]) > version.parse(current_version):
|
||||
choice = self.alert_manager.show_choice(
|
||||
self.language_manager.get_text("update_found").replace("{latest_tag}", release["tag_name"]),
|
||||
parent=parent
|
||||
)
|
||||
choice = self.show_update_dialog(releases, current_version, parent)
|
||||
if choice:
|
||||
folder = QFileDialog.getExistingDirectory(parent, self.language_manager.get_text("choose_update_folder"))
|
||||
if folder:
|
||||
@ -114,3 +111,64 @@ class UpdateManager:
|
||||
subprocess.Popen([local_path])
|
||||
except Exception:
|
||||
self.alert_manager.show_error("update_download_error", parent=parent)
|
||||
|
||||
def show_update_dialog(self, releases: List[Dict], current_version: str, parent=None) -> bool:
|
||||
"""
|
||||
Affiche une boîte de dialogue avec options Mettre à jour et Détails via l'alert_manager
|
||||
"""
|
||||
latest_release = releases[0]
|
||||
message = self.language_manager.get_text("update_found").replace("{latest_tag}", latest_release["tag_name"])
|
||||
|
||||
# Utiliser l'alert_manager avec boutons personnalisés
|
||||
choice = self.alert_manager.show_choice_with_details(
|
||||
message,
|
||||
parent=parent,
|
||||
details_callback=lambda: self.show_details_dialog(releases, current_version, parent)
|
||||
)
|
||||
|
||||
return choice
|
||||
|
||||
def show_details_dialog(self, releases: List[Dict], current_version: str, parent=None) -> None:
|
||||
"""
|
||||
Affiche tous les changelogs des versions supérieures à la version actuelle
|
||||
"""
|
||||
dialog = QDialog(parent)
|
||||
dialog.setWindowTitle(self.language_manager.get_text("update_details"))
|
||||
dialog.setModal(True)
|
||||
dialog.resize(600, 500)
|
||||
|
||||
layout = QVBoxLayout(dialog)
|
||||
|
||||
# Zone de texte pour afficher les changelogs
|
||||
text_edit = QTextEdit()
|
||||
text_edit.setReadOnly(True)
|
||||
|
||||
# Filtrer et trier les releases supérieures à la version actuelle
|
||||
newer_releases = []
|
||||
for release in releases:
|
||||
if version.parse(release["tag_name"]) > version.parse(current_version):
|
||||
newer_releases.append(release)
|
||||
|
||||
# Trier par version décroissante (plus récente en premier)
|
||||
newer_releases.sort(key=lambda x: version.parse(x["tag_name"]), reverse=True)
|
||||
|
||||
# Construire le texte des changelogs
|
||||
changelog_text = ""
|
||||
for release in newer_releases:
|
||||
changelog_text += f"## {self.language_manager.get_text('version')} {release['tag_name']} :\n\n"
|
||||
body = release['body'].replace('\n','\n### ')
|
||||
changelog_text += f"### {body}"
|
||||
changelog_text += "\n\n"
|
||||
if release != newer_releases[-1]:
|
||||
changelog_text += "---\n\n"
|
||||
print(changelog_text)
|
||||
text_edit.setAcceptRichText(True)
|
||||
text_edit.setMarkdown(changelog_text)
|
||||
layout.addWidget(text_edit)
|
||||
|
||||
# Bouton Fermer
|
||||
close_button = QPushButton(self.language_manager.get_text("close"))
|
||||
close_button.clicked.connect(dialog.close)
|
||||
layout.addWidget(close_button)
|
||||
|
||||
dialog.exec()
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"app_name": "Application",
|
||||
"app_name": "HoDA",
|
||||
"app_os": "Windows",
|
||||
"app_version": "1.0.0",
|
||||
"architecture": "x64",
|
||||
"icon_path": "data/assets/icon.ico",
|
||||
"main_script": "main.py",
|
||||
"git_repo": "https://gitea.louismazin.ovh/LouisMazin/PythonApplicationTemplate"
|
||||
"git_repo": "https://gitea.louismazin.ovh/LouisMazin/HoDA"
|
||||
}
|
@ -24,5 +24,9 @@
|
||||
"update_download_error": "Error downloading update",
|
||||
"downloading_update": "Downloading update...",
|
||||
"update": "Update",
|
||||
"footer_text": "© 2025 Louis Mazin. All rights reserved."
|
||||
"footer_text": "© 2025 Louis Mazin. All rights reserved.",
|
||||
"details": "Details",
|
||||
"version": "Version",
|
||||
"update_details": "Update Details",
|
||||
"close": "Close"
|
||||
}
|
@ -24,5 +24,9 @@
|
||||
"update_download_error": "Erreur lors du téléchargement de la mise à jour",
|
||||
"downloading_update": "Téléchargement de la mise à jour...",
|
||||
"update": "Mise à jour",
|
||||
"footer_text": "© 2025 Louis Mazin. Tous droits réservés."
|
||||
"footer_text": "© 2025 Louis Mazin. Tous droits réservés.",
|
||||
"details": "Détails",
|
||||
"version": "Version",
|
||||
"update_details": "Détails de la mise à jour",
|
||||
"close": "Fermer"
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user