bool flext_obj::GetParamSym(t_atom &dst,const t_symbol *sym,t_canvas *c) { #if FLEXT_SYS == FLEXT_SYS_PD && defined(PD_MINOR_VERSION) && PD_MINOR_VERSION >= 37 if(!c) c = canvas_getcurrent(); const char *s = GetString(sym); if((s[0] == '$' || s[0] == '#') && isdigit(s[1])) { const t_symbol *res; // patcher parameter detected... get value! if(s[0] != '$') { char tmp[MAXPDSTRING]; strcpy(tmp,s); tmp[0] = '$'; res = canvas_realizedollar(c,const_cast<t_symbol *>(MakeSymbol(tmp))); } else res = canvas_realizedollar(c,const_cast<t_symbol *>(sym)); // check for number const char *c = GetString(res); while(*c && (isdigit(*c) || *c == '.')) ++c; if(!*c) SetFloat(dst,(float)atof(GetString(res))); else SetSymbol(dst,res); return true; } else #else #pragma message("Not implemented") #endif SetSymbol(dst,sym); return true; }
/* convert symbols in "$" form to the expanded symbols */ void iemgui_all_dollararg2sym(t_iemgui *iemgui, t_symbol **srlsym) { /* save unexpanded ones for later */ iemgui->x_snd_unexpanded = srlsym[0]; iemgui->x_rcv_unexpanded = srlsym[1]; iemgui->x_lab_unexpanded = srlsym[2]; srlsym[0] = canvas_realizedollar(iemgui->x_glist, srlsym[0]); srlsym[1] = canvas_realizedollar(iemgui->x_glist, srlsym[1]); srlsym[2] = canvas_realizedollar(iemgui->x_glist, srlsym[2]); }
int iemgui_dialog(t_iemgui *x, int argc, t_atom *argv) { t_symbol *srl[3]; x->x_loadinit = !!atom_getintarg(5, argc, argv); srl[0] = iemgui_getfloatsymarg(7,argc,argv); srl[1] = iemgui_getfloatsymarg(8,argc,argv); srl[2] = iemgui_getfloatsymarg(9,argc,argv); x->x_ldx = atom_getintarg(10, argc, argv); x->x_ldy = atom_getintarg(11, argc, argv); int f = atom_getintarg(12, argc, argv); x->x_fontsize = maxi(atom_getintarg(13, argc, argv),4); x->x_bcol = atom_getintarg(14, argc, argv) & 0xffffff; x->x_fcol = atom_getintarg(15, argc, argv) & 0xffffff; x->x_lcol = atom_getintarg(16, argc, argv) & 0xffffff; int oldsndrcvable=0; if(iemgui_has_rcv(x)) oldsndrcvable |= IEM_GUI_OLD_RCV_FLAG; if(iemgui_has_snd(x)) oldsndrcvable |= IEM_GUI_OLD_SND_FLAG; iemgui_all_raute2dollar(srl); // replace ascii code 11 (\v or vertical tab) with spaces // we do this so that the string with spaces can survive argc,argv // conversion when coming from dialog side of things where it is parsed char *c; for(c = srl[2]->s_name; c != NULL && *c != '\0'; c++) { if(*c == '\v') { *c = ' '; } } x->x_snd_unexpanded=srl[0]; srl[0]=canvas_realizedollar(x->x_glist, srl[0]); x->x_rcv_unexpanded=srl[1]; srl[1]=canvas_realizedollar(x->x_glist, srl[1]); x->x_lab_unexpanded=srl[2]; srl[2]=canvas_realizedollar(x->x_glist, srl[2]); if(srl[1]!=x->x_rcv) { if(iemgui_has_rcv(x)) pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = srl[1]; pd_bind((t_pd *)x, x->x_rcv); } x->x_snd = srl[0]; x->x_lab = srl[2]; if(f<0 || f>2) f=0; x->x_font_style = f; iemgui_verify_snd_ne_rcv(x); canvas_dirty(x->x_glist, 1); return oldsndrcvable; }
void iemgui_receive(t_iemgui *x, t_symbol *s) { t_symbol *rcv; if (s == &s_) s = s_empty; //tb: fix for empty label int oldsndrcvable=0; if(iemgui_has_rcv(x)) oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; if(iemgui_has_snd(x)) oldsndrcvable += IEM_GUI_OLD_SND_FLAG; rcv = iemgui_raute2dollar(s); x->x_rcv_unexpanded = rcv; rcv = canvas_realizedollar(x->x_glist, rcv); if(s!=s_empty) { if(rcv!=x->x_rcv) { if(iemgui_has_rcv(x)) pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = rcv; pd_bind((t_pd *)x, x->x_rcv); } } else if(s==s_empty && iemgui_has_rcv(x)) { pd_unbind((t_pd *)x, x->x_rcv); x->x_rcv = rcv; } iemgui_verify_snd_ne_rcv(x); iemgui_draw_io(x, oldsndrcvable); }
void iemgui_send(t_iemgui *x, t_symbol *s) { t_symbol *snd; if (s == &s_) s = s_empty; //tb: fix for empty label int oldsndrcvable=0; if(iemgui_has_rcv(x)) oldsndrcvable += IEM_GUI_OLD_RCV_FLAG; if(iemgui_has_snd(x)) oldsndrcvable += IEM_GUI_OLD_SND_FLAG; snd = iemgui_raute2dollar(s); x->x_snd_unexpanded = snd; x->x_snd = snd = canvas_realizedollar(x->x_glist, snd); iemgui_verify_snd_ne_rcv(x); iemgui_draw_io(x, oldsndrcvable); }
void iemgui_label(t_iemgui *x, t_symbol *s) { if (s == &s_) s = s_empty; //tb: fix for empty label t_symbol *lab = iemgui_raute2dollar(s); x->x_lab_unexpanded = lab; x->x_lab = lab = canvas_realizedollar(x->x_glist, lab); if(glist_isvisible(x->x_glist)) { sys_vgui(".x%lx.c itemconfigure %lxLABEL -text {%s} \n", glist_getcanvas(x->x_glist), x, s!=s_empty?x->x_lab->s_name:""); iemgui_shouldvis(x, IEM_GUI_DRAW_MODE_CONFIG); } }
static void *parentdollarzero_new(void) { t_parentdollarzero *x = (t_parentdollarzero *)pd_new(parentdollarzero_class); t_glist *glist = (t_glist *)canvas_getcurrent(); t_canvas *this_canvas = glist_getcanvas(glist); x->x_is_there_a_parent = (unsigned int)(0!=this_canvas->gl_owner); if(x->x_is_there_a_parent) x->s_parent_unique = canvas_realizedollar((t_canvas *)this_canvas->gl_owner, gensym("$0")); else x->s_parent_unique = gensym(""); outlet_new(&x->x_obj, &s_symbol); return (x); }
static void *parentdollarzero_new(void) { t_parentdollarzero *x = (t_parentdollarzero *)pd_new(parentdollarzero_class); #ifdef HAVE_G_CANVAS_H t_glist *glist = (t_glist *)canvas_getcurrent(); t_canvas *this_canvas = glist_getcanvas(glist); x->x_is_there_a_parent = (unsigned int)(0!=this_canvas->gl_owner); if(x->x_is_there_a_parent) x->s_parent_unique = canvas_realizedollar((t_canvas *)this_canvas->gl_owner, gensym("$0")); else #else x->x_is_there_a_parent=0; error("[parentdollarzero]: compiled without g_canvas.h - cannot work properly!"); #endif x->s_parent_unique = gensym(""); outlet_new(&x->x_obj, &s_symbol); return (x); }
static void *canvasdollarzero_new(t_floatarg f) { t_canvasdollarzero *x = (t_canvasdollarzero *)pd_new(canvasdollarzero_class); t_glist *glist=(t_glist *)canvas_getcurrent(); t_canvas *canvas=(t_canvas*)glist_getcanvas(glist); int depth=(int)f; if(depth<0)depth=0; while(depth && canvas) { canvas=canvas->gl_owner; depth--; } x->s_dollzero=0; if(canvas) { x->s_dollzero = canvas_realizedollar(canvas, gensym("$0")); } outlet_new(&x->x_obj, &s_symbol); return (x); }