Classe: wxTextCtrl().
Un TextCtrl est une page blanche (ou de couleur) sur laquelle l'on peut écrire un texte sur une seule ou plusieurs lignes et qui peut être édité.
En plus compliqué, il s'agit de ce que l'on appelle: un éditeur de texte.
Beaucoup de méthodes de wxTextCtrl sont héritées de la classe wxTextEntry qui est une classe de base commune pour wxTextCtrl et autres contrôles qui utilisent un champ de saisie de texte sur une seule ligne.
wxTextEntry n'est pas implémenté par wxLua 2.8.10
La classe wxTextAttr, représente les attributs de caractère, de paragraphe et de style pour une portion de texte dans un wxTextCtrl ou un wxRichTextCtrl. ( classe non implémentée par wxLua ).
Les commandes suivantes sont traitées par les gestionnaires d'événements dans le wxTextCtrl:
wxID_CUT, wxID_COPY, wxID_PASTE, wxID_UNDO, wxID_REDO.
textCtrl = wx.wxTextCtrl ( wxWindow *parent = no-NULL, wxWindowID id = -1, const wxString &label = "texte", const wxPoint &point = wx.wxDefaultPosition, const wxSize &size = wx.wxDefaultSize, long style = wx.wxTE_XXX, const wxString &name = wx.wxRemplacerNameStr )
parent est la fenêtre qui détient le wxTextCtrl.
id est l'identifiant du wxTextCtrl.
label est le texte à afficher.
point est la position du wxTextCtrl.
size est la dimension du wxTextCtrl.
style est le style du wxTextCtrl.
name est utilisé pour associer un nom au wxTextCtrl.
Vous trouverez ci-dessous, la liste des méthodes implémentées par wxLua 2.8.10.
AppendText("texte") | Ajoute "texte" dans le TextCtrl. |
CanCopy() | Retourne true si la sélection peut être copiée dans le presse-papiers. |
CanCut() | Retourne true si la sélection peut être coupée dans le presse-papiers. |
CanPaste() | Retourne true si le contenu du presse-papiers peut être collé dans un text control. |
CanRedo() | Retourne true si la dernière opération peut être refaite. |
CanUndo() | Retourne true si la dernière opération peut être annulée. |
ChangeValue("texte") | Modifie le texte d'origine à partir de la position 0. |
Clear() | Efface le texte. Equivalent à SetValue("").Cette fonction génère un évènement wxEVT_COMMAND_TEXT_UPDATED. |
Copy() | Copie le texte sélectionné dans le presse-papiers. |
Cut() | Copie le texte sélectionné dans le presse-papiers et supprime la sélection. |
DiscardEdits() | Remet le flag interne modifié comme si les changements en cours avaient été sauvegardés. |
EmulateKeyPress(event) | Insère le caractère qui aurait été inséré si l'événement clé donnée s'était produit dans le TextCtrl. (wxKeyEvent &event) |
GetDefaultStyle() | Retourne le style actuellement utilisé pour le nouveau texte. |
GetInsertionPoint() | Retourne la position. (début et fin) |
GetLastPosition() | Retourne l'index à base zéro de la dernière position dans le TextCtrl, qui est égal au nombre de caractères. |
GetLineLength(N°ligne) | Obtient la longueur de la ligne spécifiée, non compris tous les caractères de fin de ligne. |
GetLineText(N°ligne) | Retourne le contenu d'une ligne spécifiée, non compris tous les caractères de fin de ligne. |
GetNumberOfLines() | Retourne le nombre de lignes dans le tampon du TextCtrl. |
GetRange(from, to) | Retourne la chaîne de caractères à partir de la position from jusqu'à to. |
GetSelection() | Obtient le nb de caractères de la sélection courante. |
GetStringSelection() | Obtient le texte actuellement sélectionné dans le TextCtrl. |
GetStyle(position, style ) | Retourne le style de cette position. (wxTextAttr &style) |
GetValue() | Retourne le contenu de la commande. |
IsEditable() | Retourne true si le contenu peut être édité par l'utilisateur. |
IsModified() | Retourne true si le texte a été modifié par l'utilisateur. |
IsMultiLine() | Retourne true si le type est multilignes et false autrement. |
IsSingleLine() | Retourne true si le type est simplelignes et false autrement. |
LoadFile("filename") | Charge et affiche le fichier nommé, si il existe. |
MarkDirty() | Mark text as modified (dirty) |
Paste() | Colle le texte du presse-papiers... |
PositionToXY(pos) | Convertit position donnée (pos) en colonne à base zéro, et numéro de ligne. |
Redo() | Remet en place la dernière opération. |
Remove(from, to) | Supprime le texte à partir de from jusqu'à to(mais non compris) le caractère à la dernière position. |
Replace(from, to, "newTexte") | Remplace le texte d'origine par le 'newTexte' de from à to. |
SaveFile("filename") | Enregistre le contenu de la commande dans un fichier texte. (filename = Le nom du fichier dans lequel enregistrer le texte) |
SetDefaultStyle(newStyle) | Modifie le style par défaut pour le nouveau texte qui va être ajouté par la commande WriteText() ou AppendText(). (wxTextAttr &newStyle) |
SetEditable(true) | Rend l'élément texte modifiable ou en lecture seule, et annuler le flag wxTE_READONLY. |
SetInsertionPoint(pos) | Définit le point d'insertion à la position donnée. (pos) |
SetInsertionPointEnd() | Définit le point d'insertion à la fin du TextCtrl. |
SetMaxLength(value) | Définit le nombre maximal de caractères que l'utilisateur peut entrer dans le TextCtrl. |
SetSelection(from, to) | Sélectionne le texte à partir de from jusqu'à to(mais non compris) le caractère de la dernière position. |
SetStyle(start, end, newStyle) | Change l'ancien style par newStyle de 'start' à 'end'. |
SetValue("texte") | Définit le nouveau texte. |
ShowPosition(pos) | Rend la ligne à la position (pos) visible. |
Undo() | Annule la dernière opération. |
WriteText("newTexte") | Ecrit le newTexte à la position d'insertion. |
XYToPosition(x, y) | Convertit les valeur x et y en valeur point. |
require("wx") -- inutile si on utilise wxluafreeze.exe local frame = nil local textCtrl = nil local ID_FONT = 1 local ID_COULEUR = 2 -- Fonction changement de couleur de fond. function OnCouleur(event) local colourData = wx.wxColourData() local colourDialog = wx.wxColourDialog(frame, colourData) -- Si on "clic" sur le bouton "OK" de la boîte de dialogue. if (colourDialog:ShowModal() == wx.wxID_OK) then local data = colourDialog:GetColourData() local nlleCouleur = data:GetColour() textCtrl:SetBackgroundColour(nlleCouleur) textCtrl:Refresh() end end ----------------------------------------------------------------- -- Fonction changement de Font. function OnFont(event) local fontData = wx.wxFontData() local fontDialog = wx.wxFontDialog(frame, fontData) -- Si on "clic" sur le bouton "OK" de la boîte de dialogue. if (fontDialog:ShowModal() == wx.wxID_OK) then local data = fontDialog:GetFontData() local nlleFont = data:GetChosenFont() local nlleCouleurFont = data:GetColour() textCtrl:SetFont(nlleFont) textCtrl:SetForegroundColour(nlleCouleurFont) end end ----------------------------------------------------------------- -- Création de la fonction principale du programme: main() function main() frame = wx.wxFrame(wx.NULL, -1, "wxLua: TextCtrl", wx.wxDefaultPosition, wx.wxSize(450, 300), wx.wxDEFAULT_FRAME_STYLE) frame:Centre(wx.wxBOTH) -- Affichage au centre de l'écran. local fileMenu = wx.wxMenu() fileMenu:Append(wx.wxID_EXIT, "S&ortie", "Quitte le programme") local styleMenu = wx.wxMenu() styleMenu:Append(ID_FONT, "Font", "Police de caractère") styleMenu:Append(ID_COULEUR, "Couleur", "Couleur du fond") local helpMenu = wx.wxMenu() helpMenu:Append(wx.wxID_ABOUT, "&A propos", "A propos des versions de wxLua et wxWidgets.") local menuBar = wx.wxMenuBar() menuBar:Append(fileMenu, "&Fichier") menuBar:Append(styleMenu, "S&tyle") menuBar:Append(helpMenu, "&Aide") frame:SetMenuBar(menuBar) frame:CreateStatusBar(1) frame:SetStatusText("Welcome to wxLua.") -- Connecte l'évènement Exit du menu. frame:Connect(wx.wxID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED, function (event) frame:Close(true) end ) -- Connecte l'évènement About du menu. frame:Connect(wx.wxID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED, function (event) wx.wxMessageBox("Ce programme est" .."construit avec l'éditeur de texte \n 'SciTE Version" .."1.75' ainsi que \n" .. wxlua.wxLUA_VERSION_STRING.. "et " ..wx.wxVERSION_STRING, "A propos de...", wx.wxOK + wx.wxICON_INFORMATION, frame) end ) -- Connecte l'évènement fermeture de la fenêtre. frame:Connect(wx.wxEVT_CLOSE_WINDOW, function (event) frame:Destroy(); event:Skip() end) -- Connecte l'évènement Font. frame:Connect(ID_FONT, wx.wxEVT_COMMAND_MENU_SELECTED, function(event) OnFont() end) -- Connecte l'évènement Couleur. frame:Connect(ID_COULEUR, wx.wxEVT_COMMAND_MENU_SELECTED, function(event) OnCouleur() end) -- Création d'un textCtrl. local texte = "Cliquez sur 'Style' pour changer la Font et sa couleur, ainsi que la couleur du fond." textCtrl = wx.wxTextCtrl(frame, wx.wxID_ANY, texte, wx.wxDefaultPosition, wx.wxDefaultSize, wx.wxTE_MULTILINE + wx.wxTE_NO_VSCROLL) frame:Show(true) -- Affichage de la frame end -- Démarrage de l'application. main() wx.wxGetApp():MainLoop()
Ce qui donne comme résultat.