Update of /cvsroot/pure-data/externals/bbogart/entry In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12148
Modified Files: entry.c makefile Log Message:
- cleaned up unused variables - added entry_free() function - added structure to support second outlet outputing each keystroke: - second outlet - keyup message/entry_keyup method
Index: entry.c =================================================================== RCS file: /cvsroot/pure-data/externals/bbogart/entry/entry.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** entry.c 12 Dec 2005 18:32:40 -0000 1.6 --- entry.c 24 Oct 2007 00:36:01 -0000 1.7 *************** *** 21,24 **** --- 21,29 ---- #include <string.h>
+ /* TODO: make one .x%x.c.s%x replacement into x->x_widget_name */ + /* TODO: make one .x%x.c replacement into x->x_canvas_name */ + /* 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 */
*************** *** 36,57 **** #endif
typedef struct _entry { ! t_object x_obj; ! ! t_glist * x_glist; ! int x_rect_width; ! int x_rect_height; ! t_symbol* x_sym; ! int x_height; ! int x_width; ! ! t_symbol* x_bgcolour; ! t_symbol* x_fgcolour; ! t_symbol* x_contents;
} t_entry;
/* widget helper functions */
--- 41,81 ---- #endif
+ #define BACKGROUNDCOLOR "grey70" + typedef struct _entry { ! t_object x_obj; ! ! t_glist * x_glist; ! int x_rect_width; ! int x_rect_height; ! t_symbol* x_receive_name_symbol; ! /* TODO: these all should be settable by messages */ ! int x_height; ! int x_width; ! ! t_int x_mousefocus; ! t_symbol* x_bgcolour; ! t_symbol* x_fgcolour; ! ! /* TODO: these all should be settable by messages ! t_symbol *x_font_face; ! t_float x_font_size; ! t_symbol *x_font_weight;
+ t_float x_border; + t_float x_highlightthickness; + t_symbol *x_relief; + */ + t_symbol* x_contents; + + t_outlet* x_data_outlet; + t_outlet* x_status_outlet; } t_entry;
+ + static t_class *entry_class; + /* widget helper functions */
*************** *** 70,73 **** --- 94,99 ---- int onset = text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH) * i / nplus; if (firsttime) + { + /* left outlet, for data */ sys_vgui(".x%x.c create rectangle %d %d %d %d -tags {%xo%d %xo}\n", glist_getcanvas(glist), *************** *** 75,83 **** --- 101,119 ---- onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_rect_height-1, x, i, x); + /* right outlet, for key status */ + /* sys_vgui(".x%x.c create rectangle %d %d %d %d -tags {%xo%d %xo}\n", + glist_getcanvas(glist), + onset, text_ypix(&x->x_obj, glist) + x->x_rect_height - 2, + onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_rect_height-1, + x, i, x); + */ + } else + { sys_vgui(".x%x.c coords %xo%d %d %d %d %d\n", glist_getcanvas(glist), x, i, onset, text_ypix(&x->x_obj, glist) + x->x_rect_height - 2, onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_rect_height-1); + } } /* inlets */ *************** *** 103,107 **** }
! static void draw_handle(t_entry *x, t_glist *glist, int firsttime) { int onset = text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH+2); --- 139,143 ---- }
! /* currently unused static void draw_handle(t_entry *x, t_glist *glist, int firsttime) { int onset = text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH+2); *************** *** 119,127 **** onset + IOWIDTH-2, text_ypix(&x->x_obj, glist) + x->x_rect_height-4); }
static void create_widget(t_entry *x, t_glist *glist) { - char text[MAXPDSTRING]; - int len,i; t_canvas *canvas=glist_getcanvas(glist); /* I guess this is for fine-tuning of the rect size based on width and height? */ --- 155,162 ---- onset + IOWIDTH-2, text_ypix(&x->x_obj, glist) + x->x_rect_height-4); } + */
static void create_widget(t_entry *x, t_glist *glist) { t_canvas *canvas=glist_getcanvas(glist); /* I guess this is for fine-tuning of the rect size based on width and height? */ *************** *** 136,142 **** sys_vgui("set %xw .x%x.c.s%x ; text $%xw -font {helvetica 10} -border 1 -highlightthickness 1 -relief sunken -bg "%s" -fg "%s" \n", x,canvas,x,x,x->x_bgcolour->s_name,x->x_fgcolour->s_name); ! sys_vgui("bind .x%x.c.s%x <Leave> {focus [winfo parent .x%x.c.s%x]} \n", canvas, x, canvas, x); ! sys_vgui("namespace eval entry%x {} \n", x); ! }
--- 171,178 ---- sys_vgui("set %xw .x%x.c.s%x ; text $%xw -font {helvetica 10} -border 1 -highlightthickness 1 -relief sunken -bg "%s" -fg "%s" \n", x,canvas,x,x,x->x_bgcolour->s_name,x->x_fgcolour->s_name); ! if(x->x_mousefocus) ! sys_vgui("bind .x%x.c.s%x <Leave> {focus [winfo parent .x%x.c.s%x]} \n", ! canvas, x, canvas, x); ! sys_vgui("namespace eval entry%p {} \n", x); }
*************** *** 167,172 **** static void entry_erase(t_entry* x,t_glist* glist) { - int n; - DEBUG(post("erase");) sys_vgui("destroy .x%x.c.s%x\n",glist_getcanvas(glist),x); --- 203,206 ---- *************** *** 176,181 **** /* inlets and outlets */
! sys_vgui(".x%x.c delete %xi\n",glist_getcanvas(glist),x); /* Added tag for all inlets of one instance */ ! sys_vgui(".x%x.c delete %xo\n",glist_getcanvas(glist),x); /* Added tag for all outlets of one instance */ sys_vgui(".x%x.c delete %xhandle\n",glist_getcanvas(glist),x,0); } --- 210,217 ---- /* inlets and outlets */
! /* Added tag for all inlets of one instance */ ! sys_vgui(".x%x.c delete %xi\n",glist_getcanvas(glist),x); ! sys_vgui(".x%x.c delete %xo\n",glist_getcanvas(glist),x); ! /* Added tag for all outlets of one instance */ sys_vgui(".x%x.c delete %xhandle\n",glist_getcanvas(glist),x,0); } *************** *** 224,229 **** t_entry *x = (t_entry *)z; if (state) { ! sys_vgui(".x%x.c create rectangle \ ! %d %d %d %d -tags %xSEL -outline blue\n", glist_getcanvas(glist), text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1, --- 260,264 ---- t_entry *x = (t_entry *)z; if (state) { ! sys_vgui(".x%x.c create rectangle %d %d %d %d -tags %xSEL -outline blue\n", glist_getcanvas(glist), text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1, *************** *** 239,246 **** static void entry_activate(t_gobj *z, t_glist *glist, int state) { ! /* What does this do, why commented out? t_text *x = (t_text *)z; t_rtext *y = glist_findrtext(glist, x); ! if (z->g_pd != gatom_class) rtext_activate(y, state);*/ }
--- 274,282 ---- static void entry_activate(t_gobj *z, t_glist *glist, int state) { ! /* this is currently unused t_text *x = (t_text *)z; t_rtext *y = glist_findrtext(glist, x); ! if (z->g_pd != gatom_class) rtext_activate(y, state); ! */ }
*************** *** 295,306 **** int i; t_symbol *tmp; ! sys_vgui(".x%x.c.s%x delete 0.0 end \n", x->x_glist, x); for(i=0; i<argc ; i++) { tmp = atom_getsymbol(argv+i); ! sys_vgui("lappend ::entry%x::list %s \n", x, tmp->s_name ); } ! sys_vgui(".x%x.c.s%x insert end $::entry%x::list ; unset ::entry%x::list \n", x->x_glist, x, x, x ); }
--- 331,344 ---- int i; t_symbol *tmp; ! ! tmp = s; /* this gets rid of the unused variable warning */ sys_vgui(".x%x.c.s%x delete 0.0 end \n", x->x_glist, x); for(i=0; i<argc ; i++) { tmp = atom_getsymbol(argv+i); ! sys_vgui("lappend ::entry%p::list %s \n", x, tmp->s_name ); } ! sys_vgui(".x%x.c.s%x insert end $::entry%p::list ; unset ::entry%p::list \n", ! x->x_glist, x, x, x ); }
*************** *** 315,319 **** static void entry_output(t_entry* x, t_symbol *s, int argc, t_atom *argv) { ! outlet_list(x->x_obj.ob_outlet, s, argc, argv ); }
--- 353,357 ---- static void entry_output(t_entry* x, t_symbol *s, int argc, t_atom *argv) { ! outlet_list(x->x_data_outlet, s, argc, argv ); }
*************** *** 327,337 **** sys_vgui("pd [concat entry%p output [.x%x.c.s%x get 0.0 end] \;]\n", x, x->x_glist, x); */
! sys_vgui("bind .x%x.c.s%x <Leave> {focus [winfo parent .x%x.c.s%x]} \n", x->x_glist, x, x->x_glist, x); } -
static void entry_save(t_gobj *z, t_binbuf *b) { - int i; t_entry *x = (t_entry *)z;
--- 365,385 ---- sys_vgui("pd [concat entry%p output [.x%x.c.s%x get 0.0 end] \;]\n", x, x->x_glist, x); */
! if(x->x_mousefocus) ! sys_vgui("bind .x%x.c.s%x <Leave> {focus [winfo parent .x%x.c.s%x]} \n", ! x->x_glist, x, x->x_glist, x); ! } ! ! static void entry_keyup(t_entry *x, t_symbol *s) ! { ! outlet_symbol(x->x_status_outlet, s); ! } ! ! static void entry_mousefocus(t_entry *x, t_float f) ! { ! x->x_mousefocus = (t_int) f; }
static void entry_save(t_gobj *z, t_binbuf *b) { t_entry *x = (t_entry *)z;
*************** *** 356,373 **** }
! static t_class *entry_class; !
static void *entry_new(t_symbol *s, int argc, t_atom *argv) { t_entry *x = (t_entry *)pd_new(entry_class); - int i; char buf[256]; ! /*x->x_glist = (t_glist*)NULL;*/ /*x->x_glist = canvas_getcurrent();*/
- x->x_height = 1; if (argc < 4) --- 404,422 ---- }
! static void entry_free(t_entry *x) ! { ! pd_unbind(&x->x_obj.ob_pd, x->x_receive_name_symbol); ! }
static void *entry_new(t_symbol *s, int argc, t_atom *argv) { t_entry *x = (t_entry *)pd_new(entry_class); char buf[256]; ! /*x->x_glist = (t_glist*)NULL;*/ /*x->x_glist = canvas_getcurrent();*/
x->x_height = 1; + x->x_mousefocus = 1; if (argc < 4) *************** *** 394,410 ****
/* Bind the recieve "entry%p" to the widget instance*/ ! sprintf(buf,"entry%p",x); ! x->x_sym = gensym(buf); ! pd_bind(&x->x_obj.ob_pd, x->x_sym); ! outlet_new(&x->x_obj, &s_float); return (x); }
void entry_setup(void) { ! entry_class = class_new(gensym("entry"), (t_newmethod)entry_new, 0, ! sizeof(t_entry),0,A_GIMME,0); class_addbang(entry_class, (t_method)entry_bang_output); class_addmethod(entry_class, (t_method)entry_output, --- 443,470 ----
/* Bind the recieve "entry%p" to the widget instance*/ ! snprintf(buf,MAXPDSTRING,"entry%p",x); ! x->x_receive_name_symbol = gensym(buf); ! pd_bind(&x->x_obj.ob_pd, x->x_receive_name_symbol); ! x->x_data_outlet = outlet_new(&x->x_obj, &s_float); ! x->x_status_outlet = outlet_new(&x->x_obj, &s_symbol); return (x); }
void entry_setup(void) { ! entry_class = class_new(gensym("entry"), (t_newmethod)entry_new, ! (t_method)entry_free, sizeof(t_entry),0,A_GIMME,0); class_addbang(entry_class, (t_method)entry_bang_output); + + class_addmethod(entry_class, (t_method)entry_keyup, + gensym("keyup"), + A_DEFSYMBOL, + 0); + + class_addmethod(entry_class, (t_method)entry_mousefocus, + gensym("mousefocus"), + A_DEFFLOAT, + 0); class_addmethod(entry_class, (t_method)entry_output,
Index: makefile =================================================================== RCS file: /cvsroot/pure-data/externals/bbogart/entry/makefile,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** makefile 23 Aug 2005 12:23:32 -0000 1.2 --- makefile 24 Oct 2007 00:36:01 -0000 1.3 *************** *** 53,58 ****
LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ ! -Wall -W -Wshadow -Wstrict-prototypes -Werror \ ! -Wno-unused -Wno-parentheses -Wno-switch
LINUXINCLUDE = -I../../src -I../../../pd/src --- 53,58 ----
LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \ ! -Wall -W -Wshadow -Wstrict-prototypes !
LINUXINCLUDE = -I../../src -I../../../pd/src *************** *** 70,79 **** .SUFFIXES: .pd_darwin
! DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \ ! -Wno-unused -Wno-parentheses -Wno-switch
.c.pd_darwin: cc $(DARWINCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c ! cc -bundle -undefined suppress -flat_namespace -o $*.pd_darwin $*.o rm -f $*.o
--- 70,78 ---- .SUFFIXES: .pd_darwin
! DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes
.c.pd_darwin: cc $(DARWINCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c ! cc -bundle -bundle_loader ../../../pd/bin/pd -o $*.pd_darwin $*.o rm -f $*.o