Richard Suchenwirth 2006-02-07 - As if there weren't already enough font viewers around, I had to roll my own for Sepp. I first tried the one from BWidget, but the geometry was misfit for PocketPC (and I couldn't hot-patch it, since the dialog is modal), and the sample text was fixed in a label, while I wanted it to be editable, as text widget, and to have the selected font/size/style combo in the clipboard, so I could paste it into the editor.
So, here goes (testable standalone on desktop, too):
proc fontview {} { global g if ![winfo exists .fv] { toplevel .fv wm title .fv "Select Font" listbox .fv.fam -yscrollcommand ".fv.1 set" \ -width 22 -exportselection 0 eval .fv.fam insert end [lsort -dic [font families]] scrollbar .fv.1 -command ".fv.fam yview" listbox .fv.s -yscrollcommand ".fv.2 set" -width 4 -exportselection 0 .fv.s insert end 6 7 8 9 10 11 12 13 14 15 16 17 18 19 \ 20 22 24 28 32 36 40 scrollbar .fv.2 -command ".fv.s yview" frame .fv.f checkbutton .fv.f.b -text Bold -variable g(Bold) checkbutton .fv.f.i -text Italic -variable g(Italic) label .fv.f.dummy -text " " button .fv.f.ok -text Copy -command { clipboard clear; clipboard append [list [.fv.t cget -font]] } eval pack [winfo children .fv.f] -anchor w -fill x grid .fv.fam .fv.1 .fv.s .fv.2 .fv.f -sticky ns -padx 2 grid [text .fv.t -width 1 -height 2 -wrap word] - - - - -sticky news grid columnconfig .fv 0 -weight 1 grid rowconfig .fv 1 -weight 1 .fv.t tag config center -justify center .fv.t insert end "Sample text" center wm geometry .fv 240x268 foreach w {.fv.fam .fv.s .fv.f.b .fv.f.i} { bind $w <ButtonRelease-1> {after 1 {fontview'update .fv}} } } wm deiconify .fv } proc fontview'update w { set style "" if $::g(Bold) {set style bold} if $::g(Italic) {lappend style italic} set size [$w.s get anchor] if {$size eq ""} return set font [list [$w.fam get anchor] $size $style] $w.t config -font $font } if {[file tail [info script]] eq [file tail $argv0]} { fontview bind all <Escape> {exec wish $argv0 &; exit} }