[PD-cvs] pd/src desire.c, 1.1.2.118, 1.1.2.119 desire.h, 1.1.2.6, 1.1.2.7

Mathieu Bouchard matju at users.sourceforge.net
Mon Aug 21 05:13:07 CEST 2006


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14495

Modified Files:
      Tag: devel_0_39
	desire.c desire.h 
Log Message:
more failed attempts at object insertion for undoing delete


Index: desire.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.h,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -C2 -d -r1.1.2.6 -r1.1.2.7
*** desire.h	21 Aug 2006 02:37:39 -0000	1.1.2.6
--- desire.h	21 Aug 2006 03:13:05 -0000	1.1.2.7
***************
*** 203,206 ****
--- 203,209 ----
      unsigned int gl_goprect:1;      /* draw rectangle for graph-on-parent */
      unsigned int gl_isgraph:1;      /* show as graph on parent */
+ #ifdef DESIRE
+     long gl_next_add;                /* insertion point for next call to glist_add */
+ #endif
  };
  

Index: desire.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/desire.c,v
retrieving revision 1.1.2.118
retrieving revision 1.1.2.119
diff -C2 -d -r1.1.2.118 -r1.1.2.119
*** desire.c	21 Aug 2006 00:41:13 -0000	1.1.2.118
--- desire.c	21 Aug 2006 03:13:05 -0000	1.1.2.119
***************
*** 556,559 ****
--- 556,560 ----
      x->gl_font = sys_nearestfontsize(font);
      pd_pushsym(&x->gl_pd);
+     x->gl_next_add = -1;
      return(x);
  }
***************
*** 1396,1400 ****
  // from g_editor.c
  
- static void canvas_doclear(t_canvas *x);
  static void glist_setlastxy(t_glist *gl, int xval, int yval);
  static void glist_donewloadbangs(t_glist *x);
--- 1397,1400 ----
***************
*** 1474,1485 ****
  }
  
! static t_gobj *glist_nth(t_glist *x, int n)
! {
      t_gobj *y;
!     int indx;
!     for (y = x->gl_list, indx = 0; y; y = y->g_next, indx++)
!         if (indx == n)
!             return (y);
!     return (0);
  }
  
--- 1474,1513 ----
  }
  
! static t_gobj *glist_nth(t_glist *x, int n) {
      t_gobj *y;
!     glist_each(y,x) if (!n) return y; else n--;
!     return 0;
! }
! 
! #define glist_each2(CHILD,GLIST) for(CHILD=&(GLIST)->gl_list; *CHILD; CHILD=&(*CHILD)->g_next)
! /* just a raw remove, no other business */
! /* doesn't work (why?) */
! static t_gobj *glist_remove_nth(t_glist *x, int n) {
!     t_gobj **y;
!     t_gobj *z;
!     glist_each2(y,x) {
!       fprintf(stderr,"n=%i *y=%p\n",n,*y);
!       if (!n) {
! 	z = *y;
! 	*y = z->g_next;
! 	z->g_next = 0;
! 	return z;
!       } else n--;
!     }
!     return 0;
! }
! 
! /* just a raw insert, no other business */
! /* doesn't work (why?) */
! static void glist_insert_nth(t_glist *x, int n, t_gobj *new) {
!     t_gobj **y;
!     t_gobj *z;
!     glist_each2(y,x) if (!n) {
! 	z = *y;
! 	*y = new;
! 	new->g_next = z;
! 	return;
!     } else n--;
!     *y = new;
  }
  
***************
*** 1523,1527 ****
              int hadwindow = gl->gl_havewindow;
              if (!hadwindow) canvas_vis(glist_getcanvas(gl), 1);
-             canvas_doclear(gl);
              g = glist_nth(gl, j);
              if (!hadwindow)
--- 1551,1554 ----
***************
*** 1899,1919 ****
  }
  
- extern t_pd *newest;
- static void canvas_doclear(t_canvas *x)
- {
-     t_gobj *y, *y2;
-     int dspstate;
-     dspstate = canvas_suspend_dsp();
-     if (x->gl_editor->e_selectedline)
-     {
-         canvas_disconnect(x, x->gl_editor->e_selectline_index1,
-              x->gl_editor->e_selectline_outno,
-              x->gl_editor->e_selectline_index2,
-              x->gl_editor->e_selectline_inno);
-     }
-     canvas_resume_dsp(dspstate);
-     canvas_dirty(x, 1);
- }
- 
  static int paste_onset;
  static t_canvas *paste_canvas;
--- 1926,1929 ----
***************
*** 3421,3427 ****
  };
  
! void glist_add(t_glist *x, t_gobj *y)
! {
! 
      if (!y->g_pd->c_patchable) {
  	printf("glist_add %p %p class=%s (non-t_text)\n",x,y,y->g_pd->c_name->s_name);
--- 3431,3436 ----
  };
  
! void glist_add(t_glist *x, t_gobj *y) {
! /*
      if (!y->g_pd->c_patchable) {
  	printf("glist_add %p %p class=%s (non-t_text)\n",x,y,y->g_pd->c_name->s_name);
***************
*** 3437,3440 ****
--- 3446,3450 ----
  	}
      }
+ */
  
      gobj_subscribe(y,(t_gobj *)x);
***************
*** 3450,3456 ****
      y->g_next = 0;
      if (!x->gl_list) x->gl_list = y; else {
!         t_gobj *y2;
!         for (y2 = x->gl_list; y2->g_next; y2 = y2->g_next) {}
!         y2->g_next = y;
      }
      gobj_changed(x,0);
--- 3460,3474 ----
      y->g_next = 0;
      if (!x->gl_list) x->gl_list = y; else {
! 	if (x->gl_next_add<0) {
! 		t_gobj *y2;
!         	for (y2 = x->gl_list; y2->g_next; y2=y2->g_next) {}
! 	        y2->g_next = y;
! 	} else {
! 		int i=0;
! 		t_gobj *y2, *y3;
!         	for (y2 = x->gl_list; y2->g_next; y2=y2->g_next, i++) if (i==x->gl_next_add) break;
! 		y->g_next = y2->g_next;
! 	        y2->g_next = y;
! 	}
      }
      gobj_changed(x,0);
***************
*** 3476,3480 ****
  }
  
!     /* delete an object from a glist and free it */
  void glist_delete(t_glist *x, t_gobj *y)
  {
--- 3494,3499 ----
  }
  
! 
! /* delete an object from a glist and free it */
  void glist_delete(t_glist *x, t_gobj *y)
  {
***************
*** 3499,3510 ****
      }
  
!     if (x->gl_editor && (ob = pd_checkobject(&y->g_pd)))
!         rtext_new(x, ob);
!     if (x->gl_list == y) x->gl_list = y->g_next;
!     else for (g = x->gl_list; g; g = g->g_next)
!         if (g->g_next == y)
!     {
!         g->g_next = y->g_next;
!         break;
      }
      pd_free(&y->g_pd);
--- 3518,3526 ----
      }
  
!     if (x->gl_editor && (ob = pd_checkobject(&y->g_pd))) rtext_new(x, ob);
!     if (x->gl_list == y) {
! 	x->gl_list = y->g_next;
!     } else {
! 	glist_each(g,x) if (g->g_next == y) {g->g_next = y->g_next; break;}
      }
      pd_free(&y->g_pd);
***************
*** 3517,3547 ****
  }
  
!     /* remove every object from a glist.  Experimental. */
! void glist_clear(t_glist *x)
! {
      t_gobj *y;
      int dspstate = 0, suspended = 0;
      t_symbol *dspsym = gensym("dsp");
!     while ((y = x->gl_list))
!     {
!             /* to avoid unnecessary DSP resorting, we suspend DSP
!             only if we hit a patchable object. */
!         if (!suspended && pd_checkobject(&y->g_pd) && zgetfn(&y->g_pd, dspsym))
!         {
              dspstate = canvas_suspend_dsp();
              suspended = 1;
          }
!             /* here's the real deletion. */
          glist_delete(x, y);
      }
!     if (suspended)
!         canvas_resume_dsp(dspstate);
  }
  
! void glist_retext(t_glist *glist, t_text *y)
! {
!         /* check that we have built rtexts yet.  LATER need a better test. */
!     if (glist->gl_editor && glist->gl_editor->e_rtext)
!     {
          t_rtext *rt = glist_findrtext(glist, y);
          if (rt) rtext_retext(rt);
--- 3533,3555 ----
  }
  
! void glist_clear(t_glist *x) {
      t_gobj *y;
      int dspstate = 0, suspended = 0;
      t_symbol *dspsym = gensym("dsp");
!     while ((y = x->gl_list)) {
!         /* to avoid unnecessary DSP resorting, we suspend DSP
!         only if we hit a patchable object. */
!         if (!suspended && pd_checkobject(&y->g_pd) && zgetfn(&y->g_pd, dspsym)) {
              dspstate = canvas_suspend_dsp();
              suspended = 1;
          }
!         /* here's the real deletion. */
          glist_delete(x, y);
      }
!     if (suspended) canvas_resume_dsp(dspstate);
  }
  
! void glist_retext(t_glist *glist, t_text *y) {
!     if (glist->gl_editor && glist->gl_editor->e_rtext) {
          t_rtext *rt = glist_findrtext(glist, y);
          if (rt) rtext_retext(rt);
***************
*** 9081,9089 ****
  }
  
! extern t_pd *newest;
! void canvas_getargs(int *argcp, t_atom **argvp);
! 
! /* i = insertion point; -1 = end */
! static void canvas_objtext(t_glist *gl, int xpix, int ypix, int selected, t_binbuf *b, int i) {
      t_text *x=0;
      int argc, n;
--- 9089,9093 ----
  }
  
! static void canvas_objtext(t_glist *gl, int xpix, int ypix, int selected, t_binbuf *b) {
      t_text *x=0;
      int argc, n;
***************
*** 9123,9132 ****
      	binbuf_restore(b, argc-2, argv+2);
      	canvas_objtext(gl, atom_getintarg(0, argc, argv),
!     	    atom_getintarg(1, argc, argv), 0, b, -1);
      } else {
      	int xpix, ypix;
  	pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1);
      	glist_getnextxy(gl, &xpix, &ypix);
!     	canvas_objtext(gl, xpix, ypix, 1, b, -1);
      	canvas_startmotion(glist_getcanvas(gl));
      }
--- 9127,9136 ----
      	binbuf_restore(b, argc-2, argv+2);
      	canvas_objtext(gl, atom_getintarg(0, argc, argv),
!     	    atom_getintarg(1, argc, argv), 0, b);
      } else {
      	int xpix, ypix;
  	pd_vmess(&gl->gl_pd, gensym("editmode"), "i", 1);
      	glist_getnextxy(gl, &xpix, &ypix);
!     	canvas_objtext(gl, xpix, ypix, 1, b);
      	canvas_startmotion(glist_getcanvas(gl));
      }
***************
*** 9141,9145 ****
      binbuf_restore(b, 1, &at);
      glist_getnextxy(gl, &xpix, &ypix);
!     canvas_objtext(gl, xpix, ypix, 1, b, -1);
      canvas_startmotion(glist_getcanvas(gl));
  }
--- 9145,9149 ----
      binbuf_restore(b, 1, &at);
      glist_getnextxy(gl, &xpix, &ypix);
!     canvas_objtext(gl, xpix, ypix, 1, b);
      canvas_startmotion(glist_getcanvas(gl));
  }
***************
*** 9663,9667 ****
  	    int xwas = x->te_xpix, ywas = x->te_ypix;
      	    glist_delete(glist, &x->te_g);
!     	    canvas_objtext(glist, xwas, ywas, 0, b, -1);
  	    	/* if it's an abstraction loadbang it here */
  	    if (newest && pd_class(newest) == canvas_class)
--- 9667,9671 ----
  	    int xwas = x->te_xpix, ywas = x->te_ypix;
      	    glist_delete(glist, &x->te_g);
!     	    canvas_objtext(glist, xwas, ywas, 0, b);
  	    	/* if it's an abstraction loadbang it here */
  	    if (newest && pd_class(newest) == canvas_class)
***************
*** 9699,9710 ****
  }
  
! /*
  static void canvas_reorder_last(t_canvas *x, int dest) {
! 	t_gobj *y = x->gl_list;
!         for (y = x->gl_list; y->g_next; y = y2->g_next) {}
! 	if (y==x->gl_list) return;
!         y->g_next = y;
  }
- */
  
  /* this supposes that $2=#X and $3=obj */
--- 9703,9721 ----
  }
  
! static long canvas_children_count(t_canvas *x) {
! 	long n;
! 	t_gobj *y;
! 	glist_each(y,x) n++;
! 	return n;
! }
! 
  static void canvas_reorder_last(t_canvas *x, int dest) {
! 	int n = canvas_children_count(x);
! 	fprintf(stderr,"canvas_reorder_last(x=%p,dest=%d) n=%d\n",x,dest,n);
! 	t_gobj *foo = glist_remove_nth(x,n-1);
! 	fprintf(stderr,"foo=%p\n",foo);
! 	if (!foo) {bug("glist_remove_nth returned NULL"); return;}
! 	glist_insert_nth(x,dest,foo);
  }
  
  /* this supposes that $2=#X and $3=obj */
***************
*** 9716,9724 ****
  	if (argv[0].a_type != A_FLOAT) {error("$1 must be float"); return;}
  	i = atom_getfloat(argv);
! 	printf("canvas_object_insert: HELLO\n");
!         b = binbuf_new();
      	binbuf_restore(b, argc-5, argv+5);
!     	canvas_objtext(x,atom_getintarg(3,argc,argv),atom_getintarg(4,argc,argv),0,b,-1);
! 	/*canvas_reorder_last(x,i);*/
  	gobj_changed(x,0);
  /*err: canvas_unsetcurrent(x);*/
--- 9727,9739 ----
  	if (argv[0].a_type != A_FLOAT) {error("$1 must be float"); return;}
  	i = atom_getfloat(argv);
!         /*
! 	b = binbuf_new();
      	binbuf_restore(b, argc-5, argv+5);
!     	canvas_objtext(x,atom_getintarg(3,argc,argv),atom_getintarg(4,argc,argv),0,b);
! 	*/
! 	x->gl_next_add = i;
! 	canvas_obj(x,gensym("obj"),argc-3,argv+3);
! 	x->gl_next_add = -1;
! 	/* canvas_reorder_last(x,i); */
  	gobj_changed(x,0);
  /*err: canvas_unsetcurrent(x);*/





More information about the Pd-cvs mailing list