From 3204da1250f36047ad32fab52167d30ff812bb46 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 10 Nov 2011 23:57:24 +0000 Subject: full working implementation using canvas_getdir, and some help on tclpd style from mescalinum svn path=/trunk/externals/tclfile/; revision=15720 --- exists-help.pd | 34 +++++++++++++++++++++++----------- exists.tcl | 12 ++++++++++-- mkdir-help.pd | 16 ++++++++++++++-- mkdir.tcl | 36 +++++++++++++++++++----------------- 4 files changed, 66 insertions(+), 32 deletions(-) diff --git a/exists-help.pd b/exists-help.pd index 5dde020..09dd54a 100644 --- a/exists-help.pd +++ b/exists-help.pd @@ -1,11 +1,23 @@ -#N canvas 199 234 450 300 10; -#X obj 190 139 exists; -#X floatatom 193 175 5 0 0 0 - - -; -#X obj 194 199 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 --1 -1; -#X msg 205 76 symbol unexistent?; -#X msg 181 45 symbol exists.tcl; -#X connect 0 0 1 0; -#X connect 1 0 2 0; -#X connect 3 0 0 0; -#X connect 4 0 0 0; +#N canvas 199 234 450 300 10; +#X obj 33 166 exists; +#X floatatom 36 202 5 0 0 0 - - -; +#X obj 37 226 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X msg 65 91 symbol unexistent?; +#X msg 41 60 symbol exists.tcl; +#X obj 239 183 exists; +#X floatatom 242 219 5 0 0 0 - - -; +#X obj 243 243 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 247 77 bang; +#X msg 274 136 symbol /tmp/; +#X msg 290 158 /tmp; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 8 0 5 0; +#X connect 9 0 5 1; +#X connect 10 0 5 1; diff --git a/exists.tcl b/exists.tcl index 3ae3c58..eb8f650 100644 --- a/exists.tcl +++ b/exists.tcl @@ -2,6 +2,10 @@ package require Tclpd 0.2.3 package require TclpdLib 0.19 proc+ exists::constructor {self args} { + set @current_canvas [canvas_getcurrent] + # set to blank so the var always exists + set @filename {} + # add second inlet (first created by default) pd::add_inlet $self list @@ -16,8 +20,12 @@ proc+ exists::0_symbol {self args} { } proc+ exists::0_bang {self} { - if {![info exists @filename]} return - pd::outlet $self 0 float [file exists $@filename] + if {[file pathtype $@filename] eq "absolute"} { + pd::outlet $self 0 float [file exists $@filename] + } else { + set dir [[canvas_getdir $@current_canvas] cget -s_name] + pd::outlet $self 0 float [file exists [file join $dir $@filename]] + } } proc+ exists::1_symbol {self args} { diff --git a/mkdir-help.pd b/mkdir-help.pd index f271ab0..738f60f 100644 --- a/mkdir-help.pd +++ b/mkdir-help.pd @@ -1,2 +1,14 @@ -#N canvas 225 242 450 300 10; -#X obj 201 178 mkdir; +#N canvas 186 203 502 300 10; +#X obj 120 161 mkdir; +#X msg 120 109 symbol /tmp/blah; +#X obj 268 155 exists; +#X msg 268 109 symbol /tmp/blah; +#X obj 268 176 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 268 196 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 +-1 -1; +#X msg 275 128 symbol /tmp/created_after_bang; +#X connect 1 0 0 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 4 0 5 0; diff --git a/mkdir.tcl b/mkdir.tcl index 90b1641..c8c1666 100644 --- a/mkdir.tcl +++ b/mkdir.tcl @@ -1,31 +1,33 @@ package require Tclpd 0.2.3 package require TclpdLib 0.19 -pd::post "Loading mkdir.tcl" - proc+ mkdir::constructor {self args} { - # add outlet - pd::add_outlet $self list -} + set @current_canvas [canvas_getcurrent] + # set to blank so the var always mkdir + set @filename {} -# HOT inlet -proc+ mkdir::0_list {self args} { - pd::post "tclfile/mkdir: list" - #pd::outlet $self 0 list $@curlist + # add second inlet (first created by default) + pd::add_inlet $self list } -# HOT inlet proc+ mkdir::0_symbol {self args} { - pd::post "tclfile/mkdir: symbol" -# pd::outlet $self 0 list $@curlist + # HOT inlet + set @filename [pd::arg 0 symbol] + mkdir::0_bang $self } proc+ mkdir::0_bang {self} { - pd::post "tclfile/mkdir: bang" -# pd::outlet $self 0 list $@curlist + if {[file pathtype $@filename] eq "absolute"} { + file mkdir $@filename + } else { + set dir [[canvas_getdir $@current_canvas] cget -s_name] + file mkdir [file join $dir $@filename] + } } -pd::post "pd::class mkdir" -pd::class mkdir +proc+ mkdir::1_symbol {self args} { + # COLD inlet + set @filename [pd::arg 0 symbol] +} -pd::post "Finished reading mkdir.tcl" +pd::class mkdir -- cgit v1.2.1