blob: b4bbac1787166a5bff12f8e86243d818f0bbf6bd (
plain)
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
|
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 }
}
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 -- "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)
}
# open gui
source [file join $pd_guidir bin pd.tk]
################################################################################
# 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]
}
}
|