X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Noyau%2FN_MCLIST.py;h=1198e91276df133998270c1315f95aa824f26f30;hb=2c5a8689b9c6cc46804fd268d416d1de2777059e;hp=9b21cdf941b8e11b5de0c7a8c7aaefa1bab31a69;hpb=e48d543f878c604958b5f1e6ac6d92a8392356e4;p=tools%2Feficas.git diff --git a/Noyau/N_MCLIST.py b/Noyau/N_MCLIST.py index 9b21cdf9..1198e912 100644 --- a/Noyau/N_MCLIST.py +++ b/Noyau/N_MCLIST.py @@ -1,23 +1,24 @@ -#@ MODIF N_MCLIST Noyau DATE 03/09/2002 AUTEUR GNICOLAS G.NICOLAS -# 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': [ , + ], + 'MODELE': [] } + """ + 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): @@ -144,3 +188,36 @@ class MCList(UserList.UserList): self.etape=parent.etape for mcfact in self.data: mcfact.reparent(parent) + + 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() + + 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