Updated 2013-01-20 09:42:51 by pooryorick

Richard Suchenwirth 2004-10-01 - After I posted icoview, kroc hinted me to the pure-Tcl ico extension in Tklib. This can also read (and write!) Windows icons from .exe and .dll files, and contains the ico::Show displayer, which renders the found images - in a slightly surprising way, as it packs a scrolled window under ., without having been told so, and adds a labelframe for each shown file.

So here's my tiny wrapper around ico::Show, which just contributes an entry for the file name, and a Select (...) button which brings up a file selector:
package require Tk
package require ico 0.3

pack [frame .f] -fill x
pack [button .f.b -text ... -command select] -side right
pack [entry .f.e -textvariable filename -width 60] \
    -fill x -expand 1 -side left
bind .f.e <Return> {ico::Show $filename}
set ::dir [file dir [info script]]
proc select {} {
    set fn [tk_getOpenFile -initialdir $::dir -f {
        {"All Icons" .exe} {"All Icons" .ico} {"All Icons" .dll}
        {Exe .exe} {DLL .dll} {Icon .ico} {"All files" *}}]
    if {$fn ne ""} {
        set ::dir [file dir $fn]
        set ::filename $fn
        ico::Show $fn
    }
}
select

bind . <Escape> {exec wish $argv0 &; exit}

MG Oct 2nd 2004 - Edited very slightly so that the tk_getOpenFile has an option that shows .exe, .dll and .ico files all at once, so you can view all the valid "icon" files without all the spam of viewing *.*.

Eugene 2011 February 26 - Seems that ::ico::Show isn't available anymore in ico package version 1.0.5 (the latest one teacup delivered me).