Problème avec "GtkFileChooserButton"

Problème avec "GtkFileChooserButton" - Python - Programmation

Marsh Posté le 02-01-2020 à 15:54:53    

Bonjour,
 
Dans la petite application ou je travaille, j'ai réussi à faire en sorte de choisir un dossier et que celui-ci soit pris en compte via un GtkFileChooserButton. La partie "graphique" de l'application se faisant via Glade.
Le problème est sur le bouton en lui-même, en 1er lieu, j'aimerais qu'il pointe par défaut sur un dossier et en 2nd lieu, j'aimerais qu'après le choix d'un dossier quelconque, le bouton se "mette à jour".
 
1er screenshot pour comprendre, lorsque vais dans les Préférences de l'application, j'ai ceci :  
https://reho.st/thumb/self/94e725a35c007d39fc806c68887aa018518ca302.png
 
Vous pouvez voir en arrière fond mes jeux GoG non installés, je ne peux que les télécharger. Ayant deux jeux déjà installés, je navigue via le bouton vers le dossier en question, comme le montre le screenshot suivant :
https://reho.st/thumb/self/6f4e25eeb05f317f74e8d7b10ae3e3f8f6d97859.png
 
En cliquant sur "Save", la prise en compte à bien eu lieu car si vous regardez mes jeux, vous remarquerez que 2 jeux sont passés de l'état "Download" -> "Play", signe que l'application a bien trouvé les jeux. Par contre, si je retourne dans les préférences, il se trouve que le bouton est de nouveau du "None" :
https://reho.st/thumb/self/dca077bef1f094bfb382d7ce04a6c3f8b60b7a85.png
 
En espérant avoir été clair, je répète ce que je n'arrive pas à finaliser :
1- Avoir un dossier choisi par défaut au 1er lancement des paramètres sur le bouton.
2- Que le dit bouton se "mette à jour" à chaque fois que je choisi un dossier quelconque et que je sauvegarde.
 
Voici la portion de code :

   @Gtk.Template.Callback('on_filechooser_button_file_set')
    def __set_install_path(self, widget) -> None:
        path = self.filechooser_button.get_filename()
        print("The path is :", path)
        self.filechooser_button.set_current_folder(path)
 
    def __save_install_dir_choice(self) -> bool:
        choice = self.filechooser_button.get_current_folder()
        print("The path saved is :", choice)
 
        if not os.path.exists(choice):
 
            try:
                os.makedirs(choice)
            except:
                return False
        else:
            write_test_file = os.path.join(choice, "write_test.txt" )
            try:
                with open(write_test_file, "w" ) as file:
                    file.write("test" )
                    file.close()
                os.remove(write_test_file)
            except:
                return False
        # Remove the old directory if it is empty
        old_dir = self.__config.get("install_dir" )
        try:
            os.rmdir(old_dir)
        except OSError:
            pass
 
        self.__config.set("install_dir", choice)
        return True
 
    @Gtk.Template.Callback("on_button_save_clicked" )
    def save_pressed(self, button):
        self.__save_language_choice()
        if self.__save_install_dir_choice():
            self.response(Gtk.ResponseType.OK)
            self.parent.refresh_game_install_states(path_changed=True)
            self.destroy()
        else:
            dialog = Gtk.MessageDialog(
                parent=self,
                modal=True,
                destroy_with_parent=True,
                message_type=Gtk.MessageType.ERROR,
                buttons=Gtk.ButtonsType.OK,
                text=_("{} isn't a usable path" ).format(self.entry_installpath.get_text())
            )
            dialog.run()
            dialog.destroy()
 
    @Gtk.Template.Callback("on_button_cancel_clicked" )
    def cancel_pressed(self, button):
        self.response(Gtk.ResponseType.CANCEL)
        self.destroy()

Reply

Marsh Posté le 02-01-2020 à 15:54:53   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed