diff options
author | Nick White <git@njw.me.uk> | 2012-02-14 01:00:18 +0000 |
---|---|---|
committer | Nick White <git@njw.me.uk> | 2012-02-14 01:00:18 +0000 |
commit | af580806a4ac5b481bd53a85832fd76cf9742dc4 (patch) | |
tree | fc6b822ed242abce991ede9ace23dbf61fe688e9 | |
parent | 6a09f09349fdc0fe68615f2f933a5e13ea70e183 (diff) |
Make gui update smartly
-rw-r--r-- | TODO | 2 | ||||
-rwxr-xr-x | getxbookgui.tcl | 19 |
2 files changed, 12 insertions, 9 deletions
@@ -8,8 +8,6 @@ in getgbook, check that downloaded page doesn't match 'page not available' image package for osx - https://github.com/kennethreitz/osx-gcc-installer -use something smarter than update in gui to stop freezing - add https support to get (getabook can use it everywhere, others cannot) write some little tests diff --git a/getxbookgui.tcl b/getxbookgui.tcl index dabab2b..9183f36 100755 --- a/getxbookgui.tcl +++ b/getxbookgui.tcl @@ -4,19 +4,24 @@ package require Tk set bin [list getgbook getabook getbnbook] +proc updateStatus {chan} { + if {![eof $chan]} { + set a [gets $chan] + if { $a != "" } { .st configure -text $a } + } else { + close $chan + .dl configure -state normal -text "download" + .st configure -text "" + } +} + proc go {} { if { [.id get] == "" } { return } set cmd "[.bin get [.bin curselection]] [.id get]" .dl configure -state disabled -text "downloading" update set out [open "|$cmd 2>@1" "r"] - while {![eof $out]} { - set a [gets $out] - if { $a != "" } { .st configure -text $a } - update - } - .dl configure -state normal -text "download" - .st configure -text "" + fileevent $out readable [list updateStatus $out] } label .lab -text "book id" |