[PD-cvs] pd/src g_dropper.c,NONE,1.1.2.1 g_all_guis.h,1.1.1.4.2.2.2.10,1.1.1.4.2.2.2.11 g_canvas.c,1.1.1.4.2.7.2.12,1.1.1.4.2.7.2.13 g_text.c,1.1.1.4.2.2.2.13,1.1.1.4.2.2.2.14 m_conf.c,1.1.1.3,1.1.1.3.4.1 makefile.mingw,1.1.2.4,1.1.2.5 u_main.tk,1.1.1.4.2.7.4.46,1.1.1.4.2.7.4.47 u_object.tk,1.1.2.20,1.1.2.21

carmen rocco ix9 at users.sourceforge.net
Mon Apr 26 13:37:45 CEST 2004


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

Modified Files:
      Tag: impd_0_37
	g_all_guis.h g_canvas.c g_text.c m_conf.c makefile.mingw 
	u_main.tk u_object.tk 
Added Files:
      Tag: impd_0_37
	g_dropper.c 
Log Message:
+g_dropper.c / icon: http://replic.net/~ix/pd/dropper.gif / http://tkdnd.sourceforge.net


Index: g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.1.1.4.2.2.2.13
retrieving revision 1.1.1.4.2.2.2.14
diff -C2 -d -r1.1.1.4.2.2.2.13 -r1.1.1.4.2.2.2.14
*** g_text.c	19 Apr 2004 17:28:39 -0000	1.1.1.4.2.2.2.13
--- g_text.c	26 Apr 2004 11:37:43 -0000	1.1.1.4.2.2.2.14
***************
*** 190,193 ****
--- 190,194 ----
  CONSTR(vradio,  "vradio");
  CONSTR(hradio,  "hradio");
+ CONSTR(dropper,  "dropper");
  CONSTR(vumeter, "vu");
  CONSTR(mycnv,   "cnv");

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.1.1.4.2.7.4.46
retrieving revision 1.1.1.4.2.7.4.47
diff -C2 -d -r1.1.1.4.2.7.4.46 -r1.1.1.4.2.7.4.47
*** u_main.tk	26 Apr 2004 08:45:12 -0000	1.1.1.4.2.7.4.46
--- u_main.tk	26 Apr 2004 11:37:43 -0000	1.1.1.4.2.7.4.47
***************
*** 667,670 ****
--- 667,671 ----
          {Hradio  {pd "%W hradio 0 ;"} "Alt+i"}
  	{VU      {pd "%W vumeter 0 ;"} "Alt+u"}
+ 	{dropper      {pd "%W dropper 0 ;"} "Alt+x"}
          {Canvas  {pd "%W mycnv 0 ;"} "Alt+c"}
  	{}
***************
*** 2259,2262 ****
--- 2260,2264 ----
  	{hradio  {hradio 0}}
  	{vu      {vumeter 0}}
+ 	{dropper      {dropper 0}}
  	{canvas  {mycnv 0}}
  	{graph   {graph}}

Index: makefile.mingw
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.mingw,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -C2 -d -r1.1.2.4 -r1.1.2.5
*** makefile.mingw	11 Apr 2004 05:16:40 -0000	1.1.2.4
--- makefile.mingw	26 Apr 2004 11:37:43 -0000	1.1.2.5
***************
*** 38,42 ****
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
      g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
!     g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
      g_toggle.c g_vumeter.c m_pd.c m_class.c m_obj.c m_atom.c m_memory.c \
      m_binbuf.c m_conf.c m_glob.c m_sched.c s_main.c s_inter.c s_file.c \
--- 38,43 ----
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
      g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
!     g_all_guis.c g_bang.c g_hdial.c g_hslider.c \
!     g_mycanvas.c g_dropper.c g_numbox.c \
      g_toggle.c g_vumeter.c m_pd.c m_class.c m_obj.c m_atom.c m_memory.c \
      m_binbuf.c m_conf.c m_glob.c m_sched.c s_main.c s_inter.c s_file.c \

Index: g_all_guis.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_all_guis.h,v
retrieving revision 1.1.1.4.2.2.2.10
retrieving revision 1.1.1.4.2.2.2.11
diff -C2 -d -r1.1.1.4.2.2.2.10 -r1.1.1.4.2.2.2.11
*** g_all_guis.h	8 Apr 2004 10:50:02 -0000	1.1.1.4.2.2.2.10
--- g_all_guis.h	26 Apr 2004 11:37:43 -0000	1.1.1.4.2.2.2.11
***************
*** 150,153 ****
--- 150,154 ----
      int                x_bcol;
      int                x_lcol;
+     t_symbol           *x_s;
      t_symbol           *x_snd;	    	    /* send symbol */
      t_symbol           *x_rcv;	    	    /* receive */
***************
*** 218,221 ****
--- 219,233 ----
  } t_my_canvas;
  
+ typedef struct _dropper
+ {
+     t_iemgui x_gui;
+     int      x_flashed;
+     int      x_flashtime_break;
+     int      x_flashtime_hold;
+     t_clock  *x_clock_hld;
+     t_clock  *x_clock_brk;
+     t_clock  *x_clock_lck;
+ } t_dropper;
+ 
  typedef struct _vu
  {

Index: m_conf.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_conf.c,v
retrieving revision 1.1.1.3
retrieving revision 1.1.1.3.4.1
diff -C2 -d -r1.1.1.3 -r1.1.1.3.4.1
*** m_conf.c	9 May 2003 16:03:43 -0000	1.1.1.3
--- m_conf.c	26 Apr 2004 11:37:43 -0000	1.1.1.3.4.1
***************
*** 23,26 ****
--- 23,27 ----
  /* iemlib */
  void g_io_setup(void);
+ void g_dropper_setup(void);
  void g_scalar_setup(void);
  void g_template_setup(void);
***************
*** 69,72 ****
--- 70,74 ----
  /* iemlib */
      g_io_setup();
+     g_dropper_setup();
      g_scalar_setup();
      g_template_setup();

--- NEW FILE: g_dropper.c ---
/* Copyright (c) 1997-1999 Miller Puckette.
 * For information on usage and redistribution, and for a DISCLAIMER OF ALL
 * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */

/* drag & drop filer (c) 2004 Carmen Rocco */

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>
#include "m_pd.h"
#include "g_canvas.h"
#include "t_tk.h"
#include "g_all_guis.h"
#include <math.h>

#ifdef MSW
#include <io.h>
#else
#include <unistd.h>
#endif

t_widgetbehavior dropper_widgetbehavior;
static t_class *dropper_class;

void dropper_draw(t_dropper *x, t_glist *glist, int mode) {
if (mode==IEM_GUI_DRAW_MODE_ERASE)
	sys_mgui((t_iemgui *)x,"dropper","erase","");
else if (mode==IEM_GUI_DRAW_MODE_SELECT)
	sys_mgui((t_iemgui *)x,"dropper","select","i",x->x_gui.x_fsf.x_selected);
else {
	pd_upload((t_gobj *)x,glist);
	sys_mgui((t_iemgui *)x,"dropper","draw","");}
}

/* ------------------------ dropper widgetbehaviour----------------------------- */

static void dropper_getrect(t_gobj *z, t_glist *glist, int *xp1, int *yp1, int *xp2, int *yp2)
{
    t_dropper *x = (t_dropper *)z;
    *xp1 = text_xpix(&x->x_gui.x_obj, glist);
    *yp1 = text_ypix(&x->x_gui.x_obj, glist);
    *xp2 = *xp1 + x->x_gui.x_w;
    *yp2 = *yp1 + x->x_gui.x_h;
}

static void dropper_save(t_gobj *z, t_binbuf *b)
{
    t_dropper *x = (t_dropper *)z;
    int bflcol[3];
    t_symbol *srl[3];

    iemgui_save(&x->x_gui, srl, bflcol);
    binbuf_addv(b, "ssiisiiiisssiiiiiii", gensym("#X"),gensym("obj"),
	(t_int)x->x_gui.x_obj.te_xpix, (t_int)x->x_gui.x_obj.te_ypix,
	gensym("dropper"), x->x_gui.x_w,
	x->x_flashtime_hold, x->x_flashtime_break,
	iem_symargstoint(&x->x_gui.x_isa),
	srl[0], srl[1], srl[2],
	x->x_gui.x_ldx, x->x_gui.x_ldy,
	iem_fstyletoint(&x->x_gui.x_fsf), x->x_gui.x_fontsize,
	bflcol[0], bflcol[1], bflcol[2]);
    binbuf_addv(b, ";");
}

static void dropper_symbol(t_dropper *x, t_symbol *s)
{
  outlet_symbol(x->x_gui.x_obj.ob_outlet, s);
}

static void dropper_init(t_dropper *x, t_floatarg f)
{x->x_gui.x_isa.x_loadinit = (f==0.0)?0:1;}

static void *dropper_new(t_symbol *s, int argc, t_atom *argv)
{
    char buf[50];
    t_dropper *x = (t_dropper *)pd_new(dropper_class);
    int bflcol[]={-262144, -1, -1};
    int a=IEM_GUI_DEFAULTSIZE;
    int ldx=0, ldy=-6, isa=0, fstyle=0, fs=8;
    int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME,
    	fthold= IEM_BNG_DEFAULTHOLDFLASHTIME;
    t_symbol *srl[3]={0,0,0};
    pd_scanargs(argc,argv,"iiiiaaaiiiiiii",
	    &a,&fthold,&ftbreak,&isa,&srl[0],&srl[1],&srl[2],
	    &ldx,&ldy,&fstyle,&fs,&bflcol[0],&bflcol[1],&bflcol[2]);
    iem_inttosymargs(&x->x_gui.x_isa, isa);
    iem_inttofstyle(&x->x_gui.x_fsf, fstyle);
    iemgui_new_getnames2(&x->x_gui, 4, srl[0], srl[1], srl[2]);
    x->x_gui.x_draw = (t_iemfunptr)dropper_draw;
    x->x_gui.x_glist = (t_glist *)canvas_getcurrent();
    x->x_gui.x_ldx=ldx;
    x->x_gui.x_ldy=ldy;
    x->x_flashed = 0;
    x->x_gui.x_fsf.x_snd_able = strcmp(x->x_gui.x_snd->s_name, "empty")!=0;
    x->x_gui.x_fsf.x_rcv_able = strcmp(x->x_gui.x_rcv->s_name, "empty")!=0;
    iemgui_set_font_style((t_iemgui *)x, x->x_gui.x_fsf.x_font_style);
    sprintf(buf, "d%x", (int)x);
    x->x_gui.x_s = gensym(buf);
    pd_bind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_s);
    x->x_gui.x_fontsize = MAX(fs,4);
    x->x_gui.x_h = x->x_gui.x_w = iemgui_clip_size(a);
    iemgui_all_colfromload(&x->x_gui, bflcol);
    x->x_gui.x_isa.x_locked = 0;
    iemgui_verify_snd_ne_rcv(&x->x_gui);
    outlet_new(&x->x_gui.x_obj, &s_symbol);
    return (x);
}

static void dropper_ff(t_dropper *x)
{
    if(x->x_gui.x_fsf.x_rcv_able)
	pd_unbind(&x->x_gui.x_obj.ob_pd, x->x_gui.x_rcv);
    clock_free(x->x_clock_lck);
    clock_free(x->x_clock_brk);
    clock_free(x->x_clock_hld);
    gfxstub_deleteforkey(x);
}

void g_dropper_setup(void)
{
    t_class *c = dropper_class = class_new(gensym("dropper"), (t_newmethod)dropper_new,
	(t_method)dropper_ff, sizeof(t_dropper), 0, A_GIMME, 0);
    class_addsymbol(c, dropper_symbol);
    class_addmethod(c, (t_method)dropper_init, gensym("init"), A_FLOAT, 0);
    iemgui_register_class(c);
    dropper_widgetbehavior.w_getrectfn = dropper_getrect;
    dropper_widgetbehavior.w_displacefn = iemgui_displace;
    dropper_widgetbehavior.w_selectfn = iemgui_select;
    dropper_widgetbehavior.w_activatefn = NULL;
    dropper_widgetbehavior.w_deletefn = iemgui_delete;
    dropper_widgetbehavior.w_visfn = iemgui_vis;
    class_setwidget(dropper_class, &dropper_widgetbehavior);
    class_sethelpsymbol(dropper_class, gensym("dropper"));
    class_setsavefn(dropper_class, dropper_save);
}

Index: u_object.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/Attic/u_object.tk,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -C2 -d -r1.1.2.20 -r1.1.2.21
*** u_object.tk	26 Apr 2004 08:45:12 -0000	1.1.2.20
--- u_object.tk	26 Apr 2004 11:37:43 -0000	1.1.2.21
***************
*** 53,56 ****
--- 53,57 ----
  set fields(vdl)    $fields(hradio)
  set fields(vu)     [eval list $fields1 w h rcv lab ldx ldy fstyle fs bcol lcol scale isa]
+ set fields(dropper) [eval list $fields1 w hold break       isa $fields2]
  
  proc update_object {x d} {
***************
*** 802,803 ****
--- 803,846 ----
  	$canvas delete ${self}MASK
  }
+ 
+ 
+ #drag'n'drop filer
+ lappend auto_path .
+ package require tkdnd
+ 
+ proc dropper_draw {self canvas} {	
+      global _
+     set isnew [expr [llength [$canvas gettags ${self}DROPr]] == 0]
+     foreach {x1 y1} [object_xy $self $canvas] {}
+     set x2 [expr $x1+10 ]
+     set y2 [expr $y1+10 ]
+ #    set xs $_($self:w)
+ #    set ys $_($self:h)
+     set ins  [expr [string compare $_($self:rcv) empty]==0]
+     set outs [expr [string compare $_($self:snd) empty]==0]
+ #    io_draw $self $canvas $x1 $y1 24 24 $ins $outs
+     bluebox_draw $self $canvas $x1 $y1 24 24 $ins $outs
+     if {$isnew} {
+     $canvas create rectangle $x1 $y1 $x2 $y2 -tags ${self}DROPr -fill red
+ 	canvas $canvas.${self}DROP -width 20 -height 20 -bg purple
+ 	place $canvas.${self}DROP -x [expr $x1 + 10] -y $y1
+ 	dnd bindtarget $canvas.${self}DROP text/uri-list <Drop> "pd \"d[list ${self}] symbol [pdtk_enquote %D] ;\""
+     } {
+ 	place $canvas.${self}DROP -x [expr $x1 + 10] -y $y1
+ 	$canvas coords ${self}DROPr $x1 $y1 $x2 $y2
+     }
+     label_draw $self $canvas
+ 
+     return
+ }
+ 
+ proc dropper_select {self canvas flag} {
+ 	global look
+ 	if {$flag} {set colour #ff0000} {set colour $look(objectframe3)}
+ 	    $canvas itemconfigure ${self}DROPr -bg $colour
+ }
+ 
+ proc dropper_erase {self canvas} {
+     $canvas delete ${self}DROPr
+     bluebox_erase $self $canvas
+ }

Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.1.1.4.2.7.2.12
retrieving revision 1.1.1.4.2.7.2.13
diff -C2 -d -r1.1.1.4.2.7.2.12 -r1.1.1.4.2.7.2.13
*** g_canvas.c	17 Apr 2004 06:04:01 -0000	1.1.1.4.2.7.2.12
--- g_canvas.c	26 Apr 2004 11:37:43 -0000	1.1.1.4.2.7.2.13
***************
*** 1313,1316 ****
--- 1313,1317 ----
  DECL(canvas_vradio)
  DECL(canvas_vumeter)
+ DECL(canvas_dropper)
  DECL(canvas_mycnv)
  DECL(canvas_numbox)
***************
*** 1362,1365 ****
--- 1363,1367 ----
      DEF(canvas_vradio,"vradio");
      DEF(canvas_vumeter,"vumeter");
+     DEF(canvas_dropper,"dropper");
      DEF(canvas_mycnv,"mycnv");
      DEF(canvas_numbox,"numbox");





More information about the Pd-cvs mailing list