| ||||||||||||
|
Présentation
de Curses Situation :
Un grand nombre de terminal dont l’implémentation de leurs pilotes noyau sont
différents. But :
Assurer un contrôle
fin sur la saisie et la sortie de caractères indépendamment du type de
terminal utilisé. Solution :
1.
L’interface GTI (General Terminal Interface). è
Problème : exige une masse importante de code de bas niveau :
difficultés pour l’utilisateur normal. è Pour de nombreux programmes, une interface de plus haut niveau apparaît souhaitable. 2.
une
bibliothèque graphique qui gère automatiquement pour l’utilisateur les spécificités
du terminal : Curses. NB. La
bibliothèque Curses est utilisée par l’éditeur de texte vi. Compiler
avec Curses : ·
Installation
de la bibliothèque ncurses à partir du CD d’installation. Ncurses est
une émulation gratuite du curses de system V. ·
Inclure
le fichier d’entête curses.h dans vos codes sources. ·
Compilation : 1.
gcc
program.c –lcurses. 2.
gcc –I
/usr/include/ncurses program.c –lncurses.
Concepts
de Curses : ·
Curses
agit sur les écrans, les fenêtres et les sou-fenêtres. ·
Il y’ a
deux structures de données manipuler : 1.
stdscr :
c’est la fenêtre correspondant à l’écran physique(ce à quoi l’écran
devrait ressembler. 2.
curscr :
l’aspect réel de l’écran. refresh(
)
·
système
de coordonnées (y,x) : (ligne,colonne). ·
WINDOW *initscr(void ) : initialisation des structures de données
temporaires. ·
int endwin(void ) : rétablir les paramètres initiaux. ·
La
structure WINDOW : utilisée pour stocker l’affichage désiré. Les
E/S écrans avec Curses :
Autres
fonctionnalités de Curses : · Effacer le contenu de l’écran :
int erase(void) ; int
clear(void) ; int
clrtobot(void); int clrtoeol(void); ·
Déplacer le curseur : int
move(y,x) ;
0<= y <= LINES ; 0<=
x <= COLUMNS. ·
Attributs
de caractères : §
Attributs :
A_BOLD,A_DIM,A_REVERSE,A_UNDERLINE …. §
Functions:
attron(attribut), attroff(attribut). ·
Clavier : §
Modes clavier :
echo(void) ;
noecho(void) ;
cbreak(void);
nocbreak(void); §
Entrée : getch(void) ; getstr(char*) ; getnstr(char*,
int); scanw(format,….);
·
Les fenêtres :
§
Création et suppression :
WINDOW
*newwin(nbrlignes , nbrcols , y , x) ;
int delwin(WINDOW *f) ; §
Généralisation des fonctions : ·
Ajouter « w »
à toutes les fonctions déjà vu et ajouter le paramètre WINDOW* :
Exemple : waddch(WINDOW *fen, const chtype car) ; ·
Ajouter « mv »
pour un déplacement dans la fenêtre. Exemple : mvaddch(int y, int x, const chtype car ) ;
·
Ajouter « mvw »
pour les deux cas. Exemple : mvwaddch(WINDOW *fen, int y, int x,
const chtype car ) ; ·
Les sous fenêtres :
§
Création et suppression :
WINDOW *subwin(WINDOW *parent, nbrlignes ,
nbrcols , y , x) ;
int delwin(WINDOW *f) ; §
Généralisation des fonctions : Les
mêmes règles que pour les fenêtres. §
Caractéristiques : ·
Partage
l’espace de stockage avec la fenêtre parent. ·
Toute
modification de la sous fenêtre affecte la
fenêtre parent. §
Intérêt : ·
Permettre
de faire défiler facilement des parties d’une fenêtre. ·
Les couleurs : §
bool has_colors(void); §
start_color(void); §
int init_pair(short nbr_de_paireshort
avant_plan,short fond); §
COLOR_PAIR(int nbr_de_paire);
Ecrit par : Bel Hadj Sami & Hassen Bahri |