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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
#
# ccode.tk
#
proc ccode(build) name {
global Parser
global Ccode
set Ccode(Filename) "pmodel_def.c"
set Ccode(Directory) $Parser(Directory)
set Ccode(Mapping_Flag) $Parser(Mapping_Flag)
build_Title $name "Dynamical system C code"
build_DismissButtonbar $name dbbar "window(dismiss) ccode" \
{"Load..." {ccode(preload)} } \
{"Save..." {ccode(presave)} } \
{"Clear" {ccode(clear)} }
set cmd [build_CmdFrame $name cmd]
build_Filename $cmd f Ccode(Filename) Ccode(Directory)
set stext [build_Scrollingtext $cmd stext 50 28]
pack $cmd -fill both -expand 1
ccode(init)
}
proc ccode(init) {} {
global Ccode
global Parser
if { [file exists $Parser(Tempfile)] == 1 \
&& [file readable $Parser(Tempfile)] == 1} {
ccode(clear)
set f [open "$Parser(Tempfile)" r]
while {![eof $f]} {
.ccode.cmd.stext.text insert end [read $f 1000]
}
close $f
exec /bin/rm -rf "$Parser(Tempfile)"
} else {
ccode(noop)
}
}
proc ccode(noop) {} {
}
proc ccode(clear) {} {
.ccode.cmd.stext.text delete 1.0 end
}
proc ccode(load) {} {
global Ccode
ccode(clear)
set f [open "$Ccode(Directory)/$Ccode(Filename)" r]
while {![eof $f]} {
.ccode.cmd.stext.text insert end [read $f 1000]
}
close $f
}
proc ccode(upfile) {} {
global Ccode
global File
set Ccode(Filename) $File(Filename)
set Ccode(Directory) $File(Directory)
}
proc ccode(preload) {} {
global Ccode
window(open) filesl
filesl(init) "Load" \
"*.c" \
$Ccode(Directory) \
$Ccode(Filename) \
"ccode(upfile)" \
"ccode(load)"
}
proc ccode(presave) {} {
global Ccode
window(open) filesl
filesl(init) "Save" \
"*.c" \
$Ccode(Directory) \
$Ccode(Filename) \
"ccode(upfile)" \
"ccode(save)"
}
proc ccode(save) {} {
global Ccode
set f [open "$Ccode(Directory)/$Ccode(Filename)" w]
set Ccode(Text) [.ccode.cmd.stext.text get 1.0 end]
puts $f $Ccode(Text)
close $f
}
proc ccode(oldsave) {} {
global Ccode
begin_wait "Saving C file $Ccode(Filename)"
set status [file exists "$Ccode(Directory)"]
if {$status == 0} {
end_wait "Invalid directory $Ccode(Directory)"
return
}
set status [file exists "$Ccode(Directory)/$Ccode(Filename)"]
if {$status == 1} {
end_wait "Overwriting C file $Ccode(Filename)"
set f [open "$Ccode(Directory)/$Ccode(Filename)" w]
set Ccode(Text) [.ccode.cmd.stext.text get 1.0 end]
puts $f $Ccode(Text)
close $f
} else {
end_wait "Saving C file $Ccode(Filename)"
set f [open "$Ccode(Directory)/$Ccode(Filename)" w]
set Ccode(Text) [.ccode.cmd.stext.text get 1.0 end]
puts $f $Ccode(Text)
close $f
}
}
proc ccode(oldload) {} {
global Ccode
ccode(clear)
begin_wait "Loading C file $Ccode(Filename)"
set status [file exists "$Ccode(Directory)/$Ccode(Filename)"]
if {$status == 1 } {
set f [open "$Ccode(Directory)/$Ccode(Filename)" r]
while {![eof $f]} {
.ccode.cmd.stext.text insert end [read $f 1000]
}
close $f
end_wait "Succesful load file $Ccode(Filename)"
} else {
end_wait "Failed load file $Ccode(Filename)"
}
}
|