Salome HOME
travail sur monPlusieurs
[tools/eficas.git] / Noyau / N_MCLIST.py
index 21e64dfaf9a5bee3fd6157e624bc36ef13636fed..1198e91276df133998270c1315f95aa824f26f30 100644 (file)
@@ -1,23 +1,24 @@
-#@ MODIF N_MCLIST Noyau  DATE 04/02/2004   AUTEUR CAMBIER S.CAMBIER 
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# 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, OR   
-# (AT YOUR OPTION) ANY LATER VERSION.                                 
+# -*- coding: iso-8859-1 -*-
+# Copyright (C) 2007-2013   EDF R&D
 #
-# 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.                            
+# 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.
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
-#                                                                       
-#                                                                       
-# ======================================================================
+# 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 contient la classe MCList qui sert à controler la valeur
     d'une liste de mots-clés facteur par rapport à sa définition portée par un objet
@@ -26,6 +27,7 @@
 
 from copy import copy
 import UserList
+import types
 
 class MCList(UserList.UserList):
    """ Liste semblable a la liste Python
@@ -117,7 +119,49 @@ class MCList(UserList.UserList):
       """
       l=[]
       for child in self.data:
-        l.extend(child.get_sd_utilisees())
+         l.extend(child.get_sd_utilisees())
+      return l
+
+   def get_sd_mcs_utilisees(self):
+      """ 
+          Retourne la ou les SD utilisée par self sous forme d'un dictionnaire :
+            - Si aucune sd n'est utilisée, le dictionnaire est vide.
+            - Sinon, les clés du dictionnaire sont les mots-clés derrière lesquels on
+              trouve des sd ; la valeur est la liste des sd attenante.
+
+              Exemple ::
+              
+                { 'VALE_F': [ <Cata.cata.fonction_sdaster instance at 0x9419854>,
+                              <Cata.cata.fonction_sdaster instance at 0x941a204> ],
+                  'MODELE': [<Cata.cata.modele instance at 0x941550c>] }
+      """
+      dico = {}
+      for child in self.data:
+         daux = child.get_sd_mcs_utilisees()
+         for cle in daux.keys():
+            dico[cle] = dico.get(cle, [])
+            dico[cle].extend(daux[cle])
+      return dico
+
+   def get_mcs_with_co(self,co):
+      """
+         Cette methode retourne l'objet MCSIMP fils de self
+         qui a le concept co comme valeur.
+         En principe, elle ne doit etre utilisee que pour les concepts
+         instances de la classe CO 
+      """
+      l=[]
+      for child in self.data:
+        l.extend(child.get_mcs_with_co(co))
+      return l
+
+   def get_all_co(self):
+      """
+         Cette methode retourne tous les concepts instances de CO
+      """
+      l=[]
+      for child in self.data:
+        l.extend(child.get_all_co())
       return l
 
    def copy(self):
@@ -155,3 +199,25 @@ class MCList(UserList.UserList):
       if self.parent == None: return None
       return self.parent.get_etape()
 
+   def __getitem__(self,key):
+      """
+         Dans le cas d un mot cle facteur de longueur 1 on simule un scalaire
+      """
+      if type(key) != types.IntType and len(self) ==1:
+         return self.data[0].get_mocle(key)
+      else:
+         return self.data[key]
+   
+   def List_F(self):
+      """
+         Retourne une liste de dictionnaires (eventuellement singleton) qui peut etre
+         passe directement derriere un mot-cle facteur (pour les macros).
+      """
+      dresu = []
+      for mcf in self:
+         dico = mcf.cree_dict_valeurs(mcf.mc_liste)
+         for i in dico.keys():
+            if dico[i] == None:
+               del dico[i]
+         dresu.append(dico)
+      return dresu