Salome HOME
pb python3
[tools/eficas.git] / Ihm / I_MCLIST.py
index 3565d0dc40f8db55c4299d9fa41390df63d25352..4765d8fcb265e7441565141af580d5264d9dbd3d 100644 (file)
@@ -1,31 +1,33 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-#            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.
+# 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
+#
+from __future__ import absolute_import
 import types,traceback
 import types,traceback
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
 from copy import copy
 from copy import copy
-import CONNECTOR
+from . import CONNECTOR
 
 class MCList:
   def isMCList(self):
     """ 
 
 class MCList:
   def isMCList(self):
     """ 
-       Retourne 1 si self est une MCList (liste de mots-clés), 0 sinon (défaut) 
+       Retourne 1 si self est une MCList (liste de mots-cles), 0 sinon (defaut) 
     """
     return 1
 
     """
     return 1
 
@@ -37,11 +39,11 @@ class MCList:
 
   def ajout_possible(self):
     """ 
 
   def ajout_possible(self):
     """ 
-        Méthode booléenne qui retourne 1 si on peut encore ajouter une occurrence
-        de l'élément que contient self, 0 sinon 
+        Methode booleenne qui retourne 1 si on peut encore ajouter une occurrence
+        de l'element que contient self, 0 sinon 
     """
     max = self.data[0].definition.max
     """
     max = self.data[0].definition.max
-    if max == '**':
+    if max == '**' or max == float('inf'):
       return 1
     else:
       if len(self) < max :
       return 1
     else:
       if len(self) < max :
@@ -51,8 +53,8 @@ class MCList:
 
   def isrepetable(self):
     """
 
   def isrepetable(self):
     """
-       Indique si l'objet est répétable.
-       Retourne 1 si le mot-clé facteur self peut être répété
+       Indique si l'objet est repetable.
+       Retourne 1 si le mot-cle facteur self peut etre repete
        Retourne 0 dans le cas contraire
     """
     if self.data[0].definition.max > 1:
        Retourne 0 dans le cas contraire
     """
     if self.data[0].definition.max > 1:
@@ -63,7 +65,7 @@ class MCList:
 
   def isoblig(self):
      """
 
   def isoblig(self):
      """
-     Une MCList n'est jamais obligatoire (même si le MCFACT qu'elle représente l'est
+     Une MCList n'est jamais obligatoire (meme si le MCFACT qu'elle represente l'est
      """
      return self.data[0].definition.statut=='o'
   
      """
      return self.data[0].definition.statut=='o'
   
@@ -79,6 +81,7 @@ class MCList:
       CONNECTOR.Emit(self,"supp",obj)
       self.update_condition_bloc()
       obj.supprime()
       CONNECTOR.Emit(self,"supp",obj)
       self.update_condition_bloc()
       obj.supprime()
+      self.etape.modified()
       self.fin_modif()
       return 1
 
       self.fin_modif()
       return 1
 
@@ -87,12 +90,13 @@ class MCList:
         Ajoute le mot cle facteur obj a la MCLIST a la position pos
         Retourne None si l'ajout est impossible
       """
         Ajoute le mot cle facteur obj a la MCLIST a la position pos
         Retourne None si l'ajout est impossible
       """
-      if type(obj)==types.StringType :
-         # on est en mode création d'un motcle
-         raise "traitement non prevu"
+      if type(obj)==bytes :
+         # on est en mode creation d'un motcle
+                  raise EficasException(tr("traitement non-prevu"))
 
       if not self.ajout_possible():
 
       if not self.ajout_possible():
-         self.jdc.send_message("L'objet %s ne peut pas être ajouté" % obj.nom)
+         self.jdc.appli.affiche_alerte(tr("Erreur"),
+                                       tr("L'objet %s ne peut pas etre ajoute", obj.nom))
          return None
 
       if self.nom != obj.nom:
          return None
 
       if self.nom != obj.nom:
@@ -126,7 +130,7 @@ class MCList:
     """ 
         Inputs :
            - sd=concept detruit
     """ 
         Inputs :
            - sd=concept detruit
-        Fonction : Mettre a jour les fils de l objet suite à la disparition 
+        Fonction : Mettre a jour les fils de l objet suite a la disparition 
         du concept sd
         Seuls les mots cles simples MCSIMP font un traitement autre 
         que de transmettre aux fils
         du concept sd
         Seuls les mots cles simples MCSIMP font un traitement autre 
         que de transmettre aux fils
@@ -137,7 +141,7 @@ class MCList:
   def replace_concept(self,old_sd,sd):
     """
         Inputs :
   def replace_concept(self,old_sd,sd):
     """
         Inputs :
-           - old_sd=concept remplacé
+           - old_sd=concept remplace
            - sd=nouveau concept
         Fonction : Mettre a jour les fils de l objet suite au remplacement 
         du concept old_sd
            - sd=nouveau concept
         Fonction : Mettre a jour les fils de l objet suite au remplacement 
         du concept old_sd
@@ -150,7 +154,7 @@ class MCList:
 
   def get_liste_mc_inconnus(self):
      """
 
   def get_liste_mc_inconnus(self):
      """
-     Retourne la liste des mots-clés inconnus dans self
+     Retourne la liste des mots-cles inconnus dans self
      """
      l_mc = []
      for mcfact in self.data :
      """
      l_mc = []
      for mcfact in self.data :
@@ -164,10 +168,10 @@ class MCList:
 
   def verif_condition_regles(self,liste_presents):
     """
 
   def verif_condition_regles(self,liste_presents):
     """
-        Retourne la liste des mots-clés à rajouter pour satisfaire les règles
-        en fonction de la liste des mots-clés présents
+        Retourne la liste des mots-cles a rajouter pour satisfaire les regles
+        en fonction de la liste des mots-cles presents
     """
     """
-    # Sans objet pour une liste de mots clés facteurs
+    # Sans objet pour une liste de mots cles facteurs
     return []
 
   def deep_update_condition_bloc(self):
     return []
 
   def deep_update_condition_bloc(self):
@@ -189,17 +193,17 @@ class MCList:
   def verif_condition_bloc(self):
     """ 
         Evalue les conditions de tous les blocs fils possibles 
   def verif_condition_bloc(self):
     """ 
         Evalue les conditions de tous les blocs fils possibles 
-        (en fonction du catalogue donc de la définition) de self et 
+        (en fonction du catalogue donc de la definition) de self et 
         retourne deux listes :
         retourne deux listes :
-           - la première contient les noms des blocs à rajouter
-           - la seconde contient les noms des blocs à supprimer
+           - la premiere contient les noms des blocs a rajouter
+           - la seconde contient les noms des blocs a supprimer
     """
     """
-    # Sans objet pour une liste de mots clés facteurs (a voir !!!)
+    # Sans objet pour une liste de mots cles facteurs (a voir !!!)
     return [],[]
 
   def init_modif(self):
     """
     return [],[]
 
   def init_modif(self):
     """
-       Met l'état de l'objet à modified et propage au parent
+       Met l'etat de l'objet a modified et propage au parent
        qui vaut None s'il n'existe pas
     """
     self.state = 'modified'
        qui vaut None s'il n'existe pas
     """
     self.state = 'modified'
@@ -208,18 +212,24 @@ class MCList:
 
   def fin_modif(self):
     """
 
   def fin_modif(self):
     """
-      Méthode appelée après qu'une modification a été faite afin de déclencher
-      d'éventuels traitements post-modification
+      Methode appelee apres qu'une modification a ete faite afin de declencher
+      d'eventuels traitements post-modification
     """
     #print "fin_modif",self
     CONNECTOR.Emit(self,"valid")
     if self.parent:
       self.parent.fin_modif()
 
     """
     #print "fin_modif",self
     CONNECTOR.Emit(self,"valid")
     if self.parent:
       self.parent.fin_modif()
 
+  def get_genealogie_precise(self):
+     if self.parent: 
+        return self.parent.get_genealogie_precise()
+     else:
+        return []
+
   def get_genealogie(self):
      """
          Retourne la liste des noms des ascendants.
   def get_genealogie(self):
      """
          Retourne la liste des noms des ascendants.
-         Un objet MCList n'est pas enregistré dans la genealogie.
+         Un objet MCList n'est pas enregistre dans la genealogie.
          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
      """
      if self.parent: 
          XXX Meme si le MCFACT fils ne l'est pas lui non plus ????
      """
      if self.parent: 
@@ -229,8 +239,8 @@ class MCList:
 
   def get_liste_mc_ordonnee_brute(self,liste,dico):
      """
 
   def get_liste_mc_ordonnee_brute(self,liste,dico):
      """
-         Retourne la liste ordonnée (suivant le catalogue) BRUTE des mots-clés
-         d'une entité composée dont le chemin complet est donné sous forme
+         Retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles
+         d'une entite composee dont le chemin complet est donne sous forme
          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
      """
      for arg in liste:
          d'une liste du type :ETAPE + MCFACT ou MCBLOC + ...
      """
      for arg in liste:
@@ -240,8 +250,8 @@ class MCList:
 
   def verif_existence_sd(self):
      """
 
   def verif_existence_sd(self):
      """
-        Vérifie que les structures de données utilisées dans self existent bien dans le contexte
-        avant étape, sinon enlève la référence à ces concepts
+        Verifie que les structures de donnees utilisees dans self existent bien dans le contexte
+        avant etape, sinon enleve la reference a ces concepts
      """
      for motcle in self.data :
          motcle.verif_existence_sd()
      """
      for motcle in self.data :
          motcle.verif_existence_sd()
@@ -258,13 +268,13 @@ class MCList:
 
   def normalize(self):
      """
 
   def normalize(self):
      """
-        Retourne l'objet normalisé. Une liste est déjà normalisée
+        Retourne l'objet normalise. Une liste est deja normalisee
      """
      return self
 
   def update_mc_global(self):
      """
      """
      return self
 
   def update_mc_global(self):
      """
-        Met a jour les mots cles globaux enregistrés dans l'étape parente
+        Met a jour les mots cles globaux enregistres dans l'etape parente
         et dans le jdc parent.
         Une liste ne peut pas etre globale. Elle se contente de passer
         la requete a ses fils.
         et dans le jdc parent.
         Une liste ne peut pas etre globale. Elle se contente de passer
         la requete a ses fils.