Skip to content

Commit

Permalink
Correction de la gestion des icones. Suppression de la déclaration de…
Browse files Browse the repository at this point in the history
…s icones dans les toplevel et changement tu paramètre de 'self.iconphoto(True, self.logo)' de 'False' à 'True' pour mettre l'icone de l'application sur toutes les décendances de la fenêtre principale. Par ailleurs, Amélioration de la gestion des erreurs réseaux dans la fenêtre 'A propos' - maintenant si il y du réseau mais pas d'Internet dessus un timeout arrête la tentative de connection pour ne pas bloquer l'application + meilleur gestion des curseurs pendant la tentative de connection à Internet dans 'A propos'
  • Loading branch information
pandaroux007 committed Sep 10, 2024
1 parent 24f3763 commit cf2a9ce
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 27 deletions.
12 changes: 6 additions & 6 deletions src/Application.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self):
self.minsize(1000, 680)
self.config(background=theme_sombre)
self.logo = tk.PhotoImage(file=chemin_image_application)
self.iconphoto(False, self.logo)
self.iconphoto(True, self.logo)
self.call('wm', 'iconphoto', self._w, self.logo)
self.bind("<1>", lambda event: event.widget.focus_set())
# ------------------------ Barre de menu
Expand Down Expand Up @@ -215,7 +215,7 @@ def stop_timer(self, parametre_appel_bouton_ou_non = None):
self.deselectionner_les_entry()
self.paused = False
self.bouton_pause.config(text="PAUSE")
self.time_remaining = 0 # Réinitialiser le temps restant
self.time_remaining = 0 # réinitialiser le temps restant
# ------------------------ Configuration de l'état des entrées et des boutons
self.bouton_start.config(state="normal")
self.bouton_pause.config(state="disabled")
Expand All @@ -231,10 +231,10 @@ def stop_timer(self, parametre_appel_bouton_ou_non = None):
self.temps_restant_label_fenetre_deporte.config(text="Temps restant", font=("Arial", 35), bg=couleur_frame_minuteur_verte, fg="black")
# ------------------------ Gestion du son :
if parametres.value_sounds == True:
jouer_sonnerie(True) # Jouer la sonnerie à la fin du timer
jouer_sonnerie(True) # jouer la sonnerie à la fin du timer
else: pass
if parametre_appel_bouton_ou_non == None:
self.update_timer() # Arrêter la récursion de la fonction update_timer()
self.update_timer() # Arreter la récursion de la fonction update_timer()
else: pass

def gestion_theme_par_defaut(self):
Expand Down Expand Up @@ -316,13 +316,13 @@ def validate_numeric_input(self, text):
def gestion_etat_bouton_start_en_fonction_du_temps_entre(self, *args):
minutes_str = self.variable_entree_minutes.get()
seconds_str = self.variable_entree_secondes.get()
# Convertir le contenu des spinbox en entier
# ------------------------ convertir le contenu des spinbox en entier
if minutes_str and seconds_str:
minutes = int(minutes_str)
seconds = int(seconds_str)
else: minutes = 0; seconds = 0
total_secondes = minutes * 60 + seconds
# gestion état bouton "Start" en fonction du total des secondes
# ------------------------ gestion état bouton "Start" en fonction du total des secondes
if total_secondes >= 5 and total_secondes <= temps_max:
self.bouton_start.config(state="normal")
else: self.bouton_start.config(state="disabled")
44 changes: 36 additions & 8 deletions src/FenetreInfo.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import tkinter as tk
from tkinter import messagebox
import webbrowser
from threading import Thread
from urllib import request
from packaging import version
import re
# ------------------------ fichiers de l'application
import webbrowser
import socket
from urllib import request
# ------------------------ fichiers de l'application
from Definitions import *

class LienHypertexte(tk.Label):
Expand All @@ -19,7 +20,7 @@ def __init__(self, master, text, url, *args, **kwargs):
class FenetreInfo(tk.Toplevel):
def __init__(self):
super().__init__()
# ------------------------ Parametrge fenêtre
# ------------------------ Parametrage fenêtre
self.title(f"À propos de {nom_application}")
self.geometry("400x300")
self.resizable(False, False)
Expand All @@ -42,17 +43,44 @@ def __init__(self):
# ------------------------ Bouton "OK"
self.bouton_ok = tk.Button(self.frame_boutons, text="OK", command=self.destroy)
self.bouton_ok.pack(side=tk.RIGHT, expand=True)

def verif_connection(self):
try:
# ------------------------ on tente de se connecter à un serveur DNS de google
socket.create_connection(("8.8.8.8", 53), timeout=3)
return True
except (socket.timeout, OSError):
return False

def verif_acces_api_github(self):
try:
# ------------------------ on essaye de faire une requête à l'api de github
socket.create_connection(("api.github.com", 443), timeout=5)
return True
except (socket.timeout, OSError):
return False

def lancer_verif_mise_a_jour(self):
self.bouton_verif_mises_a_jour.config(state="disabled")
Thread(target=self.verif_mise_a_jour, daemon=True).start()
self.bouton_verif_mises_a_jour.config(state="disabled", cursor="watch")
Thread(target=self.process_verif_mise_a_jour, daemon=True).start()

def process_verif_mise_a_jour(self):
if not self.verif_connection():
self.after(0, lambda: messagebox.showwarning("Pas d'Internet", "Aucune connexion Internet détectée. Veuillez vérifier votre connexion et réessayer."))
self.after(0, lambda: self.bouton_verif_mises_a_jour.config(state="normal"))
return
if not self.verif_acces_api_github():
self.after(0, lambda: messagebox.showwarning("GitHub inaccessible", "Impossible d'accéder à GitHub. Veuillez vérifier votre connexion Internet et réessayer."))
self.after(0, lambda: self.bouton_verif_mises_a_jour.config(state="normal"))
return
self.verif_mise_a_jour()

# utilisation de self.after(0, ...) pour modifier la gui depuis le thread car tkinter n'est pas thread-safe
def verif_mise_a_jour(self):
try:
# ------------------------ Requête à l'api de github pour obtenir la dernière version
url = "https://api.github.com/repos/" + developpeur_application + "/" + nom_application + "/releases/latest"
with request.urlopen(url) as response:
with request.urlopen(url, timeout=10) as response:
data = json.loads(response.read().decode())
derniere_version_app_sur_github = data['tag_name']
# ------------------------ enlever les éléments inutiles dans le numéro de version
Expand All @@ -71,4 +99,4 @@ def afficher_message_mise_a_jour_dispo():
except Exception as e:
self.after(0, lambda: messagebox.showwarning(title="Avertissement", message=f"Erreur lors de la vérification des mises à jour!\n{e}"))
# ------------------------ réactiver le bouton de verif des mises à jours
finally: self.after(0, lambda: self.bouton_verif_mises_a_jour.config(state="normal"))
finally: self.after(0, lambda: self.bouton_verif_mises_a_jour.config(state="normal", cursor="arrow"))
3 changes: 0 additions & 3 deletions src/FenetreLicence.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ def __init__(self):
super().__init__()
self.geometry("800x500")
self.title(f"Licence de {nom_application}")
self.wm_iconbitmap()
self.logo = tk.PhotoImage(file=chemin_image_application)
self.iconphoto(False, self.logo)
self.resizable(False, False)
try:
with open(chemin_fichier_licence, "r") as file:
Expand Down
6 changes: 0 additions & 6 deletions src/FenetreParametres.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,7 @@ def __init__(self, callback_theme=None):
# ------------------------ Paramétrage de la fenêtre des paramètres
self.title(f"Paramètres")
self.geometry("600x400")
if systeme_exploitation == 'Windows':
self.iconbitmap(chemin_image_application)
else: pass
self.resizable(False, False)
self.wm_iconbitmap()
self.logo = tk.PhotoImage(file=chemin_image_application)
self.iconphoto(False, self.logo)
# ------------------------ Créer le titre de la page de paramètres
self.label_titre_parametres = tk.Label(self, text=f"{nom_application} - Paramètres", font=("Arial", 24))
self.label_titre_parametres.pack(pady=10)
Expand Down
4 changes: 0 additions & 4 deletions src/FenetreSonnerie.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ def __init__(self):
super().__init__()
# ------------------------ Configuration de la fenêtre
self.title("Essayer la sonnerie")
# self.geometry("340x100")
self.resizable(False, False)
self.wm_iconbitmap()
self.logo = tk.PhotoImage(file=chemin_image_application)
self.iconphoto(False, self.logo)
self.protocol("WM_DELETE_WINDOW", self.fermer_fenetre_essayer_sonnerie_et_arreter_sonnerie)
# ------------------------ Configuration du style ttk
self.style = ttk.Style()
Expand Down

0 comments on commit cf2a9ce

Please sign in to comment.