Update of /cvsroot/pure-data/externals/bbogart/popup
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28145
Modified Files:
popup.c
Log Message:
removed the constraint about not being able to loadbang the object with options
Index: popup.c
===================================================================
RCS file: /cvsroot/pure-data/externals/bbogart/popup/popup.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** popup.c 6 Jun 2005 15:13:43 -0000 1.12
--- popup.c 6 Jun 2005 16:05:31 -0000 1.13
***************
*** 59,62 ****
--- 59,64 ----
t_symbol** x_options;
int x_maxoptions;
+
+ int initialized; /* 1 when we are allowed to draw, 0 otherwise */
} t_popup;
***************
*** 64,68 ****
/* Append " x " to the following line to show debugging messages */
! #define DEBUG(x)
--- 66,70 ----
/* Append " x " to the following line to show debugging messages */
! #define DEBUG(x)
***************
*** 155,166 ****
/* Seems we have to delete the widget in case it already exists (Provided by Guenter)*/
! sys_vgui("destroy .x%x.c.s%x\n",glist_getcanvas(glist),x);
! sys_vgui("set %xw .x%x.c.s%x ; menubutton $%xw -relief raised -background \"%s\" -text \"%s\" -direction flush -menu $%xw.menu ; menu $%xw.menu -tearoff 0\n",
x,canvas,x,x,x->x_colour->s_name,temp_name->s_name,x,x);
for(i=0 ; i<x->x_num_options ; i++)
{
! sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
canvas, x, x->x_options[i]->s_name, canvas, x, x->x_options[i]->s_name, x, i);
}
--- 157,168 ----
/* Seems we have to delete the widget in case it already exists (Provided by Guenter)*/
! if(x->initialized)sys_vgui("destroy .x%x.c.s%x\n",glist_getcanvas(glist),x);
! if(x->initialized)sys_vgui("set %xw .x%x.c.s%x ; menubutton $%xw -relief raised -background \"%s\" -text \"%s\" -direction flush -menu $%xw.menu ; menu $%xw.menu -tearoff 0\n",
x,canvas,x,x,x->x_colour->s_name,temp_name->s_name,x,x);
for(i=0 ; i<x->x_num_options ; i++)
{
! if(x->initialized)sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
canvas, x, x->x_options[i]->s_name, canvas, x, x->x_options[i]->s_name, x, i);
}
***************
*** 174,177 ****
--- 176,186 ----
t_canvas *canvas=glist_getcanvas(glist);
DEBUG(post("drawme start");)
+
+ /* by drawing, we "initialize" the popup */
+ if(!x->initialized){
+ x->initialized=1;
+ }
+
+
DEBUG(post("drawme %d",firsttime);)
if (firsttime) {
***************
*** 204,216 ****
DEBUG(post("erase start");)
! sys_vgui("destroy .x%x.c.s%x\n",glist_getcanvas(glist),x);
! sys_vgui(".x%x.c delete %xS\n",glist_getcanvas(glist), x);
/* inlets and outlets */
! sys_vgui(".x%x.c delete %xi\n",glist_getcanvas(glist),x); /* Added tag for all inlets of one instance */
! sys_vgui(".x%x.c delete %xo\n",glist_getcanvas(glist),x); /* Added tag for all outlets of one instance */
! sys_vgui(".x%x.c delete %xhandle\n",glist_getcanvas(glist),x,0);
DEBUG(post("erase end");)
--- 213,225 ----
DEBUG(post("erase start");)
! if(x->initialized)sys_vgui("destroy .x%x.c.s%x\n",glist_getcanvas(glist),x);
! if(x->initialized)sys_vgui(".x%x.c delete %xS\n",glist_getcanvas(glist), x);
/* inlets and outlets */
! if(x->initialized)sys_vgui(".x%x.c delete %xi\n",glist_getcanvas(glist),x); /* Added tag for all inlets of one instance */
! if(x->initialized)sys_vgui(".x%x.c delete %xo\n",glist_getcanvas(glist),x); /* Added tag for all outlets of one instance */
! if(x->initialized)sys_vgui(".x%x.c delete %xhandle\n",glist_getcanvas(glist),x,0);
DEBUG(post("erase end");)
***************
*** 225,229 ****
int *xp1, int *yp1, int *xp2, int *yp2)
{
! DEBUG(post("getrect start");)
int width, height;
--- 234,238 ----
int *xp1, int *yp1, int *xp2, int *yp2)
{
! DEBUG(post("getrect start");)
int width, height;
***************
*** 249,253 ****
if (glist_isvisible(glist))
{
! sys_vgui(".x%x.c coords %xSEL %d %d %d %d\n",
glist_getcanvas(glist), x,
text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1,
--- 258,262 ----
if (glist_isvisible(glist))
{
! if(x->initialized)sys_vgui(".x%x.c coords %xSEL %d %d %d %d\n",
glist_getcanvas(glist), x,
text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1,
***************
*** 266,270 ****
t_popup *x = (t_popup *)z;
if (state) {
! sys_vgui(".x%x.c create rectangle \
%d %d %d %d -tags %xSEL -outline blue\n",
glist_getcanvas(glist),
--- 275,279 ----
t_popup *x = (t_popup *)z;
if (state) {
! if(x->initialized)sys_vgui(".x%x.c create rectangle \
%d %d %d %d -tags %xSEL -outline blue\n",
glist_getcanvas(glist),
***************
*** 274,278 ****
}
else {
! sys_vgui(".x%x.c delete %xSEL\n",
glist_getcanvas(glist), x);
}
--- 283,287 ----
}
else {
! if(x->initialized)sys_vgui(".x%x.c delete %xSEL\n",
glist_getcanvas(glist), x);
}
***************
*** 384,388 ****
/* delete old menu items */
! sys_vgui(".x%x.c.s%x.menu delete 0 end \n", x->x_glist, x);
if(argc>x->x_maxoptions){
--- 393,397 ----
/* delete old menu items */
! if(x->initialized)sys_vgui(".x%x.c.s%x.menu delete 0 end \n", x->x_glist, x);
if(argc>x->x_maxoptions){
***************
*** 396,400 ****
{
x->x_options[i] = atom_getsymbol(argv+i);
! sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
x->x_glist, x, x->x_options[i]->s_name, x->x_glist, x, x->x_options[i]->s_name, x, i);
}
--- 405,409 ----
{
x->x_options[i] = atom_getsymbol(argv+i);
! if(x->initialized)sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
x->x_glist, x, x->x_options[i]->s_name, x->x_glist, x, x->x_options[i]->s_name, x, i);
}
***************
*** 409,413 ****
x->x_colour = col;
! sys_vgui(".x%x.c.s%x configure -background \"%s\"\n", x->x_glist, x, col->s_name);
}
--- 418,422 ----
x->x_colour = col;
! if(x->initialized)sys_vgui(".x%x.c.s%x configure -background \"%s\"\n", x->x_glist, x, col->s_name);
}
***************
*** 418,422 ****
x->x_name = name;
! sys_vgui(".x%x.c.s%x configure -text \"%s\"\n", x->x_glist, x, name->s_name);
}
--- 427,431 ----
x->x_name = name;
! if(x->initialized)sys_vgui(".x%x.c.s%x configure -text \"%s\"\n", x->x_glist, x, name->s_name);
}
***************
*** 429,437 ****
if( i<x->x_num_options && i>=0)
{
! sys_vgui(".x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\" \n",
glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name,x, i);
} else {
! post("popup: Valid menu selections are from %d to %d\npopup: You entered %d.", 0, x->x_num_options, i);
}
--- 438,447 ----
if( i<x->x_num_options && i>=0)
{
! if(x->initialized)sys_vgui(".x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\" \n",
glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name,x, i);
+ else popup_output(x, i);
} else {
! pd_error(x, "popup: Valid menu selections are from %d to %d\npopup: You entered %d.", 0, x->x_num_options, i);
}
***************
*** 449,454 ****
if(x->x_options[i]->s_name == s->s_name)
{
! sys_vgui(".x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\" \n",
glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name,x, i);
match = 1;
break;
--- 459,465 ----
if(x->x_options[i]->s_name == s->s_name)
{
! if(x->initialized)sys_vgui(".x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\" \n",
glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name,x, i);
+ else popup_output(x, i);
match = 1;
break;
***************
*** 489,493 ****
{
x->x_options[i] = atom_getsymbol(argv+i-x->x_num_options);
! sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
x->x_glist, x, x->x_options[i]->s_name, x->x_glist, x, x->x_options[i]->s_name, x, i);
}
--- 500,504 ----
{
x->x_options[i] = atom_getsymbol(argv+i-x->x_num_options);
! if(x->initialized)sys_vgui(".x%x.c.s%x.menu add command -label \"%s\" -command {.x%x.c.s%x configure -text \"%s\" ; popup_sel%x \"%d\"} \n",
x->x_glist, x, x->x_options[i]->s_name, x->x_glist, x, x->x_options[i]->s_name, x, i);
}
***************
*** 533,536 ****
--- 544,549 ----
x->x_options[0] = gensym("option");
+ x->initialized=0;
+
switch(argc){
case 0: break; /* just use default values */