PDCurses. Las curses para windows

5:12 am Programación

Bueno hoy toca hablar de curses, curses es un conjunto de librerías para el control de terminales en sistemas Unix que entre otras cosas proporciona a los programadores la facilidad de crear interfaces en modo texto TUIs. Aunque curses ya es descontinuado, existe ncurses para unix/linux/etc., y para windows está la razón de esta nueva entrada en el blog, PDCurses.

Lo que me llevó hasta PDCurses fue que en la universidad nos pidieron hacer un editor de texto en modo consola ( no puse texto porque sonaría muy redundante :P ) y bueno, me rehusaba a volver en aquellos tiempos que por “ignorante” tenía que usar el compilador de Borland (si el mismo que todos alguna vez usamos), el flamante TurboC.

Para empezar hay poca documentación de PDCurses en la red, al menos en español xD. Así que hay dos fuentes seguras sobre la API que implementa PDCurses( en inglés :P ):

http://www.opengroup.org/onlinepubs/007908799/cursesix.html

http://pdcurses.sourceforge.net/doc/PDCurses.txt

Yo llevo mirando la información hace como 2 hrs :) (si, medio torpe yo xD) y ya he realizado lo que sería el menú de la aplicación (sólo el menú) o una parte de él :P , el código es el siguiente:

/*
	Based on: http://www.linux.cz/noviny/1998-1112/clanek11.html
*/
#include <stdlib.h>
#include <ctype.h>
#include <curses.h>

#define COLOR1	1
//{#define COLOR2	2

int main () {
	int c;
	char *s;

	initscr ();
	cbreak ();
	noecho ();
	start_color ();
	keypad (stdscr, TRUE);
	curs_set(0);

	if (!has_colors ()) {
		endwin ();
		fputs ("No colors!", stderr);
		exit (1);
	}

	init_pair (COLOR1, COLOR_WHITE, COLOR_BLUE);

	attron(COLOR_PAIR( COLOR1 ));
	mvaddstr(LINES-25,COLS-57,"| (A)rchivo | (E)dicion | (S)alir |");

	mvaddstr (LINES-1, COLS-20, "Press F10 for end.");

	while ( (c=getch()) != KEY_F(10)) {
		s = (char *) keyname(c);
		if (s){
			//mvprintw (10, 20, "'%s'", s);
			if(*(s)=='A'){
				mvaddstr(LINES-24,COLS-57,"| Guardar |");
				mvaddstr(LINES-23,COLS-57,"| Abrir   |");
			}
			else if(*(s)=='E'){
				mvaddstr(LINES-24,COLS-45,"| Modificar |");
			}
			else{
				mvaddstr(LINES-24,COLS-57,"");
				insdelln(-2);
				insdelln(+2);
			}
		}
		//else
			//mvprintw (10, 20, "'%c'", (isprint(c) ? c : '.'));
	}

	erase ();
	refresh ();
	endwin ();
	return 0;
}

Screenshot:

pdcurses menú

El programita hace lo siguiente:

- Muestra un menú en la parte superior en la pantalla a partir de la columna 23 y fila 0 (ventana de 25×80)
- Cuando se pulsa “A” (A mayúscula) muestra un submenú para Abrir|Guardar un archivo por debajo de la leyenda: Archivo (cosa que todavía no hace XD)
- Cuando se pulsa “E” (E mayúscula) muestra un submenú para Modificar un archivo por debajo de la leyenda: Edición (no implementado aún)
- Para salir del programa, se puede pulsar F10

Eso es todo :P , eso es la parte más sencilla del editor de texto jajaja :) . Lo importante es irme familiarizando con las librerías para poder avanzar en lo demás.

Por cierto, estoy usando Dev C++ para compilarlo :D ( no me pregunte porque estoy usando windows :( ).

Nos vemos.

Califica el tema:
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 4 out of 5)
Loading ... Loading ...

Temas Relacionados:
  • Instalando PDCurses en Dev-C++
  • GDB para depurar programas en C/C++ en GNU/Linux
  • Café Tacuba - Aviéntame
  • Windows en las Olimpiadas de China 2008
  • Desinstalar correctamente Adobe Flash CS3
  • 3 Responses

    1. casi_un_angel Says:

      ps como te digo eres un chingon :-#
      jeje ps ni hablar, namas te falta tiempo para realizar lo que te propones,
      sigue haciendo lo que te gusta , que lo haces muy bien :p
      sin mas que decir =*********

    2. dna Says:

      dame mas borland (8)
      no se porque me vino a la mente =x
      en fin
      cuidate =P y deja de estresarte tanto =)****

      -.- raro esto, bue me largo xD

    3. karina Says:

      muchas gracias por compartir esto, se nota que te gusta lo que haces, te felicito.. DTB

    Leave a Comment

    Your comment

    You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.