From d02dd7ff46792abf73b3219a2532f396e7394914 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 30 Oct 2007 03:59:52 +0000 Subject: changed [add( to [append( and added [key( method for inputting individual keys; removed mousefocus since I found a fix inside u_main.tk -> pdtk_canvas_click svn path=/trunk/externals/bbogart/; revision=8904 --- entry/entry.c | 63 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 15 deletions(-) (limited to 'entry/entry.c') diff --git a/entry/entry.c b/entry/entry.c index d5cf4c8..0339d4f 100644 --- a/entry/entry.c +++ b/entry/entry.c @@ -21,12 +21,9 @@ #include #include -/* TODO: make "display only" option, to force box to never accept focus */ -/* TODO: make focus option only accept regular and shifted chars, not Cmd, Alt, Ctrl */ -/* TODO: make entry_save include whole classname, including namespace prefix */ +/* TODO: get Ctrl-A working to select all */ /* TODO: make [size( message redraw object */ /* TODO: set message doesnt work with a loadbang */ -/* TODO: make message to add a single character to the existing text */ /* TODO: complete inlet draw/erase logic */ #ifdef _MSC_VER @@ -40,7 +37,7 @@ #define BACKGROUNDCOLOR "grey70" -#define DEBUG(x) x +#define DEBUG(x) typedef struct _entry { @@ -265,10 +262,6 @@ static void create_widget(t_entry *x, t_glist *glist) canvas, x, x->x_receive_name->s_name);); sys_vgui("bind .x%x.c.s%x.text {+pd %s keyup %%N \\;} \n", canvas, x, x->x_receive_name->s_name); - DEBUG(post("bind .x%x.c.s%x.text {focus [winfo parent .x%x.c.s%x]} \n", - canvas, x, canvas, x);); - sys_vgui("bind .x%x.c.s%x.text {focus [winfo parent .x%x.c.s%x]} \n", - canvas, x, canvas, x); DEBUG(post("pdtk_standardkeybindings .x%x.c.s%x.text \n", canvas, x);); sys_vgui("pdtk_standardkeybindings .x%x.c.s%x.text \n", canvas, x); } @@ -422,9 +415,9 @@ static void entry_vis(t_gobj *z, t_glist *glist, int vis) } } -static void entry_add(t_entry* x, t_symbol *s, int argc, t_atom *argv) +static void entry_append(t_entry* x, t_symbol *s, int argc, t_atom *argv) { - DEBUG(post("entry_add");); + DEBUG(post("entry_append");); int i; t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */ t_float tmp_float; @@ -454,6 +447,41 @@ static void entry_add(t_entry* x, t_symbol *s, int argc, t_atom *argv) sys_vgui(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x ); } +static void entry_key(t_entry* x, t_symbol *s, int argc, t_atom *argv) +{ + DEBUG(post("entry_key");); + t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */ + t_int tmp_int; + + tmp_symbol = atom_getsymbolarg(0, argc, argv); + if(tmp_symbol == &s_) + { + tmp_int = (t_int) atom_getfloatarg(0, argc , argv); + if(tmp_int < 10) + { + DEBUG(post(".x%x.c.s%x.text insert end %d\n", x->x_glist, x, tmp_int);); + sys_vgui(".x%x.c.s%x.text insert end %d\n", x->x_glist, x, tmp_int); + } + else if(tmp_int == 10) + { + DEBUG(post(".x%x.c.s%x.text insert end {\n}\n", x->x_glist, x);); + sys_vgui(".x%x.c.s%x.text insert end {\n}\n", x->x_glist, x); + } + else + { + DEBUG(post(".x%x.c.s%x.text insert end [format \"%c\" %d]\n", x->x_glist, x, tmp_int);); + sys_vgui(".x%x.c.s%x.text insert end [format \"%c\" %d]\n", x->x_glist, x, tmp_int); + } + } + else + { + DEBUG(post(".x%x.c.s%x.text insert end %s\n", x->x_glist, x, tmp_symbol->s_name );); + sys_vgui(".x%x.c.s%x.text insert end %s\n", x->x_glist, x, tmp_symbol->s_name ); + } + DEBUG(post(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x );); + sys_vgui(".x%x.c.s%x.text yview end-2char \n", x->x_glist, x ); +} + /* Clear the contents of the text widget */ static void entry_clear(t_entry* x) { @@ -468,7 +496,7 @@ static void entry_set(t_entry* x, t_symbol *s, int argc, t_atom *argv) int i; entry_clear(x); - entry_add(x, s, argc, argv); + entry_append(x, s, argc, argv); } /* Output the symbol */ @@ -723,8 +751,13 @@ void entry_setup(void) { A_GIMME, 0); - class_addmethod(entry_class, (t_method)entry_add, - gensym("add"), + class_addmethod(entry_class, (t_method)entry_append, + gensym("append"), + A_GIMME, + 0); + + class_addmethod(entry_class, (t_method)entry_key, + gensym("key"), A_GIMME, 0); @@ -755,7 +788,7 @@ void entry_setup(void) { up_symbol = gensym("up"); down_symbol = gensym("down"); - post("Text v0.1 Ben Bogart.\nCVS: $Revision: 1.21 $ $Date: 2007-10-29 17:44:23 $"); + post("Text v0.1 Ben Bogart.\nCVS: $Revision: 1.22 $ $Date: 2007-10-30 03:59:52 $"); } -- cgit v1.2.1