1 /* Copyright (c) 1997-1999 Miller Puckette.
2 * For information on usage and redistribution, and for a DISCLAIMER OF ALL
3 * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
5 /* vdial.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */
7 /* name change to vradio by MSP (it's a radio button really) and changed to
8 put out a "float" as in sliders, toggles, etc. */
17 #include "g_all_guis.h"
20 /*------------------ global variables -------------------------*/
23 /*------------------ global functions -------------------------*/
28 /* ------------- vdl gui-vertical radio button ---------------------- */
30 t_widgetbehavior vradio_widgetbehavior
;
31 static t_class
*vradio_class
, *vradio_old_class
;
33 /* widget helper functions */
35 void vradio_draw_update(t_vradio
*x
, t_glist
*glist
)
37 if(glist_isvisible(glist
))
39 t_canvas
*canvas
=glist_getcanvas(glist
);
41 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n",
42 canvas
, x
, x
->x_on_old
,
43 x
->x_gui
.x_bcol
, x
->x_gui
.x_bcol
);
44 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n",
46 x
->x_gui
.x_fcol
, x
->x_gui
.x_fcol
);
50 void vradio_draw_new(t_vradio
*x
, t_glist
*glist
)
52 t_canvas
*canvas
=glist_getcanvas(glist
);
53 int n
=x
->x_number
, i
, dy
=x
->x_gui
.x_h
, s4
=dy
/4;
54 int yy11b
=text_ypix(&x
->x_gui
.x_obj
, glist
);
55 int yy11
=yy11b
, yy12
=yy11
+dy
;
56 int yy21
=yy11
+s4
, yy22
=yy12
-s4
;
57 int xx11
=text_xpix(&x
->x_gui
.x_obj
, glist
), xx12
=xx11
+dy
;
58 int xx21
=xx11
+s4
, xx22
=xx12
-s4
;
62 sys_vgui(".x%x.c create rectangle %d %d %d %d -fill #%6.6x -tags %xBASE%d\n",
63 canvas
, xx11
, yy11
, xx12
, yy12
,
64 x
->x_gui
.x_bcol
, x
, i
);
65 sys_vgui(".x%x.c create rectangle %d %d %d %d -fill #%6.6x -outline #%6.6x -tags %xBUT%d\n",
66 canvas
, xx21
, yy21
, xx22
, yy22
,
67 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
,
68 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
, x
, i
);
74 sys_vgui(".x%x.c create text %d %d -text {%s} -anchor w \
75 -font {%s %d bold} -fill #%6.6x -tags %xLABEL\n",
76 canvas
, xx11
+x
->x_gui
.x_ldx
, yy11b
+x
->x_gui
.x_ldy
,
77 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"",
78 x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
,
80 if(!x
->x_gui
.x_fsf
.x_snd_able
)
81 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
82 canvas
, xx11
, yy11
-1, xx11
+ IOWIDTH
, yy11
, x
, 0);
83 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
84 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
85 canvas
, xx11
, yy11b
, xx11
+ IOWIDTH
, yy11b
+1, x
, 0);
88 void vradio_draw_move(t_vradio
*x
, t_glist
*glist
)
90 t_canvas
*canvas
=glist_getcanvas(glist
);
91 int n
=x
->x_number
, i
, dy
=x
->x_gui
.x_h
, s4
=dy
/4;
92 int yy11b
=text_ypix(&x
->x_gui
.x_obj
, glist
);
93 int yy11
=yy11b
, yy12
=yy11
+dy
;
94 int yy21
=yy11
+s4
, yy22
=yy12
-s4
;
95 int xx11
=text_xpix(&x
->x_gui
.x_obj
, glist
), xx12
=xx11
+dy
;
96 int xx21
=xx11
+s4
, xx22
=xx12
-s4
;
100 sys_vgui(".x%x.c coords %xBASE%d %d %d %d %d\n",
101 canvas
, x
, i
, xx11
, yy11
, xx12
, yy12
);
102 sys_vgui(".x%x.c coords %xBUT%d %d %d %d %d\n",
103 canvas
, x
, i
, xx21
, yy21
, xx22
, yy22
);
109 sys_vgui(".x%x.c coords %xLABEL %d %d\n",
110 canvas
, x
, xx11
+x
->x_gui
.x_ldx
, yy11b
+x
->x_gui
.x_ldy
);
111 if(!x
->x_gui
.x_fsf
.x_snd_able
)
112 sys_vgui(".x%x.c coords %xOUT%d %d %d %d %d\n",
113 canvas
, x
, 0, xx11
, yy11
-1, xx11
+ IOWIDTH
, yy11
);
114 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
115 sys_vgui(".x%x.c coords %xIN%d %d %d %d %d\n",
116 canvas
, x
, 0, xx11
, yy11b
, xx11
+ IOWIDTH
, yy11b
+1);
119 void vradio_draw_erase(t_vradio
* x
, t_glist
* glist
)
121 t_canvas
*canvas
=glist_getcanvas(glist
);
122 int n
=x
->x_number
, i
;
126 sys_vgui(".x%x.c delete %xBASE%d\n", canvas
, x
, i
);
127 sys_vgui(".x%x.c delete %xBUT%d\n", canvas
, x
, i
);
129 sys_vgui(".x%x.c delete %xLABEL\n", canvas
, x
);
130 if(!x
->x_gui
.x_fsf
.x_snd_able
)
131 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
132 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
133 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
136 void vradio_draw_config(t_vradio
* x
, t_glist
* glist
)
138 t_canvas
*canvas
=glist_getcanvas(glist
);
139 int n
=x
->x_number
, i
;
141 sys_vgui(".x%x.c itemconfigure %xLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n",
142 canvas
, x
, x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
,
143 x
->x_gui
.x_fsf
.x_selected
?IEM_GUI_COLOR_SELECTED
:x
->x_gui
.x_lcol
,
144 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"");
147 sys_vgui(".x%x.c itemconfigure %xBASE%d -fill #%6.6x\n", canvas
, x
, i
,
149 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n", canvas
, x
, i
,
150 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
,
151 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
155 void vradio_draw_io(t_vradio
* x
, t_glist
* glist
, int old_snd_rcv_flags
)
157 t_canvas
*canvas
=glist_getcanvas(glist
);
158 int xpos
=text_xpix(&x
->x_gui
.x_obj
, glist
);
159 int ypos
=text_ypix(&x
->x_gui
.x_obj
, glist
);
161 if((old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && !x
->x_gui
.x_fsf
.x_snd_able
)
162 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
164 ypos
+(x
->x_number
*x
->x_gui
.x_h
)-1,
166 ypos
+(x
->x_number
*x
->x_gui
.x_h
), x
, 0);
167 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && x
->x_gui
.x_fsf
.x_snd_able
)
168 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
169 if((old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && !x
->x_gui
.x_fsf
.x_rcv_able
)
170 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
172 xpos
+ IOWIDTH
, ypos
+1,
174 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && x
->x_gui
.x_fsf
.x_rcv_able
)
175 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
178 void vradio_draw_select(t_vradio
* x
, t_glist
* glist
)
180 t_canvas
*canvas
=glist_getcanvas(glist
);
181 int n
=x
->x_number
, i
;
183 if(x
->x_gui
.x_fsf
.x_selected
)
187 sys_vgui(".x%x.c itemconfigure %xBASE%d -outline #%6.6x\n", canvas
, x
, i
,
188 IEM_GUI_COLOR_SELECTED
);
190 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
, IEM_GUI_COLOR_SELECTED
);
196 sys_vgui(".x%x.c itemconfigure %xBASE%d -outline #%6.6x\n", canvas
, x
, i
,
197 IEM_GUI_COLOR_NORMAL
);
199 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
,
204 void vradio_draw(t_vradio
*x
, t_glist
*glist
, int mode
)
206 if(mode
== IEM_GUI_DRAW_MODE_UPDATE
)
207 vradio_draw_update(x
, glist
);
208 else if(mode
== IEM_GUI_DRAW_MODE_MOVE
)
209 vradio_draw_move(x
, glist
);
210 else if(mode
== IEM_GUI_DRAW_MODE_NEW
)
211 vradio_draw_new(x
, glist
);
212 else if(mode
== IEM_GUI_DRAW_MODE_SELECT
)
213 vradio_draw_select(x
, glist
);
214 else if(mode
== IEM_GUI_DRAW_MODE_ERASE
)
215 vradio_draw_erase(x
, glist
);
216 else if(mode
== IEM_GUI_DRAW_MODE_CONFIG
)
217 vradio_draw_config(x
, glist
);
218 else if(mode
>= IEM_GUI_DRAW_MODE_IO
)
219 vradio_draw_io(x
, glist
, mode
- IEM_GUI_DRAW_MODE_IO
);
222 /* ------------------------ vdl widgetbehaviour----------------------------- */
224 static void vradio_getrect(t_gobj
*z
, t_glist
*glist
, int *xp1
, int *yp1
, int *xp2
, int *yp2
)
226 t_vradio
*x
= (t_vradio
*)z
;
228 *xp1
= text_xpix(&x
->x_gui
.x_obj
, glist
);
229 *yp1
= text_ypix(&x
->x_gui
.x_obj
, glist
);
230 *xp2
= *xp1
+ x
->x_gui
.x_w
;
231 *yp2
= *yp1
+ x
->x_gui
.x_h
*x
->x_number
;
234 static void vradio_save(t_gobj
*z
, t_binbuf
*b
)
236 t_vradio
*x
= (t_vradio
*)z
;
240 iemgui_save(&x
->x_gui
, srl
, bflcol
);
241 binbuf_addv(b
, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"),
242 (t_int
)x
->x_gui
.x_obj
.te_xpix
,
243 (t_int
)x
->x_gui
.x_obj
.te_ypix
,
244 (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
?
245 gensym("vdl") : gensym("vradio")),
247 x
->x_change
, iem_symargstoint(&x
->x_gui
.x_isa
), x
->x_number
,
248 srl
[0], srl
[1], srl
[2],
249 x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
250 iem_fstyletoint(&x
->x_gui
.x_fsf
), x
->x_gui
.x_fontsize
,
251 bflcol
[0], bflcol
[1], bflcol
[2], x
->x_on
);
255 static void vradio_properties(t_gobj
*z
, t_glist
*owner
)
257 t_vradio
*x
= (t_vradio
*)z
;
262 iemgui_properties(&x
->x_gui
, srl
);
263 if(pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
264 hchange
= x
->x_change
;
265 sprintf(buf
, "pdtk_iemgui_dialog %%s vradio \
266 ----------dimensions(pix):----------- %d %d size: 0 0 empty \
267 empty 0.0 empty 0.0 empty %d \
268 %d new-only new&old %d %d number: %d \
273 x
->x_gui
.x_w
, IEM_GUI_MINSIZE
,
275 hchange
, x
->x_gui
.x_isa
.x_loadinit
, -1, x
->x_number
,
276 srl
[0]->s_name
, srl
[1]->s_name
,
277 srl
[2]->s_name
, x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
278 x
->x_gui
.x_fsf
.x_font_style
, x
->x_gui
.x_fontsize
,
279 0xffffff & x
->x_gui
.x_bcol
, 0xffffff & x
->x_gui
.x_fcol
, 0xffffff & x
->x_gui
.x_lcol
);
280 gfxstub_new(&x
->x_gui
.x_obj
.ob_pd
, x
, buf
);
283 static void vradio_dialog(t_vradio
*x
, t_symbol
*s
, int argc
, t_atom
*argv
)
286 int a
= (int)atom_getintarg(0, argc
, argv
);
287 int chg
= (int)atom_getintarg(4, argc
, argv
);
288 int num
= (int)atom_getintarg(6, argc
, argv
);
291 if(chg
!= 0) chg
= 1;
293 sr_flags
= iemgui_dialog(&x
->x_gui
, srl
, argc
, argv
);
294 x
->x_gui
.x_w
= iemgui_clip_size(a
);
295 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
296 if(x
->x_number
!= num
)
298 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_ERASE
);
300 if(x
->x_on
>= x
->x_number
)
302 x
->x_on
= x
->x_number
- 1;
303 x
->x_on_old
= x
->x_on
;
305 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_NEW
);
309 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_CONFIG
);
310 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_IO
+ sr_flags
);
311 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_MOVE
);
312 canvas_fixlinesfor(glist_getcanvas(x
->x_gui
.x_glist
), (t_text
*)x
);
316 static void vradio_set(t_vradio
*x
, t_floatarg f
)
325 if(x
->x_on
!= x
->x_on_old
)
328 x
->x_on_old
= x
->x_on
;
330 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
336 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
340 static void vradio_bang(t_vradio
*x
)
342 /* compatibility with earlier "vdial" behavior */
343 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
345 if((x
->x_change
)&&(x
->x_on
!= x
->x_on_old
))
347 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
348 SETFLOAT(x
->x_at
+1, 0.0);
349 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
350 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
351 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
353 x
->x_on_old
= x
->x_on
;
354 SETFLOAT(x
->x_at
, (float)x
->x_on
);
355 SETFLOAT(x
->x_at
+1, 1.0);
356 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
357 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
358 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
362 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
363 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
364 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
368 static void vradio_fout(t_vradio
*x
, t_floatarg f
)
377 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
379 /* compatibility with earlier "vdial" behavior */
380 if((x
->x_change
)&&(i
!= x
->x_on_old
))
382 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
383 SETFLOAT(x
->x_at
+1, 0.0);
384 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
385 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
386 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
388 if(x
->x_on
!= x
->x_on_old
)
389 x
->x_on_old
= x
->x_on
;
391 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
392 x
->x_on_old
= x
->x_on
;
393 SETFLOAT(x
->x_at
, (float)x
->x_on
);
394 SETFLOAT(x
->x_at
+1, 1.0);
395 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
396 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
397 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
401 x
->x_on_old
= x
->x_on
;
403 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
404 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
405 if (x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
406 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
410 static void vradio_float(t_vradio
*x
, t_floatarg f
)
419 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
421 /* compatibility with earlier "vdial" behavior */
422 if((x
->x_change
)&&(i
!= x
->x_on_old
))
424 if(x
->x_gui
.x_fsf
.x_put_in2out
)
426 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
427 SETFLOAT(x
->x_at
+1, 0.0);
428 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
429 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
430 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
433 if(x
->x_on
!= x
->x_on_old
)
434 x
->x_on_old
= x
->x_on
;
436 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
437 x
->x_on_old
= x
->x_on
;
438 if(x
->x_gui
.x_fsf
.x_put_in2out
)
440 SETFLOAT(x
->x_at
, (float)x
->x_on
);
441 SETFLOAT(x
->x_at
+1, 1.0);
442 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
443 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
444 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
449 x
->x_on_old
= x
->x_on
;
451 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
452 if (x
->x_gui
.x_fsf
.x_put_in2out
)
454 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
455 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
456 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
461 static void vradio_click(t_vradio
*x
, t_floatarg xpos
, t_floatarg ypos
,
462 t_floatarg shift
, t_floatarg ctrl
, t_floatarg alt
)
464 int yy
= (int)ypos
- text_ypix(&x
->x_gui
.x_obj
, x
->x_gui
.x_glist
);
466 vradio_fout(x
, (float)(yy
/ x
->x_gui
.x_h
));
469 static int vradio_newclick(t_gobj
*z
, struct _glist
*glist
,
470 int xpix
, int ypix
, int shift
, int alt
, int dbl
, int doit
)
473 vradio_click((t_vradio
*)z
, (t_floatarg
)xpix
, (t_floatarg
)ypix
,
474 (t_floatarg
)shift
, 0, (t_floatarg
)alt
);
478 static void vradio_loadbang(t_vradio
*x
)
480 if(!sys_noloadbang
&& x
->x_gui
.x_isa
.x_loadinit
)
484 static void vradio_number(t_vradio
*x
, t_floatarg num
)
490 if(n
> IEM_RADIO_MAX
)
494 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_ERASE
);
496 if(x
->x_on
>= x
->x_number
)
497 x
->x_on
= x
->x_number
- 1;
498 x
->x_on_old
= x
->x_on
;
499 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_NEW
);
503 static void vradio_size(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
505 x
->x_gui
.x_w
= iemgui_clip_size((int)atom_getintarg(0, ac
, av
));
506 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
507 iemgui_size((void *)x
, &x
->x_gui
);
510 static void vradio_delta(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
511 {iemgui_delta((void *)x
, &x
->x_gui
, s
, ac
, av
);}
513 static void vradio_pos(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
514 {iemgui_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
516 static void vradio_color(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
517 {iemgui_color((void *)x
, &x
->x_gui
, s
, ac
, av
);}
519 static void vradio_send(t_vradio
*x
, t_symbol
*s
)
520 {iemgui_send(x
, &x
->x_gui
, s
);}
522 static void vradio_receive(t_vradio
*x
, t_symbol
*s
)
523 {iemgui_receive(x
, &x
->x_gui
, s
);}
525 static void vradio_label(t_vradio
*x
, t_symbol
*s
)
526 {iemgui_label((void *)x
, &x
->x_gui
, s
);}
528 static void vradio_label_pos(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
529 {iemgui_label_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
531 static void vradio_label_font(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
532 {iemgui_label_font((void *)x
, &x
->x_gui
, s
, ac
, av
);}
534 static void vradio_init(t_vradio
*x
, t_floatarg f
)
536 x
->x_gui
.x_isa
.x_loadinit
= (f
==0.0)?0:1;
539 static void vradio_double_change(t_vradio
*x
)
542 static void vradio_single_change(t_vradio
*x
)
545 static void *vradio_donew(t_symbol
*s
, int argc
, t_atom
*argv
, int old
)
547 t_vradio
*x
= (t_vradio
*)pd_new(old
? vradio_old_class
: vradio_class
);
548 int bflcol
[]={-262144, -1, -1};
549 int a
=IEM_GUI_DEFAULTSIZE
, on
=0, f
=0;
550 int ldx
=0, ldy
=-6, chg
=1, num
=8;
552 int ftbreak
=IEM_BNG_DEFAULTBREAKFLASHTIME
, fthold
=IEM_BNG_DEFAULTHOLDFLASHTIME
;
555 if((argc
== 15)&&IS_A_FLOAT(argv
,0)&&IS_A_FLOAT(argv
,1)&&IS_A_FLOAT(argv
,2)
557 &&(IS_A_SYMBOL(argv
,4)||IS_A_FLOAT(argv
,4))
558 &&(IS_A_SYMBOL(argv
,5)||IS_A_FLOAT(argv
,5))
559 &&(IS_A_SYMBOL(argv
,6)||IS_A_FLOAT(argv
,6))
560 &&IS_A_FLOAT(argv
,7)&&IS_A_FLOAT(argv
,8)
561 &&IS_A_FLOAT(argv
,9)&&IS_A_FLOAT(argv
,10)&&IS_A_FLOAT(argv
,11)
562 &&IS_A_FLOAT(argv
,12)&&IS_A_FLOAT(argv
,13)&&IS_A_FLOAT(argv
,14))
564 a
= (int)atom_getintarg(0, argc
, argv
);
565 chg
= (int)atom_getintarg(1, argc
, argv
);
566 iem_inttosymargs(&x
->x_gui
.x_isa
, atom_getintarg(2, argc
, argv
));
567 num
= (int)atom_getintarg(3, argc
, argv
);
568 iemgui_new_getnames(&x
->x_gui
, 4, argv
);
569 ldx
= (int)atom_getintarg(7, argc
, argv
);
570 ldy
= (int)atom_getintarg(8, argc
, argv
);
571 iem_inttofstyle(&x
->x_gui
.x_fsf
, atom_getintarg(9, argc
, argv
));
572 fs
= (int)atom_getintarg(10, argc
, argv
);
573 bflcol
[0] = (int)atom_getintarg(11, argc
, argv
);
574 bflcol
[1] = (int)atom_getintarg(12, argc
, argv
);
575 bflcol
[2] = (int)atom_getintarg(13, argc
, argv
);
576 on
= (int)atom_getintarg(14, argc
, argv
);
578 else iemgui_new_getnames(&x
->x_gui
, 4, 0);
579 x
->x_gui
.x_draw
= (t_iemfunptr
)vradio_draw
;
580 x
->x_gui
.x_fsf
.x_snd_able
= 1;
581 x
->x_gui
.x_fsf
.x_rcv_able
= 1;
582 x
->x_gui
.x_glist
= (t_glist
*)canvas_getcurrent();
583 if (!strcmp(x
->x_gui
.x_snd
->s_name
, "empty"))
584 x
->x_gui
.x_fsf
.x_snd_able
= 0;
585 if (!strcmp(x
->x_gui
.x_rcv
->s_name
, "empty"))
586 x
->x_gui
.x_fsf
.x_rcv_able
= 0;
587 if(x
->x_gui
.x_fsf
.x_font_style
== 1) strcpy(x
->x_gui
.x_font
, "helvetica");
588 else if(x
->x_gui
.x_fsf
.x_font_style
== 2) strcpy(x
->x_gui
.x_font
, "times");
589 else { x
->x_gui
.x_fsf
.x_font_style
= 0;
590 strcpy(x
->x_gui
.x_font
, "courier"); }
593 if(num
> IEM_RADIO_MAX
)
598 if(on
>= x
->x_number
)
599 on
= x
->x_number
- 1;
600 if(x
->x_gui
.x_isa
.x_loadinit
)
604 x
->x_on_old
= x
->x_on
;
605 x
->x_change
= (chg
==0)?0:1;
606 if (x
->x_gui
.x_fsf
.x_rcv_able
)
607 pd_bind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
608 x
->x_gui
.x_ldx
= ldx
;
609 x
->x_gui
.x_ldy
= ldy
;
612 x
->x_gui
.x_fontsize
= fs
;
613 x
->x_gui
.x_w
= iemgui_clip_size(a
);
614 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
615 iemgui_verify_snd_ne_rcv(&x
->x_gui
);
616 iemgui_all_colfromload(&x
->x_gui
, bflcol
);
617 outlet_new(&x
->x_gui
.x_obj
, &s_list
);
621 static void *vradio_new(t_symbol
*s
, int argc
, t_atom
*argv
)
623 return (vradio_donew(s
, argc
, argv
, 0));
626 static void *vdial_new(t_symbol
*s
, int argc
, t_atom
*argv
)
628 return (vradio_donew(s
, argc
, argv
, 1));
631 static void vradio_ff(t_vradio
*x
)
633 if(x
->x_gui
.x_fsf
.x_rcv_able
)
634 pd_unbind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
635 gfxstub_deleteforkey(x
);
638 void g_vradio_setup(void)
640 vradio_class
= class_new(gensym("vradio"), (t_newmethod
)vradio_new
,
641 (t_method
)vradio_ff
, sizeof(t_vradio
), 0, A_GIMME
, 0);
642 class_addbang(vradio_class
, vradio_bang
);
643 class_addfloat(vradio_class
, vradio_float
);
644 class_addmethod(vradio_class
, (t_method
)vradio_click
, gensym("click"),
645 A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, 0);
646 class_addmethod(vradio_class
, (t_method
)vradio_dialog
, gensym("dialog"),
648 class_addmethod(vradio_class
, (t_method
)vradio_loadbang
,
649 gensym("loadbang"), 0);
650 class_addmethod(vradio_class
, (t_method
)vradio_set
,
651 gensym("set"), A_FLOAT
, 0);
652 class_addmethod(vradio_class
, (t_method
)vradio_size
,
653 gensym("size"), A_GIMME
, 0);
654 class_addmethod(vradio_class
, (t_method
)vradio_delta
,
655 gensym("delta"), A_GIMME
, 0);
656 class_addmethod(vradio_class
, (t_method
)vradio_pos
,
657 gensym("pos"), A_GIMME
, 0);
658 class_addmethod(vradio_class
, (t_method
)vradio_color
,
659 gensym("color"), A_GIMME
, 0);
660 class_addmethod(vradio_class
, (t_method
)vradio_send
,
661 gensym("send"), A_DEFSYM
, 0);
662 class_addmethod(vradio_class
, (t_method
)vradio_receive
,
663 gensym("receive"), A_DEFSYM
, 0);
664 class_addmethod(vradio_class
, (t_method
)vradio_label
,
665 gensym("label"), A_DEFSYM
, 0);
666 class_addmethod(vradio_class
, (t_method
)vradio_label_pos
,
667 gensym("label_pos"), A_GIMME
, 0);
668 class_addmethod(vradio_class
, (t_method
)vradio_label_font
,
669 gensym("label_font"), A_GIMME
, 0);
670 class_addmethod(vradio_class
, (t_method
)vradio_init
,
671 gensym("init"), A_FLOAT
, 0);
672 class_addmethod(vradio_class
, (t_method
)vradio_number
,
673 gensym("number"), A_FLOAT
, 0);
674 class_addmethod(vradio_class
, (t_method
)vradio_single_change
,
675 gensym("single_change"), 0);
676 class_addmethod(vradio_class
, (t_method
)vradio_double_change
,
677 gensym("double_change"), 0);
678 vradio_widgetbehavior
.w_getrectfn
= vradio_getrect
;
679 vradio_widgetbehavior
.w_displacefn
= iemgui_displace
;
680 vradio_widgetbehavior
.w_selectfn
= iemgui_select
;
681 vradio_widgetbehavior
.w_activatefn
= NULL
;
682 vradio_widgetbehavior
.w_deletefn
= iemgui_delete
;
683 vradio_widgetbehavior
.w_visfn
= iemgui_vis
;
684 vradio_widgetbehavior
.w_clickfn
= vradio_newclick
;
685 class_setwidget(vradio_class
, &vradio_widgetbehavior
);
686 class_sethelpsymbol(vradio_class
, gensym("vradio"));
687 class_setsavefn(vradio_class
, vradio_save
);
688 class_setpropertiesfn(vradio_class
, vradio_properties
);
690 /* obsolete version (0.34-0.35) */
691 vradio_old_class
= class_new(gensym("vdl"), (t_newmethod
)vdial_new
,
692 (t_method
)vradio_ff
, sizeof(t_vradio
), 0, A_GIMME
, 0);
693 class_addbang(vradio_old_class
, vradio_bang
);
694 class_addfloat(vradio_old_class
, vradio_float
);
695 class_addmethod(vradio_old_class
, (t_method
)vradio_click
, gensym("click"),
696 A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, 0);
697 class_addmethod(vradio_old_class
, (t_method
)vradio_dialog
, gensym("dialog"),
699 class_addmethod(vradio_old_class
, (t_method
)vradio_loadbang
, gensym("loadbang"), 0);
700 class_addmethod(vradio_old_class
, (t_method
)vradio_set
, gensym("set"), A_FLOAT
, 0);
701 class_addmethod(vradio_old_class
, (t_method
)vradio_size
, gensym("size"), A_GIMME
, 0);
702 class_addmethod(vradio_old_class
, (t_method
)vradio_delta
, gensym("delta"), A_GIMME
, 0);
703 class_addmethod(vradio_old_class
, (t_method
)vradio_pos
, gensym("pos"), A_GIMME
, 0);
704 class_addmethod(vradio_old_class
, (t_method
)vradio_color
, gensym("color"), A_GIMME
, 0);
705 class_addmethod(vradio_old_class
, (t_method
)vradio_send
, gensym("send"), A_DEFSYM
, 0);
706 class_addmethod(vradio_old_class
, (t_method
)vradio_receive
, gensym("receive"), A_DEFSYM
, 0);
707 class_addmethod(vradio_old_class
, (t_method
)vradio_label
, gensym("label"), A_DEFSYM
, 0);
708 class_addmethod(vradio_old_class
, (t_method
)vradio_label_pos
, gensym("label_pos"), A_GIMME
, 0);
709 class_addmethod(vradio_old_class
, (t_method
)vradio_label_font
, gensym("label_font"), A_GIMME
, 0);
710 class_addmethod(vradio_old_class
, (t_method
)vradio_init
, gensym("init"), A_FLOAT
, 0);
711 class_addmethod(vradio_old_class
, (t_method
)vradio_number
, gensym("number"), A_FLOAT
, 0);
712 class_addmethod(vradio_old_class
, (t_method
)vradio_single_change
, gensym("single_change"), 0);
713 class_addmethod(vradio_old_class
, (t_method
)vradio_double_change
, gensym("double_change"), 0);
714 class_setwidget(vradio_old_class
, &vradio_widgetbehavior
);
715 class_sethelpsymbol(vradio_old_class
, gensym("vradio"));
717 /* Copyright (c) 1997-1999 Miller Puckette.
718 * For information on usage and redistribution, and for a DISCLAIMER OF ALL
719 * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */
721 /* vdial.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */
723 /* name change to vradio by MSP (it's a radio button really) and changed to
724 put out a "float" as in sliders, toggles, etc. */
731 #include "g_canvas.h"
733 #include "g_all_guis.h"
736 /*------------------ global variables -------------------------*/
739 /*------------------ global functions -------------------------*/
744 /* ------------- vdl gui-vertical radio button ---------------------- */
746 t_widgetbehavior vradio_widgetbehavior
;
747 static t_class
*vradio_class
, *vradio_old_class
;
749 /* widget helper functions */
751 void vradio_draw_update(t_vradio
*x
, t_glist
*glist
)
753 if(glist_isvisible(glist
))
755 t_canvas
*canvas
=glist_getcanvas(glist
);
757 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n",
758 canvas
, x
, x
->x_on_old
,
759 x
->x_gui
.x_bcol
, x
->x_gui
.x_bcol
);
760 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n",
762 x
->x_gui
.x_fcol
, x
->x_gui
.x_fcol
);
766 void vradio_draw_new(t_vradio
*x
, t_glist
*glist
)
768 t_canvas
*canvas
=glist_getcanvas(glist
);
769 int n
=x
->x_number
, i
, dy
=x
->x_gui
.x_h
, s4
=dy
/4;
770 int yy11b
=text_ypix(&x
->x_gui
.x_obj
, glist
);
771 int yy11
=yy11b
, yy12
=yy11
+dy
;
772 int yy21
=yy11
+s4
, yy22
=yy12
-s4
;
773 int xx11
=text_xpix(&x
->x_gui
.x_obj
, glist
), xx12
=xx11
+dy
;
774 int xx21
=xx11
+s4
, xx22
=xx12
-s4
;
778 sys_vgui(".x%x.c create rectangle %d %d %d %d -fill #%6.6x -tags %xBASE%d\n",
779 canvas
, xx11
, yy11
, xx12
, yy12
,
780 x
->x_gui
.x_bcol
, x
, i
);
781 sys_vgui(".x%x.c create rectangle %d %d %d %d -fill #%6.6x -outline #%6.6x -tags %xBUT%d\n",
782 canvas
, xx21
, yy21
, xx22
, yy22
,
783 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
,
784 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
, x
, i
);
790 sys_vgui(".x%x.c create text %d %d -text {%s} -anchor w \
791 -font {%s %d bold} -fill #%6.6x -tags %xLABEL\n",
792 canvas
, xx11
+x
->x_gui
.x_ldx
, yy11b
+x
->x_gui
.x_ldy
,
793 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"",
794 x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
,
796 if(!x
->x_gui
.x_fsf
.x_snd_able
)
797 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
798 canvas
, xx11
, yy11
-1, xx11
+ IOWIDTH
, yy11
, x
, 0);
799 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
800 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
801 canvas
, xx11
, yy11b
, xx11
+ IOWIDTH
, yy11b
+1, x
, 0);
804 void vradio_draw_move(t_vradio
*x
, t_glist
*glist
)
806 t_canvas
*canvas
=glist_getcanvas(glist
);
807 int n
=x
->x_number
, i
, dy
=x
->x_gui
.x_h
, s4
=dy
/4;
808 int yy11b
=text_ypix(&x
->x_gui
.x_obj
, glist
);
809 int yy11
=yy11b
, yy12
=yy11
+dy
;
810 int yy21
=yy11
+s4
, yy22
=yy12
-s4
;
811 int xx11
=text_xpix(&x
->x_gui
.x_obj
, glist
), xx12
=xx11
+dy
;
812 int xx21
=xx11
+s4
, xx22
=xx12
-s4
;
816 sys_vgui(".x%x.c coords %xBASE%d %d %d %d %d\n",
817 canvas
, x
, i
, xx11
, yy11
, xx12
, yy12
);
818 sys_vgui(".x%x.c coords %xBUT%d %d %d %d %d\n",
819 canvas
, x
, i
, xx21
, yy21
, xx22
, yy22
);
825 sys_vgui(".x%x.c coords %xLABEL %d %d\n",
826 canvas
, x
, xx11
+x
->x_gui
.x_ldx
, yy11b
+x
->x_gui
.x_ldy
);
827 if(!x
->x_gui
.x_fsf
.x_snd_able
)
828 sys_vgui(".x%x.c coords %xOUT%d %d %d %d %d\n",
829 canvas
, x
, 0, xx11
, yy11
-1, xx11
+ IOWIDTH
, yy11
);
830 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
831 sys_vgui(".x%x.c coords %xIN%d %d %d %d %d\n",
832 canvas
, x
, 0, xx11
, yy11b
, xx11
+ IOWIDTH
, yy11b
+1);
835 void vradio_draw_erase(t_vradio
* x
, t_glist
* glist
)
837 t_canvas
*canvas
=glist_getcanvas(glist
);
838 int n
=x
->x_number
, i
;
842 sys_vgui(".x%x.c delete %xBASE%d\n", canvas
, x
, i
);
843 sys_vgui(".x%x.c delete %xBUT%d\n", canvas
, x
, i
);
845 sys_vgui(".x%x.c delete %xLABEL\n", canvas
, x
);
846 if(!x
->x_gui
.x_fsf
.x_snd_able
)
847 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
848 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
849 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
852 void vradio_draw_config(t_vradio
* x
, t_glist
* glist
)
854 t_canvas
*canvas
=glist_getcanvas(glist
);
855 int n
=x
->x_number
, i
;
857 sys_vgui(".x%x.c itemconfigure %xLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n",
858 canvas
, x
, x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
,
859 x
->x_gui
.x_fsf
.x_selected
?IEM_GUI_COLOR_SELECTED
:x
->x_gui
.x_lcol
,
860 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"");
863 sys_vgui(".x%x.c itemconfigure %xBASE%d -fill #%6.6x\n", canvas
, x
, i
,
865 sys_vgui(".x%x.c itemconfigure %xBUT%d -fill #%6.6x -outline #%6.6x\n", canvas
, x
, i
,
866 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
,
867 (x
->x_on
==i
)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
871 void vradio_draw_io(t_vradio
* x
, t_glist
* glist
, int old_snd_rcv_flags
)
873 t_canvas
*canvas
=glist_getcanvas(glist
);
874 int xpos
=text_xpix(&x
->x_gui
.x_obj
, glist
);
875 int ypos
=text_ypix(&x
->x_gui
.x_obj
, glist
);
877 if((old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && !x
->x_gui
.x_fsf
.x_snd_able
)
878 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
880 ypos
+(x
->x_number
*x
->x_gui
.x_h
)-1,
882 ypos
+(x
->x_number
*x
->x_gui
.x_h
), x
, 0);
883 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && x
->x_gui
.x_fsf
.x_snd_able
)
884 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
885 if((old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && !x
->x_gui
.x_fsf
.x_rcv_able
)
886 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
888 xpos
+ IOWIDTH
, ypos
+1,
890 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && x
->x_gui
.x_fsf
.x_rcv_able
)
891 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
894 void vradio_draw_select(t_vradio
* x
, t_glist
* glist
)
896 t_canvas
*canvas
=glist_getcanvas(glist
);
897 int n
=x
->x_number
, i
;
899 if(x
->x_gui
.x_fsf
.x_selected
)
903 sys_vgui(".x%x.c itemconfigure %xBASE%d -outline #%6.6x\n", canvas
, x
, i
,
904 IEM_GUI_COLOR_SELECTED
);
906 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
, IEM_GUI_COLOR_SELECTED
);
912 sys_vgui(".x%x.c itemconfigure %xBASE%d -outline #%6.6x\n", canvas
, x
, i
,
913 IEM_GUI_COLOR_NORMAL
);
915 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
,
920 void vradio_draw(t_vradio
*x
, t_glist
*glist
, int mode
)
922 if(mode
== IEM_GUI_DRAW_MODE_UPDATE
)
923 vradio_draw_update(x
, glist
);
924 else if(mode
== IEM_GUI_DRAW_MODE_MOVE
)
925 vradio_draw_move(x
, glist
);
926 else if(mode
== IEM_GUI_DRAW_MODE_NEW
)
927 vradio_draw_new(x
, glist
);
928 else if(mode
== IEM_GUI_DRAW_MODE_SELECT
)
929 vradio_draw_select(x
, glist
);
930 else if(mode
== IEM_GUI_DRAW_MODE_ERASE
)
931 vradio_draw_erase(x
, glist
);
932 else if(mode
== IEM_GUI_DRAW_MODE_CONFIG
)
933 vradio_draw_config(x
, glist
);
934 else if(mode
>= IEM_GUI_DRAW_MODE_IO
)
935 vradio_draw_io(x
, glist
, mode
- IEM_GUI_DRAW_MODE_IO
);
938 /* ------------------------ vdl widgetbehaviour----------------------------- */
940 static void vradio_getrect(t_gobj
*z
, t_glist
*glist
, int *xp1
, int *yp1
, int *xp2
, int *yp2
)
942 t_vradio
*x
= (t_vradio
*)z
;
944 *xp1
= text_xpix(&x
->x_gui
.x_obj
, glist
);
945 *yp1
= text_ypix(&x
->x_gui
.x_obj
, glist
);
946 *xp2
= *xp1
+ x
->x_gui
.x_w
;
947 *yp2
= *yp1
+ x
->x_gui
.x_h
*x
->x_number
;
950 static void vradio_save(t_gobj
*z
, t_binbuf
*b
)
952 t_vradio
*x
= (t_vradio
*)z
;
956 iemgui_save(&x
->x_gui
, srl
, bflcol
);
957 binbuf_addv(b
, "ssiisiiiisssiiiiiiii", gensym("#X"),gensym("obj"),
958 (t_int
)x
->x_gui
.x_obj
.te_xpix
,
959 (t_int
)x
->x_gui
.x_obj
.te_ypix
,
960 (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
?
961 gensym("vdl") : gensym("vradio")),
963 x
->x_change
, iem_symargstoint(&x
->x_gui
.x_isa
), x
->x_number
,
964 srl
[0], srl
[1], srl
[2],
965 x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
966 iem_fstyletoint(&x
->x_gui
.x_fsf
), x
->x_gui
.x_fontsize
,
967 bflcol
[0], bflcol
[1], bflcol
[2], x
->x_on
);
971 static void vradio_properties(t_gobj
*z
, t_glist
*owner
)
973 t_vradio
*x
= (t_vradio
*)z
;
978 iemgui_properties(&x
->x_gui
, srl
);
979 if(pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
980 hchange
= x
->x_change
;
981 sprintf(buf
, "pdtk_iemgui_dialog %%s vradio \
982 ----------dimensions(pix):----------- %d %d size: 0 0 empty \
983 empty 0.0 empty 0.0 empty %d \
984 %d new-only new&old %d %d number: %d \
989 x
->x_gui
.x_w
, IEM_GUI_MINSIZE
,
991 hchange
, x
->x_gui
.x_isa
.x_loadinit
, -1, x
->x_number
,
992 srl
[0]->s_name
, srl
[1]->s_name
,
993 srl
[2]->s_name
, x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
994 x
->x_gui
.x_fsf
.x_font_style
, x
->x_gui
.x_fontsize
,
995 0xffffff & x
->x_gui
.x_bcol
, 0xffffff & x
->x_gui
.x_fcol
, 0xffffff & x
->x_gui
.x_lcol
);
996 gfxstub_new(&x
->x_gui
.x_obj
.ob_pd
, x
, buf
);
999 static void vradio_dialog(t_vradio
*x
, t_symbol
*s
, int argc
, t_atom
*argv
)
1002 int a
= (int)atom_getintarg(0, argc
, argv
);
1003 int chg
= (int)atom_getintarg(4, argc
, argv
);
1004 int num
= (int)atom_getintarg(6, argc
, argv
);
1007 if(chg
!= 0) chg
= 1;
1009 sr_flags
= iemgui_dialog(&x
->x_gui
, srl
, argc
, argv
);
1010 x
->x_gui
.x_w
= iemgui_clip_size(a
);
1011 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
1012 if(x
->x_number
!= num
)
1014 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_ERASE
);
1016 if(x
->x_on
>= x
->x_number
)
1018 x
->x_on
= x
->x_number
- 1;
1019 x
->x_on_old
= x
->x_on
;
1021 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_NEW
);
1025 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_CONFIG
);
1026 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_IO
+ sr_flags
);
1027 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_MOVE
);
1028 canvas_fixlinesfor(glist_getcanvas(x
->x_gui
.x_glist
), (t_text
*)x
);
1032 static void vradio_set(t_vradio
*x
, t_floatarg f
)
1039 if(i
>= x
->x_number
)
1041 if(x
->x_on
!= x
->x_on_old
)
1044 x
->x_on_old
= x
->x_on
;
1046 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1052 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1056 static void vradio_bang(t_vradio
*x
)
1058 /* compatibility with earlier "vdial" behavior */
1059 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
1061 if((x
->x_change
)&&(x
->x_on
!= x
->x_on_old
))
1063 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
1064 SETFLOAT(x
->x_at
+1, 0.0);
1065 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1066 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1067 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1069 x
->x_on_old
= x
->x_on
;
1070 SETFLOAT(x
->x_at
, (float)x
->x_on
);
1071 SETFLOAT(x
->x_at
+1, 1.0);
1072 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1073 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1074 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1078 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
1079 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1080 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
1084 static void vradio_fout(t_vradio
*x
, t_floatarg f
)
1090 if(i
>= x
->x_number
)
1093 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
1095 /* compatibility with earlier "vdial" behavior */
1096 if((x
->x_change
)&&(i
!= x
->x_on_old
))
1098 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
1099 SETFLOAT(x
->x_at
+1, 0.0);
1100 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1101 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1102 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1104 if(x
->x_on
!= x
->x_on_old
)
1105 x
->x_on_old
= x
->x_on
;
1107 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1108 x
->x_on_old
= x
->x_on
;
1109 SETFLOAT(x
->x_at
, (float)x
->x_on
);
1110 SETFLOAT(x
->x_at
+1, 1.0);
1111 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1112 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1113 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1117 x
->x_on_old
= x
->x_on
;
1119 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1120 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
1121 if (x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1122 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
1126 static void vradio_float(t_vradio
*x
, t_floatarg f
)
1132 if(i
>= x
->x_number
)
1135 if (pd_class(&x
->x_gui
.x_obj
.ob_pd
) == vradio_old_class
)
1137 /* compatibility with earlier "vdial" behavior */
1138 if((x
->x_change
)&&(i
!= x
->x_on_old
))
1140 if(x
->x_gui
.x_fsf
.x_put_in2out
)
1142 SETFLOAT(x
->x_at
, (float)x
->x_on_old
);
1143 SETFLOAT(x
->x_at
+1, 0.0);
1144 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1145 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1146 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1149 if(x
->x_on
!= x
->x_on_old
)
1150 x
->x_on_old
= x
->x_on
;
1152 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1153 x
->x_on_old
= x
->x_on
;
1154 if(x
->x_gui
.x_fsf
.x_put_in2out
)
1156 SETFLOAT(x
->x_at
, (float)x
->x_on
);
1157 SETFLOAT(x
->x_at
+1, 1.0);
1158 outlet_list(x
->x_gui
.x_obj
.ob_outlet
, &s_list
, 2, x
->x_at
);
1159 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1160 pd_list(x
->x_gui
.x_snd
->s_thing
, &s_list
, 2, x
->x_at
);
1165 x
->x_on_old
= x
->x_on
;
1167 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
1168 if (x
->x_gui
.x_fsf
.x_put_in2out
)
1170 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
1171 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
1172 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
1177 static void vradio_click(t_vradio
*x
, t_floatarg xpos
, t_floatarg ypos
,
1178 t_floatarg shift
, t_floatarg ctrl
, t_floatarg alt
)
1180 int yy
= (int)ypos
- text_ypix(&x
->x_gui
.x_obj
, x
->x_gui
.x_glist
);
1182 vradio_fout(x
, (float)(yy
/ x
->x_gui
.x_h
));
1185 static int vradio_newclick(t_gobj
*z
, struct _glist
*glist
,
1186 int xpix
, int ypix
, int shift
, int alt
, int dbl
, int doit
)
1189 vradio_click((t_vradio
*)z
, (t_floatarg
)xpix
, (t_floatarg
)ypix
,
1190 (t_floatarg
)shift
, 0, (t_floatarg
)alt
);
1194 static void vradio_loadbang(t_vradio
*x
)
1196 if(!sys_noloadbang
&& x
->x_gui
.x_isa
.x_loadinit
)
1200 static void vradio_number(t_vradio
*x
, t_floatarg num
)
1206 if(n
> IEM_RADIO_MAX
)
1208 if(n
!= x
->x_number
)
1210 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_ERASE
);
1212 if(x
->x_on
>= x
->x_number
)
1213 x
->x_on
= x
->x_number
- 1;
1214 x
->x_on_old
= x
->x_on
;
1215 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_NEW
);
1219 static void vradio_size(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1221 x
->x_gui
.x_w
= iemgui_clip_size((int)atom_getintarg(0, ac
, av
));
1222 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
1223 iemgui_size((void *)x
, &x
->x_gui
);
1226 static void vradio_delta(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1227 {iemgui_delta((void *)x
, &x
->x_gui
, s
, ac
, av
);}
1229 static void vradio_pos(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1230 {iemgui_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
1232 static void vradio_color(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1233 {iemgui_color((void *)x
, &x
->x_gui
, s
, ac
, av
);}
1235 static void vradio_send(t_vradio
*x
, t_symbol
*s
)
1236 {iemgui_send(x
, &x
->x_gui
, s
);}
1238 static void vradio_receive(t_vradio
*x
, t_symbol
*s
)
1239 {iemgui_receive(x
, &x
->x_gui
, s
);}
1241 static void vradio_label(t_vradio
*x
, t_symbol
*s
)
1242 {iemgui_label((void *)x
, &x
->x_gui
, s
);}
1244 static void vradio_label_pos(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1245 {iemgui_label_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
1247 static void vradio_label_font(t_vradio
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
1248 {iemgui_label_font((void *)x
, &x
->x_gui
, s
, ac
, av
);}
1250 static void vradio_init(t_vradio
*x
, t_floatarg f
)
1252 x
->x_gui
.x_isa
.x_loadinit
= (f
==0.0)?0:1;
1255 static void vradio_double_change(t_vradio
*x
)
1258 static void vradio_single_change(t_vradio
*x
)
1261 static void *vradio_donew(t_symbol
*s
, int argc
, t_atom
*argv
, int old
)
1263 t_vradio
*x
= (t_vradio
*)pd_new(old
? vradio_old_class
: vradio_class
);
1264 int bflcol
[]={-262144, -1, -1};
1265 int a
=IEM_GUI_DEFAULTSIZE
, on
=0, f
=0;
1266 int ldx
=0, ldy
=-6, chg
=1, num
=8;
1268 int ftbreak
=IEM_BNG_DEFAULTBREAKFLASHTIME
, fthold
=IEM_BNG_DEFAULTHOLDFLASHTIME
;
1271 if((argc
== 15)&&IS_A_FLOAT(argv
,0)&&IS_A_FLOAT(argv
,1)&&IS_A_FLOAT(argv
,2)
1272 &&IS_A_FLOAT(argv
,3)
1273 &&(IS_A_SYMBOL(argv
,4)||IS_A_FLOAT(argv
,4))
1274 &&(IS_A_SYMBOL(argv
,5)||IS_A_FLOAT(argv
,5))
1275 &&(IS_A_SYMBOL(argv
,6)||IS_A_FLOAT(argv
,6))
1276 &&IS_A_FLOAT(argv
,7)&&IS_A_FLOAT(argv
,8)
1277 &&IS_A_FLOAT(argv
,9)&&IS_A_FLOAT(argv
,10)&&IS_A_FLOAT(argv
,11)
1278 &&IS_A_FLOAT(argv
,12)&&IS_A_FLOAT(argv
,13)&&IS_A_FLOAT(argv
,14))
1280 a
= (int)atom_getintarg(0, argc
, argv
);
1281 chg
= (int)atom_getintarg(1, argc
, argv
);
1282 iem_inttosymargs(&x
->x_gui
.x_isa
, atom_getintarg(2, argc
, argv
));
1283 num
= (int)atom_getintarg(3, argc
, argv
);
1284 iemgui_new_getnames(&x
->x_gui
, 4, argv
);
1285 ldx
= (int)atom_getintarg(7, argc
, argv
);
1286 ldy
= (int)atom_getintarg(8, argc
, argv
);
1287 iem_inttofstyle(&x
->x_gui
.x_fsf
, atom_getintarg(9, argc
, argv
));
1288 fs
= (int)atom_getintarg(10, argc
, argv
);
1289 bflcol
[0] = (int)atom_getintarg(11, argc
, argv
);
1290 bflcol
[1] = (int)atom_getintarg(12, argc
, argv
);
1291 bflcol
[2] = (int)atom_getintarg(13, argc
, argv
);
1292 on
= (int)atom_getintarg(14, argc
, argv
);
1294 else iemgui_new_getnames(&x
->x_gui
, 4, 0);
1295 x
->x_gui
.x_draw
= (t_iemfunptr
)vradio_draw
;
1296 x
->x_gui
.x_fsf
.x_snd_able
= 1;
1297 x
->x_gui
.x_fsf
.x_rcv_able
= 1;
1298 x
->x_gui
.x_glist
= (t_glist
*)canvas_getcurrent();
1299 if (!strcmp(x
->x_gui
.x_snd
->s_name
, "empty"))
1300 x
->x_gui
.x_fsf
.x_snd_able
= 0;
1301 if (!strcmp(x
->x_gui
.x_rcv
->s_name
, "empty"))
1302 x
->x_gui
.x_fsf
.x_rcv_able
= 0;
1303 if(x
->x_gui
.x_fsf
.x_font_style
== 1) strcpy(x
->x_gui
.x_font
, "helvetica");
1304 else if(x
->x_gui
.x_fsf
.x_font_style
== 2) strcpy(x
->x_gui
.x_font
, "times");
1305 else { x
->x_gui
.x_fsf
.x_font_style
= 0;
1306 strcpy(x
->x_gui
.x_font
, "courier"); }
1309 if(num
> IEM_RADIO_MAX
)
1310 num
= IEM_RADIO_MAX
;
1314 if(on
>= x
->x_number
)
1315 on
= x
->x_number
- 1;
1316 if(x
->x_gui
.x_isa
.x_loadinit
)
1320 x
->x_on_old
= x
->x_on
;
1321 x
->x_change
= (chg
==0)?0:1;
1322 if (x
->x_gui
.x_fsf
.x_rcv_able
)
1323 pd_bind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
1324 x
->x_gui
.x_ldx
= ldx
;
1325 x
->x_gui
.x_ldy
= ldy
;
1328 x
->x_gui
.x_fontsize
= fs
;
1329 x
->x_gui
.x_w
= iemgui_clip_size(a
);
1330 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
1331 iemgui_verify_snd_ne_rcv(&x
->x_gui
);
1332 iemgui_all_colfromload(&x
->x_gui
, bflcol
);
1333 outlet_new(&x
->x_gui
.x_obj
, &s_list
);
1337 static void *vradio_new(t_symbol
*s
, int argc
, t_atom
*argv
)
1339 return (vradio_donew(s
, argc
, argv
, 0));
1342 static void *vdial_new(t_symbol
*s
, int argc
, t_atom
*argv
)
1344 return (vradio_donew(s
, argc
, argv
, 1));
1347 static void vradio_ff(t_vradio
*x
)
1349 if(x
->x_gui
.x_fsf
.x_rcv_able
)
1350 pd_unbind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
1351 gfxstub_deleteforkey(x
);
1354 void g_vradio_setup(void)
1356 vradio_class
= class_new(gensym("vradio"), (t_newmethod
)vradio_new
,
1357 (t_method
)vradio_ff
, sizeof(t_vradio
), 0, A_GIMME
, 0);
1358 class_addbang(vradio_class
, vradio_bang
);
1359 class_addfloat(vradio_class
, vradio_float
);
1360 class_addmethod(vradio_class
, (t_method
)vradio_click
, gensym("click"),
1361 A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, 0);
1362 class_addmethod(vradio_class
, (t_method
)vradio_dialog
, gensym("dialog"),
1364 class_addmethod(vradio_class
, (t_method
)vradio_loadbang
,
1365 gensym("loadbang"), 0);
1366 class_addmethod(vradio_class
, (t_method
)vradio_set
,
1367 gensym("set"), A_FLOAT
, 0);
1368 class_addmethod(vradio_class
, (t_method
)vradio_size
,
1369 gensym("size"), A_GIMME
, 0);
1370 class_addmethod(vradio_class
, (t_method
)vradio_delta
,
1371 gensym("delta"), A_GIMME
, 0);
1372 class_addmethod(vradio_class
, (t_method
)vradio_pos
,
1373 gensym("pos"), A_GIMME
, 0);
1374 class_addmethod(vradio_class
, (t_method
)vradio_color
,
1375 gensym("color"), A_GIMME
, 0);
1376 class_addmethod(vradio_class
, (t_method
)vradio_send
,
1377 gensym("send"), A_DEFSYM
, 0);
1378 class_addmethod(vradio_class
, (t_method
)vradio_receive
,
1379 gensym("receive"), A_DEFSYM
, 0);
1380 class_addmethod(vradio_class
, (t_method
)vradio_label
,
1381 gensym("label"), A_DEFSYM
, 0);
1382 class_addmethod(vradio_class
, (t_method
)vradio_label_pos
,
1383 gensym("label_pos"), A_GIMME
, 0);
1384 class_addmethod(vradio_class
, (t_method
)vradio_label_font
,
1385 gensym("label_font"), A_GIMME
, 0);
1386 class_addmethod(vradio_class
, (t_method
)vradio_init
,
1387 gensym("init"), A_FLOAT
, 0);
1388 class_addmethod(vradio_class
, (t_method
)vradio_number
,
1389 gensym("number"), A_FLOAT
, 0);
1390 class_addmethod(vradio_class
, (t_method
)vradio_single_change
,
1391 gensym("single_change"), 0);
1392 class_addmethod(vradio_class
, (t_method
)vradio_double_change
,
1393 gensym("double_change"), 0);
1394 vradio_widgetbehavior
.w_getrectfn
= vradio_getrect
;
1395 vradio_widgetbehavior
.w_displacefn
= iemgui_displace
;
1396 vradio_widgetbehavior
.w_selectfn
= iemgui_select
;
1397 vradio_widgetbehavior
.w_activatefn
= NULL
;
1398 vradio_widgetbehavior
.w_deletefn
= iemgui_delete
;
1399 vradio_widgetbehavior
.w_visfn
= iemgui_vis
;
1400 vradio_widgetbehavior
.w_clickfn
= vradio_newclick
;
1401 class_setwidget(vradio_class
, &vradio_widgetbehavior
);
1402 class_sethelpsymbol(vradio_class
, gensym("vradio"));
1403 class_setsavefn(vradio_class
, vradio_save
);
1404 class_setpropertiesfn(vradio_class
, vradio_properties
);
1406 /* obsolete version (0.34-0.35) */
1407 vradio_old_class
= class_new(gensym("vdl"), (t_newmethod
)vdial_new
,
1408 (t_method
)vradio_ff
, sizeof(t_vradio
), 0, A_GIMME
, 0);
1409 class_addbang(vradio_old_class
, vradio_bang
);
1410 class_addfloat(vradio_old_class
, vradio_float
);
1411 class_addmethod(vradio_old_class
, (t_method
)vradio_click
, gensym("click"),
1412 A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, 0);
1413 class_addmethod(vradio_old_class
, (t_method
)vradio_dialog
, gensym("dialog"),
1415 class_addmethod(vradio_old_class
, (t_method
)vradio_loadbang
, gensym("loadbang"), 0);
1416 class_addmethod(vradio_old_class
, (t_method
)vradio_set
, gensym("set"), A_FLOAT
, 0);
1417 class_addmethod(vradio_old_class
, (t_method
)vradio_size
, gensym("size"), A_GIMME
, 0);
1418 class_addmethod(vradio_old_class
, (t_method
)vradio_delta
, gensym("delta"), A_GIMME
, 0);
1419 class_addmethod(vradio_old_class
, (t_method
)vradio_pos
, gensym("pos"), A_GIMME
, 0);
1420 class_addmethod(vradio_old_class
, (t_method
)vradio_color
, gensym("color"), A_GIMME
, 0);
1421 class_addmethod(vradio_old_class
, (t_method
)vradio_send
, gensym("send"), A_DEFSYM
, 0);
1422 class_addmethod(vradio_old_class
, (t_method
)vradio_receive
, gensym("receive"), A_DEFSYM
, 0);
1423 class_addmethod(vradio_old_class
, (t_method
)vradio_label
, gensym("label"), A_DEFSYM
, 0);
1424 class_addmethod(vradio_old_class
, (t_method
)vradio_label_pos
, gensym("label_pos"), A_GIMME
, 0);
1425 class_addmethod(vradio_old_class
, (t_method
)vradio_label_font
, gensym("label_font"), A_GIMME
, 0);
1426 class_addmethod(vradio_old_class
, (t_method
)vradio_init
, gensym("init"), A_FLOAT
, 0);
1427 class_addmethod(vradio_old_class
, (t_method
)vradio_number
, gensym("number"), A_FLOAT
, 0);
1428 class_addmethod(vradio_old_class
, (t_method
)vradio_single_change
, gensym("single_change"), 0);
1429 class_addmethod(vradio_old_class
, (t_method
)vradio_double_change
, gensym("double_change"), 0);
1430 class_setwidget(vradio_old_class
, &vradio_widgetbehavior
);
1431 class_sethelpsymbol(vradio_old_class
, gensym("vradio"));