[GPS] May 27, 2002: I wanted an extended entry box that provides by default copy, paste, cut, and append options via a popup menu. I also wanted the ability to restrict the data entered to a RE pattern. The solution below provides a modified entry widget that does all of the above. It is standalone, but does use one of the binding procs from the [Inheriting Widget Binding Classes] page. ---- #Updated Aug 7, 2002 to fix minor bugs and introduce paste primary ''GPS is editing!'' ---- #BEGIN test code proc checkIP {win clientData} { set RE {[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}} set data [$win get] set result 1 if {[regexp $RE $data] > 0} { foreach num [split $data .] { if {$num < 0 || $num > 255} { set result 0 break } } } else { set result 0 } eval [concat $clientData $result] } proc main {} { pack [widget:entry .e -inputregexp {[0-9\.]} -width 20] .e insert end abc ;#should fail pack [frame .info] -side left -fill x pack [label .info.valid -text "Valid: "] -side left pack [label .info.bool -text 0] -side left #I could use a textvariable but this works pack [button .checkIP -text "Check IP" -command "checkIP .e {.info.bool config -text}"] pack [button .exit -text Exit -command exit] } main ----