# -*- encoding:Utf8 -*-

from tkinter import *
from random import *
from math import *

#==== Classe secondaire ====

class Fleur(object):
    
    def __init__(self, canevas, x, y, r):
        """
        Crée une fleur de rayon r centrée au point de coordonnées (x;y)
        dans le canevas <can>
        """
        # création des pétales blancs:
        alpha = 0
        while alpha < 2*pi:
            canevas.create_oval(x+r*cos(alpha)-r/1.5, y - r*sin(alpha)-r/1.5,\
                            x+r*cos(alpha)+r/1.5, y - r*sin(alpha)+r/1.5,\
                            fill = 'white')
            alpha += pi/4

        # création du bouton jaune:
        canevas.create_oval(x-r, y-r, x+r, y+r, fill = 'yellow')

#==== Classe principale ====

class Application(Tk):

    def __init__(self):
        Tk.__init__(self)
        self.title("Exercice 8.10")

        # Création des étiquettes de texte (complétez le positionnement !):
        Label(self, text = "V'là le printemps !", fg='blue', width=18,
              bg='pink', font = ("Comic sans Ms", "22"))

        Label(self, text = 'Coord. x : ', fg='blue',
              font=("Comic sans Ms", "16"))
        Label(self, text = 'Coord. y : ', fg='blue',
              font=("Comic sans Ms", "16"))
        Label(self, text = 'Insecte : ', fg='blue',
              font=("Comic sans Ms", "16"))

        # Création des zones de texte (complétez le positionnement !):
        self.coordx = Entry(self, width = 22)
        self.coordy = Entry(self, width = 22)
        

        # Dictionnaire des images affichables:
        self.imgInsecte = {'abeille': PhotoImage(file = 'abeille.gif'),
                           'coccinelle': PhotoImage(file = 'coccinelle.gif'),
                           'papillon': PhotoImage(file = 'papillon.gif')}
        # Insecte actuellement prêt à être affiché:
        self.insecte = 'abeille'

        # Création de la liste de choix:
        self.liste = Listbox(self, height = 3, width = 20, bg='yellow')

        # positionnez la liste de choix dans la fenetre!


        # insertion des lignes de la liste de choix!
        

        # liez l'événement double clic dans la liste de choix avec
        # le gestionnaire d'événement choixInsecte!
        

        # Création et positionnement du canvas:
        self.can = Canvas(self, width = 400, height = 200, bg = 'lightgreen')

        # positionnez le canevas dans la fenetre!
        
        # Création des boutons (Utilisation d'un code compact) (complétez le positionnement !)
        Button(self, text='Insecte', command=self.afficherInsecte)
        Button(self, text='Fleurs', command=self.afficheFleurs)
        Button(self, text='Effacer', command=self.effacerCanevas)
        Button(self, text='Quitter', command=self.quit)

        
    def afficheFleurs(self):
        """
        Affiche 15 fleurs de différents rayons de manière aléatoire dans le canevas
        """
        for i in range(15):
            x = randint(15, self.can.winfo_width()-15)      # winfo_width permet de récupérer la largeur d'un canevas

            y = randint(15, self.can.winfo_height()-15)     # winfo_height permet de récupérer la hauteur d'un canevas
            r = randint(4,10)
            Fleur(self.can, x, y, r)

    def effacerCanevas(self):
        "Efface l'ensemble des éléments situés sur le canevas <can>"
        # à compléter !

    def choixInsecte(self, event):
        "Mise à jour de l'insecte à afficher"
        # à compléter !

    def afficherInsecte(self):
        """
        Affiche l'insecte à la position indiquée dans les champs de texte
        ou à une position aléatoire si l'utilisateur n'a pas rempli les champs.
        """
        # à compléter !


#==== Corps principal du programme ====

# Création du widget principal:
fen = Application()

# Démarrage du réceptionneur d'événements
fen.mainloop()
fen.destroy()
