B Widgets de haut niveau

      1 Menu déroulant

Il est intéressant de pouvoir facilement créer un menu en haut ou en bas de la fenêtre, à l'horizontale, ou bien à droite ou à gauche de la fenêtre, à la verticale. C'est pour cela que l'on va différer le packing du menu à l'extérieur de la fonction, et que l'on va paramétrer le positionnement des boutons de menu les uns par rapport aux autres.

proc ShowMenu {w side_to_pack side_to_pack_help} {
# Crée un menu déroulant dans le widget w passé en argument
# Les boutons seront packés du côté indiqué par side_to_pack, sauf le bouton "Help" qui sera
# packé du côté indiqué par side_to_pack_help
frame $w.menu
# Création de la frame dans laquelle nous mettrons le menu déroulant
# Son packing aura lieu dans la fonction appelante
############## CREATION DU MENU File ##############
menubutton $w.menu.file -menu "$w.menu.file.m" -text {File} -underline {0}
pack configure $w.menu.file -side $side_to_pack
# Création d'un bouton de menu associé au menu $w.menu.file.m. packé comme spécifié
# par l'argument. Normalement c'est un alignement gauche mais, sait-on jamais
menu $w.menu.file.m
w.menu.file.m add command -command {New} -underline {0} -label {New}
# Menu New associé à l'appel de la fonction New à définir
$w.menu.file.m add command -command {Open} -underline {0} -label {Open...}
# Menu Open associé à l'appel de la fonction Open à définir
$w.menu.file.m add separator
$w.menu.file.m add command -command {Save} -underline {0} -label {Save}
# Menu Save associé à l'appel de la fonction Save à définir
$w.menu.file.m add command -command {SaveAs} -underline {5} -label {Save as...}
# Menu Save as associé à l'appel de la fonction SaveAs à définir
$w.menu.file.m add separator
$w.menu.file.m add command -command {Quit} -underline {1} -label {Exit}
# Menu Exit associé à l'appel de la fonction Quit à définir
############ CREATION DU MENU Help ##############
menubutton $w.menu.help -menu "$w.menu.help.m" -text {Help} -underline {0}
pack configure $w.menu.help -side $side_to_pack_help
# Création du menu Help
menu $w.menu.help
$w.menu.help.m add command -command {About} -underline {0} -label {About...}
# Menu About associé à l'appel de la fonction About à définir
$w.menu.help.m add command -command {Help} -underline {0} -label {Help}
# Menu Help associé à l'appel de la fonction Help à définir
return $w.menu
#Renvoie le nom de sa frame de plus haut niveau pour permettre à la fonction appelante
# de packer le menu. D'habitude il est en haut mais on peut l'imaginer ailleurs.
}