+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Membre confirmé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : mai 2006
    Messages : 210
    Points : 235
    Points
    235

    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

  2. #2
    Membre confirmé
    Avatar de Claude URBAN
    Homme Profil pro
    Prendre le temps de vivre. . .
    Inscrit en
    mai 2006
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : mai 2006
    Messages : 210
    Points : 235
    Points
    235

    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

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •