X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Editeur%2Fsession.py;h=954f277dfb452c60d8a4697a6496a7be9cc8d4d0;hb=9f4ff7ed9afd87c96e11d61e442e39e5511f60d1;hp=235e9a4d4b5dec848d16af9df55653582f6d4df6;hpb=69ed0ccae7884aee37bbe54cb1af2983cb51492d;p=tools%2Feficas.git diff --git a/Editeur/session.py b/Editeur/session.py index 235e9a4d..954f277d 100644 --- a/Editeur/session.py +++ b/Editeur/session.py @@ -1,4 +1,22 @@ -# -*- coding: iso-8859-15 -*- +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2013 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# """ Ce module centralise les informations issues de la ligne de commande. @@ -37,6 +55,12 @@ comm=ppp La session utilisera le catalogue V7.3 en mode debug. """ +from __future__ import absolute_import +from __future__ import print_function +try : + from builtins import str +except : + pass try: import optparse from optparse import OptionValueError @@ -45,27 +69,29 @@ except: from Tools.optparse import OptionValueError import os,traceback -import ConfigParser +import six.moves.configparser import re +from Extensions.i18n import tr + # Les valeurs decodees par optparse sont mises dans un objet dictionnaire-like. # On l'utilise comme environnement de session. d_env={} # # L'attribut "studies" de d_env est une liste dans laquelle on range les etudes de niveau global. -# Une étude est stockée dans un dictionnaire. -# La clé "comm" du dictionnaire donne le nom du fichier de commandes principal -# La clé (optionnelle) "pours" du dictionnaire donne les informations pour une poursuite -# La valeur associée à la clé est un dictionnaire qui contient les informations sur -# le nom du fichier de commandes de la poursuite (clé "comm"), une éventuelle poursuite -# (clé "pours") et les includes (clés entières associées à des noms de fichier). +# Une etude est stockee dans un dictionnaire. +# La cle "comm" du dictionnaire donne le nom du fichier de commandes principal +# La cle (optionnelle) "pours" du dictionnaire donne les informations pour une poursuite +# La valeur associee a la cle est un dictionnaire qui contient les informations sur +# le nom du fichier de commandes de la poursuite (cle "comm"), une eventuelle poursuite +# (cle "pours") et les includes (cles entieres associees a des noms de fichier). # # # -# Les informations (dictionnaire) associées au fichier de commandes en cours de traitement -# sont stockées dans parser.values.current +# Les informations (dictionnaire) associees au fichier de commandes en cours de traitement +# sont stockees dans parser.values.current # En general, il faut utiliser current et pas parser.values.studies car les informations -# sont stockées hiérarchiquement +# sont stockees hierarchiquement # def check_comm(option, opt_str, value, parser): @@ -73,7 +99,7 @@ def check_comm(option, opt_str, value, parser): parser.values.studies=[] parser.values.comm=[] if not os.path.isfile(value): - raise OptionValueError("le fichier de commandes %s n'existe pas" % value) + raise OptionValueError(tr("le fichier de commandes %s n'existe pas", value)) parser.values.comm.append(value) d_study={"comm":value} parser.values.current=d_study @@ -81,9 +107,9 @@ def check_comm(option, opt_str, value, parser): def check_poursuite(option, opt_str, value, parser): if parser.values.comm is None: - raise OptionValueError("un fichier de commandes doit etre defini avant une poursuite %s" % value) + raise OptionValueError(tr("un fichier de commandes doit etre defini avant une poursuite %s", value)) if not os.path.isfile(value): - raise OptionValueError("le fichier poursuite %s n'existe pas" % value) + raise OptionValueError(tr("le fichier poursuite %s n'existe pas", value)) #current : fichier de commandes en cours de traitement (dictionnaire des infos) comm=parser.values.current d_study={"comm":value} @@ -94,15 +120,15 @@ def check_include(option, opt_str, value, parser): try: args=[int(parser.rargs[0]),parser.rargs[1]] except: - raise OptionValueError("include mal defini %s" % parser.rargs[0:2]) + raise OptionValueError(tr("include mal defini %s", parser.rargs[0:2])) del parser.rargs[0] del parser.rargs[0] if parser.values.comm is None: - raise OptionValueError("un fichier de commandes doit etre defini avant un include %s" % args) + raise OptionValueError(tr("un fichier de commandes doit etre defini avant un include %s", args)) if not os.path.isfile(args[1]): - raise OptionValueError("le fichier include %s n'existe pas" % args[1]) + raise OptionValueError(tr("le fichier include %s n'existe pas", args[1])) comm=parser.values.current comm[args[0]]=args[1] @@ -112,12 +138,12 @@ def check_jdc(config,jdc,parser,fich): """ Fonction : analyse une section de fichier .ini pour en extraire les informations sur les fichiers poursuite et includes - définis dans cette section + definis dans cette section parser : objet analyseur de la ligne de commande fich : nom du fichier .ini en cours d'analyse config : objet de la classe ConfigParser permettant de parser le fichier fich - jdc : nom de la section du fichier fich à analyser + jdc : nom de la section du fichier fich a analyser """ d_study={} @@ -126,10 +152,14 @@ def check_jdc(config,jdc,parser,fich): p=config.get(jdc,"poursuite") if not config.has_option(p,"comm"): - raise OptionValueError("jdc %s manque fichier comm dans section %s" % (fich,p)) + raise OptionValueError(tr(" jdc %(v_1)s manque \ + fichier comm dans section %(v_2)s", \ + {'v_1': fich, 'v_2': p})) comm=config.get(p,"comm") if not os.path.isfile(comm): - raise OptionValueError("jdc %s, le fichier de commandes %s n'existe pas" % (fich,comm)) + raise OptionValueError(tr("jdc %(v_1)s, le fichier\ + de commandes %(v_2)s n'existe pas", \ + {'v_1': fich, 'v_2': comm})) pours=check_jdc(config,p,parser,fich) pours["comm"]=comm @@ -140,10 +170,13 @@ def check_jdc(config,jdc,parser,fich): unit=int(o) # si le parametre est un entier, il s'agit d'un include inc=config.get(jdc,o) - except: + except EficasException: continue if not os.path.isfile(inc): - raise OptionValueError("jdc %s fichier include %s, %s n'existe pas" % (fich,unit,inc)) + raise OptionValueError(tr(" jdc %(v_1)s \ + fichier include %(v_2)s, %(v_3)s \ + n'existe pas", \ + {'v_1': fich, 'v_2': unit, 'v_3': inc})) d_study[unit]=inc return d_study @@ -154,28 +187,30 @@ def check_fich(option, opt_str, fich, parser): option : option en cours de traitement opt_str : chaine de caracteres utilisee par l'utilisateur - fich : nom du fichier .ini donné par l'utilisateur + fich : nom du fichier .ini donne par l'utilisateur parser : objet parseur des options de la ligne de commande """ if not os.path.isfile(fich): - raise OptionValueError("le fichier jdc %s n'existe pas" % fich) + raise OptionValueError(tr(" le fichier jdc %s n'existe pas", str(fich))) if parser.values.fich is None: parser.values.fich=[] parser.values.fich.append(fich) if not hasattr(parser.values,"studies"): parser.values.studies=[] parser.values.comm=[] - config = ConfigParser.ConfigParser() + config = six.moves.configparser.ConfigParser() config.read([fich]) - if not config.has_option("jdc","jdc"): - raise OptionValueError("jdc %s manque option jdc dans section jdc") - jdc=config.get("jdc","jdc") + if not config.has_option(u"jdc","jdc"): + raise OptionValueError(tr(" jdc %s manque option jdc dans section jdc", str(fich))) + jdc=config.get(u"jdc","jdc") if not config.has_option(jdc,"comm"): - raise OptionValueError("jdc %s manque fichier comm dans section %s" % (fich,jdc)) + raise OptionValueError(tr(" jdc %(v_1)s manque fichier comm \ + dans section %(v_2)s", {'v_1': fich, 'v_2': jdc})) comm=config.get(jdc,"comm") if not os.path.isfile(comm): - raise OptionValueError("jdc %s, le fichier de commandes %s n'existe pas" % (fich,comm)) + raise OptionValueError(tr("jdc %(v_1)s, le fichier de commandes \ + %(v_2)s n'existe pas", {'v_1': fich, 'v_2': comm})) parser.values.comm.append(comm) d_study=check_jdc(config,jdc,parser,fich) @@ -184,52 +219,57 @@ def check_fich(option, opt_str, fich, parser): def print_pours(d_pours,dec=''): # Les fichiers includes d'abord - for k,v in d_pours.items(): - if k in ("pours","comm"):continue - print dec+" include",k," :",v + for k,v in list(d_pours.items()): + if k in (u"pours","comm"):continue + print(( tr("%(v_1)s include %(v_2)s : %(v_3)s", {'v_1': str(dec), 'v_2': str(k), 'v_3': str(v)}))) - if d_pours.has_key("pours"): + if "pours" in d_pours: # Description de la poursuite - print dec+" fichier poursuite:",d_pours["pours"]["comm"] + print((tr("%(v_1)s fichier poursuite: %(v_2)s", {'v_1': dec, 'v_2': d_pours["pours"]["comm"]}))) print_pours(d_pours["pours"],dec=dec+"++") def print_d_env(): - #print d_env if d_env.studies is None:return for study in d_env.studies: - print "nom etude:",study["comm"] + print((tr("nom etude : %s", study["comm"]))) print_pours(study,dec="++") - print def create_parser(): # creation du parser des options de la ligne de commande - import prefs - parser=optparse.OptionParser(usage="usage: %prog [options]",version="%prog 1.13") + #import prefs + parser=optparse.OptionParser(usage=tr("utilisation : %prog [options]"), version="%prog 1.13") - parser.add_option("-j","--jdc",dest="comm",type='string', + parser.add_option(u"-j","--jdc",dest="comm",type='string', action="callback",callback=check_comm, - help="nom du fichier de commandes") + help=tr("nom du fichier de commandes")) - parser.add_option("-p","--poursuite", type="string",dest="pours", + parser.add_option(u"-p","--poursuite", type="string",dest="pours", action="callback", callback=check_poursuite, - help="nom du fichier poursuite") + help=tr("nom du fichier poursuite")) - parser.add_option("-i","--include", + parser.add_option(u"-i","--include", action="callback", callback=check_include, - nargs=2, help="numero d'unite suivi du nom du fichier include") + nargs=2, help=tr("numero d'unite suivi du nom du fichier include")) - parser.add_option("-f","--fich", type="string",dest="fich", + parser.add_option(u"-f","--fich", type="string",dest="fich", action="callback", callback=check_fich, - help="fichier decrivant une etude") + help=tr("fichier decrivant une etude")) + + parser.add_option(u"-c","--cata", action="store", type="string",dest="cata", + help=tr("version de catalogue a utiliser")) - parser.add_option("-c","--cata", action="store", type="string",dest="cata", - help="version de catalogue a utiliser") + parser.add_option(u"-k","--kode", action="store", type="string",dest="code", + help=tr("nom du code a utiliser")) - parser.add_option("-k","--kode", action="store", type="string",dest="code", - help="nom du code a utiliser",default=prefs.code) + parser.add_option(u"-d","--debug", action="store", type="int",dest="debug", + help=tr("niveau de debug")) + + parser.add_option(u"-s","--schema", action="store", type="string",dest="ssCode", + help=tr("schema")) + # To handle locale information + parser.add_option("-l", "--locale", action="store", type="string", dest="locale", + help=tr("localisation de l'application, pour la traduction")) - parser.add_option("-d","--debug", action="store", type="int",dest="debug", - help="niveau de debug") return parser @@ -243,21 +283,23 @@ def parse(args): del parser.values.current except: pass - for file in args: if os.path.isfile(file): options.comm.append(file) options.studies.append({"comm":file}) - elif len(args)==1 and re.search('.comm',file): + #print options.studies + elif len(args)==1 and (re.search('.comm',file) or re.search('.map',file)): try : f=open(file,'w') f.close() except : - parser.error("incorrect number of arguments") + parser.error(tr("Nombre incorrect d'arguments")) options.comm.append(file) options.studies.append({"comm":file}) + elif len(args) == 1 and options.locale: + print((tr("Localisation specifiee pour l'application."))) else: - parser.error("incorrect number of arguments") + parser.error(tr("Nombre incorrect d'arguments")) global d_env d_env=options @@ -267,7 +309,7 @@ def parse(args): def get_unit(d_study,appli): """ Fonction : construit et retourne un dictionnaire contenant les informations - sur les fichiers poursuite et includes sous la forme adaptée + sur les fichiers poursuite et includes sous la forme adaptee pour EFICAS :: [None : nom_fichier, texte_source, unites_associees, # poursuite @@ -281,15 +323,15 @@ def get_unit(d_study,appli): def get_dunit(d_unit,appli): d={} - if d_unit.has_key("pours"): + if 'pours' in d_unit: # on a une poursuite comm=d_unit["pours"]["comm"] g=get_dunit(d_unit["pours"],appli) text=appli.get_source(comm) d[None]=comm,text,g - for k,v in d_unit.items(): - if k in ("pours","comm"): continue + for k,v in list(d_unit.items()): + if k in (u"pours","comm"): continue text=appli.get_source(v) d[k]=v,text,d