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


Répondre à