require_relative '../Core/Sauvegarde.rb'
require_relative '../Core/Compte.rb'
require_relative '../Core/ConnectSqlite3.rb'

require_relative '../UI/GrilleUI.rb'
require 'gtk3'


##
# Auteur:: Brabant Mano
# Version:: 0.1
# Date:: 09/04/2020
#
#Cette classe permet à l'utilisateur de choisir entre plusieurs grilles proposées
class ChoixGrilleUI < Gtk::Box

  #@racine => L'objet auquel on va envoyer la grille que l'on a choisi (il doit definir commencerPartie(grille, nomCompte))
  attr_reader :racine

  ##
  #Ce constructeur permet de créer un nouveau ChoixGrilleUI
  #param::
  # * racine Un objet qui doit définir une méthode commencerPartie(grille, nomCompte) qui sera appelée quand l'utilisateur aura choisi une grille
  def initialize(racine)

    super(:vertical , 20)
    @racine = racine

  end

  ##
  #Cette méthode permet de charger un ensemble de grille pour les montrer à l'utilisateur
  #param::
  # * nomcompte Le nom du compte dont-on va récuperer les grilles
  # * taille La taille des grilles à récuperer
  # * difficulte La difficulte des grilles à récuperer
  def chargerGrille(nomCompte, taille, difficulte)
    #puts "dans charger grille choixGRilleUI"
    #puts "nomCompte", nomCompte,"taille", taille,"difficulte", difficulte

    tailleCase = 40

    liste = Sauvegarde.liste(Compte.recuperer_ou_creer(nomCompte), taille, difficulte)
    
    box = Gtk::Box.new(:horizontal, 30)
    liste.each_with_index do |s, i|
      #puts "liste.each"
      bouton = Gtk::Button.new(:label => "Réinitialiser")
      temp = GrilleUI.new(s.getGrille(), tailleCase)

      bouton.signal_connect "clicked" do |widget, event|
        temp.grille().recommencer()
        temp.grille().sauvegarder(Compte.recuperer(nomCompte))
      end

      temp.signal_connect "button-press-event" do
        grilleChoisie(temp.grille(), nomCompte)
      end
      temp.add_events([:button_press_mask])

      box.add(temp)
    #  box.add(bouton)

    end

    add(Gtk::Label.new("Veuillez choisir une grille"))
    add(box)

    show_all

  end


  private def grilleChoisie(grille, nomCompte)
    @racine.commencerPartie(grille, nomCompte)
  end


end