From 98d8b449b4f7cd393b417eb084fc1468e4d98030 Mon Sep 17 00:00:00 2001 From: pbruno <> Date: Thu, 22 Feb 2007 11:17:25 +0000 Subject: [PATCH] =?utf8?q?add:=20fonctionnalit=C3=A9=20POURSUITE=20+=20INC?= =?utf8?q?LUDE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Interface/compoformule.py | 41 +++++- Interface/compomacro.py | 301 ++++++++++++++++++++++++++++---------- Interface/compooper.py | 2 +- Interface/editor.py | 229 +++++++++++++++++++++++------ Interface/readercata.py | 19 +-- Interface/viewManager.py | 137 +++++++++-------- 6 files changed, 532 insertions(+), 197 deletions(-) diff --git a/Interface/compoformule.py b/Interface/compoformule.py index f7a93c5a..43572b96 100644 --- a/Interface/compoformule.py +++ b/Interface/compoformule.py @@ -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): ## """ ## """ diff --git a/Interface/compomacro.py b/Interface/compomacro.py index cc2353ec..256cb70f 100644 --- a/Interface/compomacro.py +++ b/Interface/compomacro.py @@ -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"), diff --git a/Interface/compooper.py b/Interface/compooper.py index 14077e7d..c5df2d92 100644 --- a/Interface/compooper.py +++ b/Interface/compooper.py @@ -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): diff --git a/Interface/editor.py b/Interface/editor.py index a9fc7b5a..253a9ea2 100644 --- a/Interface/editor.py +++ b/Interface/editor.py @@ -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): """ diff --git a/Interface/readercata.py b/Interface/readercata.py index c4b604f9..55eec60c 100644 --- a/Interface/readercata.py +++ b/Interface/readercata.py @@ -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() diff --git a/Interface/viewManager.py b/Interface/viewManager.py index 84a46f56..c068158c 100644 --- a/Interface/viewManager.py +++ b/Interface/viewManager.py @@ -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) -- 2.39.2