1.3 - Modifier l'interface utilisateur de l'objet (guise et composer)


Modifer l'interface utilisateur de l'objet

Un objet comme threshold est compose' d'un ensemble de fichiers repartis dans une arboresence de re'pertoires. Composer, pre'sente ces fichiers classe's dans des listes et facilement accessible gra^ce a` son interface interactive. Pour appeler Composer, electionnez l'item "Edit Object (Composer)" du menu "Object Operations" de craftsman:

Les boutons de gauche permettent de montrer suivant leur type les differents fichiers qui compose un objet:

A l'aide du menu "File Operations" vous allez pouvoir e'diter, renomer, supprimer (et plus encore) chaqu'un de ces fichiers. En fonction du type de fichier composer appel l'utilitaire qui lui correspond. Nous allons maintenant editer le fichier (threshold.pane pour notre exemple) qui decrit l'interface utilisateur.


Edition de l'interface utilisateur d'un objet avec GUISE

Sous cantata chaque routine posse'de une icone (un "glyph") que l'on trouve dans les menus et sous menus de la barre supe'rieure. A chaque icone est associe'e une boite de dialogue (l'interface utilisateur) qui pre'cise les parame'tres d'entre'es/sorties de la routine, exemple:

La boite qui est montree ici est celle que l'on doit obtenir apres l'edition avec le GUISE du fichier threshold.pane. Lorsque que vous cliquez sur le bouton en haut a gauche d'un glyph, cantata interprete le fichier .pane de ce glyph et en dessine sa boite de parametres. Si vous cliquez ensuite sur le bouton "Run", cantata lance automatiquement la commande unix associe'e avec les parametres de la boite:

Evidemment il faut qu'il existe dans votre $path un binaire threslold pour que cela marche (donc avoir au prealable compiler la routine), sinon cantata vous retourne un message d'erreur. Vous pouvez donc lancer le binaire threslold (avec les bons parametres !) directement dans un shell unix sans utiliser cantata.

Notre routine Threshold a 3 parame`tres deux noms de fichiers et une valeur entie`re pour le niveau de seuil. Il faut donc spe'cifier dans le fichier threshold.pane ces parametres. Il y a deux facons de proceder: Soit nous e'ditons nous meme ce fichier, mais cela requie`re de connaitre les instructions UIS des interfaces graphiques khoros. Ou soit on utilise le superbe outils qu'est le GUISE pour e'diter interactivement les fichiers UIS.

Dans la fene^tre de "Composer" cliquez sur le bouton "UIS" (rep 1), se'lecionnez le fichier "threshold.pane" (rep 2) et appelez le "guise" (rep 3) a l'aide du menu bouton "File Operations":

La fene^tre du programme "guise" appara^t et nous montre dans une autre fene^tre le resultat de l'interpretation des instructions graphiques de l'actuel fichier threshold.pane (par de'faut on trouve deux se'lecteurs de fichiers):

Pour notre routine Threshold, il nous faut ajouter le parame`tre du niveau de seuil: Selectionnez l'item "Integer" du bouton menu "Simples Variables" (rep 1) dans le "Guise":

Un nouveau parame`tre "Integer" apparai^t alors dans la fene^tre de sortie. Cliquez (rep 1) sur ce parametre a l'aide du bouton central de la souris pour faire apparai^tre la fene^tre "Integer Selection Menuform": vous pouvez alors changer le titre "Integer" par "Upper Threshold Level" (rep 1),. Le dessin "e'claire" (rep 2) en fin de champs vous indique qu'il faut valider par la touche "Enter" pour appliquer vos modifications. Vous pouvez alors observer l'effet sur la fene^tre de sortie.

Pour respecte la contrainte ( 0<= niv <= 255) sur la valeur du niveau de seuil il suffit de mettre 0 dans le champs "Lower Bound" et 255 dans le champs "Upper Bound" (rep 3). Vous pouvez aussi changer la valeur par de'faut en mettant par exemple 128 dans le champs "Default". N'oubliez pas de valider par "Enter" pour que vos changment soient pris en compte:

Avec ces informations, Composer ge'ne're automatiquement le code C qui recupe're les valeurs des parametres (les noms des fichiers et la valeur du seuil) de la ligne de commande unix. En faite ces valeurs seront contenues dans des variables que vous devez definir dans le champs "Variables" de chaque objets graphique: pour le seuil on propose de remplacer le nom "int1" par "level" (rep 4). Les noms des "Variables" des champs "Input" et "Output" sont par defaut respectivement i et o (vous pouvez le constater en cliquent comme precedemment a l'aide du bouton central de la souris sur les champs "Input" et "Output").

Dans le programme C, on acce'dera aux diffe'rents parame`tres par une variable structure'e nome' clui_info de la maniere suivante: clui_info->NomParametre_TypeParametre. Ou NomParametre est le nom du champs "Variables" et TypeParametre est un mot qui rappel le type de ce champs (TypeParametre = [string, int, float, file, ...]. Pour notre exempleThreshold on aura:

La variable structure'e clui_info sera declare'e dans le fichier threshold.h, ce fichier est acce`ssible avec le bouton SOURCE du "List Files" de Composer.

Le champs "Desc" est utilise' pour les informations comple'mentaires concernant le parame`tre: Il est exploite' par Composer pour abriquer la documenatation online acce`ssible par le man khoros (commande kman), mais aussi par le bouton "Help" du glyph.

De la me^me manie`re vous changerez les "Title" des parametres "input" et "Output" des fichiers d'entre'e par "Input Image" et "Ouput Image".Vous pouvez egalement deplacer ces champs pour les regrouper: on deplace un champs deplace un champs en placent le pointeur de la souris sur ce champs et en pressent sur le bouton gauche de la souris. Pour redimenssionner un champs vous devez le se'lectionner par ses angles. On peut alors obtenir la boite suivante:

Le GUISE offre encore de nombreuse possibilite's que vous pouvez explorer. Cantata est le meilleur exemple de ce que l'on peut realiser avec le GUISE !!!

Mais avant de quitter le "guise" n'oublier pas d'effectuer la sauvegarde du threshold.pane en cliquent sur le bouton "SAVE (Needed)"puis sur le bouton "Close" du guise.

Il faut noter ici que le code qui a ete genere precedemment n'est plus a jour par rapport a votre nouveau fichier thresold.pane (interface utilisateur). Il faut donc regenerer le code en cliquent sur e bouton "Commands" de composer, la fenetre suivante apparait:

vous cliquez alors sur le bouton "Generate Code". Des messages apparaissent alors dans la "Commands window" sur la generation de la documentationpour et des differents fichiers C. Dans l'etape suivante vous allez examiner le code source de votre objet et lui ajouter les instructions de traitement. Mais si vous voulez revenir a l'etape precedente...

Des questions ? Eric Llorens.