Classe: wxFileDialog()
Cette classe affiche une boîte de dialogue pour la sauvegarde ou l'ouverture d'un fichier.
Sous Windows et GTK2.4+, il s'agit de la boîte de dialogue habituelle de sélection de fichier. Sous X, il s'agit d'une boite de dialogue de sélection de fichier avec un peu moins de fonctionnalités.
Le chemin et le nom de fichier sont des éléments distincts d'un emplacement de fichier complet.
Si le chemin est " ", le répertoire courant sera utilisé. Si le nom du fichier est "", aucun nom de fichier par défaut ne sera fourni.
Le jocker détermine quels fichiers sont affichés dans le sélecteur, et l'extension fourni l'extension type pour le nom de fichier requis.
Le style de la boite de dialogue peut être une combinaison entre:
Les versions X et Windows implémentent toutes les deux le filtre par jocker.
Saisir un nom de fichier contenant des jockers (*, ?) dans l'élément texte du nom de fichier et cliquer sur Ok fera que seuls les fichiers correspondants au filtre seront affichés. Dans la version X, ne pas donner de nom par défaut fera en sorte que le filtre sera inséré dans le champ texte du nom de fichier; le filtre est ignoré si un nom par défaut est spécifié.
Le joker peut être une spécification pour de multiples types de fichiers avec une description pour chacun, comme par exemple :
" Fichiers BMP (*.bmp) | *.bmp | Fichiers GIF (*.gif) | *.gif ".
fileDialog = wx.wxFileDialog ( wxWindow * parent, const wxString & message = "message", const wxString & defaultDir = "nom du répertoire", const wxString & defaultFile = "nom du fichier", const wxString & wildcard = "Fichiers BMP (*.bmp)|*.bmp", long style = wx.wxFD_DEFAULT_STYLE, const wxPoint & pos = wx.wxDefaultPosition )
parent est la fenêtre qui détient la boite de dialogue.
message est le titre de la boîte de dialogue.
defaultDir est le nom du répertoire sur lequel la boîte de dialogue doit se positionner à l'ouverture.
defaultFile est le nom de fichier à utiliser par défault.
wilcard ou "joker" en Français est quelque chose comme "*" ou bien "*txt".
wilcard ou "joker" en Français est quelque chose comme "*" ou bien "*txt".
style est le style de la boîte de dialogue.
wx.wxDefaultPosition, peut aussi s'écrire, wx.wxPoint(x, y).
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
GetDirectory() | Retourne le répertoire par défaut. |
GetFilename() | Remplit le tableau des noms de fichiers avec les noms des fichiers choisis. |
GetFilterIndex() | Retourne l'index dans la liste des filtres fournis, éventuellement, dans le paramètre joker. |
GetMessage() | Retourne le message qui sera affiché sur la boîte de dialogue. |
GetPath() | Retourne le chemin complet (répertoire et nom de fichier) du fichier sélectionné. |
GetWildcard() | Retourne le fichier de dialogue générique. |
SetDirectory() | Définit le répertoire par défaut. |
SetFilename() | Définit le nom par défaut. |
SetFilterIndex() | Définit l'index par défaut de filtre, à partir de zéro. |
SetMessage() | Définit le message qui sera affiché sur la boîte de dialogue. |
SetPath( | Définit le chemin (le répertoire et le nom associé qui sera retournée lorsque le dialogue est rejetée). |
SetWildcard() | Définit le caractère générique, qui peut contenir plusieurs types de fichiers, par exemple: "fichiers BMP (*. bmp) | *. bmp | fichiers GIF (*. gif) | *. gif". |
ShowModal() | Affiche la boîte de dialogue, de retour wxID_OK si l'utilisateur a appuyé sur OK, et wxID_CANCEL autrement. |
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, "wxFileDialog") local panel = wx.wxPanel(frame, -1) -- Centrage de la frame au milieu de l'écran. frame:Centre() ---------------------------------------------------------------- --- Exemple de création d'un menu local menuBar = wx.wxMenuBar() -- Création d'une barre de menus. -- Création d'une fenêtre "menu". local fileMenu = wx.wxMenu( { {wx.wxID_OPEN, "Ouvrir...\tCtrl-O", "Ouvrir un document existant"}, {wx.wxID_SAVE, "Sauvegarde\tCtrl-N", "Sauvegarde du document"}, { }, { wx.wxID_EXIT, "Sortie\tAlt-X", "Quitter le programme"} } ) --On met le fileMenu dans la menuBar menuBar:Append(fileMenu, "Fichier") -- On met la menuBar dans la frame frame:SetMenuBar(menuBar) ---------------------------------------------------------------- --- Ouverture de la boîte de dialogue de recherche de fichier function OpenFile(event) local fileDialog = wx.wxFileDialog(frame, "Ouvrir", "", "", "fichiers Lua (*.lua)|*.lua |Fichiers texte (*.txt)|*.txt |Tous les fichiers (*)|*", wx.wxOPEN + wx.wxFILE_MUST_EXIST) if fileDialog:ShowModal() == wx.wxID_OK then if not LoadFile(fileDialog:GetPath(), nil, true) then wx.wxMessageBox("Impossible de charger le fichier '"..fileDialog:GetPath().."'.", "Erreur wxLua", wx.wxOK + wx.wxCENTRE, frame) end end fileDialog:Destroy() end frame:Connect(wx.wxID_OPEN, wx.wxEVT_COMMAND_MENU_SELECTED, OpenFile) ---------------------------------------------------------------- --- Ouverture de la boîte de dialogue de sauvegarde de fichier function SaveFile(event) local fileDialog = wx.wxFileDialog(frame, "Sauvegarder sous", "", "","fichiers Lua (*.lua)|*.lua |Fichiers texte (*.txt)|*.txt |Tous les fichiers (*)|*", wx.wxSAVE + wx.wxOVERWRITE_PROMPT) if fileDialog:ShowModal() == wx.wxID_OK then if not LoadFile(fileDialog:GetPath(), nil, true) then wx.wxMessageBox("Impossible de sauvegarder le fichier '"..filePath.."'.", "Erreur wxLua", wx.wxOK + wx.wxCENTRE, frame) end end fileDialog:Destroy() end frame:Connect(wx.wxID_SAVE, wx.wxEVT_COMMAND_MENU_SELECTED, SaveFile) ---------------------------------------------------------------- ---Exemple de fermeture de la fenêtre avec la menu Sortie frame:Connect( wx.wxID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED, function (event) -- On ne peut sortir que si on a sauvegardé if not SaveOnExit(true) then return end frame:Close() CloseWatchWindow() end) -- Démarrage de l'application. frame:Show(true) wx.wxGetApp():MainLoop()
Ce qui donne comme résultat: