Forum Programmation.autre LUA : factoriser du code

Posté par  .
Étiquettes : aucune
-4
30
nov.
2009
Bonjour,
Je debut en lua et je voudrais factoriser ce code :

-----------------------------------------
-- Script Entry Point
-----------------------------------------
local system = CEGUI.System:getSingleton()
local schemeMgr = CEGUI.SchemeManager:getSingleton()
local winMgr = CEGUI.WindowManager:getSingleton()

--PPT
local root_commande = winMgr:loadWindowLayout("ppt_dev_commande.layout")
local root_1 = winMgr:loadWindowLayout("ppt_dev_1.layout")
local root_2 = winMgr:loadWindowLayout("ppt_dev_2.layout")
local root_3 = winMgr:loadWindowLayout("ppt_dev_3.layout")


--- video = winMgr:getWindow("ModuleVideo")

current_win = root_1

function hide(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:hide()
current_win = we.window
end

function show(e)
local we = CEGUI.toWindowEventArgs(e)
current_win:show()
end
winMgr:getWindow("PPTDEVCommande/Fond/button"):subscribeEvent("Clicked", "show")
function showVideo(e)
video:show()
end

--Masquage Video
---video:hide()
--winMgr:getWindow("PPT_Win_amel_2/bouton_play"):subscribeEvent("Clicked", "showVideo")



--Picking

root_commande:setMousePassThroughEnabled( true)
root_1:setMousePassThroughEnabled( true)
root_1:subscribeEvent("CloseClicked","hide")
root_2:setMousePassThroughEnabled( true)
root_2:subscribeEvent("CloseClicked","hide")
root_3:setMousePassThroughEnabled( true)
root_3:subscribeEvent("CloseClicked","hide")

CEGUI.System:getSingleton():getGUISheet():addChildWindow(root_commande)
CEGUI.System:getSingleton():getGUISheet():addChildWindow(root_1)

winMgr:getWindow("PPT_Win_1/bouton_next"):subscribeEvent("Clicked", "luabtnNext_1_clicked")

function luabtnNext_1_clicked(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:getParent():hide()
CEGUI.System:getSingleton():getGUISheet():addChildWindow(root_2)
root_2:show()
end

winMgr:getWindow("PPT_Win_2/bouton_next"):subscribeEvent("Clicked", "luabtnNext_2_clicked")
winMgr:getWindow("PPT_Win_2/bouton_prev"):subscribeEvent("Clicked", "luabtnPrev_2_clicked")

function luabtnNext_2_clicked(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:getParent():hide()
CEGUI.System:getSingleton():getGUISheet():addChildWindow(root_3)
root_3:show()
end

function luabtnPrev_2_clicked(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:getParent():hide()

root_1:show()
end
-- 3 - 2
winMgr:getWindow("PPT_Win_3/bouton_next"):subscribeEvent("Clicked", "luabtnNext_3_clicked")
winMgr:getWindow("PPT_Win_3/bouton_prev"):subscribeEvent("Clicked", "luabtnPrev_3_clicked")

function luabtnNext_3_clicked(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:getParent():hide()
CEGUI.System:getSingleton():getGUISheet():addChildWindow(root_3)
root_3:show() --4 qd y aura 4
end

function luabtnPrev_3_clicked(e)
local we = CEGUI.toWindowEventArgs(e)
we.window:getParent():hide()

root_2:show()
end

-- 4 -3



Bref faire une boucle avec une liste de variable correspondant à mes fenetres :
root_1 root_2 etc...

Vu que j'ai une 20 ene de fenetre ca serait cool...

Merci
  • # je veux bien mais

    Posté par  . Évalué à 7.

    alors en échange, tu convertis la librairie jfreechart ( http://www.jfree.org/jfreechart/ ) en librairie C++, parce qu'elle est rudement bien mais dispo qu'en java :-( .

    P.S. :
    - pourquoi une telle réponse ? voir http://www.gnurou.org/writing/smartquestionsfr , à moins que j'ai lu trop vite, auquel cas désolé.
    • [^] # Re: je veux bien mais

      Posté par  . Évalué à -2.

      Je veux juste savoir comment faire des tableaux de variables en lua,
      afin de les utiliser dans un for ,
      c'est pas le bout du monde...
      • [^] # Re: je veux bien mais

        Posté par  . Évalué à 5.

        euh ...
        - soit j'ai vraiment pas compris ta question, auquel cas détaille la un peu plus pour que j'ai l'impression que la réponse à te donner ce n'est pas juste RTFM,
        - soit c'est ce que je pense et tu n'as même pas lu mon post précédent et le lien que je t'ai fourni.
        • [^] # Re: je veux bien mais

          Posté par  . Évalué à -2.

          La on parle de lua donc d'un langage, non d'un exécutable , ou man toto me donnera ma réponse. donc ce genre de réponse tu peux te les garder.
          Si tu n'as rien à dire passe ton chemin au lieu de faire des leçons de morale.
          Moi ce que j'essaye c'est de gagner du temps, donc je suis déjà passé à autre chose et j'ai fait un vilain copier coller.
          C'était juste pour ma culture personnel, pour améliorer mon script lua que je souhaitais savoir comment factoriser le code.
          Maintenant si personne n'a une idée c'est pas grave, je suis passé à autre chose.
          • [^] # Re: je veux bien mais

            Posté par  . Évalué à 9.

            Je crois que tu n'as pas dû comprendre ni mon intention ni le lien que je t'ai fourni. Rien que mon premier post m'a pris plus de temps (à cause de la recherche du lien) que de te donner la réponse qui tient en une ligne.

            La on parle de lua donc d'un langage, non d'un exécutable , ou man toto me donnera ma réponse. donc ce genre de réponse tu peux te les garder.
            Dans le cas présent, il est fort probable que man lua ne t'ai donné grand chose, par contre la lecture de la doc officielle, sur le site officiel du langage t'aurait été profitable (prends le temps de comprendre ce que signifie RTFM).

            Moi ce que j'essaye c'est de gagner du temps, donc je suis déjà passé à autre chose et j'ai fait un vilain copier coller.
            Le hic c'est que tu essaies de gagner du temps sur le dos des autres alors même que cela te prendrait moins de temps de lire la doc officielle que de poster sur un forum avec un français correct. Si la réponse n'était pas dans les premières pages de la doc officielle, et si j'avais eu le sentiment que tu avais fait l'effort de chercher, je t'aurai sûrement donné la réponse que tu cherche (ce que je te dis est expliqué dans le lien que je t'ai donné plus haut).

            Maintenant si personne n'a une idée c'est pas grave, je suis passé à autre chose.
            Si si, je connais la réponse, mais te la donner en brute c'est l'assurance que tu reviendras encore demander quelque chose de trivial. Pour poser des questions telles que celle-ci, tu peux t'adresser à developpez.com, site où ils ont beaucoup plus de débutants qui peuvent avoir envie de répondre à une question du genre : comment on fait pour faire un tableau en lua. J'ai peur qu'ici il y ait moins de gens stimulé par ce genre de question.
            • [^] # Re: je veux bien mais

              Posté par  . Évalué à -2.

              j'aurais presque envie de faire un multi pour pouvoir te re plusser :-)
            • [^] # Re: je veux bien mais

              Posté par  . Évalué à -2.

              Je suis tout à fait d'accord avec ce que tu dis.
              Dans le cas présent je suis en retard dans un projet et oui je fais le connard pour avoir une réponse rapide à mon probleme sans trop chercher, tout simplement car j'ai pas le temps et j'ai pas forcément envie de me plonger dans LUA qui me sert uniquement pour parametrer ma GUI pour ma présentation qui arrive.
              Donc oui je pousse pas loin et je comprends que ca vous enerve, l'idée, c'est, tien le code est pas top là, je vais poster sous linuxfr pour avoir une réponse rapide.

              Toutes les questions ne sont pas stimulantes, mais je n'ai pas posté dans un forum spécialisé pour les pro de LUA, j'ai posté dans un forum programmation.autre qui ne veut pas dire, qu'une question de debutant ne peut pas etre posée...

              J'aime linuxfr car les gens sont réactifs et répondent vite et bien, mais maintenant il faut meriter sa réponse, ca c'est pas cool.
              • [^] # Re: je veux bien mais

                Posté par  . Évalué à 4.

                tout cela ca ne change rien à ce que j'ai dit.
                Dans ma vie professionnelle il m'arrive également d'avoir besoin d'aide de manière urgente (je suis déjà en retard, sans la réponse je ne peux rien faire à part me tourner les pouces et mon patron me regarde car tout ce retard ca l'inquiète ; en plus pas de bol je cherche de l'aide sur des forums anglais, alors bonjour le décalage horaire). Et je peux t'assurer que dans ces moments là j'ai vachement envie de hurler "JE SUIS PRESSÉ !!!!!!".
                Hé bein, néanmoins je prends sur moi, j'écris poliment, fais très attention à mon orthographe, fabrique un petit exemple, un snipped code, etc. Et j'y peux rien car le ou les gars en face, ils ont pas que moi dans leur vie, que des gars vachement pressés il y en a des tas, etc.

                Donc je comprends ta position, mais il s'agit là d'une forme de respect.

                P.S. :
                - il m'est même une fois arrivé de demander de l'aide sur boîte email perso car je n'avais trouvé aucun forum, que l'on était dans les fêtes de noël, et que le sujet était trop technique pour demander de l'aide sur Linuxfr ou autre ; et bien je l'emmenais pas large, j'y allais avec des excuses ("je suis vraiment désolé de vous embêté sur votre boîte perso", etc, etc), et pensais qu'on allait ignorer froidement mon mail. Et bein, les formes ont dû jouer en ma faveur, car il m'a répondu gentillement, rapidement, en me disant que c'était pas la peine de s'excuser, etc.
                - en plus, l'expérience faisant, ca m'arrive souvent de trouver des bugs, alors le temps d'avoir une réponse peut être super long, pour finalement avoir comme réponse : "désolé mais là ca va pas marcher, il faut que je trouve d'où vient le problème".
                • [^] # Re: je veux bien

                  Posté par  . Évalué à -4.

                  Je suis entièrement d'accord, et oui j'ai tendance à écrire un peu trop vite, et j'ai pas trouvé le bouton "éditer" ;)
                  Et oui j'aurai pu reduire le code exemple et dire tout simplement :
                  Comment factoriser ce passage en LUA :

                  root_1:setMousePassThroughEnabled( true)
                  root_1:subscribeEvent("CloseClicked","hide")
                  root_2:setMousePassThroughEnabled( true)
                  root_2:subscribeEvent("CloseClicked","hide")
                  root_3:setMousePassThroughEnabled( true)
                  root_3:subscribeEvent("CloseClicked","hide")
                  • [^] # Re: je veux bien

                    Posté par  . Évalué à 2.

                    et quelque chose comme ca :


                    ma_table={}
                    ma_table[1] = root_1
                    ma_table[2] = root_2
                    ma_table[3] = root_3

                    for i,v in ipairs(ma_table) do
                    v:setMousePassThroughEnabled( true)
                    v:subscribeEvent("CloseClicked","hide")
                    end
                    • [^] # Re: je veux bien

                      Posté par  . Évalué à -2.

                      Ça a l'air pas mal, merci
                      • [^] # Re: je veux bien

                        Posté par  . Évalué à 3.

                        mais je suis pas sûr que tu aies bien compris mon petit laïus de tout à l'heure.
                        Je suis entièrement d'accord, et oui j'ai tendance à écrire un peu trop vite, et j'ai pas trouvé le bouton "éditer" ;)
                        Je ne parlais pas que de la forme, mais du fond également. Le post dans lequel je décris mon expérience n'était là que pour te faire comprendre que je comprends ta position, et ne disait pas que ta question n'était pas bien écrite.
                        Je ne connais pas ton expérience en développement mais au vu de la simplicité de la solution que je t'ai proposée, tu n'as pas eu un petit peu honte ? Qu'est-ce que je fais dans mon exemple :
                        1/ créer un tableau
                        2/ mettre dedans les objets sur lesquels on fait toujours le même traitement
                        3/ faire une boucle
                        4/ dans la boucle faire le traitement classique

                        en quoi c'est dur ? Allez étape par étape, cela donnerait pour quelqu'un ne connaissant pas le langage et étant pressé :
                        1 ==> http://www.lua.org/pil/2.5.html et y trouve premier exemple : a = {}
                        2 ==> même page mais ligne 2 du même exemple
                        3 ==> http://www.lua.org/pil/4.3.5.html troisième exemple
                        4 ==> le code que tu as fournis

                        en ayant en entrée directe dans la table de matière (http://www.lua.org/pil/index.html) :
                        ==> 2.5 - Tables
                        ==> 4.3.4 - Numeric for ou alors 4.3.5 - Generic for

                        M'enfin comme disait l'autre.
                        • [^] # Re: je veux bien

                          Posté par  . Évalué à -2.

                          Bravo pour ta pédagogie, et oui j'ai un peu honte certes mais voilà il y a un moment ou tu satures, ca fait 3 mois que je bosse tous les jours sur le portage de mon appli de linux à windows, la c'est fini et j'ai besoin de vacances..
                          Merci.
                          • [^] # Re: je veux bien

                            Posté par  . Évalué à 2.

                            Baf, je comprends que l'on soit fatigué.
                            Mon acharnement était en effet pédagogique (du moins je l'espère), et n'avait rien de personnel.

                            Bon repos.
          • [^] # Re: je veux bien mais

            Posté par  . Évalué à 2.

            Tu sais, la culture peut s'acquérir par soi-même, en cherchant un peu, et en faisant marcher son cerveau ...
          • [^] # Re: je veux bien mais

            Posté par  . Évalué à 4.

            aller je suis sympa

            google, mots clés : tableau en LUA

            premier lien renvoyé par : http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_Trainin(...)

            tu n'avais vraiment pas du chercher bien loin
            • [^] # Re: je veux bien mais

              Posté par  . Évalué à 2.

              quitte à lui donner la réponse moi je lui aurait donné :

              http://www.lua.org/pil/ qui est un livre pour apprendre le langage et ses mécanismes
              http://www.lua.org/manual/5.1/ qui est la référence du langage


              et en particulier dans le bouquin qui forme au langage :

              http://www.lua.org/pil/2.5.html

              P.S. : à remarquer que c'est hébergé sur le site officiel
              • [^] # Re: je veux bien mais

                Posté par  . Évalué à -2.

                Mais là je suis pas 'd'accord,
                Si ma question avait été je souhaite apprendre le langage lua, quel site me conseillez vous, ta réponse était bonne.
                Mais pas dans le cas présent.

                Allez c'est pas grave
            • [^] # Re: je veux bien mais

              Posté par  . Évalué à -1.

              Oui bien-sur j'étais tombé sur cette page en premier , il y a quand même des limites à ma flemme et non la solution n'y est pas.

              J'ai besoin d'un tableau de paramètres, dans le cas présent des types Window sur lesquels je vais appeler des méthodes.

              Et ca passe pas ...
              • [^] # Re: je veux bien mais

                Posté par  . Évalué à 2.

                essaies de pondre un code, je te dirais ce que j'en pense.
                • [^] # Re: je veux bien mais

                  Posté par  . Évalué à 2.

                  oups, essaies de pondre un SNIPPED code (5 lignes max devraient faire l'affaire).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.