[PD-cvs] externals/tkwidgets text-help.pd, 1.3, 1.4 text.c, 1.18, 1.19

Hans-Christoph Steiner eighthave at users.sourceforge.net
Tue Nov 27 06:22:35 CET 2007


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

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

- added [query id( to get the Tk id string for the widget
  (i.e. .x6b1820.c.frame6b1b50.widget6b1b50)  This will allow people to use
  [sys_gui] to send Tcl commands to the widget in order to manipulate the
  insert cursor and the tags, among other things.

- made the [key( message work with all ASCII 127 except {  arg, I need to find
  how on earth to escape it.  Also, it would be good to support beyond ASCII
  127, i.e. accents, umlauts, etc.
 


Index: text.c
===================================================================
RCS file: /cvsroot/pure-data/externals/tkwidgets/text.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -C2 -d -r1.18 -r1.19
*** text.c	26 Nov 2007 23:38:41 -0000	1.18
--- text.c	27 Nov 2007 05:22:32 -0000	1.19
***************
*** 28,31 ****
--- 28,34 ----
  /* TODO: figure out window vs. text width/height */
  /* TODO: add x scrollbar */
+ /* TODO: make "insert" function based on the text widget "insert" */
+ /* TODO: make [key( support chars > 127 */
+ 
  
  #define TEXT_DEFAULT_COLOR     "grey90"
***************
*** 110,124 ****
  
  /* common symbols to preload */
- static t_symbol *scrollbars_symbol;
- static t_symbol *size_symbol;
  static t_symbol *backspace_symbol;
! static t_symbol *return_symbol;
! static t_symbol *space_symbol;
! static t_symbol *tab_symbol;
  static t_symbol *escape_symbol;
  static t_symbol *left_symbol;
  static t_symbol *right_symbol;
  static t_symbol *up_symbol;
- static t_symbol *down_symbol;
  
  /* -------------------- function prototypes --------------------------------- */
--- 113,129 ----
  
  /* common symbols to preload */
  static t_symbol *backspace_symbol;
! static t_symbol *down_symbol;
  static t_symbol *escape_symbol;
+ static t_symbol *id_symbol;
  static t_symbol *left_symbol;
+ static t_symbol *query_callback_symbol;
+ static t_symbol *return_symbol;
  static t_symbol *right_symbol;
+ static t_symbol *scrollbars_symbol;
+ static t_symbol *size_symbol;
+ static t_symbol *space_symbol;
+ static t_symbol *tab_symbol;
  static t_symbol *up_symbol;
  
  /* -------------------- function prototypes --------------------------------- */
***************
*** 129,132 ****
--- 134,147 ----
  /* -------------------- widget helper functions ----------------------------- */
  
+ 
+ static void query_id(t_textwidget *x)
+ {
+     t_atom id[2];
+     t_symbol *widget_id = x->widget_id;
+     SETSYMBOL(id, id_symbol);
+     SETSYMBOL(id + 1, widget_id);
+     textwidget_query_callback(x, query_callback_symbol, 2, id);
+ }
+ 
  static void query_scrollbars(t_textwidget *x)
  {
***************
*** 134,138 ****
      SETSYMBOL(state, scrollbars_symbol);
      SETFLOAT(state + 1, (t_float)x->have_scrollbars);
!     textwidget_query_callback(x, gensym("query_callback"), 2, state);
  }
  
--- 149,153 ----
      SETSYMBOL(state, scrollbars_symbol);
      SETFLOAT(state + 1, (t_float)x->have_scrollbars);
!     textwidget_query_callback(x, query_callback_symbol, 2, state);
  }
  
***************
*** 143,147 ****
      SETFLOAT(coords + 1, (t_float)x->width);
      SETFLOAT(coords + 2, (t_float)x->height);
!     textwidget_query_callback(x, gensym("query_callback"), 3, coords);
  }
  
--- 158,162 ----
      SETFLOAT(coords + 1, (t_float)x->width);
      SETFLOAT(coords + 2, (t_float)x->height);
!     textwidget_query_callback(x, query_callback_symbol, 3, coords);
  }
  
***************
*** 421,448 ****
      DEBUG(post("textwidget_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)
!         {
!             sys_vgui("%s insert end %d\n", x->widget_id->s_name, tmp_int);
!         }
!         else if(tmp_int == 10)
!         {
!             sys_vgui("%s insert end {\n}\n", x->widget_id->s_name);
!         }
!         else
!         {
!             sys_vgui("%s insert end [format \"%c\" %d]\n", x->widget_id->s_name, tmp_int);
!         }
      }
      else 
      {
!         sys_vgui("%s insert end %s\n", x->widget_id->s_name, tmp_symbol->s_name );
      }
!     sys_vgui("%s yview end-2char \n", x->widget_id->s_name );
  }
  
--- 436,465 ----
      DEBUG(post("textwidget_key"););
      t_symbol *tmp_symbol = s; /* <-- this gets rid of the unused variable warning */
!     char charbuf;
  
      tmp_symbol = atom_getsymbolarg(0, argc, argv);
      if(tmp_symbol == &s_)
+         charbuf = (t_int) atom_getfloatarg(0, argc , argv);
+     else
+         charbuf = tmp_symbol->s_name[0];
+     if(charbuf < 10)
      {
!         sys_vgui("%s insert end %d\n", x->widget_id->s_name, charbuf);
      }
      else 
      {
!         switch(charbuf)
!         {
!         case '\\': 
!             sys_vgui("%s insert end \"\\\\\"\n", x->widget_id->s_name); break;
!         case '{': 
!             sys_vgui("%s insert end {\\{}\n", x->widget_id->s_name); break;
!         case '}': 
!             sys_vgui("%s insert end \"}\"\n", x->widget_id->s_name); break;
!         default:
!             sys_vgui("%s insert end {%c}\n", x->widget_id->s_name, charbuf);
!         }
      }
!     sys_vgui("%s yview end-2char\n", x->widget_id->s_name );
  }
  
***************
*** 471,477 ****
--- 488,497 ----
                                  sizeof(textwidget_tk_options)/sizeof(char *), 
                                  textwidget_tk_options);
+         query_id(x);
          query_scrollbars(x);
          query_size(x);
      }
+     else if(s == id_symbol)
+         query_id(x);
      else if(s == scrollbars_symbol)
          query_scrollbars(x);
***************
*** 731,744 ****
  
  /* commonly used symbols */
-     size_symbol = gensym("size");
-     scrollbars_symbol = gensym("scrollbars");
      backspace_symbol = gensym("backspace");
!     return_symbol = gensym("return");
! 	space_symbol = gensym("space");
! 	tab_symbol = gensym("tab");
  	escape_symbol = gensym("escape");
  	left_symbol = gensym("left");
  	right_symbol = gensym("right");
  	up_symbol = gensym("up");
- 	down_symbol = gensym("down");
  }
--- 751,766 ----
  
  /* commonly used symbols */
      backspace_symbol = gensym("backspace");
! 	down_symbol = gensym("down");
  	escape_symbol = gensym("escape");
+ 	id_symbol = gensym("id");
  	left_symbol = gensym("left");
+     query_callback_symbol = gensym("query_callback");
+     return_symbol = gensym("return");
  	right_symbol = gensym("right");
+     size_symbol = gensym("size");
+     scrollbars_symbol = gensym("scrollbars");
+ 	space_symbol = gensym("space");
+ 	tab_symbol = gensym("tab");
  	up_symbol = gensym("up");
  }

Index: text-help.pd
===================================================================
RCS file: /cvsroot/pure-data/externals/tkwidgets/text-help.pd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** text-help.pd	24 Nov 2007 05:57:15 -0000	1.3
--- text-help.pd	27 Nov 2007 05:22:31 -0000	1.4
***************
*** 78,82 ****
  #X msg 202 250 gobbler;
  #X obj 404 -212 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 10 -262144
! -1 -1 200 1;
  #X obj 470 -90 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
  1;
--- 78,82 ----
  #X msg 202 250 gobbler;
  #X obj 404 -212 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 10 -262144
! -1 -1 0 1;
  #X obj 470 -90 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
  1;
***************
*** 100,104 ****
  #X msg 582 -192 relief \$1;
  #X msg 582 -58 wrap \$1;
! #X msg 328 -70 insertwidth \$1;
  #X msg 557 305 undo \$1;
  #X msg 652 304 state \$1;
--- 100,104 ----
  #X msg 582 -192 relief \$1;
  #X msg 582 -58 wrap \$1;
! #X msg 329 -70 insertwidth \$1;
  #X msg 557 305 undo \$1;
  #X msg 652 304 state \$1;
***************
*** 142,145 ****
--- 142,176 ----
  #X msg 435 75 grey;
  #X msg 471 75 black;
+ #N canvas 410 182 450 300 adding 0;
+ #X obj 90 229 text 200 60 0;
+ #X text 53 23 You can add text one character at a time using the "key"
+ message. It works either with the character itself or the ASCII value
+ of the character:;
+ #X msg 90 102 key \$1;
+ #X obj 94 77 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+ -1 -1 0 1;
+ #X msg 126 202 key ";
+ #X msg 169 202 key a;
+ #X msg 215 202 key B;
+ #X msg 145 102 key 10;
+ #X msg 259 202 key [;
+ #X msg 145 122 key 32;
+ #X text 198 103 carriage return;
+ #X text 198 122 space;
+ #X msg 145 142 key 100;
+ #X text 198 142 letter "d";
+ #X msg 145 163 key 92;
+ #X text 199 161 backslash;
+ #X connect 2 0 0 0;
+ #X connect 3 0 2 0;
+ #X connect 4 0 0 0;
+ #X connect 5 0 0 0;
+ #X connect 6 0 0 0;
+ #X connect 7 0 0 0;
+ #X connect 8 0 0 0;
+ #X connect 9 0 0 0;
+ #X connect 12 0 0 0;
+ #X connect 14 0 0 0;
+ #X restore 199 -200 pd adding with the key message;
  #X connect 0 0 2 0;
  #X connect 0 0 7 0;





More information about the Pd-cvs mailing list