/usr/lib/puredata/tcl/wheredoesthisgo.tcl is in puredata-gui 0.46.7-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | package provide wheredoesthisgo 0.1
# a place to temporarily store things until they find a home or go away
proc open_file {filename} {
set directory [file normalize [file dirname $filename]]
set basename [file tail $filename]
if {
[file exists $filename]
&& [regexp -nocase -- "\.(pd|pat|mxt)$" $filename]
} then {
::pdtk_canvas::started_loading_file [format "%s/%s" $basename $filename]
pdsend "pd open [enquote_path $basename] [enquote_path $directory]"
# now this is done in pd_guiprefs
::pd_guiprefs::update_recentfiles $filename
} {
::pdwindow::post [format [_ "Ignoring '%s': doesn't look like a Pd-file"] $filename]
}
}
# ------------------------------------------------------------------------------
# procs for panels (openpanel, savepanel)
proc pdtk_openpanel {target localdir} {
if {! [file isdirectory $localdir]} {
if { ! [file isdirectory $::fileopendir]} {
set ::fileopendir $::env(HOME)
}
set localdir $::fileopendir
}
set filename [tk_getOpenFile -initialdir $localdir]
if {$filename ne ""} {
set ::fileopendir [file dirname $filename]
pdsend "$target callback [enquote_path $filename]"
}
}
proc pdtk_savepanel {target localdir} {
if {! [file isdirectory $localdir]} {
if { ! [file isdirectory $::filenewdir]} {
set ::filenewdir $::env(HOME)
}
set localdir $::filenewdir
}
set filename [tk_getSaveFile -initialdir $localdir]
if {$filename ne ""} {
pdsend "$target callback [enquote_path $filename]"
}
}
# ------------------------------------------------------------------------------
# window info (name, path, parents, children, etc.)
proc lookup_windowname {mytoplevel} {
set window [array get ::windowname $mytoplevel]
if { $window ne ""} {
return [lindex $window 1]
} else {
return ERROR
}
}
proc tkcanvas_name {mytoplevel} {
return "$mytoplevel.c"
}
# ------------------------------------------------------------------------------
# quoting functions
# enquote a string for find, path, and startup dialog panels, to be decoded by
# sys_decodedialog()
proc pdtk_encodedialog {x} {
concat +[string map {" " "+_" "$" "+d" ";" "+s" "," "+c" "+" "++"} $x]
}
# encode a list with pdtk_encodedialog
proc pdtk_encode { listdata } {
set outlist {}
foreach this_path $listdata {
if {0==[string match "" $this_path]} {
lappend outlist [pdtk_encodedialog $this_path]
}
}
return $outlist
}
# TODO enquote a filename to send it to pd, " isn't handled properly tho...
proc enquote_path {message} {
string map {"," "\\," ";" "\\;" " " "\\ "} $message
}
#enquote a string to send it to Pd. Blow off semi and comma; alias spaces
#we also blow off "{", "}", "\" because they'll just cause bad trouble later.
proc unspace_text {x} {
set y [string map {" " "_" ";" "" "," "" "{" "" "}" "" "\\" ""} $x]
if {$y eq ""} {set y "empty"}
concat $y
}
# ------------------------------------------------------------------------------
# watchdog functions
proc pdtk_watchdog {} {
pdsend "pd watchdog"
after 2000 {pdtk_watchdog}
}
proc pdtk_ping {} {
pdsend "pd ping"
}
|