Ayuda crear pantallas para mentenimiento de datos con GNUgcc

Dudas sobre el C/C++ en general
Responder
Mensaje
Autor
eldelaesquina
Mensajes: 3
Registrado: 12/04/2013 2:07 pm

Ayuda crear pantallas para mentenimiento de datos con GNUgcc

#1 Mensaje por eldelaesquina » 15/04/2013 4:42 am

Ya que he fracasado con la pregunta de como utilizar pdcurses (ncurses) con MobaXterm, lo vuelvo a intentar por si acaso no se entendió.

Como ya dije en mi anterior mensaje de petición de ayuda, el problema creo que es muy sencillo, se trata de crear pantallas para el mantenimiento de datos de un fichero controlando la posición de cada dato en la pantalla, e.d. poner los datos en una posición determinada. Utilizo C con GNU gcc y pdcurses ya que esto es lo que veo en la red que puede funcionar.

Si alguien me puede ayudar para realizar esto se lo agradecería mucho.

Avatar de Usuario
rir3760
Mensajes: 7553
Registrado: 01/10/2004 11:00 pm
Ubicación: Mexico

#2 Mensaje por rir3760 » 16/04/2013 5:14 am

Si no se ha respondido al tema no es por falta de ganas sino porque hay pocos usuarios en estos foros que utilizan ncurses. Lo mejor es esperar la respuesta del usuario mas experimentado en el tema (me refiero a digies).

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Avatar de Usuario
digies
Mensajes: 1001
Registrado: 18/11/2005 12:00 am
Ubicación: Blumenau (Br)

#3 Mensaje por digies » 17/04/2013 4:57 am

Hola eldelaesquina

Como he dicho, Curses trabaja con una única pantalla que es el terminal Curses, por lo tanto, no puedes crear otras pantallas fuera de ésta, pero sí puedes crear ventanas dentro del mismo terminal Curses e ir colocando en ellas los datos de mantenimiento de tu archivo; no hay problemas con imprimir esos datos en una posición determinada de la ventana que elijas. Y como le dije ya a otro usuario del foro, Curses también brinda la posibilidad de implementar pads que son como una suerte de ventanas, muy bueno para trabajar con columnas de texto tipo periódico.

Te dejo un sencillo ejemplo sobre el uso de ventanas y posicionamiento de texto. Lo hice para GNU/Linux, pero no deberías tener problemas si lo compilas en MS Windows siempre y cuando hayas instalado PDCurses (y cambiado ncurses.h por curses.h):

Código: Seleccionar todo

#include <ncurses.h>
#include <stdlib.h>

void info(void);

int main(void)
{
    WINDOW *a = NULL, *b = NULL, *c = NULL, *d = NULL;
    int maxi_x, maxi_y, mitad_x, mitad_y;

    initscr();

    /* Iniciar colores */
    start_color();
    init_pair(1, COLOR_WHITE, COLOR_BLUE);
    init_pair(2, COLOR_WHITE, COLOR_RED);
    init_pair(3, COLOR_WHITE, COLOR_GREEN);
    init_pair(4, COLOR_WHITE, COLOR_CYAN);

    /* Calcular el tamaño de las ventanas y sus posiciones: */
    getmaxyx(stdscr, maxi_y, maxi_x);
    mitad_x = maxi_x >> 1;
    mitad_y = maxi_y >> 1;

    refresh();

    /* Crear cuatro ventanas para llenar la pantalla: */
    if ((a = newwin(mitad_y, mitad_x, 0, 0)) == NULL) info();
    if ((b = newwin(mitad_y, mitad_x, 0, mitad_x)) == NULL) info();
    if ((c = newwin(mitad_y, mitad_x, mitad_y, 0)) == NULL) info();
    if ((d = newwin(mitad_y, mitad_x, mitad_y, mitad_x)) == NULL) info();

    /* Escribir para cada ventana: */
    mvwaddstr(a, 0, 0, "Ventana A - El Rincon del C\n");
    wbkgd(a, COLOR_PAIR(1));
    wrefresh(a); /* Refresco la ventana para su correcta visualización */
    mvwaddstr(b, 0, 1, "Ventana B - El Rincon del C\n");
    wbkgd(b, COLOR_PAIR(2));
    wrefresh(b);
    mvwaddstr(c, 1, 0, "Ventana C - El Rincon del C\n");
    wbkgd(c, COLOR_PAIR(3));
    wrefresh(c);
    mvwaddstr(d, 1, 1, "Ventana D - El Rincon del C\n\nPulse una tecla para continuar... ");
    wbkgd(d, COLOR_PAIR(4));
    wrefresh(d);
    getch();

    endwin();

    return EXIT_SUCCESS;
}

void info(void)
{
    addstr("Incapaz de asignar memoria para la nueva ventana.\n");
    refresh();
    getch();
    endwin();
    exit(EXIT_FAILURE);
}
Lo que hace el programa es crear en el terminal (pantalla) Curses cuatro ventanas ("windows") de distintos colores (azul, rojo, verde, cyan). Observa cómo se ubican cada cadena (texto) en una posición específica en cada una de las ventanas.

Un saludo
With enough eyes, all bugs are easy to find.

Eric S. Raymond

eldelaesquina
Mensajes: 3
Registrado: 12/04/2013 2:07 pm

Gracias a RIR3760 y DIGIES

#4 Mensaje por eldelaesquina » 25/04/2013 11:41 am

Gracias a RIR3760 y DIGIES por atenderme. La verdad es que ya había perdido la esperanza de alguna respuesta.
He entendido que ncurses es autónomo, es decir, el cuerpo tanto de la pantalla como el código de operación se hace sobre ncurses y no se integra posteriormente desde otra plataforma, ¿no es así?.
Voy a probar el ejemplo que me envías y ya contaré el resultado.
Gracias.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados