Comment récupérer et utiliser les informations des boîtes de dialogue ?
Bonjour, :)
Le langage utilisé pour ce projet est wLua et la bibliothèque wxWidgets.
Je souhaite, lors d'une utilisation des boîtes de dialogue wxColourDialog() et wxFontDialog() pouvoir récupérer à la réouverture du programme, les informations précédemment utilisées...( couleur et font )
Non seulement je ne sais pas comment faire, mais qui plus est, je ne sais même pas ou chercher! :oops:
J'ai réussi, ( peut-être bêtement ) à sauvegarder les informations brutes dans le style " userdata: 011A5780 [wxColour(010CDEF0, 126)] "... oups! et après...:aie: ( je ne sais pas les exploiter...)
Google ne m'a rien apporté de concluant, quoiqu'il me semble avoir lu quelque part que wxValidator(), pourrait-être la solution... mais je suis sûr de rien et en tout état de cause, je n'ai trouvé aucun code d'exemple dans ce sens.
Je vous remercie d'avance, de toute l'aide que vous pourrez m'apporter.. solution , idée, conseil... :ccool:
Claude
Sauvegarde nlleCouleur et nlleFont
Bonjour, :D
Pour ne pas laisser une question sans réponse et en espérant que cela puisse servir, voici la solution à l'énigme que je me suis posé courant février.
Mais tout d'abord, rendons à César, ce qui appartient à César.
Et avant tout, je tiens à remercier le site http://wxdev.fr et plus particulièrement son administrateur Xaviou qui a su m'aider à résoudre mes problèmes, avec beaucoup de gentillesse, de savoir faire et avec une extrême rapidité.
Encore merci. :ccool:
1/Comment sauvegarder une nouvelle couleur!
Après avoir choisi une nouvelle couleur par: nlleCouleur = data:GetColour(), il suffit de faire ressortir les 3 couleurs fondamentales RVB, puis de les sauvegarder dans un fichier texte.
Code:
1 2 3 4 5 6 7 8 9 10 11
|
-- On range chaque nlle couleur dans sa variable.
rouge = nlleCouleur:Red()
vert = nlleCouleur:Green()
bleu = nlleCouleur:Blue()
nlleCouleur = string.format("%3d,%3d,%3d", rouge, vert, bleu)
-- On sauvegarde les nouvelles couleurs.
file = io.open("sauvegarde_couleur.txt", "w")
file:write(nlleCouleur)
file:close() |
Puis on les récupère et on les traite de la façon suivante:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
-- On ouvre le fichier de sauvegarde.
file = io.open("sauvegarde_couleur.txt", "r")
nlleCouleur = file:read()
file:close()
-- On affiche la couleur sauvegardée, si elle existe.
if (nlleCouleur ~= nil) then
rouge = tonumber(string.sub(nlleCouleur,1,3))
vert = tonumber(string.sub(nlleCouleur,5,7))
bleu = tonumber(string.sub(nlleCouleur,9,11))
panel:SetBackgroundColour(wx.wxColour(rouge, vert, bleu))
end |
Il est vrai que lorsqu'on connait la solution, on se demande pourquoi on c'est pris le choux...mais bon! :mouarf:
2/Comment sauvegarder une nouvelle Font et sa Couleur.
La procédure pour sauvegarder la nouvelle couleur d'une Font, est exactement la même que celle utilisée pour sauvegarder la nouvelle couleur d'une wxColourDialog...
Après avoir choisi une nouvelle couleur par: nlleFontCouleur = data:GetColour(), il suffit de faire ressortir les 3 couleurs fondamentales RVB, puis de les sauvegarder dans un fichier texte.
Pour la Font, le procédé est différent, car il existe deux méthodes spécialisées pour sauvegarder et restituer une Font.
- La sauvegarde se fait par: nlleFont:GetNativeFontInfoDesc().
- Et sa restitution par: fontOrigine:SetNativeFontInfo(nom_de_la_Font_sauvegardée).
On sauvegarde les nouvelles informations.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
-- Si on clic sur le bouton "police", on affiche la boîte de dialogue.
bouton:Connect(wx.wxEVT_LEFT_DOWN, function()
local fontData=wx.wxFontData()
local fontDialog = wx.wxFontDialog(textCtrl, fontData)
--fontDialog:ShowModal()
if (fontDialog:ShowModal() == wx.wxID_OK) then
local data = fontDialog:GetFontData()
font = data:GetChosenFont()
fontCouleur = data:GetColour()
end
textCtrl:SetFont(font)
textCtrl:SetForegroundColour(fontCouleur)
textCtrl:AppendText("que je viens de modifier.")
-- Sauvegarde de la nlleFont et de sa couleur.
nlleFont = font:GetNativeFontInfoDesc()
rouge = fontCouleur:Red()
vert = fontCouleur:Green()
bleu = fontCouleur:Blue()
nlleFontCouleur = string.format("%3d,%3d,%3d", rouge, vert, bleu)
-- On sauvegarde la nouvelle font et sa couleur dans un fichier.
file = io.open("sauvegarde_font.txt", "w")
file:write((nlleFont.."\n"))
file:write((nlleFontCouleur))
file:close()
end) |
Puis on les restitue à la ré-ouverture du programme.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
-- On ouvre le fichier de sauvegarde.
file = io.open("sauvegarde_font.txt", "r")
nlleFont = file:read()
nlleFontCouleur = file:read()
file:close()
-- Sélection de la font.
font = wx.wxFont(10, wx.wxFONTFAMILY_MODERN, wx.wxFONTSTYLE_NORMAL, wx.wxFONTWEIGHT_NORMAL, false, "Comic sans MS")
if (nlleFont == nil) then
textCtrl:SetFont(font)
textCtrl:AppendText("Ceci est le texte écrit avec la Font d'origine... ")
else
-- Utilisation de la font sauvegardée.
font:SetNativeFontInfo(nlleFont)
textCtrl:SetFont(font)
if (nlleFontCouleur ~= nil) then
rouge = tonumber(string.sub(nlleFontCouleur,1,3))
vert = tonumber(string.sub(nlleFontCouleur,5,7))
bleu = tonumber(string.sub(nlleFontCouleur,9,11))
textCtrl:SetForegroundColour(wx.wxColour(rouge, vert, bleu))
end
textCtrl:AppendText("Ceci est le texte écrit avec la nouvelle Font.")
end |
Voilà.
C'est peut-être pas la meilleure solution, mais en tout cas, ça fonctionne. :ccool:
Et si vous avez des commentaires, n'hésitez pas!
Merci de m'avoir lu et @++
Claude