EDITOR_COLOR.c



// SIMULA UN EDITOR CAMBIANDO COLORES CON F2, F3, F4
#include <stdio.h>
#include <stdlib.h>
#include <curses.h>

WINDOW *win; /** manejaremos una Unica ventana de pantalla completa **/
/*********************************************************************/

void IniVideo()
{
	win=initscr();
	clear();
	refresh();
	//noecho();
	cbreak();
	keypad(win, TRUE);
}

Exit()
{
	refresh();
	endwin();
	exit(1);
}

main ()
{
	int ColorActual = 1;
	int ColorAnterior = 1;
	int R = 0, C = 0;		// Para la posiciOn del cursor
	int Tecla = 0;			// Para guardar el cOdigo de la tecla pulsada

	IniVideo();
	start_color();

	init_pair(1,COLOR_BLACK,COLOR_WHITE);
	init_pair(2,COLOR_RED,COLOR_BLUE);
	init_pair(3,COLOR_YELLOW,COLOR_BLACK);
	init_pair(4,COLOR_YELLOW,COLOR_YELLOW);



	move(10, 10); printw("Desplace el cursor con las teclas de flechita");
	move(12, 10); printw("Presione <F5> para terminar");
	move(14, 10); printw("De un teclazo para iniciar. . . ."); getch();
	bkgd(COLOR_PAIR(4));
	clear();
	for(;;)
	{
		move(R, C);
		// printw("{}");
		Tecla = getch();

		switch (Tecla)
		{
			case 258:					// Tecla Abajo
					if (R==20) R = 0;
					else R += 1;
					break;
			case 259:					// Tecla Arriba
					if (!R) R = 20;
					else R -= 1;
					break;
			case 260:					// Tecla Izquierda
					if (!C) C = 80;
					else C -= 1;
					break;
			case 261:					// Tecla Derecha
					if (C==80) C = 0;
					else C += 1;
					break;
			case 266:					// Tecla <F2>
					ColorAnterior = ColorActual;
					ColorActual = 1;
					break;
			case 267:					// Tecla <F3>
					ColorAnterior = ColorActual;
					ColorActual = 2;
					break;
			case 268:					// Tecla <F4>
					ColorAnterior = ColorActual;
					ColorActual = 3;
					break;
			case 269:					// Tecla <F5>
					clear();
					move(10, 10); printw("FIN DE LA EJECUCION...."); getch();
					Exit();
			default:
					//attroff(COLOR_PAIR(ColorAnterior));
					attron(COLOR_PAIR(ColorActual));
					printw("%c", Tecla);
					C += 1;
		}
		refresh();
	}
	Exit();
}