Table of Contents



Commit 2007-09-21

Modifs

Nettoyages

mtfdir = '../../oo_meta'

if __name__ == "__main__":
    import sys, os.path
    if os.path.isdir(mtfdir):
        sys.path.append(os.path.abspath(mtfdir))
    else:
        print "metafor dir (\"%s\") not found!"
        sys.exit()
    
    import toolbox.battery as b 
    b.dirs      = [ 'tests' ]
    b.verifdir  = 'tests/verif'.replace('/',os.sep)
    b.mtfdir    = mtfdir
    b.cplx_exec = [ 'tests.complex' ]
    b.main()

Metafor sans console

J'ai réesayé de supprimer la console qui apparait lorsqu'on lance Metafor. Celle-ci vient du fait qu'on compile l'application en mode “console”. Normalement cette console devrait être inutile puisque tous les flux (python d'une part et streams c++ de l'autre - à l'exception des i/o C non python) sont redirigés vers la fenêtre graphique.

Malheureusement, quand on crée une application “non console”, on constatait (avant ce commit) que l'interpréteur python merdouille. En débugant, on voit que la fonction readline customisée par mes soins pour la vizu n'est plus appelée car python vérifie que stdin et stdout sont bien des flux console… Ce qui n'est plus le cas vu qu'on n'a plus de console! C'est vraiment très bête parce qu'en supprimant ce test dans python (en dur dans le source), tout fonctionnerait nickel.

En conséquence, j'ai réécrit, dans ce cas pathologique, une boucle python qui appelle explicitement le readline customisé et qui exécute des PyRun_SimpleString. Cette façon de faire fonctionne mais a l'inconviénent de ne pas afficher les objets après chaque commande interactive (par exemple “a=2; a” n'affiche pas 2). A part ça, tout est OK (cont2 tourne, quoi).

J'ai mis au point 2 solutions pour virer cette sale console:

Les 2 solutions:

Projet

Nouveau projet

Je conseille à tous (Luc en particulier) de faire un nouveau projet nommé MetaforGUI. C'est un exec non console similaire à Metafor. Quelques remarques:

Aucune obligation de l'utiliser plutôt que Metafor vu ses inconvénient (le but ici est de vérifier que tout compile correctement). Pour rappel, les différences avec l'exec console sont:

import sys; dir(sys)

doit s'écrire

import sys; print dir(sys)

Raccourci bureau

Pour ceux qui, comme moi, ont un raccourci vers Metafor.exe, vous pouvez ajouter l'option -nocon à votre raccourci pour supprimer la console

Fichiers ajoutés/supprimés

toolbox/battery.py	added	 
toolbox/clean.py	added	 

Romain BOMAN 2007/09/21 08:39