Exemplo n.º 1
0
    def build(self):
        """
       Attributs :
            dico_bouton_reponse :
                clé : texte de la question
                valeur : dictionnaire avec
                            clé : texte de la réponse,
                            valeur : le bouton associé à cette réponse

            dico_importance : (à faire)
                clé : texte de la question
                valeur: dictionnaire avec
                            clé : texte de l'importance
                            valeur : le bouton associé à cette importance
            dico_texte_reponse:
                clé : nom du fichier pour la réponse (appelé reponse dans l'ensemble du programme)
                valeur : le texte à l'interieur de ce fichier

            dico_layout_question:
                clé : texte de la question
                valeur : intégralité du layout de la slide de la question



            rgba_base : couleur des boutons de base
            rgba_oui : couleur des boutons quand ils sont activés


            Méthodes :
                dico_reponse_vers_response:
                    entrée : self, dictionnaire de bouton_reponses
                    sortie : la seule réponse activé du dictionnaire
                        On fait une boucle sur les items (réponse, bouton) du dictionnaire.
                        Si le bouton est activé on renvoie réponse

                dico_importance_vers_importance:

                click_bouton_reponse:
                    entrée : self
                             instance
                    On récupère la question grâce à l'id de l'instance (premier terme du split par ,)
                    On va chercher le dictionnaire de boutons correspondant : self.dico_bouton_reponse[question]
                    Via une boucle sur les .values() du précédent dictionnaire (on a donc des boutons):
                        on change la couleur de tous les boutons (et on les désactive) sauf l'instance
                    on change la couleur de l'instance et on active l'instance

                synthese:
                    entree : self, instance





       """
        self.dico_bouton_reponse = {}
        self.dico_bouton_importance = {}
        self.dico_texte_reponse = {}
        self.dico_layout_question = {}

        self.rgba_base = (135,142,127,0.25)
        self.rgba_oui = (0,1,0,1)

        self.direction = "bottom"


        for reponse in os.listdir("Texte_bouton"):
            with open(os.path.join("Texte_bouton",reponse)) as file:
                self.dico_texte_reponse[reponse] = file.read()


        for question in os.listdir("Questions"): # question est l'uid du scrutin
            path_question =  os.path.join("Questions",question)
            with open(path_question,"r") as file:
                texte_question = file.read()
            temp_dico_bouton_reponse = {}
            for reponse,texte_reponse in self.dico_texte_reponse.items():
                temp_bouton = Button(text = texte_reponse)
                temp_bouton.id = question + "," + texte_reponse + "," + "reponse"
                temp_bouton.background_color = self.rgba_base
                temp_bouton.bind(on_press = self.click_bouton)
                if "texte_bouton_non_votant.txt" in reponse:
                    temp_bouton.activated = True
                    #temp_bouton.background_color = self.rgba_oui
                else:
                    temp_bouton.activated = False
                temp_dico_bouton_reponse[texte_reponse] = temp_bouton
            self.dico_bouton_reponse[question] = temp_dico_bouton_reponse


            temp_layout = GridLayout(cols = 1)
            question_layout = BoxLayout(orientation = "horizontal")
            #label_question = Label(text=texte_question)
            #label_question.size_hint_y = None
            #label_question.text_size = (question_layout.width,None)
            #label_question.height = question_layout.height
            #label_question.size_hint_x = 0.8
            my_label = WrappedLabel(text=texte_question,
                                    font_size="20sp")
            #question_layout.add_widget(label_question)
            question_layout.add_widget(my_label)
            precision_layout = BoxLayout(orientation = "vertical")

            precision_bouton = Button(text = "Précision")
            precision_bouton.bind(on_press = self.precision)
            precision_bouton.id = texte_question
            precision_bouton.size_hint_x = 1
            precision_layout.add_widget(precision_bouton)
            temp_bouton_synthese = Button(text = "Synthèse")
            temp_bouton_synthese.bind(on_press = self.vers_synthese)
            precision_layout.add_widget(temp_bouton_synthese)


            precision_layout.size_hint_x = 0.2

            question_layout.add_widget(precision_layout)


            temp_layout.add_widget(question_layout)
            layout_bouton = BoxLayout(orientation = "horizontal")
            for reponse,bouton in self.dico_bouton_reponse[question].items():
                layout_bouton.add_widget(bouton)
            temp_layout.add_widget(layout_bouton)
            self.label_importance = Label(text = "Cette question est-elle importante pour vous ?")
            self.label_importance.font_size = 25
            temp_layout.add_widget(self.label_importance)
            self.liste_importance_texte = ["Un peu","Beaucoup","À la folie","Pas du tout"]
            self.importance_layout = BoxLayout(orientation = "horizontal")
            #Mettre importance dans la synthèse
            temp_dico_bouton_importance = {}
            for importance_texte in self.liste_importance_texte:
                temp_bouton = Button(text = importance_texte)
                temp_bouton.id = question + "," + importance_texte + "," + "importance"
                temp_bouton.activated = False
                temp_bouton.background_color = self.rgba_base
                temp_bouton.bind(on_press = self.click_bouton)
                if temp_bouton.text == self.liste_importance_texte[-1]:
                    temp_bouton.activated = True
                    #temp_bouton.background_color = self.rgba_oui
                temp_dico_bouton_importance[importance_texte] = temp_bouton
                self.importance_layout.add_widget(temp_bouton)

            temp_layout.add_widget(self.importance_layout)

            self.dico_bouton_reponse[question] = temp_dico_bouton_reponse
            self.dico_bouton_importance[question] = temp_dico_bouton_importance
            self.dico_layout_question[question] = temp_layout
            self.add_widget(self.dico_layout_question[question])



        # On fait une dernière slide pour la synthèse (à changer dans une future version)
        layout_synthese = BoxLayout(orientation="vertical")
        layout_haut = BoxLayout(orientation="horizontal")
        label_synthese = Label(text="Localisation")
        label_synthese.font_size = 70
        bouton_reset = Button(text="Reset questions")
        bouton_reset.size_hint_x = 0.3
        bouton_reset.background_color = (1, 0, 0, 1)
        bouton_reset.font_size = 25
        layout_haut.add_widget(label_synthese)
        layout_haut.add_widget(bouton_reset)

        layout_synthese.add_widget(layout_haut)
        self.text_input_synthese = TextInput(text="Entrer votre adresse avec votre ville")
        self.text_input_synthese.font_size = 50
        layout_synthese.add_widget(self.text_input_synthese)
        self.bouton_synthese = Button(text="Que choisir ?")
        self.bouton_synthese.font_size = 50
        self.bouton_synthese.bind(on_press=self.synthese)
        layout_synthese.add_widget(self.bouton_synthese)
        self.add_widget(layout_synthese)