From: Pascale Noyret Date: Wed, 12 Dec 2012 12:06:24 +0000 (+0000) Subject: SVP Si on peut mettre cette modif dans la 66 X-Git-Tag: V6_6_0~1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3bee2e115dae353b74f015e4266e3529c5f28b3e;p=tools%2Feficas.git SVP Si on peut mettre cette modif dans la 66 Pascale --- diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 7bf04f85..084d2d4d 100644 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -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