[PD-cvs] externals/bbogart/entry entry.c,1.31,1.32

Hans-Christoph Steiner eighthave at users.sourceforge.net
Tue Nov 13 21:20:56 CET 2007


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

Modified Files:
	entry.c 
Log Message:

- cleaned up cruft, including the x_rect_* stuff

- got smooth resizing working, doesn't lose state


Index: entry.c
===================================================================
RCS file: /cvsroot/pure-data/externals/bbogart/entry/entry.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** entry.c	13 Nov 2007 17:01:39 -0000	1.31
--- entry.c	13 Nov 2007 20:20:54 -0000	1.32
***************
*** 41,57 ****
  #endif
  
! #define BACKGROUNDCOLOR "grey70"
  
! #define TKW_HANDLE_HEIGHT 15
! #define TKW_HANDLE_WIDTH 15
  
! #define SCOPE_SELBDWIDTH     3.0
! #define SCOPE_DEFWIDTH     130  /* CHECKED */
! #define SCOPE_MINWIDTH      66
! #define SCOPE_DEFHEIGHT    130  /* CHECKED */
! #define SCOPE_MINHEIGHT     34
  
! #define TOTAL_INLETS 1
! #define TOTAL_OUTLETS 2
  
  #define DEBUG(x) x
--- 41,57 ----
  #endif
  
! #define BACKGROUNDCOLOR        "grey70"
  
! #define TKW_HANDLE_HEIGHT       15
! #define TKW_HANDLE_WIDTH        15
  
! #define TKW_HANDLE_INSET        -2
! #define ENTRY_DEFAULT_WIDTH     130
! #define ENTRY_DEFAULT_HEIGHT    130
! #define ENTRY_MIN_WIDTH         66
! #define ENTRY_MIN_HEIGHT        34
  
! #define TOTAL_INLETS            1
! #define TOTAL_OUTLETS           2
  
  #define DEBUG(x) x
***************
*** 59,89 ****
  typedef struct _entry
  {
!     t_object x_obj;
!     t_canvas *x_canvas;
!     t_glist *x_glist;
!     
!     int x_rect_width;
!     int x_rect_height;
!     t_symbol*  x_receive_name;
  
      int        x_resizing;
      int        x_resize_x;
      int        x_resize_y;
  
! /* TODO: these all should be settable by messages */
!     int x_height;
!     int x_width;
! 
!     t_symbol* x_bgcolour;
!     t_symbol* x_fgcolour;
      
!     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 */
--- 59,85 ----
  typedef struct _entry
  {
!     t_object   x_obj;
!     t_canvas  *x_canvas;
!     t_glist   *x_glist;
  
+     t_symbol  *x_receive_name;
+ 
+     int        x_height;
+     int        x_width;
      int        x_resizing;
      int        x_resize_x;
      int        x_resize_y;
  
!     t_symbol  *x_bgcolour;
!     t_symbol  *x_fgcolour;
      
!     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 */
***************
*** 123,127 ****
  static void entry_delete(t_gobj *z, t_glist *glist);
  static void entry_vis(t_gobj *z, t_glist *glist, int vis);
! //static int entry_click(t_gobj *x, struct _glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit);
  static void entry_save(t_gobj *z, t_binbuf *b);
  
--- 119,123 ----
  static void entry_delete(t_gobj *z, t_glist *glist);
  static void entry_vis(t_gobj *z, t_glist *glist, int vis);
! //static int entry_click(t_gobj *z, t_glist *glist, int xpix, int ypix, int shift, int alt, int dbl, int doit);
  static void entry_save(t_gobj *z, t_binbuf *b);
  
***************
*** 188,194 ****
  {
      post("calculate_onset");
!     post("x_rect_width: %d   x_width: %d", x->x_rect_width, x->x_width);
!     post("x_rect_height: %d   x_height: %d", x->x_rect_height, x->x_height);
!     return(text_xpix(&x->x_obj, glist) + (x->x_rect_width - IOWIDTH)    \
             * current_iolet / (total_iolets == 1 ? 1 : total_iolets - 1));
  }
--- 184,188 ----
  {
      post("calculate_onset");
!     return(text_xpix(&x->x_obj, glist) + (x->x_width - IOWIDTH)    \
             * current_iolet / (total_iolets == 1 ? 1 : total_iolets - 1));
  }
***************
*** 208,221 ****
          {
              sys_vgui("%s create rectangle %d %d %d %d -tags {%xi%d %xi %s}\n",
!                      x->canvas_id, onset, text_ypix(&x->x_obj, glist) - 1,
                       onset + IOWIDTH, text_ypix(&x->x_obj, glist),
                       x, i, x, x->all_tag);
          }
- /*        else
-         {
-             sys_vgui("%s coords %xi%d %d %d %d %d\n",
-                      x->canvas_id, x, i, onset, text_ypix(&x->x_obj, glist) - 1,
-                      onset + IOWIDTH, text_ypix(&x->x_obj, glist));
-         }*/
      }
      for (i = 0; i < total_outlets; i++) /* outlets */
--- 202,209 ----
          {
              sys_vgui("%s create rectangle %d %d %d %d -tags {%xi%d %xi %s}\n",
!                      x->canvas_id, onset, text_ypix(&x->x_obj, glist) - 2,
                       onset + IOWIDTH, text_ypix(&x->x_obj, glist),
                       x, i, x, x->all_tag);
          }
      }
      for (i = 0; i < total_outlets; i++) /* outlets */
***************
*** 225,239 ****
          {
              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_rect_height - 1,
!                      onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_rect_height,
                       x, i, x, x->all_tag);
          }
- /*        else
-         {
-             sys_vgui("%s coords %xo%d %d %d %d %d\n",
-                      x->canvas_id, x, i,
-                      onset, text_ypix(&x->x_obj, glist) + x->x_rect_height - 1,
-                      onset + IOWIDTH, text_ypix(&x->x_obj, glist) + x->x_rect_height);
-                      }*/
      }
      DEBUG(post("draw inlet end"););
--- 213,220 ----
          {
              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);
          }
      }
      DEBUG(post("draw inlet end"););
***************
*** 243,252 ****
  {
      DEBUG(post("erase_inlets"););
! /* Added tag for all inlets of one instance */
      sys_vgui("%s delete %xi\n", x->canvas_id, x); 
      sys_vgui("%s delete %xo\n", x->canvas_id, x); 
! /* Added tag for all outlets of one instance */
!     sys_vgui("%s delete  %xhandle\n", x->canvas_id, x);
! /* TODO are the above even active? */
  }
  
--- 224,231 ----
  {
      DEBUG(post("erase_inlets"););
! /* Added tag for all inlets/outlets of one instance */
      sys_vgui("%s delete %xi\n", x->canvas_id, x); 
      sys_vgui("%s delete %xo\n", x->canvas_id, x); 
! 
  }
  
***************
*** 318,325 ****
      DEBUG(post("create_widget"););
      /* I guess this is for fine-tuning of the rect size based on width and height? */
-     post("x_rect_width: %d   x_width: %d", x->x_rect_width, x->x_width);
-     post("x_rect_height: %d   x_height: %d", x->x_rect_height, x->x_height);
-     x->x_rect_width = x->x_width;
-     x->x_rect_height =  x->x_height+2;
  
      sys_vgui("namespace eval entry%lx {} \n", x);
--- 297,300 ----
***************
*** 352,358 ****
      if (firsttime) 
      {
-         post("x_rect_width: %d   x_width: %d", x->x_rect_width, x->x_width);
-         post("x_rect_height: %d   x_height: %d", x->x_rect_height, x->x_height);
          create_widget(x);	
          if(x->x_have_scrollbar) draw_scrollbar(x);
          sys_vgui("%s create window %d %d -anchor nw -window %s    \
--- 327,332 ----
      if (firsttime) 
      {
          create_widget(x);	
+         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    \
***************
*** 367,375 ****
  //                 text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist));
      }
-     if(glist->gl_edit) /* this is buggy logic */
-         draw_inlets(x, glist, firsttime, TOTAL_INLETS, TOTAL_OUTLETS);
-     else
-         erase_inlets(x);
- //    glist_drawiofor(glist, x->x_obj, firsttime, );
  }
  
--- 341,344 ----
***************
*** 380,384 ****
  
      set_tk_widget_ids(x,glist_getcanvas(glist));
! //    erase_inlets(x);
      sys_vgui("destroy %s\n", x->frame_id);
      sys_vgui("%s delete %s\n", x->canvas_id, x->all_tag);
--- 349,353 ----
  
      set_tk_widget_ids(x,glist_getcanvas(glist));
!     erase_inlets(x);
      sys_vgui("destroy %s\n", x->frame_id);
      sys_vgui("%s delete %s\n", x->canvas_id, x->all_tag);
***************
*** 395,403 ****
  //    DEBUG(post("entry_getrect");); /* this one is very chatty :D */
      t_entry *x = (t_entry*)z;
- 
      *xp1 = text_xpix(&x->x_obj, owner);
      *yp1 = text_ypix(&x->x_obj, owner);
!     *xp2 = *xp1 + x->x_rect_width;
!     *yp2 = *yp1 + x->x_rect_height;
  }
  
--- 364,371 ----
  //    DEBUG(post("entry_getrect");); /* this one is very chatty :D */
      t_entry *x = (t_entry*)z;
      *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
  }
  
***************
*** 414,419 ****
  /*        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_rect_width, 
!                  text_ypix(&x->x_obj, glist) + x->x_rect_height-2);*/
  //        entry_drawme(x, glist, 0);
          canvas_fixlinesfor(glist_getcanvas(glist), (t_text*) x);
--- 382,387 ----
  /*        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);*/
  //        entry_drawme(x, glist, 0);
          canvas_fixlinesfor(glist_getcanvas(glist), (t_text*) x);
***************
*** 431,449 ****
      if( (state) && (!x->x_selected))
      {
!         entry_getrect(z, glist, &x1, &y1, &x2, &y2);
!         sys_vgui("%s configure -bg #bdbddd -state disabled\n", x->text_id);
! /* */
! /*        sys_vgui("%s create rectangle %d %d %d %d -tags {%xSEL %s} -outline blue -width 2\n",
!                  x->canvas_id,
!                  text_xpix(&x->x_obj, glist), text_ypix(&x->x_obj, glist)-1,
!                  text_xpix(&x->x_obj, glist) + x->x_rect_width, 
!                  text_ypix(&x->x_obj, glist) + x->x_rect_height-2, 
!                  x, x->all_tag);*/
          x->x_selected = 1;
      }
      else if (!state)
      {
!         sys_vgui("%s configure -bg grey -state normal\n", x->text_id);
! //        sys_vgui("%s delete %xSEL\n", x->canvas_id, x);
          /* activatefn never gets called with 0, so destroy here */
          sys_vgui("destroy %s\n", x->handle_id);
--- 399,411 ----
      if( (state) && (!x->x_selected))
      {
! //        entry_getrect(z, glist, &x1, &y1, &x2, &y2);
!         sys_vgui("%s configure -bg #bdbddd -state disabled -cursor $cursor_editmode_nothing\n",
!                  x->text_id);
          x->x_selected = 1;
      }
      else if (!state)
      {
!         sys_vgui("%s configure -bg grey -state normal -cursor xterm\n",
!                  x->text_id);
          /* activatefn never gets called with 0, so destroy here */
          sys_vgui("destroy %s\n", x->handle_id);
***************
*** 461,469 ****
      {
          entry_getrect(z, glist, &x1, &y1, &x2, &y2);
!         sys_vgui("canvas %s -width %d -height %d -bg #fedc00 -bd 0 -cursor top_left_arrow\n",
                   x->handle_id, TKW_HANDLE_WIDTH, TKW_HANDLE_HEIGHT);
!         sys_vgui("%s create window %f %f -anchor nw -width %d -height %d -window %s -tags RSZ\n",
!                  x->canvas_id, x2 - (TKW_HANDLE_WIDTH - SCOPE_SELBDWIDTH),
!                  y2 - (TKW_HANDLE_HEIGHT - SCOPE_SELBDWIDTH),
                   TKW_HANDLE_WIDTH, TKW_HANDLE_HEIGHT,
                   x->handle_id, x->all_tag);
--- 423,438 ----
      {
          entry_getrect(z, glist, &x1, &y1, &x2, &y2);
!         sys_vgui("canvas %s -width %d -height %d -bg #ddd -bd 0 \
! -highlightthickness 3 -highlightcolor {#f00} -cursor bottom_right_corner\n",
                   x->handle_id, TKW_HANDLE_WIDTH, TKW_HANDLE_HEIGHT);
!         int handle_x1 = x2 - TKW_HANDLE_WIDTH;
!         int handle_y1 = y2 - (TKW_HANDLE_HEIGHT - TKW_HANDLE_INSET);
!         int handle_x2 = x2;
!         int handle_y2 = y2 - TKW_HANDLE_INSET;
! /* no worky */
! /*         sys_vgui("%s create line %d %d %d %d -fill black -tags RESIZE_LINES\n",  */
! /*                  x->handle_id, handle_x2, handle_y1, handle_x1, handle_y2); */
!         sys_vgui("%s create window %d %d -anchor nw -width %d -height %d -window %s -tags RSZ\n",
!                  x->canvas_id, handle_x1, handle_y1,
                   TKW_HANDLE_WIDTH, TKW_HANDLE_HEIGHT,
                   x->handle_id, x->all_tag);
***************
*** 476,482 ****
                   x->handle_id, x->x_receive_name->s_name);
      }
-     else
-     {
-     }
  }
  
--- 445,448 ----
***************
*** 506,514 ****
  
  /*
! static int entry_click(t_gobj *x, t_glist *glist, int xpix, int ypix, 
                         int shift, int alt, int dbl, int doit)
  {
!     DEBUG(post("entry_click x:%d y:%d ", xpix, ypix););    
!     // this is currently unused
      return 0;
  }
--- 472,480 ----
  
  /*
! static int entry_click(t_gobj *z, t_glist *glist, int xpix, int ypix, 
                         int shift, int alt, int dbl, int doit)
  {
!     t_entry *x = (t_entry *)z;
!     DEBUG(post("entry_click x:%d y:%d edit: %d", xpix, ypix, x->x_canvas->gl_edit););    
      return 0;
  }
***************
*** 659,663 ****
                  atom_getsymbol(binbuf_getvec(x->x_obj.te_binbuf)),
                  x->x_width, x->x_height, x->x_bgcolour, x->x_fgcolour);
- /*     binbuf_addv(b, ";"); */
  }
  
--- 625,628 ----
***************
*** 738,745 ****
      x->x_width = width;
  //    sys_vgui("%s configure -width %d -height %d \n", x->text_id, (int)width, (int)height);
!     sys_vgui("%s itemconfigure %s -width %d -height %d \n", 
!              x->canvas_id, x->all_tag, (int)width, (int)height);
!     entry_vis((t_gobj *)x, x->x_canvas, 0);
!     entry_vis((t_gobj *)x, x->x_canvas, 1);
  }
  
--- 703,716 ----
      x->x_width = width;
  //    sys_vgui("%s configure -width %d -height %d \n", x->text_id, (int)width, (int)height);
!     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);
!         canvas_fixlinesfor(x->x_glist, (t_text *)x);  // 2nd inlet
! /*         sys_vgui("%s itemconfigure %s -width %d -height %d \n",  */
! /*                  x->canvas_id, x->all_tag, (int)width, (int)height); */
! /*         entry_vis((t_gobj *)x, x->x_canvas, 0); */
! /*         entry_vis((t_gobj *)x, x->x_canvas, 1); */
!     }
  }
  
***************
*** 763,769 ****
          if (canvas)
          {
!             sys_vgui("destroy %s\n", x->handle_id);
!             entry_select((t_gobj *)x, x->x_glist, 1);
!             entry_activate((t_gobj *)x, x->x_glist, 1);
              canvas_fixlinesfor(x->x_glist, (t_text *)x);  // 2nd inlet
          }
--- 734,738 ----
          if (canvas)
          {
!             draw_inlets(x, canvas, 1, TOTAL_INLETS, TOTAL_OUTLETS);
              canvas_fixlinesfor(x->x_glist, (t_text *)x);  // 2nd inlet
          }
***************
*** 771,779 ****
      else if (!x->x_resizing && newstate)
      {
!         if (canvas)
!         {
!             int x1, y1, x2, y2;
!             entry_getrect((t_gobj *)x, x->x_glist, &x1, &y1, &x2, &y2);
!         }
          x->x_resize_x = 0;
          x->x_resize_y = 0;
--- 740,750 ----
      else if (!x->x_resizing && newstate)
      {
! /* TODO I think this is not used */
! /*         if (canvas) */
! /*         { */
! /*             int x1, y1, x2, y2; */
! /*             entry_getrect((t_gobj *)x, x->x_glist, &x1, &y1, &x2, &y2); */
! /*         } */
!         erase_inlets(x);
          x->x_resize_x = 0;
          x->x_resize_y = 0;
***************
*** 792,796 ****
          newx = x2 + dx;
          newy = y2 + dy;
!         if (newx > x1 + SCOPE_MINWIDTH && newy > y1 + SCOPE_MINHEIGHT)
          {
              if (glist_isvisible(x->x_glist))
--- 763,767 ----
          newx = x2 + dx;
          newy = y2 + dy;
!         if (newx > x1 + ENTRY_MIN_WIDTH && newy > y1 + ENTRY_MIN_HEIGHT)
          {
              if (glist_isvisible(x->x_glist))
***************
*** 829,834 ****
  	{
  		post("entry: You must enter at least 4 arguments. Default values used.");
! 		x->x_width = 124;
! 		x->x_height = 100;
  		x->x_bgcolour = gensym("grey70");
  		x->x_fgcolour = gensym("black");
--- 800,805 ----
  	{
  		post("entry: You must enter at least 4 arguments. Default values used.");
! 		x->x_width = ENTRY_DEFAULT_WIDTH;
! 		x->x_height = ENTRY_DEFAULT_HEIGHT;
  		x->x_bgcolour = gensym("grey70");
  		x->x_fgcolour = gensym("black");





More information about the Pd-cvs mailing list