diff options
Diffstat (limited to 'packages/darwin_app')
-rw-r--r-- | packages/darwin_app/AppMain.tcl | 93 | ||||
-rwxr-xr-x | packages/darwin_app/mkdocs | 34 |
2 files changed, 111 insertions, 16 deletions
diff --git a/packages/darwin_app/AppMain.tcl b/packages/darwin_app/AppMain.tcl index fc4347a6..b4bbac17 100644 --- a/packages/darwin_app/AppMain.tcl +++ b/packages/darwin_app/AppMain.tcl @@ -1,30 +1,91 @@ -# from http://aspn.activestate.com/ASPN/Mail/Message/tcl-mac/2115298 -# tk::mac::OpenDocument is called when docs are dropped -# on the Dock icon with the filenames put into the var args -proc tk::mac::OpenDocument {args} { - foreach file $args { - puts $file - } +proc log {message} { + exec sh -c "/bin/echo $message" >/dev/stderr +} + +proc alert {message} { + tk_messageBox -message $message -type ok -icon question } proc default_keybindings {} { - return { exit CMD-q } + return { exit CMD-q } } -#console show +proc checkPort { port } { + if { + [catch {set result [exec sh -c "/usr/sbin/netstat -an |grep $port"] } errn] } { + # the command returns no result, so the port is not used + return true + } else { + return false + } +} + +proc waitForPort { port } { + for {set x 0} {$x<30} {incr x} { + after 100 + if {![checkPort $port]} { + return true + } + } + return false +} + + + +proc loadpdtcl { } { + global pd_guidir + # wait for pd to start + if {[waitForPort 5400]} { + if { + [catch {load $pd_guidir/bin/pdtcl } errmsg] } { + alert "can't connect to pd : $errmsg" + exit(1) + } + } else { + alert "Couldn't start Pd" + } +} + + + +##### startup ################################################################## + +global pd_guidir +global pd_port # get the path to the Wish Shell so a relative path can be # used to launch Pd -regsub -- "Wish Shell" [info nameofexecutable] "" wish_path -exec open $wish_path/../Resources/Pd.term +regsub -- "Pd" [info nameofexecutable] "" wish_path +puts "$wish_path/../Resources/lib/pd/bin/pd.tk" + +# set paths +set pd_guidir [file join [file dirname [file dirname [info script]]] lib pd] +set pd_exec_path [file join [file dirname [file dirname [info script]]] bin] + +# launch pd -a dummy guicmd prevents starting the wish shell +if {[checkPort 5400]} { + exec sh -c "cd $pd_exec_path;./pd -guicmd /bin/echo" >&/dev/stderr & +} else { + alert "Can't start pd because the port 5400 is in use" + exit(1) +} -puts "wish_path $wish_path" -#if {[string first "-psn" [lindex $argv 0]] == 0} { -# set argv [lrange $argv 1 end] -#} +# open gui +source [file join $pd_guidir bin pd.tk] +################################################################################ -exit + +# depends on pd.tk +# tk::mac::OpenDocument is called when docs are dropped +# on the Dock icon with the filenames put into the var args +proc tk::mac::OpenDocument {args} { + foreach file $args { + pd [concat pd open [pdtk_enquote [file tail $file]] \ + [pdtk_enquote [file dirname $file]] \;] + menu_doc_open [file dirname $file] [file tail $file] + } +} diff --git a/packages/darwin_app/mkdocs b/packages/darwin_app/mkdocs new file mode 100755 index 00000000..111b0a36 --- /dev/null +++ b/packages/darwin_app/mkdocs @@ -0,0 +1,34 @@ +#!/bin/bash +dir=`basename "$1"` +y=0 +count=0 + +echo "#N canvas 200 22 300 500 10;" + +for eachitem in $1/*.pd +do + let count=$count+1 +done + +let y=$count*25+50 + +echo "#N canvas 0 22 454 304 opendoc 0;" +echo "#X obj 35 66 symbol;" +echo "#X obj 34 38 inlet;" +echo "#X msg 35 90 \; pd open \\\$1 ../lib/pd/doc/$dir/ \;;" +echo "#X connect 0 0 2 0;" +echo "#X connect 1 0 0 0;" +echo "#X restore 50 $y pd opendoc;" + +count=0 + +for eachitem in $1/*.pd +do + name=`basename $eachitem` + let y=25+$count*25 + msg="#X msg 50 $y $name;" + let count=$count+1 + con="#X connect $count 0 0 0;" + echo $msg + echo $con +done |