|
|
|
@ -7,17 +7,23 @@ |
|
|
|
|
|
|
|
|
|
En fait, nous allons plutôt parler de \textbf{ncurses} qui est |
|
|
|
|
l'implémentation actuelle de l'ancêtre \texttt{curses}. Voic ce |
|
|
|
|
qu'en dit une page de man : |
|
|
|
|
qu'en dit une page de man~: |
|
|
|
|
|
|
|
|
|
\begin{quote} |
|
|
|
|
The ncurses library routines give the user a terminal-independent |
|
|
|
|
method of updating character screens with reasonable optimization. |
|
|
|
|
This implementation is ``new curses'' (ncurses) and is the approved |
|
|
|
|
replacement for 4.4BSD classic curses, which has been discontinued. |
|
|
|
|
The ncurses library routines give the user a terminal-independent |
|
|
|
|
method of updating character screens with reasonable optimization. |
|
|
|
|
This implementation is ``new curses'' (ncurses) and is the approved |
|
|
|
|
replacement for 4.4BSD classic curses, which ha been discontinued. |
|
|
|
|
\end{quote} |
|
|
|
|
|
|
|
|
|
Plus concrètement, Curses est un moyen optimisé de gestion des |
|
|
|
|
écrans textes (Rappellez-vous notre ami le \textsc{Minitel}) afin |
|
|
|
|
de créer des interfaces 'full-screen'. Vous pouvez adresser |
|
|
|
|
chaque cellule de votre écran (la case où l'on peut mettre |
|
|
|
|
un caractère) pour y écrire quelque chose, en gérant des |
|
|
|
|
attributs tels que gras ou souligné. |
|
|
|
|
|
|
|
|
|
\section{premier exemple} |
|
|
|
|
\section{Premier exemple} |
|
|
|
|
|
|
|
|
|
Bien entendu, nous commencerons par l'ECM traditionnel de rigueur. |
|
|
|
|
|
|
|
|
@ -28,12 +34,35 @@ interne de ncurses, et à régler l'interaction clavier/écran. |
|
|
|
|
|
|
|
|
|
Ensuite, avec \texttt{mvaddstr}, nous écrivons le texte passé |
|
|
|
|
en paramètre à une position fixée ligne,colonne |
|
|
|
|
dans un écran virtuel |
|
|
|
|
qui sera ensuite transféré dans l'écran réel |
|
|
|
|
dans un écran virtuel (qui n'existe qu'en mémoire) |
|
|
|
|
qui sera ensuite transféré dans l'écran réel (celui qui est affiché) |
|
|
|
|
par le \texttt{refresh()}. |
|
|
|
|
|
|
|
|
|
Dans ma grande mansuétude, je n'aurais pas l'audace de vous montrer |
|
|
|
|
une capture d'écran, puisque je me permet de supposer que vous |
|
|
|
|
avez pris le temps de compiler l'exemple, et de voir par vous même |
|
|
|
|
ce que ça donne. |
|
|
|
|
|
|
|
|
|
\section{astuces} |
|
|
|
|
\section{Bell and whistles} |
|
|
|
|
|
|
|
|
|
Voici comment centrer sur la ligne du haut |
|
|
|
|
un texte écrit en \textbf{gras} grace à l'attribut |
|
|
|
|
\texttt{A\_BOLD} : |
|
|
|
|
|
|
|
|
|
\begin{verbatim} |
|
|
|
|
attron(A_BOLD); |
|
|
|
|
mvaddstr(0, (COLS / 2) - (strlen(text) / 2), text); |
|
|
|
|
attroff(A_BOLD); |
|
|
|
|
\end{verbatim} |
|
|
|
|
|
|
|
|
|
Il existe tout un tas d'autres attributs: |
|
|
|
|
\texttt{A\_UNDERLINE} pour le soulignement ou |
|
|
|
|
\texttt{A\_BLINK} pour clignoter, par exemple. |
|
|
|
|
La liste complète est dans le man~: \texttt{attr(3NCURSES)}, |
|
|
|
|
avec plein |
|
|
|
|
de fonctions spécialisées dans le traitement des attributs. |
|
|
|
|
|
|
|
|
|
\section{Astuces} |
|
|
|
|
|
|
|
|
|
Dans une boucle interactive, on va utiliser \texttt{getch()}, qui va |
|
|
|
|
bloquer tant qu'on n'a pas tapé sur une touche. Mais que faire si |
|
|
|
|