]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
*** empty log message ***
authorPascale Noyret <pascale.noyret@edf.fr>
Tue, 30 Sep 2008 14:18:31 +0000 (14:18 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Tue, 30 Sep 2008 14:18:31 +0000 (14:18 +0000)
18 files changed:
InterfaceQT4/browser.py
InterfaceQT4/compojdc.py
InterfaceQT4/compooper.py
InterfaceQT4/editor.py
InterfaceQT4/monFonctionPanel.py
InterfaceQT4/monIncludePanel.py
InterfaceQT4/monListeParamPanel.py
InterfaceQT4/monParamPanel.py
InterfaceQT4/monPlusieursASSDPanel.py
InterfaceQT4/monPlusieursBasePanel.py
InterfaceQT4/monPlusieursIntoPanel.py
InterfaceQT4/monSelectVal.py
InterfaceQT4/monUniqueASSDPanel.py
InterfaceQT4/monUniqueBasePanel.py
InterfaceQT4/monUniqueIntoPanel.py
InterfaceQT4/qtEficas.py
InterfaceQT4/qtSaisie.py
InterfaceQT4/viewManager.py

index ee1b79a028e27d0007be63982d334c7c2f240ea8..c12b643ddf7b52ed1504f2caa7716983b37180d4 100644 (file)
@@ -32,7 +32,6 @@ class JDCTree( QTreeWidget ):
         
         self.item          = jdc_item
         self.tree          = self        
-        self.QWParent      = QWParent
         self.editor       = QWParent
         self.appliEficas   = self.editor.appliEficas
         
@@ -52,7 +51,6 @@ class JDCTree( QTreeWidget ):
 
 
     def contextMenuEvent(self,event) :
-        print "contextMenuEvent"
         coord=event.globalPos()
         item= self.currentItem()
         self.handleContextMenu(item,coord)
@@ -65,6 +63,7 @@ class JDCTree( QTreeWidget ):
         @param coord the position of the mouse pointer (QPoint)
         Attention : existeMenu permet de savoir si un menu est associe a cet item
         """
+        if item == None : return
         if item.existeMenu == 0 : return
         if item.menu == None:
            item.createPopUpMenu()
@@ -75,8 +74,8 @@ class JDCTree( QTreeWidget ):
         item.affichePanneau()
         try :
            fr = item.item.get_fr()
-           if self.QWParent:
-              self.QWParent.affiche_infos(fr)
+           if self.editor:
+              self.editor.affiche_infos(fr)
         except:
             pass
 
@@ -106,17 +105,30 @@ class JDCNode(QTreeWidgetItem):
         self.menu=None
         self.existeMenu=1
 
-    def build_children(self):
+        self.item.connect("valid",self.onValid,())
+        self.item.connect("supp" ,self.onAdd,())
+        self.item.connect("add"  ,self.onSupp,())
+
+    def build_children(self,posInsertion=10000):
         """ Construit la liste des enfants de self """
-        self.setExpanded(0)
+        """ Se charge de remettre les noeuds Expanded dans le meme etat """
+        print "*********** build_children ", self.item.GetLabelText()
+        listeExpanded=[]
         for item in self.children :
+            if item.isExpanded():
+               if self.children.index(item) < posInsertion :
+                  listeExpanded.append(self.children.index(item))
+               else :
+                  listeExpanded.append( self.children.index(item) +1)
             self.removeChild(item)
         self.children = []
         sublist = self.item._GetSubList()
+        ind=0
         for item in sublist :
             nouvelItem=item.itemNode(self,item)
             self.children.append(nouvelItem)
-        self.setExpanded(1)
+            if ind in listeExpanded : nouvelItem.setExpanded(1)
+            ind=ind+1
 
     def affichePanneau(self) :
         if self.item.isactif():
@@ -192,21 +204,26 @@ class JDCNode(QTreeWidgetItem):
         Rend le noeud courant (self) selectionne et deselectionne
         tous les autres
         """        
-        self.tree.node_selected.setSelected(0)
+        for item in self.tree.selectedItems() :
+            item.setSelected(0)
+        print "select -----------> " , self.item.GetLabelText()
         self.setSelected( True )    
+        self.setExpanded( True )    
+        self.tree.setCurrentItem( self )    
         self.tree.node_selected= self
                                
     #------------------------------------------------------------------
     # Methodes de creation et destruction de noeuds
     # Certaines de ces methodes peuvent etre appelees depuis l'externe
     #------------------------------------------------------------------
-    def append_brother(self,name,pos='after',retour='non'):
+    def append_brother(self,name,pos='after'):
         """
         Permet d'ajouter un objet frere a l'objet associe au noeud self
         par defaut on l'ajoute immediatement apres 
         Methode externe
         """
-###       print "*********** append_brother ", self.item.GetLabelText()
+        print "*********** append_brother ", self.item.GetLabelText()
+        self.editor.init_modif()
         index = self.treeParent.children.index(self)
         if pos == 'before':
             index = index
@@ -217,7 +234,7 @@ class JDCNode(QTreeWidgetItem):
             return 0
         return self.treeParent.append_child(name,pos=index)
 
-    def append_child(self,name,pos=None,verif='oui',retour='non'):
+    def append_child(self,name,pos=None,verif='oui'):
         """
            Methode pour ajouter un objet fils a l'objet associe au noeud self.
            On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last')
@@ -225,6 +242,7 @@ class JDCNode(QTreeWidgetItem):
            Si pos vaut None, on le place a la position du catalogue.
         """
         print "************** append_child ",self.item.GetLabelText()
+        self.editor.init_modif()
         if pos == 'first':
             index = 0
         elif pos == 'last':
@@ -242,9 +260,9 @@ class JDCNode(QTreeWidgetItem):
         obj=self.item.additem(name,index) #CS_pbruno emet le signal 'add'
         if obj is None:obj=0
         if obj == 0:return 0
-        self.build_children()
+        self.build_children(index)
         child=self.children[index]
-        child.affichePanneau()
+        child.affichePanneau() 
         return child
 
     def delete(self):
@@ -262,7 +280,6 @@ class JDCNode(QTreeWidgetItem):
         brothers=self.treeParent.children
         if brothers:
            toselect=brothers[index]
-           self.treeParent.setSelected(0)
         else:
            toselect=self.treeParent
         toselect.select()
@@ -271,16 +288,27 @@ class JDCNode(QTreeWidgetItem):
 #        
 #    #------------------------------------------------------------------
     def onValid(self):        
+        self.editor.init_modif()
         self.update_node_valid()
         self.update_node_label()
         self.update_node_texte()
-        
+
+    def onAdd(self,object):
+        #print "NODE  onAdd", self.item.GetLabelText()
+        self.editor.init_modif()
+        self.update_nodes()
+    def onSupp(self,object):
+        #print "NODE onSupp", self.item.GetLabelText()
+        self.editor.init_modif()
+        self.update_nodes()
 
     def update_node_valid(self):
         """Cette methode remet a jour la validite du noeud (icone)
            Elle appelle isvalid
         """
-        print 'NODE update_node_valid', self.item.GetLabelText()
+        #print 'NODE update_node_valid', self.item.GetLabelText()
         monIcone = QIcon("/home/noyret/Install_Eficas/EficasV1/InterfaceQT4/icons/" +self.item.GetIconName() + ".gif")
         self.setIcon(0,monIcone)
 
@@ -297,7 +325,8 @@ class JDCNode(QTreeWidgetItem):
         self.setText(1, value)
 
     def update_nodes(self):
-        self.select()
+        #print 'NODE update_nodes', self.item.GetLabelText()
+        self.build_children()
             
     def update_texte(self):
         """ Met a jour les noms des SD et valeurs des mots-cles """
@@ -307,61 +336,34 @@ class JDCNode(QTreeWidgetItem):
             for child in self.children:
                 if child.isHidden() == false : child.update_texte()
         
-    def update_valid(self) :
-        """Cette methode a pour but de mettre a jour la validite du noeud
-           et de propager la demande de mise a jour a son Parent
-        """
-        print "NODE update_valid", self.item.GetLabelText()
-        self.update_node_valid()
-        try :
-          self.treeParent.update_valid()            
-        except:
-          pass
-#    def supprime(self):
-#        #print "NODE supprime",self.item.GetLabelText()
-#        self.efface_node()
-#        self.racine = None        
-#        if not self.children : return
-#        for child in self.children:
-#            child.supprime()
-#        self.children=None    
-#
-#    def build_children(self):
-#        """ Construit la liste des enfants de self """        
-#        #print "NODE : Construit la liste des enfants de", self.item.GetLabelText()
-#        self.children = []
-#        sublist = self.item._GetSubList()
-#        if sublist :            
-#            last = None
-#            for item in sublist :                
-#                child = item.itemNode(self, item, last)
-#                last = child
-#                self.children.append(child)
-#            
-#            
-#    def doPasteCommande(self,objet_a_copier):
-#        """
-#          Réalise la copie de l'objet passé en argument qui est nécessairement
-#          une commande
-#        """
-#        QWParent=self.QWParent
-#        #child = QWParent.item.append_child(objet_a_copier,self.item.getObject())
-#        child = self.append_brother(objet_a_copier,retour='oui')
-#        #if child is None:return 0
-#        return child
-#
-#    def doPasteMCF(self,objet_a_copier):
+#    def update_valid(self) :
+#        """Cette methode a pour but de mettre a jour la validite du noeud
+#           et de propager la demande de mise a jour a son Parent
 #        """
-#           Réalise la copie de l'objet passé en argument (objet_a_copier)
-#           Il s'agit forcément d'un mot clé facteur
-#        """
-#        child = self.append_child(objet_a_copier,pos='first',retour='oui')
-#        return child
-#
-#
-#        
-#    
+#        #print "NODE update_valid", self.item.GetLabelText()
+#        self.update_node_valid()
+#        try :
+#          self.treeParent.update_valid()            
+#        except:
+#          pass
+    def doPasteCommande(self,objet_a_copier):
+        """
+          Réalise la copie de l'objet passé en argument qui est nécessairement
+          une commande
+        """
+        print "objet_a_copier = ", objet_a_copier.item.GetLabelText()
+        child = self.append_brother(objet_a_copier)
+        return child
+
+    def doPasteMCF(self,objet_a_copier):
+        """
+           Réalise la copie de l'objet passé en argument (objet_a_copier)
+           Il s'agit forcément d'un mot clé facteur
+        """
+        child = self.append_child(objet_a_copier,pos='first')
+        return child
+
 if __name__=='__main__':
     from PyQt4 import *
     from PyQt4.QtGui  import *
index 2c2bd9315d6ef5f2113820ceb06cd2648c837c75..b99bf3c51e352dc6e94113d22e870a0c04e11102 100644 (file)
@@ -9,10 +9,6 @@ class Node(browser.JDCNode):
         """
         """
         from monRacinePanel import MonRacinePanel
-        #return MonRacinePanel(self,parent=self.appliEficas.centralWidget())
-        #print self.treeParent.editor
-        #print dir(self)
-       
         return MonRacinePanel(self,parent=self.editor)
 
     def doPasteCommande(self,objet_a_copier):
index add788672a7e75efd1c84a281ef95b85be67bdd5..66bd646fe7dd1131aa2af4ba959350116b184f99 100644 (file)
@@ -38,7 +38,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode):
         """
         parent=self.parent
         #child = parent.item.append_child(objet_a_copier,self.item.getObject())
-        child = self.append_brother(objet_a_copier,retour='oui')
+        child = self.append_brother(objet_a_copier)
         #if child is None:return 0
         return child
 
index 83f6cefc2c36cc5bf71886e8422c30c541a5bb2c..b0f7f69a382a9932d3c723dd72dfe42f42319421 100644 (file)
@@ -49,7 +49,7 @@ class JDCEditor(QSplitter):
     def __init__ (self,fichier = None, jdc = None, QWParent=None, units = None, include=0 ,appli=None):          
     #----------------------------------------------------------------------------------------------#
 
-        print "debut JDCEditor __init__"
+        #print "debut JDCEditor __init__"
         QSplitter.__init__(self, QWParent)
        self.appliEficas = appli
         self.fichier     = fichier
@@ -63,10 +63,10 @@ class JDCEditor(QSplitter):
         else :
            self.salome=0
 
-        self.top  = None
         self.code = prefs.code
         self.version_code = VERSION_CODE
         self.titre=VERSION_EFICAS + ' pour '+ self.code
+
         self.dict_reels={}
         self.liste_simp_reel=[]        
         self.format_fichier='python' # par defaut
@@ -85,10 +85,10 @@ class JDCEditor(QSplitter):
         self.fileInfo       = None
         self.lastModified   = 0
         
-        self.panel_courant=None    
-        self.node_selected = None
         self.modified   = False
         self.isReadOnly = False
+        self.tree = None
+        self.node_selected = None
         
         if not hasattr( readercata, 'reader' ) :
             readercata.reader = readercata.READERCATA( self, self.appliEficas )
@@ -102,26 +102,10 @@ class JDCEditor(QSplitter):
         if self.fichier is not None:        #  fichier jdc fourni
             self.fileInfo = QFileInfo(self.fichier)
             self.fileInfo.setCaching(0)
-            #if editor is None:
             self.jdc = self.readFile(self.fichier)
-            print self.jdc
             if units is not None:
                self.jdc.recorded_units=units
                self.jdc.old_recorded_units=units
-            #else:
-            #    self.top            = editor.top
-            #    self.code           = editor.code
-            #    self.version_code   = editor.version_code
-            #    self.titre          = editor.titre
-            #    self.dict_reels     = editor.dict_reels
-            #    self.liste_simp_reel= editor.liste_simp_reel
-            #    self.format_fichier = editor.format_fichier
-            #    self.CONFIGURATION  = editor.CONFIGURATION
-            #    self.CONFIGStyle    = editor.CONFIGStyle
-            #    self.jdc            = editor.jdc
-            #    self.lastModified = self.fileInfo.lastModified()                
-#        elif editor is not None: 
-#            self.jdc = editor.jdc            
         else: 
             if not self.jdc:                   #  nouveau jdc
                 if not include :
@@ -139,7 +123,7 @@ class JDCEditor(QSplitter):
             if txt_exception:
                 self.jdc = None
                 qApp.restoreOverrideCursor()
-                self.affiche_infos("Erreur fatale au chargement de %s" %fn)                
+                self.affiche_infos("Erreur fatale au chargement de %s" %fichier)                
                 QMessageBox.critical( self, "Erreur fatale au chargement d'un fichier", txt_exception)                
             else:
                 comploader.charger_composants("QT")
@@ -147,63 +131,9 @@ class JDCEditor(QSplitter):
 
                 if (not self.jdc.isvalid()) and (not nouveau) :
                     self.viewJdcRapport()
-#
-#        #------- config widget --------------
-#                
         if jdc_item:                        
             self.tree = browser.JDCTree( jdc_item,  self )
-#            self.connect(self.tree,SIGNAL('selectionChanged(QListViewItem *)'),self.updatePanel)
-#      
-#        sh = self.sizeHint()
-#        if sh.height() < 300:
-#            sh.setHeight(300)
-#        self.resize(sh)
-#            
-#        # Make sure tabbing through a QWorkspace works.
-#        #self.setFocusPolicy(QWidget.StrongFocus)
-#        self.setFocusPolicy(Qt.StrongFocus)
-#        self._updateReadOnly(1)
-#        
-#        # Set the editors size if it is too big for the QWParent.
-#        if QWParent is not None:
-#            req = self.size()
-#            bnd = req.boundedTo(QWParent.size())
-#        
-#            if bnd.width() < req.width() or bnd.height() < req.height():
-#                self.resize(bnd)
-#        
-#        self.panel = QWidget(self)        
-#        print "fin JDCEditor __init__"
-#        #self.connect(self, SIGNAL('modificationChanged(bool)'), self.handleModificationChanged)
-#                
-#        
-#    #-------------------------------------------------------------------#
-#    def _updateReadOnly(self, bForce=1):
-#    #-------------------------------------------------------------------#
-#        """
-#        Private method to update the readOnly information for this editor. 
-#        
-#        If bForce is True, then updates everything regardless if
-#        the attributes have actually changed, such as during
-#        initialization time.  A signal is emitted after the
-#        caption change.
-#
-#        @param bForce 1 to force change, 0 to only update and emit
-#                signal if there was an attribute change.
-#        """
-#
-#        if self.fichier is None:
-#            return
-#        readOnly = not QFileInfo(self.fichier).isWritable() and 1 or 0
-#        if not bForce and (readOnly == self.isReadOnly):
-#            return
-#        cap = self.fichier
-#        if readOnly:
-#            cap = "%s (ro)" % unicode(cap)
-#        self.isReadOnly = readOnly
-#        #self.setCaption(cap)
-#        #self.emit(PYSIGNAL('captionChanged'), (cap, self))
-#        
+        
     #--------------------------------#
     def _newJDC( self ,units = None):        
     #--------------------------------#
@@ -254,64 +184,6 @@ class JDCEditor(QSplitter):
            J.old_recorded_units=units
         return J
 
-#            
-#    #-----------------------#
-#    def get_source(self,file):
-#    #-----------------------#
-#        import convert
-#        format=self.format_fichier
-#
-#        # Il faut convertir le contenu du fichier en fonction du format
-#        if convert.plugins.has_key(format):
-#            # Le convertisseur existe on l'utilise
-#            p=convert.plugins[format]()
-#            p.readfile(file)
-#            text=p.convert('execnoparseur')
-#            if not p.cr.estvide():
-#                self.affiche_infos("Erreur a la conversion")
-#            return text
-#        else:
-#            # Il n'existe pas c'est une erreur
-#            self.affiche_infos("Type de fichier non reconnu")
-#            QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")            
-#            return None
-#        
-#    #---------------------------------------------#
-#    def get_file(self,unite=None,fic_origine = ''):
-#    #---------------------------------------------#
-#        ulfile  = None
-#        jdcText = ""
-#      
-#        titre  = ""
-#        
-#        if unite :
-#            titre = "Choix unite %d " %unite
-#            texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
-#            texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
-#            labeltexte = 'Fichier pour unite %d :' % unite
-#        else:
-#            titre = "Choix d'un fichier de poursuite"
-#            texte = "Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
-#            texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
-#                                        
-#        QMessageBox.information( self, titre,texte)
-#        fn = QFileDialog.getOpenFileName( None, "", self, None, titre )
-#        
-#        if fn.isNull():
-#            return
-#            
-#        ulfile = os.path.abspath(unicode(fn))
-#        # On utilise le convertisseur défini par format_fichier
-#        source=self.get_source(ulfile)
-#        if source:
-#            # On a réussi à convertir le fichier self.ulfile                
-#            jdcText = source
-#        else:
-#            # Une erreur a été rencontrée
-#            jdcText = ''
-#        return ulfile, jdcText
-#        
-#        
     #-----------------------#
     def readFile(self, fn):
     #-----------------------#
@@ -321,7 +193,6 @@ class JDCEditor(QSplitter):
         @param fn filename to read from (string or QString)
         """        
         fn = unicode(fn)        
-#        qApp.setOverrideCursor(Qt.WaitCursor)
                         
         # ------------------------------------------------------------------------------------
         #                         charge le JDC
@@ -332,7 +203,6 @@ class JDCEditor(QSplitter):
         if convert.plugins.has_key( self.format_fichier ):
              # Le convertisseur existe on l'utilise
              appli = self 
-# CS_pbruno compatiblity parseur_python: self.appli.liste_simp_reel, self.appli.dict_reels
              p=convert.plugins[self.format_fichier]()
              p.readfile(fn)         
              text=p.convert('exec',appli)
@@ -390,217 +260,160 @@ class JDCEditor(QSplitter):
         strRapport = str( self.jdc.report() )
         self._viewText(strRapport, "JDC_RAPPORT")        
         
-#    #-----------------------#
-#    def handleRenamed(self, fn):
-#    #-----------------------#
-#        """
-#        Public slot to handle the editorRenamed signal.
-#        
-#        @param fn filename to be set for the editor (QString or string).
-#        """
-#        self.fichier = unicode(fn)
-#        self.setCaption(self.fichier)
-#        
-#        if self.fileInfo is None:
-#            self.fileInfo = QFileInfo(self.fichier)
-#            self.fileInfo.setCaching(0)
-#        
-#        self.lastModified = self.fileInfo.lastModified()
-#        self.vm.setEditorName(self, self.fichier)
-#        self._updateReadOnly(1)        
-#
-#    #-----------------------#
-#    def handleNewView(self):
-#    #-----------------------#
-#        """
-#        Private slot to create a new view to an open document.
-#        """
-#        self.vm.newEditorView(self.fichier, self)#, self.isPythonFile)
-#
-#    #------------------------------------#
-#    def handleModificationChanged(self, m):
-#    #------------------------------------#
-#        """
-#        Private slot to handle the modificationChanged signal. 
-#        
-#        It emits the signal modificationStatusChanged with parameters
-#        m and self.
-#        
-#        @param m modification status
-#        """
-#        if not m and self.fileInfo is not None:
-#            self.lastModified = self.fileInfo.lastModified()
-#        self.emit(PYSIGNAL('modificationStatusChanged'), (m, self))
-#        
-#    #------------------------#
-#    def hasSyntaxErrors(self):        
-#    #------------------------#
-#        return False #CS_pbruno todo
-#        
     #----------------#
     def closeIt(self):
     #----------------#
         """
         Public method called by the viewmanager to finally get rid of us.
         """
-
         if self.jdc:
             self.jdc.supprime()
         self.close()
-#    
-#
+    
     #------------------------------#
     def affiche_infos(self,message):
     #------------------------------#
         if self.sb:
             self.sb.showMessage(message)#,2000)
 
-#    #------------------------------#
-#    def updatePanel(self, jdcNode):
-#    #------------------------------#
-#        """
-#        Appele a chaque changement de noeud
-#        """
-#        self.node_selected = jdcNode
-#        if self.panel:
-#            self.panel.close()
-#            del self.panel
-#            self.panel = None
-#            
-#        if jdcNode.item.isactif():
-#            self.panel = jdcNode.getPanel()
-#        else:
-#            self.panel = panelsQT.PanelInactif(self.node_selected,self)
-#            
-#        if not self.panel:
-#            self.panel = panelsQT.NoPanel(self)
-#        
-#        self.panel.show()
-#        
-#    
     #-------------------#
     def init_modif(self):
     #-------------------#
       """
-          Met l'attribut modified a 'o' : utilise par Eficas pour savoir 
+          Met l'attribut modified a 'o' : utilise par Eficas pour savoir
           si un JDC doit etre sauvegarde avant destruction ou non
       """
       self.modified = True
-      #self.emit(PYSIGNAL('modificationStatusChanged'), (True, self))
-      self.emit(SIGNAL('modificationStatusChanged'), (True, self))
-#    
-#    #-------------------#
-#    def stop_modif(self):
-#    #-------------------#
-#      """
-#          Met l'attribut modified à 'n' : utilisé par Eficas pour savoir 
-#          si un JDC doit etre sauvegardé avant destruction ou non
-#      """      
-#      self.modified = False
-#      self.emit(PYSIGNAL('modificationStatusChanged'), (False, self))
-#    
-#    
-#    #-------------------#
-#    def cut(self):
-#    #-------------------#
-#      """
-#      Stocke dans Eficas.noeud_a_editer le noeud à couper
-#      """
-#      if not self.node_selected.item.iscopiable():
-#          QMessageBox.information( self, "Copie impossible",
-#                "Cette version d'EFICAS ne permet que la copie d'objets de type 'Commande' ou mot-clé facteur")          
-#          return
-#      self.QWParent.edit="couper"
-#      self.QWParent.noeud_a_editer = self.node_selected      
-#    
-#    #-------------------#
-#    def copy(self):
-#    #-------------------#
-#      """
-#      Stocke dans Eficas.noeud_a_editer le noeud a copier
-#      """
-#      if not self.node_selected.item.iscopiable():
-#          QMessageBox.information( self, "Copie impossible",
-#                   "La copie d'un tel objet n'est pas permise")          
-#          return
-#      self.QWParent.edit="copier"
-#      self.QWParent.noeud_a_editer = self.node_selected
-#    
-#    #-------------------#
-#    def paste(self):
-#    #-------------------#
-#      """
-#      Lance la copie de l'objet place dans self.QWParent.noeud_a_editer
-#      Ne permet que la copie d'objets de type Commande ou MCF
-#      """
-#      try:
-#         child=self.QWParent.noeud_a_editer.doPaste(self.node_selected)
-#      except:
-#         traceback.print_exc()
-#         QMessageBox.information( self, "Copie impossible",         
-#                                        "L'action de coller apres un tel objet n'est pas permise")
-#         return
-#    
-#      if child == 0:
-#          if self.message != '':             
-#             QMessageBox.critical( self, "Copie refusee", self.message)
-#             self.message = ''
-#          self.affiche_infos("Copie refusée")
-#          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 self.QWParent.edit == "couper":
-#         #nom = self.QWParent.noeud_a_editer.item.object.sd.nom
-#         item=self.QWParent.noeud_a_editer.item
-#         self.QWParent.noeud_a_editer.delete()
-#         child.item.update(item)
-#         #test,mess = child.item.nomme_sd(nom)
-#         child.select()
-#
-#      # on rend la copie a nouveau possible en liberant le flag edit
-#      self.QWParent.edit="copier"
-#          
+
+    #---------------------------------------#
+    def chercheNoeudSelectionne(self,copie=1):
+    #---------------------------------------#
+      """
+       appele par Cut et Copy pour positionner self.node_selected
+      """
+      self.node_selected=None
+      if len(self.tree.selectedItems()) == 0 : return
+      if len(self.tree.selectedItems()) != 1 :
+          QMessageBox.information( self, 
+                      "Copie impossible",
+                      "Cette version d'EFICAS permet uniquement la copie d un seul objet")
+          return
+      self.node_selected=self.tree.selectedItems()[0]
+      if copie == 0 : return
+      if not self.node_selected.item.iscopiable():
+          QMessageBox.information( self, 
+                      "Copie impossible",
+                      "Cette version d'EFICAS ne permet pas la copie de cet Objet")
+          self.node_selected=None
+          return
+    
+    
+    #---------------------#
+    def handleEditCut(self):
+    #---------------------#
+      """
+      Stocke dans Eficas.noeud_a_editer le noeud à couper
+      """
+      self.chercheNoeudSelectionne()
+      self.QWParent.edit="couper"
+      self.QWParent.noeud_a_editer = self.node_selected      
+    
+    #-----------------------#
+    def handleEditCopy(self):
+    #-----------------------#
+      """
+      Stocke dans Eficas.noeud_a_editer le noeud a copier
+      """
+      self.chercheNoeudSelectionne()
+      self.QWParent.edit="copier"
+      self.QWParent.noeud_a_editer = self.node_selected
+    
+    #------------------------#
+    def handleEditPaste(self):
+    #------------------------#
+      """
+      Lance la copie de l'objet place dans self.QWParent.noeud_a_editer
+      Ne permet que la copie d'objets de type Commande ou MCF
+      """
+      self.chercheNoeudSelectionne()
+      print "noeud a copier", self.node_selected.item.GetLabelText()[0]
+      print "noued apres " ,self.QWParent.noeud_a_editer.item.GetLabelText()[0]
+      if self.QWParent.noeud_a_editer == None :
+          QMessageBox.information( self, 
+                      "Copie impossible",
+                      "Aucun Objet n a ete copie ou colle ")
+          return
+      try:
+         child=self.QWParent.noeud_a_editer.doPaste(self.node_selected)
+      except:
+         traceback.print_exc()
+         QMessageBox.information( self, 
+                     "Copie impossible",         
+                     "L'action de coller apres un tel objet n'est pas permise")
+         return
+    
+     
+      if child == 0:
+          if self.message != '':             
+             QMessageBox.critical( self, "Copie refusee", self.message)
+             self.message = ''
+          self.affiche_infos("Copie refusée")
+          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 self.QWParent.edit == "couper":
+         #nom = self.QWParent.noeud_a_editer.item.object.sd.nom
+         print self.QWParent.noeud_a_editer.item.object.sd.nom
+         item=self.QWParent.noeud_a_editer.item
+         self.QWParent.noeud_a_editer.delete()
+         child.item.update(item)
+         #test,mess = child.item.nomme_sd(nom)
+         child.select()
+
+      # on rend la copie a nouveau possible en liberant le flag edit
+      self.QWParent.edit="copier"
+          
     #---------------------#
     def getFileName(self):
     #---------------------#
       return self.fichier
-#      
-#    #---------------------------#
-#    def writeFile(self, fn, txt = None):
-#    #------------------------------#
-#        """
-#        Public slot to write the text to a file.
-#        
-#        @param fn filename to write to (string or QString)
-#        @return flag indicating success
-#        """
-#
-#        fn = unicode(fn)
-#
-#        if txt == None :
-#            txt = self.get_text_JDC(self.format_fichier)
-#            eol = '\n'        
-#            if len(txt) >= len(eol):
-#               if txt[-len(eol):] != eol:
-#                  txt += eol
-#            else:
-#                txt += eol        
-#
-#        try:
-#            f = open(fn, 'wb')
-#            f.write(txt)
-#            f.close()
-#            return 1
-#        except IOError, why:
-#            QMessageBox.critical(self, self.trUtf8('Save File'),
-#                self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
-#                    .arg(unicode(fn)).arg(str(why)))
-#            return 0
-#
+      
+    #---------------------------#
+    def writeFile(self, fn, txt = None):
+    #------------------------------#
+        """
+        Public slot to write the text to a file.
+        
+        @param fn filename to write to (string or QString)
+        @return flag indicating success
+        """
+
+        fn = unicode(fn)
+
+        if txt == None :
+            txt = self.get_text_JDC(self.format_fichier)
+            eol = '\n'        
+            if len(txt) >= len(eol):
+               if txt[-len(eol):] != eol:
+                  txt += eol
+            else:
+                txt += eol        
+
+        try:
+            f = open(fn, 'wb')
+            f.write(txt)
+            f.close()
+            return 1
+        except IOError, why:
+            QMessageBox.critical(self, self.trUtf8('Save File'),
+                self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
+                    .arg(unicode(fn)).arg(str(why)))
+            return 0
+
 #    #------------------------------------ 
 #    def writeFilesOpenturns(self,fn) :
 #    #------------------------------------ 
@@ -632,69 +445,62 @@ class JDCEditor(QSplitter):
          self.affiche_infos("Format %s non reconnu" % format)
          QMessageBox.critical( self, "Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
          return
-#      
-#      
-#    #-------------------------------------------#
-#    def saveFile(self, saveas = 0, path = None):
-#    #-------------------------------------------#
-#        """
-#        Public slot to save the text to a file.
-#        
-#        @param saveas flag indicating a 'save as' action
-#        @param path directory to save the file in (string or QString)
-#        @return tuple of two values (boolean, string) giving a success indicator and
-#            the name of the saved file
-#        """        
-#        self.modified = True #CS_pbruno test
-#                
-#        if not saveas and not self.modified:#self.isModified():
-#            return (0, None)      # do nothing if text wasn't changed
-#            
-#        newName = None
-#        if saveas or self.fichier is None:
-#            if path is None and self.fichier is not None:
-#                path = os.path.dirname(unicode(self.fichier))
-#            selectedFilter = QString('')
-#            fn = QFileDialog.getSaveFileName(path,
-#                self.trUtf8("JDC (*.comm);;"
-#                    "All Files (*)"), self, None,
-#                self.trUtf8("Save File"), selectedFilter, 0)
-#                
-#            if not fn.isNull():
-#                ext = QFileInfo(fn).extension()
-#                if ext.isEmpty():
-#                    ex = selectedFilter.section('(*',1,1).section(')',0,0)
-#                    if not ex.isEmpty():
-#                        fn.append(ex)
-#                if QFileInfo(fn).exists():
-#                    abort = QMessageBox.warning(self,
-#                        self.trUtf8("Save File"),
-#                        self.trUtf8("The file <b>%1</b> already exists.")
-#                            .arg(fn),
-#                        self.trUtf8("&Overwrite"),
-#                        self.trUtf8("&Abort"), None, 1)
-#                    if abort:
-#                        return (0, None)
-#                fn = unicode(QDir.convertSeparators(fn))
-#                newName = fn
-#            else:
-#                return (0, None)
-#        else:
-#            fn = self.fichier
-#        
-#        if self.writeFile(fn):
-#            self.fichier = fn
-#            self.modified  = False                        
-#            self.setCaption(self.fichier)                
-#            if self.fileInfo is None or saveas:
-#                self.fileInfo = QFileInfo(self.fichier)
-#                self.fileInfo.setCaching(0)
-#                self.emit(PYSIGNAL('editorRenamed'), (self.fichier,))
-#            self.lastModified = self.fileInfo.lastModified()
-#            if newName is not None:
-#                self.vm.addToRecentList(newName)
-#            self.emit(PYSIGNAL('editorSaved'), (self.fichier,))
-#            self.stop_modif()            
+      
+      
+    #-----------------------------------------#
+    def saveFile(self, path = None, saveas= 0):
+    #-----------------------------------------#
+        """
+        Public slot to save the text to a file.
+        
+        @param path directory to save the file in (string or QString)
+        @return tuple of two values (boolean, string) giving a success indicator and
+            the name of the saved file
+        """        
+                
+        if not self.modified and not saveas:
+            return (0, None)      # do nothing if text wasn't changed
+            
+        newName = None
+        if self.fichier is None or saveas:
+          if path is None: 
+             #PN --> modifier selon les prefs
+             path="/tmp"
+          selectedFilter = QString('')
+          fn = QFileDialog.getSaveFileName( self,
+               self.trUtf8("sauvegarde"), path,
+               self.trUtf8("JDC (*.comm);;" "All Files (*)"),None,
+               QFileDialog.DontConfirmOverwrite)
+          if fn.isNull(): return (0, None)
+
+          ext = QFileInfo(fn).suffix()
+          if ext.isEmpty(): fn.append(".comm")
+
+          if QFileInfo(fn).exists():
+                abort = QMessageBox.warning(self,
+                       self.trUtf8("Sauvegarde du Fichier"),
+                       self.trUtf8("Le fichier <b>%1</b> existe deja.").arg(fn),
+                       self.trUtf8("&Ecraser"),
+                       self.trUtf8("&Abandonner"))
+                if abort == 1 :  return (0, None)
+
+          fn = unicode(QDir.convertSeparators(fn))
+          newName = fn
+
+        else:
+            fn = self.fichier
+        
+        if self.writeFile(fn):
+            self.fichier = fn
+            self.modified  = False                        
+            if self.fileInfo is None or saveas:
+                self.fileInfo = QFileInfo(self.fichier)
+                self.fileInfo.setCaching(0)
+            self.lastModified = self.fileInfo.lastModified()
+            if newName is not None:
+                self.appliEficas.addToRecentList(newName)
+                self.tree.racine.item.getObject().nom=os.path.basename(newName)
+                self.tree.racine.update_node_label()
 #          if self.code == "OPENTURNS" :
 #             self.writeFilesOpenturns(fn)
 #            if self.salome : 
@@ -703,33 +509,32 @@ class JDCEditor(QSplitter):
 #                  self.QWParent.appli.createOrUpdateMesh(self)
 #               #PN ; TODO
 #
+            return (1, self.fichier)
+        else:
+            return (0, None)
 #
-#            return (1, self.fichier)
-#        else:
-#            return (0, None)
-#
-#    #---------------------------------#
-#    def saveFileAs(self, path = None):
-#    #---------------------------------#
-#        """
-#        Public slot to save a file with a new name.
-#        
-#        @param path directory to save the file in (string or QString)
-#        @return tuple of two values (boolean, string) giving a success indicator and
-#            the name of the saved file
-#        """
-#        return self.saveFile(1, path)
-#
-#   
-#if __name__=='__main__':    
-#    if hasattr(prefs,'encoding'):
-#       # Hack pour changer le codage par defaut des strings
-#       import sys
-#       reload(sys)
-#       sys.setdefaultencoding(prefs.encoding)
-#       del sys.setdefaultencoding
-#       # Fin hack
-#
+    #---------------------------------#
+    def saveFileAs(self, path = None):
+    #---------------------------------#
+        """
+        Public slot to save a file with a new name.
+        
+        @param path directory to save the file in (string or QString)
+        @return tuple of two values (boolean, string) giving a success indicator and
+            the name of the saved file
+        """
+        return self.saveFile(path,1)
+
+   
+if __name__=='__main__':    
+    if hasattr(prefs,'encoding'):
+       # Hack pour changer le codage par defaut des strings
+       import sys
+       reload(sys)
+       sys.setdefaultencoding(prefs.encoding)
+       del sys.setdefaultencoding
+       # Fin hack
+
 #    #CS_pbruno note: fait implicitement des trucs ces imports (grr)
 #    import styles
 #    import import_code
@@ -739,12 +544,11 @@ class JDCEditor(QSplitter):
 #    options=session.parse(sys.argv)
 #    code=options.code
 #        
-#    app = QApplication(sys.argv)    
-#    mw = JDCEditor('azAster.comm')
-#    app.setMainWidget(mw)
-#    app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
-#    mw.show()
-#            
-#    res = app.exec_loop()
-#    sys.exit(res)
-#    
+    app = QApplication(sys.argv)    
+    mw = JDCEditor('azAster.comm')
+    app.setMainWidget(mw)
+    app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
+    mw.show()
+            
+    res = app.exec_loop()
+    sys.exit(res)
index 0a42222b94f80f8fed9d2322b6073293899e49d4..152a71efb33745e77e977589b1718baa0b961d9d 100644 (file)
@@ -68,7 +68,11 @@ class MonFonctionPanel(MonPlusieursBasePanel):
         self.LBValeurs.clear()
         listeValeurs=self.node.item.GetListeValeurs()
         for valeur in self.DecoupeListeValeurs(listeValeurs):
-            self.LBValeurs.addItem(str(valeur))
+               if (self.nbValeurs==2):
+                    str_valeur=str(valeur[0])+","+str(valeur[1])
+               else:
+                    str_valeur=str(valeur[0])+","+str(valeur[1])+","+str(valeur[2])
+               self.LBValeurs.addItem(str_valeur)
 
   def  Ajout1Valeur(self,liste=[]):
         # Pour être appele a partir du Panel Importer (donc plusieurs fois par AjouterNValeur)
@@ -84,15 +88,17 @@ class MonFonctionPanel(MonPlusieursBasePanel):
             commentaire += QString(" n est pas un tuple de ") 
             commentaire += QString(str(self.nbValeurs)) 
             commentaire += QString(" valeurs")
-            #self.Commentaire.setText(commentaire)
            self.LEValeur.setText(QString(str(liste)))
             self.editor.affiche_infos(commentaire)
             return
 
-        index=self.LBValeurs.currentItem() +1
+        index=self.LBValeurs.currentRow()
+        if ((self.LBValeurs.isItemSelected(self.LBValeurs.item(index )) == 0) and (index > 0 )):
+           index=0
+        else :
+           index=self.LBValeurs.currentRow() + 1
         indexListe=index*self.nbValeurs
         if index == 0 : 
-           index = -1
            indexListe=len(self.listeValeursCourantes)
         listeVal=[]
         for valeur in self.listeValeursCourantes :
@@ -105,8 +111,15 @@ class MonFonctionPanel(MonPlusieursBasePanel):
            self.LEValeur.setText(QString(""))
            l1=self.listeValeursCourantes[:indexListe]
            l3=self.listeValeursCourantes[indexListe:]
-           for valeur in self.DecoupeListeValeurs(listeRetour):
-               self.LBValeurs.insertItem(QString(str(valeur)),index)
+           for valeur in  self.DecoupeListeValeurs(listeRetour) :
+               if (self.nbValeurs==2):
+                    str_valeur=str(valeur[0])+","+str(valeur[1])
+               else:
+                    str_valeur=str(valeur[0])+","+str(valeur[1])+","+str(valeur[2])
+               self.LBValeurs.insertItem(index,str_valeur)
+               item=self.LBValeurs.item(index)
+               item.setSelected(1)
+               self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
 
@@ -123,8 +136,9 @@ class MonFonctionPanel(MonPlusieursBasePanel):
            
 
   def Sup1Valeur(self):
-        index=self.LBValeurs.currentItem()
-        self.LBValeurs.removeItem(self.LBValeurs.currentItem())
+        index=self.LBValeurs.currentRow()
+        if index == None : return
+        self.LBValeurs.takeItem(index)
         listeVal=[]
         i=0
         for valeur in self.listeValeursCourantes :
@@ -137,7 +151,4 @@ class MonFonctionPanel(MonPlusieursBasePanel):
                 i = i+1
         self.listeValeursCourantes=listeVal
         listeValeurs=self.listeValeursCourantes
-        self.LBValeurs.clear()
-        for valeur in self.DecoupeListeValeurs(listeValeurs):
-            self.LBValeurs.insertItem(str(valeur))
 
index 054a757dc4570dc36f35dbeb17fc5511d8410555..e3ca66dde7f977300a379121e9bd5793c60644bc 100644 (file)
 # Modules Eficas
 
 import os,traceback,sys
-#from PyQt4 import *
+from qtCommun import QTPanel
+from qtCommun import QTPanelTBW1
+from qtCommun import QTPanelTBW2
+from qtCommun import QTPanelTBW3
 from PyQt4.QtGui import *
-#from monMacroPanel import DMacro
+from PyQt4.QtCore import *
 
-from monMacroPanel import MonMacroPanel
+from  desInclude import Ui_DInc1
 import convert
 
+class DInc(Ui_DInc1,QDialog):
+   def __init__(self,parent ,modal ) :
+       QDialog.__init__(self,parent)
+       if hasattr(parent,"leLayout"):
+          parent.leLayout.removeWidget(parent.leLayout.widgetActive)
+          parent.leLayout.widgetActive.close()
+          parent.leLayout.addWidget(self)
+          parent.leLayout.widgetActive=self
+       else:
+          parent.partieDroite=QWidget()
+          parent.leLayout=QGridLayout(parent.partieDroite)
+          parent.leLayout.addWidget(self)
+          parent.addWidget(parent.partieDroite)
+          parent.leLayout.widgetActive=self
+       self.setupUi(self)
+
+
 
 # Import des panels
 
-class MonIncludePanel(MonMacroPanel):
+class MonIncludePanel(DInc,QTPanelTBW1,QTPanelTBW2,QTPanelTBW3):
   """
   Classe définissant le panel associé aux mots-clés qui demandent
   à l'utilisateur de choisir une seule valeur parmi une liste de valeurs
   discrètes
   """
   def __init__(self,node, parent = None,name = None,fl = 0):
-        MonMacroPanel.__init__(self,node,parent,name,fl)
+        DInc.__init__(self,parent,fl)
+        QTPanel.__init__(self,node,parent)
+        QTPanelTBW2.__init__(self,node,parent)
+        QTPanelTBW1.__init__(self,node,parent)
+        self.connecterSignaux()
+
+        self.node=node
         #Version TK ??
         #if not hasattr(self.node.item.object,'fichier_ini'):
         if not hasattr(self.node.item.object,'fichier_unite'):
-           self.ajoutPageBad()
+           self.pageBad()
         else:
-           self.ajoutPageOk()
-
-  def ajoutPageOk(self):
-        self.TabPage = QWidget(self.TWChoix)
-        self.TabPage.setObjectName("TabPage")
-        self.LENomFichier = QLineEdit(self.TabPage,"LENomFichier")
-        self.LENomFichier.setGeometry(QRect(18,127,450,30))
-        self.textLabel1_3 = QLabel(self.TabPage,"textLabel1_3")
-        self.textLabel1_3.setGeometry(QRect(70,50,350,41))
-        self.BBrowse = QPushButton(self.TabPage,"BBrowse")
-        self.BBrowse.setGeometry(QRect(288,306,161,41))
-        self.TWChoix.insertTab(self.TabPage,QString(""))
-        self.textLabel1_3.setText(self._DMacro__tr("<font size=\"+1\">La commande INCLUDE requiert un nom de Fichier :</font>"))
-        self.BBrowse.setText(self._DMacro__tr("Edit"))
-        self.TWChoix.changeTab(self.TabPage,self._DMacro__tr("Fichier Include"))
-        self.TWChoix.setCurrentPage(2)
-        if hasattr(self.node.item.object,'fichier_ini'):
-           self.LENomFichier.setText(self.node.item.object.fichier_ini)
-        else :
-           self.LENomFichier.setText("")
-        self.LENomFichier.setText(self.node.item.object.fichier_ini)
-
-
-        self.BChangeFile = QPushButton(self.TabPage,"BChangeFile")
-        self.BChangeFile.setGeometry(QRect(290,350,161,41))
-        self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth()))
-        self.BChangeFile.setText(self._DMacro__tr("Autre Fichier"))
-
-        self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
-        self.connect(self.BChangeFile,SIGNAL("clicked()"),self.BChangeFilePressed)
-        self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed)
-
-
-  def ajoutPageBad(self) :
-        self.TabPage = QWidget(self.TWChoix)
-       self.textLabel1_5 = QLabel(self.TabPage,"textLabel1_5")
-       TabPageLayout = QGridLayout(self.TabPage,1,1,11,6,"TabPageLayout")
-       TabPageLayout.addWidget(self.textLabel1_5,0,0)
-        self.TWChoix.insertTab(self.TabPage,QString(""))
-       self.resize(QSize(521,499).expandedTo(self.minimumSizeHint()))
-       self.clearWState(Qt.WState_Polished)
-        self.textLabel1_5.setText(self._DMacro__trUtf8("\x3c\x66\x6f\x6e\x74\x20\x73\x69\x7a\x65\x3d\x22\x2b\x31\x22\x3e\x3c\x70\x20\x61\x6c\x69\x67\x6e\x3d\x22\x63\x65\x6e\x74\x65\x72\x22\x3e\x4c\x61\x20\x63\x6f\x6d\x6d\x61\x6e\x64\x65\x20\x49\x4e\x43\x4c\x55\x44\x45\x20\x6e\x27\x61\x20\x70\x61\x73\x20\x64\x65\x20\x66\x69\x63\x68\x69\x65\x72\x20\x61\x73\x73\x6f\x63\x69\xc3\xa9\x2e\x0a\x49\x6c\x20\x66\x61\x75\x74\x20\x64\x27\x61\x62\x6f\x72\x64\x20\x63\x68\x6f\x69\x73\x69\x72\x20\x75\x6e\x20\x6e\x75\x6d\xc3\xa9\x72\x6f\x20\x64\x27\x75\x6e\x69\x74\xc3\xa9\x3c\x2f\x70\x3e\x3c\x2f\x66\x6f\x6e\x74\x3e"))
-        self.TWChoix.changeTab(self.TabPage,self._DMacro__tr("Fichier Include"))
-        self.TWChoix.setCurrentPage(2)
-
+           self.pageOk()
+
+  def pageOk(self):
+        self.TWChoix.removeTab(2)
+        #self.TWChoix = QWidget(self.TWChoix)
+        #self.TWChoix.setObjectName("TWChoix")
+        #self.LENomFichier = QLineEdit(self.TWChoix,"LENomFichier")
+        #self.LENomFichier.setGeometry(QRect(18,127,450,30))
+        #self.textLabel1_3 = QLabel(self.TWChoix,"textLabel1_3")
+        #self.textLabel1_3.setGeometry(QRect(70,50,350,41))
+        #self.BBrowse = QPushButton(self.TWChoix,"BBrowse")
+        #self.BBrowse.setGeometry(QRect(288,306,161,41))
+        #self.TWChoix.insertTab(self.TWChoix,QString(""))
+        #self.textLabel1_3.setText(self._DMacro__tr("<font size=\"+1\">La commande INCLUDE requiert un nom de Fichier :</font>"))
+        #self.BBrowse.setText(self._DMacro__tr("Edit"))
+        #self.TWChoix.changeTab(self.TWChoix,self._DMacro__tr("Fichier Include"))
+        #self.TWChoix.setCurrentPage(2)
+        #if hasattr(self.node.item.object,'fichier_ini'):
+        #   self.LENomFichier.setText(self.node.item.object.fichier_ini)
+        #else :
+        #   self.LENomFichier.setText("")
+        #self.LENomFichier.setText(self.node.item.object.fichier_ini)
+
+
+        #self.BChangeFile = QPushButton(self.TWChoix,"BChangeFile")
+        #self.BChangeFile.setGeometry(QRect(290,350,161,41))
+        #self.BChangeFile.setSizePolicy(QSizePolicy(0,0,0,0,self.BChangeFile.sizePolicy().hasHeightForWidth()))
+        #self.BChangeFile.setText(self._DMacro__tr("Autre Fichier"))
+
+
+
+  def pageBad(self) :
+        self.TWChoix.removeTab(2)
+        self.TWChoix.setCurrentIndex(2)
 
   def BBrowsePressed(self):
       self.node.makeEdit()
@@ -154,3 +169,48 @@ class MonIncludePanel(MonMacroPanel):
       fn = os.path.abspath((unicode(fn)))
       self.LENomFichier.setText(fn)
       self.LENomFichReturnPressed()
+
+  def connecterSignaux(self):
+        self.connect(self.LBNouvCommande,SIGNAL("doubleClicked(QListBoxItem*)"),self.LBNouvCommandeClicked)
+        self.connect(self.LEFiltre,SIGNAL("textChanged(const QString&)"),self.LEFiltreTextChanged)
+        self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.LEfiltreReturnPressed)
+        self.connect(self.bSup,SIGNAL("pressed()"),self.BSupPressed)
+        self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
+        self.connect(self.RBGroupe,SIGNAL("clicked()"),self.BuildTabCommand)
+        self.connect(self.RBalpha,SIGNAL("clicked()"),self.BuildTabCommand)
+        self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
+        self.connect(self.BNext,SIGNAL("pressed()"),self.BNextPressed)
+        self.connect(self.BBrowse,SIGNAL("clicked()"),self.BBrowsePressed)
+        try :
+           self.connect(self.BChangeFile,SIGNAL("clicked()"),self.BChangeFilePressed)
+           self.connect(self.LENomFichier,SIGNAL("returnPressed()"),self.LENomFichReturnPressed)
+        except :
+           pass
+
+  def ViewDoc(self):
+      QTPanel.ViewDoc(self)
+
+  def BSupPressed(self):
+      QTPanel.BSupPressed(self)
+
+  def BOkPressed(self):
+      QTPanel.BOkPressed(self)
+
+  def BNextPressed(self):
+      QTPanelTBW2.BNextPressed(self)
+
+  def BuildTabCommand(self):
+      QTPanelTBW2.BuildLBNouvCommande(self)
+
+  def LEFiltreTextChanged(self):
+      QTPanelTBW2.LEFiltreTextChanged(self)
+
+  def LEfiltreReturnPressed(self):
+      QTPanelTBW2.LEfiltreReturnPressed(self)
+
+  def LBNouvCommandeClicked(self):
+      QTPanelTBW2.LBNouvCommandeClicked(self)
+
+  def LENomConceptReturnPressed(self):
+      QTPanelTBW3.LENomConceptReturnPressed(self)
+
index dedea6bfcee769a3e8e0734c9af28502ec1f628e..91d5221c2f48fb5ee724b2d57d3743a7c2349dfb 100644 (file)
@@ -29,17 +29,17 @@ from PyQt4.QtCore import *
 class DLisParam(Ui_DLisParam,QDialog):
    def __init__(self,parent ,modal ) :
        QDialog.__init__(self,parent)
-       if hasattr(parent,"leLayout"):
-          parent.leLayout.removeWidget(parent.leLayout.widgetActive)
-          parent.leLayout.widgetActive.close()
-          parent.leLayout.addWidget(self)
-          parent.leLayout.widgetActive=self
-       else:
-          parent.partieDroite=QWidget()
-          parent.leLayout=QGridLayout(parent.partieDroite)
-          parent.leLayout.addWidget(self)
-          parent.addWidget(parent.partieDroite)
-          parent.leLayout.widgetActive=self
+       #if hasattr(parent,"leLayout"):
+       #   parent.leLayout.removeWidget(parent.leLayout.widgetActive)
+       #   parent.leLayout.widgetActive.close()
+       #   parent.leLayout.addWidget(self)
+       #   parent.leLayout.widgetActive=self
+       #else:
+       #   parent.partieDroite=QWidget()
+       #   parent.leLayout=QGridLayout(parent.partieDroite)
+       #   parent.leLayout.addWidget(self)
+       #   parent.addWidget(parent.partieDroite)
+       #   parent.leLayout.widgetActive=self
        self.setupUi(self)
 
 class MonListeParamPanel(DLisParam):
index 4d385f4e3e73b460d39ba1229d32ca3986df44c7..8b8474c2a114450880dc696176fb1995cf9822e9 100644 (file)
@@ -84,9 +84,10 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel):
 
   def BOkParamPressed(self):
         val=self.LEValeurPressed() 
-        nom=self.LENomPressed()
+        nom,commentaire=self.LENomPressed()
         if not nom :
-           commentaire="Entrer un nom de parametre"
+           if commentaire == None :
+              commentaire="Entrer un nom de parametre"
            self.Commentaire.setText(QString(commentaire))
            self.editor.affiche_infos(commentaire)
            return
@@ -136,14 +137,12 @@ class MonParamPanel(DParam,QTPanelTBW2,QTPanel):
         self.Commentaire.setText(QString(""))
         qtNom=self.lineEditNom.text()
         nom=str(qtNom)
-        numDebutPattern=re.compile('[a-zA-Z]')
+        numDebutPattern=re.compile('[a-zA-Z"_"]')
         if numDebutPattern.match(nom) :
-           return nom
+           return nom,None
         else :
-           commentaire="Les noms de parametre doivent commencer par une lettre"
-           self.Commentaire.setText(QString(commentaire))
-           self.editor.affiche_infos(commentaire)
-           return None
+           commentaire="Les noms de parametre doivent commencer par une lettre ou un souligne"
+           return None,commentaire
 
   def BuildTabCommand(self):
       QTPanelTBW2.BuildLBNouvCommande(self)
index c01c86004aa71a6dfa43d3e2a311b4e90f3b5efe..60568ff3d1531d385ce3c04da29145a0d2708909 100644 (file)
@@ -26,6 +26,7 @@ import prefs
 
 from PyQt4 import *
 from PyQt4.QtGui import *
+from PyQt4.QtCore import *
 from monPlusieursIntoPanel import MonPlusieursIntoPanel
 from monPlusieursIntoPanel import DPlusInto
 from qtCommun              import QTPanel
@@ -48,8 +49,7 @@ class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
         self.DisplayListBoxPossibles()
 
         self.politique=PolitiquePlusieurs(node,parent)
-        #QObject.connect(self.listBoxVal, SIGNAL("doubleClicked(QListBoxItem*)" ), self.Ajout1Valeur )
-        #    QObject.connect(self.listBoxVal, SIGNAL("doubleClicked(QListBoxItem*)" ), self.ClicASSD )
+        self.connecterSignaux()
 
   def DisplayListBoxPossibles(self):
         listeNomsSD = self.node.item.get_sd_avant_du_bon_type()
@@ -81,12 +81,16 @@ class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
         QTPanel.BSupPressed(self)
 
   def Sup1Valeur(self):
-        index=self.LBValeurs.currentItem()
-        self.LBValeurs.removeItem(self.LBValeurs.currentItem())
+        indexCourant=self.LBValeurs.currentRow()
+        if indexCourant < 0 : return
+        if self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant))== 0 : return
+        if self.LBValeurs.item(indexCourant).text()==QString("") : return
+        self.LBValeurs.takeItem(indexCourant)
+     
         listeVal=[]
         i=0
         for valeur in self.listeValeursCourantes :
-                if i != index : listeVal.append(valeur)
+                if i != indexCourant : listeVal.append(valeur)
                 i = i+1
         self.listeValeursCourantes=listeVal
         self.InitValeursCourantes()
@@ -95,14 +99,20 @@ class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
           
   def Ajout1Valeur(self):
         liste=[]
-        if self.listBoxVal.currentText().latin1() == None : return
-        liste.append(self.listBoxVal.currentText().latin1())
-        index=self.LBValeurs.currentItem() + 1
-        if index==0 : index = -1
+        indexCourant=self.listBoxVal.currentRow()
+        if indexCourant == None : return
+        if self.listBoxVal.isItemSelected(self.listBoxVal.item(indexCourant))== 0 : return
+        if self.listBoxVal.item(indexCourant).text()==QString("") : return
+        liste.append(str(self.listBoxVal.item(indexCourant).text()))
+        if self.LBValeurs.currentItem() != None :
+           index= self.LBValeurs.currentRow()+ 1
+        else :
+           index = 0
+
         listeVal=[]
         for valeur in self.listeValeursCourantes :
-                valeurSD,validite=self.node.item.eval_valeur(valeur)
-                if validite : listeVal.append(valeur)
+            valeurSD,validite=self.node.item.eval_valeur(valeur)
+            if validite : listeVal.append(valeur)
         validite,comm,comm2,listeRetour=self.politique.AjoutValeurs(liste,index,listeVal) 
        self.Commentaire.setText(comm2)
         if not validite :
@@ -111,7 +121,10 @@ class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
            l1=self.listeValeursCourantes[:index]
            l3=self.listeValeursCourantes[index:]
            for valeur in listeRetour:
-               self.LBValeurs.addItem(QString(str(valeur)),index)
+               self.LBValeurs.insertItem(index,QString(str(valeur)))
+               item=self.LBValeurs.item(index)
+               item.setSelected(1)
+               self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
            self.InitValeursCourantes()
index 90ae990e7ae4a5c93272a37128f19e65c546885f..fcc35bcf03c6fe79ef2d8c29088caeaa73f75178 100644 (file)
@@ -80,7 +80,7 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
         mc = self.node.item.get_definition()
         type = mc.type[0]
         print self.editor.salome
-        if not('grma' in repr(type)) or not(self.editor.salome) :
+        if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
            self.BSalome.close()
            self.BView2D.close()
 
@@ -92,6 +92,7 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
         SaisieValeur.BuildLBValeurs(self)
 
   def BOkPourListePressed(self):
+        self.editor.init_modif()
         if self.listeValeursCourantes == [] :
            self.editor.affiche_infos("Pas de validation d un groupe vide")
            return
@@ -108,9 +109,11 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
         self.Ajout1Valeur()
 
   def Sup1Valeur(self):
-        index=self.LBValeurs.currentItem()
-        self.LEValeur.setText(self.LBValeurs.currentText())
-        self.LBValeurs.removeItem(self.LBValeurs.currentItem())
+        index=self.LBValeurs.currentRow()
+        if index < 0 : return
+        if self.LBValeurs.isItemSelected(self.LBValeurs.item(index)) == 0 : return
+        self.LEValeur.setText(self.LBValeurs.item(index).text())
+        self.LBValeurs.takeItem(index)
         listeVal=[]
         i=0
         for valeur in self.listeValeursCourantes :
@@ -124,7 +127,13 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
         if validite == 0 : return
         if liste ==[]    : return
 
-        index=self.LBValeurs.currentItem() + 1
+        indexCourant=self.LBValeurs.currentRow()
+        if ( (self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant )) == 0) 
+           and (indexCourant > 0 )):
+           index=0
+        else :
+           index=self.LBValeurs.currentRow() + 1
+
         listeVal=[]
         for valeur in self.listeValeursCourantes :
                 listeVal.append(valeur)
@@ -137,9 +146,13 @@ class MonPlusieursBasePanel(DPlusBase,QTPanel,SaisieValeur):
            l1=self.listeValeursCourantes[:index]
            l3=self.listeValeursCourantes[index:]
            for valeur in listeRetour:
-               self.LBValeurs.insertItem(QString(str(valeur)),index)
+               self.LBValeurs.insertItem(index,QString(str(valeur)))
+               item=self.LBValeurs.item(index)
+               item.setSelected(1)
+               self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
+          self.editor.affiche_infos("Valeurs Ajoutées")
 
   def BImportPressed(self):
         init=QString( self.editor.CONFIGURATION.rep_user)
index ced52dc0bcedde3c14ab7a12add065f18f6e0e77..9470e40934c93b2de20b5973610af22705fe1bd0 100644 (file)
@@ -60,13 +60,14 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
         self.listeValeursCourantes=self.node.item.GetListeValeurs()
         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
         self.InitCommentaire()
+        self.connecterSignaux()
 
   def connecterSignaux(self) :
-        self.connect(self.listBoxVal, SIGNAL("doubleClicked(QListBoxItem*)" ), self.Ajout1Valeur )
+        self.connect(self.listBoxVal, SIGNAL("itemDoubleClicked(QListWidgetItem*)" ), self.Ajout1Valeur )
+        self.connect(self.LBValeurs,SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.Sup1Valeur)
         self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
         self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPourListePressed)
         self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
-        self.connect(self.LBValeurs,SIGNAL("doubleClicked(QListBoxItem*)"),self.Sup1Valeur)
         self.connect(self.BAjout1Val,SIGNAL("clicked()"),self.Ajout1Valeur)
         self.connect(self.BSup1Val,SIGNAL("clicked()"),self.Sup1Valeur)
 
@@ -85,22 +86,31 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
       QTPanel.ViewDoc(self)
 
   def Sup1Valeur(self):
-        index=self.LBValeurs.currentItem()
-        self.LBValeurs.removeItem(self.LBValeurs.currentItem())
+        indexCourant=self.LBValeurs.currentRow()
+        if indexCourant == None : return
+        if self.LBValeurs.isItemSelected(self.LBValeurs.item(indexCourant))== 0 : return
+        if self.LBValeurs.item(indexCourant).text()==QString("") : return 
+        self.LBValeurs.takeItem(indexCourant)
         listeVal=[]
         i=0
         for valeur in self.listeValeursCourantes :
-                if i != index : listeVal.append(valeur)
+                if i != indexCourant : listeVal.append(valeur)
                 i = i+1
         self.listeValeursCourantes=listeVal
         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
           
   def Ajout1Valeur(self):
         liste=[]
-        if self.listBoxVal.currentText().latin1() == None : return
-        liste.append(self.listBoxVal.currentText().latin1())
-        index=self.LBValeurs.currentItem() + 1
-        if index==0 : index = -1
+
+        indexCourant=self.listBoxVal.currentRow()
+        if indexCourant == None : return
+        if self.listBoxVal.isItemSelected(self.listBoxVal.item(indexCourant))== 0 : return
+        if self.listBoxVal.item(indexCourant).text()==QString("") : return 
+        liste.append(str(self.listBoxVal.item(indexCourant).text()))
+        if self.LBValeurs.currentItem() != None :
+           index= self.LBValeurs.currentRow()+ 1
+        else :
+           index = 0
         listeVal=[]
         for valeur in self.listeValeursCourantes :
                 listeVal.append(valeur)
@@ -112,7 +122,10 @@ class MonPlusieursIntoPanel(DPlusInto,QTPanel,SaisieValeur):
            l1=self.listeValeursCourantes[:index]
            l3=self.listeValeursCourantes[index:]
            for valeur in listeRetour:
-               self.LBValeurs.insertItem(QString(str(valeur)),index)
+               self.LBValeurs.insertItem(index,QString(str(valeur)))
+               item=self.LBValeurs.item(index)
+               item.setSelected(1)
+              self.LBValeurs.setCurrentItem(item)
                index=index+1
            self.listeValeursCourantes=l1+listeRetour+l3
         SaisieValeur.RemplitPanel(self,self.listeValeursCourantes)
index f4028851c3c45d1d7c7dffa89c65cd2788e20201..11d1880f6a52edf204ef34f5c9a12be3f1ff6e9d 100644 (file)
@@ -28,17 +28,6 @@ from PyQt4.QtCore import *
 class DSelVal(Ui_DSelVal,QDialog):
    def __init__(self,parent ,modal ) :
        QDialog.__init__(self,parent)
-       if hasattr(parent,"leLayout"):
-          parent.leLayout.removeWidget(parent.leLayout.widgetActive)
-          parent.leLayout.widgetActive.close()
-          parent.leLayout.addWidget(self)
-          parent.leLayout.widgetActive=self
-       else:
-          parent.partieDroite=QWidget()
-          parent.leLayout=QGridLayout(parent.partieDroite)
-          parent.leLayout.addWidget(self)
-          parent.addWidget(parent.partieDroite)
-          parent.leLayout.widgetActive=self
        self.setupUi(self)
 
 class MonSelectVal(DSelVal):
@@ -50,7 +39,6 @@ class MonSelectVal(DSelVal):
   def __init__(self,file,parent,name = None,fl = 0):
         self.FonctPanel=parent
         DSelVal.__init__(self,parent,0)
-        self.dictSepar={}
         self.separateur=" "
         self.texte=" "
         self.textTraite=""
@@ -60,7 +48,9 @@ class MonSelectVal(DSelVal):
         self.connecterSignaux()
 
   def connecterSignaux(self) :
-        self.connect(self.BGSeparateur,SIGNAL("clicked(int)"),self.SeparateurSelect)
+        self.connect(self.Bespace,SIGNAL("clicked()"),self.SelectEsp)
+        self.connect(self.BpointVirgule,SIGNAL("clicked()"),self.SelectPoint)
+        self.connect(self.Bvirgule,SIGNAL("clicked()"),self.SelectVir)
         self.connect(self.BImportSel,SIGNAL("clicked()"),self.BImportSelPressed)
         self.connect(self.BImportTout,SIGNAL("clicked()"),self.BImportToutPressed)
 
@@ -72,17 +62,21 @@ class MonSelectVal(DSelVal):
   def initVal(self):
         self.TBtext.clear()
         self.TBtext.setText(self.texte)
-        self.dictSepar["virgule"]=","
-        self.dictSepar["point-virgule"]=";"
-        self.dictSepar["espace"]=" "
 
-  def SeparateurSelect(self,numero):
-        monBouton=self.BGSeparateur.find(numero)
-        self.separateur=self.dictSepar[str(monBouton.text())]
+  def SelectEsp(self):
+        self.separateur=" "
+        
+  def SelectVir(self):
+        self.separateur=","
+        
+  def SelectPoint(self):
+        self.separateur=";"
         
   def BImportSelPressed(self):
-        text=str(self.TBtext.selectedText())
-        self.textTraite=text
+
+        texte = self.TBtext.textCursor().selectedText()
+        textTraite=texte.replace(u'\u2029',"\n")
+        self.textTraite=str(textTraite)
         self.Traitement()
         
   def BImportToutPressed(self):
@@ -91,6 +85,7 @@ class MonSelectVal(DSelVal):
 
   def Traitement(self):
         import string
+        if self.textTraite == "" : return
         if self.textTraite[-1]=="\n" : self.textTraite=self.textTraite[0:-1]
         self.textTraite=string.replace(self.textTraite,"\n",self.separateur)
         liste1=self.textTraite.split(self.separateur)
index 5c85b49d42e708cd75756e8d1674b07ef99417c3..42ef8ec2421a347a4510c3e49140d3083bcb5852 100644 (file)
@@ -66,6 +66,7 @@ class MonUniqueASSDPanel(DUnASSD,QTPanel,SaisieValeur):
 
   def connecterSignaux(self) :
         self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
+        self.connect(self.listBoxASSD,SIGNAL("itemDoubleClicked(QListWidgetItem*)"),self.ClicASSD)
         self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
         self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
 
index e7503d0ea13f4b5ded9523b505411f12bf0646b1..2bbd02d333b29db78968c1894aeaa035ca2a6621 100644 (file)
@@ -79,7 +79,6 @@ class MonUniqueBasePanel(DUnBase,QTPanel,SaisieValeur):
   def detruitBouton(self):
         mc = self.node.item.get_definition()
         type = mc.type[0]
-        #if not('grma' in repr(type)):
         if not('grma' in repr(type)) or not(self.editor.salome) :
            self.BSalome.close()
            self.BView2D.close()
index e0b2843211fa8720781d5ced62f421a87686cde1..ab49084c687830c0ae6430921c1d557bed298dc7 100644 (file)
@@ -61,13 +61,14 @@ class MonUniqueIntoPanel(DUnIn,QTPanel,SaisieValeur):
         self.connecterSignaux()
 
   def connecterSignaux(self) :
-        self.connect(self.listBoxVal, SIGNAL("doubleClicked(QListBoxItem*)" ), self.ClicValeur )
+        self.connect(self.listBoxVal, SIGNAL("itemDoubleClicked(QListWidgetItem*)" ), self.ClicValeur )
         self.connect(self.bHelp,SIGNAL("clicked()"),self.ViewDoc)
         self.connect(self.bOk,SIGNAL("clicked()"),self.BOkPressed)
         self.connect(self.bSup,SIGNAL("clicked()"),self.BSupPressed)
 
   def ClicValeur(self):
         SaisieValeur.ClicValeur(self)
+        self.editor.init_modif()
 
   def BOkPressed(self):
         SaisieValeur.BOkPressed(self)
index 49863cacb04177671b850bd816ece6810c39a8a7..fdfa56eefe7312943aca24d6f6915eee929812c4 100644 (file)
@@ -38,10 +38,10 @@ class Appli(Ui_Eficas,QMainWindow):
         QMainWindow.__init__(self)
         Ui_Eficas.__init__(self)
         self.setupUi(self)
+        self.viewmanager = MyTabview(self) 
         self.recentMenu=self.menuFichier.addMenu(self.trUtf8('&Recents'))
         self.connecterSignaux() 
 
-        self.viewmanager = MyTabview(self) 
 
         #self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
         
@@ -66,8 +66,6 @@ class Appli(Ui_Eficas,QMainWindow):
 
     def connecterSignaux(self) :
         self.connect(self.recentMenu,SIGNAL('aboutToShow()'),self.handleShowRecentMenu)
-        #self.connect(self.viewmanager,SIGNAL('lastEditorClosed'), self.handleLastEditorClosed)
-        #self.connect(self.viewmanager,SIGNAL('editorOpened'), self.handleEditorOpened)
 
        self.connect(self.action_Nouveau,SIGNAL("activated()"),self.fileNew)
         self.connect(self.actionNouvel_Include,SIGNAL("activated()"),self.NewInclude)
@@ -95,7 +93,6 @@ class Appli(Ui_Eficas,QMainWindow):
         #self.connect(self.helpIndexAction,SIGNAL("activated()"),self.helpIndex)
         #self.connect(self.helpContentsAction,SIGNAL("activated()"),self.helpContents)
         #self.connect(self.helpAboutAction,SIGNAL("activated()"),self.helpAbout)
-        #self.connect(self.fileNewViewAction,SIGNAL("activated()"),self.fileNewView)
         #self.connect(self.aidenew_itemAction,SIGNAL("activated()"),self.helpAbout)
                              
 
@@ -143,6 +140,35 @@ class Appli(Ui_Eficas,QMainWindow):
        try    : f.close()
        except : pass
 
+    def addToRecentList(self, fn):
+        """
+        Public slot to add a filename to the list of recently opened files.
+
+        @param fn name of the file to be added
+        """
+        self.recent.removeAll(fn)
+        self.recent.prepend(fn)
+        if len(self.recent) > 9:
+            self.recent = self.recent[:9]
+
+    def sauveRecents(self) :
+       rep=self.CONFIGURATION.rep_user
+       monFichier=rep+"/listefichiers_"+self.code
+       try :
+            f=open(monFichier,'w')
+            if len(self.recent) == 0 : return
+            index=0
+            while ( index <  len(self.recent)):
+              ligne=str(self.recent[index])+"\n"
+              f.write(ligne)
+              index=index+1
+       except :
+            pass
+       try :
+            f.close()
+       except :
+            pass
+
 
 
     def traductionV7V8(self):
@@ -209,9 +235,6 @@ class Appli(Ui_Eficas,QMainWindow):
     def fileOpen(self ):
         self.viewmanager.handleOpen()        
         
-    def fileNewView(self):
-        self.viewmanager.handleNewView()
-        
     def fileSave(self):
         self.viewmanager.saveCurrentEditor()
         
@@ -226,8 +249,7 @@ class Appli(Ui_Eficas,QMainWindow):
         
     def fileExit(self):
         # On peut sortir sur Abort
-        if self.viewmanager.handleCloseAll() ==0 : 
-           return
+        self.viewmanager.handleCloseAll()
         if self.salome :
            self.close()
         else :
@@ -251,12 +273,6 @@ class Appli(Ui_Eficas,QMainWindow):
     def visuJdcPy(self):
         self.viewmanager.handleViewJdcPy()
 
-    def get_source(self,file):
-        from editor import JDCEditor
-        monEditeur=JDCEditor()
-        texte=monEditeur.get_source(file)
-        return texte
-    
     def helpAbout(self):
         import AIDE
         AIDE.go3(parent=self)
index ad7cdcf1fbff76280441d29020e4f03adcb81fc1..531447212262896aebfe004acbb5d4884b976695 100644 (file)
@@ -65,26 +65,26 @@ class SaisieValeur:
             self.listBoxVal.setCurrentRow(1)
 
   def ClicASSD(self):
-         if self.listBoxASSD.selectedItem()== None : return
-         valeurQstring=self.listBoxASSD.selectedItem().text()
+         if self.listBoxASSD.currentItem()== None : return
+         valeurQstring=self.listBoxASSD.currentItem().text()
          commentaire = QString("Valeur selectionnée : ") 
          commentaire.append(valeurQstring)
          self.Commentaire.setText(commentaire)
-         valeur=valeurQstring.latin1()
+         valeur=str(valeurQstring)
          validite,commentaire=self.politique.RecordValeur(valeur)
          self.Commentaire.setText(QString(commentaire))
          self.editor.affiche_infos(commentaire)
 
   def ClicValeur(self):
-         if self.listBoxVal.selectedItem()== None : return
-         valeurQstring=self.listBoxVal.selectedItem().text()
-         valeur=valeurQstring.latin1()
+         if self.listBoxVal.currentItem()== None : return
+         valeurQstring=self.listBoxVal.currentItem().text()
+         valeur=str(valeurQstring)
          validite,commentaire=self.politique.RecordValeur(valeur)
          #self.Commentaire.setText(QString(commentaire))
          self.editor.affiche_infos(commentaire)
 
   def BOkPressed(self):
-         if self.listBoxVal.selectedItem()==None :
+         if self.listBoxVal.currentItem()==None :
             commentaire = "Pas de valeur selectionnée" 
             self.Commentaire.setText(QString(commentaire))
          else :
@@ -118,16 +118,19 @@ class SaisieValeur:
            valeurBrute=str(self.LEValeur.text())
         else :
            valeurBrute=valeurTraitee
-        if valeurBrute == str("") : return 1, listeValeurs
+        if valeurBrute == str("") : return listeValeurs,1
+
         try :
-           valeur=eval(valeurBrute,{})        
+            valeur=eval(valeurBrute,{})        
         except :
-           valeur=valeurBrute
+            valeur=valeurBrute
+
         if type(valeur)  in (types.ListType,types.TupleType) :
-           indice = 0
-           while (indice < len(valeur)):
-              v=valeur[indice]
-              if self.node.item.wait_complex() :
+           if self.node.item.wait_complex() :
+              indice = 0
+              while (indice < len(valeur)):
+                 v=valeur[indice]
+
                  if (v== 'RI' or v == 'MP'):
                     try :
                        t=tuple([v,valeur[indice+1],valeur[indice+2]])
@@ -140,13 +143,12 @@ class SaisieValeur:
                        
 
                  else :     # ce n'est pas un tuple à la mode aster
-                    
                     listeValeurs.append(v)
                     indice = indice + 1
 
-              else:  # on n'attend pas un complexe
-                 listeValeurs.append(v)
-                 indice=indice+1
+           else:  # on n'attend pas un complexe
+             listeValeurs=valeurBrute.split(',')
+
         elif type(valeur) == types.StringType:
              listeValeurs=valeur.split(',')
         else:
index 86d3d3f75d01e6a32021b5f79556bdc41893c2c2..005d2289eab72162e202b848cb22f481969e49fe 100644 (file)
@@ -33,46 +33,71 @@ class MyTabview:
        self.editors = []
        self.dict_editors={}
        self.untitledCount = 0
+       self.doubles = {}
 
        self.gridLayout = QGridLayout(self.appliEficas.centralWidget())
        self.myQtab = QTabWidget(self.appliEficas.centralWidget())
        self.gridLayout.addWidget(self.myQtab)
-       #self.connect(tw, SIGNAL('currentChanged(QWidget*)'), self.handleCurrentChanged)
         
 
    def handleOpen(self,fichier=None,patron=0,units=None):
-       print "passage dans handleOpen"
        if fichier is None:
             fichier = QFileDialog.getOpenFileName(self.appliEficas,
                         self.appliEficas.trUtf8('Ouvrir Fichier'),
                         self.getOpenStartDir(),
                         self.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)'))
             if fichier.isNull(): return
-
        from utilitaires import normabspath
        fichier = normabspath(unicode(fichier))
        maPage=self.getEditor( fichier)
 
-   def handleClose(self):
-       print "passage dans Close"
+   def handleClose(self,doitSauverRecent = 1):
+       print "passage dans handleClose"
+       print self.dict_editors
+       if doitSauverRecent : self.appliEficas.sauveRecents()
+       index=self.myQtab.currentIndex()
+       if index < 0 : return
+       self.checkDirty(self.dict_editors[index])
+       index=self.myQtab.currentIndex()
+       while index < len(self.dict_editors) -1 :
+             self.dict_editors[index]=self.dict_editors[index+1]
+             index = index + 1
+       del self.dict_editors[len (self.dict_editors) -1]
+       try :
+           del self.doubles[self.dict_editors[index]]
+       except :
+           pass
+       print self.dict_editors
+       self.myQtab.removeTab(index)
+       
 
    def handleCloseAll(self):
-       print "passage dans CloseAll"
-
-   def handleNewView(self):
-       print "passage dans handleNew"
-
+       self.appliEficas.sauveRecents()
+       #print "passage dans CloseAll"
+       while len(self.dict_editors) > 0 :
+             self.myQtab.setCurrentIndex(0)
+             self.handleClose(0)
+        
    def handleEditCopy(self):
        print "passage dans handleEditCopy"
+       index=self.myQtab.currentIndex()
+       editor=self.dict_editors[index]
+       editor.handleEditCopy()
 
    def handleEditCut(self):
        print "passage dans handleEditCut"
+       index=self.myQtab.currentIndex()
+       editor=self.dict_editors[index]
+       editor.handleEditCut()
 
    def handleEditPaste(self):
        print "passage dans handleEditPaste"
+       index=self.myQtab.currentIndex()
+       editor=self.dict_editors[index]
+       editor.handleEditPaste()
 
    def newEditor(self,include=0):
-       print "passage dans newEditor"
+       #print "passage dans newEditor"
        maPage=self.getEditor()
 
    def newIncludeEditor(self):
@@ -94,10 +119,32 @@ class MyTabview:
        self.dict_editors[index].viewJdcPy()
 
    def saveCurrentEditor(self):
-       print "passage dans CurrentEditor"
+       index=self.myQtab.currentIndex()
+       if index < 0 : return
+       editor=self.dict_editors[index]
+       if editor in self.doubles.keys() :
+           QMessageBox.warning(
+                     None,
+                     self.appliEficas.trUtf8("Fichier Duplique"),
+                     self.appliEficas.trUtf8("Le fichier ne sera pas sauvegarde."),
+                     self.appliEficas.trUtf8("&Annuler"))
+           return
+       ok, newName = editor.saveFile()
+       if ok :
+           fileName=os.path.basename(unicode(newName))
+           self.myQtab.setTabText(index,fileName)
 
    def saveAsCurrentEditor(self):
-       print "passage dans AsCurrentEditor"
+       index=self.myQtab.currentIndex()
+       editor=self.dict_editors[index]
+       oldName=editor.fichier
+       ok,newName = editor.saveFileAs()
+       if ok :
+           fileName=os.path.basename(unicode(newName))
+           self.myQtab.setTabText(index,fileName)
+       if editor in self.doubles.keys():
+          if oldName != newName :
+             del self.doubles[editor]
 
 
    def getEditor(self,fichier = None,jdc = None, units = None):
@@ -115,26 +162,18 @@ class MyTabview:
                         self.appliEficas.trUtf8("&Duplication"),
                         self.appliEficas.trUtf8("&Abort"))
               if abort: break
+              double=editor
        else :
             from editor import JDCEditor
             editor = JDCEditor(fichier, jdc, self.myQtab,units=units,appli=self.appliEficas)
+            if double != None :
+               self.doubles[editor]=double
             if editor.jdc: # le fichier est bien un jdc
                 self.editors.append(editor)
-                #self.connect(editor, SIGNAL('modificationStatusChanged'), self.handleModificationStatusChanged)
-                #self.connect(editor, SIGNAL('cursorChanged'), self.handleCursorChanged)
-                #self.connect(editor, SIGNAL('editorSaved'), self.handleEditorSaved)
-                #self.connect(editor, SIGNAL('breakpointToggled'), self.handleBreakpointToggled)
-                #self.connect(editor, SIGNAL('bookmarkToggled'), self.handleBookmarkToggled)
-                #self.connect(editor, SIGNAL('syntaxerrorToggled'), self.handleSyntaxErrorToggled)
-                #self.handleEditorOpened()
-                #self.emit(SIGNAL('editorOpened'), (fichier,))
                 newWin = 1
             else:
                 editor.closeIt()
 
-       #hauteur=self.appliEficas.centralWidget().height()
-       #argeur=self.appliEficas.centralWidget().width()
-       #self.myQtab.setGeometry(0,0,hauteur,largeur)
        if newWin:
             self.addView(editor, fichier)
        elif editor.jdc:
@@ -165,3 +204,45 @@ class MyTabview:
             return userDir
         except :
             return ""
+
+
+   def checkDirty(self, editor):
+        """
+        Private method to check dirty status and open a message window.
+        
+        @param editor editor window to check
+        @return flag indicating successful reset of the dirty flag (boolean)
+        """        
+     
+        print "checkDirty"
+        if (editor.modified) and (editor in self.doubles.keys()) :
+            res = QMessageBox.warning(
+                     None,
+                     self.appliEficas.trUtf8("Fichier Duplique"),
+                     self.appliEficas.trUtf8("Le fichier ne sera pas sauvegarde."),
+                     self.appliEficas.trUtf8("&Quitter"), 
+                     self.appliEficas.trUtf8("&Annuler"))
+            if res == 0 : return 1
+            return 0
+        if editor.modified:
+            fn = editor.getFileName()
+            if fn is None:
+                fn = self.appliEficas.trUtf8('Noname')
+            res = QMessageBox.warning(self.appliEficas, 
+                self.appliEficas.trUtf8("Fichier Modifie"),
+                self.appliEficas.trUtf8("Le fichier <b>%1</b> n a pas ete sauvegarde.")
+                    .arg(fn),
+                self.appliEficas.trUtf8("&Sauvegarder"),
+                self.appliEficas.trUtf8("&Quitter "),
+                self.appliEficas.trUtf8("&Annuler"), 0, 2)
+            if res == 0:
+                (ok, newName) = editor.saveFile()
+                if ok:
+                    fileName=os.path.basename(unicode(newName))
+                    index=self.myQtab.currentIndex()
+                    self.myQtab.setTabText(index,fileName)
+                return ok
+            elif res == 2:
+                return  0
+        return 1
+