[PD-cvs] externals/bbogart/entry entry.c,1.11,1.12

Hans-Christoph Steiner eighthave at users.sourceforge.net
Thu Oct 25 18:39:16 CEST 2007


Update of /cvsroot/pure-data/externals/bbogart/entry
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23857

Modified Files:
	entry.c 
Log Message:
keyrelease events are now bound to the specific widget and the inlet/outlet drawing works

Index: entry.c
===================================================================
RCS file: /cvsroot/pure-data/externals/bbogart/entry/entry.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** entry.c	25 Oct 2007 16:00:12 -0000	1.11
--- entry.c	25 Oct 2007 16:39:13 -0000	1.12
***************
*** 59,69 ****
      
  /* 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;
--- 59,69 ----
      
  /* 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;
***************
*** 91,161 ****
  #define DEBUG(x) x
  
  
  static void draw_inlets(t_entry *x, t_glist *glist, int firsttime, int nin, int nout)
  {
!     /* outlets */
!     int n = nin;
!     int nplus, i;
!     nplus = (n == 1 ? 1 : n-1);
!     DEBUG(post("draw inlet"););
!     for (i = 0; i < n; i++)
      {
!         int onset = text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH) * i / nplus;
          if (firsttime)
          {
!             /* left outlet, for data */
!             DEBUG(post("%s create rectangle %d %d %d %d -tags {%xo%d %xo}\n",
                         x->x_canvas_name,
!                        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););
!             sys_vgui("%s create rectangle %d %d %d %d -tags {%xo%d %xo}\n",
                       x->x_canvas_name,
!                      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);
-             /* right outlet, for key status */
          }
          else
          {
!             DEBUG(post("%s coords %xo%d %d %d %d %d\n",
                         x->x_canvas_name, 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););
!             sys_vgui("%s coords %xo%d %d %d %d %d\n",
                       x->x_canvas_name, 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 */
!     n = nout; 
!     nplus = (n == 1 ? 1 : n-1);
!     for (i = 0; i < n; i++)
      {
!         int onset = text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH) * i / nplus;
          if (firsttime)
          {
!             DEBUG(post("%s create rectangle %d %d %d %d -tags {%xi%d %xi}\n",
                         x->x_canvas_name,
!                        onset, text_ypix(&x->x_obj, glist),
!                        onset + IOWIDTH, text_ypix(&x->x_obj, glist)+1,
                         x, i, x););
!             sys_vgui("%s create rectangle %d %d %d %d -tags {%xi%d %xi}\n",
                       x->x_canvas_name,
!                      onset, text_ypix(&x->x_obj, glist),
!                      onset + IOWIDTH, text_ypix(&x->x_obj, glist)+1,
                       x, i, x);
          }
          else
          {
!             DEBUG(post("%s coords %xi%d %d %d %d %d\n",
                         x->x_canvas_name, x, i,
!                        onset, text_ypix(&x->x_obj, glist),
!                        onset + IOWIDTH, text_ypix(&x->x_obj, glist)+1););
!             sys_vgui("%s coords %xi%d %d %d %d %d\n",
                       x->x_canvas_name, x, i,
!                      onset, text_ypix(&x->x_obj, glist),
!                      onset + IOWIDTH, text_ypix(&x->x_obj, glist)+1);
          }
      }
--- 91,163 ----
  #define DEBUG(x) x
  
+ static int calculate_onset(t_entry *x, t_glist *glist, int i, int nplus)
+ {
+     return(text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH) * i / nplus);
+ }
+ 
  
  static void draw_inlets(t_entry *x, t_glist *glist, int firsttime, int nin, int nout)
  {
!     DEBUG(post("draw_inlets in: %d  out: %d", nin, nout););
! 
!     int nplus, i, onset;
! 
!     nplus = (nin == 1 ? 1 : nin-1);
!     /* inlets */
!     for (i = 0; i < nin; i++)
      {
!         onset = calculate_onset(x,glist,i,nplus);
          if (firsttime)
          {
!             DEBUG(post("%s create rectangle %d %d %d %d -tags {%xi%d %xi}\n",
                         x->x_canvas_name,
!                        onset, text_ypix(&x->x_obj, glist) - 2,
!                        onset + IOWIDTH, text_ypix(&x->x_obj, glist) - 1,
                         x, i, x););
!             sys_vgui("%s create rectangle %d %d %d %d -tags {%xi%d %xi}\n",
                       x->x_canvas_name,
!                      onset, text_ypix(&x->x_obj, glist) - 2,
!                      onset + IOWIDTH, text_ypix(&x->x_obj, glist) - 1,
                       x, i, x);
          }
          else
          {
!             DEBUG(post("%s coords %xi%d %d %d %d %d\n",
                         x->x_canvas_name, x, i,
!                        onset, text_ypix(&x->x_obj, glist) - 2,
!                        onset + IOWIDTH, text_ypix(&x->x_obj, glist) - 1););
!             sys_vgui("%s coords %xi%d %d %d %d %d\n",
                       x->x_canvas_name, x, i,
!                      onset, text_ypix(&x->x_obj, glist) - 2,
!                      onset + IOWIDTH, text_ypix(&x->x_obj, glist)- 1);
          }
      }
!     nplus = (nout == 1 ? 1 : nout-1);
!     for (i = 0; i < nout; i++) /* outlets */
      {
!         onset = calculate_onset(x,glist,i,nplus);
          if (firsttime)
          {
!             DEBUG(post("%s create rectangle %d %d %d %d -tags {%xo%d %xo}\n",
                         x->x_canvas_name,
!                        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););
!             sys_vgui("%s create rectangle %d %d %d %d -tags {%xo%d %xo}\n",
                       x->x_canvas_name,
!                      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
          {
!             DEBUG(post("%s coords %xo%d %d %d %d %d\n",
                         x->x_canvas_name, 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););
!             sys_vgui("%s coords %xo%d %d %d %d %d\n",
                       x->x_canvas_name, 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);
          }
      }
***************
*** 199,204 ****
      sys_vgui("text %s -font {helvetica 10} -border 1 -highlightthickness 1 -relief sunken -bg \"%s\" -fg \"%s\" \n",
               x->x_widget_name,x->x_bgcolour->s_name,x->x_fgcolour->s_name);
!     DEBUG(post("bind Text <KeyRelease> {+pd %s keyup %%N \\;} \n", x->x_receive_name->s_name););
!     sys_vgui("bind Text <KeyRelease> {+pd %s keyup %%N \\;} \n", x->x_receive_name->s_name);
      DEBUG(post("bind %s <Leave> {focus [winfo parent %s]} \n", 
                 x->x_widget_name, x->x_widget_name);); 
--- 201,208 ----
      sys_vgui("text %s -font {helvetica 10} -border 1 -highlightthickness 1 -relief sunken -bg \"%s\" -fg \"%s\" \n",
               x->x_widget_name,x->x_bgcolour->s_name,x->x_fgcolour->s_name);
!     DEBUG(post("bind %s <KeyRelease> {+pd %s keyup %%N \\;} \n", 
!                x->x_widget_name, x->x_receive_name->s_name););
!     sys_vgui("bind %s <KeyRelease> {+pd %s keyup %%N \\;} \n", 
!              x->x_widget_name, x->x_receive_name->s_name);
      DEBUG(post("bind %s <Leave> {focus [winfo parent %s]} \n", 
                 x->x_widget_name, x->x_widget_name);); 
***************
*** 229,233 ****
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist));
      }
!     draw_inlets(x, glist, firsttime, 1,1);
      //     draw_handle(x, glist, firsttime);
  }
--- 233,237 ----
                   text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist));
      }
!     draw_inlets(x, glist, firsttime, 1,2);
      //     draw_handle(x, glist, firsttime);
  }
***************
*** 418,424 ****
--- 422,430 ----
  static void entry_keyup(t_entry *x, t_float f)
  {
+     DEBUG(post("entry_keyup"););
      int keycode = (int) f;
      char buf[10];
      t_symbol *output_symbol;
+ 
      if( (keycode > 32 ) && (keycode < 65288) )
      {





More information about the Pd-cvs mailing list