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 /* g_7_guis.c written by Thomas Musil (c) IEM KUG Graz Austria 2000-2001 */
6 /* thanks to Miller Puckette, Guenther Geiger and Krzystof Czaja */
11 #include "../../pdbox.h"
14 #include "g_all_guis.h"
23 #include "g_all_guis.h"
33 /* --------------- tgl gui-toggle ------------------------- */
35 t_widgetbehavior toggle_widgetbehavior
;
36 static t_class
*toggle_class
;
38 /* widget helper functions */
40 void toggle_draw_update(t_toggle
*x
, t_glist
*glist
)
46 if(glist_isvisible(glist
))
48 t_canvas
*canvas
=glist_getcanvas(glist
);
50 sys_vgui(".x%x.c itemconfigure %xX1 -fill #%6.6x\n", canvas
, x
,
51 (x
->x_on
!=0.0)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
52 sys_vgui(".x%x.c itemconfigure %xX2 -fill #%6.6x\n", canvas
, x
,
53 (x
->x_on
!=0.0)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
58 void toggle_draw_new(t_toggle
*x
, t_glist
*glist
)
64 t_canvas
*canvas
=glist_getcanvas(glist
);
65 int w
=1, xx
=text_xpix(&x
->x_gui
.x_obj
, glist
), yy
=text_ypix(&x
->x_gui
.x_obj
, glist
);
67 if(x
->x_gui
.x_w
>= 30)
69 if(x
->x_gui
.x_w
>= 60)
71 sys_vgui(".x%x.c create rectangle %d %d %d %d -fill #%6.6x -tags %xBASE\n",
72 canvas
, xx
, yy
, xx
+ x
->x_gui
.x_w
, yy
+ x
->x_gui
.x_h
,
74 sys_vgui(".x%x.c create line %d %d %d %d -width %d -fill #%6.6x -tags %xX1\n",
75 canvas
, xx
+w
+1, yy
+w
+1, xx
+ x
->x_gui
.x_w
-w
, yy
+ x
->x_gui
.x_h
-w
, w
,
76 (x
->x_on
!=0.0)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
, x
);
77 sys_vgui(".x%x.c create line %d %d %d %d -width %d -fill #%6.6x -tags %xX2\n",
78 canvas
, xx
+w
+1, yy
+ x
->x_gui
.x_h
-w
-1, xx
+ x
->x_gui
.x_w
-w
, yy
+w
, w
,
79 (x
->x_on
!=0.0)?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
, x
);
80 sys_vgui(".x%x.c create text %d %d -text {%s} -anchor w \
81 -font {%s %d bold} -fill #%6.6x -tags %xLABEL\n",
82 canvas
, xx
+x
->x_gui
.x_ldx
,
84 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"",
85 x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
, x
->x_gui
.x_lcol
, x
);
86 if(!x
->x_gui
.x_fsf
.x_snd_able
)
87 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
88 canvas
, xx
, yy
+ x
->x_gui
.x_h
-1, xx
+ IOWIDTH
, yy
+ x
->x_gui
.x_h
, x
, 0);
89 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
90 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
91 canvas
, xx
, yy
, xx
+ IOWIDTH
, yy
+1, x
, 0);
95 void toggle_draw_move(t_toggle
*x
, t_glist
*glist
)
101 t_canvas
*canvas
=glist_getcanvas(glist
);
102 int w
=1, xx
=text_xpix(&x
->x_gui
.x_obj
, glist
), yy
=text_ypix(&x
->x_gui
.x_obj
, glist
);
104 if(x
->x_gui
.x_w
>= 30)
107 if(x
->x_gui
.x_w
>= 60)
109 sys_vgui(".x%x.c coords %xBASE %d %d %d %d\n",
110 canvas
, x
, xx
, yy
, xx
+ x
->x_gui
.x_w
, yy
+ x
->x_gui
.x_h
);
111 sys_vgui(".x%x.c itemconfigure %xX1 -width %d\n", canvas
, x
, w
);
112 sys_vgui(".x%x.c coords %xX1 %d %d %d %d\n",
113 canvas
, x
, xx
+w
+1, yy
+w
+1, xx
+ x
->x_gui
.x_w
-w
, yy
+ x
->x_gui
.x_h
-w
);
114 sys_vgui(".x%x.c itemconfigure %xX2 -width %d\n", canvas
, x
, w
);
115 sys_vgui(".x%x.c coords %xX2 %d %d %d %d\n",
116 canvas
, x
, xx
+w
+1, yy
+ x
->x_gui
.x_h
-w
-1, xx
+ x
->x_gui
.x_w
-w
, yy
+w
);
117 sys_vgui(".x%x.c coords %xLABEL %d %d\n",
118 canvas
, x
, xx
+x
->x_gui
.x_ldx
, yy
+x
->x_gui
.x_ldy
);
119 if(!x
->x_gui
.x_fsf
.x_snd_able
)
120 sys_vgui(".x%x.c coords %xOUT%d %d %d %d %d\n",
121 canvas
, x
, 0, xx
, yy
+ x
->x_gui
.x_h
-1, xx
+ IOWIDTH
, yy
+ x
->x_gui
.x_h
);
122 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
123 sys_vgui(".x%x.c coords %xIN%d %d %d %d %d\n",
124 canvas
, x
, 0, xx
, yy
, xx
+ IOWIDTH
, yy
+1);
128 void toggle_draw_erase(t_toggle
* x
, t_glist
* glist
)
134 t_canvas
*canvas
=glist_getcanvas(glist
);
136 sys_vgui(".x%x.c delete %xBASE\n", canvas
, x
);
137 sys_vgui(".x%x.c delete %xX1\n", canvas
, x
);
138 sys_vgui(".x%x.c delete %xX2\n", canvas
, x
);
139 sys_vgui(".x%x.c delete %xLABEL\n", canvas
, x
);
140 if(!x
->x_gui
.x_fsf
.x_snd_able
)
141 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
142 if(!x
->x_gui
.x_fsf
.x_rcv_able
)
143 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
147 void toggle_draw_config(t_toggle
* x
, t_glist
* glist
)
153 t_canvas
*canvas
=glist_getcanvas(glist
);
155 sys_vgui(".x%x.c itemconfigure %xLABEL -font {%s %d bold} -fill #%6.6x -text {%s} \n",
156 canvas
, x
, x
->x_gui
.x_font
, x
->x_gui
.x_fontsize
,
157 x
->x_gui
.x_fsf
.x_selected
?IEM_GUI_COLOR_SELECTED
:x
->x_gui
.x_lcol
,
158 strcmp(x
->x_gui
.x_lab
->s_name
, "empty")?x
->x_gui
.x_lab
->s_name
:"");
159 sys_vgui(".x%x.c itemconfigure %xBASE -fill #%6.6x\n", canvas
, x
,
161 sys_vgui(".x%x.c itemconfigure %xX1 -fill #%6.6x\n", canvas
, x
,
162 x
->x_on
?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
163 sys_vgui(".x%x.c itemconfigure %xX2 -fill #%6.6x\n", canvas
, x
,
164 x
->x_on
?x
->x_gui
.x_fcol
:x
->x_gui
.x_bcol
);
168 void toggle_draw_io(t_toggle
* x
, t_glist
* glist
, int old_snd_rcv_flags
)
173 (void) old_snd_rcv_flags
;
175 int xpos
=text_xpix(&x
->x_gui
.x_obj
, glist
);
176 int ypos
=text_ypix(&x
->x_gui
.x_obj
, glist
);
177 t_canvas
*canvas
=glist_getcanvas(glist
);
179 if((old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && !x
->x_gui
.x_fsf
.x_snd_able
)
180 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xOUT%d\n",
182 ypos
+ x
->x_gui
.x_h
-1, xpos
+ IOWIDTH
,
183 ypos
+ x
->x_gui
.x_h
, x
, 0);
184 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_SND_FLAG
) && x
->x_gui
.x_fsf
.x_snd_able
)
185 sys_vgui(".x%x.c delete %xOUT%d\n", canvas
, x
, 0);
186 if((old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && !x
->x_gui
.x_fsf
.x_rcv_able
)
187 sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xIN%d\n",
189 xpos
+ IOWIDTH
, ypos
+1, x
, 0);
190 if(!(old_snd_rcv_flags
& IEM_GUI_OLD_RCV_FLAG
) && x
->x_gui
.x_fsf
.x_rcv_able
)
191 sys_vgui(".x%x.c delete %xIN%d\n", canvas
, x
, 0);
195 void toggle_draw_select(t_toggle
* x
, t_glist
* glist
)
201 t_canvas
*canvas
=glist_getcanvas(glist
);
203 if(x
->x_gui
.x_fsf
.x_selected
)
205 sys_vgui(".x%x.c itemconfigure %xBASE -outline #%6.6x\n", canvas
, x
, IEM_GUI_COLOR_SELECTED
);
206 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
, IEM_GUI_COLOR_SELECTED
);
210 sys_vgui(".x%x.c itemconfigure %xBASE -outline #%6.6x\n", canvas
, x
, IEM_GUI_COLOR_NORMAL
);
211 sys_vgui(".x%x.c itemconfigure %xLABEL -fill #%6.6x\n", canvas
, x
, x
->x_gui
.x_lcol
);
216 void toggle_draw(t_toggle
*x
, t_glist
*glist
, int mode
)
218 if(mode
== IEM_GUI_DRAW_MODE_UPDATE
)
219 toggle_draw_update(x
, glist
);
220 else if(mode
== IEM_GUI_DRAW_MODE_MOVE
)
221 toggle_draw_move(x
, glist
);
222 else if(mode
== IEM_GUI_DRAW_MODE_NEW
)
223 toggle_draw_new(x
, glist
);
224 else if(mode
== IEM_GUI_DRAW_MODE_SELECT
)
225 toggle_draw_select(x
, glist
);
226 else if(mode
== IEM_GUI_DRAW_MODE_ERASE
)
227 toggle_draw_erase(x
, glist
);
228 else if(mode
== IEM_GUI_DRAW_MODE_CONFIG
)
229 toggle_draw_config(x
, glist
);
230 else if(mode
>= IEM_GUI_DRAW_MODE_IO
)
231 toggle_draw_io(x
, glist
, mode
- IEM_GUI_DRAW_MODE_IO
);
234 /* ------------------------ tgl widgetbehaviour----------------------------- */
236 static void toggle_getrect(t_gobj
*z
, t_glist
*glist
, int *xp1
, int *yp1
, int *xp2
, int *yp2
)
238 t_toggle
*x
= (t_toggle
*)z
;
240 *xp1
= text_xpix(&x
->x_gui
.x_obj
, glist
);
241 *yp1
= text_ypix(&x
->x_gui
.x_obj
, glist
);
242 *xp2
= *xp1
+ x
->x_gui
.x_w
;
243 *yp2
= *yp1
+ x
->x_gui
.x_h
;
246 static void toggle_save(t_gobj
*z
, t_binbuf
*b
)
248 t_toggle
*x
= (t_toggle
*)z
;
252 iemgui_save(&x
->x_gui
, srl
, bflcol
);
253 binbuf_addv(b
, "ssiisiisssiiiiiiiff", gensym("#X"),gensym("obj"),
254 (t_int
)x
->x_gui
.x_obj
.te_xpix
,
255 (t_int
)x
->x_gui
.x_obj
.te_ypix
,
256 gensym("tgl"), x
->x_gui
.x_w
,
257 iem_symargstoint(&x
->x_gui
.x_isa
),
258 srl
[0], srl
[1], srl
[2],
259 x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
260 iem_fstyletoint(&x
->x_gui
.x_fsf
), x
->x_gui
.x_fontsize
,
261 bflcol
[0], bflcol
[1], bflcol
[2], x
->x_on
, x
->x_nonzero
);
265 static void toggle_properties(t_gobj
*z
, t_glist
*owner
)
271 t_toggle
*x
= (t_toggle
*)z
;
275 iemgui_properties(&x
->x_gui
, srl
);
276 sprintf(buf
, "pdtk_iemgui_dialog %%s TOGGLE \
277 ----------dimensions(pix):----------- %d %d size: 0 0 empty \
278 -----------non-zero-value:----------- %g value: 0.0 empty %g \
279 -1 lin log %d %d empty %d \
284 x
->x_gui
.x_w
, IEM_GUI_MINSIZE
,
285 x
->x_nonzero
, 1.0,/*non_zero-schedule*/
286 x
->x_gui
.x_isa
.x_loadinit
, -1, -1,/*no multi*/
287 srl
[0]->s_name
, srl
[1]->s_name
,
288 srl
[2]->s_name
, x
->x_gui
.x_ldx
, x
->x_gui
.x_ldy
,
289 x
->x_gui
.x_fsf
.x_font_style
, x
->x_gui
.x_fontsize
,
290 0xffffff & x
->x_gui
.x_bcol
, 0xffffff & x
->x_gui
.x_fcol
, 0xffffff & x
->x_gui
.x_lcol
);
291 gfxstub_new(&x
->x_gui
.x_obj
.ob_pd
, x
, buf
);
295 static void toggle_bang(t_toggle
*x
)
297 x
->x_on
= (x
->x_on
==0.0)?x
->x_nonzero
:0.0;
298 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
299 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
300 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
301 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
304 static void toggle_dialog(t_toggle
*x
, t_symbol
*s
, int argc
, t_atom
*argv
)
307 int a
= (int)atom_getintarg(0, argc
, argv
);
308 float nonzero
= (float)atom_getfloatarg(2, argc
, argv
);
317 x
->x_nonzero
= nonzero
;
319 x
->x_on
= x
->x_nonzero
;
320 sr_flags
= iemgui_dialog(&x
->x_gui
, srl
, argc
, argv
);
321 x
->x_gui
.x_w
= iemgui_clip_size(a
);
322 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
323 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_CONFIG
);
324 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_IO
+ sr_flags
);
325 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_MOVE
);
326 canvas_fixlinesfor(glist_getcanvas(x
->x_gui
.x_glist
), (t_text
*)x
);
329 static void toggle_click(t_toggle
*x
, t_floatarg xpos
, t_floatarg ypos
, t_floatarg shift
, t_floatarg ctrl
, t_floatarg alt
)
344 static int toggle_newclick(t_gobj
*z
, struct _glist
*glist
, int xpix
, int ypix
, int shift
, int alt
, int dbl
, int doit
)
351 toggle_click((t_toggle
*)z
, (t_floatarg
)xpix
, (t_floatarg
)ypix
, (t_floatarg
)shift
, 0, (t_floatarg
)alt
);
355 static void toggle_set(t_toggle
*x
, t_floatarg f
)
360 (*x
->x_gui
.x_draw
)(x
, x
->x_gui
.x_glist
, IEM_GUI_DRAW_MODE_UPDATE
);
363 static void toggle_float(t_toggle
*x
, t_floatarg f
)
366 if(x
->x_gui
.x_fsf
.x_put_in2out
)
368 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
369 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
370 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
374 static void toggle_fout(t_toggle
*x
, t_floatarg f
)
377 outlet_float(x
->x_gui
.x_obj
.ob_outlet
, x
->x_on
);
378 if(x
->x_gui
.x_fsf
.x_snd_able
&& x
->x_gui
.x_snd
->s_thing
)
379 pd_float(x
->x_gui
.x_snd
->s_thing
, x
->x_on
);
382 static void toggle_loadbang(t_toggle
*x
)
384 if(!sys_noloadbang
&& x
->x_gui
.x_isa
.x_loadinit
)
385 toggle_fout(x
, (float)x
->x_on
);
388 static void toggle_size(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
393 x
->x_gui
.x_w
= iemgui_clip_size((int)atom_getintarg(0, ac
, av
));
394 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
395 iemgui_size((void *)x
, &x
->x_gui
);
398 static void toggle_delta(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
399 {iemgui_delta((void *)x
, &x
->x_gui
, s
, ac
, av
);}
401 static void toggle_pos(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
402 {iemgui_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
404 static void toggle_color(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
405 {iemgui_color((void *)x
, &x
->x_gui
, s
, ac
, av
);}
407 static void toggle_send(t_toggle
*x
, t_symbol
*s
)
408 {iemgui_send(x
, &x
->x_gui
, s
);}
410 static void toggle_receive(t_toggle
*x
, t_symbol
*s
)
411 {iemgui_receive(x
, &x
->x_gui
, s
);}
413 static void toggle_label(t_toggle
*x
, t_symbol
*s
)
414 {iemgui_label((void *)x
, &x
->x_gui
, s
);}
416 static void toggle_label_font(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
417 {iemgui_label_font((void *)x
, &x
->x_gui
, s
, ac
, av
);}
419 static void toggle_label_pos(t_toggle
*x
, t_symbol
*s
, int ac
, t_atom
*av
)
420 {iemgui_label_pos((void *)x
, &x
->x_gui
, s
, ac
, av
);}
422 static void toggle_init(t_toggle
*x
, t_floatarg f
)
424 x
->x_gui
.x_isa
.x_loadinit
= (f
==0.0)?0:1;
427 static void toggle_nonzero(t_toggle
*x
, t_floatarg f
)
433 static void *toggle_new(t_symbol
*s
, int argc
, t_atom
*argv
)
435 t_toggle
*x
= (t_toggle
*)pd_new(toggle_class
);
436 int bflcol
[]={-262144, -1, -1};
438 int a
=IEM_GUI_DEFAULTSIZE
;
440 int a
=IEM_GUI_DEFAULTSIZE
, f
=0;
444 float on
=0.0, nonzero
=1.0;
453 iem_inttosymargs(&x
->x_gui
.x_isa
, 0);
454 iem_inttofstyle(&x
->x_gui
.x_fsf
, 0);
456 if(((argc
== 13)||(argc
== 14))&&IS_A_FLOAT(argv
,0)
458 &&(IS_A_SYMBOL(argv
,2)||IS_A_FLOAT(argv
,2))
459 &&(IS_A_SYMBOL(argv
,3)||IS_A_FLOAT(argv
,3))
460 &&(IS_A_SYMBOL(argv
,4)||IS_A_FLOAT(argv
,4))
461 &&IS_A_FLOAT(argv
,5)&&IS_A_FLOAT(argv
,6)
462 &&IS_A_FLOAT(argv
,7)&&IS_A_FLOAT(argv
,8)&&IS_A_FLOAT(argv
,9)
463 &&IS_A_FLOAT(argv
,10)&&IS_A_FLOAT(argv
,11)&&IS_A_FLOAT(argv
,12))
465 a
= (int)atom_getintarg(0, argc
, argv
);
466 iem_inttosymargs(&x
->x_gui
.x_isa
, atom_getintarg(1, argc
, argv
));
467 iemgui_new_getnames(&x
->x_gui
, 2, argv
);
468 ldx
= (int)atom_getintarg(5, argc
, argv
);
469 ldy
= (int)atom_getintarg(6, argc
, argv
);
470 iem_inttofstyle(&x
->x_gui
.x_fsf
, atom_getintarg(7, argc
, argv
));
471 fs
= (int)atom_getintarg(8, argc
, argv
);
472 bflcol
[0] = (int)atom_getintarg(9, argc
, argv
);
473 bflcol
[1] = (int)atom_getintarg(10, argc
, argv
);
474 bflcol
[2] = (int)atom_getintarg(11, argc
, argv
);
475 on
= (float)atom_getfloatarg(12, argc
, argv
);
477 else iemgui_new_getnames(&x
->x_gui
, 2, 0);
478 if((argc
== 14)&&IS_A_FLOAT(argv
,13))
479 nonzero
= (float)atom_getfloatarg(13, argc
, argv
);
480 x
->x_gui
.x_draw
= (t_iemfunptr
)toggle_draw
;
482 x
->x_gui
.x_fsf
.x_snd_able
= 1;
483 x
->x_gui
.x_fsf
.x_rcv_able
= 1;
484 x
->x_gui
.x_glist
= (t_glist
*)canvas_getcurrent();
485 if (!strcmp(x
->x_gui
.x_snd
->s_name
, "empty"))
486 x
->x_gui
.x_fsf
.x_snd_able
= 0;
487 if (!strcmp(x
->x_gui
.x_rcv
->s_name
, "empty"))
488 x
->x_gui
.x_fsf
.x_rcv_able
= 0;
489 if(x
->x_gui
.x_fsf
.x_font_style
== 1) strcpy(x
->x_gui
.x_font
, "helvetica");
490 else if(x
->x_gui
.x_fsf
.x_font_style
== 2) strcpy(x
->x_gui
.x_font
, "times");
491 else { x
->x_gui
.x_fsf
.x_font_style
= 0;
492 strcpy(x
->x_gui
.x_font
, "courier"); }
493 x
->x_nonzero
= (nonzero
!=0.0)?nonzero
:1.0;
494 if(x
->x_gui
.x_isa
.x_loadinit
)
495 x
->x_on
= (on
!=0.0)?nonzero
:0.0;
498 if (x
->x_gui
.x_fsf
.x_rcv_able
)
499 pd_bind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
500 x
->x_gui
.x_ldx
= ldx
;
501 x
->x_gui
.x_ldy
= ldy
;
505 x
->x_gui
.x_fontsize
= fs
;
506 x
->x_gui
.x_w
= iemgui_clip_size(a
);
507 x
->x_gui
.x_h
= x
->x_gui
.x_w
;
508 iemgui_all_colfromload(&x
->x_gui
, bflcol
);
509 iemgui_verify_snd_ne_rcv(&x
->x_gui
);
510 outlet_new(&x
->x_gui
.x_obj
, &s_float
);
514 static void toggle_ff(t_toggle
*x
)
516 if(x
->x_gui
.x_fsf
.x_rcv_able
)
517 pd_unbind(&x
->x_gui
.x_obj
.ob_pd
, x
->x_gui
.x_rcv
);
519 gfxstub_deleteforkey(x
);
523 void g_toggle_setup(void)
525 toggle_class
= class_new(gensym("tgl"), (t_newmethod
)toggle_new
,
526 (t_method
)toggle_ff
, sizeof(t_toggle
), 0, A_GIMME
, 0);
527 class_addcreator((t_newmethod
)toggle_new
, gensym("toggle"), A_GIMME
, 0);
528 class_addbang(toggle_class
, toggle_bang
);
529 class_addfloat(toggle_class
, toggle_float
);
530 class_addmethod(toggle_class
, (t_method
)toggle_click
, gensym("click"),
531 A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, A_FLOAT
, 0);
532 class_addmethod(toggle_class
, (t_method
)toggle_dialog
, gensym("dialog"),
534 class_addmethod(toggle_class
, (t_method
)toggle_loadbang
, gensym("loadbang"), 0);
535 class_addmethod(toggle_class
, (t_method
)toggle_set
, gensym("set"), A_FLOAT
, 0);
536 class_addmethod(toggle_class
, (t_method
)toggle_size
, gensym("size"), A_GIMME
, 0);
537 class_addmethod(toggle_class
, (t_method
)toggle_delta
, gensym("delta"), A_GIMME
, 0);
538 class_addmethod(toggle_class
, (t_method
)toggle_pos
, gensym("pos"), A_GIMME
, 0);
539 class_addmethod(toggle_class
, (t_method
)toggle_color
, gensym("color"), A_GIMME
, 0);
540 class_addmethod(toggle_class
, (t_method
)toggle_send
, gensym("send"), A_DEFSYM
, 0);
541 class_addmethod(toggle_class
, (t_method
)toggle_receive
, gensym("receive"), A_DEFSYM
, 0);
542 class_addmethod(toggle_class
, (t_method
)toggle_label
, gensym("label"), A_DEFSYM
, 0);
543 class_addmethod(toggle_class
, (t_method
)toggle_label_pos
, gensym("label_pos"), A_GIMME
, 0);
544 class_addmethod(toggle_class
, (t_method
)toggle_label_font
, gensym("label_font"), A_GIMME
, 0);
545 class_addmethod(toggle_class
, (t_method
)toggle_init
, gensym("init"), A_FLOAT
, 0);
546 class_addmethod(toggle_class
, (t_method
)toggle_nonzero
, gensym("nonzero"), A_FLOAT
, 0);
547 toggle_widgetbehavior
.w_getrectfn
= toggle_getrect
;
548 toggle_widgetbehavior
.w_displacefn
= iemgui_displace
;
549 toggle_widgetbehavior
.w_selectfn
= iemgui_select
;
550 toggle_widgetbehavior
.w_activatefn
= NULL
;
551 toggle_widgetbehavior
.w_deletefn
= iemgui_delete
;
552 toggle_widgetbehavior
.w_visfn
= iemgui_vis
;
553 toggle_widgetbehavior
.w_clickfn
= toggle_newclick
;
554 class_setwidget(toggle_class
, &toggle_widgetbehavior
);
555 class_sethelpsymbol(toggle_class
, gensym("toggle"));
556 class_setsavefn(toggle_class
, toggle_save
);
557 class_setpropertiesfn(toggle_class
, toggle_properties
);