Salome HOME
report modif variees + patch CEA
[tools/eficas.git] / Editeur / Eficas_utils.py
1 # -*- coding: utf-8 -*-
2 # Copyright (C) 2007-2017   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19 #
20 """
21     Ce module contient des utilitaires divers
22 """
23 import os,re
24 import glob
25 import traceback
26 import codecs,types
27
28 from Extensions.i18n import tr
29
30 def substractList(liste1,liste2):
31   """ 
32       Enleve tous les elements de liste2 presents dans liste1 et retourne liste1
33   """
34   for item in liste2:
35     try:
36       liste1.remove(item)
37     except:
38       pass
39   return liste1
40
41 def getRepUser(dir):
42   """
43       Determine sur quelle plate-forme s'execute Eficas et recherche
44       le repertoire de l'utilisateur /$home/Eficas_install
45   """
46
47   #rep_user_eficas= os.path.join(os.environ['HOME'],dir)
48   rep_user_eficas= os.path.join(os.path.expanduser("~"),dir)
49   if os.path.exists(rep_user_eficas):
50     if os.path.isfile(rep_user_eficas) :
51       print (tr("Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom", rep_user_eficas))
52       rep_user_eficas=None
53   else :
54     try:
55       os.mkdir(rep_user_eficas)
56     except:
57       print (tr("Creation du repertoire %s impossible\n Verifiez vos droits d'acces", rep_user_eficas))
58   return rep_user_eficas
59
60 def read_file(file):
61   """
62       ouvre le fichier file et retourne son contenu
63       si pbe retourne None
64   """
65   try :
66     f=open(file)
67     text=f.read()
68     f.close()
69     return text
70   except:
71     return None
72
73 def save_in_file(file,text,dir=None):
74   """
75       cree le fichier file (ou l'ecrase s'il existe) et ecrit text dedans
76       retourne 1 si OK 0 sinon
77   """
78   try :
79       if dir != None:
80          os.chdir(dir)
81       f=open(file,'w')
82       f.write(text)
83       f.close()
84       return 1
85   except:
86       return 0
87
88 def extension_fichier(pathAndFile):
89     """ Return ext if path/filename.ext is given """
90     return os.path.splitext(pathAndFile)[1][1:]
91
92 def stripPath(pathAndFile):
93     """ Return filename.ext if path/filename.ext is given """
94     return os.path.split(pathAndFile)[1]
95
96 def initRep_CataDev(fic_cata,rep_goal):
97   """ 
98       Initialise le repertoire des catalogues developpeurs (chemin d'acces donne
99       dans le fichier eficas.ini cad :
100         - le cree s'il n'existe pas encore
101         - copie dedans les 3 fichiers necessaires :
102           * __init__.py (pour que ce repertoire puisse etre interprete comme un package)
103           * entete.py (pour realiser les import necessaires a l'interpretation des catalogues)
104           * declaration_concepts.py (idem)
105         - cree le fichier cata_developpeur.py qui sera par la suite importe
106   """
107   try :
108     if not os.path.isdir(rep_goal) :
109       os.mkdir(rep_goal)
110     #texte_entete = getEnteteCata(fic_cata)
111     texte_entete=""
112     # rep_goal doit contenir les catalogues du developpeur sous la forme *.capy
113     # il faut creer le catalogue developpeur par concatenation de entete,declaration_concepts
114     # et de tous ces fichiers
115     cur_dir = os.getcwd()
116     os.chdir(rep_goal)
117     l_cata_dev = glob.glob('*.capy')
118     if os.path.isfile('cata_developpeur.py') : os.remove('cata_developpeur.py')
119     if len(l_cata_dev) :
120       # des catalogues developpeurs sont effectivement presents : on cree cata_dev.py dans rep_goal
121       str = ''
122       str = str + texte_entete+'\n'
123       for file in l_cata_dev :
124         str = str + open(file,'r').read() +'\n'
125       open('cata_developpeur.py','w+').write(str)
126     os.chdir(cur_dir)
127   except:
128     traceback.print_exc()
129     print ( tr("Impossible de transferer les fichiers requis dans : %s", str(rep_goal)))
130
131 def getEnteteCata(fic_cata):
132   """ Retrouve l'entete du catalogue """
133   l_lignes = open(fic_cata,'r').readlines()
134   txt = ''
135   flag = 0
136   for ligne in l_lignes :
137     if re.match(u"# debut entete",ligne) : flag = 1
138     if re.match(u"# fin entete",ligne) : break
139     if not flag : continue
140     txt = txt + ligne
141   return txt
142