]> git.llucax.com Git - z.facultad/75.06/emufs.git/commitdiff
* Permito desde las lista ir directamente a editar el registro
authorRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 30 May 2004 20:38:25 +0000 (20:38 +0000)
committerRicardo Markiewicz <gazer.arg@gmail.com>
Sun, 30 May 2004 20:38:25 +0000 (20:38 +0000)
emufs_gui/articulos.c
emufs_gui/lista.c
emufs_gui/lista.h

index 5c6c27e70504797440b2f836ede71f68a0b4286b..6bc3b7a95af6c11fef5c960daba67afb79d8cffa 100644 (file)
@@ -689,6 +689,7 @@ void art_consultas_codigos(char *s, t_Lista *lista)
        t_Articulo *articulo;
        t_Form *form;
        INDICE *idx;
+       int editar;
 
        idx = lst_articulos->fp->indices;
 
@@ -725,11 +726,11 @@ void art_consultas_codigos(char *s, t_Lista *lista)
                        PERR("AGREGO A LA LISTA");
                        fprintf(stderr, "%d - %s\n", articulo->numero, articulo->desc);
                        lista_agregar_fila(lista,
-                                                               articulo->numero,
-                                                               articulo->desc,
-                                                               articulo->existencia,
-                                                               articulo->emin
-                                               );
+                               articulo->numero,
+                               articulo->desc,
+                               articulo->existencia,
+                               articulo->emin
+                       );
                        free(articulo);
                }
                PERR("OBTENGO SIGUIENTE CLAVE");
@@ -738,8 +739,14 @@ void art_consultas_codigos(char *s, t_Lista *lista)
        }
 
        curs_set(0);
-       lista_ejecutar(lista);
+       editar = lista_ejecutar(lista);
        curs_set(1);
+
+       if (editar != -1) {
+               char cc[20];
+               sprintf(cc, "%d", editar);
+               art_modificar(cc);
+       }
 }
 
 void art_consultas_stock(char *s, t_Lista *lista)
@@ -749,6 +756,7 @@ void art_consultas_stock(char *s, t_Lista *lista)
        t_Form *form;
        INDICE *idx;
        float por;
+       int editar;
 
        idx = emufs_buscar_indice_por_nombre(lst_articulos->fp, "desc");
        if (idx == NULL) PERR("NO SE ENCUENTRA INDICE DESC!!!");
@@ -799,8 +807,13 @@ void art_consultas_stock(char *s, t_Lista *lista)
        }
 
        curs_set(0);
-       lista_ejecutar(lista);
+       editar = lista_ejecutar(lista);
        curs_set(1);
+       if (editar != -1) {
+               char cc[20];
+               sprintf(cc, "%d", editar);
+               art_modificar(cc);
+       }
 }
 
 void art_consultas_cambiar_precio(char *s, t_Lista *lista)
@@ -886,7 +899,7 @@ void art_consultas_cambiar_precio(char *s, t_Lista *lista)
 
 void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista)
 {
-       int i, cant, error;
+       int i, cant, error, editar;
        char desc[51], *tmp;
        t_Articulo articulo;
        t_Form *form;
@@ -932,8 +945,13 @@ void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista)
        }
        if (datos) free(datos);
        curs_set(0);
-       lista_ejecutar(lista);
+       editar = lista_ejecutar(lista);
        curs_set(1);
+       if (editar != -1) {
+               char cc[20];
+               sprintf(cc, "%d", editar);
+               art_modificar(cc);
+       }
        
 }
 
@@ -953,8 +971,10 @@ void art_consultas(char *s)
        
        win = newwin(LINES-4, COLS-2, 2, 1);
        win1 = derwin(win, LINES-6, COLS-4, 1, 1);
+       werase(win1);
        werase(win);
        box(win, 0, 0);
+       wrefresh(win1);
        wrefresh(win);
        
        /* Creo la lista donde mostrar la consulta*/
@@ -987,8 +1007,8 @@ void art_consultas(char *s)
                lista_clear(lista);
                werase(win1);
                werase(win);
-               wrefresh(win1);
                box(win, 0, 0);
+               wrefresh(win1);
                wrefresh(win);
        }
        werase(win1);
@@ -1092,7 +1112,9 @@ void art_recorrer_con_indice(char *s)
        win = newwin(LINES-4, COLS-2, 2, 1);
        win1 = derwin(win, LINES-6, COLS-4, 1, 1);
        werase(win);
+       werase(win1);
        box(win, 0, 0);
+       wrefresh(win1);
        wrefresh(win);
 
        PERR("Obtengo clave menor");
@@ -1103,6 +1125,7 @@ void art_recorrer_con_indice(char *s)
 
        mostrar_art(win1, k, s, idx);
        wrefresh(win1);
+       wrefresh(win);
        PERR("Sigue el usuario");
        curs_set(0);
        stack[0] = k;
@@ -1125,8 +1148,10 @@ void art_recorrer_con_indice(char *s)
                                continue;
                }
                werase(win1);
+               werase(win);
                mostrar_art(win1, k, s, idx);
                wrefresh(win1);
+               wrefresh(win);
        }
        curs_set(1);
 
@@ -1164,7 +1189,9 @@ void art_ver_ventas()
        win = newwin(LINES-4, COLS-2, 2, 1);
        win1 = derwin(win, LINES-6, COLS-4, 1, 1);
        werase(win);
+       werase(win1);
        box(win, 0, 0);
+       wrefresh(win1);
        wrefresh(win);
        
        /* El usuario ingresa rango a listar */
@@ -1179,6 +1206,8 @@ void art_ver_ventas()
        form_destruir(form);
        werase(win1);
        wrefresh(win1);
+       werase(win);
+       wrefresh(win);
 
        /* Si el usuario no ingreso alguno de los datos, lo obtengo del indice */
        /*idx = emufs_buscar_indice_por_nombre(fact_get_lst()->fp, "emision");*/
index 5e209cda8f302a77b7550a941dd3da5ce4dfae41..ca71b72163a203a71c6aa536e987b7690230fd8f 100644 (file)
@@ -12,8 +12,12 @@ t_Lista *lista_crear(int cc, WINDOW *win, int w, int h)
        tmp->w = w;
        tmp->h = h;
 
+       tmp->win_datos = derwin(win, h-4, w, 3, 0);
+       tmp->w_datos = w;
+       tmp->h_datos = h-4;
        tmp->columnas = NULL;
        tmp->primera = NULL;
+       tmp->cant_filas = 0;
 
        return tmp;
 }
@@ -82,6 +86,7 @@ void lista_agregar_fila(t_Lista *lst, ...)
                pos->sig = nueva;
                nueva->ant = pos;
        }
+       lst->cant_filas++;
 }
 
 void lista_agregar_fila_ordenada(t_Lista *lst, ...)
@@ -150,6 +155,7 @@ void lista_agregar_fila_ordenada(t_Lista *lst, ...)
                        nueva->sig = pos;
                }
        }
+       lst->cant_filas++;
 }
 
 void print_lista(t_Lista *lst, t_Fila *fil, int sel)
@@ -158,7 +164,7 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel)
        char salida[100];
        char format[100];
        t_Columna *col;
-       int y=0, i;
+       int y=3, i;
        werase(lst->win);
        /* Pongo los nombres de las columnas */
        col = lst->columnas;
@@ -169,17 +175,22 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel)
        }
        wattroff(lst->win, COLOR_PAIR(COLOR_RED));
 
+       /* Imprimo algunas cosas*/
+       sprintf(format, "Cantidad de Items : %d", lst->cant_filas);
+       mvwaddstr(lst->win, 0, 0, format);
+       mvwaddstr(lst->win, 1, 0, "Teclas : ENTER = VOLVER       E = Editar");
        /* Pongo la filas */
+       y = 0;
        y++;
        sel++;
        while (fil) {
                /* Si no entran mas filas salgo! */
-               if (y>=(lst->h)) break;
+               if (y>=(lst->h_datos)) break;
                col = lst->columnas;
                /* Imprimo los datos de cada columna */
                i = 0;
                while (col) {
-                       wmove(lst->win, y, col->offset);
+                       wmove(lst->win_datos, y, col->offset);
                        switch (col->tipo) {
                                case DATO_INT:
                                        sprintf(texto, "%d", fil->datos[i].i_dato);
@@ -196,11 +207,11 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel)
                        }
                        sprintf(salida, format, texto);
                        if (y == sel) {
-                               wattron(lst->win, A_STANDOUT);
+                               wattron(lst->win_datos, A_STANDOUT);
                        }
-                       waddstr(lst->win, salida);
+                       waddstr(lst->win_datos, salida);
                        if (y == sel) {
-                               wattroff(lst->win, A_STANDOUT);
+                               wattroff(lst->win_datos, A_STANDOUT);
                        }
                        i++;
                        col = col->sig;
@@ -210,7 +221,7 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel)
        }
 }
 
-void lista_ejecutar(t_Lista *lst)
+int lista_ejecutar(t_Lista *lst)
 {
        int key;
        t_Fila *fil;
@@ -235,10 +246,22 @@ void lista_ejecutar(t_Lista *lst)
                } else if ((key == 'z') || (key == 'Z')) {
                        /*offset++;*/
                        selected++;
-                       if (selected >= (lst->h-1)) {
+                       if (selected >= (lst->h_datos)) {
                                selected--;
                                offset++;
                        }
+               } else if ((key == 'e') || (key == 'E')) {
+                       /* Me piden  editar el item actual, retorno la primer columna
+                        * del item seleccionado 
+                        */
+                       fil = lst->primera;
+                       i=0;
+                       /* Salto a la primer fila a mostrar */
+                       while ((fil) && (i<(selected+offset))) {
+                               fil = fil->sig;
+                               i++;
+                       }
+                       return fil->datos[0].i_dato;
                } else {
                        continue;
                }
@@ -252,8 +275,9 @@ void lista_ejecutar(t_Lista *lst)
                }
 
                print_lista(lst, fil, selected);
-               wrefresh(lst->win);
+               wrefresh(lst->win_datos);
        }
+       return -1; /* sali sin seleccionar */
 }
 
 void lista_clear(t_Lista *lst)
index c91f50116c809d4decc82be3d62f390598da86d9..4b2d977af8a0916090181cb3589a43e054c0d353 100644 (file)
@@ -41,11 +41,15 @@ typedef struct _fila_ {
 typedef struct _lista_ {
        int cant_columnas;     /**< Cantidad de columnas */
        WINDOW *win;           /**< Ventana donde dibujar */
+       WINDOW *win_datos;     /**< Ventana donde poner datos */
        int w;                 /**< Ancho de la ventana */
        int h;                 /**< Alto de la ventana */
+       int w_datos;
+       int h_datos;
 
        t_Columna *columnas;   /**< Puntero a la primer columna */
        t_Fila *primera;       /**< Puntero a la primer fila */
+       int cant_filas;        /**< Para info en pantalla */
 } t_Lista;
 
 /** Crea una nueva lista
@@ -88,7 +92,7 @@ void lista_agregar_fila_ordenada(t_Lista *lst, ...);
  *
  *  \param lst
  */
-void lista_ejecutar(t_Lista *lst);
+int lista_ejecutar(t_Lista *lst);
 
 /** Limpia los datos agregados a las filas */
 void lista_clear(t_Lista *lst);