separation UI core
This commit is contained in:
parent
7efdfd4ec6
commit
2b081d3d8b
261
cave.py
261
cave.py
@ -6,7 +6,7 @@ class Etageres(object):
|
||||
def __init__(self):
|
||||
self.etageres = []
|
||||
self.nbetagere = 0
|
||||
self.couleur = {"rouge":"red","blanc":"white","rose":"pink"}
|
||||
self.couleur = {"rouge":"red","blanc":"white","rose":"pink","champagne":"yellow"}
|
||||
|
||||
@classmethod
|
||||
def load_etageres(cls,file):
|
||||
@ -24,55 +24,12 @@ class Etageres(object):
|
||||
for bouteille in etagere["bouteilles"]:
|
||||
loadobj.etageres[loadobj.nbetagere-1].add_bouteille(bouteille["pos_largeur"],bouteille["pos_hauteur"],bouteille["couleur"],bouteille["millesime"],bouteille["appelation"])
|
||||
return loadobj
|
||||
|
||||
|
||||
|
||||
|
||||
def add_etagere(self, largeur, hauteur):
|
||||
self.nbetagere += 1
|
||||
self.etageres.append(Etagere (largeur, hauteur, self))
|
||||
|
||||
def click_add_etagere(self):
|
||||
|
||||
child_window=Toplevel(self.fenetre)
|
||||
Label(child_window,text="select largeur").pack()
|
||||
largeur=StringVar()
|
||||
Entry(child_window,textvariable=largeur).pack()
|
||||
|
||||
Label(child_window,text="hauteur").pack()
|
||||
hauteur=StringVar()
|
||||
Entry(child_window,textvariable=hauteur).pack()
|
||||
|
||||
Button(child_window,text="OK",command=lambda:add(largeur.get(),hauteur.get())).pack()
|
||||
|
||||
def add(largeur,hauteur):
|
||||
child_window.destroy()
|
||||
self.nbetagere += 1
|
||||
newetagere=Etagere(int(largeur),int(hauteur),self)
|
||||
|
||||
self.etageres.append(newetagere)
|
||||
newetagere.generate_frame(self.etagere_frame)
|
||||
|
||||
|
||||
|
||||
def generate_windows(self):
|
||||
self.fenetre=Tk()
|
||||
self.fenetre.title(string="cave a vin")
|
||||
|
||||
self.etagere_frame=Frame(self.fenetre)
|
||||
for etagere in self.etageres:
|
||||
etagere.generate_frame(self.etagere_frame)
|
||||
|
||||
framecontrol=LabelFrame(self.etagere_frame,text="command pannel")
|
||||
framecontrol.grid(column=2,row=1)
|
||||
Button(framecontrol,text="add etagere",command=lambda:self.click_add_etagere()).pack()
|
||||
Button(framecontrol,text="remove etagere").pack()
|
||||
Button(framecontrol,text="save",command=lambda:self.save_etageres("cave")).pack()
|
||||
self.etagere_frame.grid(column=1,row=1)
|
||||
scrollbar = Scrollbar(self.fenetre,orient=VERTICAL)
|
||||
scrollbar.grid(column=2,row=1,sticky=N+S)
|
||||
def mainloop(self):
|
||||
self.fenetre.mainloop()
|
||||
newetagere = Etagere(largeur,hauteur,self)
|
||||
self.etageres.append(newetagere)
|
||||
return newetagere
|
||||
|
||||
def nbbouteille(self):
|
||||
i = 0
|
||||
@ -90,10 +47,13 @@ class Etageres(object):
|
||||
i += 1
|
||||
return i
|
||||
|
||||
def remove_etagere(self, etagere):
|
||||
self.etageres.remove(etagere)
|
||||
|
||||
self.nbetagere -= 1
|
||||
def remove_etagere(self,num_etagere):
|
||||
for etagere in self.etageres:
|
||||
if etagere.num_etagere==num_etagere:
|
||||
self.etageres.remove(etagere)
|
||||
self.nbetagere -= 1
|
||||
return 0
|
||||
return "pas d'étagere a ce numéros"
|
||||
|
||||
return "etagere {} suprimer".format(etagere.num_etagere)
|
||||
def save_etageres(self,file):
|
||||
@ -117,15 +77,16 @@ class Etagere(object):
|
||||
self.etageres = etageres
|
||||
self.bouteilles = []
|
||||
|
||||
|
||||
def add_bouteille(self, pos_largeur, pos_hauteur, couleur, appelation, millesime):
|
||||
for bouteille in self.bouteilles:
|
||||
if (pos_hauteur > self.hauteur or pos_largeur > self.largeur or pos_largeur < 1 or pos_largeur < 1):
|
||||
return "bouteille positioné en dehors des emplacement"
|
||||
if (pos_largeur == bouteille.pos_largeur and pos_hauteur == bouteille.pos_hauteur):
|
||||
return "une bouteille existe déja a cette emplacement"
|
||||
|
||||
self.bouteilles.append(Bouteille(pos_largeur, pos_hauteur, couleur, appelation, millesime, self))
|
||||
return "OK"
|
||||
newbouteille=Bouteille(pos_largeur, pos_hauteur, couleur, appelation, millesime, self)
|
||||
self.bouteilles.append(newbouteille)
|
||||
return newbouteille
|
||||
|
||||
def remove_bouteille(self, pos_largeur, pos_hauteur):
|
||||
i = 0
|
||||
@ -137,55 +98,8 @@ class Etagere(object):
|
||||
i += 1
|
||||
return ( "aucune bouteille troué a cette emplacement")
|
||||
|
||||
def generate_frame(self,root):
|
||||
|
||||
self.frame=LabelFrame(root,text=self)
|
||||
for hauteur in range(self.hauteur):
|
||||
for largeur in range(self.largeur):
|
||||
isset = False
|
||||
for bouteille in self:
|
||||
if (largeur == bouteille.pos_largeur and hauteur == bouteille.pos_hauteur):
|
||||
bouteille.generate_boutton(self.frame)
|
||||
isset = True
|
||||
break
|
||||
if isset == False:
|
||||
Cassier_vide(largeur,hauteur,self)
|
||||
self.frame.grid(row=self.num_etagere)
|
||||
|
||||
|
||||
def click_remove_bouteille(self,bouteille):
|
||||
self.remove_bouteille(bouteille.pos_largeur, bouteille.pos_hauteur)
|
||||
bouteille.boutton.destroy()
|
||||
Cassier_vide(bouteille.pos_largeur,bouteille.pos_hauteur,self)
|
||||
self.frame["text"]=self
|
||||
|
||||
|
||||
def click_add_bouteille(self,cassiervide):
|
||||
|
||||
child_window=Toplevel(self.etageres.fenetre)
|
||||
Label(child_window,text="select color").pack()
|
||||
couleur=StringVar()
|
||||
couleur.set("rouge")
|
||||
OptionMenu(child_window,couleur,*self.etageres.couleur.keys()).pack()
|
||||
|
||||
Label(child_window,text="enter millesime").pack()
|
||||
millesime=StringVar()
|
||||
Entry(child_window,textvariable=millesime).pack()
|
||||
|
||||
Label(child_window,text="enter appelation").pack()
|
||||
appelation=StringVar()
|
||||
Entry(child_window,textvariable=appelation).pack()
|
||||
|
||||
Button(child_window,text="OK",command=lambda:add(cassiervide,couleur.get(),millesime.get(),appelation.get())).pack()
|
||||
|
||||
def add(cassiervide,couleur,millesime,appelation):
|
||||
child_window.destroy()
|
||||
newbouteille=Bouteille(cassiervide.pos_largeur, cassiervide.pos_hauteur, couleur, appelation, millesime, self)
|
||||
self.bouteilles.append(newbouteille)
|
||||
cassiervide.boutton.destroy()
|
||||
del cassiervide
|
||||
newbouteille.generate_boutton(self.frame)
|
||||
self.frame["text"]=self
|
||||
|
||||
def save(self):
|
||||
data={"largeur": self.largeur,"hauteur": self.hauteur,"bouteilles":[]}
|
||||
@ -199,16 +113,6 @@ class Etagere(object):
|
||||
def __iter__(self):
|
||||
return iter(self.bouteilles)
|
||||
|
||||
class Cassier_vide(object):
|
||||
|
||||
def __init__(self, pos_largeur, pos_hauteur,etagere):
|
||||
self.pos_largeur = pos_largeur
|
||||
self.pos_hauteur = pos_hauteur
|
||||
self.etagere = etagere
|
||||
self.boutton=Button(etagere.frame,text="cassier vide",command=lambda:self.etagere.click_add_bouteille(self))
|
||||
self.boutton.grid(row=self.pos_hauteur,column=self.pos_largeur)
|
||||
|
||||
|
||||
class Bouteille(object):
|
||||
|
||||
def __init__(self, pos_largeur, pos_hauteur, couleur, appelation, millesime, etagere):
|
||||
@ -221,13 +125,6 @@ class Bouteille(object):
|
||||
self.appelation = appelation
|
||||
self.etagere = etagere
|
||||
|
||||
def generate_boutton(self,frame):
|
||||
|
||||
self.boutton=Button(frame,text=self,command=lambda:self.etagere.click_remove_bouteille(self))
|
||||
self.boutton["bg"]=self.etagere.etageres.couleur[self.couleur]
|
||||
self.boutton.grid(row=self.pos_hauteur,column=self.pos_largeur)
|
||||
|
||||
|
||||
def save(self):
|
||||
data={ "pos_largeur" : self.pos_largeur,"pos_hauteur" : self.pos_hauteur, "couleur" : self.couleur, "millesime" : self.millesime,"appelation" : self.appelation}
|
||||
return data
|
||||
@ -235,6 +132,129 @@ class Bouteille(object):
|
||||
def __repr__(self):
|
||||
return "{},{} \n".format(self.appelation, self.millesime)
|
||||
|
||||
|
||||
class EtageresUI(object):
|
||||
def __init__(self,etageres):
|
||||
self.etageres=etageres
|
||||
self.fenetre=Tk()
|
||||
self.fenetre.title(string="cave a vin")
|
||||
self.etageresUI=[]
|
||||
self.etagere_frame=Frame(self.fenetre)
|
||||
for etagere in self.etageres:
|
||||
self.etageresUI.append(EtagereUI(etagere,self))
|
||||
|
||||
framecontrol=LabelFrame(self.etagere_frame,text="command pannel")
|
||||
framecontrol.grid(column=2,row=1)
|
||||
Button(framecontrol,text="add etagere",command=self.click_add_etagere).pack()
|
||||
Button(framecontrol,text="remove etagere",command=self.click_remove_etagere).pack()
|
||||
Button(framecontrol,text="save",command=lambda:self.etageres.save_etageres("cave")).pack()
|
||||
self.etagere_frame.grid(column=1,row=1)
|
||||
scrollbar = Scrollbar(self.fenetre,orient=VERTICAL)
|
||||
scrollbar.grid(column=2,row=1,sticky=N+S)
|
||||
|
||||
def click_add_etagere(self):
|
||||
child_window=Toplevel(self.fenetre)
|
||||
Label(child_window,text="select largeur").pack()
|
||||
largeur=StringVar()
|
||||
Entry(child_window,textvariable=largeur).pack()
|
||||
|
||||
Label(child_window,text="hauteur").pack()
|
||||
hauteur=StringVar()
|
||||
Entry(child_window,textvariable=hauteur).pack()
|
||||
|
||||
Button(child_window,text="OK",command=lambda:add(largeur.get(),hauteur.get())).pack()
|
||||
def add(largeur,hauteur):
|
||||
child_window.destroy()
|
||||
newetagere=self.etageres.add_etagere(int(largeur),int(hauteur))
|
||||
self.etageresUI.append(EtagereUI(newetagere,self))
|
||||
|
||||
def click_remove_etagere(self):
|
||||
child_window=Toplevel(self.fenetre)
|
||||
Label(child_window,text="select etagere").pack()
|
||||
num=StringVar()
|
||||
Entry(child_window,textvariable=num).pack()
|
||||
Button(child_window,text="OK",command=lambda:remove(num.get())).pack()
|
||||
def remove(num):
|
||||
child_window.destroy()
|
||||
for etagereUI in self.etageresUI:
|
||||
if etagereUI.etagere.num_etagere== int(num):
|
||||
print ("find")
|
||||
etagereUI.frame.destroy()
|
||||
del etagereUI
|
||||
self.etageres.remove_etagere(int(num))
|
||||
|
||||
|
||||
|
||||
def mainloop(self):
|
||||
self.fenetre.mainloop()
|
||||
|
||||
class EtagereUI(object):
|
||||
def __init__(self,etagere,etageresUI):
|
||||
self.etagere=etagere
|
||||
self.etageresUI=etageresUI
|
||||
self.frame=LabelFrame(self.etageresUI.etagere_frame,text=self.etagere)
|
||||
for hauteur in range(self.etagere.hauteur):
|
||||
for largeur in range(self.etagere.largeur):
|
||||
isset = False
|
||||
for bouteille in self.etagere:
|
||||
if (largeur == bouteille.pos_largeur and hauteur == bouteille.pos_hauteur):
|
||||
BouteilleUI(bouteille,self)
|
||||
isset = True
|
||||
break
|
||||
if isset == False:
|
||||
Cassier_videUI(largeur,hauteur,self)
|
||||
self.frame.grid(row=self.etagere.num_etagere)
|
||||
|
||||
|
||||
def click_remove_bouteille(self,bouteilleUI):
|
||||
self.etagere.remove_bouteille(bouteilleUI.bouteille.pos_largeur, bouteilleUI.bouteille.pos_hauteur)
|
||||
bouteilleUI.boutton.destroy()
|
||||
Cassier_videUI(bouteilleUI.bouteille.pos_largeur,bouteilleUI.bouteille.pos_hauteur,self)
|
||||
self.frame["text"]=self.etagere
|
||||
|
||||
def click_add_bouteille(self,cassiervide):
|
||||
|
||||
child_window=Toplevel(self.etageresUI.fenetre)
|
||||
Label(child_window,text="select color").pack()
|
||||
couleur=StringVar()
|
||||
couleur.set("rouge")
|
||||
OptionMenu(child_window,couleur,*self.etageresUI.etageres.couleur.keys()).pack()
|
||||
|
||||
Label(child_window,text="enter millesime").pack()
|
||||
millesime=StringVar()
|
||||
Entry(child_window,textvariable=millesime).pack()
|
||||
|
||||
Label(child_window,text="enter appelation").pack()
|
||||
appelation=StringVar()
|
||||
Entry(child_window,textvariable=appelation).pack()
|
||||
|
||||
Button(child_window,text="OK",command=lambda:add(cassiervide,couleur.get(),millesime.get(),appelation.get())).pack()
|
||||
|
||||
def add(cassiervide,couleur,millesime,appelation):
|
||||
child_window.destroy()
|
||||
newbouteille=self.etagere.add_bouteille(cassiervide.pos_largeur, cassiervide.pos_hauteur, couleur, appelation, millesime)
|
||||
cassiervide.boutton.destroy()
|
||||
del cassiervide
|
||||
BouteilleUI(newbouteille,self)
|
||||
self.frame["text"]=self.etagere
|
||||
|
||||
class Cassier_videUI(object):
|
||||
|
||||
def __init__(self, pos_largeur, pos_hauteur,etagereUI):
|
||||
self.pos_largeur = pos_largeur
|
||||
self.pos_hauteur = pos_hauteur
|
||||
self.etagereUI = etagereUI
|
||||
self.boutton=Button(etagereUI.frame,text="cassier vide",command=lambda:self.etagereUI.click_add_bouteille(self))
|
||||
self.boutton.grid(row=self.pos_hauteur,column=self.pos_largeur)
|
||||
|
||||
class BouteilleUI(object):
|
||||
def __init__(self,bouteille,etagereUI):
|
||||
self.bouteille=bouteille
|
||||
self.etagereUI=etagereUI
|
||||
self.boutton=Button(etagereUI.frame,text=self.bouteille,command=lambda:self.etagereUI.click_remove_bouteille(self))
|
||||
self.boutton["bg"]=self.etagereUI.etageresUI.etageres.couleur[self.bouteille.couleur]
|
||||
self.boutton.grid(row=self.bouteille.pos_hauteur,column=self.bouteille.pos_largeur)
|
||||
|
||||
new = Etageres.load_etageres("cave")
|
||||
#new =Etageres()
|
||||
#new.add_etagere(10, 3)
|
||||
@ -247,5 +267,6 @@ new = Etageres.load_etageres("cave")
|
||||
#print("vos etagére contiennes {} bouteille de rouge".format(
|
||||
#new.nbbouteillecouleur("rouge")))
|
||||
#print(new.couleur)
|
||||
new.generate_windows()
|
||||
new.mainloop()
|
||||
|
||||
EtageresUI(Etageres.load_etageres("cave")).mainloop()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user