Revision: 10037 http://pure-data.svn.sourceforge.net/pure-data/?rev=10037&view=rev Author: lukeiannini Date: 2008-06-18 14:06:16 -0700 (Wed, 18 Jun 2008)
Log Message: ----------- getpatchname parent query capability and helpfile to match
Modified Paths: -------------- trunk/externals/postlude/getpatchname/doc/getpatchname-help.pd trunk/externals/postlude/getpatchname/src/getpatchname.c
Modified: trunk/externals/postlude/getpatchname/doc/getpatchname-help.pd =================================================================== --- trunk/externals/postlude/getpatchname/doc/getpatchname-help.pd 2008-06-18 20:57:21 UTC (rev 10036) +++ trunk/externals/postlude/getpatchname/doc/getpatchname-help.pd 2008-06-18 21:06:16 UTC (rev 10037) @@ -1,4 +1,4 @@ -#N canvas 0 0 450 300 10; +#N canvas 0 22 426 546 10; #X obj 160 101 loadbang; #X symbolatom 160 170 20 0 0 0 - - -; #X obj 239 102 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 @@ -9,6 +9,23 @@ #X text 26 236 Note: at the moment it retains the name of the patch returned when the object was instantiated. This will be revised in future versions; +#X msg 87 359 bang; +#X obj 87 435 print; +#X msg 282 356 bang; +#X obj 282 432 print; +#X text 26 468 If there is no parent at that level , it returns the +directory as if there was no argument , i.e. level 0; +#X text 26 302 You can also get the name of the parent patch , if +this patch is an object embedded in another patch. You use the argument +to set how many levels up to go:; +#X obj 87 397 getpatchname 1; +#X obj 282 394 getpatchname 2; +#X text 27 509 (thanks to Gunter Geiger for "parent" code and helptext) +; #X connect 0 0 4 0; #X connect 2 0 4 0; #X connect 4 0 1 0; +#X connect 6 0 12 0; +#X connect 8 0 13 0; +#X connect 12 0 7 0; +#X connect 13 0 9 0;
Modified: trunk/externals/postlude/getpatchname/src/getpatchname.c =================================================================== --- trunk/externals/postlude/getpatchname/src/getpatchname.c 2008-06-18 20:57:21 UTC (rev 10036) +++ trunk/externals/postlude/getpatchname/src/getpatchname.c 2008-06-18 21:06:16 UTC (rev 10037) @@ -1,4 +1,3 @@ - /* getpatchname - Returns the filename of the current patch * * Copyright (C) 2006 Jamie Bullock @@ -27,28 +26,38 @@ t_object x_obj; t_symbol *patch_name; t_outlet *outlet; + t_canvas *x_canvas; + int x_level; } t_getpatchname;
void getpatchname_bang(t_getpatchname *x) { /* At some point we need to be to get the new patch name if it changes, couldn't make this work though */ - outlet_symbol(x->outlet, x->patch_name); + int i = x->x_level; + t_canvas* last = x->x_canvas; + + while (i>0) { + i--; + if (last->gl_owner) last = last->gl_owner; + } + + outlet_symbol(x->outlet, last->gl_name); }
-void *getpatchname_new(void) +void *getpatchname_new(t_floatarg level) { t_getpatchname *x = (t_getpatchname *)pd_new(getpatchname_class); x->patch_name = canvas_getcurrent()->gl_name; + x->x_canvas = canvas_getcurrent(); x->outlet = outlet_new(&x->x_obj, &s_symbol); + x->x_level = level; return (void *)x; }
void getpatchname_setup(void) { getpatchname_class = class_new(gensym("getpatchname"), (t_newmethod)getpatchname_new, - 0, sizeof(t_getpatchname), - CLASS_DEFAULT, 0); + 0, sizeof(t_getpatchname), 0, + A_DEFFLOAT, 0); class_addbang(getpatchname_class, getpatchname_bang); } - -
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.