]> SALOME platform Git repositories - tools/eficas.git/commitdiff
Salome HOME
add: fonctionnalité POURSUITE + INCLUDE
authorpbruno <>
Thu, 22 Feb 2007 11:17:25 +0000 (11:17 +0000)
committerpbruno <>
Thu, 22 Feb 2007 11:17:25 +0000 (11:17 +0000)
Interface/compoformule.py
Interface/compomacro.py
Interface/compooper.py
Interface/editor.py
Interface/readercata.py
Interface/viewManager.py

index f7a93c5aa82fb685471f5bcbfa76f328a9ac77ae..43572b96e60ae45765f10acc724c8611108c14bd 100644 (file)
@@ -15,7 +15,46 @@ from qt import *
 
 
 class Node(browser.JDCNode):
-    pass
+    def createPopUpMenu(self):
+        #menu
+        self.menu = QPopupMenu(self.tree)
+        
+        #ss-menu Comment: 
+        self.commentMenu = QPopupMenu( self.menu )
+        self.commentMenu.insertItem( 'it', self.commentIt )
+        self.commentMenu.insertItem( 'after', self.addCommentAfter )
+        self.commentMenu.insertItem( 'before', self.addCommentBefore )
+        
+        #ss-menu Parameters: 
+        self.parametersMenu = QPopupMenu( self.menu )
+        self.parametersMenu.insertItem( 'after', self.addParametersAfter )
+        self.parametersMenu.insertItem( 'before', self.addParametersBefore )
+        
+        #item du menu
+        self.menu.insertItem( qApp.translate('Browser','Delete'), self.delete )
+        self.menu.insertItem( qApp.translate('Browser','Comment'), self.commentMenu ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Uncomment'), self.unCommentIt ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Parameters'), self.parametersMenu )
+        
+    def addCommentAfter(self):
+        """
+        """        
+        self.addComment()
+                        
+    def addCommentBefore(self):
+        """      
+        """
+        self.addComment(False)        
+        
+    def addParametersAfter(self):
+        """
+        """        
+        self.addParameters()
+                        
+    def addParametersBefore(self):
+        """      
+        """
+        self.addParameters(False)
 ##    def getPanel(self):
 ##        """
 ##        """
index cc2353ec15ab31ce8f4d7d694e71d9276f2be3da..256cb70f3645db263af4e28e2ee24626274b2e9e 100644 (file)
@@ -11,22 +11,21 @@ import compooper
 import convert
 
 #
-__version__="$Name: V1_11_qt $"
-__Id__="$Id: compomacro.py,v 1.26 2006-12-15 16:00:21 cchris Exp $"
+__version__="$Name:  $"
+__Id__="$Id: compomacro.py,v 1.1.2.1 2007-02-19 19:16:34 pbruno Exp $"
 #
 
-
     
 import browser
 from qt import *
 
-
-class MACRONode(browser.JDCNode):
-    pass
+class MACRONode(browser.JDCNode): pass        
 ##    def getPanel(self):
 ##        """
 ##        """
-##        return MACROPanel( self, self.editor )    
+##        return MACROPanel( self, self.editor )
+    
+        
     
 class MACROTreeItem(compooper.EtapeTreeItem):
   """ Cette classe hérite d'une grande partie des comportements
@@ -36,11 +35,11 @@ class MACROTreeItem(compooper.EtapeTreeItem):
 ##  panel=MACROPanel
 
 class INCLUDETreeItemBase(MACROTreeItem):
-  rmenu_specs=[("View","makeView"),
-               ("Edit","makeEdit"),
-              ]
+##  rmenu_specs=[("View","makeView"),
+##               ("Edit","makeEdit"),
+##              ]
 
-  def __init__(self,appli, labeltext, object, setfunction):
+  def __init__(self,appli, labeltext, object, setfunction):    
     MACROTreeItem.__init__(self,appli, labeltext, object, setfunction)
 
   def iscopiable(self):
@@ -49,48 +48,112 @@ class INCLUDETreeItemBase(MACROTreeItem):
       """
       return 0
 
-  def makeEdit(self,appli,node):
-    #print "makeEdit",self.object,self.object.nom
-    #print "makeEdit",self.object.jdc_aux,self.object.jdc_aux.nom
-    #print "makeEdit",self.object.jdc_aux.context_ini
-    if self.object.text_converted == 0:
-        # Le texte du fichier inclus n'a pas pu etre converti par le module convert
-        msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
-        msg=msg+self.object.text_error
-        Fenetre(self,titre="Include non editable",texte=msg,wrap='none')
-        return
-
-    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
-       #L'include n'est pas initialise
-       self.object.build_include(None,"")
-
-    # On cree un nouvel onglet dans le bureau
-    appli.bureau.ShowJDC(self.object.jdc_aux,self.object.jdc_aux.nom,
-                             label_onglet=None,
-                             JDCDISPLAY=macrodisplay.MACRODISPLAY)
-
-  def makeView(self,appli,node):
-    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
-         showerror("Include vide",
-                 "L'include doit etre correctement initialisé pour etre visualisé")
-         return
-
-    nom=self.object.nom
-    if hasattr(self.object,'fichier_ini'):
-       if self.object.fichier_ini is None:
-          nom=nom+' '+"Fichier non défini"
-       else:
-          nom=nom+' '+self.object.fichier_ini
-    macdisp=macrodisplay.makeMacroDisplay(appli,self,nom)
-
-
-
-class INCLUDENode(browser.JDCNode):
-    pass
+##  def makeEdit(self,appli,node):
+##    #print "makeEdit",self.object,self.object.nom
+##    #print "makeEdit",self.object.jdc_aux,self.object.jdc_aux.nom
+##    #print "makeEdit",self.object.jdc_aux.context_ini
+##    if self.object.text_converted == 0:
+##        # Le texte du fichier inclus n'a pas pu etre converti par le module convert
+##        msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
+##        msg=msg+self.object.text_error
+##        Fenetre(self,titre="Include non editable",texte=msg,wrap='none')
+##        return
+##
+##    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
+##       #L'include n'est pas initialise
+##       self.object.build_include(None,"")
+##
+##    # On cree un nouvel onglet dans le bureau
+##    appli.bureau.ShowJDC(self.object.jdc_aux,self.object.jdc_aux.nom,
+##                             label_onglet=None,
+##                             JDCDISPLAY=macrodisplay.MACRODISPLAY)
+##
+##  def makeView(self,appli,node):
+##    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
+##         showerror("Include vide",
+##                 "L'include doit etre correctement initialisé pour etre visualisé")
+##         return
+##
+##    nom=self.object.nom
+##    if hasattr(self.object,'fichier_ini'):
+##       if self.object.fichier_ini is None:
+##          nom=nom+' '+"Fichier non défini"
+##       else:
+##          nom=nom+' '+self.object.fichier_ini
+##    macdisp=macrodisplay.makeMacroDisplay(appli,self,nom)
+
+
+
+class INCLUDENode(browser.JDCNode):    
 ##    def getPanel(self):
 ##        """
 ##        """
-##        return INCLUDEPanel( self, self.editor )  
+##        return INCLUDEPanel( self, self.editor )
+    def createPopUpMenu(self):
+        #menu
+        self.menu = QPopupMenu(self.tree)
+        
+        #ss-menu Comment: 
+        self.commentMenu = QPopupMenu( self.menu )
+        self.commentMenu.insertItem( 'it', self.commentIt )
+        self.commentMenu.insertItem( 'after', self.addCommentAfter )
+        self.commentMenu.insertItem( 'before', self.addCommentBefore )
+        
+        #ss-menu Parameters: 
+        self.parametersMenu = QPopupMenu( self.menu )
+        self.parametersMenu.insertItem( 'after', self.addParametersAfter )
+        self.parametersMenu.insertItem( 'before', self.addParametersBefore )
+        
+        #item du menu
+        self.menu.insertItem( qApp.translate('Browser','Delete'), self.delete )
+        self.menu.insertItem( qApp.translate('Browser','Comment'), self.commentMenu ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Uncomment'), self.unCommentIt ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Parameters'), self.parametersMenu )
+        self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit )
+        self.menu.insertItem( qApp.translate('Browser','View'), self.makeView )
+        
+    def addCommentAfter(self):
+        """
+        """        
+        self.addComment()
+                        
+    def addCommentBefore(self):
+        """      
+        """
+        self.addComment(False)        
+        
+    def addParametersAfter(self):
+        """
+        """        
+        self.addParameters()
+                        
+    def addParametersBefore(self):
+        """      
+        """
+        self.addParameters(False)
+    
+    def makeEdit(self):    #,appli,node
+        if self.item.object.text_converted == 0:
+                # Le texte du fichier inclus n'a pas pu etre converti par le module convert
+                msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
+                msg=msg+self.item.object.text_error
+##                Fenetre(self,titre="Include non editable",texte=msg,wrap='none') #CS_pbruno todo
+                return
+    
+        if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
+               #L'include n'est pas initialise
+               self.item.object.build_include(None,"")
+    
+        # On cree un nouvel onglet dans le bureau
+##        appli.bureau.ShowJDC(   self.item.object.jdc_aux,
+##                                self.item.object.jdc_aux.nom,
+##                                label_onglet=None,
+##                                JDCDISPLAY=macrodisplay.MACRODISPLAY)                            
+        self.editor.vm.displayJDC( self.item.object.jdc_aux ) #, self.item.object.jdc_aux.nom )                                
+    
+    def makeView(self):#,appli,node):
+        pass #CS_pbruno todo
+  
 
 
 class INCLUDETreeItem(INCLUDETreeItemBase):
@@ -98,37 +161,113 @@ class INCLUDETreeItem(INCLUDETreeItemBase):
     itemNode=INCLUDENode
     
 
-class POURSUITETreeItem(INCLUDETreeItemBase): 
-  def makeEdit(self,appli,node):
-    if self.object.text_converted == 0:
-        # Le texte du fichier inclus n'a pas pu etre converti par le module convert
-        msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
-        msg=msg+self.object.text_error
-        Fenetre(self,titre="Poursuite non editable",texte=msg,wrap='none')
-        return
-
-    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
-       #La poursuite n'est pas initialisee
-       text="""DEBUT()
-FIN()"""
-       self.object.build_poursuite(None,text)
-
-    # On cree un nouvel onglet dans le bureau
-    appli.bureau.ShowJDC(self.object.jdc_aux,self.object.jdc_aux.nom,
-                             label_onglet=None,
-                             JDCDISPLAY=macrodisplay.MACRODISPLAY)
-
-  def makeView(self,appli,node):
-    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
-         showerror("Poursuite vide","Une POURSUITE doit etre correctement initialisée pour etre visualisée")
-         return
-    nom=self.object.nom
-    if hasattr(self.object,'fichier_ini'):
-       if self.object.fichier_ini is None:
-          nom=nom+' '+"Fichier non défini"
-       else:
-          nom=nom+' '+self.object.fichier_ini
-    macdisp=macrodisplay.makeMacroDisplay(appli,self,nom)
+    
+class POURSUITENode(browser.JDCNode):    
+##    def getPanel(self):
+##        """
+##        """
+##        return INCLUDEPanel( self, self.editor )
+    def createPopUpMenu(self):
+        #menu
+        self.menu = QPopupMenu(self.tree)
+        
+        #ss-menu Comment: 
+        self.commentMenu = QPopupMenu( self.menu )
+        self.commentMenu.insertItem( 'it', self.commentIt )
+        self.commentMenu.insertItem( 'after', self.addCommentAfter )
+        self.commentMenu.insertItem( 'before', self.addCommentBefore )
+        
+        #ss-menu Parameters: 
+        self.parametersMenu = QPopupMenu( self.menu )
+        self.parametersMenu.insertItem( 'after', self.addParametersAfter )
+        self.parametersMenu.insertItem( 'before', self.addParametersBefore )
+        
+        #item du menu
+        self.menu.insertItem( qApp.translate('Browser','Delete'), self.delete )
+        self.menu.insertItem( qApp.translate('Browser','Comment'), self.commentMenu ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Uncomment'), self.unCommentIt ) # CS_pbruno todo activer/désactiver
+        self.menu.insertItem( qApp.translate('Browser','Parameters'), self.parametersMenu )
+        self.menu.insertItem( qApp.translate('Browser','Edit'), self.makeEdit )
+        self.menu.insertItem( qApp.translate('Browser','View'), self.makeView )
+        
+    def addCommentAfter(self):
+        """
+        """        
+        self.addComment()
+                        
+    def addCommentBefore(self):
+        """      
+        """
+        self.addComment(False)        
+        
+    def addParametersAfter(self):
+        """
+        """        
+        self.addParameters()
+                        
+    def addParametersBefore(self):
+        """      
+        """
+        self.addParameters(False)
+    
+    def makeEdit(self):    #,appli,node
+        if self.item.object.text_converted == 0:
+                # Le texte du fichier inclus n'a pas pu etre converti par le module convert
+                msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
+                msg=msg+self.item.object.text_error
+##                Fenetre(self,titre="Poursuite non editable",texte=msg,wrap='none') #CS_pbruno todo
+                return
+    
+        if not hasattr(self.item.object,"jdc_aux") or self.item.object.jdc_aux is None:
+            #La poursuite n'est pas initialisee
+            text="""DEBUT()
+                    FIN()"""
+            self.object.build_poursuite(None,text)
+    
+        # On cree un nouvel onglet dans le bureau
+##        appli.bureau.ShowJDC(   self.item.object.jdc_aux,
+##                                self.item.object.jdc_aux.nom,
+##                                label_onglet=None,
+##                                JDCDISPLAY=macrodisplay.MACRODISPLAY)                            
+        self.editor.vm.displayJDC( self.item.object.jdc_aux ) #, self.item.object.jdc_aux.nom )        
+    
+    def makeView(self):#,appli,node):
+        pass #CS_pbruno todo
+      
+    
+    
+class POURSUITETreeItem(INCLUDETreeItemBase):
+  itemNode=POURSUITENode
+##  def makeEdit(self,appli,node):
+##    if self.object.text_converted == 0:
+##        # Le texte du fichier inclus n'a pas pu etre converti par le module convert
+##        msg="Le fichier de commande n'a pas pu etre converti pour etre editable par Eficas\n\n"
+##        msg=msg+self.object.text_error
+##        Fenetre(self,titre="Poursuite non editable",texte=msg,wrap='none')
+##        return
+##
+##    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
+##       #La poursuite n'est pas initialisee
+##       text="""DEBUT()
+##FIN()"""
+##       self.object.build_poursuite(None,text)
+##
+##    # On cree un nouvel onglet dans le bureau
+##    appli.bureau.ShowJDC(self.object.jdc_aux,self.object.jdc_aux.nom,
+##                             label_onglet=None,
+##                             JDCDISPLAY=macrodisplay.MACRODISPLAY)
+##
+##  def makeView(self,appli,node):
+##    if not hasattr(self.object,"jdc_aux") or self.object.jdc_aux is None:
+##         showerror("Poursuite vide","Une POURSUITE doit etre correctement initialisée pour etre visualisée")
+##         return
+##    nom=self.object.nom
+##    if hasattr(self.object,'fichier_ini'):
+##       if self.object.fichier_ini is None:
+##          nom=nom+' '+"Fichier non défini"
+##       else:
+##          nom=nom+' '+self.object.fichier_ini
+##    macdisp=macrodisplay.makeMacroDisplay(appli,self,nom)
 
 class INCLUDE_MATERIAUTreeItem(INCLUDETreeItemBase):
   rmenu_specs=[("View","makeView"),
index 14077e7d407198cea2d829d035a03f8b8499d87c..c5df2d92d2e72eaa9096479bdb1721b6c7cde0e5 100644 (file)
@@ -388,7 +388,7 @@ class EtapeTreeItem(Objecttreeitem.ObjectTreeItem):
           représentatif de self.object
       """
       # Format de fichier utilisé
-      format=self.appli.format_fichier
+      format=self.appli.format_fichier.get()
       return self.object.get_objet_commentarise(format)
 
   def get_objet_commentarise_BAK(self):
index a9fc7b5a3f7d18fc5e5edec1bfc0ac2b5aac2221..253a9ea24df94946867b329c97e70b11eab0f2fb 100644 (file)
@@ -16,6 +16,7 @@ import Objecttreeitem
 import prefs
 import configuration
 import panels
+
 import afficheErreur 
 import visualisation
 
@@ -27,24 +28,35 @@ VERSION_CODE    = session.d_env.cata
 ##    VERSION_CODE = 'v8.2'
 
 
-        
+class StringVar: #à cause de format_fichier (Tkinter.StringVar) appelé ailleur que ds l'Interface
+    def __init__(self):
+        self.val = ""
+    def set(self,str):
+        self.val = str
+    def get(self):
+        return self.val
+
 
 class JDCEditor(QSplitter):
     """
        Editeur de jdc
     """
-    def __init__(self,fn,parent=None, editor = None):          
+    def __init__(self,fn = None, jdc = None ,parent=None, editor = None):          
         QSplitter.__init__(self, parent,'')
         
+        print 5*'EDITOR fn->', fn 
+        print 5*'EDITOR jdc->', jdc 
         # CS_pbruno compatiblity begin
         self.top  = None
         self.code = prefs.code
         self.version_code = VERSION_CODE
         self.titre=VERSION_EFICAS + ' pour '+ self.code
         self.dict_reels={}
-        self.liste_simp_reel=[]
-        #format=self.format_fichier.get() CS_pbruno gestion python 
-        self.format_fichier = 'python'
+        self.liste_simp_reel=[]        
+        #self.format_fichier = Tkinter.StringVar()
+        self.format_fichier = StringVar()
+        self.format_fichier.set('python') #CS_pbruno gestion python uniquement
+        
         self.CONFIGURATION = configuration.CONFIGURATION
         self.CONFIGStyle   = configuration.CONFIGStyle
         #self.appli = self
@@ -56,7 +68,7 @@ class JDCEditor(QSplitter):
         self.fileName       = fn
         self.fileInfo       = None
         self.lastModified   = 0
-        self.jdc            = None
+        self.jdc            = jdc
         
         self.fichier=None
         self.panel_courant=None    
@@ -70,12 +82,15 @@ class JDCEditor(QSplitter):
         self.readercata = readercata.reader
         
         
-        ###################################################
-        if self.fileName is not None:
+        #------- construction du jdc --------------
+        jdc_item = None
+                        
+        if self.fileName is not None: # le fichier du jdc est fourni
             self.fileInfo = QFileInfo(self.fileName)
             self.fileInfo.setCaching(0)
             if editor is None:
-                self.readFile(self.fileName)                
+                self.jdc = self.readFile(self.fileName)
+                print 20*'A'
             else:
                 # clone the given editor
 ##                self.setDocument(editor.document())
@@ -87,27 +102,47 @@ class JDCEditor(QSplitter):
                 self.version_code   = editor.version_code
                 self.titre          = editor.titre
                 self.dict_reels     = editor.dict_reels
-                self.liste_simp_reel= editor.liste_simp_reel                
+                self.liste_simp_reel= editor.liste_simp_reel
                 self.format_fichier = editor.format_fichier
                 self.CONFIGURATION  = editor.CONFIGURATION
                 self.CONFIGStyle    = editor.CONFIGStyle
                 self.jdc            = editor.jdc
                 
-                self.lastModified = self.fileInfo.lastModified()                        
-        elif editor is not None:
+                self.lastModified = self.fileInfo.lastModified()                
+        elif editor is not None: 
 ##            self.setDocument(editor.document())
-            self.jdc = editor.jdc
-        else: #nouveau jdc
-            self.jdc = self._newJDC()
-            
-                
-        
-        
+            self.jdc = editor.jdc            
+        else: 
+            if not self.jdc: #nouveau jdc
+                self.jdc = self._newJDC()
+        
+        if self.jdc:            
+            self.jdc.appli = self
+            txt_exception  = None
+            if not jdc:
+                self.jdc.analyse()            
+                txt_exception = self.jdc.cr.get_mess_exception()            
+            if txt_exception:
+                # des exceptions ont été levées à la création du JDC
+                # --> on affiche les erreurs mais pas le JDC
+                print 'txt_exception ->',txt_exception
+                self.affiche_infos("Erreur fatale au chargement de %s" %fn)                
+                qApp.restoreOverrideCursor()
+                monDialog=afficheErreur.afficheErreur(parent=self.parent,fl=Qt.WType_Dialog)
+                monDialog.texteErreur.setText(QString(txt_exception))
+                monDialog.show()
+                self.jdc = None
+            else:
+                comploader.charger_composants()
+                jdc_item=Objecttreeitem.make_objecttreeitem( self, "nom", self.jdc )
+                # dans le cas où le JDC est invalide, on affiche son CR
+                if not self.jdc.isvalid():
+                    self.visuCR(mode='JDC')
+
         #------- config widget --------------
-        comploader.charger_composants()
+##        comploader.charger_composants()
                 
-        if self.jdc:
-            jdc_item=Objecttreeitem.make_objecttreeitem( self, "nom", self.jdc )
+        if jdc_item:                        
             self.tree = browser.JDCTree( jdc_item, self )
             self.connect(self.tree,SIGNAL('selectionChanged(QListViewItem *)'),self.updatePanel)
       
@@ -170,7 +205,76 @@ class JDCEditor(QSplitter):
                                         )                         
         jdc.analyse()        
         return jdc
-
+                        
+            
+    def get_source(self,file):
+        import convert
+        format=self.format_fichier.get()
+        # Il faut convertir le contenu du fichier en fonction du format
+        if convert.plugins.has_key(format):
+            # Le convertisseur existe on l'utilise
+            p=convert.plugins[format]()
+            p.readfile(file)
+            text=p.convert('execnoparseur')
+            if not p.cr.estvide():
+                self.affiche_infos("Erreur à la conversion")
+                #CS_pbruno todo
+##                Fenetre(self,
+##                        titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
+##                        texte = str(p.cr)).wait()                                                
+                return text
+            return text
+        else:
+            # Il n'existe pas c'est une erreur
+            self.affiche_infos("Type de fichier non reconnu")
+            showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
+            return None
+        
+    def get_file(self,unite=None,fic_origine = ''):
+        ulfile  = None
+        jdcText = ""
+      
+        titre  = ""
+        
+        if unite :
+            titre = "Choix unite %d " %unite
+            texte = "Le fichier %s contient une commande INCLUDE \n" % fic_origine
+            texte = texte+'Donnez le nom du fichier correspondant\n à l unité logique %d' % unite
+            labeltexte = 'Fichier pour unite %d :' % unite
+        else:
+            titre = "Choix d'un fichier de poursuite"
+            texte = "Le fichier %s contient une commande %s\n" %(fic_origine,'POURSUITE')
+            texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
+            labeltexte = 'Fichier à poursuivre :'
+                                        
+        fn = QFileDialog.getOpenFileName(   None,
+                                            "", 
+                                            self,
+                                            None,
+                                            labeltexte )                                            
+                        
+        print 'GETFILE', fn
+        
+        if fn.isNull():
+            return
+            
+        ulfile = os.path.abspath(unicode(fn))
+        # On utilise le convertisseur défini par format_fichier
+        print 'GETFILE', ulfile
+        source=self.get_source(ulfile)
+        if source:
+            # On a réussi à convertir le fichier self.ulfile                
+            jdcText = source
+        else:
+            # Une erreur a été rencontrée
+            jdcText = ''
+            
+##        print 'GETFILE', ulfile
+##        print 'GETFILE', jdcText
+                
+        return ulfile, jdcText
+        
+        
     def readFile(self, fn):
         """
         Public slot to read the text from a file.
@@ -187,10 +291,10 @@ class JDCEditor(QSplitter):
         
         jdcName=os.path.basename(fn)
         # Il faut convertir le contenu du fichier en fonction du format
-        if convert.plugins.has_key( self.format_fichier ):
+        if convert.plugins.has_key( self.format_fichier.get() ):
              # Le convertisseur existe on l'utilise
              appli = self # CS_pbruno compatiblity parseur_python: self.appli.liste_simp_reel, self.appli.dict_reels
-             p=convert.plugins[self.format_fichier]()
+             p=convert.plugins[self.format_fichier.get()]()
              p.readfile(fn)         
              text=p.convert('exec',appli)
              if not p.cr.estvide():
@@ -207,27 +311,63 @@ class JDCEditor(QSplitter):
                                     cata=self.readercata.cata,
                                     cata_ord_dico=self.readercata.cata_ordonne_dico,
                                     nom=jdcName,
-                                    rep_mat=configuration.CONFIGURATION#self.CONFIGURATION.rep_mat
+                                    rep_mat=configuration.CONFIGURATION.rep_mat#self.CONFIGURATION.rep_mat
                                    )
-        jdc.analyse()
-        txt= jdc.cr.get_mess_exception()
-        self.jdc = jdc
-        if txt:
-          # PN attention reporter ici les tests pour batch / ou non
-          # if self.appli.test == 0 :
-          qApp.restoreOverrideCursor()
-          monDialog=afficheErreur.afficheErreur(parent=self.parent,fl=Qt.WType_Dialog)
-          monDialog.texteErreur.setText(QString(txt))
-          monDialog.show()
-         self.closeIt()
-        else :
-           self.jdc.appli = self
+##        jdc.analyse()
+##        txt_exception = jdc.cr.get_mess_exception()
+##        
+##        if txt_exception :
+##            # des exceptions ont été levées à la création du JDC 
+##            # --> on affiche les erreurs mais pas le JDC
+##            self.jdc = None
+##            print 'txt_exception ->',txt_exception 
+##            self.affiche_infos("Erreur fatale au chargement de %s" %fn)              
+##        else:           
+##            # dans le cas où le JDC est invalide, on affiche son CR
+##            if not jdc.isvalid():
+##                self.visuCR(mode='JDC')        
+##        self.jdc=jdc
+##        self.jdc.appli = self
+                
         # ------------------------------------------------------------------------------------
         #                         charge le JDC fin
         # ------------------------------------------------------------------------------------
-           self.modified = False
-           self.lastModified = self.fileInfo.lastModified()
-           qApp.restoreOverrideCursor()
+##        self.setModified(0)
+        self.modified = False
+                        
+        qApp.restoreOverrideCursor()
+        
+        self.lastModified = self.fileInfo.lastModified()
+        return jdc
+        
+    def visuCR(self,mode):
+      """
+      Méthode permettant l'affichage du rapport de validation
+      """
+      print 10 * 'visuCR'
+      print self.jdc.report()
+      print 10 * 'visuCR'
+##      if mode == 'JDC':
+##          if not hasattr(self,'JDC') : return
+##          if self.JDC == None : return
+##          titre="rapport de validation du jeu de commandes courant"
+##          cr = self.JDC.report()
+##          #self.update_jdc_courant()
+##      elif mode == 'CATA':
+##          from Noyau.N_CR import CR
+##          cr = CR()
+##          cr.debut = "Début rapport de validation du catalogue"
+##          cr.fin = "Fin rapport de validation du catalogue"
+##          titre="rapport de validation du catalogue"
+##          if hasattr(self,'cata_ordonne_cr') :
+##              cr.add(self.cata_ordonne_cr)
+##          if hasattr(self,'cata_dev_ordonne_cr') :
+##              cr.add(self.cata_dev_ordonne_cr)
+##          for cata in self.cata:
+##              if hasattr(cata,'JdC'):
+##                  cr.add(cata.JdC.report())
+##      texte_cr = str(cr)
+##      self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
         
         
     def handleRenamed(self, fn):
@@ -286,7 +426,8 @@ class JDCEditor(QSplitter):
 
 ##      CONNECTOR.Disconnect(self.JDCDisplay_courant.jdc,"close",self.onClose,(self.JDCDisplay_courant,))
 ##      self.JDCDisplay_courant.supprime()
-        self.jdc.supprime()
+        if self.jdc:
+            self.jdc.supprime()
 ##      self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
 ##      # Active le mecanisme de selection du notebook (selectJDC)
 ##      self.nb.delete(self.nb.getcurselection())
@@ -303,7 +444,7 @@ class JDCEditor(QSplitter):
     
 
     def affiche_infos(self,message):        
-        self.sb.message(message,2000)
+        self.sb.message(message)#,2000)
 
     def updatePanel(self, jdcNode):
         """
index c4b604f98644cfc2ee7319e4060f669e18641c1a..55eec60c5af0daf474958c1437ff75fa37cd3ea6 100644 (file)
@@ -132,8 +132,8 @@ class READERCATA:
       self.appli=appli      
       self.parent=parent
       self.code=self.appli.code
-##      self.appli.format_fichier.set('python') #CS_pbruno tosee
-      self.appli.format_fichier = 'python'
+      self.appli.format_fichier.set('python')
+##      self.appli.format_fichier = 'python'
       self.version_code=self.appli.version_code
       self.fic_cata=None
       self.OpenCata()
@@ -164,14 +164,14 @@ class READERCATA:
           for cata in liste_cata_possibles:
              if self.version_code == cata[1]:
                 self.fic_cata = cata[2]
-##                self.appli.format_fichier.set(cata[3]) #CS_pbruno todo
-                self.appli.format_fichier = cata[3]
+                self.appli.format_fichier.set(cata[3])
+##                self.appli.format_fichier = cata[3]
       elif len(liste_cata_possibles)==1:
           self.fic_cata = liste_cata_possibles[0][2]
           self.code = self.appli.CONFIGURATION.catalogues[0][0]
           self.version_code = liste_cata_possibles[0][1]
-##          self.appli.format_fichier.set(liste_cata_possibles[0][3]) #CS_pbruno todo
-          self.appli.format_fichier = liste_cata_possibles[0][3]
+          self.appli.format_fichier.set(liste_cata_possibles[0][3]) 
+##          self.appli.format_fichier = liste_cata_possibles[0][3]
       else:
           # plusieurs catalogues sont disponibles : il faut demander à l'utilisateur
           # lequel il veut utiliser ...
@@ -405,7 +405,8 @@ class READERCATA:
           version_cata = diag.strSelectedVersion
           self.fic_cata = self.dico_catalogues[version_cata][2]
           self.version_code = version_cata
-          self.appli.format_fichier = self.dico_catalogues[version_cata][3]            
+          ##self.appli.format_fichier = self.dico_catalogues[version_cata][3]
+          self.appli.format_fichier.set( self.dico_catalogues[version_cata][3] )
 
 
    def chooseCata(self,txt):
@@ -416,8 +417,8 @@ class READERCATA:
           version_cata = self.radiobutton.getcurselection()
           self.fic_cata = self.dico_catalogues[version_cata][2]
           self.version_code = version_cata
-##          self.appli.format_fichier.set(self.dico_catalogues[version_cata][3]) #CS_pbruno tosee
-          self.appli.format_fichier = self.dico_catalogues[version_cata][3]
+          self.appli.format_fichier.set(self.dico_catalogues[version_cata][3]) 
+##          self.appli.format_fichier = self.dico_catalogues[version_cata][3]
           self.fenetre_choix_cata.destroy()
       else:
           self.parent.destroy()
index 84a46f569abfd55a662e4bce33f5caefdbf49171..c068158c2c5bfcedc06d6e34363b1eac54794e12 100644 (file)
@@ -1901,29 +1901,29 @@ class ViewManager:
     ## Methods and slots that deal with file and window handling
     ##################################################################
     
-    def handleOpen(self,prog=None):
-        """
-        Public slot to open a Python (or other) file.
-        
-        @param prog name of file to be opened (string or QString)
-        """
-        # Get the file name if one wasn't specified.
-        if prog is None:
-            # set the cwd of the dialog based on the following search criteria:
-            #     1: Directory of currently active editor
-            #     2: Directory of currently active Project
-            #     3: CWD
-            filter = self._getOpenFileFilter()
-            prog = QFileDialog.getOpenFileName(self._getOpenStartDir(),
-                        self.fileFiltersString, self.ui, None, None, filter)
-
-            if prog.isNull():
-                return
-
-        prog = normabspath(unicode(prog))
-
-        # Open up the new file.
-        self.handlePythonFile(prog)
+##    def handleOpen(self,prog=None):
+##        """
+##        Public slot to open a Python (or other) file.
+##        
+##        @param prog name of file to be opened (string or QString)
+##        """
+##        # Get the file name if one wasn't specified.
+##        if prog is None:
+##            # set the cwd of the dialog based on the following search criteria:
+##            #     1: Directory of currently active editor
+##            #     2: Directory of currently active Project
+##            #     3: CWD
+##            filter = self._getOpenFileFilter()
+##            prog = QFileDialog.getOpenFileName(self._getOpenStartDir(),
+##                        self.fileFiltersString, self.ui, None, None, filter)
+##
+##            if prog.isNull():
+##                return
+##
+##        prog = normabspath(unicode(prog))
+##
+##        # Open up the new file.
+##        self.handlePythonFile(prog)
 
     def checkDirty(self, editor):
         """
@@ -2063,26 +2063,44 @@ class ViewManager:
         except IOError:
             pass
 
-    def displayPythonFile(self,fn,lineno=None):
+##    def displayPythonFile(self,fn,lineno=None):
+##        """
+##        Public slot to display a file in an editor.
+##        
+##        @param fn name of file to be opened
+##        @param lineno line number to place the cursor at
+##        """
+##        isPyFile = lineno and lineno < 0
+##        newWin, editor = self.getEditor(fn, isPythonFile=isPyFile)
+##        
+##        if newWin:
+##            self.handleModificationStatusChanged(editor.modified, editor)
+##        self.checkActions(editor)
+##            
+##        if lineno is not None and lineno >= 0:
+##            editor.ensureVisible(lineno)
+##            editor.gotoLine(lineno)
+##        
+##        # insert filename into list of recently opened files
+##        self.addToRecentList(fn)
+        
+    def displayJDC(self,jdc):
         """
         Public slot to display a file in an editor.
         
         @param fn name of file to be opened
         @param lineno line number to place the cursor at
-        """
-        isPyFile = lineno and lineno < 0
-        newWin, editor = self.getEditor(fn, isPythonFile=isPyFile)
+        """        
+        newWin, editor = self.getEditor(None, jdc)
         
         if newWin:
             self.handleModificationStatusChanged(editor.modified, editor)
         self.checkActions(editor)
-            
-        if lineno is not None and lineno >= 0:
-            editor.ensureVisible(lineno)
-            editor.gotoLine(lineno)
         
         # insert filename into list of recently opened files
-        self.addToRecentList(fn)
+        self.addToRecentList(editor.getFileName())
+
+
         
     def newEditorView(self, fn, caller):
         """
@@ -2096,7 +2114,7 @@ class ViewManager:
         print 'newEditorView fn->',fn
         print 'newEditorView caller.jdc->',caller.jdc
         print 50*'+'
-        editor = JDCEditor(fn,self, editor=caller)
+        editor = JDCEditor(fn, None, self, editor=caller)
         self.editors.append(editor)
         self.connect(editor, PYSIGNAL('modificationStatusChanged'),
             self.handleModificationStatusChanged)
@@ -2219,7 +2237,7 @@ class ViewManager:
                 
         return filenames
                 
-    def getEditor(self, fn):
+    def getEditor(self, fn, jdc = None):
         """
         Private method to return the editor displaying the given file.
         
@@ -2238,28 +2256,31 @@ class ViewManager:
                 break
         else:
             from editor import JDCEditor
-            editor = JDCEditor(fn,self)
-            #editor.setOpaqueResize()
-            #editor = JDCEditor(fn,None,self)
-            #editor = Editor(self.dbs,fn,self,isPythonFile=isPythonFile)
+            editor = JDCEditor(fn, jdc, self)
             
-            self.editors.append(editor)
-            self.connect(editor, PYSIGNAL('modificationStatusChanged'),
-                self.handleModificationStatusChanged)
-            self.connect(editor, PYSIGNAL('cursorChanged'), self.handleCursorChanged)
-            self.connect(editor, PYSIGNAL('editorSaved'), self.handleEditorSaved)
-            self.connect(editor, PYSIGNAL('breakpointToggled'), self.handleBreakpointToggled)
-            self.connect(editor, PYSIGNAL('bookmarkToggled'), self.handleBookmarkToggled)
-            self.connect(editor, PYSIGNAL('syntaxerrorToggled'), self.handleSyntaxErrorToggled)
-            self.connect(editor, PYSIGNAL('autoCompletionAPIsAvailable'), 
-                self.handleEditoracAPIsAvailable)
-            self.handleEditorOpened()
-            self.emit(PYSIGNAL('editorOpened'), (fn,))
-            newWin = 1
+            print 'GETEDITOR editor.jdc->', editor.jdc
+            if editor.jdc: # le fichier est bien un jdc            
+                self.editors.append(editor)
+                self.connect(editor, PYSIGNAL('modificationStatusChanged'),
+                    self.handleModificationStatusChanged)
+                self.connect(editor, PYSIGNAL('cursorChanged'), self.handleCursorChanged)
+                self.connect(editor, PYSIGNAL('editorSaved'), self.handleEditorSaved)
+                self.connect(editor, PYSIGNAL('breakpointToggled'), self.handleBreakpointToggled)
+                self.connect(editor, PYSIGNAL('bookmarkToggled'), self.handleBookmarkToggled)
+                self.connect(editor, PYSIGNAL('syntaxerrorToggled'), self.handleSyntaxErrorToggled)
+                self.connect(editor, PYSIGNAL('autoCompletionAPIsAvailable'), 
+                    self.handleEditoracAPIsAvailable)
+                self.handleEditorOpened()
+                self.emit(PYSIGNAL('editorOpened'), (fn,))
+                newWin = 1
+            else:
+                editor.closeIt()
 
         if newWin:
+            print 'GETEDITOR addView'
             self.addView(editor, fn)
-        else:
+        elif editor.jdc:
+            print 'GETEDITOR showView'
             self.showView(editor, fn)
             
         return (newWin, editor)
@@ -2367,7 +2388,7 @@ class ViewManager:
         Public slot to generate a new empty editor.
         """
         from editor import JDCEditor
-        editor = JDCEditor(None,self)
+        editor = JDCEditor(None,None,self)
         
         self.editors.append(editor)
         self.connect(editor, PYSIGNAL('modificationStatusChanged'),
@@ -3801,9 +3822,9 @@ class MyTabview(Tabview):
 ##            filter = self._getOpenFileFilter()            
 ##            fn = QFileDialog.getOpenFileName(self._getOpenStartDir(),
 ##                        self.fileFiltersString, self.ui, None, None, filter)
-                        
+
             fn = QFileDialog.getOpenFileName(self._getOpenStartDir(),
-                        QString("*.comm") , self.ui, None, None, None)
+                        self.trUtf8('JDC Files (*.comm);;''All Files (*)'), self.ui, None, None, None)
 
             if fn.isNull():
                 return
@@ -3816,12 +3837,6 @@ class MyTabview(Tabview):
             self.handleModificationStatusChanged(editor.modified, editor)
         self.checkActions(editor)
         
-        
-            
-##        if lineno is not None and lineno >= 0:
-##            editor.ensureVisible(lineno)
-##            editor.gotoLine(lineno)
-        
 ##        # insert filename into list of recently opened files
         self.addToRecentList(fn)