diff --git a/src/pd.tk b/src/pd.tk index e54fd2913df20f7bf92dee54000f49eab764c030..d756782f2cf38cfa207b494d9253375ed0af4472 100644 --- a/src/pd.tk +++ b/src/pd.tk @@ -958,8 +958,16 @@ proc menu_open {} { } } +proc pdtk_set_current_dir {path_and_filename} { + global pd_opendir untitled_directory + set directory [file dirname $path_and_filename] + set pd_opendir $directory + set untitled_directory $directory +} + proc open_file {filename} { global pd_opendir pd_guidir pd_nt + puts stderr open_file set directory [file dirname $filename] set basename [file tail $filename] if {[regexp -nocase -- "\.(pat|mxb|help)$" $basename]} { @@ -3245,32 +3253,28 @@ proc pdtk_canvas_saveas {name initfile initdir} { set filename [tk_getSaveFile -initialfile $initfile -initialdir $initdir \ -defaultextension .pd -filetypes $filetypes] - if {$filename != ""} { - # yes, we need the extent even if we're on a mac. - if {$pd_nt == 2} { - if {[string last .pd $filename] < 0 && \ - [string last .PD $filename] < 0 && \ - [string last .pat $filename] < 0 && \ - [string last .PAT $filename] < 0} { - set filename $filename.pd - if {[file exists $filename]} { - set answer [tk_messageBox \ - \-message [concat overwrite $filename "?"] \ - \-type yesno \-icon question] - if {! [string compare $answer no]} {return} - } - } - } + if {$filename eq ""} return; # they clicked cancel - set directory [string range $filename 0 \ - [expr [string last / $filename ] - 1]] - set basename [string range $filename \ - [expr [string last / $filename ] + 1] end] - pd [concat $name savetofile [pdtk_enquote $basename] \ - [pdtk_enquote $directory] \;] - # pd [concat $name savetofile $basename $directory \;] - set untitled_directory $directory + set extension [file extension $filename] + set oldfilename $filename + set filename [regsub -- "$extension$" $filename [string tolower $extension]] + if { ! [regexp -- "\.(pd|pat|mxt)$" $filename]} { + # we need the file extention even on Mac OS X + set filename $filename.pd } + # test again after downcasing and maybe adding a ".pd" on the end + if {$filename ne $oldfilename && [file exists $filename]} { + set answer [tk_messageBox -type okcancel -icon question -default cancel\ + -message [_ "\"$filename\" already exists. Do you want to replace it?"]] + if {$answer eq "cancel"} return; # they clicked cancel + } + + set directory [file dirname $filename] + set basename [file tail $filename] + pd [concat $name savetofile [pdtk_enquote $basename] \ + [pdtk_enquote $directory] \;] + # pd [concat $name savetofile $basename $directory \;] + set untitled_directory $directory } ############ pdtk_canvas_dofont -- run a font and resize dialog ######### diff --git a/src/s_main.c b/src/s_main.c index b351474a350292f3725125f931b17fcd7f46217e..3af5abadc2f5676d1cf73a1304af605a74ee5960 100644 --- a/src/s_main.c +++ b/src/s_main.c @@ -182,6 +182,7 @@ static void openit(const char *dirname, const char *filename) { close (fd); glob_evalfile(0, gensym(nameptr), gensym(dirbuf)); + sys_vgui("pdtk_set_current_dir %s\n", filename); } else error("%s: can't open", filename);