[PD-cvs] externals/tkwidgets text-help.pd, 1.1, 1.2 text-test.pd, 1.2, 1.3 text.c, 1.3, 1.4

Hans-Christoph Steiner eighthave at users.sourceforge.net
Wed Nov 14 08:49:28 CET 2007


Update of /cvsroot/pure-data/externals/tkwidgets
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26626

Modified Files:
	text-help.pd text-test.pd text.c 
Log Message:

- renamed [scrollbar( to [scrollbars( since there should be a bottom one too

- got full querying working, including C-side attributes

- starting working on store/restore/save mechanism, but was stymied by how to
  trigger the store_options() callback so that the stuff can be saved.

- removed [entry]'s old attribute storage where redundant



Index: text-test.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/tkwidgets/text-test.pd,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** text-test.pd	14 Nov 2007 06:16:12 -0000	1.2
--- text-test.pd	14 Nov 2007 07:49:26 -0000	1.3
***************
*** 1,50 ****
! #N canvas 165 195 721 672 10;
! #X obj 130 117 text 130 60;
  #X msg 47 29 size 100 100;
! #X obj 48 540 text 130 60;
  #X msg 130 30 size 400 200;
! #X obj 310 11 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
  1;
! #X msg 309 31 scrollbar \$1;
! #X msg 376 479;
! #X obj 310 269 hcs/sys_gui;
! #X msg 310 221 puts stderr [concat [.x6a74d0.c.frame6a7af0.text6a7af0
! find all]];
! #X msg 23 315 highlightthickness \$1;
! #X obj 26 289 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
! #X msg 76 402 padx \$1;
! #X obj 79 381 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
! #X msg 132 515 font "Lucida Sans" 18 bold;
! #X msg 272 425 size 200 50;
! #X msg 89 490 font Arial 16;
! #X obj 200 612 print QUERY;
! #X floatatom 309 620 5 0 0 0 - - -;
! #X obj 309 596 route highlightthickness font;
! #X obj 396 624 pddp/print;
! #X msg 421 372 width 8;
! #X obj 309 642 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
  -1 -1;
! #X msg 114 435 query highlightthickness;
! #X msg 143 458 query;
! #X connect 0 1 6 0;
  #X connect 1 0 0 0;
! #X connect 2 1 18 0;
  #X connect 3 0 0 0;
! #X connect 4 0 5 0;
! #X connect 5 0 0 0;
! #X connect 8 0 7 0;
! #X connect 9 0 2 0;
! #X connect 10 0 9 0;
  #X connect 11 0 2 0;
! #X connect 12 0 11 0;
! #X connect 13 0 2 0;
! #X connect 14 0 2 0;
! #X connect 15 0 2 0;
! #X connect 17 0 21 0;
! #X connect 18 0 17 0;
! #X connect 18 1 19 0;
  #X connect 20 0 2 0;
- #X connect 22 0 2 0;
- #X connect 23 0 2 0;
--- 1,45 ----
! #N canvas 171 184 721 672 10;
! #X obj 256 77 text 400 200 1;
  #X msg 47 29 size 100 100;
! #X obj 48 470 text 130 60 0;
  #X msg 130 30 size 400 200;
! #X obj 310 11 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
  1;
! #X msg 655 333;
! #X msg 23 245 highlightthickness \$1;
! #X obj 26 219 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
! #X msg 49 290 padx \$1;
! #X obj 52 269 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
  -1 -1 0 1;
! #X msg 110 405 font "Lucida Sans" 18 bold;
! #X msg 124 429 font Arial 16;
! #X obj 200 542 print QUERY;
! #X floatatom 309 550 5 0 0 0 - - -;
! #X obj 309 526 route highlightthickness font;
! #X obj 396 554 pddp/print;
! #X obj 309 572 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
  -1 -1;
! #X msg 68 321 query highlightthickness;
! #X msg 78 345 query;
! #X msg 309 31 scrollbars \$1;
! #X msg 85 367 query size;
! #X connect 0 1 5 0;
  #X connect 1 0 0 0;
! #X connect 2 1 14 0;
! #X connect 2 1 12 0;
  #X connect 3 0 0 0;
! #X connect 4 0 19 0;
! #X connect 6 0 2 0;
! #X connect 7 0 6 0;
! #X connect 8 0 2 0;
! #X connect 9 0 8 0;
! #X connect 10 0 2 0;
  #X connect 11 0 2 0;
! #X connect 13 0 16 0;
! #X connect 14 0 13 0;
! #X connect 14 1 15 0;
! #X connect 17 0 2 0;
! #X connect 18 0 2 0;
! #X connect 19 0 0 0;
  #X connect 20 0 2 0;

Index: text.c
===================================================================
RCS file: /cvsroot/pure-data/externals/tkwidgets/text.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** text.c	14 Nov 2007 06:16:12 -0000	1.3
--- text.c	14 Nov 2007 07:49:26 -0000	1.4
***************
*** 26,29 ****
--- 26,31 ----
  /* TODO: get Ctrl-A working to select all */
  /* TODO: set message doesnt work with a loadbang */
+ /* TODO: add size to query and save */
+ /* TODO: add scrollbars to query and save */
  
  
***************
*** 48,66 ****
      t_symbol*  receive_name;
  
!     int        optionc;
!     t_atom*    optionv;
  
!     int        x_height;
!     int        x_width;
!     int        x_resizing;
!     
!     t_symbol*  x_font_face;
!     t_int      x_font_size;
!     t_symbol*  x_font_weight;
  
!     t_float    x_border;
!     t_symbol*  x_relief;
!     t_int      x_have_scrollbar;
!     t_int      x_selected;
      
      /* IDs for Tk widgets */
--- 50,61 ----
      t_symbol*  receive_name;
  
!     t_binbuf*  options_binbuf;
  
!     int        size_x;
!     int        size_y;
!     int        x_have_scrollbars;
  
!     int        x_resizing;
!     int        x_selected;
      
      /* IDs for Tk widgets */
***************
*** 120,123 ****
--- 115,120 ----
  
  /* move these to tkwidgets.c */
+ static t_symbol *scrollbars_symbol;
+ static t_symbol *size_symbol;
  static t_symbol *backspace_symbol;
  static t_symbol *return_symbol;
***************
*** 141,146 ****
  static void textwidget_save(t_gobj *z, t_binbuf *b);
  
  
! static t_widgetbehavior   textwidget_widgetbehavior = {
  w_getrectfn:  textwidget_getrect,
  w_displacefn: textwidget_displace,
--- 138,145 ----
  static void textwidget_save(t_gobj *z, t_binbuf *b);
  
+ static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv);
  
! 
! static t_widgetbehavior textwidget_widgetbehavior = {
  w_getrectfn:  textwidget_getrect,
  w_displacefn: textwidget_displace,
***************
*** 154,175 ****
  /* widget helper functions */
  
! static void save_options(t_textwidget *x, int argc, char** argv)
  {
      int i;
      post("total options: %d", argc);
      for(i = 0; i < argc; i++)
      {
! //        sys_vgui("lappend ::%s::optionsList %s \n", x->tcl_namespace, argv[i]);
!         sys_vgui("pd [concat %s query_callback %s [%s cget -%s] \\;]\n",
!                  x->receive_name->s_name, argv[i], x->text_id, argv[i]);
!         post("option %d: %s", i, argv[i]);
      }
! /*     sys_vgui("foreach ::%s::option $::%s::optionsList {\n",x->tcl_namespace,x->tcl_namespace); */
! /*     sys_vgui("pd [concat %s query_callback $::%s::option [%s cget [format \"-%%s\" $::%s::option]] \\;]\n", */
! /*              x->receive_name->s_name, x->tcl_namespace, x->text_id, x->tcl_namespace); */
! //    sys_vgui("puts stderr [concat %s query_callback $::%s::option [%s cget [format \"-%%s\" $::%s::option]] \\;] \n", 
! //             x->receive_name->s_name, x->tcl_namespace, x->text_id, x->tcl_namespace);
! /*     sys_gui("}\n"); */
! /*     sys_vgui("unset ::%s::optionsList \n", x->tcl_namespace);  */
  }
  
--- 153,178 ----
  /* widget helper functions */
  
! static void store_options(t_textwidget *x)
  {
+     // build list then send the whole shebang to store_callback
      int i;
+     int argc = sizeof(textwidget_tk_options)/sizeof(char *); 
      post("total options: %d", argc);
      for(i = 0; i < argc; i++)
      {
!         sys_vgui("lappend ::%s::store_list -%s \n", 
!                  x->tcl_namespace, textwidget_tk_options[i]);
!         sys_vgui("lappend ::%s::store_list [%s cget -%s] \n", 
!                  x->tcl_namespace, x->text_id, textwidget_tk_options[i]);
!         post("option %d: %s", i, textwidget_tk_options[i]);
      }
!     sys_vgui("pd [concat %s store_callback $::%s::store_list \\;]\n",
!              x->receive_name->s_name, x->tcl_namespace);
!     sys_vgui("unset ::%s::store_list \n", x->tcl_namespace);  
! }
! 
! static void restore_options(t_textwidget *x)
! {
!     // TODO restore options from x->options_binbuf
  }
  
***************
*** 177,181 ****
  {
      int i;
-     post("total options: %d", argc);
      for(i = 0; i < argc; i++)
          sys_vgui("pd [concat %s query_callback %s [%s cget -%s] \\;]\n",
--- 180,183 ----
***************
*** 225,229 ****
  {
      post("calculate_onset");
!     return(text_xpix(&x->x_obj, glist) + (x->x_width - IOWIDTH)    \
             * current_iolet / (total_iolets == 1 ? 1 : total_iolets - 1));
  }
--- 227,231 ----
  {
      post("calculate_onset");
!     return(text_xpix(&x->x_obj, glist) + (x->size_x - IOWIDTH)    \
             * current_iolet / (total_iolets == 1 ? 1 : total_iolets - 1));
  }
***************
*** 247,252 ****
          onset = calculate_onset(x, glist, i, total_outlets);
          sys_vgui("%s create rectangle %d %d %d %d -tags {%xo%d %xo %s}\n",
!                  x->canvas_id, onset, text_ypix(&x->x_obj, glist) + x->x_height,
!                  onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_height + 2,
                   x, i, x, x->all_tag);
      }
--- 249,254 ----
          onset = calculate_onset(x, glist, i, total_outlets);
          sys_vgui("%s create rectangle %d %d %d %d -tags {%xo%d %xo %s}\n",
!                  x->canvas_id, onset, text_ypix(&x->x_obj, glist) + x->size_y,
!                  onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->size_y + 2,
                   x, i, x, x->all_tag);
      }
***************
*** 266,270 ****
      sys_vgui("pack %s -side right -fill y -before %s \n",
               x->scrollbar_id, x->text_id);
!     x->x_have_scrollbar = 1;
  }
  
--- 268,272 ----
      sys_vgui("pack %s -side right -fill y -before %s \n",
               x->scrollbar_id, x->text_id);
!     x->x_have_scrollbars = 1;
  }
  
***************
*** 272,276 ****
  {
      sys_vgui("pack forget %s \n", x->scrollbar_id);
!     x->x_have_scrollbar = 0;
  }
  
--- 274,278 ----
  {
      sys_vgui("pack forget %s \n", x->scrollbar_id);
!     x->x_have_scrollbars = 0;
  }
  
***************
*** 327,335 ****
      sys_vgui("destroy %s\n", x->frame_id);
      sys_vgui("frame %s \n", x->frame_id);
!     sys_vgui("text %s -font {%s %d %s} -border 1 \
      -highlightthickness 1 -relief sunken -bg \"%s\" -fg \"%s\"  \
      -yscrollcommand {%s set} \n",
               x->text_id, 
-              x->x_font_face->s_name, x->x_font_size, x->x_font_weight->s_name,
               DEFAULT_COLOR, "black",
               x->scrollbar_id);
--- 329,336 ----
      sys_vgui("destroy %s\n", x->frame_id);
      sys_vgui("frame %s \n", x->frame_id);
!     sys_vgui("text %s -border 1 \
      -highlightthickness 1 -relief sunken -bg \"%s\" -fg \"%s\"  \
      -yscrollcommand {%s set} \n",
               x->text_id, 
               DEFAULT_COLOR, "black",
               x->scrollbar_id);
***************
*** 353,361 ****
          create_widget(x);	
          textwidget_draw_inlets(x, glist, firsttime, TOTAL_INLETS, TOTAL_OUTLETS);
!         if(x->x_have_scrollbar) draw_scrollbar(x);
          sys_vgui("%s create window %d %d -anchor nw -window %s    \
                    -tags {%s %s} -width %d -height %d \n", x->canvas_id,
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),
!                  x->frame_id, x->window_tag, x->all_tag, x->x_width, x->x_height);
      }     
      else 
--- 354,362 ----
          create_widget(x);	
          textwidget_draw_inlets(x, glist, firsttime, TOTAL_INLETS, TOTAL_OUTLETS);
!         if(x->x_have_scrollbars) draw_scrollbar(x);
          sys_vgui("%s create window %d %d -anchor nw -window %s    \
                    -tags {%s %s} -width %d -height %d \n", x->canvas_id,
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist),
!                  x->frame_id, x->window_tag, x->all_tag, x->size_x, x->size_y);
      }     
      else 
***************
*** 390,395 ****
      *xp1 = text_xpix(&x->x_obj, owner);
      *yp1 = text_ypix(&x->x_obj, owner);
!     *xp2 = *xp1 + x->x_width;
!     *yp2 = *yp1 + x->x_height + 2; // add 2 to give space for outlets
  }
  
--- 391,396 ----
      *xp1 = text_xpix(&x->x_obj, owner);
      *yp1 = text_ypix(&x->x_obj, owner);
!     *xp2 = *xp1 + x->size_x;
!     *yp2 = *yp1 + x->size_y + 2; // add 2 to give space for outlets
  }
  
***************
*** 407,412 ****
  /*        sys_vgui("%s coords %s %d %d %d %d\n", x->canvas_id, x->all_tag,
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1,
!                  text_xpix(&x->x_obj, glist) + x->x_width, 
!                  text_ypix(&x->x_obj, glist) + x->x_height-2);*/
  //        textwidget_drawme(x, glist, 0);
          canvas_fixlinesfor(glist_getcanvas(glist), (t_text*) x);
--- 408,413 ----
  /*        sys_vgui("%s coords %s %d %d %d %d\n", x->canvas_id, x->all_tag,
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1,
!                  text_xpix(&x->x_obj, glist) + x->size_x, 
!                  text_ypix(&x->x_obj, glist) + x->size_y-2);*/
  //        textwidget_drawme(x, glist, 0);
          canvas_fixlinesfor(glist_getcanvas(glist), (t_text*) x);
***************
*** 574,583 ****
  }
  
! static void textwidget_output(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
! {
!     outlet_list(x->x_data_outlet, s, argc, argv );
! }
! 
! /* Pass the contents of the text widget onto the textwidget_output fuction above */
  static void textwidget_bang_output(t_textwidget* x)
  {
--- 575,579 ----
  }
  
! /* Pass the contents of the text widget onto the textwidget_output_callback fuction above */
  static void textwidget_bang_output(t_textwidget* x)
  {
***************
*** 588,591 ****
--- 584,592 ----
  }
  
+ static void textwidget_output_callback(t_textwidget* x, t_symbol *s, int argc, t_atom *argv)
+ {
+     outlet_list(x->x_data_outlet, s, argc, argv );
+ }
+ 
  static void textwidget_keyup_callback(t_textwidget *x, t_float f)
  {
***************
*** 641,648 ****
      t_textwidget *x = (t_textwidget *)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->x_width, x->x_height);
  }
  
--- 642,649 ----
      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->size_x, x->size_y, x->x_have_scrollbars);
  }
  
***************
*** 665,678 ****
  }
  
  static void textwidget_query(t_textwidget *x, t_symbol *s)
  {
      post("textwidget_query %s", s->s_name);
      if(s == &s_)
          query_options(x, sizeof(textwidget_tk_options)/sizeof(char *), textwidget_tk_options);
      else
          query_options(x, 1, &(s->s_name));
  }
  
! static void textwidget_scrollbar(t_textwidget *x, t_float f)
  {
      if(f > 0)
--- 666,704 ----
  }
  
+ static void query_scrollbars(t_textwidget *x)
+ {
+     t_atom state[2];
+     SETSYMBOL(state, scrollbars_symbol);
+     SETFLOAT(state + 1, (t_float)x->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->size_x);
+     SETFLOAT(coords + 2, (t_float)x->size_y);
+     textwidget_query_callback(x, gensym("query_callback"), 3, coords);
+ }
+ 
  static void textwidget_query(t_textwidget *x, t_symbol *s)
  {
      post("textwidget_query %s", s->s_name);
      if(s == &s_)
+     {
          query_options(x, 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
          query_options(x, 1, &(s->s_name));
  }
  
! static void textwidget_scrollbars(t_textwidget *x, t_float f)
  {
      if(f > 0)
***************
*** 682,709 ****
  }
  
- static void textwidget_fontsize(t_textwidget *x, t_float font_size)
- {
-     DEBUG(post("textwidget_fontsize"););
-     if(font_size > 8) 
-     {
-         x->x_font_size = (t_int)font_size;
-         sys_vgui("%s configure -font {%s %d %s} \n", 
-                  x->text_id,
-                  x->x_font_face->s_name, x->x_font_size, 
-                  x->x_font_weight->s_name);
-     }
-     else
-         pd_error(x,"textwidget: invalid font size: %f",font_size);
- }
- 
  static void textwidget_size(t_textwidget *x, t_float width, t_float height)
  {
      DEBUG(post("textwidget_size"););
!     x->x_height = height;
!     x->x_width = width;
      if(glist_isvisible(x->x_glist))
      {
          sys_vgui("%s itemconfigure %s -width %d -height %d\n",
!                  x->canvas_id, x->window_tag, x->x_width, x->x_height);
          erase_inlets(x);
          textwidget_draw_inlets(x, x->x_glist, 1, TOTAL_INLETS, TOTAL_OUTLETS);
--- 708,720 ----
  }
  
  static void textwidget_size(t_textwidget *x, t_float width, t_float height)
  {
      DEBUG(post("textwidget_size"););
!     x->size_y = height;
!     x->size_x = width;
      if(glist_isvisible(x->x_glist))
      {
          sys_vgui("%s itemconfigure %s -width %d -height %d\n",
!                  x->canvas_id, x->window_tag, x->size_x, x->size_y);
          erase_inlets(x);
          textwidget_draw_inlets(x, x->x_glist, 1, TOTAL_INLETS, TOTAL_OUTLETS);
***************
*** 714,717 ****
--- 725,734 ----
  /* callback functions */
  
+ static void textwidget_store_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
+ {
+     if(s != &s_)
+         binbuf_restore(x->options_binbuf, argc, argv);
+ }
+ 
  static void textwidget_query_callback(t_textwidget *x, t_symbol *s, int argc, t_atom *argv)
  {
***************
*** 763,771 ****
          if (glist_isvisible(x->x_glist))
          {
!             x->x_width += dx;
!             x->x_height += dy;
              sys_vgui("%s itemconfigure %s -width %d -height %d\n",
                       x->canvas_id, x->window_tag, 
!                      x->x_width, x->x_height);
              sys_vgui("%s move RSZ %d %d\n",
                       x->canvas_id, dx, dy);
--- 780,788 ----
          if (glist_isvisible(x->x_glist))
          {
!             x->size_x += dx;
!             x->size_y += dy;
              sys_vgui("%s itemconfigure %s -width %d -height %d\n",
                       x->canvas_id, x->window_tag, 
!                      x->size_x, x->size_y);
              sys_vgui("%s move RSZ %d %d\n",
                       x->canvas_id, dx, dy);
***************
*** 785,805 ****
      char buf[MAXPDSTRING];
      
!     x->x_height = 1;
!     x->x_font_face = gensym("helvetica");
!     x->x_font_size = 10;
!     x->x_font_weight = gensym("normal");
!     x->x_have_scrollbar = 0;
      x->x_selected = 0;
  	
! 	if (argc < 4)
  	{
! 		post("textwidget: You must enter at least 4 arguments. Default values used.");
! 		x->x_width = TEXT_DEFAULT_WIDTH;
! 		x->x_height = TEXT_DEFAULT_HEIGHT;
! 		
! 	} else {
! 		/* Copy args into structure */
! 		x->x_width = atom_getint(argv);
! 		x->x_height = atom_getint(argv+1);
  	}	
  
--- 802,827 ----
      char buf[MAXPDSTRING];
      
!     x->options_binbuf = binbuf_new();
! 
      x->x_selected = 0;
+     x->x_resizing = 0;
  	
! 	if (argc < 3)
  	{
! 		post("[text]: less than 3 arguments entered, default values used.");
! 		x->size_x = TEXT_DEFAULT_WIDTH;
! 		x->size_y = TEXT_DEFAULT_HEIGHT;
!         x->x_have_scrollbars = 0;
! 	} 
!     else 
!     {
! 		x->size_x = atom_getint(argv);
! 		x->size_y = atom_getint(argv + 1);
!         x->x_have_scrollbars = atom_getint(argv + 2);
!         if(argc > 3) 
!         {
!             binbuf_add(x->options_binbuf, argc - 3, argv + 3);
!             restore_options(x);
!         }
  	}	
  
***************
*** 829,843 ****
  	class_addanything(textwidget_class, (t_method)textwidget_option);
  
- 
      class_addmethod(textwidget_class, (t_method)textwidget_query,
                      gensym("query"), A_DEFSYMBOL, 0);
!     class_addmethod(textwidget_class, (t_method)textwidget_scrollbar,
!                     gensym("scrollbar"), A_DEFFLOAT, 0);
      class_addmethod(textwidget_class, (t_method)textwidget_size,
                      gensym("size"), A_DEFFLOAT, A_DEFFLOAT, 0);
-     class_addmethod(textwidget_class, (t_method)textwidget_fontsize,
-                     gensym("fontsize"), A_DEFFLOAT, 0);
- 	class_addmethod(textwidget_class, (t_method)textwidget_output,
-                     gensym("output"), A_GIMME, 0);
  	class_addmethod(textwidget_class, (t_method)textwidget_set,
                      gensym("set"), A_GIMME, 0);
--- 851,860 ----
  	class_addanything(textwidget_class, (t_method)textwidget_option);
  
      class_addmethod(textwidget_class, (t_method)textwidget_query,
                      gensym("query"), A_DEFSYMBOL, 0);
!     class_addmethod(textwidget_class, (t_method)textwidget_scrollbars,
!                     gensym("scrollbars"), A_DEFFLOAT, 0);
      class_addmethod(textwidget_class, (t_method)textwidget_size,
                      gensym("size"), A_DEFFLOAT, A_DEFFLOAT, 0);
  	class_addmethod(textwidget_class, (t_method)textwidget_set,
                      gensym("set"), A_GIMME, 0);
***************
*** 849,854 ****
--- 866,875 ----
                      gensym("clear"), 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);
***************
*** 864,867 ****
--- 885,890 ----
  
  /* commonly used symbols */
+     size_symbol = gensym("size");
+     scrollbars_symbol = gensym("scrollbars");
      backspace_symbol = gensym("backspace");
      return_symbol = gensym("return");

Index: text-help.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/tkwidgets/text-help.pd,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** text-help.pd	14 Nov 2007 02:53:03 -0000	1.1
--- text-help.pd	14 Nov 2007 07:49:26 -0000	1.2
***************
*** 1,4 ****
  #N canvas 343 45 785 704 10;
! #X obj 52 -48 text 130 60;
  #X obj 53 -198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
--- 1,4 ----
  #N canvas 343 45 785 704 10;
! #X obj 52 -48 text 130 60 0;
  #X obj 53 -198 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
  -1;
***************
*** 6,10 ****
  #X msg 89 -183 clear;
  #X msg 107 -162 set one two three four five six;
! #X obj 36 137 text 130 60;
  #X obj 231 -2 select return;
  #X obj 59 61 pddp/print;
--- 6,10 ----
  #X msg 89 -183 clear;
  #X msg 107 -162 set one two three four five six;
! #X obj 36 137 text 130 60 0;
  #X obj 231 -2 select return;
  #X obj 59 61 pddp/print;
***************
*** 15,19 ****
  #X msg 118 -139 append seven eight nine;
  #X msg 122 -119 append ten eleven.;
! #X obj 554 -176 text 130 60;
  #X obj 581 -218 symbol;
  #X msg 479 -245 flat;
--- 15,19 ----
  #X msg 118 -139 append seven eight nine;
  #X msg 122 -119 append ten eleven.;
! #X obj 554 -176 text 130 60 0;
  #X obj 581 -218 symbol;
  #X msg 479 -245 flat;
***************
*** 31,37 ****
  #X msg 26 105 size 100 50;
  #X text 633 231 disable editing;
! #X obj 582 -39 text 130 60;
  #X obj 581 -84 symbol;
! #X obj 513 147 text 130 60;
  #X obj 577 102 symbol;
  #X msg 539 -109 none;
--- 31,37 ----
  #X msg 26 105 size 100 50;
  #X text 633 231 disable editing;
! #X obj 582 -39 text 130 60 0;
  #X obj 581 -84 symbol;
! #X obj 513 147 text 130 60 0;
  #X obj 577 102 symbol;
  #X msg 539 -109 none;
***************
*** 44,51 ****
  #X obj 452 40 pddp/pddplink http://en.wikipedia.org/wiki/X11_color_names
  ;
! #X obj 394 -39 text 130 60;
  #X obj 396 -89 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 10 -262144
  -1 -1 0 1;
! #X obj 62 345 text 130 60;
  #X obj 61 300 symbol;
  #X obj 49 409 pddp/pddplink http://tcl.tk/man/tcl8.4/TkCmd/cursors.htm
--- 44,51 ----
  #X obj 452 40 pddp/pddplink http://en.wikipedia.org/wiki/X11_color_names
  ;
! #X obj 394 -39 text 130 60 0;
  #X obj 396 -89 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 10 -262144
  -1 -1 0 1;
! #X obj 62 345 text 130 60 0;
  #X obj 61 300 symbol;
  #X obj 49 409 pddp/pddplink http://tcl.tk/man/tcl8.4/TkCmd/cursors.htm
***************
*** 57,61 ****
  #X obj 404 -217 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 10 -262144
  -1 -1 0 1;
- #X msg 471 119 scrollbar \$1;
  #X obj 471 99 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
  1;
--- 57,60 ----
***************
*** 66,71 ****
  #X floatatom 369 275 5 0 0 0 - - -;
  #X msg 249 -46 key 3322;
! #X obj 560 330 text 130 60;
! #X obj 352 328 text 130 60;
  #X text 347 232 type single chars:;
  #X msg 421 279 key a;
--- 65,70 ----
  #X floatatom 369 275 5 0 0 0 - - -;
  #X msg 249 -46 key 3322;
! #X obj 560 330 text 130 60 0;
! #X obj 352 328 text 130 60 0;
  #X text 347 232 type single chars:;
  #X msg 421 279 key a;
***************
*** 86,90 ****
  #X msg 577 70 #00f;
  #X text 528 231 turn off undo;
! #X obj 261 152 text 130 60;
  #X msg 285 128 font "Lucida Sans" 18 bold;
  #X msg 261 103 font Arial 16;
--- 85,89 ----
  #X msg 577 70 #00f;
  #X text 528 231 turn off undo;
! #X obj 261 152 text 130 60 0;
  #X msg 285 128 font "Lucida Sans" 18 bold;
  #X msg 261 103 font Arial 16;
***************
*** 97,100 ****
--- 96,100 ----
  -text text;
  #X text 37 -234 This object is based on:;
+ #X msg 471 119 scrollbars \$1;
  #X connect 0 0 2 0;
  #X connect 0 0 7 0;
***************
*** 110,114 ****
  #X connect 12 0 0 0;
  #X connect 13 0 0 0;
! #X connect 15 0 72 0;
  #X connect 16 0 15 0;
  #X connect 17 0 15 0;
--- 110,114 ----
  #X connect 12 0 0 0;
  #X connect 13 0 0 0;
! #X connect 15 0 71 0;
  #X connect 16 0 15 0;
  #X connect 17 0 15 0;
***************
*** 117,122 ****
  #X connect 20 0 15 0;
  #X connect 21 0 15 0;
! #X connect 22 0 76 0;
! #X connect 23 0 75 0;
  #X connect 24 0 23 0;
  #X connect 25 0 23 0;
--- 117,122 ----
  #X connect 20 0 15 0;
  #X connect 21 0 15 0;
! #X connect 22 0 75 0;
! #X connect 23 0 74 0;
  #X connect 24 0 23 0;
  #X connect 25 0 23 0;
***************
*** 124,129 ****
  #X connect 27 0 22 0;
  #X connect 28 0 5 0;
! #X connect 31 0 73 0;
! #X connect 33 0 70 0;
  #X connect 34 0 31 0;
  #X connect 35 0 31 0;
--- 124,129 ----
  #X connect 27 0 22 0;
  #X connect 28 0 5 0;
! #X connect 31 0 72 0;
! #X connect 33 0 69 0;
  #X connect 34 0 31 0;
  #X connect 35 0 31 0;
***************
*** 132,164 ****
  #X connect 39 0 33 0;
  #X connect 40 0 33 0;
! #X connect 43 0 74 0;
! #X connect 45 0 69 0;
  #X connect 47 0 45 0;
  #X connect 48 0 45 0;
  #X connect 49 0 45 0;
  #X connect 50 0 45 0;
! #X connect 51 0 71 0;
! #X connect 52 0 32 0;
! #X connect 53 0 52 0;
  #X connect 54 0 0 0;
! #X connect 55 0 0 0;
! #X connect 56 0 57 0;
! #X connect 56 0 58 0;
! #X connect 57 0 61 0;
! #X connect 59 0 0 0;
! #X connect 63 0 61 0;
! #X connect 64 0 61 0;
! #X connect 67 0 61 0;
! #X connect 68 0 45 0;
! #X connect 69 0 44 0;
! #X connect 70 0 32 0;
  #X connect 71 0 14 0;
! #X connect 72 0 14 0;
! #X connect 73 0 30 0;
! #X connect 74 0 42 0;
! #X connect 75 0 60 0;
! #X connect 76 0 60 0;
! #X connect 77 0 5 0;
! #X connect 78 0 33 0;
! #X connect 81 0 80 0;
! #X connect 82 0 80 0;
--- 132,164 ----
  #X connect 39 0 33 0;
  #X connect 40 0 33 0;
! #X connect 43 0 73 0;
! #X connect 45 0 68 0;
  #X connect 47 0 45 0;
  #X connect 48 0 45 0;
  #X connect 49 0 45 0;
  #X connect 50 0 45 0;
! #X connect 51 0 70 0;
! #X connect 52 0 87 0;
! #X connect 53 0 0 0;
  #X connect 54 0 0 0;
! #X connect 55 0 56 0;
! #X connect 55 0 57 0;
! #X connect 56 0 60 0;
! #X connect 58 0 0 0;
! #X connect 62 0 60 0;
! #X connect 63 0 60 0;
! #X connect 66 0 60 0;
! #X connect 67 0 45 0;
! #X connect 68 0 44 0;
! #X connect 69 0 32 0;
! #X connect 70 0 14 0;
  #X connect 71 0 14 0;
! #X connect 72 0 30 0;
! #X connect 73 0 42 0;
! #X connect 74 0 59 0;
! #X connect 75 0 59 0;
! #X connect 76 0 5 0;
! #X connect 77 0 33 0;
! #X connect 80 0 79 0;
! #X connect 81 0 79 0;
! #X connect 87 0 32 0;





More information about the Pd-cvs mailing list