Michael Jacobson: A quick little GUI for the CueCat library

 wm title . {TkCatScan}
 wm iconname . {CatScan}
 package require CueCat

 proc Decode {} {
    set cat_str [.tx.entry get] 
    if {$cat_str != "" } {
            .tx.entry delete 0 end
            set cat_decode "SCAN# [CueCat::DecodeNOID $cat_str]"
            append cat_decode "\n"
            if {[regexp ^IB [lindex $cat_decode 1]]} {
                       append cat_decode "ISBN# [CueCat::ISBN $cat_decode] [CueCat::BookCost $cat_decode] \n"
                .tx.text insert 1.0 $cat_decode
    grab release .tx.entry

 proc PlaceData {} {
    grab .tx.entry
    focus .tx.entry

 set I1 "Scan the Data"
 frame .tx
 label .tx.label -textvariable I1
 entry .tx.entry -width 60 -relief sunken
 text .tx.text  -yscrollcommand ".tx.scroll set"
 scrollbar .tx.scroll -command ".tx.text yview"
 pack .tx.label -side top
 pack .tx.entry -side top
 pack .tx.scroll -side left -fill y
 pack .tx.text -side left
 pack .tx -side top
 bind .tx.entry <Return> {Decode}
 bind all <Alt-F10> {PlaceData}
 focus .tx.entry