aboutsummaryrefslogtreecommitdiff
path: root/pd/src/u_main.tk
diff options
context:
space:
mode:
authorMiller Puckette <millerpuckette@users.sourceforge.net>2006-10-04 19:35:06 +0000
committerMiller Puckette <millerpuckette@users.sourceforge.net>2006-10-04 19:35:06 +0000
commitc65adb37b42c1c2134fd09d90ed7c6ced6817ae0 (patch)
tree381d7d125c72f102397031ec8cca2e812ac17f2e /pd/src/u_main.tk
parentfe06559c2970160ea141bbfc42f0ac21598321b1 (diff)
release 0.40-0
svn path=/trunk/; revision=6076
Diffstat (limited to 'pd/src/u_main.tk')
-rw-r--r--pd/src/u_main.tk43
1 files changed, 30 insertions, 13 deletions
diff --git a/pd/src/u_main.tk b/pd/src/u_main.tk
index e8a57f10..97fc77b4 100644
--- a/pd/src/u_main.tk
+++ b/pd/src/u_main.tk
@@ -432,15 +432,6 @@ proc menu_doc_browser {dir} {
}
proc doc_make_listbox {base dir count} {
- global pd_guidir
- if {![file isdirectory $dir]} {
- regsub -- $pd_guidir [file dirname $dir] "" subdir
- set file [file tail $dir]
- if { [catch {menu_doc_open $subdir $file} fid] } {
- puts stderr "Could not open $pd_guidir/$subdir/$file\n"
- }
- return;
- }
# check for [file readable]?
if { [info tclversion] >= 8.5 } {
# requires Tcl 8.5 but probably deals with special chars better
@@ -461,14 +452,36 @@ proc doc_make_listbox {base dir count} {
[lsort -dictionary [glob -directory $dir -nocomplain -types {f} -- *]]] {
$current_listbox insert end "[file tail $item][expr {[file isdirectory $item] ? {/} : {}}]"
}
- bind $current_listbox <Button-1> [list doc_navigate $dir [incr count] %W %x %y]
+ bind $current_listbox <Button-1> [list doc_navigate $dir $count %W %x %y]
+ bind $current_listbox <Double-Button-1> [list doc_double_button $dir $count %W %x %y]
}
proc doc_navigate {dir count width x y} {
- if {[set subdir [$width get [$width index "@$x,$y"]]] eq {}} {
+ if {[set newdir [$width get [$width index "@$x,$y"]]] eq {}} {
+ return
+ }
+ set dir_to_open [file join $dir $newdir]
+ if {[file isdirectory $dir_to_open]} {
+ doc_make_listbox [winfo parent $width] $dir_to_open [incr count]
+ }
+}
+
+proc doc_double_button {dir count width x y} {
+ global pd_guidir
+ if {[set newdir [$width get [$width index "@$x,$y"]]] eq {}} {
return
}
- doc_make_listbox [winfo parent $width] [file join $dir $subdir] $count
+ set dir_to_open [file join $dir $newdir]
+ if {[file isdirectory $dir_to_open]} {
+ doc_navigate $dir $count $width $x $y
+ } else {
+ regsub -- $pd_guidir [file dirname $dir_to_open] "" subdir
+ set file [file tail $dir_to_open]
+ if { [catch {menu_doc_open $subdir $file} fid] } {
+ puts stderr "Could not open $pd_guidir/$subdir/$file\n"
+ }
+ return;
+ }
}
############# routine to add media, help, and apple menu items ###############
@@ -3413,7 +3426,11 @@ proc pdtk_openpanel {target localdir} {
}
proc pdtk_savepanel {target localdir} {
- set filename [tk_getSaveFile -initialdir $localdir]
+ if {$localdir == ""} {
+ set filename [tk_getSaveFile]
+ } else {
+ set filename [tk_getSaveFile -initialdir $localdir]
+ }
if {$filename != ""} {
pd [concat $target callback [pdtk_enquote $filename] \;]
}