]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
SVP Si on peut mettre cette modif dans la 66
authorPascale Noyret <pascale.noyret@edf.fr>
Wed, 12 Dec 2012 12:06:24 +0000 (12:06 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Wed, 12 Dec 2012 12:06:24 +0000 (12:06 +0000)
Pascale

InterfaceQT4/editor.py

index 7bf04f85655bfd9ad24b6ff73a115e2c3f61cdfc..084d2d4d196b3f24dacb5e8fb06087a3ca9ebf7c 100644 (file)
@@ -403,6 +403,7 @@ class JDCEditor(QSplitter):
       self.chercheNoeudSelectionne()
       if len(self.node_selected) == 0 : return
       self.QWParent.noeud_a_editer = []
+      if self.node_selected[0]==self.tree.racine: return
       if len(self.node_selected) == 1 : self.node_selected[0].delete()
       else : self.node_selected[0].deleteMultiple(self.node_selected)
      
@@ -469,7 +470,12 @@ class JDCEditor(QSplitter):
          return
 
       noeudOuColler=self.node_selected[0]
-      indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler)
+      pos='after'
+      if noeudOuColler == self.tree.racine:
+         indexNoeudOuColler=0
+         pos='before'
+      else :
+         indexNoeudOuColler=noeudOuColler.treeParent.children.index(noeudOuColler)
 
       try :
        noeudACopier=self.QWParent.noeud_a_editer[0]
@@ -478,42 +484,52 @@ class JDCEditor(QSplitter):
        QMessageBox.information( self, "Copie impossible", "Aucun Objet n a ete copie ou coupe ")
        return
 
-      try:
-         child=noeudACopier.doPaste(noeudOuColler)
-      except  :
-         traceback.print_exc()
-         QMessageBox.critical( self, "Copie refusee",'Copie refusee pour ce type d objet')
-         self.message = ''
-         self.affiche_infos("Copie refusee",Qt.red)
-         return
-    
-      if child==None or child==0:
-         QMessageBox.critical( self, "Copie refusee",'Eficas n a pas réussi à copier l objet')
-         self.message = ''
-         self.affiche_infos("Copie refusee",Qt.red)
-         return
+      if (self.QWParent.edit != "couper"):
+        try:
+           child=noeudACopier.doPaste(noeudOuColler,pos)
+           if child==None or child==0:
+               QMessageBox.critical( self, "Copie refusee",'Eficas n a pas réussi à copier l objet')
+               self.message = ''
+               self.affiche_infos("Copie refusee",Qt.red)
+           return
+           self.init_modif()
+           child.select()
+        except  :
+           traceback.print_exc()
+           QMessageBox.critical( self, "Copie refusee",'Copie refusee pour ce type d objet')
+           self.message = ''
+           self.affiche_infos("Copie refusee",Qt.red)
+           return
     
       # il faut declarer le JDCDisplay_courant modifie
-      self.init_modif()
       # suppression eventuelle du noeud selectionne
       # si possible on renomme l objet comme le noeud couper
 
-      if (noeudACopier.treeParent == child.treeParent ):
-           indexAjoute=child.treeParent.children.index(child)
-           if indexAjoute <= indexNoeudACopier :
-                indexNoeudACopier=indexNoeudACopier +1
-           self.QWParent.noeud_a_editer=(noeudACopier.treeParent.children[indexNoeudACopier],)
       if (self.QWParent.edit == "couper"):
-         noeudASupprimer=noeudACopier.treeParent.children[indexNoeudACopier]
-         item=noeudASupprimer.item
-         noeudASupprimer.delete()
-         child.item.update(item)
+         #try :
+         if noeudACopier.treeParent != noeudOuColler.treeParent:
+           QMessageBox.critical( self, "Deplacement refuse",'Deplacement refuse entre 2 fichiers. Seule la copie est autorisée ')
+
+         #if 1:
+         try :
+            indexNoeudACopier=noeudACopier.treeParent.children.index(noeudACopier)
+            noeudACopier.treeParent.item.deplaceEntite(indexNoeudACopier,indexNoeudOuColler,pos)
+            noeudACopier.treeParent.build_children()
+            
+         #else:
+         except:
+            pass
          self.QWParent.noeud_a_editer=[]
 
       # on rend la copie a nouveau possible en liberant le flag edit
       self.QWParent.edit="copier"
-      child.select()
+      noeudACopier.select()
 
+    #----------------------------------#
+    def handleDeplaceMultiple(self):
+    #----------------------------------#
+       pass
+    
     #----------------------------------#
     def handleEditPasteMultiple(self):
     #----------------------------------#
@@ -522,6 +538,8 @@ class JDCEditor(QSplitter):
     # On insere dans l'ordre du JDC
      listeNoeudsACouper=[]
      listeIndex=[]
+     listeChild=[]
+     listeItem=[]
      from InterfaceQT4 import compojdc
      noeudOuColler=self.node_selected[0]
      if not (isinstance(noeudOuColler.treeParent, compojdc.Node)):
@@ -551,6 +569,7 @@ class JDCEditor(QSplitter):
          noeudOuColler=noeudJdc.children[indexNoeudOuColler]
          noeud=noeudJdc.children[indexTravail]
          child=noeud.doPaste(noeudOuColler)
+         listeChild.append(child)
          dejaCrees=dejaCrees+1
       
      self.QWParent.noeud_a_editer = []
@@ -560,16 +579,21 @@ class JDCEditor(QSplitter):
 
      listeASupprimer=[]
      if self.QWParent.edit !="couper" : return
+
      for index in listeIndex:
          indexTravail=index
          if indexNoeudOuColler < index:
             indexTravail=indexTravail+(len(listeIndex))
          noeud=noeudJdc.children[indexTravail]
+         
+         listeItem.append(noeud.item)
          listeASupprimer.append(noeud)
-     listeASupprimer[0].deleteMultiple(listeASupprimer)
-     self.QWParent.noeud_a_editer = []
+
+     for i in range(len(listeChild)):
+         self.tree.item.suppitem(listeItem[i])
+         listeChild[i].item.update(listeItem[i])
      
-            
+     self.QWParent.noeud_a_editer = []
             
 
     #---------------------#
@@ -736,89 +760,14 @@ class JDCEditor(QSplitter):
     #-----------------------------------------#
     def handleAjoutGroup(self,listeGroup):
     #-----------------------------------------#
-        u"""CARMEL3D : obtention des groupes de maille du maillage sélectionné dans Salomé
-        Les groupes de mailles sont filtrés en utilisant une liste des  prefixes autorisés pour code Code_Carmel3D,
-        i.e. un nom de groupe de mailles est DIEL_toto_foo par exemple, qui deviendra toto_foo.
-        La création du MESH_GROUPE est typé (matériau ou source), d'après le préfixe.
-        ATTENTION! Le nom devenant un concept, i.e. une variable Python, certains signes sont interdits dans le nom du groupe,
-        e.g. les signes moins (-), plus (+), etc. Une erreur est retournée en ce cas.
-        """
-        from string import join
-        debug = True
-        listePrefixesMateriaux = ('DIEL', 'NOCOND','COND', 'ZS', 'ZJ', 'NILMAT') # liste des préfixes pour les matériaux
-        listePrefixesSources = ('CURRENT', 'EPORT', 'HPORT') # liste des préfixes pour les sources
-        listePrefixes = listePrefixesMateriaux + listePrefixesSources # liste de tous les préfixes autorisés
-        listePrefixesGroupesMultiples = ('CURRENT', ) # listes des préfixes autorisés pour groupes multiples, i.e. plusieurs groupes de mailles associés en une seule caractéistique matériau ou source
-        sep = '_' # séparateur entre le préfixe et le nom réel du groupe (qui peut lui aussi contenir ce séparateur)
-        dictGroupesMultiplesNomsPossibles = {} # dictionnaire contenant les noms réels possibles de groupes multiples et leur occurence dans la liste, i.e. 1 par défaut et > 1 pour une groupe multiple, e.g. pour un inducteur bobiné en plusieurs morceaux CURRENT_toto_1, CURRENT_toto_2, ce dictionnaire contiendra 'toto':2 
-        listeGroupesMultiples = [] # liste contenant les noms possibles de groupes multiples, e.g. pour un inducteur bobiné en plusieurs morceaux CURRENT_toto_1, CURRENT_toto_2, cette liste contiendra 'toto'
-        for groupe in listeGroup:
-            partiesGroupe = groupe.split(sep) # parties du nom, séparées initialement par le séparateur du préfixe, e.g. 'CURRENT_toto_foo' devient ['CURRENT','toto','foo'] et 'toto' devient ['toto']
-            prefix = partiesGroupe[0] # préfixe possible de ce nom, ou nom lui-meme
-            if len(partiesGroupe) >= 2 and prefix in listePrefixesGroupesMultiples: # préfixe existant et autorisé
-                nomGroupeMultiple = partiesGroupe[1] # nom possible d'un groupe multiple
-                if dictGroupesMultiplesNomsPossibles.has_key(nomGroupeMultiple): # comptage du nombre d'occurrences de ce nom de groupe multiple possible
-                    dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] += 1
-                else:
-                    dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] = 1
-        for nom in dictGroupesMultiplesNomsPossibles: # suppression des noms avec une seule occurence, i.e. ils ne sont pas des groupes multiples
-            if dictGroupesMultiplesNomsPossibles[nom] > 1: listeGroupesMultiples.append(nom)
-        if debug:
-            print "listeGroup=", listeGroup
-            print "dictGroupesMultiplesNomPossibles=", dictGroupesMultiplesNomsPossibles
-            print "listeGroupesMultiples=", listeGroupesMultiples
-            print "listePrefixes=", listePrefixes
-        # retourne le dernier élément du JdC, ou None si le JdC est vide, afin de savoir à quelle place ajouter les MESH_GROUPE (en dernier)
-        try:
-            dernier=self.tree.racine.children[-1]
-        except:
-            dernier=None
-        for groupe in listeGroup: # parcours de la liste de tous les groupes de maille trouvés (volumiques et les autres)
-            if debug: print 'groupe=', groupe
-            partiesGroupe = groupe.split(sep) # parties du nom, séparées initialement par le séparateur du préfixe, e.g. 'CURRENT_toto_foo' devient ['CURRENT','toto','foo'] et 'toto' devient ['toto']
-            prefix = partiesGroupe[0] # préfixe possible de ce nom, ou nom lui-meme
-            if len(partiesGroupe) == 1: # pas de préfixe
-                print u"ERREUR: ce nom de groupe ("+groupe+") ne peut pas être utilisé car il n'a pas de préfixe"
-            elif len(partiesGroupe) >= 2 and prefix in listePrefixes: # préfixe existant et autorisé
-                nomReel = None # initialisation du nom réel, qui provoquera une erreur par la suite (evaluation de None=None) s'il reste ainsi
-                if prefix in listePrefixesGroupesMultiples: # ce groupe pourrait faire partie d'un groupe multiple
-                    nomGroupeMultiple = partiesGroupe[1] # nom possible d'un groupe multiple
-                    if nomGroupeMultiple in listeGroupesMultiples: # ce groupe est multiple et n'a pas encore été créé
-                        nomReel = nomGroupeMultiple # ce groupe pourrait être utilisé...
-                        listeGroupesMultiples.remove(nomGroupeMultiple) #... une seule fois
-                        if debug: print u"ce nom de groupe ("+nomReel+") est multiple et sera utilisé une fois seulement"
-                    elif dictGroupesMultiplesNomsPossibles[nomGroupeMultiple] == 1: # ce groupe existe dans le dictionnaire et n'est pas multiple (occurence =1)
-                        nomReel = join(partiesGroupe[1:], sep) # reconstruction du nom réel, i.e. sans le préfixe
-                        if debug: print u"ce nom de groupe ("+nomReel+") n'est pas multiple et sera utilisé"
-                    else: # ce groupe est multiple et a déjà été utilisé
-                        if debug: print u"ce nom de groupe ("+groupe+") est multiple et a déjà été utilisé"
-                else: # ce groupe n'est pas multiple, il pourrait être utilisé tel quel
-                    nomReel = join(partiesGroupe[1:], sep) # reconstruction du nom réel, i.e. sans le préfixe
-                if nomReel is not None: # on a un nom de groupe possible, il faut réaliser des tests plus poussés
-                    try: # test de conformité du nom pour un concept, i.e. une variable Python
-                        exec(nomReel+'=None') # le test consiste à tenter de créer une variable, initialisée à None, à partir du nom, e.g. toto=None est bon mais toto-foo=None ne fonctionne pas.
-                        # création du groupe MESH_GROUPE
-                        if dernier != None:
-                            new_node = dernier.append_brother("MESHGROUP",'after')
-                        else:
-                            new_node=self.tree.racine.append_child("MESHGROUP",pos='first')
-                        test,mess = new_node.item.nomme_sd(nomReel) # précision du nom (de concept) du groupe
-                        if debug: print u"ce nom de groupe ("+nomReel+") est utilisé..."
-                        if prefix in listePrefixesMateriaux: # ce groupe est associé à un matériau
-                            new_node.append_child('MATERIAL') # on rajoute la propriété de matériau, qu'il suffit d'associer ensuite à la liste des matériaux présents
-                            if debug: print u" et c'est un matériau."
-                        elif prefix in listePrefixesSources: # ce groupe est associé à une source
-                            new_node.append_child('SOURCE') # on rajoute la propriété de la source, qu'il suffit d'associer ensuite à la liste des sources présentes
-                            if debug: print u" et c'est une source."
-                        else: # ce cas ne devrait pas se produire
-                            pass
-                        dernier=new_node # mise à jour du dernier noeud du JdC, afin de rajouter les autres MESH_GROUPE éventuels à sa suite
-                    except:
-                        print u"ERREUR: ce nom de groupe ("+nomReel+") ne peut pas être utilisé car il ne peut pas servir de concept à cause de caractères interdits, e.g. signes moins (-), plus (+), etc."
-                else: # ce nom de groupe est écarté car le groupe multiple  déjà été créé
-                        print u"Ce nom de groupe ("+groupe+") ne peut pas être utilisé car il appartient à un groupe multiple qui a déjà été créé."
-            else: # préfixe existant mais non autorisé
-                print u"ERREUR: ce nom de groupe ("+groupe+") ne peut pas être utilisé car son préfixe ("+partiesGroupe[0]+") n'est pas dans la liste autorisée "+str(listePrefixes)
+        #try :
+        if 1:
+           from ajoutGroupe import handleAjoutGroupFiltre
+           listeSource,listeMateriaux=handleAjoutGroupFiltre(listeGroup)
+           print listeSource,listeMateriaux
+        #except :
+        else :
+           pass
 
     #-----------------------------------------#
     def saveFile(self, path = None, saveas= 0):
@@ -931,8 +880,8 @@ class JDCEditor(QSplitter):
     #-------------------------------------#
     def ajoutVersionCataDsJDC(self,txt):
     #-------------------------------------#
-        if not hasattr(self.readercata.cata[0],'version_cata'): return txt
-        ligneVersion="#VERSION_CATA:"+self.readercata.cata[0].version_cata+":FIN VERSION_CATA\n"
+        if not hasattr(self.readercata.cata[0],'LABEL_TRADUCTION'): return txt
+        ligneVersion="#LABEL_TRADUCTION:"+self.readercata.cata[0].version_cata+":FIN LABEL_TRADUCTION\n"
         texte=txt+ligneVersion
         return texte