11.07.2015 Views

Les Interfaces Graphiques sous ADA - Cours

Les Interfaces Graphiques sous ADA - Cours

Les Interfaces Graphiques sous ADA - Cours

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Les</strong> <strong>Interfaces</strong> <strong>Graphiques</strong><strong>sous</strong> <strong>ADA</strong>Pierre AttalMarion Couffignal


Plan• Il était une fois l’IHM l• Qu’est ce qu’une une IHM graphique?• <strong>Les</strong> logiciels de création d’IHM d• GLADE• Définition• Installations• Création et Exemples• Compilation et Exemples• Conclusion• Bibliographie• Questions


Il était une fois l’IHM l• IHM=Interface Homme Machine• 1950 ­ 1980• Utilisateurs: des informaticiens ingénieursnieursTraitement en lot• Utilisateurs: des novices en informatiqueOrdinateur réserv r servé à une clientèlele élitiste• Systèmes hautement interactifsUtilisateurs esclaves du système• Ordinateur partout• Utilisateurs maîtres du système• 1980 ­ maintenant


Qu’estest­ce qu’une une IHM graphique• Opposition avec ligne de code• efficaces,• faciles à utiliser,• adaptés à leur contexte d'utilisation.


GLADE – Définition• Outil interactif de conception d‘IHM dgraphique• Gestion/Génération d‘IHM d IHM: « reversed engineering »• Génération de fichiers XML par compilation• Bibliothèquelibglade: : lecture dynamique des fichiersXML• Fichiers XML utilisés s par de nombreux langages(Code portable)• La version 2.x permet la génération gdirecte du codeen C, C++ et Ada 95


GLADE ­ Installations• Compatibilité avec Windows difficile:è orienté Linux• Procédure d’installationd1. Librairie Gtk2. Librairie GtkAda3. GladeSpécification des noms des chemins deslibrairies dans le « path ».


GLADE – Création• Fenêtre principale:Affiche la liste des fenêtres présentes dans le projet:• Fenêtre classique,• Fenêtre de dialogue,• Sélection de fichiers, de police et de couleurs


GLADE – Création• Palette des Widgets:Propose tous les Widgets disponiblesdans GTK, classés par catégories.Widget = 2 types:• Type Objet (Gtk_xxx_Record)• Type access (Gtk_xxx)


GLADE – Création• Composition hiérarchique d’une dfenêtre:Fenêtre(Gtk_Window)ComposantLabelBoîte (Gtk_Box)• Construite en plusieurs couches• Utilisation de « conteneurs »• Objets• Surcouches: « Label »


GLADE – Création• Hiérachie des Widgets:


GLADE ­ Exemple• Exemple d’un dbouton:


GLADE – Création• Fenêtre de propriétés s :Permet de modifier les paramètres duWidget sélectionné, tel que sataille, son étiquette, sa bulled’aide…Permet également la gestion dessignaux par simple sélection del’action désirée.


GLADE – Création• Gestion des signauxClickedBouton_1PressedConnexionBouton_2ClickedBouton_3Connexion• Types de signaux:• « pressed »• « released »• « clicked »• « enter »• « leave »On_Bouton_1_pressedOn_Bouton_1_clickedOn_Bouton_2_clickedOn_Bouton_2_clickedOn_Bouton_2_clicked


GLADE – Création• Gestion des signaux :


GLADE – Création• Code source :Button_Callback.ConnectÏϧÏÏÏϧÏÏÏÏÏÏ ÏÏÏÏÏÏ(Menu_Principal.Gerer_Fichier,"clicked",ÏϧÏÏÏϧÏÏÏÏÏÏ ÏÏÏÏÏÏButton_Callback.To_Marshaller(On_Gerer_Fichier_Clicked'AccessAccess), False);Ïϧ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­Ïϧ­­On_Gerer_Fichier_Clicked ­­Ïϧ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ÏϧÏϧÏÞßàßàprocedureOn_Gerer_Fichier_ClickedÏϧÏÏÏϧÏ(Object : accessGtk_Button_Record'Class)ÏϧÏÏÏϧÏisÏϧÏÏÏϧbeginÏϧÏÏÏϨ¹¹Ï ¹¹Ïnull null;ÏϧÏÏ©ÏÏ©endOn_Gerer_Fichier_Clicked;


GLADE – Création• Editeur de Menu :Sert à configurer unWidget menuAjout deraccourcis clavier,ajout d’options, de<strong>sous</strong> menus, fenêtreà propos.


GLADE – Création• Fenêtre Hiérarchie:Visualisation de la structure du projet.Distinction des les liens de parenté entreles Widgets.


GLADE ­ Exemple• Structure du code:• Main.adb• Nom_fenetre_package.adb• Nom_fenetre_package.ads• Nom_fenetre_package_callback.adb (pr appel)• Nom_fenetre_package_callback.ads


GLADE ­ Exemple• Nom_fenetre_package.adbÏϧÏϧ­­bouton "lancer la simulation"ÏϧÏϨ¹¹ÏSet_Size_Request (M_Simuler.Frame1, 312, 104);ÏϧÏϨ¹¹ÏPut (M_Simuler.Fixed2, M_Simuler.Frame1, 24, 8);ÏϧÏϨ¹¹ÏGtk_New (M_Simuler.Lancer_Simu, ­"Lancer la simulation");ÏϧÏϨ¹¹ÏSet_Relief (M_Simuler.Lancer_Simu, Relief_Normal);ÏϧÏϧÏϧÏϨ¹¹ÏSet_Size_Request (M_Simuler.Lancer_Simu, 192, 32);ÏϧÏϨ¹¹ÏPut (M_Simuler.Fixed2, M_Simuler.Lancer_Simu, 80, 144);ÏϧÏϨ¹¹ÏButton_Callback.ConnectÏϧÏϧÏÏÏÏÏÏ(M_Simuler.Lancer_Simu, "clicked",ÏϧÏϧÏÏÏÏÏÏButton_Callback.To_Marshaller (On_Lancer_Simu_Clicked'Access), False);ÏϧÏϨ¹¹ÏAdd (M_Simuler, M_Simuler.Fixed2);ÏϧÏÏ©end Initialize;


GLADE ­ Exemple• Nom_fenetre_package­callback.adbcallback.adbÏϧ­­­­­­­­­­­­­­­­­­­­­­­­­­­­Ïϧ­­ On_Lancer_Simu_Clicked ­­Ïϧ­­­­­­­­­­­­­­­­­­­­­­­­­­­­ÏϧÏϧÏÞßàprocedure On_Lancer_Simu_ClickedÏϧÏϧÏ(Object : access Gtk_Button_Record'Class)ÏϧÏϧÏisÏϧÏϧ ­­modif marionÏϧÏϧÏíÏSimulation : Simulation_Access;ÏϧÏϧ ­­modif marionÏϧÏϧbeginÏϧÏϧ­­modif marionÏϧÏϨ¹¹ÏGtk_New (Simulation);ÏϧÏϨ¹¹ÏShow_All (Simulation);ÏϧÏϨ¹¹ÏText_IO.Put_Line(" Test !");ÏϧÏϧ ­­null;ÏϧÏϧ­­modif marionÏϧÏÏ©end On_Lancer_Simu_Clicked;


GLADE ­ Exemple• Exemple pratique:


GLADE – Compilation• Glade è AdaNom_fichier.gladeTranslate.batNom_fichier.adsNom_fichier.adb"D:\GTK\bin\gate­in.exe" essai070208.glade > essai070208.ada"C:\GNAT\GPL_2006\bin\gnatchop.exe" ­w essai070208.ada


Conclusion• Portabilité du code• Glade = Gain de temps• Outil interactif de conception d‘IHM dgraphique• Hiérarchie des widgets• Association widgets/signals/callbacks• Possibilités s de définir dses propreswidgets


Conclusion• Utilités:• Plateforme linux• Plateforme windows• Futurs logiciels• « Hibachi » : logiciel création IHM


Bibliographie• Historique des IHM (Laurence Nigay)http://iihm.imag.fr/nigay/ENSEIG/RICM3/1­Historique.pdf• GtkAda 2.8 User's GuideGtkAda 2.8 Reference Manualhttp://libre.adacore.com/GtkAda/• Documentation GtkAda 1.2http://www.fil.univ­lille1.fr/~durif/CLA/docGtkAdalille1.fr/~durif/CLA/docGtkAda­1.2.pdf 1.2.pdf

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!