David Zolli 2004-03-25: I've put a slightly modified starkit of this (tkhexedit) here: http://www.zolli.fr/fichiers/TkHexedit.zip
Comments?TV: I don't dislike WM... It looks neat, I didn't try it out or really scan the code, but it allways appears to me that certain things in tcl should be possible in less code, like one command gives you a standard text processor ,not knowing whether that's reasonable to say about this as example.AM: I looked at the starkit - the problem I have is that the font is proportional. It makes viewing the file rather awkward! (This was on Windows XP)
I wonder - is this something that would fit into tklib ?
SS: Great widget! I suggest two changes: 1) in the hex visualization, to show in some way what couple of digits are about the same byte. 2) Ability to toggle between insert and replace mode.AM: I have a few other wishes too (like the ability to interpret consecutive bytes as a number), but one gem hidden in here is that the two text widgets with the file's contents have visible line numbers. With a bit of reworking the code to isolate that behaviour that could be a valuable tool for Tklib as well!
Googie: I modified the widget that kroc put into sdarchive as tkhexedit. I added "marking" of two hex characters that represents single ascii character when user clicks on ascii character. There was already similar functionality working backwards, so I thought this is useful. The only procedure modified is widget:hex:ascii:event:Button-1, so it looks like this:
proc widget:hex:ascii:event:Button-1 {win x y} { set pos [$win.ascii index @$x,$y] $win.ascii mark set insert $pos $win.ascii mark set anchor insert focus $win.ascii $win.hex tag remove sel 0.0 end $win.ascii tag remove sel 0.0 end set cur [$win.ascii index insert] set splitIndex [split $cur .] set line [lindex $splitIndex 0] set curChar [lindex $splitIndex 1] set curChar [expr {$curChar * 2}] set asciiLine [$win.hex index @0,0] set offset [expr {int($line + $asciiLine - 1.0)}] set cur "$offset.$curChar" set end [$win.hex index "$cur + 2 chars"] $win.hex tag add sel $cur $end }