# This file is a Tcl script to test menus in Tk. It is # organized in the standard fashion for Tcl tests. It tests # the common implementation of Macintosh and Windows menus. # # Copyright (c) 1995-1996 Sun Microsystems, Inc. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # RCS: @(#) $Id$ if {$tcl_platform(platform) == "unix"} { return } if {[lsearch [image types] test] < 0} { puts "This application hasn't been compiled with the \"test\" image" puts "type, so I can't run this test. Are you sure you're using" puts "tktest instead of wish?" return } if {[info procs test] != "test"} { source defs } proc deleteWindows {} { foreach i [winfo children .] { catch [destroy $i] } } deleteWindows wm geometry . {} raise . if {$tcl_platform(platform) == "windows" && ![info exists INTERACTIVE]} { puts " Some tests were skipped because they could not be performed" puts " automatically on this platform. If you wish to execute them" puts " interactively, set the TCL variable INTERACTIVE and re-run" puts " the test." } test macWinMenu-1.1 {PreprocessMenu} { catch {destroy .m1} menu .m1 -postcommand "destroy .m1" .m1 add command -label "macWinMenu-1.1: Hit Escape" list [catch {.m1 post 40 40} msg] $msg } {0 {}} if {$tcl_platform(platform) != "windows" || [info exists INTERACTIVE]} { test macWinMenu-1.2 {PreprocessMenu} { catch {destroy .m1} catch {destroy .m2} set foo1 foo set foo2 foo menu .m1 -postcommand "set foo1 .m1" .m1 add cascade -menu .m2 -label "macWinMenu-1.2: Hit Escape" menu .m2 -postcommand "set foo2 .m2" update idletasks list [catch {.m1 post 40 40} msg] $msg [set foo1] [set foo2] [destroy .m1 .m2] [catch {unset foo1}] [catch {unset foo2}] } {0 .m2 .m1 .m2 {} 0 0} } test macWinMenu-1.3 {PreprocessMenu} { catch {destroy .l1} catch {destroy .m1} catch {destroy .m2} catch {destroy .m3} label .l1 -text "Preparing menus..." pack .l1 update idletasks menu .m1 -postcommand ".l1 configure -text \"Destroying .m1...\"; update idletasks; destroy .m1" menu .m2 -postcommand ".l1 configure -text \"Destroying .m2...\"; update idletasks; destroy .m2" menu .m3 -postcommand ".l1 configure -text \"Destroying .m3...\"; update idletasks; destroy .m3" .m1 add cascade -menu .m2 -label "macWinMenu-1.3: Hit Escape (.m2)" .m1 add cascade -menu .m3 -label ".m3" update idletasks list [catch {.m1 post 40 40} msg] $msg [destroy .l1 .m2 .m3] } {0 {} {}} test macWinMenu-1.4 {PreprocessMenu} { catch {destroy .l1} catch {destroy .m1} catch {destroy .m2} catch {destroy .m3} catch {destroy .m4} label .l1 -text "Preparing menus..." pack .l1 update idletasks menu .m1 -postcommand ".l1 configure -text \"Destroying .m1...\"; update idletasks; destroy .m1" .m1 add cascade -menu .m2 -label "macWinMenu-1.4: Hit Escape (.m2)" .m1 add cascade -menu .m3 -label ".m3" menu .m2 -postcommand ".l1 configure -text \"Destroying .m2...\"; update idletasks; destroy .m2" .m2 add cascade -menu .m4 -label ".m4" menu .m3 -postcommand ".l1 configure -text \"Destroying .m3...\"; update idletasks; destroy .m3" menu .m4 -postcommand ".l1 configure -text \"Destroying .m4...\"; update idletasks; destroy .m4" update idletasks list [catch {.m1 post 40 40} msg] $msg [destroy .l1 .m2 .m3 .m4] } {0 {} {}} test macWinMenu-1.5 {PreprocessMenu} { catch {destroy .m1} catch {destroy .m2} menu .m1 .m1 add cascade -menu .m2 -label "You may need to hit Escape to get this menu to go away." menu .m2 -postcommand glorp list [catch {.m1 post 40 40} msg] $msg [destroy .m1 .m2] } {1 {invalid command name "glorp"} {}} if {$tcl_platform(platform) != "windows" || [info exists INTERACTIVE]} { test macWinMenu-2.1 {TkPreprocessMenu} { catch {destroy .m1} set foo test menu .m1 -postcommand "set foo 2.1" .m1 add command -label "macWinMenu-2.1: Hit Escape" list [catch {.m1 post 40 40} msg] $msg [set foo] [destroy .m1] [unset foo] } {0 2.1 2.1 {} {}} } deleteWindows