Summary edit
Richard Suchenwirth 2003-04-02: Here is a custom dialog - a toplevel that prompts for a value:Description edit
proc value_dialog {string} {
set w [toplevel .[clock seconds]]
wm resizable $w 0 0
wm title $w "Value request"
label $w.l -text $string
entry $w.e -textvar $w -bg white
bind $w.e <Return> {set done 1}
button $w.ok -text OK -command {set done 1}
button $w.c -text Clear -command "set $w {}"
button $w.cancel -text Cancel -command "set $w {}; set done 1"
grid $w.l - - -sticky news
grid $w.e - - -sticky news
grid $w.ok $w.c $w.cancel
vwait done
destroy $w
set ::$w
}
#----- Test
set test [value_dialog "Give me a value please:"]
puts test:$test
pack [ label .l -text "Value: '$test' " ]MSW: I wouldn't specify the entry's background, for a real reusable dialog, I'd check the option database to see if something exists.Imho such little snippets should use a global option hierarchy so you can easily integrate them into application which use the option database themselves. In my (standard wish) environment, I get an entry with white text on white background :) Aside of that, nice...MSW: What is not so nice is that you set result to "" instead of setting $w to "". I've changed that.RS: Yup - development residue: the global variable now named after the window was called result, which is likely to conflict with other results... Thanks, you fixed it before I got the chance to do it ;-)HJG 2016-01-28: This is smallest edit-value-dialog I have found on this wiki so far. Nice, small and useful, just as that m+-menu routine. Nevertheless, I don't understand some details about this code:
- Why returning the result, when the value is in a global var ?
- Why use a random name (from clock) for the dialog ?
- Why blank the value, instead of restore to the old value when pressing cancel ?
- What is the point of wm resizable here ?

