]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
etat provisoire pour sauvegarde avant vacances. non stable
authorpascale.noyret <pascale.noyret@edf.fr>
Wed, 8 Apr 2015 13:29:57 +0000 (15:29 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Wed, 8 Apr 2015 13:29:57 +0000 (15:29 +0200)
31 files changed:
Extensions/CreeTraductions/eficas.pro
Ihm/I_MCSIMP.py
Ihm/I_OBJECT.py
InterfaceQT4/browser.py
InterfaceQT4/composimp.py
InterfaceQT4/editor.py
InterfaceQT4/feuille.py
InterfaceQT4/gereIcones.py
InterfaceQT4/gereListe.py
InterfaceQT4/getVersion.py
InterfaceQT4/groupe.py
InterfaceQT4/monChoixCommande.py
InterfaceQT4/monWidgetCommande.py
InterfaceQT4/monWidgetCommentaire.py
InterfaceQT4/monWidgetFact.py
InterfaceQT4/monWidgetFactPlie.py
InterfaceQT4/monWidgetInfo.py [new file with mode: 0644]
InterfaceQT4/monWidgetOptionnel.py
InterfaceQT4/monWidgetPlusieursBase.py
InterfaceQT4/monWidgetRadioButton.py
InterfaceQT4/monWidgetSimpBase.py
Noyau/N_MCCOMPO.py
Noyau/N_PROC.py
Telemac/Telemac_Cata.py
UiQT4/desParam.ui [new file with mode: 0644]
UiQT4/desWidgetFactPlie.ui
UiQT4/desWidgetInformationV1.ui [new file with mode: 0644]
UiQT4/desWidgetPlusieursBase.ui
UiQT4/desWidgetSimpTxt.ui
UiQT4/desWidgetVide.ui
generator/generator_python.py

index cc89b79b9f53bc5522430ce53cb12a096e48799a..8367830cc3a15b9bc5a65864683b02fde6bacff6 100644 (file)
@@ -212,10 +212,10 @@ FORMS=    ../../UiQT4/aideQT.ui \
           ../../UiQT4/desWidgetSimpBool.ui \
           ../../UiQT4/desWidgetSimpComplexe.ui \
           ../../UiQT4/desWidgetSimpFichier.ui \
-          ../../UiQT4/desWidgetSimpTuple.ui \
           ../../UiQT4/desWidgetSimpTxt.ui \
           ../../UiQT4/desWidgetTuple2.ui \
           ../../UiQT4/desWidgetTuple3.ui \
+          ../../UiQT4/desVisu.ui \
           ../../UiQT4/myMain.ui 
 
 TRANSLATIONS = ../../UiQT4/eficas_fr.ts ../../UiQT4/eficas_en.ts
index 01fe42a39e2c589adea073eaa571a89184ed5ab0..1c6c87bfa1c91b3f04b95a697eebc957485af369 100644 (file)
@@ -230,7 +230,11 @@ class MCSIMP(I_OBJECT.OBJECT):
     return self.definition.statut=='o'
 
   def isImmuable(self):
-    return self.definition.statut=='i'
+    return self.definition.homo=='constant'
+
+  def isInformation(self):
+    return self.definition.homo=='information'
+
 
 
   def valid_val(self,valeur):
@@ -604,7 +608,6 @@ class MCSIMP(I_OBJECT.OBJECT):
       return valid,comment
 
   def valideMatrice(self,cr):
-       print "jjjjjjjjjjjjjjjj"
        #Attention, la matrice contient comme dernier tuple l ordre des variables
        if self.monType.methodeCalculTaille != None :
            apply (MCSIMP.__dict__[self.monType.methodeCalculTaille],(self,))
index 9a37fb80bc141253f33fc386b976be1b5a2f1d3f..6dd26a6446d64fde80c757fbbcd8cce63f707606 100644 (file)
@@ -124,9 +124,11 @@ class OBJECT:
          Retourne la chaine d'aide contenue dans le catalogue
          en tenant compte de la langue
      """
-     try :
+     try:
+     #if 1 :
         return getattr(self.definition,self.jdc.lang)
      except:
+     #else:
         try :
             return getattr(self.definition,"fr")
         except :
index d9a8efb49fce2041bf87ef45dfa65edb3b7c157d..2938b9670f13c8ae5b15a29e52afdb06eeee8765 100644 (file)
@@ -22,6 +22,7 @@ import string,re
 import types,sys,os
 import traceback
 import typeNode
+import pdb
 from PyQt4 import *
 from PyQt4.QtGui  import *
 from PyQt4.QtCore import *
@@ -68,8 +69,10 @@ class JDCTree( QTreeWidget ):
         if self.racine.children !=[] :  
            if self.editor.afficheCommandesPliees : self.racine.children[0].plieToutEtReaffiche()
            else : self.racine.children[0].deplieToutEtReaffiche()
+           self.racine.children[0].fenetre.donnePremier()
         else : self.racine.affichePanneau()
-
+        #PNPNPN
+        #pdb.set_trace()
 
     def contextMenuEvent(self,event) :
         print "contextMenuEvent"
@@ -97,22 +100,18 @@ class JDCTree( QTreeWidget ):
             
 
     def handleCollapsedItem(self,item):
-        print "dans CollapsedItem", self.inhibeExpand  
+        #print "dans CollapsedItem", self.inhibeExpand  
         if self.inhibeExpand == True : return
-        #print "apres if"
-        #print "item = ", item, item.item.get_nom()
-        #itemParent=item
-        #while not (hasattr (itemParent,'getPanel2')) : 
-        #   print "While itemParent = ", itemParent, itemParent.item.get_nom()
-        #   print itemParent.plie
-        #   if itemParent.plie==True : itemParent.setPlie()
-        #   itemParent=itemParent.treeParent 
-        #if self.tree.node_selected != self : 
-        #     item.setExpanded(False)
-        #     return
-        if item.fenetre != self.editor.fenetreCentraleAffichee : 
-           item.setPlie()
-        #print "apres 2ndif"
+        # On traite le cas de l item non selectionne
+        itemParent=item
+        while not (hasattr (itemParent,'getPanel2')) : 
+           itemParent=itemParent.treeParent 
+        if self.tree.node_selected != itemParent : 
+             item.setExpanded(False)
+             return
+
+        itemParent=item
+        item.setPlie()
         item.plieToutEtReaffiche()
 
     def handleExpandedItem(self,item):
@@ -147,7 +146,7 @@ class JDCTree( QTreeWidget ):
             #print self.editor.afficheCommandesPliees
             if self.editor.afficheCommandesPliees : itemParent.plieToutEtReaffiche()
             else :                                  itemParent.affichePanneau()
-        if itemParent!=item : item.fenetre.rendVisible()
+        if itemParent!=item and item.fenetre != None: item.fenetre.rendVisible()
         #try :
         if 1:
            fr = item.item.get_fr()
@@ -204,7 +203,9 @@ class JDCNode(QTreeWidgetItem):
 
         ajoutAuParentduNoeud=0
         from InterfaceQT4 import compobloc
-        while (isinstance(self.treeParent,compobloc.Node)) :
+        from InterfaceQT4 import compomclist
+        while (isinstance(self.treeParent,compobloc.Node) or ( isinstance(self.treeParent,compomclist.Node) and self.treeParent.item.isMCList())) : 
+        #while (isinstance(self.treeParent,compobloc.Node)) :
               self.treeParent=self.treeParent.treeParent
               ajoutAuParentduNoeud=1
         if ajoutAuParentduNoeud :
@@ -212,7 +213,8 @@ class JDCNode(QTreeWidgetItem):
            self.treeParent.childrenIssusDesBlocs.append(self)
         while (isinstance(self.treeParent,compobloc.Node)) : self.treeParent=self.treeParent.treeParent
 
-        if isinstance(self,compobloc.Node) : 
+        #if isinstance(self,compobloc.Node) : 
+        if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) : 
            QTreeWidgetItem.__init__(self,None,mesColonnes)
         else :
            QTreeWidgetItem.__init__(self,self.treeParent,mesColonnes)
@@ -236,7 +238,9 @@ class JDCNode(QTreeWidgetItem):
         self.state=""
         self.fenetre=None
         try :
-          if self.item.getObject().isBLOC() : self.setExpanded(True) 
+          if self.item.getObject().isBLOC() : 
+                self.setExpanded(True) 
+                self.plie=False
         except :
           pass
 
@@ -248,19 +252,18 @@ class JDCNode(QTreeWidgetItem):
         
         listeExpanded=[]
         for item in self.childrenComplete :
-            #try :
-            #  print "              je detruis ",  item.item.GetLabelText() ," parent : ", item.treeParent.item.GetLabelText()
-            #except :
-            #  print "mot clef fact"
-            if item.isExpanded():
-               if self.childrenComplete.index(item) < posInsertion :
-                  listeExpanded.append(self.childrenComplete.index(item))
-               else :
-                  listeExpanded.append( self.childrenComplete.index(item) +1)
+            print dir(item)
+            #if item.isExpanded():
+            #   if self.childrenComplete.index(item) < posInsertion :
+            #      listeExpanded.append(self.childrenComplete.index(item))
+            #      print dir(item.item )
+            #   else :
+            #      listeExpanded.append( self.childrenComplete.index(item) +1)
             self.detruit_les_noeuds_issus_de_blocs(item)
             parent=item.treeParent
             parent.removeChild(item)
 
+        #print listeExpanded
         self.children = []
         self.childrenComplete = []
         sublist = self.item._GetSubList()
@@ -269,13 +272,15 @@ class JDCNode(QTreeWidgetItem):
             nouvelItem=item.itemNode(self,item)
             self.children.append(nouvelItem)
             #print "         J ajoute ", nouvelItem ,nouvelItem.item.GetLabelText(),"dans" ,self.item.GetLabelText()
+            #print item
             #if ind in listeExpanded : nouvelItem.setExpanded(1)
  
             #if ind in listeExpanded : print "plie=0"
             #else                  : print "plie=1"
             #if ind in listeExpanded : nouvelItem.plie=0
             #else                  : nouvelItem.plie=1
-            ind=ind+1
+            #ind=ind+1
+
         #print "*********** fin build_children ",self.item, self.item.GetLabelText()
         
     def chercheNoeudCorrespondant(self,objSimp):
@@ -285,7 +290,7 @@ class JDCNode(QTreeWidgetItem):
         return None
 
     def affichePanneau(self) :
-        print "dans affichePanneau appel getPanel2", self.item.GetLabelText()
+        #print "dans affichePanneau appel getPanel2", self.item.GetLabelText()
         if self.item.isactif(): 
            itemParent=self
            while not (hasattr (itemParent,'getPanel2')) : 
@@ -299,8 +304,8 @@ class JDCNode(QTreeWidgetItem):
             self.fenetre = PanelInactif(self,self.editor)
          
         self.editor.widgetCentraleLayout.addWidget(self.fenetre)
-        print "widgetCentraleLayout = ", self.editor.widgetCentraleLayout
-        print "nouvelle fenetre ", self.fenetre, " associee a ", self
+        #print "widgetCentraleLayout = ", self.editor.widgetCentraleLayout
+        #print "nouvelle fenetre ", self.fenetre, " associee a ", self
 
         self.editor.anciennefenetre=self.editor.fenetreCentraleAffichee
         #print "ancienne fenetre ", self.editor.anciennefenetre
@@ -389,6 +394,7 @@ class JDCNode(QTreeWidgetItem):
         Rend le noeud courant (self) selectionne et deselectionne
         tous les autres
         """        
+        print "je suis sur select"
         for item in self.tree.selectedItems() :
             item.setSelected(0)
         self.setSelected( True )    
@@ -422,7 +428,7 @@ class JDCNode(QTreeWidgetItem):
            ou en position intermediaire.
            Si pos vaut None, on le place a la position du catalogue.
         """
-        print "************** append_child ",self.item.GetLabelText(), plier
+        #print "************** append_child ",self.item.GetLabelText(), plier
         self.editor.init_modif()
         if pos == 'first':
             index = 0
@@ -498,7 +504,7 @@ class JDCNode(QTreeWidgetItem):
            toselect.affichePanneau()
         else :
            if self.treeParent.fenetre== None : return
-           print "J appelle reaffiche de browser apres delete"
+           #print "J appelle reaffiche de browser apres delete"
            self.treeParent.fenetre.reaffiche(toselect)
 
     def deleteMultiple(self,liste=()):
@@ -556,7 +562,7 @@ class JDCNode(QTreeWidgetItem):
         #print "onAdd pour ", self.item.nom
         self.editor.init_modif()
         self.update_nodes()
-        print "dans onAdd" ,self.item 
+        #print "dans onAdd" ,self.item 
         # PN -- non necessaire si item=jdc
         if hasattr(self.item,'jdc'): self.item.jdc.aReafficher=True
  
@@ -698,7 +704,7 @@ class JDCNode(QTreeWidgetItem):
 
 
     def plieToutEtReaffiche(self):
-        print "je suis dans plieToutEtReaffiche", self.item.get_nom()
+        #print "je suis dans plieToutEtReaffiche", self.item.get_nom()
         self.editor.deplier = False
         for item in self.children :
             item.setPlie()
@@ -712,7 +718,7 @@ class JDCNode(QTreeWidgetItem):
 
     def setPlie(self):
         #print "je mets inhibeExpand a true dans setPlie"
-        print "je suis dans plieTout", self.item.get_nom()
+        #print "je suis dans plieTout", self.item.get_nom()
         self.tree.inhibeExpand=True
         self.tree.collapseItem(self)
         self.setPlieChildren()
@@ -732,21 +738,31 @@ class JDCNode(QTreeWidgetItem):
         self.plie=True
         for c in self.children :
             c.setPlieChildren()
-            print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
+            #print "dans setPlieChildren appartientAUnNoeudPlie=True ", c, c.item.GetLabelText()[0]
             c.appartientAUnNoeudPlie=True
             c.plie=True
-            c.setExpanded(True)
+            c.setExpanded(False)
 
-        # Pour les blocs
+        # Pour les blocs et les motcles list
         # on affiche un niveau de plus
         from InterfaceQT4 import compobloc
-        if isinstance(self,compobloc.Node) : 
+        from InterfaceQT4 import compomclist
+        if (isinstance(self,compobloc.Node) or ( isinstance(self,compomclist.Node) and self.item.isMCList())) : 
             niveauPere=self.treeParent
-            while (isinstance(niveauPere,compobloc.Node)):
-               niveauPere=self.niveauPere.treeParent
+            while (isinstance(niveauPere,compobloc.Node) or (isinstance(niveauPere,compomclist.Node) and niveauPere.item.isMCList())) : 
+               niveauPere=niveauPere.treeParent
             for c in self.children :
                 c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
-            
+                c.setExpanded(False)
+
+        # on affiche un niveau de plus
+        #if isinstance(self,compomclist.Node)  : 
+        #if isinstance(self,compobloc.Node)  : 
+        #    niveauPere=self.treeParent
+        #    while (isinstance(niveauPere,compobloc.Node)):
+        #       niveauPere=niveauPere.treeParent
+        #    for c in self.children :
+        #        c.appartientAUnNoeudPlie=niveauPere.appartientAUnNoeudPlie
 
     def setDeplie(self):
         #print "je mets inhibeExpand a true dans setDeplie"
@@ -755,13 +771,13 @@ class JDCNode(QTreeWidgetItem):
         self.tree.expandItem(self)
         self.setDeplieChildren()
         self.tree.inhibeExpand=False
-        print "je mets inhibeExpand a false dans setDePlie"
+        #print "je mets inhibeExpand a false dans setDePlie"
 
     def setDeplieChildren(self):
-        print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
+        #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", self.item.GetLabelText()
         for c in self.children :
             c.setDeplieChildren()
-            print "dans setDeplieChildren appartientAUnNoeudPlie=False ", c.item.GetLabelText()
+            #print "dans setDeplieChildren appartientAUnNoeudPlie=False ", c.item.GetLabelText()
             c.appartientAUnNoeudPlie=False
             c.setExpanded(True)
             c.plie=False
index 0cc07f7a59132421483a654d14ff5c2718c11c59..88876b2ddbab357e2a8dec3aa5065776e83f08d8 100644 (file)
@@ -119,6 +119,14 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal):
         monNom=self.item.nom
         maCommande=commande
 
+        # label informatif 
+        if monObjet.isInformation():
+          from monWidgetInfo import MonWidgetInfo
+          widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande)
+          self.widget=widget
+          return widget
+
+
       # Attention l ordre des if est important
       # Attention il faut gerer les blocs et les facteurs 
       # a gerer comme dans composimp
index f37b1fa2d99d78c987d71bf0e4f7be98f523b5f8..2104e6baed5d7b48dce87619a633c252b94fd987 100644 (file)
@@ -82,6 +82,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
            self.widgetTree.close()
            self.widgetTree=None
            self.appliEficas.resize(1440,self.appliEficas.height())
+           self.affiche_alpha=0
         else :
            self.appliEficas.resize(2000,self.appliEficas.height())
 
@@ -190,7 +191,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
                 if (not self.jdc.isvalid()) and (not self.nouveau) and (self.appliEficas.ssIhm == False):
                     self.viewJdcRapport()
  
-        if self.code=="TELEMAC" : print "kkkkkkkk"
+       # if self.code=="TELEMAC" : print "kkkkkkkk"
 
 
         if jdc_item:
@@ -1199,7 +1200,7 @@ class JDCEditor(Ui_baseWidget,QtGui.QWidget):
     #---------------------------#
     def _newTELEMAC(self):
     #---------------------------#
-        texte="INITIALIZATION();TIDE_PARAMETERS();INITIAL_STATE();NUMERICAL_PARAMETERS();PHYSICAL_PARAMETERS()"
+        texte="INITIALIZATION();INITIAL_STATE();BOUNDARY_CONDITIONS();NUMERICAL_PARAMETERS();PHYSICAL_PARAMETERS()"
         return texte
 
     #---------------------------#
index 8f90b305adbdecc3f788c31ca4ed42897265ccb9..f033eac41109d9dc16f85caffd6f4a3f124b827a 100644 (file)
@@ -63,8 +63,9 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
        self.setValeurs()
        self.setNom()
        self.setValide()
-       self.setPoubelle()
-       self.setIcones()
+       self.setIconePoubelle()
+       self.setIconesFichier()
+       self.setIconesSalome()
        self.setCommentaire()
        self.setZoneInfo()
           
@@ -96,44 +97,19 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
    def setCommentaire(self):
       c  = self.debutToolTip
       if self.node.item.definition.validators : c+=self.node.item.definition.validators.aide()
+      self.aide=c
       if self.objSimp.get_fr() != None and self.objSimp.get_fr() != "":
           c2 = '<html><head/><body><p>'+c+str(self.objSimp.get_fr())+"</p></body></html>"
           self.label.setToolTip(c2)
+          self.aide=str(self.objSimp.get_fr())+" "+c
       else :
          c+=self.finCommentaire()
          if c != "" and c != None :
+            self.aide=c
             #c=str('<html><head/><body><p><span style=" font-size:8pt; ">')+c+"</span></p></body></html>"
             c=str('<html><head/><body><p>')+c+"</p></body></html>"
             self.label.setToolTip(c)
 
-   def setIcones(self):
-
-       mctype = self.monSimpDef.type[0]
-       # selon 
-       if ( hasattr(self,"BFichier")): 
-          if mctype == "Repertoire":
-             self.BRepertoire=self.BFichier
-             self.connect(self.BRepertoire,SIGNAL("clicked()"),self.BRepertoirePressed)
-          else :
-            #icon = QIcon(self.repIcon+"/visuFichier.png")
-             self.connect(self.BFichier,SIGNAL("clicked()"),self.BFichierPressed)
-             self.connect(self.BVisuFichier,SIGNAL("clicked()"),self.BFichierVisu)
-          return
-
-       if ( hasattr(self,"BSalome")): 
-          enable_salome_selection = self.editor.salome and \
-              (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or
-               (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection))
-          if  enable_salome_selection:
-              self.connect(self.BSalome,SIGNAL("pressed()"),self.BSalomePressed)
-
-              if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome):
-                self.BView2D.close()
-              else :
-                self.connect(self.BView2D,SIGNAL("clicked()"),self.BView2DPressed)
-          else:
-              self.BSalome.close()
-              self.BView2D.close()
 
 
    def showEvent(self, event):
@@ -144,10 +120,9 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
       QWidget.showEvent(self,event)
 
    def aideALaSaisie(self):
-      return
       mc = self.node.item.get_definition()
       mctype = mc.type[0]
-      d_aide = { 'TXM' : tr(u"chaine de caracteres"),
+      d_aides = { 'TXM' : tr(u"chaine de caracteres"),
                   'R'   : tr("reel"),
                   'I'   : tr("entier"),
                   'C'   : tr("complexe"),
@@ -155,7 +130,8 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
                   'Fichier' : tr(u'fichier'),
                   'FichierNoAbs' : tr(u'fichier existant'),
                   'Repertoire' : tr(u'repertoire')}
-      if mc.min == mc.max: commentaire=tr("Entrez ")+str(mc.min)
+
+      if mc.min == mc.max: commentaire=tr("Entrez ")+" "+str(mc.min)+" "
       else :               commentaire=tr("Entrez entre ")+str(mc.min)+tr(" et ")+str(mc.max)
 
       if type(mctype) == types.ClassType: ctype = getattr(mctype, 'help_message', tr("Type de base inconnu"))
@@ -163,7 +139,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
       if ctype == tr("Type de base inconnu") and "Tuple" in str(mctype): ctype=str(mctype)
 
       commentaire+=ctype
-      if self.max!=1 : commentaire+="s" 
+      if mc.max!=1 : commentaire+="s" 
       return commentaire
 
    def setZoneInfo(self):
@@ -174,10 +150,11 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
       #self.editor.affiche_infos(info)
 
    def reaffiche(self):
-      print "dans reaffiche de feuille", self.nom
+      #print "dans reaffiche de feuille", self.nom
       if self.editor.jdc.aReafficher==True :
-         print " j appelle le reaffiche de parentQt"
+         #print " j appelle le reaffiche de parentQt"
          self.parentQt.reaffiche()
+
          #PN PN PN pas satisfaisant
          #nodeAVoir=self.parentQt.node.chercheNoeudCorrespondant(self.objSimp)
          #print nodeAVoir.fenetre
@@ -185,4 +162,15 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel):
          #if nodeAVoir.fenetre.isVisible() : return
          #self.editor.fenetreCentraleAffichee.rendVisibleNoeud(nodeAVoir)
          #nodeAVoir.fenetre.setFocus()
+         # return  # on est bien postionne
+      if self.objSimp.isvalid():
+         self.editor.fenetreCentraleAffichee.afficheSuivant(self.AAfficher)
+      else :
+         print "dans le else de reaffiche"
+         self.AAfficher.setFocus(7)
+
 
+   def traiteClicSurLabel(self):
+       #print self.aide 
+       self.aide+="\n"+self.aideALaSaisie()
+       self.editor.affiche_infos(self.aide)
index 4d3285e15b4389d3a18731ed07eb8fe2af3a1f96..718626b3fd772f38476d5ca50385c9c12c18ed01 100644 (file)
@@ -69,16 +69,50 @@ class FacultatifOuOptionnel:
           QMessageBox.warning( self,tr( "Aide Indisponible"),tr( "l'aide n est pas installee "))
 
 
-  def setPoubelle(self):
+  def setIconePoubelle(self):
       if not(hasattr(self,"RBPoubelle")):return
+      icon1 = QtGui.QIcon()
+      repIcon=os.path.join(os.path.abspath(os.path.dirname(__file__)),'../Editeur/icons')
       if self.node.item.object.isoblig() : 
-         icon1 = QtGui.QIcon()
-         icon1.addPixmap(QtGui.QPixmap("/home/A96028/Install_EficasV1/KarineEficas/Editeur/icons/deleteRondVide.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+         icon1.addPixmap(QtGui.QPixmap(repIcon+"/deleteRondVide.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
          self.RBPoubelle.setIcon(icon1)
          return
+      icon1.addPixmap(QtGui.QPixmap(repIcon+"/deleteRond.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
       self.RBPoubelle.show()
       self.connect(self.RBPoubelle,SIGNAL("clicked()"),self.aDetruire)
 
+  def setIconesSalome(self):
+       if not (hasattr(self,"RBSalome")): return
+       from Accas import SalomeEntry
+       mc = self.node.item.get_definition()
+       mctype = mc.type[0]
+       enable_salome_selection = self.editor.salome and \
+         (('grma' in repr(mctype)) or ('grno' in repr(mctype)) or ('SalomeEntry' in repr(mctype)) or \
+         (hasattr(mctype, "enable_salome_selection") and mctype.enable_salome_selection))
+       if enable_salome_selection:
+          self.connect(self.RBSalome,SIGNAL("pressed()"),self.BSalomePressed)
+          if not(('grma' in repr(mctype)) or ('grno' in repr(mctype))) or not(self.editor.salome): self.BView2D.close()
+          else : self.connect(self.RBSalomeVue,SIGNAL("clicked()"),self.BView2DPressed)
+       else:
+          self.RBSalome.close()
+          self.RBSalomeVue.close()
+
+     
+  def setIconesFichier(self):
+       if not ( hasattr(self,"BFichier")): return
+       mc = self.node.item.get_definition()
+       mctype = mc.type[0]
+       if mctype == "Repertoire":
+          self.BRepertoire=self.BFichier
+          self.connect(self.BRepertoire,SIGNAL("clicked()"),self.BRepertoirePressed)
+          self.BVisuFichier.close()
+       else :
+          self.connect(self.BFichier,SIGNAL("clicked()"),self.BFichierPressed)
+          self.connect(self.BVisuFichier,SIGNAL("clicked()"),self.BFichierVisu)
+
+
+
+
   def setRun(self):
       if hasattr(self.editor.appliEficas, 'mesScripts'):
          if self.tree.currentItem().item.get_nom() in self.appliEficas.mesScripts.dict_commandes.keys() :
@@ -101,10 +135,18 @@ class FacultatifOuOptionnel:
          icon=QIcon(self.repIcon+"/ast-red-ball.png")
       self.RBValide.setIcon(icon)
 
+  # il faut chercher la bonne fenetre
   def rendVisible(self):
       print "je passe par rendVisible de FacultatifOuOptionnel"
-      self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self)
-      self.setFocus()
+      print self
+      print self.node.fenetre
+      print "return pour etre sure"
+      return
+      #PNPN
+      newNode=self.node.treeParent.chercheNoeudCorrespondant(self.node.item.object)
+      print newNode
+      self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(newNode.fenetre)
+      #newNode.fenetre.setFocus()
 
 
 class ContientIcones:
index 3c13529305514054930638117c947bd1478329f2..3a846023d1ecc2fe9e45f09c4d82369384e02ec1 100644 (file)
@@ -39,8 +39,10 @@ class LECustom(QLineEdit):
         self.num=i
 
  def focusInEvent(self,event):
+     print "dans focusInEvent de LECustom"
      self.parentQt.LineEditEnCours=self
      self.parentQt.NumLineEditEnCours=self.num
+     QLineEdit.focusInEvent(self,event)
 
 
 
@@ -58,8 +60,6 @@ class GereListe:
        self.connect(self.RBMoins,SIGNAL("clicked()"),self.moinsPushed)
        self.connect(self.RBPlus,SIGNAL("clicked()"),self.plusPushed)
        self.connect(self.RBVoisListe,SIGNAL("clicked()"),self.voisListePushed)
-       self.connect(self.RBSalome,SIGNAL("clicked()"),self.salomePushed)
-       self.connect(self.RBSalomeVue,SIGNAL("clicked()"),self.salomeVuePushed)
 
    def hautPushed(self):
        if self.NumLineEditEnCours == 1 : return
@@ -140,9 +140,6 @@ class GereListe:
        f=ViewText(self,self.editor,entete,texteValeurs[0:-2])
        f.show()
 
-   def salomePushed(self):
-       print "salomePushed"
-
-   def salomeVuePushed(self):
-       print "salomeVuePushed"
 
+   def selectInFile(self):
+       print "selectInFile"
index ae0b7b1ecf0a094df4c7799ed75086050a465449..65671a5b49c402970026ccb937c7115d253ecac0 100644 (file)
@@ -3,7 +3,7 @@
 
 __version = {
     'major': 7,
-    'minor': 3
+    'minor': 6
     }
 
 def getEficasVersion():
index 4823604e176c88cc9b3f60292ebfb70a44df626f..b92d03c5116d5a0b6003ea196a9456e0658ebd31 100644 (file)
@@ -49,7 +49,7 @@ class Groupe(QtGui.QWidget,FacultatifOuOptionnel):
       self.appliEficas=self.editor.appliEficas
       self.repIcon=self.appliEficas.repIcon
       self.jdc=self.node.item.get_jdc()
-      self.setPoubelle()
+      self.setIconePoubelle()
       self.setRun()
       self.setValide()
       self.setReglesEtAide()
@@ -71,16 +71,16 @@ class Groupe(QtGui.QWidget,FacultatifOuOptionnel):
       
 
   def afficheMots(self):
+      print "ds afficheMots ",self.node.item.nom
       for node in self.node.children:
-           print "ds afficheMots ",node," " ,node.item.nom, " "
-           print "ds afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie
+           print "afficheMots ",node," " ,node.item.nom, " ",node.plie ," ", node.appartientAUnNoeudPlie
            # non return mais  continue car il faut tenir compte des blocs
            if node.appartientAUnNoeudPlie==True : continue
-           print "je suis apres le if pour ",node.item.nom
+           #print "je suis apres le if pour ",node.item.nom
            widget=node.getPanelGroupe(self,self.maCommande)
            #print "widget pour ", node.item.nom, widget
-           #print "fin pour " , node.item.nom
            self.listeFocus.append(node.fenetre)
+      print "fin pour " , self.node.item.nom
 
        
   def calculOptionnel(self):
@@ -178,3 +178,7 @@ class Groupe(QtGui.QWidget,FacultatifOuOptionnel):
       self.node.setDeplie()
       self.reaffiche(self.node) 
 
+  def traiteClicSurLabel(self):
+      self.afficheOptionnel()
+
+
index af68c8af95acd6910ad28952c5c95550ce3f6723..fb803fd8379a4f2aa77c7c67a8936cf0609dcb28 100644 (file)
@@ -60,6 +60,7 @@ class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget):
       self.name=None
       self.AjouteRadioButton()
       self.connect(self.LEFiltre,SIGNAL("returnPressed()"),self.AjouteRadioButton)
+      if self.editor.affiche_alpha==0 : self.afficheGroupe()
 
   def afficheAlpha(self):
       self.affiche_alpha=1
@@ -85,9 +86,13 @@ class MonChoixCommande(Ui_ChoixCommandes,QtGui.QWidget):
       nouveau.setDeplie()
       #if self.editor.afficheApresInsert==True : nouveau.plieToutEtReaffiche()
       if self.editor.afficheApresInsert == True :
-           if self.editor.affichePlie ==True:  nouveau.plieToutEtReaffiche()
+           #if self.editor.affichePlie==True:  nouveau.plieToutEtReaffiche()
+           if self.editor.afficheCommandesPliees ==True:  nouveau.plieToutEtReaffiche()
            else : nouveau.deplieToutEtReaffiche()
+           nouveau.fenetre.donnePremier()
            #nouveau.deplieToutEtReaffiche()
+      event.accept()
+      
 
   def CreeListeCommande(self,filtre):
       listeGroupes,dictGroupes=self.jdc.get_groups()
index 270620fa410ba053b45421ba8a47f04b95b0ce43..fd18d79913714928eb01d1b858ffe79cf6b94666 100644 (file)
@@ -83,19 +83,32 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
         self.monOptionnel=MonWidgetOptionnel(self)
         self.editor.widgetOptionnel=self.monOptionnel
         self.editor.splitter.addWidget(self.monOptionnel)
-      #print "dans init ", self.monOptionnel
       self.afficheOptionnel()
       #print "fin init de widget Commande"
       
 
+  def donnePremier(self):
+      #print "dans donnePremier"
+      qApp.processEvents()
+      self.listeAffichageWidget[0].setFocus(7)
+      #print self.listeAffichageWidget 
+      qApp.processEvents()
+      #print self.focusWidget()
+
+
   def focusNextPrevChild(self, next):
       # on s assure que ce n est pas un chgt de fenetre
       #print "je passe dans focusNextPrevChild"
       if self.editor.fenetreCentraleAffichee != self : return True
-      try :
-        i= self.listeAffichageWidget.index(self.focusWidget())
-      except :
-        i = -1
+      f=self.focusWidget()
+      if f not in self.listeAffichageWidget :
+         i=0
+         while not hasattr (f,'AAfficher') :
+           if f==None :i=-1; break
+           f=f.parentWidget()
+         if hasattr(f,'AAfficher') : f=f.AAfficher
+         if i != -1 : i=self.listeAffichageWidget.index(f)
+      else :i=self.listeAffichageWidget.index(f) 
       if (i==len(self.listeAffichageWidget) -1) and next and not self.inhibe: 
          self.listeAffichageWidget[1].setFocus(7)
          w=self.focusWidget()
@@ -120,6 +133,17 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
          self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
          i=i+1
       # si on boucle on perd l'ordre
+  def  afficheSuivant(self,f):
+      try :
+        i=self.listeAffichageWidget.index(f) 
+        next=i+1
+      except :
+        next=1
+      if (next==len(self.listeAffichageWidget) -1 ): next =0
+      #self.f=next
+      #QTimer.singleShot(1, self.rendVisible)
+      self.listeAffichageWidget[next].setFocus(7)
 
   def nomChange(self):
       nom = str(self.LENom.text())
@@ -141,10 +165,10 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
       self.monOptionnel.parentMC=self
       self.monOptionnel.affiche(liste)
 
-  def focusInEvent(self,event):
+  #def focusInEvent(self,event):
       #print "je mets a jour dans focusInEvent de monWidget Commande "
-      if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
-      self.afficheOptionnel()
+  #    if self.editor.code == "CARMELCND" : return #Pas de MC Optionnels pour Carmel
+  #    self.afficheOptionnel()
 
 
   def reaffiche(self,nodeAVoir=None):
@@ -178,7 +202,7 @@ class MonWidgetCommande(Ui_WidgetCommande,Groupe):
      
   def rendVisible(self):
       qApp.processEvents()
-      self.f.setFocus()
+      self.f.setFocus(7)
       self.editor.fenetreCentraleAffichee.scrollAreaCommandes.ensureWidgetVisible(self.f)
 
   def afficheCatalogue(self):
index 6618a221491ab8601d0dc5a7f7590d194eda29af..abdcf456c19c3728d71d1dd6e7183f6f7b243786 100644 (file)
@@ -40,7 +40,7 @@ class MonWidgetCommentaire(QWidget,Ui_WidgetCommentaire,FacultatifOuOptionnel):
       self.node.fenetre=self
       self.setupUi(self)
       self.editor=editor
-      self.setPoubelle()
+      self.setIconePoubelle()
       self.remplitTexte()
       if self.editor.code in ['MAP','CARMELCND'] : self.bCatalogue.close()
       else : self.connect(self.bCatalogue,SIGNAL("clicked()"), self.afficheCatalogue)
index 5f831e8107843d3bb840f435d466b0d7ad111b6d..28d17ddfb5891a64cf1682827cb3fabe6afd4308 100644 (file)
@@ -37,7 +37,7 @@ class MonWidgetFact(Ui_WidgetFact,Groupe):
       self.GroupBox.setTextInteractionFlags(Qt.TextSelectableByMouse)
       self.parentQt.commandesLayout.insertWidget(-1,self)
 
-  def focusInEvent(self,event):
-      print "je passe dans focusInEvent"
-      if self.editor.code != "CARMELCND" :self.afficheOptionnel()
+  #def focusInEvent(self,event):
+      #print "je passe dans focusInEvent"
+  #    if self.editor.code != "CARMELCND" :self.afficheOptionnel()
 
index c7a53b7257993da8ae004b3653bb9617ed8fe0f0..454b8fbbab824b46fe891a8296d1e89f21c5ee79 100644 (file)
@@ -35,3 +35,6 @@ class MonWidgetFactPlie(Ui_WidgetFactPlie,Groupe):
       self.groupBox.setText(self.obj.nom)
       self.parentQt.commandesLayout.insertWidget(-1,self)
 
+  def traiteClicSurLabel(self):
+      return
+
diff --git a/InterfaceQT4/monWidgetInfo.py b/InterfaceQT4/monWidgetInfo.py
new file mode 100644 (file)
index 0000000..402171d
--- /dev/null
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013   EDF R&D
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+# Modules Python
+import string,types,os
+
+# Modules Eficas
+from PyQt4.QtGui import *
+from PyQt4.QtCore import *
+from Extensions.i18n import tr
+
+from desWidgetInformation  import Ui_WidgetInformative 
+
+
+class MonWidgetInfo (Ui_WidgetInformative,QWidget):
+# c est juste la taille des differents widgets de base qui change
+
+  def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
+        QWidget.__init__(self,None)
+        self.setupUi(self)
+        valeur=node.item.get_valeur()
+        self.lineEditVal.setText(str(valeur))
+        parentQt.commandesLayout.insertWidget(-1,self)
+
index 510321d60ac6043cc3503b8b6df5aefbee5b36b0..eb797065c4e9053f02c576231477ae5f65e5ee24 100644 (file)
@@ -35,16 +35,23 @@ class monButtonCustom(QCheckBox):
 
    def mouseDoubleClickEvent(self, event):
       #print "dans mouseDoubleClickEvent"
-      if self not in self.monOptionnel.dicoCb.keys() : return
+      if self not in self.monOptionnel.dicoCb.keys() : 
+         event.accept()
+         return
       listeCheckedMC="+"+self.monOptionnel.dicoCb[self]
       self.monOptionnel.parentMC.ajoutMC(listeCheckedMC)
       self.setChecked(False)
+      event.accept()
+      
 
    def mousePressEvent(self, event):
       #print "dans mousePressEvent"
       self.mousePressed=True
-      if not( event.button() != Qt.RightButton)  : return
+      if not( event.button() != Qt.RightButton)  : 
+         event.accept()
+         return
       QCheckBox.mousePressEvent(self, event)
+      event.accept()
 
 
 class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
@@ -62,9 +69,11 @@ class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
      self.cb=None
      self.parentQt=parentQt
      self.connect(self.bAjoutMC,SIGNAL("clicked()"), self.ajoutMC)
+     #print "fin init de monWidgetOptionnel ", parentQt, parentQt.node.item.nom
 
      
 
+
   def affiche(self,liste):
      #print "dans Optionnel ____ affiche", liste
      self.show()
@@ -82,8 +91,8 @@ class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
 
      for cb in self.dicoCb.keys():
          #print 'je detruit', self.dicoCb[cb], cb
+         #print cb.close()
          cb.close()
-     #print self.commandesOptionnellesLayout.children()
      self.dicoCb={}
      liste.reverse()
      for mot in liste :
@@ -91,6 +100,7 @@ class MonWidgetOptionnel (QWidget,Ui_WidgetOptionnel):
          #print "j ajoute ", mot, cb
          self.dicoCb[cb]=mot
          self.commandesOptionnellesLayout.insertWidget(0,cb)
+     #print "Fin Optionnel ____ affiche", liste
 
   def CBChecked(self):
       # ordre ?
index b661744e543669475f7ea2cc7043dbe81b736698..8f8fddab6971b2a9e64e194ea831ebd0fa1618d8 100644 (file)
@@ -39,10 +39,13 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe):
 
   def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande):
         #print "MonWidgetPlusieursBase", nom
-        self.index=1
+        self.inInit=True
         self.indexDernierLabel=0
+        self.listeAffichageWidget=[]
         Feuille.__init__(self,node,monSimpDef,nom,objSimp,parentQt,commande)
         GereListe.__init__(self)
+        self.connect(self.BSelectFichier,SIGNAL("clicked()"), self.selectInFile)
+
         self.listeValeursCourantes=self.node.item.GetListeValeurs()
         if self.monSimpDef.max != "**"  and self.monSimpDef.max < 7: 
            hauteur=dicoLongueur[self.monSimpDef.max]
@@ -54,10 +57,12 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe):
            self.setMinimumHeight(hauteurMax)
         self.parentQt.commandesLayout.insertWidget(1,self)
         self.maCommande.listeAffichageWidget.append(self.lineEditVal1)
+        self.AAfficher=self.lineEditVal1
+        self.inInit=False
 
 
   def setValeurs(self):
-       #print "je passe dans SetValeur"
+       print "je passe dans SetValeur"
        self.vScrollBar = self.scrollArea.verticalScrollBar()
        self.politique=PolitiquePlusieurs(self.node,self.editor)
        # construction du min de valeur a entrer
@@ -97,15 +102,27 @@ class MonWidgetPlusieursBase (Ui_WidgetPlusieursBase,Feuille,GereListe):
       else :                              nouveauLE.setStyleSheet("background:rgb(235,235,235)")
       nouveauLE.setFrame(False)
       self.connect(nouveauLE,SIGNAL("returnPressed()"),self.changeValeur)
-      nouveauLE.setFocus()
       setattr(self,nomLineEdit,nouveauLE)
+      self.listeAffichageWidget.append(nouveauLE)
+      self.etablitOrdre()
       if valeur != None : nouveauLE.setText(str(valeur))
       # deux lignes pour que le ensureVisible fonctionne
       self.estVisible=nouveauLE
-      QTimer.singleShot(1, self.rendVisibleLigne)
+      if self.inInit==False :QTimer.singleShot(1, self.rendVisibleLigne)
+
+  def etablitOrdre(self):
+      i=0
+      while(i +1 < len(self.listeAffichageWidget)):
+         self.listeAffichageWidget[i].setFocusPolicy(Qt.StrongFocus)
+         self.setTabOrder(self.listeAffichageWidget[i],self.listeAffichageWidget[i+1])
+         i=i+1
+      # si on boucle on perd l'ordre
+
 
 
   def rendVisibleLigne(self):
+      #PNPNP
+      return
       qApp.processEvents()
       self.estVisible.setFocus()
       self.scrollArea.ensureWidgetVisible(self.estVisible,0,0)
index ae75024f92004c9f744f14c4fb0b73d3cea77b52..c8f89b1ab5b9d08ca72d20754f834a321e70e788 100644 (file)
@@ -40,6 +40,7 @@ class MonWidgetRadioButtonCommun (Feuille):
         self.determineChoix()
         self.setValeursApresBouton()
         self.parentQt.commandesLayout.insertWidget(-1,self)
+        self.AAfficher=self.radioButton_1
         self.maCommande.listeAffichageWidget.append(self.radioButton_1)
 
 
index f61c9f4f651d4967dfa5e12683a277057fcd7532..a03db34afa14c7fdd7fb1f8bbf33894d05ae4671 100644 (file)
@@ -38,14 +38,16 @@ class MonWidgetSimpBase (Ui_WidgetSimpBase,Feuille):
         self.parentQt.commandesLayout.insertWidget(-1,self)
         self.setFocusPolicy(Qt.StrongFocus)
         self.connect(self.lineEditVal,SIGNAL("returnPressed()"),self.LEValeurPressed)
+        self.AAfficher=self.lineEditVal
         self.maCommande.listeAffichageWidget.append(self.lineEditVal)
 
-  def showEvent(self, event):
-      if self.prendLeFocus==1 :
-         self.activateWindow()
-         self.lineEditVal.setFocus()
-         self.prendLeFocus=0
-      QWidget.showEvent(self,event)
+
+  #def showEvent(self, event):
+  #    if self.prendLeFocus==1 :
+  #       self.activateWindow()
+  #       self.lineEditVal.setFocus()
+  #       self.prendLeFocus=0
+  #    QWidget.showEvent(self,event)
 
   def setValeurs(self):
        self.politique=PolitiqueUnique(self.node,self.editor)
index dbc7f7276f7e10c2d76864388d1ec60a655c11fa..e4258783fed8883ecee6095a562e53b53d6d0979 100644 (file)
@@ -103,12 +103,15 @@ class MCCOMPO(N_OBJECT.OBJECT):
         # A ce stade, mc_liste ne contient que les fils de l'objet courant
         # args ne contient plus que des mots-clés qui n'ont pas été attribués car ils sont
         #      à attribuer à des blocs du niveau inférieur ou bien sont des mots-clés erronés
-        dico_valeurs = self.cree_dict_condition(mc_liste, condition=1)
         for k, v in self.definition.entites.items():
-            if v.label != 'BLOC':
-                continue
+            if v.label != 'BLOC': continue
+
             # condition and a or b  : Equivalent de l'expression :  condition ?
             # a : b du langage C
+            #PNPN on recalcule dico_valeurs dans le for
+            # pour les globaux imbriques (exple Telemac Advection)
+            # avant le calcul etait avant le for
+            dico_valeurs = self.cree_dict_condition(mc_liste, condition=1)
             globs = self.jdc and self.jdc.condition_context or {}
             if v.verif_presence(dico_valeurs, globs):
                     # Si le bloc existe :
index ab3f03782f0403f7174592decbce20f9f5965511..70f3bee738824d37f4705a1d8ddd5dc75dd39cef 100644 (file)
@@ -92,7 +92,7 @@ class PROC(N_ENTITE.ENTITE):
         self.reentrant = reentrant
         self.repetable = repetable
         self.fr = fr
-        self.ang=""
+        self.ang=ang
         self.docu = docu
         if type(regles) == types.TupleType:
             self.regles = regles
index 3e11b2602c004450806ca96f5c13b7d477988518..5a3c01b70f8220f88303923380dbf59779a5779b 100644 (file)
@@ -43,6 +43,8 @@ JdC = JDC_CATA (code = 'MAP',
 INITIALIZATION=PROC(nom="INITIALIZATION",op=None,
      fr="Initialisation des fichiers d'entrée et de sortie",
      ang="Input and Output files initialization",
+     #UIinfo = { "groupes" : ( "CACHE", )},
+     UIinfo = { "groupes" : ( "iiii", )},
 
      Title = SIMP( statut='o',typ='TXM',
             fr='Titre du cas etudie. Ce titre figurera sur les dessins.',
@@ -51,9 +53,11 @@ INITIALIZATION=PROC(nom="INITIALIZATION",op=None,
      #Working_Directory = SIMP( statut='o',typ='Repertoire',defaut='/tmp'),
 
      Input_Files= FACT(statut='o',
-          Dictionary = SIMP( statut='o', typ = ('Fichier', 'Dico (*.dico);;All Files (*)',), 
-                            defaut='telemac2d.dico', 
-                            fr='Dictionnaire des mots cles.', ang='Key word dictionary.',),
+     #     Dictionary = SIMP( statut='o', typ = ('Fichier', 'Dico (*.dico);;All Files (*)',), 
+     #                       defaut='telemac2d.dico', 
+     #                       fr='Dictionnaire des mots cles.', ang='Key word dictionary.',),
+# PN : le mot cle doit etre dans le dictionnaire et repris du catalogue mais n 
+# est pas modifiable
 
           Geometry_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
                                  fr='Format du fichier de geometrie. Les valeurs possibles sont : \n \
@@ -72,17 +76,17 @@ INITIALIZATION=PROC(nom="INITIALIZATION",op=None,
 
           #Steering_File     = SIMP( statut='o', typ = ('Fichier', 'Steering Files (*.cas);;All Files (*)',),),
 
+
+          Fortran_File = SIMP(statut='f',typ = ('Fichier', 'Fortran files (*.f);;All Files (*)'),
+                              fr='Nom du fichier a soumettre',
+                              ang='Name of FORTRAN file to be submitted',),
+
           Bottom_Topography_File  = SIMP( statut='f', typ = ('Fichier', 'Geo Files (*.geo);;All Files (*)',),
                             fr = "Nom du fichier eventuel contenant la bathymetrie associee au maillage. \
 Si ce mot-cle est utilise; c'est cette bathymetrie qui sera utilisee pour le calcul.",
                             ang = 'Name of the possible file containing the bathymetric data.\
 Where this keyword is used, these bathymetric data shall be used in the computation.',
          ),
-
-          Fortran_File = SIMP(statut='f',typ = ('Fichier', 'Fortran files (*.f);;All Files (*)'),
-                              fr='Nom du fichier a soumettre',
-                              ang='Name of FORTRAN file to be submitted',),
-
           Boundary_Conditions_File = SIMP( statut='o', typ = ('Fichier', 'Boundary Condition (*.cli);;All Files (*)',),
           fr='Nom du fichier contenant les types de conditions aux limites. Ce fichier est rempli de facon automatique\n\
               par le mailleur au moyen de couleurs affectees aux noeuds des frontieres du domaine de calcul.',
@@ -110,6 +114,12 @@ Where this keyword is used, these bathymetric data shall be used in the computat
 
 
      Formatted_And_Binary_Files=FACT( statut='f',
+         Formatted_File1    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
+              fr = "Fichier de donnees formate mis a la disposition de l''utilisateur.  \n\
+Les donnees de ce fichier seront a lire sur le canal 26.",
+              ang = 'Formatted data file made available to the user.\n\
+The data in this file shall be read on channel 26.',
+          ),
 
           Formatted_File2    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
             fr = "Fichier de donnees formate mis a la disposition de l'utilisateur. \n\
@@ -134,9 +144,10 @@ The data in this file shall be read on channel 25.',
      ), # Fin de InputFile 
 
 
-     Computation_Continued=FACT( statut='f',
+     Computation_Continued=SIMP( statut='o',typ=bool,defaut=False),
+      b_comput_con  = BLOC(condition = 'Computation_Continued== True',
 
-#PNPNPN Computation_Continued == Validation
+       Computattion_Continued_Settings=FACT(statut='o',
           Previous_Computation_File_Format=SIMP( statut='o',typ='TXM',
                 into=['SERAFIN','MED','SERAFIND'],
                 defaut='SERAFIN',
@@ -157,10 +168,7 @@ The data in this file shall be read on channel 25.',
                ang = 'Name of a file containing the results of an earlier computation which was made on the same mesh.\n\
  The last recorded time step will provid the initial conditions for the new computation.',
                     ),
-          Previous_Computation_Comm  = SIMP( statut='f', typ = ('Fichier', 'COMM(*.comm);;All Files (*)',),
-              fr  = "Nom du fichier .comm décrivant le cas précédent",
-              ang = "Name of a file containing the earlier study" ,),
-          Initial_Time_Set     = SIMP(typ=bool, statut='f',
+          Initial_Time_Set     = SIMP(typ=bool, statut='o',
              fr = 'Remet le temps a zero en cas de suite de calcul',
              ang = 'Initial time set to zero in case of restart',
              defaut="False"),
@@ -168,14 +176,9 @@ The data in this file shall be read on channel 25.',
               fr = "numero de l'enregistrement de depart dans le fichier du calcul precedent. 0 signifie qu'on prend le dernier enregistrement", 
               ang ="record number to start from in the previous computation file, 0 for last record" ),
      ),
+     ),# fin Fact conputation
 
-     Computation=FACT(statut='o',
-        #Machine=FACT( statut='o',
-# A voir plus tar Obsolete ? 
-        #   Parallel_Processors=SIMP(statut='o',typ='I',val_min=0,defaut=1),
-           #Parallel_Computation=SIMP(statut='o',typ=bool,defaut=False),
-        # ),
-        Coupling=FACT( statut='o',
+     Coupling=FACT( statut='o',
            Sisyphe=SIMP(statut='o',typ=bool,defaut=False),
            Tomawac=SIMP(statut='o',typ=bool,defaut=False),
           Delwacq=SIMP(statut='o',typ=bool,defaut=False),
@@ -188,7 +191,10 @@ The data in this file shall be read on channel 25.',
      TOMAWAC : internal coupling with Tomawac\n\
      DELWAQ: will yield results file for Delwaq',
         ),
-     ),
+      Parallel_Computation=SIMP(statut='o',typ='TXM',into=['Sequentiel','Parallel'],defaut='Sequentiel',),
+      b_para  = BLOC(condition = 'Parallel_Computation== "Parallel"',
+        Parallel_Processors=SIMP(statut='o',typ='I',val_min=0,defaut=1),
+      ),
 )
 
 TIDE_PARAMETERS=PROC(nom="TIDE_PARAMETERS",op=None,
@@ -209,27 +215,7 @@ TIDE_PARAMETERS=PROC(nom="TIDE_PARAMETERS",op=None,
 
       ),
 
-     Time=FACT( statut='o',
-       #Original_Date_Of_Time=SIMP(statut='f',typ=DateJJMMAAAA,validators=VerifTypeTuple(('R','R','R'))),
-       #Original_Hour_Of_Time=SIMP(statut='f',typ=HeureHHMMSS,validators=VerifTypeTuple(('R','R','R'))),
-       Original_Date_Of_Time=FACT( statut='o',
-         fr = "Permet de fixer la date d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
-         ang ='Give the date of the time origin of the model when taking into account the tide generating force.', 
-         Year=SIMP(statut='o',typ='I',val_min=1900,defaut=1900),
-         Month=SIMP(statut='o',typ='I',val_min=1,val_max=12,defaut=1),
-         Day=SIMP(statut='o',typ='I',val_min=1,val_max=31,defaut=1),
-          ),
-       Original_Hour_Of_Time=FACT( statut='f',
-         fr = "Permet de fixer l'heure d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
-         ang ='Give the time of the time origin of the model when taking into account the tide generating force.', 
-         Hour=SIMP(statut='o',typ='I',val_min=0,val_max=24,defaut=0),
-         Minute=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
-         Second=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
-         ),
-      ),
-     Location=FACT( statut='f',
-        #regles=( PRESENT_PRESENT('Longitude_Of_origin','Latitute_Of_origin', ),),
-        #Spatial_Projection=SIMP(statut='f',typ='I',into=[1,2,3]),
+     Location=FACT( statut='o',
         #Geographic_System=SIMP(statut='f',typ='I',into=[-1,0,1,2,3,4,5]),
 
         Geographic_System=SIMP(statut='f',typ='TXM',
@@ -238,25 +224,20 @@ TIDE_PARAMETERS=PROC(nom="TIDE_PARAMETERS",op=None,
               fr = 'Systeme de coordonnees geographiques dans lequel est construit le modele numerique.',
               ang = 'Geographic coordinates system in which the numerical model is built.Indicate the corresponding zone with the keyword ',
         ),
-             b_geo_system  = BLOC(condition = "Geographic_System in ('WGS84 LONGITUDE/LATITUDE EN DEGRES REELS','WGS84 NORD UTM','WGS84 SUD UTM','MERCATOR')",
-             Spatial_Projection=SIMP(statut='o',typ='TXM',into=["CARTESIAN, NOT GEOREFERENCED","MERCATOR","LATITUDE LONGITUDE"]),
-             ang = 'Option 2 or 3 mandatory for spherical coordinates Option 3: latitude and longitude in radians!',
-             b_lat     = BLOC(condition = "Spatial_Projection == 'LATITUDE LONGITUDE' ",
-                 Latitude_Of_Origin=SIMP(statut='o',typ='R',val_min=-90,val_max=90,fr="en radians", ang="in radians"),
-                 Longitude_Of_Origin=SIMP(statut='o',typ='R',fr="en radians", ang="in radians"),
-                         ), # fin bloc b_lat
-             ), # fin bloc b_geo
-# declenchement du calcul du mot_clef SPHERICAL COORDINATES
 
         Zone_number_in_Geographic_System=SIMP(statut='f',typ='TXM',
             #into=[-1,0,1,2,3,4,22,30],
             into=[ 'LAMBERT 1 NORD', 'LAMBERT 2 CENTRE', 'LAMBERT 3 SUD', 'LAMBERT 4 CORSE', 'LAMBERT 2 ETENDU', 'ZONE UTM, PAR EXEMPLE'],
             fr="Numero de zone (fuseau ou type de projection) lors de l'utilisation d'une projection plane.\n Indiquer le systeme geographique dans lequel est construit le modele numerique avec le mot-cle SYSTEME GEOGRAPHIQUE",
             ang='Number of zone when using a plane projection. \nIndicate the geographic system in which the numerical model is built with the keyword GEOGRAPHIC SYSTEM'),
-             ),
-          Physical_Parameters=FACT(statut='o',
+        ),
+     Physical_Parameters=FACT(statut='o',
           Tide_Generating_Force=SIMP(statut='o',typ=bool,defaut=False),
           b_Tide  = BLOC(condition = "Tide_Generating_Force==True",
+            Longitude_Of_Origin_Point=SIMP(typ='R',statut='o',defaut=48.,
+              fr = 'Fixe la valeur de la longitude du point origine du modele, lors de l utilisation de la force generatrice de la maree.',
+              ang = 'Give the value of the longitude of the origin point of the model, when taking into account of the tide generator force.',
+             ),
               Tidal_Data_Base=SIMP(statut='o',typ='TXM',
                 into=[ "JMJ", "TPXO", "LEGOS-NEA", "FES20XX", "PREVIMER",],
 fr = 'Pour JMJ, renseigner la localisation du fichier bdd_jmj et geofin dans les mots-cles BASE DE DONNEES DE MAREE \n\
@@ -266,19 +247,25 @@ ang = 'For JMJ, indicate the location of the files bdd_jmj and geofin with keywo
 For TPXO, LEGOS-NEA, FES20XX and PREVIMER, the user has to download files of harmonic constituents on the internet',
              ),
 
-#-1,1,2,3,4]),
+       b_tpxo     =BLOC(condition = "Tidal_Data_Base=='TPXO'",
+              Minor_Constituents_Inference = SIMP( statut='o',typ='bool',
+              defaut=False ,
+              fr = 'Interpolation de composantes harmoniques mineures a partir de celles lues dans les fichiers dentree lies aux mots-cles BASE BINAIRE 1 DE DONNEES DE MAREE et BASE BINAIRE 2 DE DONNEES DE MAREE',
+    ang= 'Inference of minor constituents from the one read in input files linked to keywords BINARY DATABASE 1 FOR TIDE and BINARY DATABASE 2 FOR TIDE',
+     ),
+     ),#fin du bloc b_tpxo
+
+#-1,1,2,3,4],
               Coefficient_To_Calibrate_Tidal_Range=SIMP(statut='o',typ='R',sug=1.),
               Coefficient_To_Calibrate_Tidal_Velocity=SIMP(statut='o',typ='R',sug=999999),
               Coefficient_To_Calibrate_Sea_Level=SIMP(statut='o',typ='R',sug=0.),
               Binary_Database_1_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
               Binary_Database_2_for_Tide  = SIMP( statut='o', typ = ('Fichier', '(All Files (*),)',),),
-                      ),
-
-          Wave_Driven_Currents=SIMP(statut='f',typ=bool,sug=False),
+             ),
+          Wave_Driven_Currents=SIMP(statut='o',typ=bool,defaut=False),
           b_Wave     =BLOC(condition = "Wave_Driver_Currents=='True'",
               Record_Number_in_Wave_File=SIMP(statut='f',typ='I',sug=1),
          ),
-         ),
 
        Option_For_Tidal_Boundary_Conditions   = SIMP( statut='o',typ='TXM',defaut='No tide',
        into=['No tide', 'Real tide (recommended methodology)', 'Astronomical tide', 'Mean spring tide', 'Mean tide',\
@@ -299,8 +286,9 @@ For TPXO, LEGOS-NEA, FES20XX and PREVIMER, the user has to download files of har
             fr = 'Coefficient pour ajuster le marnage de l''onde de maree aux frontieres maritimes',
             ang = 'Coefficient to calibrate the tidal range of tidal wave at tidal open boundary conditions',
               ),
+         ),
        ),
-
+#
 ) # Fin TIDE_PARAMETERS
 
 INITIAL_STATE=PROC(nom="INITIAL_STATE",op=None,
@@ -346,8 +334,10 @@ INITIAL_STATE=PROC(nom="INITIAL_STATE",op=None,
          ), # fin b_special
 
 
+#PNPN il faut changer la condition pour que cela soit dans maree. il faut une position=global_jdc et remonter
+# cela
          b_initial_TPXO = BLOC (condition = "Initial_Conditions == 'TPXO SATELLITE ALTIMETRY'",
-           Base_Ascii_De_Donnees_De_Maree = SIMP( statut='o', typ = ('Fichier', 'All Files (*)',), ),
+           Ascii_Database_For_Tide = SIMP( statut='o', typ = ('Fichier', 'All Files (*)',), ),
            fr  = 'Base de donnees de constantes harmoniques tirees du fichier du modele de maree',
            ang = 'Tide data base of harmonic constituents extracted from the tidal model file',
          ), # fin b_initial_TPXO
@@ -356,6 +346,8 @@ INITIAL_STATE=PROC(nom="INITIAL_STATE",op=None,
 BOUNDARY_CONDITIONS=PROC(nom="BOUNDARY_CONDITIONS",op=None,
             fr  = 'On donne un ensemble de conditions par frontiere liquide',
             ang = 'One condition set per liquid boundary is given',
+            #UIinfo = { "groupes" : ( "CACHE", )},
+            UIinfo = { "groupes" : ( "iiii", )},
  # Dans l ideal il faut aller regarder selon les groupes dans le fichier med
  # en sortie il faut aller chercher le .cli qui va bien 
             #Liquid_Boundaries=FACT(statut='f',max='**',
@@ -408,13 +400,14 @@ Les donnees de ce fichier seront a lire sur le canal 12.',
    
 
 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES
+#PNPN regarder le document de reference pour changer non programme
        Stage_Discharge_Curves = SIMP(statut='f',typ='TXM',
         #into=[0,1,2],
         into=["no","Z(Q)","not programmed"],
         fr='Indique si une courbe de tarage doit etre utilisee pour une frontiere',
         ang='Says if a discharge-elevation curve must be used for a given boundary',
         ),
-        b_discharge_curve   = BLOC (condition = "Stage_Discharge_Curves == 'Z(Q)'",
+        b_discharge_curve   = BLOC (condition = "Stage_Discharge_Curves != 'no'",
 
 #PNPN Attention dans le Dico STAGE-DISCHARGE CURVES FILES
         Stage_Discharge_Curves_File   = SIMP( statut='f', typ = ('Fichier', 'All Files (*)',),
@@ -437,6 +430,8 @@ Les donnees de ce fichier seront a lire sur le canal 12.',
 
 NUMERICAL_PARAMETERS=PROC(nom="NUMERICAL_PARAMETERS",op=None,
 
+        #UIinfo = { "groupes" : ( "CACHE", )},
+        UIinfo = { "groupes" : ( "iiii", )},
         Solver_Definition=FACT(statut='o',
 
           Equations=SIMP(statut='o',typ='TXM',
@@ -483,12 +478,12 @@ Note: a maximum number of 40 iterations per time step seems to be reasonable.',
            ),
         ), # fin Solver
 
-        Time=FACT(statut='f',
+        Time=FACT(statut='o',
         regles=(AU_MOINS_UN('Number_Of_Time_Steps','Duration'),
                 EXCLUS('Number_Of_Time_Steps','Duration'),
                ),
 
-           Time_Step=SIMP(statut='o',typ='R'),
+           Time_Step=SIMP(statut='o',typ='R',defaut=1),
            Number_Of_Time_Steps=SIMP(statut='f',typ='I',
               fr='Definit le nombre de pas de temps effectues lors de l''execution du code.',
               ang='Specifies the number of time steps performed when running the code.'),
@@ -497,6 +492,19 @@ Note: a maximum number of 40 iterations per time step seems to be reasonable.',
            b_var_time  = BLOC(condition = "Variable_Time_Step==True" ,
              Desired_Courant_Number=SIMP(statut='o',typ='R'),
            ),
+           Original_Date_Of_Time=FACT( statut='o',
+              fr = "Permet de fixer la date d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
+              ang ='Give the date of the time origin of the model when taking into account the tide generating force.', 
+               Year=SIMP(statut='o',typ='I',val_min=1900,defaut=1900),
+               Month=SIMP(statut='o',typ='I',val_min=1,val_max=12,defaut=1),
+               Day=SIMP(statut='o',typ='I',val_min=1,val_max=31,defaut=1),),
+           Original_Hour_Of_Time=FACT( statut='f',
+               fr = "Permet de fixer l'heure d'origine des temps du modele lors de la prise en compte de la force generatrice de la maree.",
+               ang ='Give the time of the time origin of the model when taking into account the tide generating force.', 
+               Hour=SIMP(statut='o',typ='I',val_min=0,val_max=24,defaut=0),
+               Minute=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
+               Second=SIMP(statut='o',typ='I',val_min=0,val_max=60,defaut=0),
+             ),
 
            Stop_If_A_Steady_State_Is_Reached=SIMP(statut='f',typ=bool,defaut='False'),
            b_stop  = BLOC(condition = "Stop_If_A_Steady_State_Is_Reached==True" ,
@@ -647,6 +655,10 @@ The non-linearities can be taken into account through this technique.',),
                 ),
           ),
         ),
+        Scheme_For_Advection_Of_K_Epsilon=SIMP(statut='o',typ='TXM',
+        into=["no advection", "characteristics", "explicit + supg"," postma", "explicit + murd scheme n", "explicit + murd scheme psi", "leo postma for tidal flats", "n-scheme for tidal flats"],
+      fr = 'Choix du schema de convection pour k et epsilon, remplace FORME DE LA CONVECTION',
+       ang = 'Choice of the advection scheme for k and epsilon, replaces TYPE OF ADVECTION',),
 
 #PNPNPN
 # recalculer la liste de 4
@@ -772,85 +784,6 @@ This key-word may have an influence on mass conservation since the truncation of
               ),
      ),
 
-   Turbulence=FACT(statut='f',
-      Solver_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
-            defaut="conjugate gradient" ,
-   into =("conjugate gradient", "conjugate residuals", "conjugate gradient on normal equation", "minimum error", "conjugate gradient squared",\
-        "conjugate gradient squared stabilised (cgstab)", "gmres", "direct"),
-   #into =('1="conjugate gradient"', '2="conjugate residuals"', '3="conjugate gradient on normal equation"', '4="minimum error"', '5="conjugate gradient squared"', '6="conjugate gradient squared stabilised (cgstab)"', '7="gmres (see option for the solver for k-epsilon model)"', '8="direct"'),
-    fr = 'Permet de choisir le solveur utilise pour la resolution du systeme du modele k-epsilon',
-    ang= 'Makes it possible to select the solver used for solving the system of the k-epsilon model.',
-     ),
-
-       b_gmres=BLOC(condition='Solver_For_K_epsilon_Model=="gmres"',
-         Option_For_The_Solver_For_K_epsilon_Model = SIMP( statut='o',typ='I',
-              defaut=2 ,val_min=2,val_max=15,
-              fr = 'le mot cle est la dimension de lespace de KRILOV (valeurs conseillees entre 2 et 7)',
-              ang= 'dimension of the krylov space try values between 2 and 7',),
-            ),
-
-      Preconditioning_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
-         defaut='diagonal' ,
-         into =("diagonal", "no preconditioning", "diagonal condensed", "crout", "diagonal and crout", "diagonal condensed and crout"),
-   #into =('2="diagonal"', '0="no preconditioning"', '3="diagonal condensed"', '7="crout"', '14="diagonal and crout"', '21="diagonal condensed and crout"'),
-         fr = 'Permet de preconditionner le systeme relatif au modele k-epsilon',
-         ang= 'Preconditioning of the linear system in the diffusion step of the k-epsilon model.',
-     ),
-
-    Turbulence_Model = SIMP( statut='o',typ='TXM', defaut="CONSTANT VISCOSITY", 
-   #into =('1="CONSTANT VISCOSITY"', '2="ELDER"', '3="K-EPSILON MODEL"', '4="SMAGORINSKI"'),
-   into =("Constant Viscosity", "Elder", "K-Epsilon Model", "Smagorinski"),
-    
-    fr = 'si on choisit loption 2 il ne faut pas oublier dajuster les deux valeurs du mot-cle : COEFFICIENTS ADIMENSIONNELS DE DISPERSION Si on choisit loption 3, ce meme parametre doit retrouver sa vraie valeur physique car elle est utilisee comme telle dans le modele de turbulence',
-    ang= 'When option 2 is chosen, the two values of key-word : NON-DIMENSIONAL DISPERSION COEFFICIENTS are used When option 3 is chosen, this parameter should recover its true physical value, since it is used as such in the turbulence model.',
-     ),
-
-    b_turbu_const=BLOC(condition='Turbulence_Model=="Constant Viscosity"',
-      Velocity_Diffusivity=SIMP( statut='o',typ='R',defaut=1.E-6,
-      fr='Fixe de facon uniforme pour l ensemble du domaine la valeur du coefficient de diffusion de viscosite globale (dynamique + turbulente).\n\
-Cette valeur peut avoir une influence non negligeable sur la forme et la taille des recirculations.',
-      ang = 'Sets, in an even way for the whole domain, the value of the coefficient of global (dynamic+turbulent) viscosity. \n\
-this value may have a significant effect both on the shapes and sizes of recirculation zones.',),
-
-    ),
-    b_turbu_elder=BLOC(condition='Turbulence_Model=="Elder"',
- Non_Dimensional_Dispersion_Coefficients = SIMP (statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(6.,0.6),
-          fr = 'coefficients longitudinal et transversal dans la formule de Elder.',
-           ang = 'Longitudinal and transversal coefficients in elder s formula.  Used only with turbulence model number 2',),
-    ),
-
-     Accuracy_Of_K = SIMP( statut='o',typ='R', defaut=1e-09 ,
-            fr = 'Fixe la precision demandee sur k pour le test darret dans letape de diffusion et termes sources du modele k-epsilon.',
-            ang= 'Sets the required accuracy for computing k in the diffusion and source terms step of the k-epsilon model.',
-     ),
-
-     Accuracy_Of_Epsilon = SIMP( statut='o',typ='R', defaut=1e-09 ,
-           fr = 'Fixe la precision demandee sur epsilon pour le test darret dans letape de diffusion et termes sources de k et epsilon.',
-           ang= 'Sets the required accuracy for computing epsilon in the diffusion and source-terms step of the k-epsilon model.',
-     ),
-     Time_Step_Reduction_For_K_epsilon_Model = SIMP( statut='f',typ='R', defaut=1.0 ,
-    fr = 'Coefficient reducteur du pas de temps pour le modele k-epsilon (qui est normalement identique a celui du systeme hydrodynamique).\n\
-Utilisation deconseillee',
-    ang= 'Time step reduction coefficient for k-epsilon model (which is normally same the same as that of the hydrodynamic system).\n\
-Not recommended for use.',
-     ),
-     Maximum_Number_Of_Iterations_For_K_And_Epsilon = SIMP( statut='o',typ='I',
-               defaut=50 ,
-           fr = 'Fixe le nombre maximum diterations accepte lors de la resolution du systeme diffusion-termes sources du modele k-epsilon.',
-           ang= 'Sets the maximum number of iterations that are acceptable when solving the diffusion source-terms step of the k-epsilon model.',
-     ),
-     Turbulence_Model_For_Solid_Boundaries = SIMP( statut='o',typ='TXM',
-         defaut='rough' ,
-         #into =('1=smooth', '2=rough'),
-         into =('smooth', 'rough'),
-         fr = 'Permet de choisir le regime de turbulence aux parois ',
-         ang= 'Provided for selecting the type of friction on the walls',
-     ),
-
-
-     ),# fin Turbulence
-
      Various=FACT(
          Finite_Volume_Scheme = SIMP( statut='o',typ='TXM',
               #CHoix de 0 a 6
@@ -877,24 +810,50 @@ Not recommended for use.',
 
 PHYSICAL_PARAMETERS=PROC(nom="PHYSICAL_PARAMETERS",op=None,
         Atmosphere=FACT(statut='f',
-          Wind=SIMP(statut='f',typ=bool,sug=False),
-          b_Wind     =BLOC(condition = "Wind=='True'",
+          Wind=SIMP(statut='o',typ=bool,defaut=False),
+          b_Wind     =BLOC(condition = "Wind==True",
             regles=( PRESENT_PRESENT('Wind_Velocity_along_X','Wind_Velocity_along_Y', ),),
-            Coefficient_Of_Wind_Influence=SIMP(statut='f',typ='R',sug=0,),
-            Wind_Velocity_along_X=SIMP(statut='f',typ='R',sug=0,),
-            Wind_Velocity_along_Y=SIMP(statut='f',typ='R',sug=0,),
-            Threashold_Depth_for_Wind=SIMP(statut='f',typ='R',sug=0,),
-            Air_Pressure=SIMP(statut='f',typ=bool,sug=False),
-         ),
-          Rain_or_Evaporation=SIMP(statut='f',typ=bool,sug=False),
-          b_Rain     =BLOC(condition = "Rain_or_Evaporation=='True'",
-            Rain_or_Evaporation_in_mm_perday=SIMP(statut='f',typ='I',sug=0),
-                         ),
-         ),
+            Wind_Velocity_along_X=SIMP(statut='o',typ='R',defaut=0.,),
+            Wind_Velocity_along_Y=SIMP(statut='o',typ='R',defaut=0.,),
+            Threashold_Depth_for_Wind=SIMP(statut='o',typ='R',defaut=0.,),
+            Air_Pressure=SIMP(statut='o',typ=bool,defaut=False),
+            Coefficient_Of_Wind_Influence = SIMP( statut='o',typ='R', defaut=0.0 ,
+               fr = 'Fixe la valeur du coefficient d entrainement du vent (cf.  Note de principe).',
+               ang= 'Sets the value of the wind driving coefficient.  Refer to principle note.',
+     ),
+
+
+           Option_For_Wind = SIMP( statut='o',typ='TXM', defaut=0 ,
+           into=["no wind","constant in time and space","variable in time","variable in time and space"],
+              fr = 'donne les options pour introduire le vent',
+               ang= 'gives option for managing the wind'
+           ),
+          file_for_wind = BLOC (condition = 'Option_For_Wind== "variable in time" or Option_For_Wind == "variable in time and space"',
+          Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut=" give formated file 3"),
+          ),
+          speed_for_wind = BLOC (condition = 'Option_For_Wind== "constant in time and space"',
+            Speed_And_Direction_Of_Wind = SIMP( statut='o', defaut=(0.0, 0.0) , typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+            fr = 'Donne la vitesse et la direction (en degres de 0 a 360, 0 etant y=0 et x=+inf) du vent',
+            ang= 'gives the speed and direction (degre (from 0 to 360), 0 given y=0 anx x=+infinity)',
+                 ),
+              ),
+          ), # fin b_Wind
+
+          Value_Of_Atmospheric_Pressure = SIMP( statut='o',typ='R',
+          defaut=100000.0 ,
+          fr = 'donne la valeur de la pression atmospherique lorsquelle est constante en temps et en espace',
+          ang= 'gives the value of atmospheric pressure when it is contant in time and space',
+            ),
 
+          Rain_or_Evaporation=SIMP(statut='o',typ=bool,defaut=False),
+          b_Rain     =BLOC(condition = "Rain_or_Evaporation==True",
+            Rain_or_Evaporation_in_mm_perday=SIMP(statut='o',typ='I',defaut=0.),
+                         ),
+         ), # fin atmosphere
 
           Friction_Data=SIMP(statut='o',typ=bool,defaut=False),
           b_Friction  = BLOC(condition = "Friction_Data==True",
+          Friction_Setting=FACT(statut='o',
              Friction_Data_File = SIMP( statut='o',
                typ = ('Fichier', ';;All Files (*)'),
                fr = 'fichier de donnees pour le frottement',
@@ -907,8 +866,8 @@ PHYSICAL_PARAMETERS=PROC(nom="PHYSICAL_PARAMETERS",op=None,
                ang= '1: nodal   2: average',
              ),
              Law_Of_Bottom_Friction = SIMP( statut='o',typ='TXM',
-             defaut='0="NO FRICTION"' ,
-             into =('0="NO FRICTION"', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"','Log Law of Boundaries 6','Colebrooke_White Log 7'),
+             defaut='NO FRICTION' ,
+             into =('NO FRICTION', '1="HAALAND"', '2="CHEZY"', '3="STRICKLER"', '4="MANNING"', '5="NIKURADSE"','Log Law of Boundaries 6','Colebrooke_White Log 7'),
              fr = 'selectionne le type de formulation utilisee pour le calcul du frottement sur le fond.',
              ang= 'Selects the type of formulation used for the bottom friction.',
              ),
@@ -924,7 +883,7 @@ It is noteworthy that the meaning of this figure changes according to the select
 1 : linear coefficient 2 : Chezy coefficient 3 : Strickler coefficient 4 : Manning coefficient 5 : Nikuradse grain size',
                    ),
               ),
-             b_Colebrooke_White  = BLOC(condition =' "Law_Of_Bottom_Friction" in ("Colebrooke_White Log 7",)',
+             b_Colebrooke_White  = BLOC(condition ="Law_Of_Bottom_Friction =='Colebrooke_White Log 7'",
                  Manning_Default_Value_For_Colebrook_white_Law = SIMP( statut='o',typ='R',
                  defaut=0.02 ,
                  fr = 'valeur par defaut du manning pour la loi de frottement de  Colebrook-White ',
@@ -980,6 +939,7 @@ fr ='Si > 0., declenche la procedure de ressuyage qui evite le franchissement pa
 ang='If > 0., will trigger the receding procedure that avoids overwhelming of dykes which are too loosely discretised ',
      ),
 
+     ),
      ), # Fin de Friction
      Parameter_Estimation=FACT(statut='f',
            Parameter_Estimation = SIMP( statut='o',typ='TXM', into =["FRICTION","FROTTEMENT, STEADY"],
@@ -1014,7 +974,61 @@ ang='If > 0., will trigger the receding procedure that avoids overwhelming of dy
        min=4,max=4,)
       ),
 
-)
+
+
+        Number_Of_Sources = SIMP( statut='o',typ='I', defaut=0 ,),
+#PNPNPNPN saisir autant de source du le nombre
+# Attention a la sortie a reformatter. voir page 68 du user manuel V7
+        sources_exist=BLOC(condition="Number_Of_Sources!=0",
+        Sources_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
+          fr = 'Nom du fichier contenant les informations variables en temps des sources',
+           ang= 'Name of the file containing time-dependent information on sources',
+         ),
+        Source=FACT(statut='o',
+         max="**",
+         Abscissae_Of_Sources = SIMP( statut='o',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+          fr = 'Valeurs des abscisses des sources de debit et de traceur.',
+          ang= 'abscissae of sources of flowrate and/or tracer',
+         ),
+
+          Ordinates_Of_Sources = SIMP( statut='o',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+          fr = 'Valeurs des ordonnees des sources de debit et de traceur.',
+          ang= 'ordinates of sources of flowrate and/or tracer',
+          ),
+          Water_Discharge_Of_Sources = SIMP( statut='o',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+          fr = 'Valeurs des debits des sources.',
+          ang= 'values of water discharge of sources',
+          ),
+          Velocities_Of_The_Sources_Along_X = SIMP( statut='f',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+          fr = 'Vitesses du courant a chacune des sources. Si elles ne sont pas donnees, on considere que la vitesse est celle du courant',
+          ang= 'Velocities at the sources. If they are not given, the velocity of the flow at this location is taken',
+          ),
+          Velocities_Of_The_Sources_Along_Y = SIMP( statut='f',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
+          fr = 'Vitesses du courant a chacune des sources',
+          ang= 'Velocities at the sources',
+        ),
+        ),
+       Type_Of_Sources=SIMP(statut='o',typ='TXM',into=["Normal","Dirac"],
+        fr = 'Source portee par une base elements finis  Source portee  par une fonction de Dirac',
+        ang= 'Source term multiplied by a finite element basis,  Source term multiplied by a Dirac function',
+        ),
+    ),#fin bloc source
+    Water_Density=SIMP(statut='o',typ='R',defaut=1000.,
+         fr = 'Fixe la valeur de la masse volumique de l eau.',
+         ang = 'set the value of water density',
+    ),
+    Gravity_Acceleration=SIMP(statut='o',typ='R',defaut=9.81,
+        fr = 'Fixe la valeur de l acceleration de la pesanteur.',
+        ang = 'Set the value of the acceleration due to gravity.',
+      ),
+
+
+)# fin PHYSICAL
 
 POST_PROCESSING=PROC(nom="POST_PROCESSING",op=None,
    Graphic_Printouts=FACT(statut='f',
@@ -1023,6 +1037,7 @@ POST_PROCESSING=PROC(nom="POST_PROCESSING",op=None,
         Variables_For_Graphic_Printouts=SIMP(statut='o',max="**", typ='TXM',into=['a','b','c'],),
         # ajouter le into
    ),
+#PNPN Attention - il existe un mot clef Listing_Printouts
   Listing_Printouts=FACT(statut='f',
 
           Results_File_Format = SIMP( statut='o',typ='TXM',into=['SERAFIN','MED','SERAFIND'], defaut='SERAFIN',
@@ -1070,12 +1085,38 @@ Les resultats a placer dans ce fichier seront a ecrire sur le canal 28.",
 The results to be entered into this file shall be written on channel 28.",
     ),
 
-Information_About_Solver = SIMP(typ=bool, statut='f',defaut=False,
+     Information_About_Solver = SIMP(typ=bool, statut='f',defaut=False,
        fr = "Si vrai, Donne a chaque pas de temps le nombre d'iterations necessaires a la convergence du solveur de l'etape de propagation.",
      ang = "if True, prints the number of iterations that have been necessary to get the solution of the linear system.",
-),
+      ),
+
+  Controls=FACT(
+    Controls_Section=SIMP(statut='o',typ=Tuple(2),validators=VerifTypeTuple(('I','I')),
+       fr = 'Couples de points (numeros globaux dans le maillage) entre lesquels les debits instantanes et cumules seront donnes.',
+       ang ='Couples of points (global numbers in the mesh) defining sections where the instantaneous and cumulated discharges will be given',
+          ),
+
+    Printing_Cumulated_Flowrates = SIMP( statut='o',typ=bool, defaut=False ,
+    fr = 'IMPRESSION DU FLUX CUMULE A TRAVERS LES SECTIONS DE CONTROLE',
+    ang= 'PRINTING THE CUMULATED FLOWRATES THROUGH CONTROL SECTIONS',
+     ),
+
+    Compatible_Computation_Of_Fluxes = SIMP( statut='o',typ=bool, defaut=False ,
+    fr = 'FLUX A TRAVERS LES SECTIONS DE CONTROLE, CALCUL COMPATIBLE AVEC LIMPERMEABILITE SOUS FORME FAIBLE',
+    ang= 'FLOWRATES THROUGH CONTROL SECTIONS, COMPUTATION COMPATIBLE WITH THE WEAK FORMULATION OF NO-FLUX BOUNDARY CONDITION',
+     ),
+   Sections_Input_File = SIMP( statut='f', typ = ('Fichier', 'All Files (*)'),
+    fr = 'sections input file, partitioned',
+    ang= 'sections input file, partitioned',
+     ),
+
+    Sections_Output_File = SIMP( statut='f', typ = ('Fichier', 'All Files (*)'),
+    fr = 'sections output file, written by the master',
+    ang= 'sections output file, written by the master',
+     ),
 
 
+  ),# fin controls
 
 PRECONDITIONING = SIMP( statut='o',typ='I',
     defaut=2 ,
@@ -1087,7 +1128,7 @@ PRECONDITIONING = SIMP( statut='o',typ='I',
 
 
 # Attention calculer le logique BREACH 
-STRUCTURES=PROC(nom="STRUCTURES",op=None,
+CONSTRUCTION_WORKS_MODELLING=PROC(nom="CONSTRUCTION_WORKS_MODELLING",op=None,
 
 # Attention calculer le logique BREACH 
 
@@ -1098,43 +1139,11 @@ dans le fichier cas. Leurs caracteristiques sont donnees dans le fichier de donn
           ang= 'Number of culverts treated as source terms.  They must be described as sources in the domain\
  and their features are given in the culvert data file (see written documentation)',
            ),
-
         culvert_exist=BLOC(condition="Number_Of_Culverts!=0",
-        Culverts= FACT(statut='o',
-         min=1,max="**",
-         Abscissae_Of_Sources = SIMP( statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
-          fr = 'Valeurs des abscisses des sources de debit et de traceur.',
-          ang= 'abscissae of sources of flowrate and/or tracer',
-         ),
-
-          Ordinates_Of_Sources = SIMP( statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
-          fr = 'Valeurs des ordonnees des sources de debit et de traceur.',
-          ang= 'ordinates of sources of flowrate and/or tracer',
-          ),
-          Water_Discharge_Of_Sources = SIMP( statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
-          fr = 'Valeurs des debits des sources.',
-          ang= 'values of water discharge of sources',
-          ),
-          Velocities_Of_The_Sources_Along_X = SIMP( statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
-          fr = 'Vitesses du courant a chacune des sources. Si elles ne sont pas donnees, on considere que la vitesse est celle du courant',
-          ang= 'Velocities at the sources. If they are not given, the velocity of the flow at this location is taken',
-          ),
-          Velocities_Of_The_Sources_Along_Y = SIMP( statut='o',
-          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),
-          fr = 'Vitesses du courant a chacune des sources',
-          ang= 'Velocities at the sources',
-         ),
-        ),
-
         Culvert_Data_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
             fr = 'Fichier de description des siphons presents dans le modele',
             ang= 'Description of culvert existing in the model',
         ),
-
         ),
 
           Number_Of_Tubes = SIMP( statut='o',typ='I',
@@ -1164,9 +1173,19 @@ Ces seuils doivent etre decrits comme des frontieres du domaine de calcul',
         typ = ('Fichier', 'All Files (*)',),
         fr = 'Fichier de description des seuils presents dans le modele',
         ang= 'Description of weirs existing in the model',),
+
+#PNPN a passer an anglais avec une solution lisible
+     Type_Of_Weirs = SIMP( statut='o',typ='TXM',
+       into=["HORIZONTAL AVEC MEME NOMBRE DE NOEUDS AMONT/AVAL (Solution historique avec bord)",
+             "GENERALE (Nouvelle solution avec pts sources)"],
+       defaut= "HORIZONTAL AVEC MEME NOMBRE DE NOEUDS AMONT/AVAL (Solution historique avec bord)",
+       fr = 'Méthode de traitement des seuils ',
+       ang= 'Method for treatment of weirs',
      ),
 
-     Breach=SIMP(statut='o',typ=bool,defaut=False,
+     ),
+
+     Breach=SIMP(statut='f',typ=bool,defaut=False,
          fr = 'Prise en compte de breches dans le calcul par modification altimetrique dans le maillage.',
          ang = 'Take in account some breaches during the computation by modifying the bottom level of the mesh.',
      ),
@@ -1183,12 +1202,6 @@ Ces seuils doivent etre decrits comme des frontieres du domaine de calcul',
       maskob = BLOC (condition = 'Vertical_Structures==True',
       Consigne = SIMP(statut="o",homo='information',typ="TXM", defaut="subroutine DRAGFO must then be implemented"),
       ),
-      Formatted_File1    = SIMP( statut='f', typ = ('Fichier', 'formated File (*.txt);;All Files (*)',),
-              fr = "Fichier de donnees formate mis a la disposition de l''utilisateur.  \n\
-Les donnees de ce fichier seront a lire sur le canal 26.",
-              ang = 'Formatted data file made available to the user.\n\
-The data in this file shall be read on channel 26.',
-          ),
 ) # FIn STRUCTURE
 TRACERS=PROC(nom="TRACERS",op=None,
         Boundary_conditions=FACT(statut='o',
@@ -1201,3 +1214,186 @@ if Priority to fluxes, Dirichlet prescribed values are not obeyed,but the fluxes
         ),
         ), # fin Boundary_conditions
 )          # FIN TRACERS
+
+GENERAL_PARAMETERS=PROC(nom="GENERAL_PARAMETERS",op=None,
+
+        Spherical_Coordinates=SIMP(typ=bool,statut='o',defaut=False,
+        fr = 'Choix des coordonnees spheriques pour la realisation du calcul ( pour les grands domaines de calcul).',
+        ang = 'Selection of spherical coordinates to perform the computation (for large computation domains).'
+        ),
+
+        b_Spher  = BLOC(condition = 'Spherical_Coordinates== True',
+            Latitude_Of_Origin_Point=SIMP(typ='R',statut='o',defaut=48.,
+              fr = 'Determine l origine utilisee pour le calcul de latitudes lorsque l on effectue un calcul en coordonnees spheriques.',
+              ang = 'Determines the origin used for computing latitudes when a computation is made in spherical coordinates.this latitude\n\
+is in particular used to compute the Coriolis force. In cartesian coordinates, Coriolis coefficient is considered constant.'
+              ),
+            Spatial_Projection_Type=SIMP(statut='o',typ='TXM',into=["MERCATOR","LATITUDE LONGITUDE"]),
+        ),
+        b_Spher_faux  = BLOC(condition = 'Spherical_Coordinates== False',
+           Spatial_Projection_Type=SIMP(statut='o',typ='TXM',into=["CARTESIAN, NOT GEOREFERENCED","MERCATOR","LATITUDE LONGITUDE"],
+           defaut="CARTESIAN, NOT GEOREFERENCED",),
+        ),
+)
+
+
+TURBULENCE=PROC(nom="TURBULENCE",op=None,
+
+    Turbulence_Model = SIMP( statut='o',typ='TXM', defaut="CONSTANT VISCOSITY", 
+   #into =('1="CONSTANT VISCOSITY"', '2="ELDER"', '3="K-EPSILON MODEL"', '4="SMAGORINSKI"'),
+   into =("Constant Viscosity", "Elder", "K-Epsilon Model", "Smagorinski"),
+    
+    fr = 'si on choisit loption 2 il ne faut pas oublier dajuster les deux valeurs du mot-cle : COEFFICIENTS ADIMENSIONNELS DE DISPERSION Si on choisit loption 3, ce meme parametre doit retrouver sa vraie valeur physique car elle est utilisee comme telle dans le modele de turbulence',
+    ang= 'When option 2 is chosen, the two values of key-word : NON-DIMENSIONAL DISPERSION COEFFICIENTS are used When option 3 is chosen, this parameter should recover its true physical value, since it is used as such in the turbulence model.',
+     ),
+
+    b_turbu_const=BLOC(condition='Turbulence_Model=="Constant Viscosity"',
+      Velocity_Diffusivity=SIMP( statut='o',typ='R',defaut=1.E-6,
+      fr='Fixe de facon uniforme pour l ensemble du domaine la valeur du coefficient de diffusion de viscosite globale (dynamique + turbulente).\n\
+Cette valeur peut avoir une influence non negligeable sur la forme et la taille des recirculations.',
+      ang = 'Sets, in an even way for the whole domain, the value of the coefficient of global (dynamic+turbulent) viscosity. \n\
+this value may have a significant effect both on the shapes and sizes of recirculation zones.',),
+
+    ),
+    b_turbu_elder=BLOC(condition='Turbulence_Model=="Elder"',
+ Non_Dimensional_Dispersion_Coefficients = SIMP (statut='o',
+          typ=Tuple(2),validators=VerifTypeTuple(('R','R')),defaut=(6.,0.6),
+          fr = 'coefficients longitudinal et transversal dans la formule de Elder.',
+           ang = 'Longitudinal and transversal coefficients in elder s formula.  Used only with turbulence model number 2',),
+    ),
+
+     Accuracy_Of_K = SIMP( statut='o',typ='R', defaut=1e-09 ,
+            fr = 'Fixe la precision demandee sur k pour le test darret dans letape de diffusion et termes sources du modele k-epsilon.',
+            ang= 'Sets the required accuracy for computing k in the diffusion and source terms step of the k-epsilon model.',
+     ),
+
+     Accuracy_Of_Epsilon = SIMP( statut='o',typ='R', defaut=1e-09 ,
+           fr = 'Fixe la precision demandee sur epsilon pour le test darret dans letape de diffusion et termes sources de k et epsilon.',
+           ang= 'Sets the required accuracy for computing epsilon in the diffusion and source-terms step of the k-epsilon model.',
+     ),
+     Time_Step_Reduction_For_K_epsilon_Model = SIMP( statut='f',typ='R', defaut=1.0 ,
+    fr = 'Coefficient reducteur du pas de temps pour le modele k-epsilon (qui est normalement identique a celui du systeme hydrodynamique).\n\
+Utilisation deconseillee',
+    ang= 'Time step reduction coefficient for k-epsilon model (which is normally same the same as that of the hydrodynamic system).\n\
+Not recommended for use.',
+     ),
+     Maximum_Number_Of_Iterations_For_K_And_Epsilon = SIMP( statut='o',typ='I',
+               defaut=50 ,
+           fr = 'Fixe le nombre maximum diterations accepte lors de la resolution du systeme diffusion-termes sources du modele k-epsilon.',
+           ang= 'Sets the maximum number of iterations that are acceptable when solving the diffusion source-terms step of the k-epsilon model.',
+     ),
+     Turbulence_Model_For_Solid_Boundaries = SIMP( statut='o',typ='TXM',
+         defaut='rough' ,
+         #into =('1=smooth', '2=rough'),
+         into =('smooth', 'rough'),
+         fr = 'Permet de choisir le regime de turbulence aux parois ',
+         ang= 'Provided for selecting the type of friction on the walls',
+     ),
+      Solver_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
+            defaut="conjugate gradient" ,
+   into =("conjugate gradient", "conjugate residuals", "conjugate gradient on normal equation", "minimum error", "conjugate gradient squared",\
+        "conjugate gradient squared stabilised (cgstab)", "gmres", "direct"),
+   #into =('1="conjugate gradient"', '2="conjugate residuals"', '3="conjugate gradient on normal equation"', '4="minimum error"', '5="conjugate gradient squared"', '6="conjugate gradient squared stabilised (cgstab)"', '7="gmres (see option for the solver for k-epsilon model)"', '8="direct"'),
+    fr = 'Permet de choisir le solveur utilise pour la resolution du systeme du modele k-epsilon',
+    ang= 'Makes it possible to select the solver used for solving the system of the k-epsilon model.',
+     ),
+
+       b_gmres=BLOC(condition='Solver_For_K_epsilon_Model=="gmres"',
+         Option_For_The_Solver_For_K_epsilon_Model = SIMP( statut='o',typ='I',
+              defaut=2 ,val_min=2,val_max=15,
+              fr = 'le mot cle est la dimension de lespace de KRILOV (valeurs conseillees entre 2 et 7)',
+              ang= 'dimension of the krylov space try values between 2 and 7',),
+            ),
+
+      Preconditioning_For_K_epsilon_Model = SIMP( statut='o',typ='TXM',
+         defaut='diagonal' ,
+         into =("diagonal", "no preconditioning", "diagonal condensed", "crout", "diagonal and crout", "diagonal condensed and crout"),
+   #into =('2="diagonal"', '0="no preconditioning"', '3="diagonal condensed"', '7="crout"', '14="diagonal and crout"', '21="diagonal condensed and crout"'),
+         fr = 'Permet de preconditionner le systeme relatif au modele k-epsilon',
+         ang= 'Preconditioning of the linear system in the diffusion step of the k-epsilon model.',
+     ),
+    Information_About_K_Epsilon_Model=SIMP(statut='o',typ=bool,defaut=True,
+        fr = 'Donne le nombre d iterations du solveur de l etape de diffusion et termes sources du modele k-epsilon.',
+        ang = 'Gives the number of iterations of the solver in the diffusion and source terms step of the k-epsilon model.',
+     ),
+)# fin Turbulence
+
+PARTICULE=PROC(nom="PARTICULE",op=None,
+      Number_Of_Drogues=SIMP(statut='o',typ='I',defaut=0,
+      fr = 'Permet d''effectuer un suivi de flotteurs',
+      ang = 'Number of drogues in the computation.',
+      ),
+
+
+     Algae_Transport_Model = SIMP( statut='o',typ=bool, defaut=False ,
+          fr = 'Si oui, les flotteurs seront des algues',
+          ang= 'If yes, the floats or particles will be algae',
+     ),
+
+    algae_exist=BLOC(condition="Algae_Transport_Model==True", 
+
+       Algae_Type = SIMP( statut='o',typ='TXM',
+        into=["SPHERE", "IRIDAEA FLACCIDA (CLOSE TO ULVA)", "PELVETIOPSIS LIMITATA", "GIGARTINA LEPTORHYNCHOS"],
+        defaut="Sphere",
+        fr = 'Type des algues. Pour le choix 1 les algues seront modelisees comme des spheres, pour les autres choix voir Gaylord et al. (1994).',
+         ang= 'Algae type. For choice 1 the algae particles will be modeled as spheres, and for the other choices see Gaylord et al. (1994)',
+       ),
+      Diametre_Of_Algae = SIMP( statut='o',typ='R', defaut=0.1 ,
+            fr = 'Diametre des algues en m',
+            ang= 'Diametre of algae in m',
+       ),
+
+      Density_Of_Algae = SIMP( statut='o',typ='R', defaut=1050.0 ,
+         fr = 'Masse volumique des algues en kg/m3',
+         ang= 'Density of algae in kg/m3',
+        ),
+
+      Thickness_Of_Algae = SIMP( statut='o',typ='R', defaut=0.01 ,
+         fr = 'Epaisseur des algues en m',
+         ang= 'Thickness of algae in m',
+       ),
+      ), # fin algae
+
+
+    Oil_Spill_Model = SIMP( statut='o',typ=bool, defaut=False ,
+    fr = 'pour declencher le modele de derive de nappes, dans ce cas le fichier de commandes migrhycar est necessaire',
+    ang= 'will trigger the oil spill model, in this case the migrhycar steering file is needed',
+     ),
+
+    oil_exist=BLOC(condition="Oil_Spill_Model==True", 
+        Oil_Spill_Steering_File = SIMP( statut='o',typ=('Fichier', 'All Files (*)',),
+         fr = 'Contient les donnees pour le modele de derive de nappes',
+         ang= 'Contains data for the oil spill model',
+     ),
+     ),
+
+     drogues_exist=BLOC(condition="Number_Of_Drogues!=0 or Algae_Transport_Model==True or Oil_Spill_Model==True",
+        Drogues_File = SIMP( statut='o',typ = ('Fichier', 'All Files (*)',),
+           fr = 'Fichier de resultat avec les positions des flotteurs',
+           ang = 'Results file with positions of drogues',
+         ),
+
+     Printout_Period_For_Drogues=SIMP(statut='o',typ='I',defaut=1,
+       fr = 'Nombre de pas de temps entre 2 sorties de positions de flotteurs dans le fichier des resultats binaire supplementaire\n\
+N affecte pas la qualite du calcul de la trajectoire',
+       ang = 'Number of time steps between 2 outputs of drogues positions in the binary file',
+     ),
+    ),#fin drogues ou algae
+
+
+    Stochastic_Diffusion_Model = SIMP( statut='o',typ='I', defaut=0 ,
+    fr = 'Pour les particules : flotteurs, algues, hydrocarbures',
+    ang= 'Meant for particles: drogues, algae, oil spills',
+     ),
+
+    Number_Of_Lagrangian_Drifts = SIMP( statut='o',typ='I', defaut=0 ,
+      fr = 'Permet deffectuer simultanement plusieurs calculs de derives lagrangiennes initiees a des pas differents',
+      ang= 'Provided for performing several computations of lagrangian drifts starting at different times.',
+      ),
+
+    b_cons=BLOC(condition="Number_Of_Lagrangian_Drifts !=0",
+     Consigne = SIMP(statut="o",homo='information',typ="TXM", 
+     defaut="Add A and G in the VARIABLES FOR GRAPHIC PRINTOUTS key-word in POST_PROCESSING SECTION"),
+    ),
+
+)# fin PARTICULE
diff --git a/UiQT4/desParam.ui b/UiQT4/desParam.ui
new file mode 100644 (file)
index 0000000..d533a7e
--- /dev/null
@@ -0,0 +1,225 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DParam</class>
+ <widget class="QWidget" name="DParam">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>571</width>
+    <height>410</height>
+   </rect>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>505</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>DComm</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <widget class="QTabWidget" name="TWChoix">
+     <property name="styleSheet">
+      <string notr="true">QLineEdit {background:rgb(240,240,240)}</string>
+     </property>
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="Commande">
+      <attribute name="title">
+       <string>Utiliser un Paramètre</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_4">
+       <item row="0" column="0">
+        <widget class="QListWidget" name="LBParam">
+         <property name="selectionMode">
+          <enum>QAbstractItemView::MultiSelection</enum>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="Valeur_Parametre">
+      <attribute name="title">
+       <string>Créer un Paramètre</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout_2">
+         <item>
+          <widget class="QLabel" name="textLabel2_2_2">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Ignored">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string>&lt;u&gt;&lt;b&gt;&lt;p align=&quot;center&quot;&gt;Parametre&lt;/p&gt;&lt;/b&gt;&lt;/u&gt;</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <spacer name="horizontalSpacer">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>288</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_3">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>2</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QGridLayout" name="gridLayout">
+         <item row="1" column="1">
+          <widget class="QLineEdit" name="lineEditVal">
+           <property name="minimumSize">
+            <size>
+             <width>231</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="frame">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0">
+          <widget class="QLabel" name="textLabel2_2">
+           <property name="text">
+            <string>&lt;b&gt; Nom: &lt;/b&gt;</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLineEdit" name="lineEditNom">
+           <property name="minimumSize">
+            <size>
+             <width>231</width>
+             <height>31</height>
+            </size>
+           </property>
+           <property name="frame">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="textLabel2">
+           <property name="text">
+            <string>&lt;b&gt; Valeur: &lt;/b&gt;</string>
+           </property>
+           <property name="wordWrap">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="verticalSpacer">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::MinimumExpanding</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>168</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QHBoxLayout" name="horizontalLayout">
+         <item>
+          <spacer name="horizontalSpacer_2">
+           <property name="orientation">
+            <enum>Qt::Horizontal</enum>
+           </property>
+           <property name="sizeHint" stdset="0">
+            <size>
+             <width>368</width>
+             <height>20</height>
+            </size>
+           </property>
+          </spacer>
+         </item>
+         <item>
+          <widget class="QPushButton" name="RBParam">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>140</width>
+             <height>40</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>140</width>
+             <height>40</height>
+            </size>
+           </property>
+           <property name="styleSheet">
+            <string notr="true">background-color:rgb(104,110,149);
+color :white;
+border-radius : 12px
+</string>
+           </property>
+           <property name="text">
+            <string>Nouveau</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <pixmapfunction>qPixmapFromMimeSource</pixmapfunction>
+ <tabstops>
+  <tabstop>TWChoix</tabstop>
+  <tabstop>lineEditNom</tabstop>
+  <tabstop>lineEditVal</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
index d1e1abad4a4d6807176dc23db1ed00d570b917bd..57ccde00001b7495d60e372ee41ab191270fac80 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>727</width>
-    <height>25</height>
+    <height>27</height>
    </rect>
   </property>
   <property name="windowTitle">
       <number>22</number>
      </property>
      <item>
-      <widget class="QLabel" name="groupBox">
+      <widget class="MonLabelClic" name="groupBox">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
          <horstretch>0</horstretch>
    <extends>QToolButton</extends>
    <header>monBoutonValide.h</header>
   </customwidget>
+  <customwidget>
+   <class>MonLabelClic</class>
+   <extends>QLabel</extends>
+   <header>monLabelClic.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
  <connections/>
diff --git a/UiQT4/desWidgetInformationV1.ui b/UiQT4/desWidgetInformationV1.ui
new file mode 100644 (file)
index 0000000..d8202d0
--- /dev/null
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>WidgetInformative</class>
+ <widget class="QWidget" name="WidgetInformative">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>941</width>
+    <height>41</height>
+   </rect>
+  </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
+  <property name="minimumSize">
+   <size>
+    <width>0</width>
+    <height>0</height>
+   </size>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>1</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+     <property name="sizeConstraint">
+      <enum>QLayout::SetFixedSize</enum>
+     </property>
+     <item>
+      <spacer name="horizontalSpacer_3">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>21</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QRadioButton" name="RBValide">
+       <property name="minimumSize">
+        <size>
+         <width>21</width>
+         <height>25</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>21</width>
+         <height>25</height>
+        </size>
+       </property>
+       <property name="focusPolicy">
+        <enum>Qt::ClickFocus</enum>
+       </property>
+       <property name="styleSheet">
+        <string notr="true">border : 0px</string>
+       </property>
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset>
+         <normaloff>../Editeur/icons/ast-yel-ball.png</normaloff>../Editeur/icons/ast-yel-ball.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>25</width>
+         <height>25</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer_4">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeType">
+      <enum>QSizePolicy::Fixed</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>21</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+   <item>
+    <widget class="QLineEdit" name="lineEditVal">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="minimumSize">
+      <size>
+       <width>0</width>
+       <height>25</height>
+      </size>
+     </property>
+     <property name="maximumSize">
+      <size>
+       <width>805</width>
+       <height>16777215</height>
+      </size>
+     </property>
+     <property name="styleSheet">
+      <string notr="true">background:rgb(255,254,226);
+border:0px;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <spacer name="horizontalSpacer">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>288</width>
+       <height>20</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>lineEditVal</tabstop>
+  <tabstop>RBValide</tabstop>
+ </tabstops>
+ <resources/>
+ <connections/>
+</ui>
index e847b27349453624b3856d0465aac07d920f35de..54e07bc8c4e72c276b20b573e7918b17c1df1e3c 100644 (file)
@@ -89,6 +89,9 @@ border: 1px solid gray;
              <height>35</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -213,7 +216,16 @@ border: 1px solid gray;
          <property name="spacing">
           <number>1</number>
          </property>
-         <property name="margin">
+         <property name="leftMargin">
+          <number>2</number>
+         </property>
+         <property name="topMargin">
+          <number>0</number>
+         </property>
+         <property name="rightMargin">
+          <number>2</number>
+         </property>
+         <property name="bottomMargin">
           <number>0</number>
          </property>
          <item>
@@ -273,6 +285,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -305,6 +320,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -337,6 +355,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -369,6 +390,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -419,6 +443,9 @@ border: 1px solid gray;
            <height>31</height>
           </size>
          </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
          <property name="styleSheet">
           <string notr="true">border : 0px</string>
          </property>
@@ -475,6 +502,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -507,6 +537,9 @@ border: 1px solid gray;
              <height>31</height>
             </size>
            </property>
+           <property name="focusPolicy">
+            <enum>Qt::ClickFocus</enum>
+           </property>
            <property name="styleSheet">
             <string notr="true">border : 0px</string>
            </property>
@@ -558,6 +591,9 @@ border: 1px solid gray;
            <height>30</height>
           </size>
          </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
          <property name="styleSheet">
           <string notr="true">border:0px</string>
          </property>
@@ -606,6 +642,9 @@ border: 1px solid gray;
            <height>31</height>
           </size>
          </property>
+         <property name="focusPolicy">
+          <enum>Qt::ClickFocus</enum>
+         </property>
          <property name="styleSheet">
           <string notr="true">border : 0px</string>
          </property>
index 4e1d3b7e0719823da84026d3a78b77a0dfef3e8f..dfbb2df9661cddfa11c45c61b516b4710fb98893 100644 (file)
@@ -178,7 +178,7 @@ border:0px;</string>
       <number>0</number>
      </property>
      <item>
-      <widget class="QToolButton" name="BSalome">
+      <widget class="QToolButton" name="RBSalome">
        <property name="minimumSize">
         <size>
          <width>25</width>
@@ -213,7 +213,7 @@ border:0px;</string>
       </widget>
      </item>
      <item>
-      <widget class="QToolButton" name="BView2D">
+      <widget class="QToolButton" name="RBSalomeVue">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
          <horstretch>0</horstretch>
@@ -322,8 +322,8 @@ border:0px;</string>
  </customwidgets>
  <tabstops>
   <tabstop>lineEditVal</tabstop>
-  <tabstop>BSalome</tabstop>
-  <tabstop>BView2D</tabstop>
+  <tabstop>RBSalome</tabstop>
+  <tabstop>RBSalomeVue</tabstop>
   <tabstop>RBValide</tabstop>
   <tabstop>RBPoubelle</tabstop>
  </tabstops>
index 0ff2a942f8c85610c90daa2593028a81729da454..6a55f766d6a98ecbd82a17d2e6621aec587d54a9 100644 (file)
@@ -181,7 +181,7 @@ border:0px;</string>
       <number>0</number>
      </property>
      <item>
-      <widget class="QToolButton" name="BSalome">
+      <widget class="QToolButton" name="RBSalome">
        <property name="minimumSize">
         <size>
          <width>25</width>
@@ -216,7 +216,7 @@ border:0px;</string>
       </widget>
      </item>
      <item>
-      <widget class="QToolButton" name="BView2D">
+      <widget class="QToolButton" name="RBSalomeVue">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
          <horstretch>0</horstretch>
@@ -321,7 +321,7 @@ border:0px;</string>
  <tabstops>
   <tabstop>lineEditVal</tabstop>
   <tabstop>BSalome</tabstop>
-  <tabstop>BView2D</tabstop>
+  <tabstop>RBSalomeVue</tabstop>
   <tabstop>RBValide</tabstop>
   <tabstop>RBPoubelle</tabstop>
  </tabstops>
index 8ec2dbc0b0d448878b5ea8fa9f4f44a94a2e1fbc..963242183aec459585b1f86bd3e2c37a802ff4ee 100644 (file)
@@ -30,8 +30,12 @@ from Noyau.N_utils import repr_float
 import Accas
 import Extensions
 from Extensions.parametre import ITEM_PARAMETRE
-from Formatage import Formatage
+from Formatage import Formatage 
+from Formatage import FormatageLigne
 from Extensions.param2 import Formula
+from Extensions.eficas_exception import EficasException
+from Extensions.i18n import tr
+
 
 def entryPoint():
    """
@@ -92,6 +96,7 @@ class PythonGenerator:
       """
       self.appli=obj.get_jdc_root().appli
       #self.appli=obj.appli
+      print format
       liste= self.generator(obj)
       if format == 'brut':
          self.text=liste
@@ -100,8 +105,11 @@ class PythonGenerator:
       elif format == 'beautifie':
          jdc_formate = Formatage(liste,mode='.py')
          self.text=jdc_formate.formate_jdc()
+      elif format == 'Ligne':
+         jdc_formate = FormatageLigne(liste,mode='.py')
+         self.text=jdc_formate.formate_jdc()
       else:
-         raise "Format pas implemente : "+format
+         raise EficasException(tr("Format non implemente ") +format)
       return self.text
 
    def generator(self,obj):
@@ -152,7 +160,7 @@ class PythonGenerator:
       elif isinstance(obj,Formula):
          return self.generFormula(obj)
       else:
-         raise "Type d'objet non prevu",obj
+         raise EficasException(tr("Type d'objet non prevu") +obj)
 
    def generJDC(self,obj):
       """
@@ -414,7 +422,6 @@ class PythonGenerator:
            # on est en presence d'un MCSIMP : on recupere une string
            text =self.generator(v)
            l.append(v.nom+'='+text)
-           if obj.nom=="Observers": print l
       # il faut etre plus subtil dans l'ajout de la virgule en differenciant 
       # le cas ou elle est obligatoire (si self a des freres cadets 
       # dans self.parent) ou non
@@ -429,8 +436,7 @@ class PythonGenerator:
       """
       if len(obj.data) > 1:
          l=['(']
-         for mcfact in obj.data: 
-             l.append(self.generator(mcfact))
+         for mcfact in obj.data: l.append(self.generator(mcfact))
          l.append('),')
       else:
          l= self.generator(obj.data[0])
@@ -523,6 +529,7 @@ class PythonGenerator:
           Convertit un objet MCSIMP en une liste de chaines de caracteres a la
           syntaxe python
       """
+      if obj.isInformation() : return ""
       waitTuple=0
       if type(obj.valeur) in (types.TupleType,types.ListType) :
          s = ''