wxLua et wxWidgets:
Mode d'emploi.
 wxWidgets
Lua
Flèche gauche accueil wxWidgets lua notes Flèche droite
Description détaillée.

Classe: wxMenu().

Un menu est une fenêtre "popup", propriétaire d'une liste d'articles (items) dont l'un peut être choisi avant que le menu ne disparaîsse.

Compte tenu du fait que wxLua n'implémente pas les frames Popup, (wxPopupWindow) les menus issues de wx.wxMenu ne pourront être affichés qu'à partir de wxTaskBarIcon et/ou de wxMenuBar.

Mode d'emploi.

Les menus peuvent être utilisés pour construire des barres de menus ou des menus contextuels.

Un élément de menu possède un identifiant entier qui lui est associé et qui peut être utilisé pour identifier la sélection.
Un élément de menu avec un identifiant spécial -1 est un élément séparateur et n'a pas de commande associée, mais fait simplement une ligne de séparation qui apparaît dans le menu.

wxID_ABOUT et wxID_EXIT sont prédéfinis par wxWidgets et ont une signification bien précise.

Les éléments de menu peuvent être de simples noms, des noms à cocher (check) ou des noms à pointer (radio).
Les articles normaux n'ont pas de propriétés particulières, tandis que les éléments de contrôle ont un booléen associé et montrent une case à cocher dans le menu en fonction du "flag" défini.
wxWidgets permet de basculer automatiquement la valeur de l'indicateur lorsque l'élément est cliqué et que sa valeur peut être récupéré à l'aide des méthodes adéquates.

Les éléments radio sont similaires, sauf que tous les autres points du groupe "radio" sont désactivés quand un élément est coché.

Quand la fenêtre est fermée, alors la barre de menus se ferme aussi et les menus sont supprimés.

Gestion des évènements.

Si le menu fait partie d'une barre de menus, alors le traitement des événements de wxMenuBar sera utilisé.

La commande type est:

	objet:Connect(wx.wxID_xxx, wx.wxEVT_COMMAND_MENU_SELECTED, 
					OnNomFonction)
	ou
 
	objet:Connect(wx.wxID_xxx, wx.wxEVT_COMMAND_MENU_SELECTED,
					function(event) .... end))
				
Le constructeur: Explication.
		menu = wx.wxMenu()
					

Pour additionner les lignes du menu, utilisez la méthode Append() de la façon suivante:

	nomMenu:Append(wx.wxID_xxx, "Item", "Aide contextuelle")
					
	Item = "Le nom de l'item, qui apparait dans la ligne du menu."
	Aide contextuelle = "Le texte d'aide qui apparait dans la StatusBar."
				

Une autre façon de faire, pour additionner les lignes d'un menu, consiste à utiliser la classe wxMenuItem qui offre d'autres possibilités telles que, ajout de Bitmaps, changement de couleur de police... etc.

Vous trouverez un exemple de code plus complet dans le paragraphe qui traite de la classe wxMenuItem.

Les méthodes.

Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.

Append(x)Ajoute une ligne "item" au menu.
x = (id, "item", "aide", wx.wxITEM_NORMAL)
Append(x)Ajoute un Sous-menu
x = (id, "item", nom sous-menu, "aide")
Append(menuItem)Ajoute un menuItem.
AppendCheckItem(x)Ajoute une ligne "cochable" au menu.
x = (id, "nom-item", "aide")
AppendRadioItem(x)Ajoute une ligne avec un bouton "radio".
x = (id, "non-item", "aide")
AppendSeparator()Ajoute une ligne séparatrice.
Break()Saute à l'élément du menu suivant.
Check(id, true)Active ou désactive l'option du menu.
Delete(id)Supprime l'élément du menu N° id.
Delete(menuItem)Supprime l'élément "menuItem" du menu .
Destroy(id)Supprime l'élément du menu N° id.
Destroy(menuItem)Supprime l'élément "menuItem" du menu .
Enable(id, true)Active ou désactive (sur gris) un élément du menu.
FindItem("texte")Trouve l'id du menu, pour une chaîne "texte".
FindItemByPosition(position)Retourne l'item du menu donné en "position".
GetHelpString(id)Retourne la chaîne d'aide associée à "id".
GetLabel(id)Retourne le label associé à "id".
GetMenuItems()Retourne la liste "items" du menu.
GetTitle()Retourne le titre du menu.
Insert(x)Insère un "item" donné avant la position pos.
x = (pos, id, "item", "aide", objItem) - (objItem = wx.wxITEM_NORMAL)
Insert(pos, "item")Insère "item" donné avant la position pos.
InsertCheckItem(x)Insère un item "checkable" à la position donnée.
x = (pos, id, "item", "aide")
InsertRadioItem(x)Insère un item "radio" à la position donnée.
x = (pos, id, "item", "aide")
InsertSeparator(pos)Insère un séparateur à la position donnée.
IsChecked(id)Détermine si un élément du menu est coché.
IsEnabled(id)Détermine si un élément du menu est activé.
Prepend(x)Insère l'élément donné à la position 0.
x = (id, "item", "aide", objItem ) - (objItem = wx.wxITEM_NORMAL)
Prepend("item")Insère "item" à la position 0.
PrependCheckItem(x)Insère "itemCheck" à la position 0.
x = (id, "item", "aide")
PrependRadioItem(x)Insère "itemRadio" à la position 0.
x = (id, "item", "aide")
PrependSeparator()Insère un séparateur à la position 0
Remove(menuItem)Supprime la ligne "menuItem" du menu, mais ne supprime pas l'objet C + + qui lui est associé.
Remove(id)Supprime la ligne "id" du menu, mais ne supprime pas l'objet C + + qui lui est associé.
SetHelpString(id, "aide")Définit "aide" d'un item dont l'ID ="id".
SetLabel(id, "label")Définit "label" d'un item dont l'ID ="id".
SetTitle("titre")Définit le "titre" du menu.
UpdateUI(x)Envoie les événements à la source (ou la fenêtre propriétaire si NULL) afin de mettre à jour le menu d'interface utilisateur.
x = (wxEvtHandler* source = NULL)
Un exemple de code.
require("wx") -- inutile si on utilise wxluafreeze.exe

local frame  = nil

function main()
-- Création d'une frame et de son panel.
	frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "wxMenu")
	frame:Centre()
	local panel = wx.wxPanel(frame, -1)
	
-- Création de menus simples
	local fichier = wx.wxMenu()
	fichier:Append(wx.wxID_ANY, "ligne N°1",
					"texte d'explication.")
	fichier:Append(wx.wxID_ANY, "ligne N°2",
					"texte d'explication.")
	fichier:AppendSeparator()
	fichier:Append(wx.wxID_ANY, "ligne N°3",
					"texte d'explication.")

	local edition = wx.wxMenu()
	edition:AppendCheckItem(wx.wxID_ANY, "ligne N°1",
					"texte d'explication.")
	edition:AppendCheckItem(wx.wxID_ANY, "ligne N°2",
					"texte d'explication.")
	edition:AppendSeparator()
	edition:Append(wx.wxID_ANY, "ligne N°3",
					"texte d'explication.")

	local affichage = wx.wxMenu()
	affichage:AppendRadioItem(wx.wxID_ANY, "ligne N°1", 
					"texte d'explication.")
	affichage:AppendRadioItem(wx.wxID_ANY, "ligne N°2", 
					"texte d'explication.")
	affichage:AppendSeparator()
	affichage:Append(wx.wxID_ANY, "Sous-menu",
					"texte d'explication.")

-- Création d'une MenuBar.
	local menuBar = wx.wxMenuBar()
	menuBar:Append(fichier, "Fichier")
	menuBar:Append(edition, "Edition")
	menuBar:Append(affichage, "Affichage")

-- Affectation de la barre de menus à la frame.
	frame:SetMenuBar(menuBar)

	frame:Show(true)
end

main()
wx.wxGetApp():MainLoop()
				

Ce qui donne comme résultat.

image01.png

logo wxWidgets Le savoir ne vaut que s'il est partagé par tous...
logo-internet_32x32.png Dernière mise à jour, le 22 août 2012.
Valid XHTML 1.0 Transitional

wxMenu
Revenir en Haut
Connexion à la base de données impossible