next up previous contents
suivant: Création du programme d'installation monter: SOUTENANCE FINALE MARVIN (Modest-encoding précédent: Cryptographie   Table des matières

Sous-sections

L'interface graphique

Introduction

pt Comme tout logiciel qui se respecte au 21ème siècle, Marvin se devait d'avoir une interface graphique. A l'origine Marvin devait comporter une interface en ligne de commande mais la compléxité de son utilisation l'aurait complétement rendu austère. Nous avons donc oublier cette façon pour nous concentrer sur une interface totalement ``cliquable''. pt Il restait le choix de la librairie, soit une alternative entre les bibliothèques Qt et GTK. Ignorant tout de leurs possibilités, et à priori de notoriétés équivalentes, notre décision s'est portée sur GTK pour la simple et unique raison qu'il est développé en C alors que l'autre l'est en C++. Composé déjà de deux langages, le C et le Caml, nous n'avons pas pris le risque de rendre Marvin trop lourd à la compilation.

Structure d'un programme GTK

Ce paragraphe présente brièvement la philosophie du GTK. Le rôle de GTK est d'implémenter le mécanisme de gestion des widgets (WInDows GadgET) . Pour cela, il utilise une hiérarchie d'objets qui ressemble beaucoup à ce qu'on pourrait rencontrer en C++. L'ancêtre commun à tous les objets est donc le GtObject. Ainsi, le principe de fonctionnement c'est de déclarer un widget du type désiré (GtkWindow, GtkLabel, GtkList...) et d'utiliser ses propriétés et celles de ces parents. Par exemple, un bouton (GtkButton) dérivent des GtkBins qui eux mêmes sont des containers ce qui permet d'insérer, le plus généralement, mais ce pourrait être n'importe quel objet, un Label dans ce bouton. De plus comme nous allons le voir au paragraphe suivant, tous ces widgets possèdent des signaux, ce qui permet de les interconnecter. pt Pour compiler un programme GTK, de la même façon que pour la glib, il existe l'outil gtk-config qui automatise correctement le tout.

Les fonctions de rappel

Les GtkObjects, et donc tous les objets du GTK, sont capables dans certaines conditions d'émettre des signaux. Par exemple lorsque l'utilisateur clique sur un bouton, le GtkButton concerné émet le signal "clicked". Les signaux sont en fait des messages que les objets envoient au GTK, qui décide ce qu'il doit en faire. C'est un des principes de base de la programmation GTK et même si GTK possède déjà des fonctions pour traiter la plupart des signaux, l'intérêt réside évidemment dans le fait que l'on peut définir ses fonctions. Une telle fonction s'appelle "fonction de rappel" ou callback en anglais. Ainsi pour connecter une fonction de rappel à un objet et un signal, on utilise la fonction suivante :
guint gtk_signal_connect(GtkObject *objet, const gchar *nom_du_signal,
                         GtSignalFunc callback, gpointer data);


Où object est un objet du GTK, nom_du_signal est comme son nom l'indique est le nom du signal, comme par exemple "clicked", "destroy". callback est donc la fonction de rappel qui sera appelée automatiquement à chaque fois que l'objet émettra le signal et gpointer les paramètres passés à cette fonction. Le prototype de la fonction callback doit être :


gboolean callback(GtkObject *object, gpointer data);


Il est évidemment possible de connecter un signal et un objet à plusieurs fonctions et il existe aussi d'autres fonctions pour pouvoir agir sur un objet intervenant sur un autre.

Références

L'apprentissage du GTK ne constitue pas le but de ce rapport. Pour avoir une approche complète et détaillée de cette librairie, je ne saurait vous conseiller que le très bon livre en français "Programmation Linux avec GTK+" de David Olin aux éditions Eyrolles ainsi que le tutorial de Ian Main et Tony Gale disponible à l'url www.gtk.org, en anglais mais très agréable pour débuter.

La gui de Marvin

Souvent les interfaces graphiques ont le défaut d'être trop lourdes, provoquant alors l'effet inverse que celui désiré, la simplicité d'utilisation. C'est pourquoi, les principales directives de la gui (graphical user interface) de Marvin sont l'ergonomie et la simplicité. Ainsi, en lançant Marvin, l'utilisateur se verra proposé une fenêtre contenant les différents utilisateurs, pouvant à sa guise en ajouter ou en supprimer. Lors de l'ajout d'un nouvel utilisateur, un nom et une icône représentative lui seront demandé puis pour qu'il puisse être identifié, il devra effectuer l'apprentissage. Un fois l'utilisateur créé, il peut lancer l'interface de cryptage en cliquant sur ``Ok''. Il devra, a ce moment ci, s'identifier auprès de Marvin. Une fois la fenetre principale lancée, l'utilisateur peut crypter ou décrypter les fichiers qu'il désire sans oublier qu'il doit fournir la partie restante de la clef. Une aide complète est accessible pour avoir l'explication de tous les boutons.

Screenshots

\includegraphics[]{screenshot1.ps}


liste des utilisateurs


\includegraphics[]{screenshot2.ps}


identification


\includegraphics[]{screenshot3.ps}


interface de cryptographie

next up previous contents
suivant: Création du programme d'installation monter: SOUTENANCE FINALE MARVIN (Modest-encoding précédent: Cryptographie   Table des matières
root 2002-06-18