• Aucun résultat trouvé

Applications avec Interface Graphique

N/A
N/A
Protected

Academic year: 2022

Partager "Applications avec Interface Graphique"

Copied!
13
0
0

Texte intégral

(1)

Algorithmique et Langage C

www.polytech.unice.fr/žvg/index-xidian.html

Granet Vincent - [email protected]

Xi’an - Octobre 2019 - Avril 2020

(2)

Interface utilisateur

différentes sortes

textuelles, graphiques, sonores, tactiles, virtuelles,etc.

boîtes à outils : Gtk, QT, Awt/Swing, Tcl/Tk, ..., LibSX

bibliothèques de composants graphiques (widgets) prêts à l’emploi fenêtres, boutons, menus déroulant, barres de progression, ...

son

(3)

Applications avec Interface Graphique

Conception

Séparation claire entre le cœur de l’application (avec ses données) et l’IG.

Architecture MVC (Modèle, Vue, Contrôleur)

consultation

modification

mise à jour

Contrôleur

évenement

réponse

réponse

Modèle

Utilisateur évenement Vue

son

(4)

LibSX

boîte à outils très simple et facile à utiliser

gestion des événements parfonctions de rappels(callbacks) construction de l’interface graphique :

1 création et assemblage des composants graphiques ;

2 connexion des composants graphiques avec le modèle son

(5)

LibSX - création des widgets

/usr/share/doc/libsx-dev/

html/

examples/

Button, Label, Menus, ...

typeWidget

Widget MakeButton (char s, ButtonCB func, void data) exemple

Widget b = MakeButton("Clic", NULL, NULL);

Widget l = MakeLabel("Hello");

son

(6)

LibSX - assemblage des widgets

méthode simple et limitée

void SetWidgetPos(Widget w, int pos1, Widget w1, int pos2, Widget w2) exemple

SetWidgetPos(b, PLACE_RIGHT, l, NO_CARE, NULL);

SetWidgetPos(x, PLACE_UNDER, b, PLACE_RIGHT, c);

son

(7)

LibSX - fonctions de rappel / callbacks

fonctions liées aux widgets

déclenchées par des événements produits par les widgets (e.g.clic sur un bouton)

void func(Widget w, void d) exemple

v o i d func(Widget w, v o i d d) {

//une action déclenchée par w qui agit sur la donnée d ...

} ...

//func sera exécutée lorsque l'utilisateur appuiera sur le bouton Widget b = MakeButton("Clic", func, d);

son

(8)

LibSX - architecture

vue.c callbacks.c modèle.c

Vue Callbacks Modèle

Données partagées

événement

user

son

(9)

LibSX

main.c

# i n c l u d e <stdio.h>

# i n c l u d e <stdlib.h>

# i n c l u d e <libsx.h>

# i n c l u d e "callbacks.h"

# i n c l u d e "Donnees.h"

i n t main(i n t argc, c h a r argv[]) { Donnees d;

i f (OpenDisplay(argc, argv) == 0) { fprintf(stderr,"Can't open display\n");

r e t u r n EXIT_FAILURE;

}

initDonnees(&d);

init_display(argc, argv, &d); //création de la vue MainLoop();

r e t u r n EXIT_SUCCESS;

}

son

(10)

LibSX

vue.c

# i n c l u d e "callbacks.h"

v o i d init_display (i n t argc, c h a r argv[], v o i d d) {

//création et assemblage des widgets ...

Widget b = MakeButton("Click", func, d);

Widget l = MakeLabel("Hello");

SetWidgetPos(b, PLACE_RIGHT, l, NO_CARE, NULL);

...

//pour gérer les couleurs GetStandardColors();

//pour af cher l'interface ShowDisplay();

}

(11)

LibSX

callbacks.c

contient toutes les fonctions callbacks

#include <libsx.h>

#include "Donnees.h"

v o i d func(Widget w, v o i d d) {

//une action déclenchée par w qui agit sur la donnée d .... uneFonctionDuModele(d); ....

}

callbacks.h

contient les prototypes de toutes les fonctions callbacks

e x t e r n v o i d func(Widget, v o i d );

...

226/228

(12)

LibSX

Donnees.h

contient la définition de données partagées entre les callbacks et le modèle

#pragma once

t y p e d e f s t r u c t { //données partagées } Donnees;

e x t e r n v o i d initDonnees(Donnees );

//fonctions de traitement du modèle

e x t e r n v o i d uneFonctionDuModele(Donnees );

e x t e r n ....

son

(13)

LibSX

modele.c

contient toutes les fonctions du modèle qui traitent les données partagées (ou non)

# i n c l u d e "Donnees.h"

//fonctions de traitement du modèle

v o i d initDonnees(Donnees ) {

...

}

v o i d uneFonctionDuModele(Donnees ) { .... }

....

son

Références

Documents relatifs

– Placement ligne par ligne et de gauche à droite selon l'ordre d'ajout des

[r]

[r]

[r]

$Dynamic@62a0399b,flags=288,maximumSize=,minim umSize=,preferredSize=,defaultIcon=,disabledIcon=,dis

[r]

[r]

cornettes, pommes de terre, fromage dur, lardon, oignon frit, sauce, épices Provenance de la viande: Suisse (disponible de mars à novembre).