Salome HOME
bug sur un mesage dans une exception sur un validator (cf JPA)
[tools/eficas.git] / InterfaceQT4 / compomclist.py
index b1104d4e673c761869d0a3c950918c5f60acd7c0..15e2a11f161d18a306976c1568a8469cfa928c7e 100644 (file)
@@ -1,75 +1,86 @@
 # -*- coding: utf-8 -*-
-
+# Copyright (C) 2007-2021   EDF R&D
+#
+# 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.
+#
+# 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
 import traceback
 
-import compofact
-import browser
-import typeNode
+from . import compofact
+from . import browser
+from . import typeNode
+from Extensions.i18n import tr
 
 from Editeur     import Objecttreeitem
 from Noyau.N_OBJECT import ErrorObj
-#import compoerror
 
 
 class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
-    def getPanel(self):
-        """        
-        """    
-        if self.item.isMCList() :
-           if self.item.ajout_possible():
-              from monMCListAjoutPanel import MonMCListAjoutPanel
-              return MonMCListAjoutPanel(self,parent=self.editor)
-           else :
-              print "MCList"
-        elif self.item.isMCFact() :
-           from monMCFactPanel import MonMCFactPanel
-           return MonMCFactPanel(self,parent=self.editor)
-        else :
-           print "MCList"
 
     def createPopUpMenu(self):
         typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self)
 
+    def getPanelGroupe(self,parentQt,commande):
+        maDefinition=self.item.get_definition()
+        monObjet=self.item.object
+        monNom=self.item.nom
+        maCommande=commande
+        if hasattr(parentQt,'niveau'): self.niveau=parentQt.niveau+1
+        else : self.niveau=1
+        # attention si l objet est une mclist on utilise bloc
+        if not (monObjet.isMCList()) :
+            if  hasattr(self,'plie') and self.plie==True :
+                from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
+                widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+            elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche:
+                self.firstAffiche = False
+                self.setPlie()
+                from InterfaceQT4.monWidgetFactPlie import MonWidgetFactPlie
+                widget=MonWidgetFactPlie(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+            else:
+                from InterfaceQT4.monWidgetFact import MonWidgetFact
+                widget=MonWidgetFact(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+        else :
+            from InterfaceQT4.monWidgetBloc import MonWidgetBloc
+            widget=MonWidgetBloc(self,self.editor,parentQt,maDefinition,monObjet,self.niveau,maCommande)
+        return widget
 
-    def doPaste(self,node_selected):
-        objet_a_copier = self.item.get_copie_objet()
-        child=node_selected.doPasteMCF(objet_a_copier)
-        #print "doPaste",child
-        return child
 
-    def doPasteMCF(self,objet_a_copier):
-        child=None
-        # le noeud courant est une MCList
-        if self.item.isMCList() :
-          child = self.append_child(objet_a_copier,pos='first',retour='oui')
 
-        # le noeud courant est un MCFACT
-        elif self.item.isMCFact() :
-          # le noeud selectionne est un MCFACT dans une MCList
-          if self.parent.item.isMCList():
-             child = self.parent.append_child(objet_a_copier,
-                                              pos=self.item,
-                                              retour='oui')
+    def doPaste(self,node_selected,pos):
+        objet_a_copier = self.item.getCopieObjet()
+        # before est un effet de bord heureux sur l index
+        child=self.appendBrother(objet_a_copier,'before')
+        if self.editor.fenetreCentraleAffichee : self.editor.fenetreCentraleAffichee.node.affichePanneau()
+        self.update_NodeLabelInBlack()
+        self.parent().buildChildren()
+        return child
 
-          # le noeud MCFACT selectionne n'est pas dans une MCList
-          else:
-             child = self.parent.append_child(objet_a_copier,retour='oui')
 
-        else:
-          QMessageBox.information( self, "Copie impossible",
-                   "Vous ne pouvez coller le mot-clé facteur copié à ce niveau de l'arborescence !")          
-          self.editor.affiche_infos("Copie refusée")
-
-        return child
 
 class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
     """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets
         du noyau Accas instances de la classe MCLIST.
-        Elle adapte ces objets pour leur permettre d'etre intégrés en tant que
+        Elle adapte ces objets pour leur permettre d'etre integres en tant que
         noeuds dans un arbre graphique (voir treewidget.py et ObjectTreeItem.py).
-        Cette classe délègue les appels de méthode et les accès
-        aux attributs à l'objet du noyau soit manuellement soit 
+        Cette classe delegue les appels de methode et les acces
+        aux attributs a l'objet du noyau soit manuellement soit
         automatiquement (voir classe Delegate et attribut object).
     """
     itemNode=Node
@@ -81,129 +92,127 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem):
 
     def updateDelegate(self):
         if len(self._object) > 1:
-           self.setdelegate(self._object)
+            self.setDelegate(self._object)
         else:
-           self.setdelegate(self._object.data[0])
+            self.setDelegate(self._object.data[0])
 
     def panel(self,jdcdisplay,pane,node):
         """ Retourne une instance de l'objet panneau associe a l'item (self)
-            Si la liste ne contient qu'un mot clé facteur, on utilise le panneau
+            Si la liste ne contient qu'un mot cle facteur, on utilise le panneau
             FACTPanel.
             Si la liste est plus longue on utilise le panneau MCLISTPanel.
         """
         if len(self._object) > 1:
-           return MCLISTPanel(jdcdisplay,pane,node)
+            return MCLISTPanel(jdcdisplay,pane,node)
         elif isinstance(self._object.data[0],ErrorObj):
-           return compoerror.ERRORPanel(jdcdisplay,pane,node)
+            return compoerror.ERRORPanel(jdcdisplay,pane,node)
         else:
-           return compofact.FACTPanel(jdcdisplay,pane,node)
+            return compofact.FACTPanel(jdcdisplay,pane,node)
 
-    def IsExpandable(self):
+    def isExpandable(self):
         if len(self._object) > 1:
-           return Objecttreeitem.SequenceTreeItem.IsExpandable(self)
+            return Objecttreeitem.SequenceTreeItem.isExpandable(self)
         else:
-           return compofact.FACTTreeItem.IsExpandable(self)
+            return compofact.FACTTreeItem.isExpandable(self)
 
-    def GetSubList(self):
+    def getSubList(self):
         self.updateDelegate()
         if len(self._object) <= 1:
-           self._object.data[0].alt_parent=self._object
-           return compofact.FACTTreeItem.GetSubList(self)
+            self._object.data[0].alt_parent=self._object
+            return compofact.FACTTreeItem.getSubList(self)
 
         liste=self._object.data
         sublist=[None]*len(liste)
         # suppression des items lies aux objets disparus
         for item in self.sublist:
-           old_obj=item.getObject()
-           if old_obj in liste:
-              pos=liste.index(old_obj)
-              sublist[pos]=item
-           else:
-              pass # objets supprimes ignores
+            old_obj=item.getObject()
+            if old_obj in liste:
+                pos=liste.index(old_obj)
+                sublist[pos]=item
+            else:
+                pass # objets supprimes ignores
         # ajout des items lies aux nouveaux objets
         pos=0
         for obj in liste:
-           if sublist[pos] is None:
-              # nouvel objet : on cree un nouvel item
-              def setfunction(value, object=obj):
-                  object=value
-              item = self.make_objecttreeitem(self.appli, obj.nom + " : ", obj, setfunction)
-              sublist[pos]=item
-              #Attention : on ajoute une information supplementaire pour l'actualisation de 
-              # la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE
-              # et pas sur la MCLISTE elle meme ce qui rompt la chaine de remontee des
-              # informations de validite. alt_parent permet de remedier a ce defaut.
-              obj.alt_parent=self._object
-           pos=pos+1
+            if sublist[pos] is None:
+                # nouvel objet : on cree un nouvel item
+                def setFunction(value, object=obj):
+                    object=value
+                item = self.makeObjecttreeitem(self.appliEficas, obj.nom + " : ", obj, setFunction)
+                sublist[pos]=item
+                #Attention : on ajoute une information supplementaire pour l'actualisation de
+                # la validite. L'attribut parent d'un MCFACT pointe sur le parent de la MCLISTE
+                # et pas sur la MCLISTE elle meme ce qui rompt la chaine de remontee des
+                # informations de validite. alt_parent permet de remedier a ce defaut.
+                obj.alt_parent=self._object
+            pos=pos+1
 
         self.sublist=sublist
         return self.sublist
 
-    def GetIconName(self):
-        if self._object.isvalid():
+    def getIconName(self):
+        if self._object.isValid():
             return "ast-green-los"
-        elif self._object.isoblig():
+        elif self._object.isOblig():
             return "ast-red-los"
         else:
             return "ast-yel-los"
 
-    def get_docu(self):
-        """ Retourne la clef de doc de l'objet pointé par self """
-        return self.object.get_docu()    
+    def getDocu(self):
+        """ Retourne la clef de doc de l'objet pointe par self """
+        return self.object.getDocu()
 
-    def iscopiable(self):
+    def isCopiable(self):
         if len(self._object) > 1:
-           return Objecttreeitem.SequenceTreeItem.iscopiable(self)
+            return Objecttreeitem.SequenceTreeItem.isCopiable(self)
         else:
-           return compofact.FACTTreeItem.iscopiable(self)
+            return compofact.FACTTreeItem.isCopiable(self)
 
     def isMCFact(self):
         """
-        Retourne 1 si l'objet pointé par self est un MCFact, 0 sinon
+        Retourne 1 si l'objet pointe par self est un MCFact, 0 sinon
         """
         return len(self._object) <= 1
 
     def isMCList(self):
         """
-        Retourne 1 si l'objet pointé par self est une MCList, 0 sinon
+        Retourne 1 si l'objet pointe par self est une MCList, 0 sinon
         """
         return len(self._object) > 1
-        
-    def get_copie_objet(self):
+
+    def getCopieObjet(self):
         return self._object.data[0].copy()
 
-    def additem(self,obj,pos):
-        #print "compomclist.additem",obj,pos
+    def addItem(self,obj,pos):
+        #print "compomclist.addItem",obj,pos
         if len(self._object) <= 1:
-           return compofact.FACTTreeItem.additem(self,obj,pos)
+            return compofact.FACTTreeItem.addItem(self,obj,pos)
 
-        o= self.object.addentite(obj,pos)
+        o= self.object.addEntite(obj,pos)
         return o
 
-    def suppitem(self,item):
+    def suppItem(self,item):
         """
-        Retire un objet MCFACT de la MCList (self.object) 
+        Retire un objet MCFACT de la MCList (self.object)
         """
-        #print "compomclist.suppitem",item
+        #print "compomclist.suppItem",item
         obj=item.getObject()
         if len(self._object) <= 1:
-           return compofact.FACTTreeItem.suppitem(self,item)
+            return compofact.FACTTreeItem.suppItem(self,item)
 
-        if self.object.suppentite(obj):
-           if len(self._object) == 1: self.updateDelegate()     
-           message = "Mot-clef " + obj.nom + " supprimé"
-           self.appli.affiche_infos(message)
-           return 1
+        if self.object.suppEntite(obj):
+            if len(self._object) == 1: self.updateDelegate()
+            message = "Mot-clef " + obj.nom + " supprime"
+            return (1,message)
         else:
-           self.appli.affiche_infos('Impossible de supprimer ce mot-clef')
-           return 0
+            return (0,tr('Impossible de supprimer ce mot-clef'))
+
 
-            
 import Accas
-objet = Accas.MCList    
+objet = Accas.MCList
 
-def treeitem(appli,labeltext,object,setfunction):
-  """ Factory qui produit un objet treeitem adapte a un objet 
-      Accas.MCList (attribut objet de ce module)
-  """
-  return MCListTreeItem(appli,labeltext,object,setfunction)
+def treeitem(appliEficas,labeltext,object,setFunction):
+    """ Factory qui produit un objet treeitem adapte a un objet
+        Accas.MCList (attribut objet de ce module)
+    """
+    return MCListTreeItem(appliEficas,labeltext,object,setFunction)