return child
def view3D(self) :
- import TroisDPal
+ from Editeur import TroisDPal
troisD=TroisDPal.TroisDPilote(self.item,self.editor.parent.appliEficas)
troisD.envoievisu()
import browser
from Noyau.N_CR import justify_text
-import prefs
-
class Node(browser.JDCNode):
def getPanel(self):
"""
#
# ======================================================================
+print "INTERFACEQT4"
import types,sys,os
import traceback
from PyQt4 import *
from Editeur import session
from Editeur import comploader
from Editeur import Objecttreeitem
-#import panelsQT
import browser
import readercata
import qtCommun
-import prefs
VERSION_EFICAS = "EFICAS v1.14"
def __init__ (self,fichier = None, jdc = None, QWParent=None, units = None, include=0 ,appli=None, vm=None):
#----------------------------------------------------------------------------------------------------------#
- #print "debut JDCEditor __init__"
- print "fichier", fichier,"jdc",jdc,"units",units,"include",include
+ #print "fichier", fichier,"jdc",jdc,"units",units,"include",include
QSplitter.__init__(self, QWParent)
self.appliEficas = appli
self.appli = appli #---- attendu par IHM
else :
self.salome=0
- self.code = prefs.code
+ self.code = self.appliEficas.CONFIGURATION.code
self.version_code = VERSION_CODE
self.titre=VERSION_EFICAS + ' pour '+ self.code
self.jdc_openturn_std=""
self.ihm="QT"
- from Editeur import configuration
+ import configuration
self.CONFIGURATION = self.appliEficas.CONFIGURATION
self.CONFIGStyle = self.appliEficas.CONFIGStyle
"""
import Extensions.jdc_include
JdC_aux=Extensions.jdc_include.JdC_include
- print JdC_aux
CONTEXT.unset_current_step()
jaux=self.readercata.cata[0].JdC( procedure="",
text=p.convert('exec',appli)
if not p.cr.estvide():
self.affiche_infos("Erreur à la conversion")
+ else :
+ self.affiche_infos("Type de fichier non reconnu")
+ QMessageBox.critical( self, "Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
+ return None
CONTEXT.unset_current_step()
- ## os.chdir(self.initialdir)
jdc=self.readercata.cata[0].JdC(procedure=text,
appli=self,
cata=self.readercata.cata,
#------------------------------#
def affiche_infos(self,message):
#------------------------------#
+ if self.salome :
+ if not hasattr(self.appliEficas,'MessageLabel') :
+ self.appliEficas.leLayout=QDockWindow(self.appliEficas)
+ self.appliEficas.MessageLabel = QLabel(self.appliEficas.leLayout,"MessageLabel")
+ self.appliEficas.MessageLabel.setAlignment(Qt.AlignBottom)
+ self.appliEficas.leLayout.setWidget(self.appliEficas.MessageLabel)
+ self.appliEficas.moveDockWindow(self.appliEficas.leLayout,Qt.DockBottom)
+ self.appliEficas.MessageLabel.setText(message)
+ self.appliEficas.MessageLabel.show()
+ self.appliEficas.leLayout.show()
if self.sb:
self.sb.showMessage(message)#,2000)
Ne permet que la copie d'objets de type Commande ou MCF
"""
self.chercheNoeudSelectionne()
- print "noeud a copier", self.node_selected.item.GetLabelText()[0]
- print "noued apres " ,self.QWParent.noeud_a_editer.item.GetLabelText()[0]
+ index_noeud_a_couper=self.QWParent.noeud_a_editer.treeParent.children.index(self.QWParent.noeud_a_editer)
if self.QWParent.noeud_a_editer == None :
QMessageBox.information( self,
"Copie impossible",
# si possible on renomme l objet comme le noeud couper
if self.QWParent.edit == "couper":
- #nom = self.QWParent.noeud_a_editer.item.object.sd.nom
- print self.QWParent.noeud_a_editer.item.object.sd.nom
+ print self.QWParent.noeud_a_editer.child
+ index_ajoute=child.treeParent.children.index(child)
+ if index_ajoute <= index_noeud_a_couper :
+ index_noeud_a_couper=index_noeud_a_couper + 1
item=self.QWParent.noeud_a_editer.item
- self.QWParent.noeud_a_editer.delete()
+ noeud_a_supprimer=self.QWParent.noeud_a_editer.treeParent.children[index_noeud_a_couper]
+ noeud_a_supprimer.delete()
child.item.update(item)
#test,mess = child.item.nomme_sd(nom)
child.select()
#---------------------#
return self.fichier
- #---------------------------#
+ #----------------------------------#
def writeFile(self, fn, txt = None):
- #------------------------------#
+ #----------------------------------#
"""
Public slot to write the text to a file.
txt += eol
else:
txt += eol
-
try:
f = open(fn, 'wb')
f.write(txt)
self.trUtf8('The file <b>%1</b> could not be saved.<br>Reason: %2')
.arg(unicode(fn)).arg(str(why)))
return 0
+ #------------------------------------
+ def writeOpenturnsWrapper(self,fn) :
+ #------------------------------------
+ print "writeOpenturnsWrapper"
+ base=fn[:fn.rfind(".")]
+ self.jdc_openturns_wrapperfile=self.generator.getOpenturnsXML()
+ fileXML=base + '.xml'
+ self.writeFile(fileXML,self.jdc_openturns_wrapperfile)
+
+
+ #------------------------------------
+ def writeOpenturnsStudy(self,fn) :
+ #------------------------------------
+ base=fn[:fn.rfind(".")]
+ fileSTD=base + '_std.py'
+ self.writeFile(fileSTD,self.jdc_openturns_study)
-# #------------------------------------
-# def writeFilesOpenturns(self,fn) :
-# #------------------------------------
-# base=fn[:fn.rfind(".")]
-# fileXML=base + '.xml'
-# fileSTD=base + '_std.py'
-# self.writeFile(fileXML,self.jdc_openturn_xml)
-# self.writeFile(fileSTD,self.jdc_openturn_std)
-#
-#
#-----------------------------#
def get_text_JDC(self,format):
#-----------------------------#
if generator.plugins.has_key(format):
# Le generateur existe on l'utilise
- g=generator.plugins[format]()
- jdc_formate=g.gener(self.jdc,format='beautifie')
- if format == "openturns" :
- self.jdc_openturn_xml=g.getOpenturnsXML()
- self.jdc_openturn_std=g.getOpenturnsSTD()
- if not g.cr.estvide():
+ self.generator=generator.plugins[format]()
+ jdc_formate=self.generator.gener(self.jdc,format='beautifie')
+ if not self.generator.cr.estvide():
self.affiche_infos("Erreur à la generation")
QMessageBox.critical( self, "Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
- return
+ return ""
else:
return jdc_formate
else:
# Il n'existe pas c'est une erreur
self.affiche_infos("Format %s non reconnu" % format)
- QMessageBox.critical( self, "Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
- return
+ QMessageBox.critical( self, "Format "+format+" non reconnu","EFICAS ne sait pas convertir le JDC selon le format "+format)
+ return ""
#-----------------------------------------#
newName = None
if self.fichier is None or saveas:
if path is None:
- #PN --> modifier selon les prefs
- path="/tmp"
+ path=self.CONFIGURATION.initialdir
selectedFilter = QString('')
fn = QFileDialog.getSaveFileName( self,
self.trUtf8("sauvegarde"), path,
self.appliEficas.addToRecentList(newName)
self.tree.racine.item.getObject().nom=os.path.basename(newName)
self.tree.racine.update_node_label()
-# if self.code == "OPENTURNS" :
-# self.writeFilesOpenturns(fn)
+
+ if self.code == "OPENTURNS_WRAPPER" :
+ self.writeOpenturnsWrapper(fn)
# if self.salome :
# self.QWParent.appli.addJdcInSalome( self.fichier)
# if self.code == 'ASTER':
texte = texte+'Donnez le nom du fichier dont vous \n voulez faire une poursuite'
QMessageBox.information( self, titre,texte)
- #PN --> les prefs
- fn = QFileDialog.getOpenFileName( self, titre)
+ path=self.CONFIGURATION.savedir
+ fn = QFileDialog.getOpenFileName( self, titre,path)
if fn.isNull():
# ce retour est impose par le get_file d'I_JDC
# Une erreur a été rencontrée
jdcText = ''
return ulfile, jdcText
+
if __name__=='__main__':
+ import prefs # dans main
if hasattr(prefs,'encoding'):
# Hack pour changer le codage par defaut des strings
import sys
"""
# Modules Python
import sys
-from qt import *
+from PyQt4.QtGui import *
-# Modules Eficas
-import prefs
-if hasattr(prefs,'encoding'):
- # Hack pour changer le codage par defaut des strings
- import sys
- reload(sys)
- sys.setdefaultencoding(prefs.encoding)
- del sys.setdefaultencoding
- # Fin hack
-
-from Editeur import import_code
-from Editeur import session
+from Editeur import import_code
+from Editeur import session
+from qtEficas import Appli
def lance_eficas(code=None,fichier=None):
"""
Lance l'appli EFICAS
"""
# Analyse des arguments de la ligne de commande
- if code !=None : prefs.code=code
- import qtEficas
options=session.parse(sys.argv)
code=options.code
app = QApplication(sys.argv)
- mw = qtEficas.Appli(code=code)
- app.setMainWidget(mw)
- app.connect(app, SIGNAL("lastWindowClosed()"), app, SLOT("quit()"))
- mw.show()
- mw.ouvreFichiers()
- res = app.exec_loop()
- sys.exit(res)
+ Eficas=Appli(code=code)
+ Eficas.show()
+ res=app.exec_()
+ sys.exit(res)
+
self.TWChoix.setCurrentIndex(2)
def BBrowsePressed(self):
- print self.node.makeEdit
self.node.makeEdit()
def BOkIncPressed (self):
if not text:
return
+ self.editor.init_modif()
+
try :
self.node.item.object.change_fichier_init(nomFichier,text)
commentaire = "Fichier modifie : " + self.node.item.get_nom()
def BChangeFilePressed(self):
- userDir=os.path.expanduser("~/Eficas_install/")
+ userDir=self.node.appliEficas.CONFIGURATION.initialdir
fn = QFileDialog.getOpenFileName(self.node.appliEficas,
self.node.appliEficas.trUtf8('Fichier Include'),
self.node.appliEficas.trUtf8('All Files (*);;''JDC Files (*.comm);;'))
if res == 1 : return
appli=self.configuration.appli
- rep_ini=self.configuration.rep_ini
+ repIni=self.configuration.REPINI
fic_ini_util=self.configuration.fic_ini_utilisateur
old_fic_ini_util=fic_ini_util+"_old"
commande="mv "+fic_ini_util+" "+old_fic_ini_util
os.system(commande)
- from Editeur import configuration
- configNew=configuration.CONFIG(appli,rep_ini)
+ import configuration
+ configNew=configuration.CONFIG(appli,repIni)
self.configuration=configNew
appli.CONFIGURATION=configNew
self.configuration.save_params()
import string,types,os,re
# Modules Eficas
-import prefs
from PyQt4 import *
from PyQt4.QtGui import *
# Modules Python
import string,types,os
-# Modules Eficas
-import prefs
-
from PyQt4 import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
+
+# Modules Eficas
from monPlusieursIntoPanel import MonPlusieursIntoPanel
from monPlusieursIntoPanel import DPlusInto
from qtCommun import QTPanel
from politiquesValidation import PolitiquePlusieurs
-# Import des panels
class MonPlusieursASSDPanel(MonPlusieursIntoPanel):
"""
self.editor.affiche_infos("Valeurs Ajoutées")
def BImportPressed(self):
- init=QString( self.editor.CONFIGURATION.rep_user)
+ init=QString( self.editor.CONFIGURATION.initialdir)
fn = QFileDialog.getOpenFileName(self.node.appliEficas,
self.node.appliEficas.trUtf8('Fichier de données'),
- QString(),
+ init,
self.trUtf8('All Files (*)',))
if fn == None : return
if fn == "" : return
name=str(self.LBNouvCommande.currentItem().text())
if name==QString(" "): return
if name.find("GROUPE :")==0 : return
- print self.editor
- print self.editor.__class__
self.editor.init_modif()
print self.node.__class__
new_node = self.node.append_child(name,'first')
def detruitBouton(self):
mc = self.node.item.get_definition()
type = mc.type[0]
- if not('grma' in repr(type)) or not(self.editor.salome) :
+ #if not('grma' in repr(type)) or not(self.editor.salome) :
+ if not(('grma' in repr(type)) or ('grno' in repr(type))) or not(self.editor.salome) :
self.BSalome.close()
self.BView2D.close()
import string,types,os
# Modules Eficas
-import prefs
-
from PyQt4 import *
from PyQt4.QtGui import *
+++ /dev/null
-# -*- coding: utf-8 -*-
-
-# ======================================================================
-# CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
-#
-# THIS PROGRAM 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
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
-#
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
-#
-#
-# ======================================================================
-
-lang='fr'
-
from PyQt4 import *
from PyQt4.QtGui import *
from PyQt4.QtCore import *
-import prefsQT
# Import des panels
"""
def __init__(self,parent):
QDialog.__init__(self,parent)
+ self.parent=parent
self.setupUi(self)
self.resize( QSize(600,507).expandedTo(self.minimumSizeHint()) )
def saveFile(self):
#recuperation du nom du fichier
+ userDir=os.path.expanduser("~/.Eficas_install/")
fn = QFileDialog.getSaveFileName(None,
self.trUtf8("Save File"),
- self.trUtf8("/tmp"))
- #if not fn.isNull():
- # print "hhhhhhhhhhhhhhjjjjjjjjjjjjjjjjjjjjkkkkkkkkkkkkk"
- # if QFileInfo(fn).exists():
- # abort = QMessageBox.warning(self,
- # self.trUtf8("Save File"),
- # self.trUtf8("The file <b>%1</b> already exists.")
- # .arg(fn),
- # self.trUtf8("&Overwrite"),
- # self.trUtf8("&Abort"))
- # if abort:
- # return
- # fn = unicode(QDir.convertSeparators(fn))
- #else:
- # return
-
- #ecriture du fichier
+ self.trUtf8(userDir))
if fn.isNull() : return
try:
f = open(fn, 'wb')
# -*- coding: iso-8859-1 -*-
import os, sys
-REPINI=os.path.dirname(os.path.abspath(__file__))
-INSTALLDIR=os.path.join(REPINI,'..')
-sys.path.append(INSTALLDIR)
-sys.path.append(INSTALLDIR+"/UiQT4")
-sys.path.append(INSTALLDIR+"/InterfaceQT4")
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from myMain import Ui_Eficas
from viewManager import MyTabview
-from Editeur import configuration
from Editeur import session
+dirCode={"ASTER":"Aster","OPENTURNS_WRAPPER":"Openturns_Wrapper"}
class Appli(Ui_Eficas,QMainWindow):
self.salome=salome
self.top = self #(pour CONFIGURATION)
- self.initPrefs()
+ import prefs
+ self.REPINI=prefs.REPINI
+ import configuration
self.CONFIGURATION = configuration.make_config(self,prefs.REPINI)
self.CONFIGStyle = configuration.make_config_style(self,prefs.REPINI)
+ if hasattr(prefs,'encoding'):
+ import sys
+ reload(sys)
+ sys.setdefaultencoding(prefs.encoding)
QMainWindow.__init__(self)
Ui_Eficas.__init__(self)
#self.monAssistant=QAssistantClient(QString(""), self.viewmanager)
-
#if self.salome :
# from Editeur import session
# self.ouvreFichiers()
- from Editeur import session
self.ouvreFichiers()
self.ficPatrons={}
idx=idx+1
def initRecents(self):
- #try :
- if 1 :
+ try :
rep=self.CONFIGURATION.rep_user
monFichier=rep+"/listefichiers_"+self.code
index=0
l=(ligne.split("\n"))[0]
self.recent.append(l)
index=index+1
- #except : pass
- else :
+ except :
pass
try : f.close()
def handleOpenPatrons(self):
idx=self.sender()
- fichier=REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
+ fichier=self.REPINI+"/../Editeur/Patrons/"+self.code+"/"+self.ficPatrons[idx]
self.viewmanager.handleOpen(fichier=fichier, patron = 1)
def handleOpenRecent(self):
def NewInclude(self):
self.viewmanager.newIncludeEditor()
- def initPrefs(self):
- if code == "ASTER" :
- from Aster import prefs
- import sys
- sys.path.append(INSTALLDIR+"/Aster")
- else :
- import prefs
- #try :
- if 1 :
- apply(Appli.__dict__[code],(self,))
- #except :
- else:
- pass
- if hasattr(prefs,'encoding'):
- import sys
- reload(sys)
- sys.setdefaultencoding(prefs.encoding)
if __name__=='__main__':
import re
# Modules Eficas
-import prefs
from Noyau.N_CR import CR
from Editeur.utils import init_rep_cata_dev
-from Editeur import analyse_catalogue
-from Editeur import autre_analyse_cata
-from Editeur import uiinfo
+import analyse_catalogue
+import autre_analyse_cata
+import uiinfo
from monChoixCata import MonChoixCata
from PyQt4 import *
# traitement des clefs documentaires
#
self.traite_clefs_documentaires()
-
- # chargement et analyse des catalogues développeur (le cas échéant)
- #
- if self.appliEficas.CONFIGURATION.isdeveloppeur == 'OUI' :
- init_rep_cata_dev(self.fic_cata,self.appliEficas.CONFIGURATION.path_cata_dev)
- fic_cata_dev = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
- if os.path.isfile(fic_cata_dev):
- # il y a bien un catalogue développeur : il faut récupérer le module_object associé ...
- test = self.compile_cata(fic_cata_dev,fic_cata_dev+'c')
- if not test :
- showinfo("Compilation catalogue développeur",
- "Erreur dans la compilation du catalogue développeur")
- self.cata = (self.cata,)
- else:
- self.cata_dev =self.import_cata(fic_cata_dev)
- #self.Retrouve_Ordre_Cata_Developpeur()
- self.Retrouve_Ordre_Cata_Developpeur_autre()
- self.cata = (self.cata,self.cata_dev)
- else:
- self.cata = (self.cata,)
- else:
- self.cata = (self.cata,)
+ self.cata=(self.cata,)
titre="Eficas V1.14 avec le catalogue " + os.path.basename(self.fic_cata)
if self.appliEficas.top:
self.appliEficas.setWindowTitle(titre)
def import_cata(self,cata):
"""
- Réalise l'import du catalogue dont le chemin d'acca¨s est donné par cata
+ Réalise l'import du catalogue dont le chemin d'acces est donné par cata
"""
nom_cata = os.path.splitext(os.path.basename(cata))[0]
rep_cata = os.path.dirname(cata)
self.Get_Ordre_Cata(mode='cata')
self.appliEficas.affiche_infos("Catalogue standard chargé")
- def Retrouve_Ordre_Cata_Developpeur(self):
- """
- Retrouve l'ordre des mots-clés dans le catalogue, cad :
- - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
- l'ordre des mots-clés dans le catalogue
- - s'il n'a pas été modifié, relie le fichier pickle
- """
- if self.code != 'ASTER' : return
- fic_cata = os.path.join(self.appliEficas.CONFIGURATION.path_cata_dev,'cata_developpeur.py')
- message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev
- cata_dev_ordonne = analyse_cata.analyse_catalogue(self,self.fic_cata)
- self.cata_dev_ordonne_cr = cata_dev_ordonne.cr
- cata_dev_ordonne_dico = cata_dev_ordonne.entites
- self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
- self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
-
- def Retrouve_Ordre_Cata_Developpeur_autre(self):
- """
- Retrouve l'ordre des mots-clés dans le catalogue, cad :
- - si ce dernier a été modifié, relance l'analyse du catalogue pour déterminer
- l'ordre des mots-clés dans le catalogue
- - s'il n'a pas été modifié, relie le fichier pickle
- """
- if self.code != 'ASTER' : return
- message="Chargement catalogue développeur présent dans :\n %s..." % self.appliEficas.CONFIGURATION.path_cata_dev
- cata_dev_ordonne_dico,self.appliEficas.liste_simp_reel=autre_analyse_cata.analyse_catalogue(self.cata)
- self.cata_ordonne_dico.update(cata_dev_ordonne_dico)
- self.appliEficas.affiche_infos(" catalogue(s) développeur(s) chargé(s)" )
def Get_Ordre_Cata(self,mode='pickle'):
"""
if fichier is None:
fichier = QFileDialog.getOpenFileName(self.appliEficas,
self.appliEficas.trUtf8('Ouvrir Fichier'),
- self.getOpenStartDir(),
+ self.appliEficas.CONFIGURATION.initialdir,
self.appliEficas.trUtf8('JDC Files (*.comm);;''All Files (*)'))
if fichier.isNull(): return
- from utilitaires import normabspath
- fichier = normabspath(unicode(fichier))
+ fichier = os.path.abspath(unicode(fichier))
+ self.appliEficas.addToRecentList(fichier)
maPage=self.getEditor( fichier,units=units)
def handleClose(self,doitSauverRecent = 1):
- print "passage dans handleClose"
- print self.dict_editors
+ #print "passage dans handleClose"
+ #print self.dict_editors
if doitSauverRecent : self.appliEficas.sauveRecents()
index=self.myQtab.currentIndex()
if index < 0 : return
indexEditor=0
for indexEditor in self.dict_editors.keys():
editor=self.dict_editors[indexEditor]
- from utilitaires import samepath
- if samepath(fichier, editor.getFileName()):
+ if self.samepath(fichier, editor.getFileName()):
abort = QMessageBox.warning(self.appliEficas,
self.appliEficas.trUtf8("Fichier"),
self.appliEficas.trUtf8("Le fichier <b>%1</b> est deja ouvert.").arg(fichier),
except :
return ""
+ def samepath(self,f1, f2):
+ """
+ compare two paths.
+ """
+ if f1 is None or f2 is None: return 0
+ if os.path.normcase(os.path.normpath(f1)) == os.path.normcase(os.path.normpath(f2)) : return 1
+ return 0
+
def checkDirty(self, editor):
"""