Update of /cvsroot/pure-data/externals/bbogart/popup In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16483
Modified Files: popup.c Log Message: added a "disable"-message to turn off graphical chosing (you can still choose via float/symbol-messages)
Index: popup.c =================================================================== RCS file: /cvsroot/pure-data/externals/bbogart/popup/popup.c,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** popup.c 6 Jun 2005 17:18:18 -0000 1.14 --- popup.c 7 Jun 2005 08:49:23 -0000 1.15 *************** *** 60,64 **** int x_maxoptions;
! int initialized; /* 1 when we are allowed to draw, 0 otherwise */ } t_popup;
--- 60,65 ---- int x_maxoptions;
! int initialized; /* 1 when we are allowed to draw, 0 otherwise */ ! int x_disabled; /* when disabled, graphical chosing is prohibited */ } t_popup;
*************** *** 157,170 ****
/* 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); ! }
DEBUG(post("id: .x%x.c.s%x", canvas, x);) --- 158,174 ----
/* 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);
! 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); ! } ! }
DEBUG(post("id: .x%x.c.s%x", canvas, x);) *************** *** 177,185 **** DEBUG(post("drawme start");)
! /* by drawing, we "initialize" the popup */ ! if(!x->initialized){ ! x->initialized=1; ! } !
DEBUG(post("drawme %d",firsttime);) --- 181,186 ---- DEBUG(post("drawme start");)
! /* by drawing, we "initialize" the popup */ ! x->initialized=1;
DEBUG(post("drawme %d",firsttime);) *************** *** 199,202 **** --- 200,205 ---- draw_inlets(x, glist, firsttime, 2,2); // draw_handle(x, glist, firsttime); + sys_vgui(".x%x.c.s%x configure -state "%s"\n", canvas, x, x->x_disabled?"disabled":"active"); +
// Output a bang to first outlet when we're ready to receive float messages the first time!. *************** *** 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");) --- 216,230 ----
DEBUG(post("erase start");) ! if(x->initialized){ ! 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");) *************** *** 274,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), --- 279,285 ----
t_popup *x = (t_popup *)z; ! if(x->initialized){ ! if (state) { ! sys_vgui(".x%x.c create rectangle \ %d %d %d %d -tags %xSEL -outline blue\n", glist_getcanvas(glist), *************** *** 281,288 **** text_xpix(&x->x_obj, glist) + x->x_rect_width, text_ypix(&x->x_obj, glist) + x->x_rect_height-2, x); ! } ! else { ! if(x->initialized)sys_vgui(".x%x.c delete %xSEL\n", ! glist_getcanvas(glist), x); }
--- 287,295 ---- text_xpix(&x->x_obj, glist) + x->x_rect_width, text_ypix(&x->x_obj, glist) + x->x_rect_height-2, x); ! } ! else { ! sys_vgui(".x%x.c delete %xSEL\n", ! glist_getcanvas(glist), x); ! } }
*************** *** 384,388 ****
/* function to change the popup's menu */ ! void popup_options(t_popup* x, t_symbol *s, int argc, t_atom *argv) { DEBUG(post("options start");) --- 391,395 ----
/* function to change the popup's menu */ ! static void popup_options(t_popup* x, t_symbol *s, int argc, t_atom *argv) { DEBUG(post("options start");) *************** *** 447,451 ****
} else { ! pd_error(x, "popup: Valid menu selections are from %d to %d\npopup: You entered %d.", 0, x->x_num_options, i); }
--- 454,458 ----
} else { ! pd_error(x, "popup: Valid menu selections are from %d to %d\npopup: You entered %d.", 0, x->x_num_options-1, i); }
*************** *** 478,482 ****
/* Function to append symbols to popup list */ ! void popup_append(t_popup* x, t_symbol *s, int argc, t_atom *argv) { DEBUG(post("append start");) --- 485,489 ----
/* Function to append symbols to popup list */ ! static void popup_append(t_popup* x, t_symbol *s, int argc, t_atom *argv) { DEBUG(post("append start");) *************** *** 515,518 **** --- 522,533 ---- }
+ static void popup_disable(t_popup*x, t_float f){ + x->x_disabled=(f>0.f); + if(x->x_glist && glist_isvisible(x->x_glist)){ + t_canvas *canvas=glist_getcanvas(x->x_glist); + sys_vgui(".x%x.c.s%x configure -state "%s"\n", canvas, x, x->x_disabled?"disabled":"active"); + } + } +
*************** *** 552,555 **** --- 567,572 ---- x->initialized=0;
+ x->x_disabled=0; + switch(argc){ case 0: break; /* just use default values */ *************** *** 630,633 **** --- 647,655 ---- 0);
+ class_addmethod(popup_class, (t_method)popup_disable, + gensym("disable"), + A_FLOAT, + 0); + class_doaddfloat(popup_class, (t_method)popup_iselect);