]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
This commit was manufactured by cvs2git to create tag 'FR_27_03'. FR_27_03
authorcvs2git <renaud.nedelec@opencascade.com>
Wed, 27 Mar 2002 16:20:03 +0000 (16:20 +0000)
committercvs2git <renaud.nedelec@opencascade.com>
Wed, 27 Mar 2002 16:20:03 +0000 (16:20 +0000)
Sprout from I26 2002-03-26 09:08:47 UTC eficas 'Version initiale de EFICAS 1.2'
Cherrypick from master 2002-03-27 16:20:02 UTC eficas 'F.R: Plusieurs bugs corrigés pour arriver à écrire la première moitié':
    Aster/INSTALL
    Aster/LICENSE.TERMS
    Aster/README
    Aster/sdist.py
    Editeur/appli.py
    Editeur/treeitemincanvas.py
    Editeur/treewidget.py
    Extensions/parametre_eval.py
    Ihm/I_ETAPE.py
    Ihm/I_MCCOMPO.py
    Ihm/I_MCLIST.py
    Ihm/I_MCSIMP.py
    Ihm/I_OBJECT.py

13 files changed:
Aster/INSTALL [new file with mode: 0644]
Aster/LICENSE.TERMS [new file with mode: 0644]
Aster/README [new file with mode: 0644]
Aster/sdist.py [new file with mode: 0644]
Editeur/appli.py
Editeur/treeitemincanvas.py
Editeur/treewidget.py
Extensions/parametre_eval.py
Ihm/I_ETAPE.py
Ihm/I_MCCOMPO.py
Ihm/I_MCLIST.py
Ihm/I_MCSIMP.py
Ihm/I_OBJECT.py

diff --git a/Aster/INSTALL b/Aster/INSTALL
new file mode 100644 (file)
index 0000000..044599c
--- /dev/null
@@ -0,0 +1,33 @@
+
+
+1- Installation standard
+
+Pour installer EFICAS a partir de la distribution : Eficas.tgz
+faire :
+       tar xzvf Eficas.tgz
+
+ce qui a pour effet de créer un répertoire Eficas
+Tel que Eficas est prêt à etre executé.
+
+ATTENTION : 
+Si Eficas est installé dans un répertoire particulier d'administration 
+dans lequel les utilisateurs n'ont pas le droit d'écriture, il faut que
+l'administrateur lance Eficas avec les deux versions 5 et 6 pour générer
+les fichiers et catalogues compilés .pyc et _pickled.py
+
+2- Utilisation d'Eficas
+
+Pour utiliser Eficas, aller dans le répertoire Aster et faire :
+       python eficas_aster.py
+
+3- Installation avec un noyau pré-installé
+
+Aller dans le répertoire Aster du répertoire Eficas
+et modifier le fichier prefs.py comme suit :
+Mettre dans la variable CODE_PATH le chemin absolu vers
+le répertoire contenant les deux répertoires Noyau et Validation que vous voulez
+utiliser à la place de ceux fournis dans la livraison d'Eficas
+
+Pour changer les catalogues, modifier le fichier editeur.ini dans le répertoire Aster
+
+
diff --git a/Aster/LICENSE.TERMS b/Aster/LICENSE.TERMS
new file mode 100644 (file)
index 0000000..8c88a1e
--- /dev/null
@@ -0,0 +1,21 @@
+ ======================================================================
+ THIS PROGRAM IS FREE SOFTWARE. YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
+ IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
+ THE FREE SOFTWARE FOUNDATION, EITHER VERSION 2 OF THE LICENSE, AND 
+ ANY LATER VERSION.                   
+ THIS PROGRAM 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 GENERAL PUBLIC LICENSE FOR MORE DETAILS.             
+ ======================================================================
+          TRADUCTION EDF ( POUR INFORMATION )         
+ ======================================================================
+ CE PROGRAMME EST UN LOGICIEL LIBRE. VOUS POUVEZ LE DIFFUSER ET/OU LE  
+ MODIFIER SELON LES DISPOSITIONS DE LA LICENCE GRAND PUBLIC GNU (GPL)  
+ TELLE QU'ELLE EST PUBLIEE PAR LA FREE SOFTWARE FOUNDATION, VERSION 2  
+ DE LA LICENCE ET TOUTE VERSION ULTERIEURE.          
+ CE PROGRAMME EST DIFFUSE AVEC L'ESPOIR QU'IL SERA UTILE, MAIS SANS    
+ GARANTIE, SANS MEME LA GARANTIE IMPLICITE DE QUALIFICATION DE MISE SUR
+ LE MARCHE OU D'ADAPTATION A UNE UTILISATION PARTICULIERE.        
+ VOIR POUR DE PLUS AMPLES DETAILS LA LICENCE GRAND PUBLIC GNU (GPL)    
+ ======================================================================
diff --git a/Aster/README b/Aster/README
new file mode 100644 (file)
index 0000000..0597ecb
--- /dev/null
@@ -0,0 +1,2 @@
+
+Pour installer EFICAS voir dans le fichier INSTALL
diff --git a/Aster/sdist.py b/Aster/sdist.py
new file mode 100644 (file)
index 0000000..c992f40
--- /dev/null
@@ -0,0 +1,115 @@
+"""
+     Ce module sert à construire les distributions d'EFICAS en fonction
+     du tag CVS courant
+     Les distributions sont :
+      - un tar.gz pour UNIX ne contenant pas mxTextTools
+      - un zip pour Windows contenant mx TextTools préinstallé
+     L'utilisation de ce module est la suivante :
+      1- Se mettre dans un répertoire de travail
+      2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
+      3- Exporter les sources d'EficasV1 par la commande :
+            cvs export -r TAG -d Eficas_export EficasV1
+         ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
+      4- Copier le répertoire fourni par Aster (ACCAS6.2.0) au meme niveau que Eficas_export
+      5- Aller dans le répertoire Eficas_export
+      6- Executer le script sdist.py
+             python sdist.py
+         Ce qui a pour effet de creer un repertoire dist contenant les 2 distributions
+         et de les copier dans le répertoire indiqué par dir_download s'il est accessible
+
+"""
+import os,shutil,glob,sys
+import types
+
+version="$Name:  $"[7:-2] or 'Test'
+
+path_Noyau="../../../Tutorial/Superv"
+nom_distrib="Eficas"+version+"AsterSTA6"
+path_distrib=os.path.join("dist",nom_distrib)
+path_TextTools="/home/eficas/pkg/mxTools/egenix2.0.2pourWindows/mx/TextTools"
+dir_download= "/home/eficas/WWW/telechargement/eficas"
+
+def main():
+   if os.path.isdir('dist'):shutil.rmtree('dist')
+
+   copyfiles('.',path_distrib,['README','LICENSE.TERMS','INSTALL'])
+
+   copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
+   copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
+   copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
+   copyfiles('../Aster',os.path.join(path_distrib,'Aster'),['prefs.py',
+                                                            'editeur.ini',
+                                                            'eficas_aster.py',
+                                                           ])
+   copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
+   copyfiles('../convert/Parserv5',os.path.join(path_distrib,'convert','Parserv5'),['*.py'])
+
+   copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
+
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
+
+   copyfiles(os.path.join(path_Noyau,'Noyau'),os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles(os.path.join(path_Noyau,'Validation'),os.path.join(path_distrib,'Validation'),['*.py'])
+   copyfiles(os.path.join(path_Noyau,'Cata'),os.path.join(path_distrib,'Aster','Cata'),['*.py',
+                                                                                       ])
+
+   copyfiles('../Tools',os.path.join(path_distrib,'Tools'),['*.py'])
+   copyfiles('../Tools/foztools',os.path.join(path_distrib,'Tools','foztools'),['*.py'])
+
+   tarball= maketarball('dist',nom_distrib,nom_distrib)
+   try:
+      shutil.copy(tarball,dir_download)
+   except:
+      print "Repertoire de download inconnu : ",dir_download
+
+   try:
+      shutil.copytree(path_TextTools,os.path.join(path_distrib,'Tools','TextTools'))
+   except:
+      print "Impossible de recuperer mxTextTools : ",dir_download
+      sys.exit(1)
+
+   zipfile= makezipfile('dist',nom_distrib,nom_distrib)
+   try:
+      shutil.copy(zipfile,dir_download)
+   except:
+      print "Repertoire de download inconnu : ",dir_download
+
+def make_dir(dir_cible):
+   if type(dir_cible) is not types.StringType:
+      raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
+   head,tail=os.path.split(dir_cible)
+   tails=[tail]
+   while head and tail and not os.path.isdir(head):
+      head,tail=os.path.split(head)
+      tails.insert(0, tail)
+
+   for d in tails:
+      head = os.path.join(head, d)
+      if not os.path.isdir(head):os.mkdir(head)
+
+
+def copyfiles(dir_origin,dir_cible,listfiles):
+   if not os.path.isdir(dir_cible):make_dir(dir_cible)
+   for glob_files in listfiles:
+      for file in glob.glob(os.path.join(dir_origin,glob_files)):
+         shutil.copy(file,dir_cible)
+
+def maketarball(dir_trav,dir_cible,nom_tar):
+   prev=os.getcwd()
+   print prev
+   os.chdir(dir_trav)
+   os.system("tar -cf "+nom_tar+".tar "+dir_cible)
+   os.system("gzip -f9 "+nom_tar+".tar ")
+   os.chdir(prev)
+   return os.path.join(dir_trav,nom_tar+".tar.gz")
+
+def makezipfile(dir_trav,dir_cible,nom_tar):
+   prev=os.getcwd()
+   os.chdir(dir_trav)
+   os.system("zip -rq "+nom_tar+".zip "+dir_cible)
+   os.chdir(prev)
+   return os.path.join(dir_trav,nom_tar+".zip")
+
+main()
+
index f8b031f7a1d5aed6a8ea4dc3b33fb14e213af666..701d57660f68a20ca34341d1e81b2e6a24981401 100644 (file)
@@ -110,6 +110,7 @@ class APPLI:
         root.option_add('*background', 'grey')
         root.option_add('*foreground', 'black')
         root.option_add('*EntryField.Entry.background', 'white')
+       root.option_add('*Entry*background', 'white')
         root.option_add('*Listbox*background', 'white')
         root.option_add('*Listbox*selectBackground', '#00008b')
         root.option_add('*Listbox*selectForeground', 'white')
index 5ec26438ba59c5c6d55ee64af3c6097b064e2daf..a9f60e76f1221f0c3e8afd2ac0546d7fbaf909d5 100644 (file)
@@ -25,7 +25,7 @@ class TREEITEMINCANVAS:
       self.parent=parent
 
       self.item=Objecttreeitem.make_objecttreeitem(self.appli,self.nom,self.object)
-      self.canvas=Pmw.ScrolledCanvas(self.parent,borderframe=1)
+      self.canvas=Pmw.ScrolledCanvas(self.parent,borderframe=1,canvas_background='gray95')
       self.canvas.pack(padx=10,pady=10,fill = 'both', expand = 1)
       if not sel:
          def sel(event=None):
index a0d6554eacc6172e053c382649c465fd5ada1c63..c80538f9a01a9541d3bb739e7b897062562df5c6 100644 (file)
@@ -13,8 +13,8 @@ import fontes
 import images
 
 #
-__version__="$Name: V1_1p1 $"
-__Id__="$Id: treewidget.py,v 1.1.1.1 2001/12/04 15:38:23 eficas Exp $"
+__version__="$Name:  $"
+__Id__="$Id: treewidget.py,v 1.1.1.1 2002/03/26 09:08:45 eficas Exp $"
 #
 
 Fonte_Standard = fontes.standard
@@ -468,6 +468,7 @@ class Node :
         try:
             self.canvas.addtag_overlapping('move',bbox1[0],self.y +10,bbox1[2],bbox1[3])
         except:
+           print "Erreur dans move :"
             print self
             print self.item
             print self.item.object
@@ -493,6 +494,7 @@ class Node :
             try:
                 child.trace_ligne()
             except:
+               print "Erreur dans trace_ligne :"
                 print child
                 print child.item.object
 
index 73bf9bd6189b872f4b07b7f3b6d9b42064b97278..a968549868e33822ef99f8bb01b9971537918b1f 100644 (file)
@@ -60,6 +60,8 @@ class PARAMETRE_EVAL(parametre.PARAMETRE) :
     """
     if not val : return None
     d={}
+    val = string.strip(val)
+    if val[-1] == ';' : val = val[0:-1]
     d['EVAL'] = Accas.EVAL
     try:
         valeur = eval(val,{},d)
index 8937c11075bb2ada199d240c0f0bc11f03c87c29..d6f6f58c076cc3187552fff3434456d512222269 100644 (file)
@@ -237,6 +237,10 @@ class ETAPE(I_MCCOMPO.MCCOMPO):
       etape.mc_liste=[]
       for objet in self.mc_liste:
         new_obj = objet.copy()
+       new_obj.parent = etape
+       if hasattr(new_obj,'isMcList') :
+          if new_obj.isMCList() :
+             new_obj.init(new_obj.nom,etape)
         etape.mc_liste.append(new_obj)
       return etape
 
index 24f71ccabc4688572d99453a42d6ecdc94cf52b9..31efd18fcca10c353f6429a6cefa334a84571e23 100644 (file)
@@ -32,7 +32,7 @@ class MCCOMPO(I_OBJECT.OBJECT):
     """
     l=[]
     objet = self
-    while objet.definition.label != 'JDC' :
+    while objet.nature != 'JDC' :
       if not objet.isMCList() :
         l.append(string.strip(objet.nom))
       else :
@@ -304,11 +304,17 @@ class MCCOMPO(I_OBJECT.OBJECT):
   def copy(self):
     """ Retourne une copie de self """
     objet = self.makeobjet()
+    # FR : attention !!! avec makeobjet, objet a le même parent que self
+    # ce qui n'est pas du tout bon dans le cas d'une copie !!!!!!!
+    # FR : peut-on passer par là autrement que dans le cas d'une copie ???
+    # FR --> je suppose que non
+    objet.parent = None
     objet.valeur = copy(self.valeur)
     objet.val = copy(self.val)
     objet.mc_liste=[]
     for obj in self.mc_liste:
       new_obj = obj.copy()
+      new_obj.parent = objet
       objet.mc_liste.append(new_obj)
     return objet
 
index c08a383493db0b9448b6767c156833671b4396d2..c58c6d40b7a667a74b12b790427dd13d7403429a 100644 (file)
@@ -49,11 +49,16 @@ class MCList:
       child.delete_concept(sd)
 
   def copy(self):
+    """
+       Réalise la copie d'une MCList
+    """
     liste = self.data[0].definition.list_instance()
     # XXX Pas de parent ??
-    liste.init(self.nom)
+    # FR -->Il faut en spécifier un pour la méthode init qui attend 2 arguments ...
+    liste.init(self.nom,self.parent)
     for objet in self:
       new_obj = objet.copy()
+      new_obj.parent = liste
       liste.append(new_obj)
     return liste
 
@@ -93,3 +98,21 @@ class MCList:
     # Sans objet pour une liste de mots clés facteurs
     return [],[]
 
+  def init_modif(self):
+    """
+       Met l'état de l'objet à modified et propage au parent
+       qui vaut None s'il n'existe pas
+    """
+    self.state = 'modified'
+    if self.parent:
+      self.parent.init_modif()
+
+  def get_etape(self):
+     """
+        Retourne l'étape à laquelle appartient self
+        Un objet de la catégorie etape doit retourner self pour indiquer que
+        l'étape a été trouvée
+        XXX double emploi avec self.etape ???
+     """
+     if self.parent == None: return None
+     return self.parent.get_etape()
index 96fe6ccd23bd8b39c79f43da88674b21723d8618..c7f3fb7359a572daf320e24563b80fe098999d86 100644 (file)
@@ -257,3 +257,13 @@ class MCSIMP(I_OBJECT.OBJECT):
       if issubclass(self.valeur.__class__,ASSD) : l.append(self.valeur)
     return l
 
+
+  def set_valeur_co(self,nom_co):
+      """
+      Affecte à self l'objet de type CO et de nom nom_co
+      """
+      new_objet = CO(nom_co)
+      self.valeur = new_objet
+      self.val = new_objet
+      self.init_modif()
+       
index 559ebcd5736f9283db4634b0ae1db4487d2ecad2..04ef8ccaafeea2e1b535a0697a52ca06ab3351dc 100644 (file)
@@ -1,5 +1,6 @@
 """
 """
+import string
 
 class OBJECT:
   def isMCList(self):
@@ -80,4 +81,9 @@ class OBJECT:
     """
     return [],[]
 
-
+  def get_genealogie(self):
+    """ 
+        Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC
+        ou ETAPE) de self jusqu'au premier objet etape rencontré
+    """
+    return []