From ef9eed1eaa214df28cb65e51f1cdd8c01f33e1f5 Mon Sep 17 00:00:00 2001 From: "N.N." Date: Thu, 15 May 2008 22:58:01 +0000 Subject: seek and border adds + help file renamed + old files deleted svn path=/trunk/externals/pdvjtools/; revision=9816 --- videogrid/Makefile | 2 +- videogrid/cat-help-videogrid.pd | 20 -- videogrid/cua.c | 4 +- videogrid/help-videogrid.pd | 21 --- videogrid/videogrid-help.pd | 21 +++ videogrid/videogrid.c | 407 +++++++++++++++++++++++++++------------- videogrid/videogrid.tk | 23 ++- videogrid/videogrid.tk2c | 23 ++- 8 files changed, 339 insertions(+), 182 deletions(-) delete mode 100755 videogrid/cat-help-videogrid.pd delete mode 100755 videogrid/help-videogrid.pd create mode 100755 videogrid/videogrid-help.pd (limited to 'videogrid') diff --git a/videogrid/Makefile b/videogrid/Makefile index 298532e..53e3d32 100755 --- a/videogrid/Makefile +++ b/videogrid/Makefile @@ -31,7 +31,7 @@ LINUXINCLUDE = -I$(PD_SRC) -I/usr/include/ # ---------------------------------------------------------- install: - cp help-*.pd ../../doc/5.reference + cp *-help.pd ../../doc/5.reference clean: rm -f *.o *.pd_* so_locations diff --git a/videogrid/cat-help-videogrid.pd b/videogrid/cat-help-videogrid.pd deleted file mode 100755 index a14bca1..0000000 --- a/videogrid/cat-help-videogrid.pd +++ /dev/null @@ -1,20 +0,0 @@ -#N canvas 772 365 1148 655 10; -#X text 24 93 LLISTA STDOUT; -#X symbolatom 72 324 60 0 0 0 - - -; -#X obj 26 110 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 24 13 VIDEOGRID; -#X text 25 29 Objecte per seleccionar amb un sol clic la ubicacio d'un -video amb el frame afegit al tauler.; -#X text 154 63 AFEGIR VIDEO; -#X text 154 113 AFEGIR VIDEOS D'UN DIRECTORI; -#X text 74 344 PATH DEL VIDEO CLICAT; -#X obj 72 179 videogrid videogrid2 3 5 #F0F0F0 #0F0F0F /usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0243.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0243.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0243.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0243.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0243.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/lib/pd/extra/videogrid/videos/dscn0241.mov| -; -#X msg 156 127 putimgdir /usr/lib/pd/extra/videogrid/videos; -#X msg 156 77 putimg /usr/lib/pd/extra/videogrid/videos/dscn0241.mov -; -#X connect 2 0 8 0; -#X connect 8 0 1 0; -#X connect 9 0 8 0; -#X connect 10 0 8 0; diff --git a/videogrid/cua.c b/videogrid/cua.c index f03fb2a..e0211b3 100644 --- a/videogrid/cua.c +++ b/videogrid/cua.c @@ -127,7 +127,7 @@ int cuaBuida(Cua *cua) void eliminarCua(Cua *cua) { while (!cuaBuida(cua)) desencuar(cua); - printf("Cua eliminada\a\n"); + printf("Cua eliminada\n"); } /* funció que retorna el nombre de nodes de la cua */ @@ -160,5 +160,5 @@ void escriuCua(Cua *cua) } else - printf("Cua buida\a\n"); + printf("Cua buida\n"); } diff --git a/videogrid/help-videogrid.pd b/videogrid/help-videogrid.pd deleted file mode 100755 index cd556c1..0000000 --- a/videogrid/help-videogrid.pd +++ /dev/null @@ -1,21 +0,0 @@ -#N canvas 323 160 580 404 10; -#X symbolatom 72 324 60 0 0 0 - - -; -#X obj 26 110 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 --1; -#X text 24 13 VIDEOGRID; -#X obj 72 178 videogrid videogrid1 3 5 #F0F0F0 #0F0F0F /usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov| -; -#X text 154 63 ADD VIDEO; -#X text 154 113 ADD VIDEOS FROM FOLDER; -#X text 25 29 Object to select the path location of a video quiktime -added in the grid \, in form of image of its first frame.; -#X text 74 344 LOCATION OF THE SELECTED VIDEO; -#X text 24 93 LIST STDOUT; -#X msg 156 77 putvideo /usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov -; -#X msg 156 127 putvideodir /usr/local/lib/pd/extra/videogrid/videos -; -#X connect 1 0 3 0; -#X connect 3 0 0 0; -#X connect 9 0 3 0; -#X connect 10 0 3 0; diff --git a/videogrid/videogrid-help.pd b/videogrid/videogrid-help.pd new file mode 100755 index 0000000..cd556c1 --- /dev/null +++ b/videogrid/videogrid-help.pd @@ -0,0 +1,21 @@ +#N canvas 323 160 580 404 10; +#X symbolatom 72 324 60 0 0 0 - - -; +#X obj 26 110 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X text 24 13 VIDEOGRID; +#X obj 72 178 videogrid videogrid1 3 5 #F0F0F0 #0F0F0F /usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov|/usr/local/lib/pd/extra/videogrid/videos/dscn0248.mov| +; +#X text 154 63 ADD VIDEO; +#X text 154 113 ADD VIDEOS FROM FOLDER; +#X text 25 29 Object to select the path location of a video quiktime +added in the grid \, in form of image of its first frame.; +#X text 74 344 LOCATION OF THE SELECTED VIDEO; +#X text 24 93 LIST STDOUT; +#X msg 156 77 putvideo /usr/local/lib/pd/extra/videogrid/videos/dscn0241.mov +; +#X msg 156 127 putvideodir /usr/local/lib/pd/extra/videogrid/videos +; +#X connect 1 0 3 0; +#X connect 3 0 0 0; +#X connect 9 0 3 0; +#X connect 10 0 3 0; diff --git a/videogrid/videogrid.c b/videogrid/videogrid.c index d8701ec..65825f5 100644 --- a/videogrid/videogrid.c +++ b/videogrid/videogrid.c @@ -1,3 +1,4 @@ + /* videogrid external for Puredata Copyright (C) 2007 Sergi Lario @@ -43,6 +44,9 @@ along with this program. If not, see . #define W_CELL 60 #define H_CELL 40 +/* definició del gruix en pixels del marc del tauler */ +#define GRUIX 2 + /* crear un apuntador al nou objecte */ static t_class *videogrid_class; /* indica el nombre de videogrid creats - utilitzat per diferenciar el nom d'instàncies d'objectes del mateix tipus */ @@ -80,6 +84,10 @@ typedef struct _videogrid { t_symbol *x_color_marc; /* mutex per evitar concurrencia sobre la cua al accedir diferents threads*/ pthread_mutex_t x_lock; + /* v 0.2 -- posicó de la cel·la seleccionada */ + int x_pos_selected; + /* v 0.2 -- color de seleccio */ + t_symbol *x_color_grasp; } t_videogrid; @@ -87,14 +95,14 @@ typedef struct _videogrid { /* calcula la posició x del tauler a partir de la posició de l'element de la cua (d'esquerra a dreta) */ int getX(t_videogrid* x, int posCua){ int c = x->x_num_col; - int xpos = (posCua % c) * W_CELL; + int xpos = (posCua % c) * W_CELL + ((posCua % c) + 1) * GRUIX; return(xpos + 1); } /* calcula la posició y del tauler a partir de la posició de l'element de la cua (de dalt a baix) */ int getY(t_videogrid* x, int posCua){ int c = x->x_num_col; - int ypos = (posCua / c) * H_CELL; + int ypos = (posCua / c) * H_CELL + ((posCua / c) + 1) * GRUIX; return(ypos + 1); } @@ -116,7 +124,7 @@ void eliminar_imatges_temporals(int maxim){ } contador++; } - post("Videogrid: Imatges temporals eliminades\n",path_total); + /* post("Videogrid: Imatges temporals eliminades\n",path_total); */ } int format_adequat_v(path nomF){ @@ -200,7 +208,7 @@ void videogrid_afegir_imatge(t_videogrid *x, path entrada) } /* printf("SURT de la creacio de la imatge %s ...",ig_path); */ }else{ - post("Videogrid: El format del fitxer %s és incompatible.",entrada); + post("Videogrid: Incompatible file format (%s).\n",entrada); } /* sys_vgui("image create photo img%x -file %s\n",x,entrada); @@ -219,7 +227,7 @@ void videogrid_drawme(t_videogrid *x, t_glist *glist, int firsttime) sys_vgui(".x%x.c create rectangle %d %d %d %d -fill %s -tags %xGRID -outline %s\n", glist_getcanvas(glist), text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + (x->x_num_col * W_CELL) + 1, text_ypix(&x->x_obj, glist) + (x->x_num_fil * H_CELL) + 1, + text_xpix(&x->x_obj, glist) + (x->x_num_col * W_CELL) + 1 + (x->x_num_col * GRUIX) + GRUIX, text_ypix(&x->x_obj, glist) + (x->x_num_fil * H_CELL) + 1 + (x->x_num_fil * GRUIX) + GRUIX, x->x_color_fons->s_name, x,x->x_color_marc->s_name); canvas_fixlinesfor(glist_getcanvas(glist), (t_text*)x); @@ -249,7 +257,7 @@ void videogrid_drawme(t_videogrid *x, t_glist *glist, int firsttime) } } else { - sys_vgui(".x%x.c coords %xGRID %d %d %d %d\n", glist_getcanvas(glist), x, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),text_xpix(&x->x_obj, glist) + (x->x_num_col*W_CELL) + 1, text_ypix(&x->x_obj, glist) + (x->x_num_fil*H_CELL) + 1); + sys_vgui(".x%x.c coords %xGRID %d %d %d %d\n", glist_getcanvas(glist), x, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),text_xpix(&x->x_obj, glist) + (x->x_num_col*W_CELL) + 1 + (x->x_num_col * GRUIX) + GRUIX, text_ypix(&x->x_obj, glist) + (x->x_num_fil*H_CELL) + 1 + (x->x_num_fil * GRUIX) + GRUIX); if(!cuaBuida(&x->x_cua)) { int contador = 0; @@ -265,19 +273,48 @@ void videogrid_drawme(t_videogrid *x, t_glist *glist, int firsttime) sprintf(buf, "pdtk_videogrid_table %%s %s %d %d\n", x->x_name->s_name, x->x_num_fil, x->x_num_col); gfxstub_new(&x->x_obj.ob_pd, x, buf); */ } + if (x->x_pos_selected > -1){ + sys_vgui(".x%x.c coords %xGRASP %d %d %d %d\n", glist_getcanvas(glist), x, + text_xpix(&x->x_obj, x->x_glist) + getX(x,x->x_pos_selected), text_ypix(&x->x_obj, x->x_glist) + getY(x,x->x_pos_selected), + text_xpix(&x->x_obj, x->x_glist) + getX(x,x->x_pos_selected) + W_CELL, text_ypix(&x->x_obj, x->x_glist) + getY(x,x->x_pos_selected) + H_CELL); + } + sys_vgui(".x%x.c delete %xLINIA\n", glist_getcanvas(x->x_glist), x); + } + int xI = text_xpix(&x->x_obj, glist); + int yI = text_ypix(&x->x_obj, glist); + int xF = xI + (x->x_num_col * W_CELL) + ((x->x_num_col + 1) * GRUIX); + int yF = yI + (x->x_num_fil * H_CELL) + ((x->x_num_fil + 1) * GRUIX); + int vlines = 0; + int xi = 0; + while(vlines < x->x_num_col){ + xi = xI + getX(x,vlines) - GRUIX + 1; + sys_vgui(".x%x.c create line %d %d %d %d -fill %s -width %d -tag %xLINIA\n", glist_getcanvas(x->x_glist), xi, yI, xi, yF, x->x_color_marc->s_name,GRUIX,x); + vlines++; + } + xi = xi + W_CELL + GRUIX; + sys_vgui(".x%x.c create line %d %d %d %d -fill %s -width %d -tag %xLINIA\n", glist_getcanvas(x->x_glist), xi, yI, xi, yF, x->x_color_marc->s_name,GRUIX,x); + int hlines = 0; + int yi = 0; + while(hlines < x->x_num_fil){ + yi = yI + ((H_CELL + GRUIX) * hlines) + 2; + sys_vgui(".x%x.c create line %d %d %d %d -fill %s -width %d -tag %xLINIA\n", glist_getcanvas(x->x_glist), xI, yi, xF, yi, x->x_color_marc->s_name,GRUIX,x); + hlines++; } + yi = yi + H_CELL + GRUIX; + sys_vgui(".x%x.c create line %d %d %d %d -fill %s -width %d -tag %xLINIA\n", glist_getcanvas(x->x_glist), xI, yi, xF, yi, x->x_color_marc->s_name,GRUIX,x); } -/* borra videogrid */ -void videogrid_erase(t_videogrid* x,t_glist* glist) +/* borra videogrid v 0.2 -- int toclear */ +void videogrid_erase(t_videogrid* x,t_glist* glist, int toclear) { int maxim = x->x_num_fil * x->x_num_col; path path_total; - char contador_str[2]; + char contador_str[BYTES_NUM_TEMP]; /* post("Entra a erase"); */ /* elimina les imatges */ int contador = 0; while(contador < numNodes(&x->x_cua)){ + sys_vgui(".x%x.c delete %xS%d\n", glist_getcanvas(x->x_glist), x, contador); strcpy(path_total,PATH_TEMPORAL); sprintf(contador_str,"%d", contador); @@ -290,8 +327,16 @@ void videogrid_erase(t_videogrid* x,t_glist* glist) contador++; } - /* elimina el grid */ - sys_vgui(".x%x.c delete %xGRID\n", glist_getcanvas(glist), x); + /* elimina el grid v 0.2 -- excepte quan es fa un clear */ + if(toclear == 0){ + sys_vgui(".x%x.c delete %xGRID\n", glist_getcanvas(glist), x); + sys_vgui(".x%x.c delete %xLINIA\n", glist_getcanvas(x->x_glist), x); + } + /* v 0.2 -- elimina el marc de la casella seleccionada */ + if(x->x_pos_selected > -1){ + sys_vgui(".x%x.c delete %xGRASP\n", glist_getcanvas(glist), x); + x->x_pos_selected = -1; + } eliminar_imatges_temporals(maxim); } @@ -313,7 +358,7 @@ void videogrid_putvideo(t_videogrid *x, t_symbol *entrada) fitxer = fopen(e,"r"); if (!fitxer) { - post("Videogrid: Problema amb l'obertura del fitxer %s\n",e); + post("Videogrid: Problem opening file %s.\n",e); } else { /* post("s'encua la imatge %s\n", e); */ @@ -333,14 +378,14 @@ void *videogrid_putvideodir_thread(t_videogrid *x) int maxim; if ((dirp = opendir(x->x_dir_canvi)) == NULL) { - post("Videogrid: No es pot obrir el directori %s\n", x->x_dir_canvi); + post("Videogrid: Can not open folder %s.\n", x->x_dir_canvi); }else{ maxim = x->x_num_fil * x->x_num_col; strcpy(directoriAnterior, x->x_dir_actual); strcpy(x->x_dir_actual, x->x_dir_canvi); /* si es el mateix directori entrat l'ultim busca la ultima imatge afegida per a seguir a encuant a partir d'ella en endavant */ if(strcmp(directoriAnterior, x->x_dir_actual) == 0){ - post("Videogrid: Repeteix directori %s\n", x->x_dir_actual); + /* post("Videogrid: Repeteix directori %s\n", x->x_dir_actual); */ while ( (direntp = readdir( dirp )) != NULL ){ /* es descarta el mateix directori, el directori anterior i tot el que no sigui un fitxer regular */ if((strcmp(direntp->d_name,"..") != 0)&&(strcmp(direntp->d_name,".") != 0)&&(direntp->d_type == DT_REG)){ @@ -369,7 +414,7 @@ void *videogrid_putvideodir_thread(t_videogrid *x) } }else{ /* directori diferent omple la cua començant pel primer fitxer */ - post("Videogrid: Nou directori %s \n", x->x_dir_actual); + /* post("Videogrid: Nou directori %s \n", x->x_dir_actual); */ while ( (direntp = readdir( dirp )) != NULL ){ /* es descarta el mateix directori, el directori anterior i tot el que no sigui un fitxer regular */ if((strcmp(direntp->d_name,"..") != 0)&&(strcmp(direntp->d_name,".") != 0)&&(direntp->d_type == DT_REG)){ @@ -420,44 +465,97 @@ void videogrid_putvideodir(t_videogrid *x, t_symbol *entrada) pthread_mutex_destroy(&x->x_lock); } + +/* v 0.2 -- mètode de la classe que desmarca la cel·la seleccionada */ +static void videogrid_ungrasp_selected(t_videogrid *x) +{ + /* post("Ungrasp selected thumb %d", x->x_pos_selected); */ + if(x->x_pos_selected > -1) { + sys_vgui(".x%x.c delete %xGRASP\n", glist_getcanvas(x->x_glist), x); + x->x_pos_selected = -1; + } +} + +/* v 0.2 -- mètode de la classe que marca la cel·la seleccionada */ +static void videogrid_grasp_selected(t_videogrid *x, int pos) +{ + /*printf("Grasp selected thumb %d", pos);*/ + if(pos != x->x_pos_selected) { + videogrid_ungrasp_selected(x); + /* post("Grasp selected thumb %d", pos); */ + x->x_pos_selected = pos; + /* nem per aqui ---- */ + sys_vgui(".x%x.c create rectangle %d %d %d %d -fill {} -tags %xGRASP -outline %s -width %d\n", + glist_getcanvas(x->x_glist), + text_xpix(&x->x_obj, x->x_glist) + getX(x,x->x_pos_selected), text_ypix(&x->x_obj, x->x_glist) + getY(x,x->x_pos_selected), + text_xpix(&x->x_obj, x->x_glist) + getX(x,x->x_pos_selected) + W_CELL, text_ypix(&x->x_obj, x->x_glist) + getY(x,x->x_pos_selected) + H_CELL, + x,x->x_color_grasp->s_name, GRUIX + 1); + canvas_fixlinesfor(glist_getcanvas(x->x_glist), (t_text*)x); + } +} + +/* v 0.2 -- mètode de la classe que dispara l'element del taules en la posicio N [seek N( */ +void videogrid_seek(t_videogrid *x, t_floatarg postauler) +{ + /* post("seek a %d\n",postauler); */ + path pathSortida; + Node *actual; + int contador = 0; + int maxim = x->x_num_fil * x->x_num_col; + /* obtenir el path per enviar a la sortida */ + if((!cuaBuida(&x->x_cua))&&(postauler < numNodes(&x->x_cua))&&(postauler >= 0 )){ + if(x->x_tauler_primer){ + actual = x->x_tauler_primer; + while(contador <= postauler){ + if(contador == postauler){ + strcpy(pathSortida,actual->pathFitxer); + } + if(actual->seguent == NULL){ + actual = x->x_cua.davanter; + }else{ + actual = actual->seguent; + } + contador++; + } + outlet_symbol(x->x_sortida, gensym(pathSortida)); + /* post("Esta a videogrid_click amb %d %d a la posicio %d\n", x_pos, y_pos, postauler);*/ + /* v 0.2 -- marcar casella */ + videogrid_grasp_selected(x, postauler); + } + } +} + static int videogrid_click(t_gobj *z, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit) { t_videogrid* x = (t_videogrid *)z; int x_pos = xpix - text_xpix(&x->x_obj, x->x_glist); int y_pos = ypix - text_ypix(&x->x_obj, x->x_glist); - int xa, ya, postauler, contador, maxim; - path pathSortida; - Node *actual; + int xa, ya, postauler; if (doit) { - /* obtenir la posicio en el tauler */ - xa = x_pos / W_CELL; - ya = (y_pos / H_CELL) * x->x_num_col; - postauler = ya + xa; - /* obtenir el path per enviar a la sortida */ - if((!cuaBuida(&x->x_cua))&&(postauler < numNodes(&x->x_cua))){ - contador = 0; - maxim = x->x_num_fil * x->x_num_col; - if(x->x_tauler_primer){ - actual = x->x_tauler_primer; - while(contador <= postauler){ - if(contador == postauler){ - strcpy(pathSortida,actual->pathFitxer); - } - if(actual->seguent == NULL){ - actual = x->x_cua.davanter; - }else{ - actual = actual->seguent; - } - contador++; - } - outlet_symbol(x->x_sortida, gensym(pathSortida)); - } - } + /* obtenir la posicio en el tauler */ + // -- v 0.2 -- midoficacio pel gruix del marc // + xa = ((x_pos) / (W_CELL + GRUIX + 1)); + ya = ((y_pos) / (H_CELL + GRUIX + 1)) * x->x_num_col; + postauler = ya + xa; + // -- v 0.2 -- seleciona la casella disparant el path // + videogrid_seek(x, postauler); } return (1); } +/* v 0.2 -- mètode de la classe que buida el tauler amb el missatge [clear ( */ +void videogrid_clear(t_videogrid *x) +{ + videogrid_erase(x, x->x_glist,1); + eliminarCua(&x->x_cua); + x->x_ultima_img = 0; + x->x_dir_pos = 0; + x->x_tauler_primer = NULL; + videogrid_drawme(x, x->x_glist, 0); +} + + static void videogrid_getrect(t_gobj *z, t_glist *glist,int *xp1, int *yp1, int *xp2, int *yp2) { int cols, fils; @@ -466,8 +564,8 @@ static void videogrid_getrect(t_gobj *z, t_glist *glist,int *xp1, int *yp1, int fils = x->x_num_fil; *xp1 = text_xpix(&x->x_obj, glist); *yp1 = text_ypix(&x->x_obj, glist); - *xp2 = text_xpix(&x->x_obj, glist) + (cols*W_CELL); - *yp2 = text_ypix(&x->x_obj, glist) + (fils*H_CELL); + *xp2 = text_xpix(&x->x_obj, glist) + (cols*W_CELL) + ((cols + 1) * GRUIX); + *yp2 = text_ypix(&x->x_obj, glist) + (fils*H_CELL) + ((fils + 1) * GRUIX); /* post("Esta amb el ratoli en el punt %d %d %d %d o son els vetexs de la caixa... es/bd", xp1, yp1, xp2, yp2); */ } @@ -480,7 +578,7 @@ static void videogrid_displace(t_gobj *z, t_glist *glist,int dx, int dy) sys_vgui(".x%x.c coords %xGRID %d %d %d %d\n", glist_getcanvas(glist), x, text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist), - text_xpix(&x->x_obj, glist) + (x->x_num_col*W_CELL), text_ypix(&x->x_obj, glist) + (x->x_num_fil*H_CELL)); + text_xpix(&x->x_obj, glist) + (x->x_num_col*W_CELL) + 1 + (x->x_num_col * GRUIX) + GRUIX, text_ypix(&x->x_obj, glist) + (x->x_num_fil*H_CELL) + 1 + (x->x_num_fil * GRUIX) + GRUIX); videogrid_drawme(x, glist, 0); canvas_fixlinesfor(glist_getcanvas(glist),(t_text*) x); } @@ -513,7 +611,7 @@ static void videogrid_vis(t_gobj *z, t_glist *glist, int vis) if (vis) videogrid_drawme(s, glist, 1); else - videogrid_erase(s,glist); + videogrid_erase(s,glist,0); } @@ -585,43 +683,73 @@ static void videogrid_save(t_gobj *z, t_binbuf *b) binbuf_addv(b, "ssiissiisss", gensym("#X"),gensym("obj"), x->x_obj.te_xpix, x->x_obj.te_ypix, atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)), - x->x_name,x->x_num_fil,x->x_num_col,x->x_color_fons,x->x_color_marc,gensym(cadenaPathsInicials)); + x->x_name,x->x_num_fil,x->x_num_col,x->x_color_fons,x->x_color_marc,x->x_color_grasp,gensym(cadenaPathsInicials)); binbuf_addv(b, ";"); } static void videogrid_properties(t_gobj *z, t_glist *owner) { - char buf[800]; + char buf[900]; t_videogrid *x=(t_videogrid *)z; /* post("Es crida a pdtk_videogrid dialog passant nom = %s\n fils = %d \t cols = %d \t color fons = %s \t color marc = %s\n", x->x_name->s_name, x->x_num_fil, x->x_num_col, x->x_color_fons->s_name, x->x_color_marc->s_name); */ - sprintf(buf, "pdtk_videogrid_dialog %%s %s %d %d %s %s\n", - x->x_name->s_name, x->x_num_fil, x->x_num_col, x->x_color_fons->s_name, x->x_color_marc->s_name); + sprintf(buf, "pdtk_videogrid_dialog %%s %s %d %d %s %s %s\n", + x->x_name->s_name, x->x_num_fil, x->x_num_col, x->x_color_fons->s_name, x->x_color_marc->s_name, x->x_color_grasp->s_name); /* post("videogrid_properties : %s", buf ); */ gfxstub_new(&x->x_obj.ob_pd, x, buf); } static void videogrid_dialog(t_videogrid *x, t_symbol *s, int argc, t_atom *argv) { - int maxim, nfil, ncol, maxdigit; + int maxim, maxdigit; + int nfil = 0; + int ncol = 0; if ( !x ) { - post("Videogrid: error_ intent de modificar le propietats d'un objecte inexistent\n"); - } - if ( argc != 5 ) - { - post("Videogrid: error_ sobre el nombre d'arguments ( 5 enlloc de %d )\n",argc); - return; + post("Videogrid: error_ Attempt to alter the properties of an object that does not exist.\n"); } - if (argv[0].a_type != A_SYMBOL || argv[1].a_type != A_FLOAT || argv[2].a_type != A_FLOAT || argv[3].a_type != A_SYMBOL || argv[4].a_type != A_SYMBOL) - { - post("Videogrid: error_ algun dels arguments no es del tipus adequat\n"); - return; + switch (argc) { + case 3: + /* versio inicial */ + if (argv[0].a_type != A_SYMBOL || argv[1].a_type != A_FLOAT || argv[2].a_type != A_FLOAT) + { + post("Videogrid: error_ Some of the values are inconsistent in its data type.\n"); + return; + } + x->x_name = argv[0].a_w.w_symbol; + nfil = (int)argv[1].a_w.w_float; + ncol = (int)argv[2].a_w.w_float; + break; + case 5: + /* versio 0.1 */ + if (argv[0].a_type != A_SYMBOL || argv[1].a_type != A_FLOAT || argv[2].a_type != A_FLOAT || argv[3].a_type != A_SYMBOL || argv[4].a_type != A_SYMBOL) + { + post("Videogrid: error_ Some of the values are inconsistent in its data type.\n"); + return; + } + x->x_name = argv[0].a_w.w_symbol; + nfil = (int)argv[1].a_w.w_float; + ncol = (int)argv[2].a_w.w_float; + x->x_color_fons = argv[3].a_w.w_symbol; + x->x_color_marc = argv[4].a_w.w_symbol; + break; + case 6: + /* versio 0.2 */ + if (argv[0].a_type != A_SYMBOL || argv[1].a_type != A_FLOAT || argv[2].a_type != A_FLOAT || argv[3].a_type != A_SYMBOL || argv[4].a_type != A_SYMBOL || argv[5].a_type != A_SYMBOL) + { + post("Videogrid: error_ Some of the values are inconsistent in its data type.\n"); + return; + } + x->x_name = argv[0].a_w.w_symbol; + nfil = (int)argv[1].a_w.w_float; + ncol = (int)argv[2].a_w.w_float; + x->x_color_fons = argv[3].a_w.w_symbol; + x->x_color_marc = argv[4].a_w.w_symbol; + x->x_color_grasp = argv[5].a_w.w_symbol; + break; + default: + /* no fa res */ + break; } - x->x_name = argv[0].a_w.w_symbol; - nfil = (int)argv[1].a_w.w_float; - ncol = (int)argv[2].a_w.w_float; - x->x_color_fons = argv[3].a_w.w_symbol; - x->x_color_marc = argv[4].a_w.w_symbol; /* el màxim es fixa pel nombre de digits utilitzats pel nom de la imatge temporal */ maxdigit = pow(10,BYTES_NUM_TEMP); if((nfil*ncol) <= maxdigit){ @@ -629,17 +757,16 @@ static void videogrid_dialog(t_videogrid *x, t_symbol *s, int argc, t_atom *argv x->x_num_fil = nfil; x->x_num_col = ncol; }else{ - post("Videogrid: El nombre de files i columnes són inferiors al mímin permès: 1 casella\n",maxdigit); + post("Videogrid: The number of rows and columns is less than the minimum allowed: 1 cell.\n",maxdigit); } }else{ - post("Videogrid: El nombre de files i columnes excedeixen del màxim permès: un total de %d caselles\n",maxdigit); + post("Videogrid: The number of rows and columns exceeds the maximum allowed: a total of %d cells.\n",maxdigit); } - - post("Videogrid: Valors modificats_ nom = %s\n fils = %d \t cols = %d\n", x->x_name->s_name, x->x_num_fil, x->x_num_col); + /* post("Videogrid: Modified values\n name = %s\n rows = %d \t cols = %d.\n", x->x_name->s_name, x->x_num_fil, x->x_num_col); */ /* elimina els nodes no representables amb la nova configuració */ maxim = x->x_num_fil * x->x_num_col; int extret; - videogrid_erase(x, x->x_glist); + videogrid_erase(x, x->x_glist,0); /* si hi ha més nodes a la cua que el maxim */ while((numNodes(&x->x_cua)) > maxim){ /* desencuem */ @@ -682,13 +809,13 @@ static void *videogrid_new(t_symbol* name, int argc, t_atom *argv) x->x_sortida = outlet_new(&x->x_obj,&s_symbol); /* s'obté el canvas de pd */ x->x_glist = (t_glist*) canvas_getcurrent(); - /* posició en el tauler de la última imatge afegida */ x->x_ultima_img = 0; /* posició de l'últim fitxer del directori encuat */ x->x_dir_pos = 0; /* apuntador al primer element en el tauler */ x->x_tauler_primer = NULL; + x->x_pos_selected = -1; /* fixa el nom de l'objecte */ char nom[15]; sprintf(nom, "videogrid%d", ++videogridcount); @@ -698,59 +825,83 @@ static void *videogrid_new(t_symbol* name, int argc, t_atom *argv) pd_bind(&x->x_obj.ob_pd, x->x_name); /* crea la cua de nodes */ crearCua(&x->x_cua); - post("NOU videogrid: s'han entrat %d arguments\n", argc); - - if (argc != 0) - { - post("NOU videogrid: s'obre un objecte existent o amb arguments definits\n"); - /* x->x_name */ - x->x_num_fil = (int)atom_getintarg(1, argc, argv); - x->x_num_col = (int)atom_getintarg(2, argc, argv); - x->x_color_fons = argv[3].a_w.w_symbol; - x->x_color_marc = argv[4].a_w.w_symbol; - post("!!!NOU videogrid: s'han entrat %d arguments\n", argc); - if(argc == 6){ - /* llegir la cadena de paths | afegir els paths a la cua */ - char *cadenaPaths; - cadenaPaths = (char *)malloc(51200*sizeof(char)); - strcpy(cadenaPaths,(char *)argv[5].a_w.w_symbol->s_name); - /* printf("Es carreguen els paths %s --- %s **** %s\n", cadenaPaths, argv[5].a_w.w_symbol->s_name,argv[3].a_w.w_symbol->s_name); */ - /* split */ - - char *token; - t_symbol *tt; - for ( token = strtok(argv[5].a_w.w_symbol->s_name,"|"); - token != NULL; - token = strtok(NULL,"|") ){ - tt = gensym(token); - - /* printf("AFEGINT CARREGANT %s\n",tt->s_name); */ - /* videogrid_putvideo(x,tt); */ - /* DE MOMENT NO AFEGEIX ELS PATHS */ - /* videogrid_afegir_imatge(x,tt->s_name); */ - } - /* - token = strtok(cadenaPaths,"|"); - while(token){ - tt = gensym(token); - printf("AFEGINT CARREGANT %s\n",tt->s_name); - videogrid_putvideo(x,tt); - token = strtok(NULL,"|"); - } - */ - free(cadenaPaths); - } - }else{ - /* crea un objecte nou */ - post("NOU videogrid: es crea un objecte nou\n"); - /* fixa el nombre de files */ - x->x_num_fil = 3; - /* fixa el nombre de columnes */ - x->x_num_col = 5; - - /* colors de fons i de marc*/ - x->x_color_fons = gensym("#F0F0F0"); - x->x_color_marc = gensym("#0F0F0F"); + post("NEW videogrid: created with %d parameters.\n", argc); + + switch (argc) { + case 3: + /* versio inicial */ + x->x_num_fil = (int)atom_getintarg(1, argc, argv); + x->x_num_col = (int)atom_getintarg(2, argc, argv); + x->x_color_fons = gensym("#F0F0F0"); + x->x_color_marc = gensym("#0F0F0F"); + x->x_color_grasp = gensym("#F1882B"); + break; + case 5: + /* versio 0.1 */ + x->x_num_fil = (int)atom_getintarg(1, argc, argv); + x->x_num_col = (int)atom_getintarg(2, argc, argv); + x->x_color_fons = argv[3].a_w.w_symbol; + x->x_color_marc = argv[4].a_w.w_symbol; + x->x_color_grasp = gensym("#F1882B"); + break; + case 6: + /* versio 0.2 */ + x->x_num_fil = (int)atom_getintarg(1, argc, argv); + x->x_num_col = (int)atom_getintarg(2, argc, argv); + x->x_color_fons = argv[3].a_w.w_symbol; + x->x_color_marc = argv[4].a_w.w_symbol; + x->x_color_grasp = argv[5].a_w.w_symbol; + break; + case 7: + /* versio 0.1 - paths dels elsements del tauler */ + x->x_num_fil = (int)atom_getintarg(1, argc, argv); + x->x_num_col = (int)atom_getintarg(2, argc, argv); + x->x_color_fons = argv[3].a_w.w_symbol; + x->x_color_marc = argv[4].a_w.w_symbol; + x->x_color_grasp = argv[5].a_w.w_symbol; + /* + // -- llegir la cadena de paths | afegir els paths a la cua // + // -- ATENCIO! NO AFEGEIX ELS PATHS !!! // + char *cadenaPaths; + cadenaPaths = (char *)malloc(51200*sizeof(char)); + strcpy(cadenaPaths,(char *)argv[6].a_w.w_symbol->s_name); + // -- printf("Es carreguen els paths %s --- %s **** %s\n", cadenaPaths, argv[5].a_w.w_symbol->s_name,argv[3].a_w.w_symbol->s_name); // + // -- split // + char *token; + t_symbol *tt; + for ( token = strtok(argv[6].a_w.w_symbol->s_name,"|"); + token != NULL; + token = strtok(NULL,"|") ){ + tt = gensym(token); + // -- printf("AFEGINT CARREGANT %s\n",tt->s_name); // + // -- imagegrid_putimg(x,tt); // + // -- ATENCIO! NO AFEGEIX ELS PATHS !!! // + // -- imagegrid_afegir_imatge(x,tt->s_name); // + } + + token = strtok(cadenaPaths,"|"); + while(token){ + tt = gensym(token); + printf("AFEGINT CARREGANT %s\n",tt->s_name); + imagegrid_putimg(x,tt); + token = strtok(NULL,"|"); + } + free(cadenaPaths); + */ + break; + + default: + /* crea un objecte nou per defecte */ + /* post("NEW imagegrid created.\n"); */ + /* fixa el nombre de files */ + x->x_num_fil = 3; + /* fixa el nombre de columnes */ + x->x_num_col = 5; + /* colors de fons i de marc*/ + x->x_color_fons = gensym("#F0F0F0"); + x->x_color_marc = gensym("#0F0F0F"); + x->x_color_grasp = gensym("#F1882B"); + break; } /* printf("S'ha instanciat un videogrid anomenat %s amb les caracteristiques seguents:",x->x_name->s_name); printf("Nombre de files %d - Nombre de columnes: %d", x->x_num_fil, x->x_num_col); */ @@ -761,7 +912,7 @@ static void *videogrid_new(t_symbol* name, int argc, t_atom *argv) static void videogrid_destroy(t_videogrid *x){ /* elimina el contingut de la cua */ eliminarCua(&x->x_cua); - post("Videogrid eliminat"); + post("Videogrid destroyed.\n"); } /* generacio d'una nova classe */ @@ -814,6 +965,10 @@ void videogrid_setup(void) class_addmethod(videogrid_class, (t_method)videogrid_dialog, gensym("dialog"), A_GIMME, 0); /* afegeix un metode per l'obtencio de la posicio del clic del ratolí */ class_addmethod(videogrid_class, (t_method)videogrid_click, gensym("click"), A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0); + /* v 0.2 -- afegeix un metode netejar el contigut del tauler */ + class_addmethod(videogrid_class, (t_method)videogrid_clear, gensym("clear"), 0); + /* v 0.2 -- afegeix un metode seek #num per disparar */ + class_addmethod(videogrid_class, (t_method)videogrid_seek, gensym("seek"), A_FLOAT, 0); /* inicia el comportament de videogrid */ videogrid_setwidget(); diff --git a/videogrid/videogrid.tk b/videogrid/videogrid.tk index 9505b6b..cd2a07d 100644 --- a/videogrid/videogrid.tk +++ b/videogrid/videogrid.tk @@ -15,7 +15,8 @@ proc videogrid_apply {id} { global $var_graph_color_fons set var_graph_color_marc [concat graph_color_marc_$vid] global $var_graph_color_marc - + set var_graph_color_grasp [concat graph_color_grasp_$vid] + global $var_graph_color_grasp set cmd [concat $id dialog \ [eval concat $$var_graph_name] \ @@ -23,6 +24,7 @@ proc videogrid_apply {id} { [eval concat $$var_graph_num_col] \ [eval concat $$var_graph_color_fons] \ [eval concat $$var_graph_color_marc] \ + [eval concat $$var_graph_color_grasp] \ \;] #puts stderr $cmd pd $cmd @@ -39,7 +41,7 @@ proc videogrid_ok {id} { videogrid_cancel $id } -proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc} { +proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc color_grasp} { set vid [string trimleft $id .] set var_graph_name [concat graph_name_$vid] global $var_graph_name @@ -51,12 +53,15 @@ proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc} { global $var_graph_color_fons set var_graph_color_marc [concat graph_color_marc_$vid] global $var_graph_color_marc + set var_graph_color_grasp [concat graph_color_grasp_$vid] + global $var_graph_color_grasp set $var_graph_name $name set $var_graph_num_fil $num_fil set $var_graph_num_col $num_col set $var_graph_color_fons $color_fons set $var_graph_color_marc $color_marc + set $var_graph_color_grasp $color_grasp toplevel $id wm title $id {videogrid} @@ -79,13 +84,13 @@ proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc} { frame $id.1rangef pack $id.1rangef -side top - label $id.1rangef.lname -text "Nom :" + label $id.1rangef.lname -text "Name :" entry $id.1rangef.name -textvariable $var_graph_name -width 7 pack $id.1rangef.lname $id.1rangef.name -side left frame $id.2rangef pack $id.2rangef -side top - label $id.2rangef.lnum_fil -text "Fils :" + label $id.2rangef.lnum_fil -text "Rows :" entry $id.2rangef.num_fil -textvariable $var_graph_num_fil -width 7 pack $id.2rangef.lnum_fil $id.2rangef.num_fil -side left @@ -97,22 +102,28 @@ proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc} { frame $id.4rangef pack $id.4rangef -side top - label $id.4rangef.lcolor_fons -text "Color fons :" + label $id.4rangef.lcolor_fons -text "Bg Color :" entry $id.4rangef.color_fons -textvariable $var_graph_color_fons -width 7 pack $id.4rangef.lcolor_fons $id.4rangef.color_fons -side left frame $id.5rangef pack $id.5rangef -side top - label $id.5rangef.lcolor_marc -text "Color marc :" + label $id.5rangef.lcolor_marc -text "Border Color :" entry $id.5rangef.color_marc -textvariable $var_graph_color_marc -width 7 pack $id.5rangef.lcolor_marc $id.5rangef.color_marc -side left + frame $id.6rangef + pack $id.6rangef -side top + label $id.6rangef.lcolor_grasp -text "Sel Color :" + entry $id.6rangef.color_grasp -textvariable $var_graph_color_grasp -width 7 + pack $id.6rangef.lcolor_grasp $id.6rangef.color_grasp -side left bind $id.1rangef.name [concat videogrid_ok $id] bind $id.2rangef.num_fil [concat videogrid_ok $id] bind $id.3rangef.num_col [concat videogrid_ok $id] bind $id.4rangef.color_fons [concat videogrid_ok $id] bind $id.5rangef.color_marc [concat videogrid_ok $id] + bind $id.6rangef.color_grasp [concat videogrid_ok $id] focus $id.1rangef.name } diff --git a/videogrid/videogrid.tk2c b/videogrid/videogrid.tk2c index 69aa210..27bc02a 100644 --- a/videogrid/videogrid.tk2c +++ b/videogrid/videogrid.tk2c @@ -13,7 +13,9 @@ sys_gui("set var_graph_color_fons [concat graph_color_fons_$vid]\n"); sys_gui("global $var_graph_color_fons\n"); sys_gui("set var_graph_color_marc [concat graph_color_marc_$vid]\n"); sys_gui("global $var_graph_color_marc\n"); -sys_gui("set cmd [concat $id dialog [eval concat $$var_graph_name] [eval concat $$var_graph_num_fil] [eval concat $$var_graph_num_col] [eval concat $$var_graph_color_fons] [eval concat $$var_graph_color_marc] \\;]\n"); +sys_gui("set var_graph_color_grasp [concat graph_color_grasp_$vid]\n"); +sys_gui("global $var_graph_color_grasp\n"); +sys_gui("set cmd [concat $id dialog [eval concat $$var_graph_name] [eval concat $$var_graph_num_fil] [eval concat $$var_graph_num_col] [eval concat $$var_graph_color_fons] [eval concat $$var_graph_color_marc] [eval concat $$var_graph_color_grasp] \\;]\n"); // puts stderr $cmd sys_gui("pd $cmd\n"); sys_gui("}\n"); @@ -26,7 +28,7 @@ sys_gui("proc videogrid_ok {id} {\n"); sys_gui("videogrid_apply $id\n"); sys_gui("videogrid_cancel $id\n"); sys_gui("}\n"); -sys_gui("proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc} {\n"); +sys_gui("proc pdtk_videogrid_dialog {id name num_fil num_col color_fons color_marc color_grasp} {\n"); sys_gui("set vid [string trimleft $id .]\n"); sys_gui("set var_graph_name [concat graph_name_$vid]\n"); sys_gui("global $var_graph_name\n"); @@ -38,11 +40,14 @@ sys_gui("set var_graph_color_fons [concat graph_color_fons_$vid]\n"); sys_gui("global $var_graph_color_fons\n"); sys_gui("set var_graph_color_marc [concat graph_color_marc_$vid]\n"); sys_gui("global $var_graph_color_marc\n"); +sys_gui("set var_graph_color_grasp [concat graph_color_grasp_$vid]\n"); +sys_gui("global $var_graph_color_grasp\n"); sys_gui("set $var_graph_name $name\n"); sys_gui("set $var_graph_num_fil $num_fil\n"); sys_gui("set $var_graph_num_col $num_col\n"); sys_gui("set $var_graph_color_fons $color_fons\n"); sys_gui("set $var_graph_color_marc $color_marc\n"); +sys_gui("set $var_graph_color_grasp $color_grasp\n"); sys_gui("toplevel $id\n"); sys_gui("wm title $id {videogrid}\n"); sys_gui("wm protocol $id WM_DELETE_WINDOW [concat videogrid_cancel $id]\n"); @@ -58,12 +63,12 @@ sys_gui("pack $id.buttonframe.apply -side left -expand 1\n"); sys_gui("pack $id.buttonframe.ok -side left -expand 1\n"); sys_gui("frame $id.1rangef\n"); sys_gui("pack $id.1rangef -side top\n"); -sys_gui("label $id.1rangef.lname -text \"Nom :\"\n"); +sys_gui("label $id.1rangef.lname -text \"Name :\"\n"); sys_gui("entry $id.1rangef.name -textvariable $var_graph_name -width 7\n"); sys_gui("pack $id.1rangef.lname $id.1rangef.name -side left\n"); sys_gui("frame $id.2rangef\n"); sys_gui("pack $id.2rangef -side top\n"); -sys_gui("label $id.2rangef.lnum_fil -text \"Fils :\"\n"); +sys_gui("label $id.2rangef.lnum_fil -text \"Rows :\"\n"); sys_gui("entry $id.2rangef.num_fil -textvariable $var_graph_num_fil -width 7\n"); sys_gui("pack $id.2rangef.lnum_fil $id.2rangef.num_fil -side left\n"); sys_gui("frame $id.3rangef\n"); @@ -73,19 +78,25 @@ sys_gui("entry $id.3rangef.num_col -textvariable $var_graph_num_col -width 7\n") sys_gui("pack $id.3rangef.lnum_col $id.3rangef.num_col -side left\n"); sys_gui("frame $id.4rangef\n"); sys_gui("pack $id.4rangef -side top\n"); -sys_gui("label $id.4rangef.lcolor_fons -text \"Color fons :\"\n"); +sys_gui("label $id.4rangef.lcolor_fons -text \"Bg Color :\"\n"); sys_gui("entry $id.4rangef.color_fons -textvariable $var_graph_color_fons -width 7\n"); sys_gui("pack $id.4rangef.lcolor_fons $id.4rangef.color_fons -side left\n"); sys_gui("frame $id.5rangef\n"); sys_gui("pack $id.5rangef -side top\n"); -sys_gui("label $id.5rangef.lcolor_marc -text \"Color marc :\"\n"); +sys_gui("label $id.5rangef.lcolor_marc -text \"Border Color :\"\n"); sys_gui("entry $id.5rangef.color_marc -textvariable $var_graph_color_marc -width 7\n"); sys_gui("pack $id.5rangef.lcolor_marc $id.5rangef.color_marc -side left\n"); +sys_gui("frame $id.6rangef\n"); +sys_gui("pack $id.6rangef -side top\n"); +sys_gui("label $id.6rangef.lcolor_grasp -text \"Sel Color :\"\n"); +sys_gui("entry $id.6rangef.color_grasp -textvariable $var_graph_color_grasp -width 7\n"); +sys_gui("pack $id.6rangef.lcolor_grasp $id.6rangef.color_grasp -side left\n"); sys_gui("bind $id.1rangef.name [concat videogrid_ok $id]\n"); sys_gui("bind $id.2rangef.num_fil [concat videogrid_ok $id]\n"); sys_gui("bind $id.3rangef.num_col [concat videogrid_ok $id]\n"); sys_gui("bind $id.4rangef.color_fons [concat videogrid_ok $id]\n"); sys_gui("bind $id.5rangef.color_marc [concat videogrid_ok $id]\n"); +sys_gui("bind $id.6rangef.color_grasp [concat videogrid_ok $id]\n"); sys_gui("focus $id.1rangef.name\n"); sys_gui("}\n"); sys_gui("proc table {w content args} {\n"); -- cgit v1.2.1