Programmation événementielle et composants d’interface (« widgets »)

Slides:



Advertisements
Présentations similaires
Été INF1025 Driouch Elmahdi
Advertisements

Tous droits réservés. Reproduction intégrale ou partielle interdite sans autorisation écrite de la partdu titulaire des droits dauteur. Institut de Formation.
Eléments visuels. 2009/2010L3-Eco - Université de Bordeaux2 Les feuilles La feuille : cest le cadre dans lequel tous les autres éléments (visuels) dune.
Le Clavier.
Etude De Microsoft Word
MIKHAYLOVA Vera Exposé Java principe de fonctionnement Lundi 17 mai 2004 DEUG 1ère année Science du langage Paris III.
Interaction Directe contrat Creative Commons Paternité-Pas d'Utilisation Commerciale- Partage des Conditions Initiales à l'Identique.
FORMATION OUTILS « FONCTIONS »
Comprendre lergonomie du module Sconet BEE. La page daccueil de Sconet BEE Nom de létablissement Version du module Nom du module Sconet BEE Code de létablissement.
Comprendre l’ergonomie du module STSWEB
Lexique des manœuvres de base pour utiliser à PowerPoint
Formulaire HTML Introduction. Définition de formulaire.
La fonction Style Permet de créer des types de texte, par exemple
Principe de défilement du document dans un traitement de texte
le nom du logiciel et le nom du fichier s’appelle la barre des titres
Les TABLEAUX Retour au menu principal.
Systèmes d’exploitation
Vidéogramme séance 2 du 13 février 2012 Les Fenêtres Windows Micro Informatique au Cellier Joseph HOHN Séance du 13 février 2012 Sur le thème de Découverte.
PRÉSENTATION Logiciel de traitement de texte:
Programmation événementielle et composants dinterface (« widgets »)
POWERPOINT 97 POMazagol Les barres d'outils PowerPoint donne la possibilité douvrir de nombreuses « barres doutils ». Pour ajouter ou enlever une barre.
Microsoft Office Word 2003 C.A.H.M
Initiation à 3D Studio Max
Ce bouton vous donne accès à la plupart des commandes qui étaient auparavant sous le menu Fichier en plus des options de l'application.
Professeure : Kaoutar Année Scolaire : 2012 / 2013
Powerpoint Expert !.
La souris.
Que puis-je faire avec WordQ ?
Projection La nouvelle ergonomie présentée au travers de quelques écrans. MàJ : 16/12/2013.
Python Interfaces graphiques
Création d’un programme :
Création d'un diaporama Création d'un diaporama
Gestion des événements liés à la fenêtre et aux périphériques dentrée.
Les structure d’un programme :
FICHIERS : Définition : Algorithme général:
Manipulation de formulaires en Javascript
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
Les présentations assistées par ordinateur (préAO)
Création et présentation d’un tableau avec Word 2007
Réaliser par : Moh Fakhri Slama
Javascript 2° PARTIE : EVENEMENTS ET OBJETS
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II PRO-1024.
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Plan de la leçon Réf. p. WRD- 149 Les styles Les listes hiérarchiques
Interfaces graphiques. Composants d'interface utilisateur graphique (GUI) 1 Bibliothèques Awt et Swing Procédures communes pour l'utilisation de ces clases.
14 La gestion d’événements
Introduction à l’informatique en gestion 1 Plan de la leçon Modalités d’affichage La navigation Ouvrir/Enregistrer La saisie La sélection La.
Traitement de texte +.
Iup MIAGe 3° année Projet MIAGe Toulouse – Groupe 21 Charte graphique.
Utilisation de Transcriber
Conception des pages Web avec
Microsoft Official Academic Course, Microsoft Excel 2013
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
PROCESSING Semaine 03. PLAN DE LEÇON Interaction avec un programme Gestion de la souris Gestion du clavier.
DreamWeaver Séance 2 HMIDA Ahmed A2008. Plan 1.Calques 2.CSS 3.Modèles 4.Formulaires 5.Comportements 6.Mise en ligne.
Bouton officeBarre de titre Ruban Office Espace de travail.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Flash 2 ème séance Interaction François Marliac Mickaël Moreira.
Flash MX – Séance 2 Interactions & ActionScript David Rapin Si28 P06.
Dreamweaver le retour Avec Les Formulaires Les Calques
FORMULAIRES FOMULAIRE Permet à l’utilisateur d’entrer des renseignements le concernant. Utilisation –Inscription sur un site –Mise à jour d’une base.
Dreamweaver 2 Plan 1.Calques 2.CSS 3.Modèles 4.Comportements 5.Formulaires 6.Mise en ligne 1 Timothée Devaux Myriam Roudy Dreamweaver 2 Printemps 2008.
Interface Tutorial Flash 2 Par Vincent ² SI28 – P06 Bibliothèque Composant s Panneau actions Barre d'outils Timeline.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
© 2010 Sage - Tous droits réservés 1 SIGMA Atelier Découvertes Ergonomie et Prise en Main SAGE ERP X3 Version 6.
© Fujitsu Canada Introduction à Minitab Version 14 - Anglais Formation Black Belt Lean Six Sigma.
Programmation événementielle. Logiciel traditionnel, sans interface utilisateur { Lire les entrées d’un fichier Effectuer des calculs Écrire les sorties.
Visual Information Solutions IDL 7.0 Pour une utilisation optimale d’IDL.
1 Initiation à la micro-informatique Le matériel CFPPA d’AUXERRE La Brosse Réalisation : Gilles BERDAL 2005 un clic pour la suite… Clavier et Souris.
Cours 2 : Le système d’exploitation Windows, le clavier  Windows, qu’est-ce que c’est ?  Les icônes  L’utilisation de la souris  Les fenêtres  La.
Transcription de la présentation:

Programmation événementielle et composants d’interface (« widgets »)

Logiciel traditionnel, sans interface utilisateur { Lire les entrées d’un fichier Effectuer des calculs Écrire les sorties dans un fichier }

… avec interface utilisateur minimale { Lire les entrées du clavier Effectuer des calculs Écrire les sorties sur l’écran }

… dans une boucle Répéter { Afficher l’invite de commandes Lire la commande Exécuter la commande Écrire les sorties sur l’écran }

Logiciel événementiel (« event-driven program») Répéter { Attendre un événement Traiter l’événement }

Logiciel événementiel pour une interface graphique Afficher l’interface (fenêtre(s), etc.) Répéter { Attendre un événement d’entrée e switch(e.type) { case KEY_PRESS:... case MOUSE_BUTTON:... case MOUSE_MOTION:... } Si nécessaire, mettre à jour l’affichage } Boucle d’événements

Logiciel traditionnel: Le logiciel « a le contrôle ». Le logiciel peut prendre le temps nécessaire pour traiter les entrées. L’utilisateur doit attendre. Les entrées sont limitées aux chaînes de caractères. Logiciel graphique interactif: L’utilisateur doit (avoir l’impression de) « avoir le contrôle ». Le logiciel doit traiter chaque événement assez rapidement pour répondre en temps réel. L’utilisateur peut générer différents événements à tout moment.

Structure, ou classe, d’événement Event { unsigned long int timestamp; int type; // KEY_PRESS, MOUSE_... int x, y; int key; boolean flag }

Sortes d’événements (1) KEY_DOWN ou …_PRESS (touche appuyée), KEY_UP ou …_RELEASE (touche relâchée), KEY_TYPED (synonyme pour DOWN + UP) – Attributs: temps, caractère ASCII (‘a’, ‘b’, ‘c’, …), touche de clavier (F1, F2, PageUp, Esc, …), s’il s’agit d’une auto-répétition ou non, coordonnées (x, y) de la souris, état des touches de modification (Ctrl, Shift, etc.)

Sortes d’événements (2) MOUSE_DOWN ou …_PRESS (bouton appuyé), MOUSE_UP ou …_RELEASE (bouton relâché), MOUSE_CLICK (synonyme pour DOWN + UP) MOUSE_DOUBLE_CLICK, MOUSE_MOTION ou …_MOVEMENT (mouvement), MOUSE_DRAG (glissement) – Attributs: temps, bouton (1-5) (gauche, droit, milieu, …), coordonnées (x, y), état de tous les boutons (utile pour les chordes), état des touches de modification (Ctrl, Shift, etc.) – Taux d’échantillonnage de la position dépend habituellement de la charge CPU

Autres sortes d’événements?

Sortes d’événements (3) RESIZE (redimensionnement), MAXIMIZE, MINIMIZE – Attributs: temps, nouvelles dimensions (width, height) WINDOW_CLOSE – Permet au logiciel de sauvegarder ses données, faire le ménage, etc.

Autres sortes d’événements?

Sortes d’événements (4) MOUSE_ENTER (souris entre dans la fenêtre), MOUSE_LEAVE ou …_EXIT (souris sort de la fenêtre) – Attributs: semblable à ceux des autres événements de souris REDRAW ou EXPOSE ou PAINT (demande de redessiner) – Peut être généré par un redimensionnement, un mouvement d’une autre fenêtre, ou par une demande du client même – Attributs: rectangle(s) à redessiner (x, y, width, height), c.-à-d. les rectangles endommagés (« damaged »)

Rectangles endommagés

Boucle d’événements en C avec Xlib (UNIX/X11) XEvent event; ouvrir une fenêtre while (!quit) { XNextEvent(..., &event); // attend le prochain événement switch (event.type) { case Expose:... // redessiner case ConfigureNotify:... // redimensionnement case ButtonPress:... // bouton de souris case ButtonRelease:... // bouton de souris case MotionNotify:... // mouvement de souris case KeyPress: // touche de clavier switch (XLookupKeysym(&event.xkey,...)) { case XK_F1:... // afficher de l’aide case XK_Escape: quit=true; break; } break; }

Boucle d’événements Xlib – comment travailler en même temps while (!quit) { while (0 == XEventsQueued(...)) { // Peut avancer une animation, simulation, des calculs, etc. faireUnPeuDeTravail(); usleep(100000); // dormir une fraction de seconde } XNextEvent(..., &event); switch (event.type) { case... } Optionnel Une autre façon de faire du travaille en même temps: utiliser des événements spéciaux …

Sortes d’événements (5) TIMER ou TIMEOUT (un délai de temps expiré), IDLE (le CPU est libre) – Envoyés au client sur demande seulement – Permettent de faire un peu de travail en attendant d’autres événements – Les « timeouts » peuvent être envoyés de façon périodique (exemple: pour une animation), ou seulement une fois (ex: pour retarder une action)

Exemples d’actions retardées Affichage d’une infobulleOuverture d’un sous-menu

Traitement d’événements en C avec GLUT (OpenGL) void drawHandler() {... // redessiner } void reshapeHandler( int width, int height ) {... // redimensionnement } void mouseHandler( int button,int state,int x,int y ) { // boutons de souris if (button==GLUT_LEFT_BUTTON && state==GLUT_DOWN)... } void passiveMotionHandler( int x, int y ) {... // mouvement de souris } void motionHandler( int x, int y ) {... // glissement de souris } void keyboardHandler( unsigned char key, int x, int y ) {... // touches normales } void specialKeyHandler( int key, int x, int y ) {... // touches spéciales } int main(... ) { glutInit... glutCreateWindow( "My Window" ); glutDisplayFunc( drawHandler ); glutReshapeFunc( reshapeHandler ); glutMouseFunc( mouseHandler );... glutMainLoop(); } Ces sous-routines s’appellent des « event handlers » (traiteurs d’événements) ou « callbacks » Où est la boucle d’événements?

Classes d’événements, architecture orientée objets Event KeyEventMouseEvent MouseButtonEventMouseMotionEvent … …

Les informations décrivant les événements peuvent être encodées dans une structure (exemple: Xlib), une ou plusieurs classes (ex: Java), ou de simples paramètres (ex: GLUT). Ces informations peuvent être traitées par une seule sous-routine, ou par plusieurs sous-routines selon le type d’événement. (Ces sous-routines s’appellent « event handlers » (traiteurs d’événements), ou « callbacks », ou sont des méthodes d’objets « event listeners » (écouters d’événements)) La boucle d’événements peut être située dans le code du client (ex: Xlib), ou à l’extérieur (dans une librarie ou « framework »; ex: GLUT).

Quelques exemples en Java …

Quelques éléments des interfaces graphiques

Les fenêtres

Curseurs standards de X11 Les curseurs de souris (ou pointeurs)

Les curseurs de texte (« caret »)

Les widgets

Les boutons

Les cases à cocher (« checkbox ») Pour des choix binaires et indépendants

Les boutons radio Pour des choix mutuellement exclusifs

Les infobulles (« tooltips »)

Barres de défilement

Barre de défilement contextuelle (« popup »)

Barre de progrès

Les champs Champs de texte Champs numériques – Avec « spinner » – Avec unités – Avec barre de défilement

Les menus

Barre de menus

« Pull-down menu »

Menu contextuel (« popup menu »)

Les menus d’options (« option menus »)

Affichage de sous-menus

Les ellipses …

« Tear-off menus »

Liste déroulante (« Pick list » ou « Scrolling list »)

« Split menu »

Les cadres

Les onglets

Des onglets hiérarchiques ?

Les séparateurs

Un bouton + menu

Créateur de tables

Les palettes de boutons

Les barres d’outils

Des boîtes de dialogue

Les tableaux

« tree list »

Cadres défilables (« scrolling area »)

Sélecteur de couleur (« color picker »)

Observations Widgets simples vs widgets composés Widgets composés: – Un enfant vs plusieurs enfants – Contenu fixe vs contenu variable

Observations (2) Certains widgets aident à gérer l’espace Onglets, menus, barres de défilement, …

L’exemple de SimplePaint.java …