blob: 3c63022968cc0c063eccefb11c45c962a5e12b1f [file] [log] [blame]
menu .menu
toplevel .tk-R -menu .menu
wm protocol .tk-R WM_DELETE_WINDOW {}
pack [frame .tk-R.toolbar] -anchor n -fill x
pack [text .tk-R.term -bg white -font [list Courier 14]] -expand true -fill both
## Implements a "stop button" which sends SIGINT to the R process.
## Unfortunately, SIGINTs are not handled gracefully...
# pack [frame .tk-R.toolbar.stop -container true] -side right
# set stopscript $env(R_HOME)/library/tcltk/exec/stopit.tcl
# update
# exec wish -use [winfo id .tk-R.toolbar.stop] < $stopscript [pid] &
.tk-R.term mark set insert-mark "end - 1 chars"
focus .tk-R.term
set hist {}
set nhist 0
set saved {}
bind .tk-R.term <Return> {
.tk-R.term see end
.tk-R.term insert end "\n"
.tk-R.term mark set insert-mark "end - 1 chars"
.tk-R.term mark gravity insert-mark right
set terminput [.tk-R.term get process-mark "end - 1 chars"]
break
}
bind .tk-R.term <Up> {
global hist phist nhist saved
if ($phist<=0) break
if ($phist==$nhist) {
set saved [.tk-R.term get process-mark "end - 1 chars"]
}
.tk-R.term delete process-mark "end - 1 chars"
incr phist -1
.tk-R.term insert process-mark [lindex $hist $phist]
break
}
bind .tk-R.term <Down> {
global hist phist nhist saved
if ($phist>=$nhist) break
.tk-R.term delete process-mark "end - 1 chars"
incr phist
if ($phist<$nhist) {
.tk-R.term insert process-mark [lindex $hist $phist]
} else {
.tk-R.term insert process-mark $saved
}
break
}
proc Rc_read { prompt addtohistory } {
global terminput hist nhist phist
.tk-R.term mark set insert-mark "end - 1 chars"
.tk-R.term mark gravity insert-mark left
.tk-R.term insert insert-mark $prompt
.tk-R.term mark gravity insert-mark right
.tk-R.term mark set process-mark "end - 1 chars"
.tk-R.term mark gravity process-mark left
.tk-R.term see end
set phist $nhist
tkwait variable terminput
.tk-R.term mark set insert end
if ($addtohistory) then {
lappend hist [string trimright $terminput]
incr nhist
}
return $terminput
}
proc Rc_write { buf } {
.tk-R.term insert insert-mark $buf
.tk-R.term see end
#.tk-R.term mark set insert end
#update
}