コード例 #1
0
ファイル: exciter.c プロジェクト: gdunstone/pd-macambira
void exciter_setup(void)
{
    logpost(NULL, 4,  exciter_version );
    exciter_class = class_new(gensym("exciter"), (t_newmethod)exciter_new,
                              (t_method)exciter_free, sizeof(t_exciter), 0, A_GIMME, 0);
    class_addmethod(exciter_class, (t_method)exciter_dialog, gensym("dialog"), A_GIMME, 0);
    class_addmethod(exciter_class, (t_method)exciter_dump, gensym("dump"), 0);
    class_addmethod(exciter_class, (t_method)exciter_clear, gensym("clear"), 0);
    class_addmethod(exciter_class, (t_method)exciter_start, gensym("start"), 0);
    class_addmethod(exciter_class, (t_method)exciter_stop, gensym("stop"), 0);
    class_addmethod(exciter_class, (t_method)exciter_reset, gensym("reset"), 0);
    class_addmethod(exciter_class, (t_method)exciter_pause, gensym("pause"), 0);
    class_addmethod(exciter_class, (t_method)exciter_resume, gensym("resume"), 0);
    class_addmethod(exciter_class, (t_method)exciter_dsp, gensym("dsp"), A_NULL);
    exciter_widgetbehavior.w_getrectfn =    exciter_getrect;
    exciter_widgetbehavior.w_displacefn =   exciter_displace;
    exciter_widgetbehavior.w_selectfn =     exciter_select;
    exciter_widgetbehavior.w_activatefn =   NULL;
    exciter_widgetbehavior.w_deletefn =     exciter_delete;
    exciter_widgetbehavior.w_visfn =        exciter_vis;
    exciter_widgetbehavior.w_clickfn =      exciter_click;

#if PD_MINOR_VERSION >= 37
    class_setpropertiesfn(exciter_class, exciter_properties);
    class_setsavefn(exciter_class, exciter_save);
#else
    exciter_widgetbehavior.w_propertiesfn = exciter_properties;
    exciter_widgetbehavior.w_savefn =       exciter_save;
#endif

    class_setwidget(exciter_class, &exciter_widgetbehavior);

    sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
             exciter_class->c_externdir->s_name, exciter_class->c_name->s_name);
}
コード例 #2
0
ファイル: image.c プロジェクト: pd-l2ork/pd
void image_setup(void)
{
    image_class = class_new(gensym("image"),
				(t_newmethod)image_new, (t_method)image_free,
				sizeof(t_image),0, A_GIMME,0);
/*
	class_addmethod(image_class, (t_method)image_size, gensym("size"),
    	A_FLOAT, A_FLOAT, 0);
	class_addmethod(image_class, (t_method)image_color, gensym("color"),
    	A_SYMBOL, 0);
*/
	class_addmethod(image_class, (t_method)image_click, gensym("click"),
    	A_DEFFLOAT, 0);
    class_addmethod(image_class, (t_method)image_open, gensym("open"),
    	A_GIMME, 0);
    class_addmethod(image_class, (t_method)image_gop_spill, gensym("gopspill"),
    	A_DEFFLOAT, 0);
	class_addmethod(image_class, (t_method)image_gop_spill_size, gensym("gopspill_size"),
    	A_DEFFLOAT, 0);
    class_addmethod(image_class, (t_method)image_imagesize_callback,\
                     gensym("_imagesize"), A_DEFFLOAT, A_DEFFLOAT, 0);
	
    image_setwidget();
    class_setwidget(image_class,&image_widgetbehavior);
    class_setsavefn(image_class,&image_save);
}
コード例 #3
0
ファイル: iem_image.c プロジェクト: Tzero2/pd
void iem_image_setup(void)
{
    iem_image_class = class_new(gensym("iem_image"), (t_newmethod)iem_image_new,
                                (t_method)iem_image_ff, sizeof(t_iem_image), 0, A_GIMME, 0);
    class_addmethod(iem_image_class, (t_method)iem_image_open, gensym("open"), A_SYMBOL, 0);
    class_addmethod(iem_image_class, (t_method)iem_image_clear, gensym("clear"), 0);
    class_addmethod(iem_image_class, (t_method)iem_image_delta,
                    gensym("delta"), A_GIMME, 0);
    class_addmethod(iem_image_class, (t_method)iem_image_pos,
                    gensym("pos"), A_GIMME, 0);
    class_addmethod(iem_image_class, (t_method)iem_image_send,
                    gensym("send"), A_DEFSYM, 0);
    class_addmethod(iem_image_class, (t_method)iem_image_receive,
                    gensym("receive"), A_DEFSYM, 0);

    iem_image_widgetbehavior.w_getrectfn = iem_image_getrect;
    iem_image_widgetbehavior.w_displacefn = iemgui_displace;
    iem_image_widgetbehavior.w_selectfn = iemgui_select;
    iem_image_widgetbehavior.w_activatefn = NULL;
    iem_image_widgetbehavior.w_deletefn = iemgui_delete;
    iem_image_widgetbehavior.w_visfn = iemgui_vis;
    iem_image_widgetbehavior.w_clickfn = NULL;

#if defined(PD_MAJOR_VERSION) && (PD_MINOR_VERSION >= 37)
    class_setsavefn(iem_image_class, iem_image_save);
#else
    iem_image_widgetbehavior.w_propertiesfn = NULL;
    iem_image_widgetbehavior.w_savefn = iem_image_save;
#endif

    class_setwidget(iem_image_class, &iem_image_widgetbehavior);
//  class_sethelpsymbol(iem_image_class, gensym("iemhelp2/help-iem_image"));

    //  post("iem_image library loaded!");
}
コード例 #4
0
ファイル: tglgrid.c プロジェクト: nicklan/tglgrid
void tglgrid_setup(void) {
  tg_class = class_new(gensym("tglgrid"),
                       (t_newmethod)tg_new,
                       (t_method)tg_free,
                       sizeof(t_tg),
                       CLASS_DEFAULT,
                       A_GIMME,
                       0);
  class_addcreator((t_newmethod)tg_new,gensym("rtglgrid"),A_GIMME,0);
  class_addbang(tg_class, tg_bang);
  class_addmethod(tg_class,
                  (t_method)tg_tgl,gensym("tgl"),
                  A_FLOAT,A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_on,gensym("on"),
                  A_FLOAT,A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_off,gensym("off"),
                  A_FLOAT,A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_say,gensym("say"),
                  A_FLOAT,A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_csay,gensym("csay"),
                  A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_rsay,gensym("rsay"),
                  A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tg_size,gensym("size"),
                  A_FLOAT,A_FLOAT,0);
  class_addmethod(tg_class,
                  (t_method)tglgrid_dialog,gensym("dialog"),
                  A_GIMME, 0);

  tglgrid_behavior.w_getrectfn =    tglgrid_getrect;
  tglgrid_behavior.w_displacefn =   tglgrid_displace;
  tglgrid_behavior.w_selectfn =     tglgrid_select;
  tglgrid_behavior.w_activatefn =   NULL;
  tglgrid_behavior.w_deletefn =     tglgrid_delete;
  tglgrid_behavior.w_visfn =        tglgrid_vis;
  tglgrid_behavior.w_clickfn =      tglgrid_click;

  sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
           tg_class->c_externdir->s_name,
           tg_class->c_name->s_name);
 	sys_vgui("::tglgrid::setup\n");

#if PD_MINOR_VERSION >= 37
  class_setpropertiesfn(tg_class, tglgrid_properties);
  class_setsavefn(tg_class, tglgrid_save);
#else
  grid_widgetbehavior.w_propertiesfn = tglgrid_properties;
  grid_widgetbehavior.w_savefn =    tlggrid_save;
#endif

  class_setwidget(tg_class, &tglgrid_behavior);
}
コード例 #5
0
ファイル: forky.c プロジェクト: fluxama/Drom
void forky_setsavefn(t_class *c, t_forkysavefn fn)
{
#if FORKY_VERSION >= 37
    class_setsavefn(c, fn);
#else
    if (c->c_wb->w_savefn)
    {
	/* cloning is necessary, because class_setwidget has not been called */
	t_widgetbehavior *wb = getbytes(sizeof(*wb));  /* never freed */
#ifdef FORKY_DEBUG
	fprintf(stderr, "cloning widgetbehavior...\n");
#endif
	*wb = *c->c_wb;
	wb->w_savefn = fn;
	class_setwidget(c, wb);
    }
    else c->c_wb->w_savefn = fn;
#endif
}
コード例 #6
0
ファイル: grid.c プロジェクト: gdunstone/pd-macambira
void grid_setup(void)
{
    logpost(NULL, 4, grid_version );
    grid_class = class_new(gensym("grid"), (t_newmethod)grid_new,
                           (t_method)grid_free, sizeof(t_grid), 0, A_GIMME, 0);
    class_addmethod(grid_class, (t_method)grid_click, gensym("click"),
                    A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_motion, gensym("motion"),
                    A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_bang, gensym("bang"), 0);
    class_addmethod(grid_class, (t_method)grid_values, gensym("values"),
                    A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_valuemotion, gensym("valuemotion"),
                    A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_xvalues, gensym("xvalues"),
                    A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_xvaluemotion, gensym("xvaluemotion"),
                    A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_goto, gensym("goto"), A_FLOAT, A_FLOAT, 0);
    class_addmethod(grid_class, (t_method)grid_dialog, gensym("dialog"), A_GIMME, 0);
    class_addmethod(grid_class, (t_method)grid_new_color, gensym("color"), A_FLOAT, A_FLOAT, A_FLOAT, 0);
    grid_widgetbehavior.w_getrectfn =    grid_getrect;
    grid_widgetbehavior.w_displacefn =   grid_displace;
    grid_widgetbehavior.w_selectfn =     grid_select;
    grid_widgetbehavior.w_activatefn =   NULL;
    grid_widgetbehavior.w_deletefn =     grid_delete;
    grid_widgetbehavior.w_visfn =        grid_vis;
    grid_widgetbehavior.w_clickfn =      grid_click;

#if PD_MINOR_VERSION >= 37
    class_setpropertiesfn(grid_class, grid_properties);
    class_setsavefn(grid_class, grid_save);
#else
    grid_widgetbehavior.w_propertiesfn = grid_properties;
    grid_widgetbehavior.w_savefn =       grid_save;
#endif

    class_setwidget(grid_class, &grid_widgetbehavior);

    sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
             grid_class->c_externdir->s_name, grid_class->c_name->s_name);
}
コード例 #7
0
ファイル: scrolllist.c プロジェクト: Angeldude/pd
void scrolllist_setup(void)
{
    post( scrolllist_version );
#include "scrolllist.tk2c"
    scrolllist_class = class_new(gensym("scrolllist"), (t_newmethod)scrolllist_new,
			      (t_method)scrolllist_free, sizeof(t_scrolllist), 
                              CLASS_DEFAULT, A_GIMME, 0);
    class_addmethod(scrolllist_class, (t_method)scrolllist_seek, gensym("seek"), A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_dialog, gensym("dialog"), A_GIMME, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_sort, gensym("sort"), A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_graphics, gensym("graphics"), A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_scroll, gensym("scroll"), A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_font, gensym("font"), A_SYMBOL, A_SYMBOL, A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_insert, gensym("insert"), A_SYMBOL, A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_replace, gensym("replace"), A_SYMBOL, A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_add, gensym("add"), A_SYMBOL, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_bgcolor, gensym("bgcolor"), A_SYMBOL, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_fgcolor, gensym("fgcolor"), A_SYMBOL, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_secolor, gensym("secolor"), A_SYMBOL, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_delete, gensym("delete"), A_DEFFLOAT, A_NULL );
    class_addmethod(scrolllist_class, (t_method)scrolllist_clear, gensym("clear"), A_NULL );

    scrolllist_widgetbehavior.w_getrectfn =    scrolllist_getrect;
    scrolllist_widgetbehavior.w_displacefn =   scrolllist_displace;
    scrolllist_widgetbehavior.w_selectfn =     scrolllist_select;
    scrolllist_widgetbehavior.w_activatefn =   NULL;
    scrolllist_widgetbehavior.w_deletefn =     scrolllist_deleteobj;
    scrolllist_widgetbehavior.w_visfn =        scrolllist_vis;
    scrolllist_widgetbehavior.w_clickfn =      scrolllist_click;

#if PD_MINOR_VERSION >= 37
    class_setpropertiesfn(scrolllist_class, scrolllist_properties);
    class_setsavefn(scrolllist_class, scrolllist_save);
#else
    scrolllist_widgetbehavior.w_propertiesfn = scrolllist_properties;
    scrolllist_widgetbehavior.w_savefn =       scrolllist_save;
#endif

    class_setwidget(scrolllist_class, &scrolllist_widgetbehavior);

}
コード例 #8
0
ファイル: scratcher~.c プロジェクト: gdunstone/pd-macambira
void scratcher_tilde_setup(void)
{
    logpost(NULL, 4, scratcher_version);
    scratcher_class = class_new(gensym("scratcher~"), (t_newmethod)scratcher_new, (t_method)scratcher_free,
                                sizeof(t_scratcher), 0, A_GIMME, 0);


    // set callbacks
    scratcher_widgetbehavior.w_getrectfn =    scratcher_getrect;
    scratcher_widgetbehavior.w_displacefn =   scratcher_displace;
    scratcher_widgetbehavior.w_selectfn =     scratcher_select;
    scratcher_widgetbehavior.w_activatefn =   NULL;
    scratcher_widgetbehavior.w_deletefn =     scratcher_delete;
    scratcher_widgetbehavior.w_visfn =        scratcher_vis;
    scratcher_widgetbehavior.w_clickfn =      scratcher_click;

#if PD_MINOR_VERSION >= 37
    class_setpropertiesfn(scratcher_class, scratcher_properties);
    class_setsavefn(scratcher_class, scratcher_save);
#else
    scratcher_widgetbehavior.w_propertiesfn = scratcher_properties;
    scratcher_widgetbehavior.w_savefn =       scratcher_save;
#endif

    CLASS_MAINSIGNALIN( scratcher_class, t_scratcher, x_f );
    class_addmethod(scratcher_class, (t_method)scratcher_dsp, gensym("dsp"), A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_record, gensym("record"), A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_resize, gensym("resize"), A_FLOAT, A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_sensibility, gensym("sensibility"), A_FLOAT, A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_maxspeed, gensym("maxspeed"), A_FLOAT, A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_inertia, gensym("inertia"), A_FLOAT, A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_showspeed, gensym("showspeed"), A_FLOAT, A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_play, gensym("play"), A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_stop, gensym("stop"), A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_reset, gensym("reset"), A_NULL);
    class_addmethod(scratcher_class, (t_method)scratcher_dialog, gensym("dialog"), A_GIMME, A_NULL);

    sys_vgui("eval [read [open {%s/%s.tcl}]]\n",
             scratcher_class->c_externdir->s_name,
             scratcher_class->c_name->s_name);
}
コード例 #9
0
ファイル: iem_event.c プロジェクト: Angeldude/pd
void iem_event_setup(void)
{
  iem_event_class = class_new(gensym("ivnt"), (t_newmethod)iem_event_new,
    (t_method)iem_event_free, sizeof(t_iem_event), 0, A_GIMME, 0);
  class_addcreator((t_newmethod)iem_event_new, gensym("iem_event"),
    A_GIMME, 0);
  //class_addbang(iem_event_class,iem_event_bang);
  class_addmethod(iem_event_class, (t_method)iem_event_motion,
    gensym("motion"), A_FLOAT, A_FLOAT, 0);
  class_addmethod(iem_event_class, (t_method)iem_event_size,
    gensym("size"), A_GIMME, 0);
  class_addmethod(iem_event_class, (t_method)iem_event_delta,
    gensym("delta"), A_GIMME, 0);
  class_addmethod(iem_event_class, (t_method)iem_event_pos,
    gensym("pos"), A_GIMME, 0);
  class_addmethod(iem_event_class, (t_method)iem_event_send,
    gensym("send"), A_DEFSYM, 0);
  class_addmethod(iem_event_class, (t_method)iem_event_receive,
    gensym("receive"), A_DEFSYM, 0);
  
  iem_event_widgetbehavior.w_getrectfn =    iem_event_getrect;
  iem_event_widgetbehavior.w_displacefn =   iemgui_displace;
  iem_event_widgetbehavior.w_selectfn =     iemgui_select;
  iem_event_widgetbehavior.w_activatefn =   NULL;
  iem_event_widgetbehavior.w_deletefn =     iemgui_delete;
  iem_event_widgetbehavior.w_visfn =        iemgui_vis;
  iem_event_widgetbehavior.w_clickfn =      iem_event_click;
  
#if((PD_MAJOR_VERSION)&&(PD_MINOR_VERSION < 37))
  iem_event_widgetbehavior.w_propertiesfn = NULL;
  iem_event_widgetbehavior.w_savefn =       iem_event_save;
#else
  class_setsavefn(iem_event_class, iem_event_save);
#endif
  
  class_setwidget(iem_event_class, &iem_event_widgetbehavior);
//  class_sethelpsymbol(iem_event_class, gensym("iemhelp2/help-iem_event"));
}
コード例 #10
0
void setup_o0x2edisplay(void) {
    
    t_class *c = class_new(gensym("o.display"), (t_newmethod)odisplay_new, (t_method)odisplay_free, sizeof(t_odisplay),  0L, A_GIMME, 0);

    class_addmethod(c, (t_method)odisplay_fullPacket, gensym("FullPacket"), A_GIMME, 0);
    class_addmethod(c, (t_method)odot_version, gensym("version"), 0);
    class_addbang(c, (t_method)odisplay_bang);
	class_addfloat(c, (t_method)odisplay_float);
	class_addlist(c, (t_method)odisplay_list);
	class_addanything(c, (t_method)odisplay_anything);
    
//	class_addmethod(c, (t_method)odisplay_set, gensym("set"),0);
    class_addmethod(c, (t_method)odisplay_doc, gensym("doc"),0);

    
    odisplay_widgetbehavior.w_getrectfn = odisplay_getrect;
    odisplay_widgetbehavior.w_displacefn = odisplay_displace;
    odisplay_widgetbehavior.w_selectfn = odisplay_select;
    odisplay_widgetbehavior.w_deletefn = odisplay_delete;
    odisplay_widgetbehavior.w_clickfn = NULL;
    odisplay_widgetbehavior.w_activatefn = NULL;
    odisplay_widgetbehavior.w_visfn = odisplay_vis;
    
    
    class_setsavefn(c, odisplay_save);
    class_setwidget(c, &odisplay_widgetbehavior);
    
    ps_newline = gensym("\n");
	ps_FullPacket = gensym("FullPacket");
    
    odisplay_class = c;
    odisplay_textbox_class = opd_textbox_classnew();
    
    ODOT_PRINT_VERSION;

    //return 0;
    
}
コード例 #11
0
ファイル: sliderh.c プロジェクト: Angeldude/pd
void sliderh_setup() {
    sliderh_class = class_new(gensym("sliderh"), (t_newmethod)sliderh_new, 0,
				sizeof(t_fatom),0,A_DEFFLOAT,A_DEFFLOAT,A_DEFFLOAT,0);

    fatom_setup_common(sliderh_class);

    sliderh_widgetbehavior.w_getrectfn = fatom_getrect;
    sliderh_widgetbehavior.w_displacefn= fatom_displace;
    sliderh_widgetbehavior.w_selectfn=   fatom_select;
    sliderh_widgetbehavior.w_activatefn=fatom_activate;
    sliderh_widgetbehavior.w_deletefn=   fatom_delete;
    sliderh_widgetbehavior.w_visfn=     fatom_vis;
#if PD_MINOR_VERSION < 37
    sliderh_widgetbehavior.w_savefn=    sliderh_save;
    sliderh_widgetbehavior.w_propertiesfn= NULL;
#endif
    sliderh_widgetbehavior.w_clickfn=    NULL;

	class_setwidget(sliderh_class,&sliderh_widgetbehavior);
#if PD_MINOR_VERSION >= 37
    class_setsavefn(sliderh_class,&sliderh_save);
#endif
}
コード例 #12
0
ファイル: hfadl_scale.c プロジェクト: Angeldude/pd
void hfadl_scale_setup(void)
{
  hfadl_scale_class = class_new(gensym("hfadl_scale"), (t_newmethod)hfadl_scale_new,
    (t_method)hfadl_scale_ff, sizeof(t_hfadl_scale), 0, A_GIMME, 0);
  class_addmethod(hfadl_scale_class, (t_method)hfadl_scale_color, gensym("color"), A_GIMME, 0);
  hfadl_scale_widgetbehavior.w_getrectfn = hfadl_scale_getrect;
  hfadl_scale_widgetbehavior.w_displacefn = iemgui_displace;
  hfadl_scale_widgetbehavior.w_selectfn = iemgui_select;
  hfadl_scale_widgetbehavior.w_activatefn = NULL;
  hfadl_scale_widgetbehavior.w_deletefn = iemgui_delete;
  hfadl_scale_widgetbehavior.w_visfn = iemgui_vis;
  hfadl_scale_widgetbehavior.w_clickfn = NULL;
  
#if defined(PD_MAJOR_VERSION) && (PD_MINOR_VERSION >= 37)
  class_setsavefn(hfadl_scale_class, hfadl_scale_save);
#else
  hfadl_scale_widgetbehavior.w_propertiesfn = NULL;
  hfadl_scale_widgetbehavior.w_savefn = hfadl_scale_save;
#endif
  
  class_setwidget(hfadl_scale_class, &hfadl_scale_widgetbehavior);
//  class_sethelpsymbol(hfadl_scale_class, gensym("iemhelp2/help-hfadl_scale"));
}
コード例 #13
0
ファイル: iem_vu.c プロジェクト: Angeldude/pd
void iem_vu_setup(void)
{
  iem_vu_class = class_new(gensym("iem_vu"), (t_newmethod)iem_vu_new, (t_method)iem_vu_free,
    sizeof(t_iem_vu), 0, A_GIMME, 0);
  class_addbang(iem_vu_class, iem_vu_bang);
  class_addfloat(iem_vu_class, iem_vu_float);
  class_addmethod(iem_vu_class, (t_method)iem_vu_ft1, gensym("ft1"), A_FLOAT, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_set, gensym("set"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_dialog, gensym("dialog"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_size, gensym("size"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_scale, gensym("scale"), A_DEFFLOAT, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_delta, gensym("delta"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_pos, gensym("pos"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_color, gensym("color"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_receive, gensym("receive"), A_DEFSYM, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_label, gensym("label"), A_DEFSYM, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_label_pos, gensym("label_pos"), A_GIMME, 0);
  class_addmethod(iem_vu_class, (t_method)iem_vu_label_font, gensym("label_font"), A_GIMME, 0);
  iem_vu_widgetbehavior.w_getrectfn = iem_vu_getrect;
  iem_vu_widgetbehavior.w_displacefn =  iemgui_displace;
  iem_vu_widgetbehavior.w_selectfn =   iemgui_select;
  iem_vu_widgetbehavior.w_activatefn =  NULL;
  iem_vu_widgetbehavior.w_deletefn =   iemgui_delete;
  iem_vu_widgetbehavior.w_visfn =   iemgui_vis;
  iem_vu_widgetbehavior.w_clickfn =   NULL;
  
#if defined(PD_MAJOR_VERSION) && (PD_MINOR_VERSION >= 37)
  class_setsavefn(iem_vu_class, iem_vu_save);
  class_setpropertiesfn(iem_vu_class, iem_vu_properties);
#else
  iem_vu_widgetbehavior.w_propertiesfn = iem_vu_properties;
  iem_vu_widgetbehavior.w_savefn =    iem_vu_save;
#endif
  
  class_setwidget(iem_vu_class, &iem_vu_widgetbehavior);
//  class_sethelpsymbol(iem_vu_class, gensym("iemhelp2/help-iem_vu"));
}