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