Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > wxWidgets
wxWidgets Forums d'entraide pour la programmation wxWidgets en C++
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 15/02/2011, 11h19   #1
Claude URBAN
Membre du Club
 
Avatar de Claude URBAN
 
Homme Claude URBAN
Prendre le temps de vivre. . .
Inscription : mai 2006
Messages : 181
Détails du profil
Informations personnelles :
Nom : Homme Claude URBAN
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Prendre le temps de vivre. . .

Informations forums :
Inscription : mai 2006
Messages : 181
Points : 69
Points : 69
Par défaut 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!

J'ai réussi, ( peut-être bêtement ) à sauvegarder les informations brutes dans le style " userdata: 011A5780 [wxColour(010CDEF0, 126)] "... oups! et après... ( 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...

Claude
Claude URBAN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 17h22   #2
Claude URBAN
Membre du Club
 
Avatar de Claude URBAN
 
Homme Claude URBAN
Prendre le temps de vivre. . .
Inscription : mai 2006
Messages : 181
Détails du profil
Informations personnelles :
Nom : Homme Claude URBAN
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Prendre le temps de vivre. . .

Informations forums :
Inscription : mai 2006
Messages : 181
Points : 69
Points : 69
Par défaut Sauvegarde nlleCouleur et nlleFont

Bonjour,

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.


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!

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.

Et si vous avez des commentaires, n'hésitez pas!

Merci de m'avoir lu et @++

Claude
Claude URBAN est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 00h24.


 
 
 
 
Partenaires

Hébergement Web