Classe: wxProgressDialog().
Cette classe représente une boîte de dialogue qui affiche un court message et une barre de progression.
progressDialog = wx.wxProgressDialog ( const wxString & title, = "titre de la boîte", const wxString & message, = "ceci est un petit message", int maximum = 100, wxWindow * parent, = wxNULL, int style = wx.wxPD_AUTO_HIDE + wx.wxPD_APP_MODAL) )
title est le titre de la boîte de dialogue.
message est le message à afficher.
int maximum indice maximum de la jauge.
parent est la fenêtre qui détient la boite de dialogue.
style est le style de la boîte de dialogue.
wx.wxPD_APP_MODAL | Rend la boîte de dialogue " modale". |
wx.wxPD_AUTO_HIDE | La boîte de dialogue de disparait dès que la valeur maximale est atteinte. Si ce style n'est pas présent, la boîte de dialogue deviendra une boîte de dialogue modale. |
wx.wxPD_SMOOTH | Applique une progression "lisse" de la jauge.(utiliser wx.wxGauge avec le style wx.wxGA_SMOOTH) |
wx.wxPD_CAN_ABORT | La boîte de dialogue a un bouton "Annuler". Si ce bouton est utilisé, le prochain appel à Update() retournera false. |
wx.wxPD_CAN_SKIP | La boîte de dialogue aun bouton "Skip". (nettoyage, remise à zéro.) Si ce bouton est utilisé, le prochain appel à Update() retournera true. |
wx.wxPD_ELAPSED_TIME | Afficher le temps écoulé. (depuis la création de la boîte de dialogue). |
wx.wxPD_ESTIMATED_TIME | Affiche le temps estimé. |
wx.wxPD_REMAINING_TIME | Affiche le temps restant. |
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
Resume() | Est utilisé pour poursuivre le dialogue, après que l'utilisateur ait cliqué sur le bouton "Cancel". |
Update(indice, "message") | Mise à jour de la boîte de dialogue, réglage de la barre de progression pour la nouvelle valeur (indice) et mise à jour du message, si un nouveau est spécifié. |
Destroy()* | Détruit la boîte de dialogue en toute sécurité. |
* Destroy(): Utilisez cette fonction au lieu de supprimer l'opérateur.
Cadres et boîtes de dialogues ne sont pas détruits immédiatement lorsque cette fonction est appelée - ils sont ajoutés à la liste des fenêtres à supprimer plus tard, lorsque tous les événements de la fenêtre auront été traités.
require("wx") -- inutile si on utilise wxluafreeze.exe -- Création d'une frame et de son panel. local frame = wx.wxFrame(wx.NULL, wx.wxID_ANY, "wxProgressDialog") local panel = wx.wxPanel(frame, -1) -- Centrage de la frame au milieu de l'écran. frame:Centre() -- Création d'un bouton d'appel. local bouton = wx.wxButton(panel, -1, "progressDialog") --Fonction équivalent au sleep en C n en secondes function sleep(n) local clock = os.clock local t0 = clock() while clock() - t0 <= n do end end function ProgressDialog(event) -- Création de la progressDialog. local progressDialog = wx.wxProgressDialog( "Titre de la boîte.", "Barre de progression...", 100, frame, wx.wxPD_APP_MODAL + wx.wxPD_ELAPSED_TIME + wx.wxPD_CAN_ABORT) for i = 1, 100 do sleep(0.25) if (progressDialog:Update() == false) then local message = wx.wxMessageBox("Voulez-vous vraiment tout arrêter?","Titre de la boîte.", wx.wxYES_NO + wx.wxICON_QUESTION) if message == wx.wxYES then break else progressDialog:Resume() end end progressDialog:Update(i,"Chargement en cours. "..i.." %") end progressDialog:Destroy() end -- appel de la fonction par "clic" sur un bouton. bouton:Connect(wx.wxEVT_LEFT_DOWN, ProgressDialog) -- Démarrage de l'application. wx.wxGetApp():SetTopWindow(frame) frame:Show(true) wx.wxGetApp():MainLoop()
Ce qui donne comme résultat.