diff options
author | Thomas O Fredericks <mrtof@users.sourceforge.net> | 2007-09-10 22:25:41 +0000 |
---|---|---|
committer | Thomas O Fredericks <mrtof@users.sourceforge.net> | 2007-09-10 22:25:41 +0000 |
commit | 31f625c4e5eaf443872eece61b9a7156121669d9 (patch) | |
tree | c35dc757a113af4cb6ce87577a1bae6026ef2430 /folderpanel |
This commit was generated by cvs2svn to compensate for changes in r8719,svn2git-root
which included commits to RCS files with non-trunk default branches.
svn path=/trunk/externals/tof/; revision=8720
Diffstat (limited to 'folderpanel')
-rw-r--r-- | folderpanel/folderpanel-help.pd | 13 | ||||
-rw-r--r-- | folderpanel/folderpanel.c | 89 | ||||
-rwxr-xr-x | folderpanel/makefile | 60 |
3 files changed, 162 insertions, 0 deletions
diff --git a/folderpanel/folderpanel-help.pd b/folderpanel/folderpanel-help.pd new file mode 100644 index 0000000..04e1427 --- /dev/null +++ b/folderpanel/folderpanel-help.pd @@ -0,0 +1,13 @@ +#N canvas 0 0 450 300 10; +#X obj 146 135 folderpanel; +#X obj 157 95 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 228 202 folderpanel; +#X obj 142 170 print A; +#X obj 227 241 print B; +#X obj 244 162 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X connect 0 0 3 0; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 5 0 2 0; diff --git a/folderpanel/folderpanel.c b/folderpanel/folderpanel.c new file mode 100644 index 0000000..51d735b --- /dev/null +++ b/folderpanel/folderpanel.c @@ -0,0 +1,89 @@ +#include <stdio.h> +#include <string.h> +#include "m_pd.h" +#include "g_canvas.h" + +// tk_chooseDirectory +/* + +proc pdtk_folderpanel {target localdir} { + if {$localdir == ""} { + set filename [tk_getSaveFile] + } else { + set filename [tk_getSaveFile -initialdir $localdir] + } + if {$filename != ""} { + pd [concat $target callback [pdtk_enquote $filename] \;] + } +} + + +*/ + + + + +t_class *folderpanel_class; + +typedef struct _folderpanel +{ + t_object x_obj; + t_symbol *x_s; +} t_folderpanel; + + +static void folderpanel_symbol(t_folderpanel *x, t_symbol *s) +{ + char *path = (s && s->s_name) ? s->s_name : "\"\""; + sys_vgui("tof_folderpanel %s \n", x->x_s->s_name); +} + +static void folderpanel_bang(t_folderpanel *x) +{ + folderpanel_symbol(x, &s_); +} + +static void folderpanel_callback(t_folderpanel *x, t_symbol *s) +{ + outlet_symbol(x->x_obj.ob_outlet, s); +} + +static void folderpanel_free(t_folderpanel *x) +{ + pd_unbind(&x->x_obj.ob_pd, x->x_s); +} + +static void *folderpanel_new( void) +{ + char buf[50]; + t_folderpanel *x = (t_folderpanel *)pd_new(folderpanel_class); + sprintf(buf, "d%lx", (t_int)x); + x->x_s = gensym(buf); + pd_bind(&x->x_obj.ob_pd, x->x_s); + outlet_new(&x->x_obj, &s_symbol); + return (x); +} + +void folderpanel_setup(void) +{ + folderpanel_class = class_new(gensym("folderpanel"), + (t_newmethod)folderpanel_new, (t_method)folderpanel_free, + sizeof(t_folderpanel), 0, 0); + class_addbang(folderpanel_class, folderpanel_bang); + class_addsymbol(folderpanel_class, folderpanel_symbol); + class_addmethod(folderpanel_class, (t_method)folderpanel_callback, + gensym("callback"), A_SYMBOL, 0); + + + sys_gui("proc tof_folderpanel {target} {\n"); + sys_gui(" set path [tk_chooseDirectory] \n"); + sys_gui(" if {$path != \"\"} {\n"); + sys_gui(" pd [concat $target callback [pdtk_enquote $path]] \\;\n"); + sys_gui(" }\n"); + sys_gui("}\n"); + + + +} + + diff --git a/folderpanel/makefile b/folderpanel/makefile new file mode 100755 index 0000000..bab0766 --- /dev/null +++ b/folderpanel/makefile @@ -0,0 +1,60 @@ +current:
+ echo make pd_linux, pd_win, or pd_darwin
+
+clean: ; rm -f *.pd_linux *.o
+
+# ----------------------- WINDOWS -----------------------
+
+pd_win: folderpanel.dll
+
+.SUFFIXES: .dll
+
+WINCFLAGS = -Wall -W -Wshadow -Wstrict-prototypes -DPD -DNT -W3 -WX -Werror -Wno-unused -mms-bitfields -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer
+
+WINPDPATH = /home/tom/pd0.4
+
+WININCLUDE = -I.. -I../include -I$(WINPDPATH)/src
+
+LDFLAGS = -shared
+
+.c.dll:
+ gcc -mms-bitfields $(WINCFLAGS) $(WININCLUDE) -o $*.o -c $*.c
+ gcc $(LDFLAGS) -o $*.dll $*.o $(WINPDPATH)/bin/pd.dll
+ strip --strip-unneeded $*.dll
+ rm -f $*.o
+
+
+# ----------------------- LINUX i386 -----------------------
+
+pd_linux: folderpanel.pd_linux
+
+.SUFFIXES: .pd_linux
+ +PDPATH = /home/tom/pd/cvs/pd +
+LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer \
+ -Wall -W -Wshadow -Wstrict-prototypes -Werror \
+ -Wno-unused -Wno-parentheses -Wno-switch
+
+LINUXINCLUDE = -I$(PDPATH)/src
+
+.c.pd_linux:
+ cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c
+ ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm
+ strip --strip-unneeded $*.pd_linux
+ rm $*.o
+
+# ----------------------- Mac OSX -----------------------
+
+pd_darwin: folderpanel.pd_darwin
+
+.SUFFIXES: .pd_darwin
+
+DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \
+ -Wno-unused -Wno-parentheses -Wno-switch
+
+.c.pd_darwin:
+ cc $(DARWINCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c
+ cc -bundle -undefined suppress -flat_namespace -o $*.pd_darwin $*.o
+ rm -f $*.o
+
|