Le Vendredi 10 Juin 2005 16:23, paul (aka: azmodai) a écrit : > salut, > > Comment est-ce que vous voyez le fonctionnement/l'appel des differentes > interfaces gtk/ncurses par Nsetup ? > J'ai quelques propositions sur l'organisation: > - L'utilisation des l'interfaces gtk et ncurses pourrait se faire > de façon identique pour facilité > la programmation des appels interfaces de Nsetup. C'est-à-dire > que les noms et syntaxe des fonctions > publiques des toolkits ncurses et gtk seraient identiques. Ainsi > ça permetterait une utilisation transparente > des interfaces par Nsetup. > Alors la seule chose qui changerait serait l'inclusion d'un > fichier : Nsetup-gtk ou Nsetup-ncurses en début de > programme. > Exemple concret : Si l'utilisateur souhaite lancer l'interface > gtk de Nsetup le fichier : Nsetup-gtk serait inclut > et alors la fct DisplayGUITrucWithDesConneries(10,50,"Titre", > option1,option2,option3 ...); afficherait > une interface correspondante avec gtk par contre si l'utilisateur > souhaite lancer l'interface ncurses de Nsetup : > le fichier Nsetup-ncurses serait inclut et la fonction > DisplayGUITrucWithDesConneries(10,50,"Titre",option1, > option2, option3 ...); afficherait le même genre d'interface > (en moins complexe que gtk) que precedament > mais en ncurses :-) Voilà la premiére proposition.
Perso, je n'aime pas du tout cette solution. Chaque toolkit est différent, avec une implémentation différente, des syntaxes différentes et une manière de fonctionner différente. Créer une couche d'abstraction au-dessus des toolkits serait pour moi ajouter plus de complexité qu'autre chose. Prenons ne serait-ce que la gestion des événements : les événements sont loin d'être identiques selon qu'on est en mode texte ou en mode graphique. Et même entre deux toolkits graphiques, le nom et la manière dont les événements sont propagés peuvent être différents. Je pense que parmi nous, certains ont un toolkit préféré ou avec lequel ils ont déjà travaillé. Je serai plus pour que par défaut, chaque commande ait une interface en mode texte. Ce serait ceux qui écrivent la commande qui ferait cette interface. Après, si qqn d'autre aiment Gtk+, il peut faire l'interface Gtk+ de cette commande, si un autre préfère Qt, il fait celle en Qt, etc. > - Ou alors l'utilisation des interfaces gtk et ncurses se feraient > par l'intermédiare d'appels de fichiers (ruby donc) > ou le fonctionnement des interfaces y serait programmé. Si > l'utilisateur souhaite lancer Nsetup > avec une interface ncurses le premier fichier appelé Nsetup > serait : Nsetup-ncurses_menu-general.rb (vu que > la premiére choses que l'on voit quand on lance Nsetup c'est le > menu pour choisir les modules). Si par contre > l'utilisateur lance Nsetup avec gtk : le fichier > Nsetup-gtk_menu-general.rb serait lancé. Et ce serait ainsi pour > chaque étape. Dans le cas ou l'utilisateur appel un module nommé > X avec gtk le fichier Nsetup-gtk_X.rb > serait lancé. Et on trouverait dans ce fichier tout le nécessaire > pour l'interface gtk du module X. > Voilà pour la seconde proposition. J'aurai tendance à proposer la solution que j'ai adopté pour mon test de Python avec les interfaces graphiques :-) : le coeur même de chaque commande, càd le code chargé de traiter les informations, doit être un fichier, et les interfaces graphiques, réalisées avec les différentes toolkits, de cette commande être dans leur fichier propre. Nsetup devrait proposer une méthode globale (ou héritée, puisqu'on est en POO) permettant à chaque commande de charger et d'afficher l'interface qui lui correspond, en fonction du type de toolkit choisi par l'utilisateur. ++ Gontran
