Salome HOME
PN : Ajouts de .comm d exemple
[tools/eficas.git] / Editeur / bureau.py
index 51e0eb43b0f3cd59e3b00bb3fe31d811436cd8f1..c67df204bbda432ef168bbe9c4ff09a88fca2363 100644 (file)
@@ -22,7 +22,7 @@
    Ce module contient la classe BUREAU qui gere les JDC ouverts
 """
 # Modules Python
-import os,string
+import os,string,sys
 import traceback
 import Pmw
 from widgets import askopenfilename,asksaveasfilename
@@ -110,6 +110,7 @@ class BUREAU:
       comploader.charger_composants()
       self.cree_cataitem()
       self.text_reel=""
+      self.initialdir = self.appli.CONFIGURATION.initialdir
 
    def cree_cataitem(self):
       """
@@ -184,7 +185,7 @@ class BUREAU:
       self.ShowJDC(J,self.JDCName)
       self.appli.toolbar.active_boutons()
 
-   def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
+   def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY,enregistre="non"):
       """
           Lance l'affichage du JDC cad création du JDCDisplay
           Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
@@ -203,7 +204,10 @@ class BUREAU:
       if new == 'oui':
           self.liste_JDCDisplay.append(self.JDCDisplay_courant)
       self.JDCDisplay_courant.modified='n'
-      self.JDCDisplay_courant.fichier=self.fileName
+      if enregistre != "non" :
+         self.JDCDisplay_courant.fichier=self.fileName
+      else :
+         self.initialdir = self.appli.CONFIGURATION.rep_user
       self.nb.selectpage(label_onglet)
       self.nb.setnaturalsize()
       texte = "Jeu de commandes :" + self.JDCName+" ouvert"
@@ -212,7 +216,6 @@ class BUREAU:
 
    def onClose(self,jdcdisplay):
       #print "onClose",jdcdisplay
-      CONNECTOR.Disconnect(jdcdisplay.jdc,"close",self.onClose,(jdcdisplay,))
       self.closeJDCDISPLAY(jdcdisplay)
 
    def closeJDCDISPLAY(self,jdc):
@@ -258,17 +261,20 @@ class BUREAU:
               if test == 0 :
                   self.appli.affiche_infos("Sauvegarde impossible")
                   return
+
+      CONNECTOR.Disconnect(self.JDCDisplay_courant.jdc,"close",self.onClose,(self.JDCDisplay_courant,))
+      self.JDCDisplay_courant.supprime()
       self.JDCDisplay_courant.jdc.supprime()
       self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
+      # Active le mecanisme de selection du notebook (selectJDC)
       self.nb.delete(self.nb.getcurselection())
-      #XXX CCAR: pour le moment mis en commentaire
-      #self.JDC.unset_context()
-      self.JDC = None
+
       try:
           index = self.nb.index(self.nb.getcurselection())
           self.JDCDisplay_courant = self.liste_JDCDisplay[index]
           self.JDC = self.JDCDisplay_courant.jdc
       except:
+          self.JDC = None
           self.JDCDisplay_courant = None
           self.appli.toolbar.inactive_boutons()
 
@@ -300,12 +306,12 @@ class BUREAU:
       texte_cr = str(cr)
       self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
 
-   def openJDC(self,event=None,file=None,units=None):
+   def openJDC(self,event=None,file=None,units=None,enregistre="oui"):
       """
           Demande à l'utilisateur quel JDC existant il veut ouvrir
       """
       if self.code == 'ASTER':
-          filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
+          filetypes = ( ("format "+self.appli.format_fichier.get(), ".com*"),("Tous",'*'))
       elif self.code == 'HOMARD' :
           filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
       else:
@@ -339,6 +345,8 @@ class BUREAU:
                     titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
                     texte = str(p.cr)).wait()
             return
+        if enregistre == "oui" :
+           self.appli.listeFichiers.aOuvert(file)
       else:
          # Il n'existe pas c'est une erreur
          self.appli.affiche_infos("Type de fichier non reconnu")
@@ -369,7 +377,7 @@ class BUREAU:
           if self.appli.test == 0 :
              showerror("Erreur fatale au chargement d'un fichier",txt_exception)
       else:
-          self.ShowJDC(J,self.JDCName)
+          self.ShowJDC(J,self.JDCName,enregistre=enregistre)
           self.appli.toolbar.active_boutons()
          # si le JDC ne contient rien (vide), on retourne ici
          if len(self.JDC.etapes) == 0 : return
@@ -377,6 +385,7 @@ class BUREAU:
           if not self.JDC.isvalid():
             self.appli.top.update()
             self.visuCR(mode='JDC')
+      # On a ouvert un Patron
 
    def GetLabelJDC(self,nb_jdc = 'absent'):
       """
@@ -436,18 +445,19 @@ class BUREAU:
             from panelsSalome import SALOME_UNIQUE_BASE_Panel
             if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
                self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
-            try :
-            #if ( 1 == 1 ) :
+            #try :
+            if ( 1 == 1 ) :
                import eficasCL
                MyCLinit=eficasCL.CLinit()
                MyCLinit.traiteCL()
-            except :
-            #else :
+               MyCLinit.clean()
+            #except :
+            else :
                pass
           #PN  Fin Ajout --> Salome
           # le JDC a déjà un nom : on sauvegarde directement sans demander
           # un autre nom au développeur
-          if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini) :
+          if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
               showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
               return 0
           else :
@@ -469,8 +479,9 @@ class BUREAU:
       sauvegarde = asksaveasfilename(title=titre,
                                      defaultextension=defext,
                                      filetypes = filtyp,
-                                     initialdir = self.appli.CONFIGURATION.initialdir)
-                                     #initialdir = self.appli.CONFIGURATION.rep_user)
+                                     initialdir = self.initialdir)
+                            #initialdir = self.appli.CONFIGURATION.initialdir)
+                            #initialdir = self.appli.CONFIGURATION.rep_user)
       if sauvegarde :
           # PN ajout --> Salome
           # Pour sauvegarde dans l etude si lancement depuis salome
@@ -485,11 +496,12 @@ class BUREAU:
                import eficasCL
                MyCLinit=eficasCL.CLinit()
                MyCLinit.traiteCL()
+               MyCLinit.clean()
             #except :
             else :
                pass
           # PN fin ajout --> Salome
-          if not save_in_file(sauvegarde,self.jdc_fini) :
+          if not save_in_file(sauvegarde,self.jdc_fini,None) :
               showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
               return 0
           else :
@@ -627,8 +639,7 @@ class BUREAU:
           cle_doc = string.replace(cle_doc,'-','')
           commande = self.appli.CONFIGURATION.exec_acrobat
           nom_fichier = cle_doc+".pdf"
-          rep_fichier = cle_doc[0:2]
-          fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,rep_fichier,nom_fichier))
+          fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,nom_fichier))
           if os.name == 'nt':
               os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
           elif os.name == 'posix':