[PD-cvs] externals/bbogart/popup popup.c,1.15,1.16
IOhannes m zmölnig
zmoelnig at users.sourceforge.net
Tue Jun 7 17:07:56 CEST 2005
Update of /cvsroot/pure-data/externals/bbogart/popup
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20409
Modified Files:
popup.c
Log Message:
added "set"-message
Index: popup.c
===================================================================
RCS file: /cvsroot/pure-data/externals/bbogart/popup/popup.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** popup.c 7 Jun 2005 08:49:23 -0000 1.15
--- popup.c 7 Jun 2005 15:07:53 -0000 1.16
***************
*** 484,487 ****
--- 484,527 ----
}
+ /* Function to choose value via name/index but without outputting it*/
+ static void popup_set(t_popup* x, t_symbol *S, int argc, t_atom*argv)
+ {
+ if(!argc)return;
+ int visible=(x->x_glist)?glist_isvisible(x->x_glist):0;
+
+ if(argv->a_type==A_FLOAT)
+ {
+ int i=atom_getint(argv);
+ if( i<x->x_num_options && i>=0)
+ {
+ x->current_selection = i;
+ if(visible)
+ sys_vgui(".x%x.c.s%x configure -text \"%s\"\n",
+ glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name);
+ } else {
+ error("popup: Valid menu selections are from %d to %d\npopup: You entered %d.", 0, x->x_num_options-1, i);
+ }
+ } else if(argv->a_type==A_SYMBOL)
+ {
+ int i;
+ t_symbol*s=atom_getsymbol(argv);
+ /* Compare inlet symbol to each option */
+ for(i=0; i<x->x_num_options; i++)
+ {
+ if(x->x_options[i]->s_name == s->s_name)
+ {
+ x->current_selection = i;
+ if(visible)sys_vgui(".x%x.c.s%x configure -text \"%s\"\n",
+ glist_getcanvas(x->x_glist), x, x->x_options[i]->s_name);
+ return;
+ }
+ }
+ error("popup: '%s' is not an available option.", s->s_name);
+ } else
+ {
+ pd_error(x, "popup: can only 'set' symbols or floats");
+ }
+ }
+
/* Function to append symbols to popup list */
static void popup_append(t_popup* x, t_symbol *s, int argc, t_atom *argv)
***************
*** 642,645 ****
--- 682,690 ----
0);
+ class_addmethod(popup_class, (t_method)popup_set,
+ gensym("set"),
+ A_GIMME,
+ 0);
+
class_addmethod(popup_class, (t_method)popup_symselect,
gensym(""),
More information about the Pd-cvs
mailing list