[PD-cvs] SF.net SVN: pure-data:[10381] trunk/externals/iem/iemguts/src/ autoabstraction.c
zmoelnig at users.sourceforge.net
zmoelnig at users.sourceforge.net
Tue Nov 25 10:11:25 CET 2008
Revision: 10381
http://pure-data.svn.sourceforge.net/pure-data/?rev=10381&view=rev
Author: zmoelnig
Date: 2008-11-25 09:11:25 +0000 (Tue, 25 Nov 2008)
Log Message:
-----------
added a way to turn off the autoabstraction-creation by sending the
[autoabstraction] object a "0" message
Modified Paths:
--------------
trunk/externals/iem/iemguts/src/autoabstraction.c
Modified: trunk/externals/iem/iemguts/src/autoabstraction.c
===================================================================
--- trunk/externals/iem/iemguts/src/autoabstraction.c 2008-11-25 09:00:26 UTC (rev 10380)
+++ trunk/externals/iem/iemguts/src/autoabstraction.c 2008-11-25 09:11:25 UTC (rev 10381)
@@ -12,6 +12,10 @@
*
* possible default abstraction: '#N canvas 0 0 450 300 10; #X vis 1;'
*
+ * TODO: currently the template-abstraction is only initialized once.
+ * this means that we cannot change the template after loading of "autoabstraction"
+ * - FIX(LATER): add a "reload"-message to the [autoabstraction] object
+ * - FIX(ALT): check whether the template-file has changed and reload it
*/
@@ -28,12 +32,14 @@
} t_autoabstraction;
static t_class *autoabstraction_class;
+static int s_state=0;
+
static char *version = "$Revision: 0.1 $";
/* this is the name of the filename that get's loaded as a default template for new abstractions */
-static char*templatefilename="autoabstraction.template";
+static char*s_templatefilename="autoabstraction.template";
/* if the loading above fails, we resort to a simple default abstraction that automatically opens up */
-static char*templatestring="#N canvas 0 0 450 300 10; #X vis 1;";
+static char*s_templatestring="#N canvas 0 0 450 300 10; #X vis 1;";
#if (PD_MINOR_VERSION >= 40)
@@ -61,20 +67,19 @@
#endif
-static t_binbuf*aa_bb=0;
+static t_binbuf*s_bb=0;
static void autoabstraction_save(t_canvas*canvas, char*classname) {
- t_binbuf*bb=0;
-
- if(!bb)
- bb=aa_bb;
-
- if(bb) {
+ if(!s_state) {
+ /* autoabstraction turned off... */
+ return;
+ }
+ if(s_bb) {
char name[MAXPDSTRING];
snprintf(name, MAXPDSTRING, "%s.pd", classname);
- binbuf_write(bb, name, "", 0);
+ binbuf_write(s_bb, name, "", 0);
} else {
verbose(1, "[autoabstraction]: no template");
}
@@ -102,33 +107,34 @@
return(0);
}
-
autoabstraction_save(canvas, classname);
-
/* we always fail, because we want Pd to do the real opening of abstractions */
return 0;
}
static void autoabstraction_initialize(void)
{
- aa_bb=binbuf_new();
+ s_bb=binbuf_new();
/* try to read a template file */
- if(binbuf_read(aa_bb, templatefilename, "", 0)) {
+ if(binbuf_read(s_bb, s_templatefilename, "", 0)) {
/* if this fails, use the default template */
- size_t length=strlen(templatestring);
+ size_t length=strlen(s_templatestring);
- binbuf_text(aa_bb, templatestring, length);
+ binbuf_text(s_bb, s_templatestring, length);
}
+ s_state=1;
}
-
-
#endif /* PD_MINOR_VERSION >= 40 */
+static void autoabstraction_state(t_autoabstraction*x, t_floatarg f)
+{
+ int state=(int)(f>=1.0);
+ s_state=state;
+}
-
static void*autoabstraction_new(t_symbol *s, int argc, t_atom *argv)
{
t_autoabstraction*x = (t_autoabstraction*)pd_new(autoabstraction_class);
@@ -151,5 +157,6 @@
error("\tor a version that has sys_register_loader()");
#endif
- autoabstraction_class = class_new(gensym("autoabstraction"), (t_newmethod)autoabstraction_new, 0, sizeof(t_autoabstraction), CLASS_NOINLET, A_GIMME, 0);
+ autoabstraction_class = class_new(gensym("autoabstraction"), (t_newmethod)autoabstraction_new, 0, sizeof(t_autoabstraction), 0, A_NULL, 0);
+ class_addfloat(autoabstraction_class, (t_method)autoabstraction_state);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Pd-cvs
mailing list