Posted to tcl by kostix at Sat Feb 02 00:44:33 GMT 2008view raw
- grid rowconfigure . 0 -weight 1
- grid columnconfigure . 1 -weight 1
- grid [text .log] -columnspan 3 -sticky news
- grid [label .l -text Command:] -row 1 -column 0 -sticky we
- grid [entry .cmd -textvar cmd] -row 1 -column 1 -sticky we
- grid [button .exec -text Go! -command go] -row 1 -column 2 -sticky we
- bind .cmd <Return> go
- switch -- $tcl_platform(platform) {
- unix {
- if {[info exists env(SHELL)]} {
- set shell $env(SHELL)
- } else {
- set shell /bin/sh
- }
- }
- windows {
- if {[info exists env(COMSPEC)]} {
- set shell $env(COMSPEC)
- } else {
- set cmd.exe
- }
- }
- default {
- return -code error "Freaky platform"
- }
- }
- set fd [open [list | $shell] w+]
- fconfigure $fd -blocking no -buffering line
- fileevent $fd readable get
- proc get {} {
- variable fd
- if {[gets $fd line] < 0} {
- close $fd
- .log insert end "SHELL quit"
- } else {
- .log insert end $line
- }
- }
- proc go {} {
- variable cmd
- variable fd
- puts $fd $cmd
- }
- vwait forever