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.
}