This commit is contained in:
Matt Marcha 2017-08-30 23:29:31 +02:00
commit b8ab1ff480
2 changed files with 67 additions and 10 deletions

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys import sys
import os import os
@ -18,11 +19,13 @@ class BarreOutils():
Tous les widgets sont stockés comme attributs de cette fenêtre.""" Tous les widgets sont stockés comme attributs de cette fenêtre."""
def __init__(self): def __init__(self):
self.mere = "rien"
# céation de la fenetre # céation de la fenetre
self.fenetre = Tk() self.fenetre = Tk()
# Cacher la barre de menu # Cacher la barre de menu
self.fenetre.overrideredirect(1) self.fenetre.overrideredirect(1)
# la placer par dessus les autre fenetre
self.fenetre.attributes("-topmost",1)
# Booleen fermer : devient true quand on appuie sur le bouton deconnexion # Booleen fermer : devient true quand on appuie sur le bouton deconnexion
self.fermer = False self.fermer = False
# Booleen QTdemarrer : devient true quand on appuie sur le bouton demarrer de la fenetre Quicktask # Booleen QTdemarrer : devient true quand on appuie sur le bouton demarrer de la fenetre Quicktask
@ -146,6 +149,8 @@ class BarreOutils():
self.fenetre.bind("<Enter>", self.Enter) self.fenetre.bind("<Enter>", self.Enter)
# Object qui contiendra un objet de la classe QuickTask # Object qui contiendra un objet de la classe QuickTask
self.q = object self.q = object
# Object qui contiendra un objet de la classe Browse
self.b = object
# Object qui contiendra un objet Toplevel ( une fenetre secondaire ) # Object qui contiendra un objet Toplevel ( une fenetre secondaire )
self.barreReduite = Toplevel(master=self.fenetre) # on instancie la fenetre self.barreReduite = Toplevel(master=self.fenetre) # on instancie la fenetre
self.barreReduite.attributes("-topmost",1, "-alpha", 0.01) self.barreReduite.attributes("-topmost",1, "-alpha", 0.01)
@ -160,8 +165,8 @@ class BarreOutils():
# Associer l'evenement entrée de la souris dans la fenetre à la fonction EnterBarreReduite # Associer l'evenement entrée de la souris dans la fenetre à la fonction EnterBarreReduite
self.barreReduite.bind("<Enter>", self.EnterBarreReduite) self.barreReduite.bind("<Enter>", self.EnterBarreReduite)
self.fermetureQT() # instanciation de la fenetre Quicktask et réinstanciation lors de sa fermetur self.fermetureQT() # instanciation de la fenetre Quicktask et réinstanciation lors de sa fermeture
self.fermetureBV() # instanciation de la fenetre Browse et réinstanciation lors de sa fermeture
# Compteurs servants à determiner quand le curseur sort de la fenetre # Compteurs servants à determiner quand le curseur sort de la fenetre
self.cpt1 = 0 # s'incrémente quand on sort des boutons ou de la fenetre self.cpt1 = 0 # s'incrémente quand on sort des boutons ou de la fenetre
self.cpt2 = 0 # s'incrémente quand on sort des boutons seulement self.cpt2 = 0 # s'incrémente quand on sort des boutons seulement
@ -171,6 +176,10 @@ class BarreOutils():
"""L'utilisateur veut fermer le programme et se deconnecter""" """L'utilisateur veut fermer le programme et se deconnecter"""
self.callback() self.callback()
if self.fermer == True: if self.fermer == True:
self.b.fermer = True
self.b.root.destroy() # on ferme la fenetre Browse
self.q.fermer = True
self.q.fenetre.destroy() # on ferme la fenetre
self.fenetre.destroy() self.fenetre.destroy()
### Demande de confirmation après avoir appuyer sur le bouton Deconnexion ### Demande de confirmation après avoir appuyer sur le bouton Deconnexion
def callback(self): def callback(self):
@ -189,6 +198,8 @@ class BarreOutils():
self.q.fenetre.state("normal") # la fenetre Quicktask passe à l'état normal self.q.fenetre.state("normal") # la fenetre Quicktask passe à l'état normal
self.bouton_tache_rapide.configure(bg="grey") # le bouton tache rapide passe à la couleur gris foncé self.bouton_tache_rapide.configure(bg="grey") # le bouton tache rapide passe à la couleur gris foncé
self.bouton_tache_rapide.configure(relief = "sunken") # et son aspect devient appuyé pour signifier à l'utilisateur que la fenetre tache rapide est ouverte self.bouton_tache_rapide.configure(relief = "sunken") # et son aspect devient appuyé pour signifier à l'utilisateur que la fenetre tache rapide est ouverte
elif self.q.fenetre.state() == "iconic": # sinon si fenetre est a l'etat iconic
self.q.fenetre.state("normal") # on rend visible la fenetre QuickTask
else: # sinon else: # sinon
self.q.fenetre.state("withdraw") # l'état de Quicktask devient withdraw self.q.fenetre.state("withdraw") # l'état de Quicktask devient withdraw
self.bouton_tache_rapide.configure(bg="SystemButtonFace") # le bouton tache rapide redevient de couleur et d'aspect normaux self.bouton_tache_rapide.configure(bg="SystemButtonFace") # le bouton tache rapide redevient de couleur et d'aspect normaux
@ -204,9 +215,19 @@ class BarreOutils():
# TODO : ouvrir la fenetre des rapports # TODO : ouvrir la fenetre des rapports
### cliquer sur le bouton naviguer ouvre la fenetre de navigation ### cliquer sur le bouton naviguer ouvre la fenetre de navigation
def naviguer(self): def naviguer(self):
"""L'utilisateur veut ouvrir la fenetre des rapports""" """L'utilisateur veut ouvrir la fenetre des rapports"""
self.browse = BV(mother=self.fenetre) if self.b.root.state() == "withdrawn": # si la fenetre NAviguer est à l'état withdrawn ( cachée, invisible )
self.b.root.state("normal") # la fenetre Naviguer passe à l'état normal
self.bouton_naviguer.configure(bg="grey") # le bouton Naviguer passe à la couleur gris foncé
self.bouton_naviguer.configure(relief = "sunken") # et son aspect devient appuyé pour signifier à l'utilisateur que la fenetre Naviguer est ouverte
elif self.b.root.state() == "iconic": # sinon si fenetre est a l'etat iconic
self.b.root.state("normal") # on rend visible la fenetre Naviguer
else: # sinon
self.b.root.state("withdraw") # l'état de Naviguer devient withdraw
self.bouton_naviguer.configure(bg="SystemButtonFace") # le bouton naviguer redevient de couleur et d'aspect normaux
self.bouton_naviguer.configure(relief = "raised") # et on associe les widget de la fenetre barreOutils à la fonction Leave qui détermine quand le curseur de la souris sort de la fenetre
self.fenetre.bind("<Leave>", self.Leave)
self.q.fenetre.state("iconic")
### convertir la chaine du paramentre de geometry( en liste de parametre entier ### convertir la chaine du paramentre de geometry( en liste de parametre entier
def geoliste(self, g): def geoliste(self, g):
r=[i for i in range(0,len(g)) if not g[i].isdigit()] r=[i for i in range(0,len(g)) if not g[i].isdigit()]
@ -227,21 +248,32 @@ class BarreOutils():
base_path = os.path.abspath(".") base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path) return os.path.join(base_path, relative_path)
### Si l'état de la fenetre n'est pas iconic, on retire les bords et le cadre windows ### Si l'état de la fenetre n'est pas iconic, on retire les bords et le cadre windows
def iconification(self, event): def iconification(self, event):
if not self.fenetre.state() == 'iconic': if not self.fenetre.state() == 'iconic':
self.fenetre.overrideredirect(1) self.fenetre.overrideredirect(1)
### Intercepte la fermeture de la fenetre Quicktask / lorsqu'on clique sur la croix de la fenetre Quicktask : ### Intercepte la fermeture de la fenetre Quicktask / lorsqu'on clique sur la croix de la fenetre Quicktask :
def intercepteFermetureQT(self): def intercepteFermetureQT(self):
self.q.fermer = True self.q.fermer = True
self.q.fenetre.destroy() # on ferme la fenetre self.q.fenetre.destroy() # on ferme la fenetre
#print("quicktask.fermer= ",self.q.fermer)
self.bouton_tache_rapide.configure(bg="SystemButtonFace") # le bouton tache rapide redevient de couleur normal self.bouton_tache_rapide.configure(bg="SystemButtonFace") # le bouton tache rapide redevient de couleur normal
self.bouton_tache_rapide.configure(relief = "raised") # et de relief normal self.bouton_tache_rapide.configure(relief = "raised") # et de relief normal
self.fermetureQT() # on appel la fonction fermetureQT self.fermetureQT() # on appel la fonction fermetureQT
def intercepteFermetureBV(self):
self.b.fermer = True
self.b.root.destroy() # on ferme la fenetre
self.bouton_naviguer.configure(bg="SystemButtonFace") # le bouton tache rapide redevient de couleur normal
self.bouton_naviguer.configure(relief = "raised") # et de relief normal
self.q.fenetre.state("iconic")
self.fermetureBV() # on appel la fonction fermetureBV
### Lors de la fermture de la fenetre QT : ### Lors de la fermture de la fenetre QT :
def fermetureQT(self): def fermetureQT(self):
self.q = QT(mother=self.fenetre) # On renouvelle l'objet de la classe Quicktask qui ouvre une fenetre Quicktask self.q = QT(mother=self.fenetre) # On renouvelle l'objet de la classe Quicktask qui ouvre une fenetre Quicktask
self.q.fenetre.attributes("-topmost",1) # On la fait passer au dessus des autres
self.q.fenetre.withdraw() # On cache la fentre self.q.fenetre.withdraw() # On cache la fentre
self.q.fenetre.bind("<Unmap>", self.reduce) # On associe le fait de changer l'état de la fentre ( iconic) à la fonciton reduce self.q.fenetre.bind("<Unmap>", self.reduce) # On associe le fait de changer l'état de la fentre ( iconic) à la fonciton reduce
self.q.fenetre.protocol("WM_DELETE_WINDOW", self.intercepteFermetureQT) # On associe intercepte la fermeture de la fenetre Quicktask self.q.fenetre.protocol("WM_DELETE_WINDOW", self.intercepteFermetureQT) # On associe intercepte la fermeture de la fenetre Quicktask
@ -249,7 +281,15 @@ class BarreOutils():
self.q.QTdemarrer = False self.q.QTdemarrer = False
self.q.cancel.bind('<ButtonPress>', self.QT_cancel) # On associe le fait de presser le bouton annuler à la fonction QT_cancel self.q.cancel.bind('<ButtonPress>', self.QT_cancel) # On associe le fait de presser le bouton annuler à la fonction QT_cancel
self.fenetre.bind("<Leave>", self.Leave) # On associe le fait de sortir avec le curseur de la souris de la fenetre à la fonction Leave self.fenetre.bind("<Leave>", self.Leave) # On associe le fait de sortir avec le curseur de la souris de la fenetre à la fonction Leave
def fermetureBV(self):
self.b = BV(mother=self.fenetre)
self.b.root.attributes("-topmost",1) # On la fait passer au dessus des autres
self.b.root.attributes("-topmost",0)
self.b.root.withdraw() # On cache la fentre
self.b.root.bind("<Unmap>", self.reduce) # On associe le fait de changer l'état de la fentre ( iconic) à la fonciton reduce
self.b.root.protocol("WM_DELETE_WINDOW", self.intercepteFermetureBV) # On associe intercepte la fermeture de la fenetre Browse
self.b.startQT.bind('<ButtonPress>', self.BV_startQT)
self.fenetre.bind("<Leave>", self.Leave) # On associe le fait de sortir avec le curseur de la souris de la fenetre à la fonction Leave
### Lors de l'appuie sur le bouton demarrer de la fenetre Quicktask ### Lors de l'appuie sur le bouton demarrer de la fenetre Quicktask
def QT_start(self,args): def QT_start(self,args):
if self.q.QTdemarrer == False: if self.q.QTdemarrer == False:
@ -268,6 +308,8 @@ class BarreOutils():
print(" leave") print(" leave")
if self.q.fenetre.state() == "normal": if self.q.fenetre.state() == "normal":
self.cpt1 -= 1 self.cpt1 -= 1
if self.b.root.state() == "normal":
self.cpt1 -= 1
self.cpt1 += 1 self.cpt1 += 1
print("cpt1 = ", self.cpt1) print("cpt1 = ", self.cpt1)
print("cpt2 = ", self.cpt2) print("cpt2 = ", self.cpt2)
@ -287,7 +329,15 @@ class BarreOutils():
self.cpt1 = 0 self.cpt1 = 0
self.cpt2 = 0 self.cpt2 = 0
self.boolBarreReduite = True self.boolBarreReduite = True
### lorsqu'on clique sur le bouton "Demarrer une taches rapide pour ce projet" dans la fenetre naviguer
def BV_startQT(self,args):
if self.bouton_tache_rapide["bg"] == "green":
showinfo('Tache rapide', 'Une tâche rapide est déjà en cours')
#elif self.q.fenetre.state() == "normal":
# showinfo('Tache rapide', 'La fenetre des tâches rapides est déjà ouverte')
else:
self.q.fenetre.state("normal")
### lorsque le curseur de la souris rentre dans la fenetre ### lorsque le curseur de la souris rentre dans la fenetre
def Enter(self, args): def Enter(self, args):
self.fenetre.overrideredirect(1) self.fenetre.overrideredirect(1)

View file

@ -18,6 +18,7 @@ class BrowseView:
self.ctrl = BrowseController() self.ctrl = BrowseController()
self.search_input = "" self.search_input = ""
self.fermer = False # passe à True quand on clique sur la croix de la fenetre
#On lance la fenêtre par rapport à la fenêtre mère #On lance la fenêtre par rapport à la fenêtre mère
BrowseView.root = Toplevel(mother) BrowseView.root = Toplevel(mother)
@ -58,9 +59,15 @@ class BrowseView:
self.pr_list.pack() self.pr_list.pack()
Button(pr_tab, text="Voir le projet").pack() Button(pr_tab, text="Voir le projet").pack()
<<<<<<< HEAD
Button(pr_tab, text="Démarrer une tâche rapide pour ce projet", Button(pr_tab, text="Démarrer une tâche rapide pour ce projet",
command=self.launch_task).pack() command=self.launch_task).pack()
=======
# Button(pr_tab, text="Démarrer une tâche rapide pour ce projet").pack()
BrowseView.startQT = Button(pr_tab, text="Démarrer une tâche rapide pour ce projet")
BrowseView.startQT.pack()
>>>>>>> ede2e2c61b6fe96a13c87bdd4694e48a9919627b
##Tâches ##Tâches
ta_tab = Frame(tabs) ta_tab = Frame(tabs)