0% encontró este documento útil (0 votos)
909 vistas4 páginas

PDCurses

Este documento presenta una introducción al uso de la librería curses para crear interfaces de usuario textuales. Explica cómo instalar curses en Windows usando PDCurses o en Linux usando ncurses. Muestra un primer ejemplo "Hola mundo" en curses y explica cómo solicitar entrada de datos al usuario mediante funciones como mvgetstr. El documento concluye indicando que en próximas entregas se explicará el uso de múltiples ventanas en curses y se desarrollará una pequeña agenda de contactos como ejemplo.

Cargado por

sergius_leer
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
909 vistas4 páginas

PDCurses

Este documento presenta una introducción al uso de la librería curses para crear interfaces de usuario textuales. Explica cómo instalar curses en Windows usando PDCurses o en Linux usando ncurses. Muestra un primer ejemplo "Hola mundo" en curses y explica cómo solicitar entrada de datos al usuario mediante funciones como mvgetstr. El documento concluye indicando que en próximas entregas se explicará el uso de múltiples ventanas en curses y se desarrollará una pequeña agenda de contactos como ejemplo.

Cargado por

sergius_leer
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

[TUTORIAL] Programacion con curses (PDCurses/ncurses)

Curses es una libreria de c ontroles para desarrollar aplic ac iones que quieran usar el paradigma TUI (T extual User Interfac e, extrapolac ion de los GUI ya c onoc idos para terminales). Los objetivos primarios de esa serie de tutoriales es la de introduc ir en la programac ion c on c urses tanto para W indows, usando PDCurses, c omo para Linux, usando nc urses. Para W indows usaremos c omo IDE el Dev-C++ de Bloodshell disponible aqui y para Linux usaremos Ec lipse c on la extension c dt (ec lipse-c dt). En c uanto a c ompiladores para W indows usaremos mingw (instalado c on Dev-C++) y para Linux gc c . Instalando PDCurses PDCurses puede ser instalado desc argando PDCurses aqui en instalandolo a c ontinuac ion o si usais Dev-C++ c omo IDE podeis hac erlo yendo a Herramientas->Busc ar Ac tualiz ac iones, selec c ionando en el dialogo que aparec e el servidor devpaks.org, pulsar en Chec k for Updates y marc ando PDCurses en la lista. Una vez hec ho esto pulsar en Download selec ted y seguir las intruc c iones. Instalando ncurses Dependiendo de la distro que useis el paquete se llamara c urses, nc urses o algo parec ido. Dado que hay muc has distros es preferible que c onsulteis en los foros de vuestra distro para ver c omo proc eder a la instalac ion. Tambien podeis desc argar PDCurses e instalarlo en vuestro Linux desde aqui (son los fuentes en tar.gz ). Introduccion a X/Open Curses c urses presenta una interfaz C que ac umula dec enas de func iones para poder c rear interfac es grac os textuales que se puedan manejar tanto c on el tec lado c omo c on el raton. Contiene un puado de estruc turas que usaremos para la c reac ion de ventanas de texto y otras c osas c uyo entendimiento es de vital importanc ia para sobrevivir c on exito a la experienc ia de programar para c urses. Las mas signic ativas de ellas , por ahora, son las siguientes: SCREEN Representa el dispositivo sic o de salida de la terminal. WINDOW Representaria una ventana en c urses a traves de un array bidimensional de n*m c arac teres. Cada ventana esta asoc iada a un S c reen dado y existe una ventana por defec to, stdscr, c on el tamao de la ventana de terminal. TERMINAL Representa el dispositivo logic o de entrada/salida por el c ual va a interac tuar el usuario c on nuestro programa. T odo programa c urses debe realiz ar una llamada a initscr() antes de usar c ualquier c arac teristic a de c urses y debera naliz ar llamando a endwin() que restaurara el estado de la terminal a c omo estaba antes de ejec utar nuestro programa.

Cdigo GeS Hi (C):#inc lude <stdlib.h> #inc lude <c urses.h> int main() { initsrc (); /* ..... */ endwin(); } A la hora de c ompilar un programa c urses hay que pasarle al c ompilador la opc ion -lcurses y asegurarse de que las libreria c urses estan en el path de busqueda del c ompilador. Primeros pasos Hemos visto, por enc ima, los c omponentes mas importantes de c urses. Asi que vamos a profundiz ar un poc o y vamos a ver c omo hac er c osas mas... "interesantes" que aprender teoria. Nuestro primero ejemplo, c omo no podia ser otro, sera el tipic o "Hola c urses".

Cdigo GeS Hi (C):#inc lude <stdlib.h> #inc lude <c type.h> #inc lude <c urses.h> int main () { int c ; c har *s; initsc r (); noec ho (); /* 1 */ c urs_set(0); /* 2 */ mvaddstr (LINES /2,((COLS /2)-6),"Hola Curses"); /* 3 */ mvaddstr (LINES -1, COLS -25, "Pulsar F10 para salir."); while ( (c =getc h()) != KEY_F(10)) /* 4 */ { } erase (); /* 5 */ refresh (); endwin (); return 0; } S e ha marc ado el c odigo c on c omentarios en forma de numeros para relac ionar las explic ac iones c on el c odigo. En este ejemplo usamos (por omision) la terminal por defec to y la ventana por defec to (stdsc r). En 1 y 2 llamamos a esas func iones para dec irle a c urses que no muestre por pantalla lo tec leado

y volver invisible el c ursor. mvaddstr es una de las func iones que mas usaremos a lo largo de este tutorial. S u mision es

En 1 y 2 llamamos a esas func iones para dec irle a c urses que no muestre por pantalla lo tec leado

y volver invisible el c ursor. mvaddstr es una de las func iones que mas usaremos a lo largo de este tutorial. S u mision es esc ribir una c adena a la ventana ac tual o a la ventana espec ic ada (a traves de una sobrec arga de los parametros de la func ion) en una determinada posic ion x,y. Usamos ademas las variables LINES y COLS (que representan las lineas y c olumnas de la terminal en uso) para situar mas o menos en el c entro de la pantalla el mensaje "Hola c urses". Despues entramos en un buc le para c ontrolar la pulsac ion de una tec la a traves de getch (que a diferenc ia de su homologa de la libreria estandar no almac ena las pulsac iones en un buer hasta pulsar enter sino que proc esa c ada pulsac ion de tec la segun van llegando) c on F10, a traves de la func ion KEY_F(n). Finalmente y c uando el usuario ha pulsado F10 se limpia la ventana c on erase() y se refresc a el c ontenido c on refresh() para pasar a naliz ar nuestro uso de c urses c on endwin(). Entrada de datos T enemos una serie de func iones a nuestra disposic ion para solic itar datos al usuario a traves de una terminal pero la mas c omun es mvgetstr, la c ual rec ibe c omo parametros la la y la c olumna donde se realiz ara la entrada y un puntero a un c har[] para almac enar el resultado.

Cdigo #inc lude <stdlib.h> #inc lude <c type.h> #inc lude <c urses.h> int main () { int c ; /* 1 */ c har* nombre[25]; c har* telefono[10]; /* 2 */ initsc r (); keypad (stdsc r, TRUE); c urs_set(1);

mvaddstr (2,5,"Nombre : "); mvaddstr (3,5,"T elefono : " ); /* 3 */ mvgetstr(2,16,nombre); mvgetstr(3,16,telefono); /* 4 */ mvaddstr (LINES -3,5,"El nombre tec leado es : "); addstr(nombre); mvaddstr (LINES -2,5,"El telefono tec leado es : "); addstr(telefono);

mvaddstr (LINES -1, COLS -25, "Pulsar F10 para terminar.");

mvaddstr (LINES -2,5,"El telefono tec leado es : "); addstr(telefono);

mvaddstr (LINES -1, COLS -25, "Pulsar F10 para terminar."); while ( (c =getc h()) != KEY_F(10)) { } /* 5 */ erase (); refresh (); endwin (); return 0; } En 1 denimos dos variables del tipo c har*[] para almac enar nuestros datos c on suc iente espac io para c ontener nuestros datos. Despues pasamos a inic ializ ar c urses c on initsc r. Notese que en este c aso dejamos que el c ursor sea visible de modo que el usuario pueda saber que c ampo esta insertando. En 3 es donde pedimos los datos c on la menc ionada func ion. S e hac e paso a paso. Primero ejec uta la primera llamada a mvgetstr y despues la segunda. Para dar validez a la entrada esta ha de naliz ar c on la pulsac ion de la tec la enter (en c ontraposic ion c on mvgetc h que no la nec esita). Una vez solic itados los datos pasamos a mostrar los resultados en 4. Aqui introduc imos la func ion addstr que muestra el c ontenido de la varible pasada c omo parametro a c ontinuac ion de lo ultimo que hayamos sac ado por pantalla, o lo que es lo mismo c ontinua la impresion el la posic ion del c ursor. Por ultimo limpiamos la ventana y liberamos los rec ursos de c urses para salir del programa una vez que se pulse la tec la F10. La serie de func iones basada en getstr realiz an su func ion llamando de forma c onsec utiva a getc h hasta que se detec ta un n de linea, enter o EOF. A la c adena resultante se le aade al nal un c arac ter nulo (\0).

Continuara.... S alu2. blac kraider. Proximas Entregas : Con los aspec tos basic os de c urses dominados (y c reedme no es nec esario muc ho mas) veremos los aspec tos que rodean a una aplic ac ion c on multiples ventanas (y no es lo que c reeis, eh) desarrollando una pequea Agenda para vuestro uso personal.

También podría gustarte