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

Classe: wxDialog().

Une boîte de dialogue est une fenêtre avec une barre de titre et parfois un menu système, qui peut être déplacé sur l'écran et qui ne nécessite pas de panel.

C'est une fenêtre TopLevelWindow, c.à.d qu'elle est, par définition, au dessus des autres.

Contrairement à une frame, une boîte de dialogue n'est pas extensible, sauf à utiliser les styles wx.wxDEFAULT_DIALOG_STYLE + wx.wxRESIZE_BORDER.
Si vous utiliser wx.wxRESIZE_BORDER seul, vous perdez la forme de la fenêtre originale. (titre et bouton de fermeture)

Elle peut contenir des contrôles et autres fenêtres et sont souvent utilisés pour permettre à l'utilisateur de faire des choix ou répondre à une question.

Les boîtes de dialogues contiennent généralement soit un ou deux boutons. L'un pour accepter les changements et l'autre les rejetter... mais on peut en mettre plus.

Mode d'emploi.

Il existe deux types de boîtes de dialogues, l'une modale et l'autre "modeless".

La boîte "modale" prend et conserve le" focus tant qu'elle n'est pas fermée.

Alors que la boîte "modeless" se comporte davantage comme une frame classique, n'empéchant pas le déroulement normal du programme et permettant ainsi l'entrée dans d'autres fenêtres.

Pour afficher une boîte modale, vous devez utiliser la méthode ShowModal() alors que pour voir une boîte modeless il vous suffit d'utiliser Show(), tout comme avec les frames classiques.

Les styles utilisés.
  • wx.wxDIALOG_MODAL
    Une boîte de dialogue modale (création d'un objet wxFrame), arrête l'exécution de cette frame tant que la fenêtre modale reste ouverte
  • wx.wxDEFAULT_DIALOG_STYLE
    Equivalent à une combinaison de wx.wxCAPTION, wx.wxCLOSE_BOX et wx.wxSYSTEM_MENU
  • wx.wxDIALOG_NO_PARENT
    Par défaut, une boîte de dialogues est créée avec une fenêtre parent NULL. Utilisez ce style pour empêcher que cela se passe et créer une boîte de dialogues orpheline. Ceci n'est pas recommandé pour les boîtes de dialogues modales.
  • wx.wxDIALOG_EX_CONTEXTHELP
    Sous Windows, créer un bouton de recherche pour passer en mode contextuel.
  • wx.wxCHOICEDLG_STYLE
    ?
Le constructeur: Explication.
	dialog = wx.wxDialog(
	  wxWindow*        parent,      = nomFrame ou wx.NULL,
	  wxWindowID  	 id,            = wx.wxID_ANY ou -1, 
	  const wxString & title,       = "Titre de la fenêtre",
	  const wxPoint  & pos          = wx.wxDefaultPosition,
	  const wxSize   & size         = wx.wxDefaultSize, 
	  long  style                   = wx.wxDEFAULT_DIALOG_STYLE, 
	  const wxString & name         = wx.wxDialogNameStr
	)

parent est la fenêtre qui détient la boite de dialogue. Peut être wx.NULL ou la frame qui va supporter cette boîte.

id est l'identificateur de la fenêtre ou wx.wxID_ANY ou -1 si pas d'identificateur.

wx.wxDefaultPosition, peut aussi s'écrire, wx.wxPoint(x, y).

wx.wxDefaultSize, peut aussi s'écrire wx.wxSize(largeur, hauteur).

style est le style de la boîte de dialogue.

name Utilisé pour associer un nom à la fenêtre, afin de permettre à l'utilisateur de définir des valeurs de ressources pour les boîtes de dialogue individuel.

Le style wx.wxDEFAULT_DIALOG_STYLE, équivaut à la combinaison de wx.wxCAPTION + wx.wxCLOSE_BOX + wx.wxSYSTEM_MENU.

Les méthodes.

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

Centre(direction)Centre la boîte sur l'écran, les directions peuvent être wx.wxHORIZONTAL, wx.wxVERTICAL ou wx.xBOTH.
ShowModal()Affiche une boîte modale.
AddButton()Additionne un bouton dans le wxStdDialogButtonSizer
Realise()Arrange les boutons et applique un espacement approprié entre les boutons en fonction de la plate-forme utilisée.
SetSizer(xxSizer)Affecte le xxSizer à la "fenêtre" porteuse.
SetSizeHints(fenêtre)Affecte la fenêtre au "mainSiZer" de façon à ajuster la fenêtre aux éléments.
EndModal(retCode)Met fin à une boîte de dialogues modale
GetReturnCode()Obtient le code de retour pour cette fenêtre.
IsModal()Renvoie "true" si la boîte de dialogue est modale, "false" sinon.
SetReturnCode(retCode)Définit le code de retour pour cette fenêtre.

Un exemple de code.
require("wx") -- inutile si on utilise wxluafreeze.exe

function Sizer(dialog)
  -- Création du sizer principal.
  local mainSizer = wx.wxBoxSizer(wx.wxVERTICAL)

  -- Addition d'un wxTextCtrl() au mainSizer.
  mainSizer:Add(wx.wxTextCtrl(dialog, -1, "Si vous cliquez sur
		'CANCEL' vous fermerez wxDialog."),
		0, wx.wxGROW + wx.wxALL, 10)

  -- Création du staticBoxSizer.
  local staticBoxSizer = wx.wxStaticBoxSizer(wx.wxVERTICAL, 
							dialog, "titre")

  -- Création d'un wxStaticText.
  local staticText = wx.wxStaticText(dialog, -1, "Question: 
		Etes-vous un extra-terrestre?")
  -- On additionne au staticBoxSizer.
  staticBoxSizer:Add(staticText, 0 , 
		wx.wxALIGN_CENTER + wx.wxALL, 5)
  -- On additionne le tout au mainSizer.
  mainSizer:Add(staticBoxSizer, 0, wx.wxGROW + wx.wxALL, 10)

  -- Création des boutons. ( Ne pas oublier les "" )
  local btHELP   = wx.wxButton(dialog, wx.wxID_HELP,"")
  local btOK     = wx.wxButton(dialog, wx.wxID_OK,"")
  local btNO     = wx.wxButton(dialog, wx.wxID_NO,"")
  local btCANCEL = wx.wxButton(dialog, wx.wxID_CANCEL,"")

  -- Création d'un wxStDialogButtonSizer et Addition des boutons.
  local boutonSizer = wx.wxStdDialogButtonSizer()
  boutonSizer:AddButton(btOK)
  boutonSizer:AddButton(btNO)
  boutonSizer:AddButton(btCANCEL)
  boutonSizer:AddButton(btHELP)

  -- Mise en forme et alignement des boutons dans son Sizer.
  boutonSizer:Realize()

  -- Additon des boutons dans le mainSizer.
  mainSizer:Add(boutonSizer, 0, wx.wxALL, 10)
  -- Rappel: wx.wxALIGN_xxx est inopérant si wx.wxGROW

  -- Traitement des évènements bouton.
  btOK:Connect(wx.wxID_OK, wx.wxEVT_LEFT_DOWN,
		function(event) wx.wxMessageBox("OK") end)
  btNO:Connect(wx.wxID_NO, wx.wxEVT_LEFT_DOWN,
		function(event) wx.wxMessageBox("NO") end)
  btCANCEL:Connect(wx.wxID_CANCEL, wx.wxEVT_LEFT_DOWN,
		function(event) wx.wxMessageBox("CANCEL"); 
				dialog:Destroy() end)
  btHELP:Connect(wx.wxID_HELP, wx.wxEVT_LEFT_DOWN,
		function(event) wx.wxMessageBox("HELP") end)

  -- Affectation du mainSizer au panel.
  dialog:SetSizer(mainSizer)
  -- On ajuste la boîte aux éléments.
  mainSizer:SetSizeHints(dialog)
end

function main()
  -- Création d'une boîte de dialog.
  local dialog = wx.wxDialog(wx.NULL, wx.wxID_ANY, "wxDialog")

  -- Démarrage de l'application.
  dialog: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 18 septembre 2012.
Valid XHTML 1.0 Transitional

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