aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-11-24 04:51:33 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2007-11-24 04:51:33 +0000
commit380823b3bcbf0f5112308d1975f51e06e836b212 (patch)
tree4a176e7e9fef76732baa846715c9e6a577ccdd20
parent6abfeaada311a61a9590f076ae100531cff42666 (diff)
cleaned up code and made it nice and organized :D
svn path=/trunk/externals/tkwidgets/; revision=9031
-rw-r--r--checkbutton.c39
-rw-r--r--text.c356
2 files changed, 203 insertions, 192 deletions
diff --git a/checkbutton.c b/checkbutton.c
index 6f9ff81..9f0c1b0 100644
--- a/checkbutton.c
+++ b/checkbutton.c
@@ -113,7 +113,7 @@ static void set_tkwidgets_ids(t_checkbutton* x, t_canvas* canvas)
x->handle_id = tkwidgets_gen_handle_id((t_object *)x, x->canvas_id);
}
-static void checkbutton_drawme(t_checkbutton *x, t_glist *glist)
+static void drawme(t_checkbutton *x, t_glist *glist)
{
set_tkwidgets_ids(x,glist_getcanvas(glist));
sys_vgui("destroy %s\n", x->widget_id->s_name); /* just in case it exists */
@@ -132,7 +132,7 @@ static void checkbutton_drawme(t_checkbutton *x, t_glist *glist)
}
-static void checkbutton_erase(t_checkbutton* x)
+static void eraseme(t_checkbutton* x)
{
sys_vgui("destroy %s\n", x->widget_id->s_name);
sys_vgui("%s delete %s\n", x->canvas_id->s_name, x->all_tag->s_name);
@@ -202,12 +202,23 @@ static void checkbutton_vis(t_gobj *z, t_glist *glist, int vis)
{
t_checkbutton* s = (t_checkbutton*)z;
if (vis)
- checkbutton_drawme(s, glist);
+ drawme(s, glist);
else
- checkbutton_erase(s);
+ eraseme(s);
}
-/* --------------------------- methods -------------------------------------- */
+static void checkbutton_save(t_gobj *z, t_binbuf *b)
+{
+ t_checkbutton *x = (t_checkbutton *)z;
+ binbuf_addv(b, "ssiisii", &s__X, gensym("obj"),
+ x->x_obj.te_xpix, x->x_obj.te_ypix,
+ atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)),
+ x->width, x->height);
+// TODO binbuf_addbinbuf(b, x->options_binbuf);
+ binbuf_addv(b, ";");
+}
+
+/* --------------------------- methods for pd space ------------------------- */
static void checkbutton_size(t_checkbutton *x, t_float width, t_float height)
{
@@ -249,11 +260,15 @@ static void *checkbutton_new(t_symbol* s, int argc, t_atom *argv)
{
t_checkbutton *x = (t_checkbutton *)pd_new(checkbutton_class);
- x->x_glist = (t_glist*) canvas_getcurrent();
+ x->options_binbuf = binbuf_new();
x->width = 15;
x->height = 15;
+ if(argc > 0) x->width = atom_getint(argv);
+ if(argc > 1) x->height = atom_getint(argv + 1);
+ if(argc > 2) binbuf_add(x->options_binbuf, argc - 2, argv + 2);
+
x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s);
x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace);
pd_bind(&x->x_obj.ob_pd, x->receive_name);
@@ -270,10 +285,12 @@ static void *checkbutton_new(t_symbol* s, int argc, t_atom *argv)
void checkbutton_setup(void)
{
- checkbutton_class = class_new(gensym("checkbutton"), (t_newmethod)checkbutton_new,
- (t_method)checkbutton_free,
- sizeof(t_checkbutton), 0, A_GIMME,0);
-
+ checkbutton_class = class_new(gensym("checkbutton"),
+ (t_newmethod)checkbutton_new,
+ (t_method)checkbutton_free,
+ sizeof(t_checkbutton), 0, A_GIMME,0);
+
+/* methods for pd space */
class_addmethod(checkbutton_class, (t_method)checkbutton_query,
gensym("query"), A_DEFSYMBOL, 0);
class_addmethod(checkbutton_class, (t_method)checkbutton_size,
@@ -283,6 +300,7 @@ void checkbutton_setup(void)
class_addmethod(checkbutton_class, (t_method)checkbutton_query_callback,
gensym("query_callback"), A_GIMME, 0);
+/* widget behavior */
checkbutton_widgetbehavior.w_getrectfn = checkbutton_getrect;
checkbutton_widgetbehavior.w_displacefn = checkbutton_displace;
checkbutton_widgetbehavior.w_selectfn = NULL;
@@ -291,6 +309,7 @@ void checkbutton_setup(void)
checkbutton_widgetbehavior.w_visfn = checkbutton_vis;
checkbutton_widgetbehavior.w_clickfn = NULL;
class_setwidget(checkbutton_class, &checkbutton_widgetbehavior);
+ class_setsavefn(checkbutton_class, &checkbutton_save);
}
diff --git a/text.c b/text.c
index ca0e1a1..0580a4e 100644
--- a/text.c
+++ b/text.c
@@ -131,6 +131,23 @@ static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_
/* -------------------- widget helper functions ----------------------------- */
+static void query_scrollbars(t_textwidget *x)
+{
+ t_atom state[2];
+ SETSYMBOL(state, scrollbars_symbol);
+ SETFLOAT(state + 1, (t_float)x->have_scrollbars);
+ textwidget_query_callback(x, gensym("query_callback"), 2, state);
+}
+
+static void query_size(t_textwidget *x)
+{
+ t_atom coords[3];
+ SETSYMBOL(coords, size_symbol);
+ SETFLOAT(coords + 1, (t_float)x->width);
+ SETFLOAT(coords + 2, (t_float)x->height);
+ textwidget_query_callback(x, gensym("query_callback"), 3, coords);
+}
+
static void set_tkwidgets_ids(t_textwidget *x, t_canvas *canvas)
{
x->x_canvas = canvas;
@@ -179,9 +196,9 @@ static void create_widget(t_textwidget *x)
x->widget_id->s_name, x->receive_name->s_name);
}
-static void textwidget_drawme(t_textwidget *x, t_glist *glist)
+static void drawme(t_textwidget *x, t_glist *glist)
{
- DEBUG(post("textwidget_drawme: firsttime %d canvas %lx glist %lx", x->x_canvas, glist););
+ DEBUG(post("drawme: firsttime %d canvas %lx glist %lx", x->x_canvas, glist););
set_tkwidgets_ids(x,glist_getcanvas(glist));
create_widget(x);
tkwidgets_draw_iolets((t_object*)x, glist,
@@ -196,9 +213,9 @@ static void textwidget_drawme(t_textwidget *x, t_glist *glist)
tkwidgets_restore_options(x->widget_id, x->options_binbuf);
}
-static void textwidget_erase(t_textwidget* x)
+static void eraseme(t_textwidget* x)
{
- DEBUG(post("textwidget_erase: canvas %lx", x->x_canvas););
+ DEBUG(post("eraseme: canvas %lx", x->x_canvas););
tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag);
sys_vgui("destroy %s\n", x->frame_id->s_name);
sys_vgui("%s delete %s\n", x->canvas_id->s_name, x->all_tag->s_name);
@@ -302,28 +319,75 @@ static void textwidget_vis(t_gobj *z, t_glist *glist, int vis)
{
t_textwidget *x = (t_textwidget*)z;
DEBUG(post("textwidget_vis: vis %d canvas %lx glist %lx", vis, x->x_canvas, glist););
- t_rtext *y;
- if (vis) {
- y = (t_rtext *) rtext_new(glist, (t_text *)z);
- textwidget_drawme(x, glist);
- }
- else {
- y = glist_findrtext(glist, (t_text *)z);
- textwidget_erase(x);
- rtext_free(y);
- }
+ if (vis)
+ drawme(x, glist);
+ else
+ eraseme(x);
}
-/* the clickfn is only called in run mode
+/* the clickfn is only called in run mode and is therefore not useful AFAIK
+ * for this text widget, unless there is something like click to output words
+ * implemented, which is what Max/MSP's textedit does */
+/*
static int textwidget_click(t_gobj *z, t_glist *glist, int xpix, int ypix,
int shift, int alt, int dbl, int doit)
{
t_textwidget *x = (t_textwidget *)z;
- DEBUG(post("textwidget_click x:%d y:%d edit: %d", xpix, ypix, x->x_canvas->gl_edit););
+ DEBUG(post("textwidget_click x:%d y:%d edit: %d", xpix, ypix, x->x_canvas->gl_edit););
return 0;
}
*/
+static void textwidget_save(t_gobj *z, t_binbuf *b)
+{
+ t_textwidget *x = (t_textwidget *)z;
+
+ binbuf_addv(b, "ssiisiii", &s__X, gensym("obj"),
+ x->x_obj.te_xpix, x->x_obj.te_ypix,
+ atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)),
+ x->width, x->height, x->have_scrollbars);
+ binbuf_addbinbuf(b, x->options_binbuf);
+ binbuf_addv(b, ";");
+}
+
+
+/* -------------------- methods for atoms ----------------------------------- */
+
+/* this function uses the selector as the Tk option and applies the whole
+ * message directly to the Tk widget itself using Tk's "configure". This
+ * function is called when "anything" is received. */
+static void textwidget_set_option(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
+{
+ if(s != &s_list)
+ {
+ t_binbuf *argument_binbuf = binbuf_new();
+ char *argument_buffer;
+ int buffer_length;
+
+ binbuf_add(argument_binbuf, argc, argv);
+ binbuf_gettext(argument_binbuf, &argument_buffer, &buffer_length);
+ binbuf_free(argument_binbuf);
+ argument_buffer[buffer_length] = 0;
+ sys_vgui("%s configure -%s {%s} \n",
+ x->widget_id->s_name, s->s_name, argument_buffer);
+ tkwidgets_store_options(x->receive_name, x->tcl_namespace, x->widget_id,
+ sizeof(textwidget_tk_options)/sizeof(char *),
+ (char **)&textwidget_tk_options);
+ }
+}
+
+/* Pass the contents of the text widget onto the textwidget_output_callback
+ * fuction above */
+static void textwidget_bang_output(t_textwidget* x)
+{
+ /* With "," and ";" escaping thanks to JMZ */
+ sys_vgui("pd [concat %s output [string map {\",\" \"\\\\,\" \";\" \"\\\\;\"} \
+ [%s get 0.0 end]] \\;]\n",
+ x->receive_name->s_name, x->widget_id->s_name);
+}
+
+/* -------------------- methods for pd space -------------------------------- */
+
static void textwidget_append(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
{
DEBUG(post("textwidget_append"););
@@ -350,6 +414,12 @@ static void textwidget_append(t_textwidget* x, t_symbol *s, int argc, t_atom *a
sys_vgui("%s yview end-2char \n", x->widget_id->s_name );
}
+/* Clear the contents of the text widget */
+static void textwidget_clear(t_textwidget* x)
+{
+ sys_vgui("%s delete 0.0 end \n", x->widget_id->s_name);
+}
+
static void textwidget_key(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
{
DEBUG(post("textwidget_key"););
@@ -380,12 +450,6 @@ static void textwidget_key(t_textwidget* x, t_symbol *s, int argc, t_atom *argv
sys_vgui("%s yview end-2char \n", x->widget_id->s_name );
}
-/* Clear the contents of the text widget */
-static void textwidget_clear(t_textwidget* x)
-{
- sys_vgui("%s delete 0.0 end \n", x->widget_id->s_name);
-}
-
/* Function to reset the contents of the textwidget box */
static void textwidget_set(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
{
@@ -395,18 +459,66 @@ static void textwidget_set(t_textwidget* x, t_symbol *s, int argc, t_atom *argv
textwidget_append(x, s, argc, argv);
}
-/* Pass the contents of the text widget onto the textwidget_output_callback fuction above */
-static void textwidget_bang_output(t_textwidget* x)
+static void textwidget_options(t_textwidget *x)
{
- /* With "," and ";" escaping thanks to JMZ */
- sys_vgui("pd [concat %s output [string map {\",\" \"\\\\,\" \";\" \"\\\\;\"} \
- [%s get 0.0 end]] \\;]\n",
- x->receive_name->s_name, x->widget_id->s_name);
+ tkwidgets_list_options(x->x_status_outlet,
+ sizeof(textwidget_tk_options)/sizeof(char *),
+ (char **)&textwidget_tk_options);
}
-static void textwidget_output_callback(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
+static void textwidget_query(t_textwidget *x, t_symbol *s)
{
- outlet_list(x->x_data_outlet, s, argc, argv );
+ post("textwidget_query %s", s->s_name);
+ if(s == &s_)
+ {
+ tkwidgets_query_options(x->receive_name, x->widget_id,
+ sizeof(textwidget_tk_options)/sizeof(char *),
+ textwidget_tk_options);
+ query_scrollbars(x);
+ query_size(x);
+ }
+ else if(s == scrollbars_symbol)
+ query_scrollbars(x);
+ else if(s == size_symbol)
+ query_size(x);
+ else
+ tkwidgets_query_options(x->receive_name, x->widget_id, 1, &(s->s_name));
+}
+
+static void textwidget_scrollbars(t_textwidget *x, t_float f)
+{
+ int value = (int) f;
+ if(value > 0)
+ draw_scrollbar(x);
+ else
+ erase_scrollbar(x);
+}
+
+static void textwidget_size(t_textwidget *x, t_float width, t_float height)
+{
+ DEBUG(post("textwidget_size"););
+ x->height = height;
+ x->width = width;
+ if(glist_isvisible(x->x_glist))
+ {
+ sys_vgui("%s itemconfigure %s -width %d -height %d\n",
+ x->canvas_id->s_name, x->window_tag->s_name, x->width, x->height);
+ tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag);
+ tkwidgets_draw_iolets((t_object*)x, x->x_glist,
+ x->canvas_id, x->iolets_tag, x->all_tag,
+ x->width, x->height);
+ canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet
+ }
+}
+
+/* -------------------- callback functions ---------------------------------- */
+
+static void textwidget_click_callback(t_textwidget *x, t_floatarg f)
+{
+ if( (x->x_glist->gl_edit) && (x->x_glist == x->x_canvas) )
+ {
+ textwidget_select((t_gobj *)x, x->x_glist, f);
+ }
}
static void textwidget_keyup_callback(t_textwidget *x, t_float f)
@@ -421,7 +533,7 @@ static void textwidget_keyup_callback(t_textwidget *x, t_float f)
snprintf(buf, 2, "%c", keycode);
output_symbol = gensym(buf);
} else
- switch(keycode)
+ switch(keycode) /* TODO find a way to make this work with all keysyms */
{
case 32: /* space */
output_symbol = space_symbol;
@@ -458,111 +570,20 @@ static void textwidget_keyup_callback(t_textwidget *x, t_float f)
outlet_symbol(x->x_status_outlet, output_symbol);
}
-static void textwidget_save(t_gobj *z, t_binbuf *b)
-{
- t_textwidget *x = (t_textwidget *)z;
-
- binbuf_addv(b, "ssiisiii", &s__X, gensym("obj"),
- x->x_obj.te_xpix, x->x_obj.te_ypix,
- atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)),
- x->width, x->height, x->have_scrollbars);
- binbuf_addbinbuf(b, x->options_binbuf);
- binbuf_addv(b, ";");
-}
-
-/* this function uses the selector as the Tk option and applies the whole
- * message directly to the Tk widget itself using Tk's "configure" */
-static void textwidget_set_option(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
-{
- if(s != &s_list)
- {
- t_binbuf *argument_binbuf = binbuf_new();
- char *argument_buffer;
- int buffer_length;
-
- binbuf_add(argument_binbuf, argc, argv);
- binbuf_gettext(argument_binbuf, &argument_buffer, &buffer_length);
- binbuf_free(argument_binbuf);
- argument_buffer[buffer_length] = 0;
- sys_vgui("%s configure -%s {%s} \n",
- x->widget_id->s_name, s->s_name, argument_buffer);
- tkwidgets_store_options(x->receive_name, x->tcl_namespace, x->widget_id,
- sizeof(textwidget_tk_options)/sizeof(char *),
- (char **)&textwidget_tk_options);
- }
-}
-
-static void textwidget_options(t_textwidget *x)
-{
- tkwidgets_list_options(x->x_status_outlet,
- sizeof(textwidget_tk_options)/sizeof(char *),
- (char **)&textwidget_tk_options);
-}
-
-static void query_scrollbars(t_textwidget *x)
-{
- t_atom state[2];
- SETSYMBOL(state, scrollbars_symbol);
- SETFLOAT(state + 1, (t_float)x->have_scrollbars);
- textwidget_query_callback(x, gensym("query_callback"), 2, state);
-}
-
-static void query_size(t_textwidget *x)
-{
- t_atom coords[3];
- SETSYMBOL(coords, size_symbol);
- SETFLOAT(coords + 1, (t_float)x->width);
- SETFLOAT(coords + 2, (t_float)x->height);
- textwidget_query_callback(x, gensym("query_callback"), 3, coords);
-}
-
-static void textwidget_query(t_textwidget *x, t_symbol *s)
+static void textwidget_output_callback(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
{
- post("textwidget_query %s", s->s_name);
- if(s == &s_)
- {
- tkwidgets_query_options(x->receive_name, x->widget_id,
- sizeof(textwidget_tk_options)/sizeof(char *),
- textwidget_tk_options);
- query_scrollbars(x);
- query_size(x);
- }
- else if(s == scrollbars_symbol)
- query_scrollbars(x);
- else if(s == size_symbol)
- query_size(x);
- else
- tkwidgets_query_options(x->receive_name, x->widget_id, 1, &(s->s_name));
+ outlet_list(x->x_data_outlet, s, argc, argv );
}
-static void textwidget_scrollbars(t_textwidget *x, t_float f)
+static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
{
- int value = (int) f;
- if(value > 0)
- draw_scrollbar(x);
+ t_symbol *tmp_symbol = atom_getsymbolarg(0, argc, argv);
+ if(tmp_symbol != &s_)
+ outlet_anything(x->x_status_outlet, tmp_symbol, argc - 1, argv + 1);
else
- erase_scrollbar(x);
-}
-
-static void textwidget_size(t_textwidget *x, t_float width, t_float height)
-{
- DEBUG(post("textwidget_size"););
- x->height = height;
- x->width = width;
- if(glist_isvisible(x->x_glist))
- {
- sys_vgui("%s itemconfigure %s -width %d -height %d\n",
- x->canvas_id->s_name, x->window_tag->s_name, x->width, x->height);
- tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag);
- tkwidgets_draw_iolets((t_object*)x, x->x_glist,
- x->canvas_id, x->iolets_tag, x->all_tag,
- x->width, x->height);
- canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet
- }
+ post("ERROR: textwidget_query_callback %s %d", s->s_name, argc);
}
-/* -------------------- callback functions ---------------------------------- */
-
static void textwidget_store_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
{
if(s != &s_)
@@ -574,40 +595,18 @@ static void textwidget_store_callback(t_textwidget *x, t_symbol *s, int argc, t_
post("ERROR: does this ever happen?");
}
-static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
-{
- t_symbol *tmp_symbol = atom_getsymbolarg(0, argc, argv);
- if(tmp_symbol != &s_)
- {
- post("tmp_symbol %s argc %d", tmp_symbol->s_name, argc);
- outlet_anything(x->x_status_outlet, tmp_symbol, argc - 1, argv + 1);
- }
- else
- {
- post("ERROR: textwidget_query_callback %s %d", s->s_name, argc);
- }
-}
-
-static void textwidget_click_callback(t_textwidget *x, t_floatarg f)
-{
- if( (x->x_glist->gl_edit) && (x->x_glist == x->x_canvas) )
- {
- textwidget_select((t_gobj *)x, x->x_glist, f);
- }
-}
-
static void textwidget_resize_click_callback(t_textwidget *x, t_floatarg f)
{
t_canvas *canvas = (glist_isvisible(x->x_glist) ? x->x_canvas : 0);
int button_state = (int)f;
- if (x->x_resizing && !button_state && canvas)
+ if(x->x_resizing && !button_state && canvas)
{
tkwidgets_draw_iolets((t_object*)x, canvas,
x->canvas_id, x->iolets_tag, x->all_tag,
x->width, x->height);
canvas_fixlinesfor(x->x_glist, (t_text *)x); // 2nd inlet
}
- if (!x->x_resizing && button_state)
+ else if(!x->x_resizing && button_state)
{
tkwidgets_erase_iolets(x->canvas_id, x->iolets_tag);
}
@@ -650,23 +649,15 @@ static void *textwidget_new(t_symbol *s, int argc, t_atom *argv)
x->x_selected = 0;
x->x_resizing = 0;
-
- if (argc < 3)
- {
- post("[text]: less than 3 arguments entered, default values used.");
- x->width = TEXT_DEFAULT_WIDTH;
- x->height = TEXT_DEFAULT_HEIGHT;
- x->have_scrollbars = 0;
- }
- else
- {
- x->width = atom_getint(argv);
- x->height = atom_getint(argv + 1);
- x->have_scrollbars = atom_getint(argv + 2);
- if(argc > 3)
- binbuf_add(x->options_binbuf, argc - 3, argv + 3);
- }
+ x->width = TEXT_DEFAULT_WIDTH;
+ x->height = TEXT_DEFAULT_HEIGHT;
+ x->have_scrollbars = 0;
+ if(argc > 0) x->width = atom_getint(argv);
+ if(argc > 1) x->height = atom_getint(argv + 1);
+ if(argc > 2) x->have_scrollbars = atom_getint(argv + 2);
+ if(argc > 3) binbuf_add(x->options_binbuf, argc - 3, argv + 3);
+
x->tcl_namespace = tkwidgets_gen_tcl_namespace((t_object*)x, s);
x->receive_name = tkwidgets_gen_callback_name(x->tcl_namespace);
pd_bind(&x->x_obj.ob_pd, x->receive_name);
@@ -686,10 +677,12 @@ void text_setup(void) {
textwidget_class = class_new(gensym("text"), (t_newmethod)textwidget_new,
(t_method)textwidget_free,sizeof(t_textwidget),
0, A_GIMME, 0);
-
+
+/* methods for atoms */
class_addbang(textwidget_class, (t_method)textwidget_bang_output);
class_addanything(textwidget_class, (t_method)textwidget_set_option);
+/* methods for pd space */
class_addmethod(textwidget_class, (t_method)textwidget_append,
gensym("append"), A_GIMME, 0);
class_addmethod(textwidget_class, (t_method)textwidget_clear,
@@ -708,21 +701,22 @@ void text_setup(void) {
gensym("size"), A_DEFFLOAT, A_DEFFLOAT, 0);
/* callbacks */
- class_addmethod(textwidget_class, (t_method)textwidget_store_callback,
- gensym("store_callback"), A_GIMME, 0);
- class_addmethod(textwidget_class, (t_method)textwidget_query_callback,
- gensym("query_callback"), A_GIMME, 0);
- class_addmethod(textwidget_class, (t_method)textwidget_output_callback,
- gensym("output"), A_GIMME, 0);
- class_addmethod(textwidget_class, (t_method)textwidget_keyup_callback,
- gensym("keyup"), A_DEFFLOAT, 0);
class_addmethod(textwidget_class, (t_method)textwidget_click_callback,
gensym("click"), A_FLOAT, 0);
+ class_addmethod(textwidget_class, (t_method)textwidget_keyup_callback,
+ gensym("keyup"), A_DEFFLOAT, 0);
+ class_addmethod(textwidget_class, (t_method)textwidget_output_callback,
+ gensym("output"), A_GIMME, 0);
+ class_addmethod(textwidget_class, (t_method)textwidget_query_callback,
+ gensym("query_callback"), A_GIMME, 0);
+ class_addmethod(textwidget_class, (t_method)textwidget_store_callback,
+ gensym("store_callback"), A_GIMME, 0);
class_addmethod(textwidget_class, (t_method)textwidget_resize_click_callback,
gensym("resize_click"), A_FLOAT, 0);
class_addmethod(textwidget_class, (t_method)textwidget_resize_motion_callback,
gensym("resize_motion"), A_FLOAT, A_FLOAT, 0);
+/* widget behavior */
textwidget_widgetbehavior.w_getrectfn = textwidget_getrect;
textwidget_widgetbehavior.w_displacefn = textwidget_displace;
textwidget_widgetbehavior.w_selectfn = textwidget_select;
@@ -730,8 +724,8 @@ void text_setup(void) {
textwidget_widgetbehavior.w_deletefn = textwidget_delete;
textwidget_widgetbehavior.w_visfn = textwidget_vis;
textwidget_widgetbehavior.w_clickfn = NULL;
- class_setwidget(textwidget_class,&textwidget_widgetbehavior);
- class_setsavefn(textwidget_class,&textwidget_save);
+ class_setwidget(textwidget_class, &textwidget_widgetbehavior);
+ class_setsavefn(textwidget_class, &textwidget_save);
/* commonly used symbols */
size_symbol = gensym("size");
@@ -746,5 +740,3 @@ void text_setup(void) {
up_symbol = gensym("up");
down_symbol = gensym("down");
}
-
-