From: PASCALE NOYRET Date: Thu, 22 Feb 2024 12:31:55 +0000 (+0100) Subject: merge avec Web V0 X-Git-Tag: V_demo_28_mars_2024~42 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=0d70a2ef1f501567ca0e967053a02ca376ea3bf3;p=tools%2Feficas.git merge avec Web V0 --- diff --git a/Accas/accessor/A_ETAPE.py b/Accas/accessor/A_ETAPE.py index 285f9585..b9180e2c 100644 --- a/Accas/accessor/A_ETAPE.py +++ b/Accas/accessor/A_ETAPE.py @@ -226,6 +226,9 @@ class ETAPE(A_MCCOMPO.MCCOMPO): # Normalement on ne devrait pas passer ici return 0, "Normalement on ne devrait pas passer ici" + def getIndexDsParent(self): + return self.parent.getIndex(self) + def getSdprods(self, nom_sd): """ Fonction : retourne le concept produit par l etape de nom nom_sd diff --git a/Accas/accessor/A_JDC.py b/Accas/accessor/A_JDC.py index f8288821..1954908c 100644 --- a/Accas/accessor/A_JDC.py +++ b/Accas/accessor/A_JDC.py @@ -60,6 +60,9 @@ class JDC(A_OBJECT.OBJECT): self.recorded_units = {} self.old_recorded_units = {} + def isOblig(self): + return 1 + def getIndex(self, objet): """ Retourne la position d'objet dans la liste self @@ -556,6 +559,7 @@ class JDC(A_OBJECT.OBJECT): # Apres suppression de l'etape il faut controler que les etapes # suivantes ne produisent pas des concepts DETRUITS dans op_init de etape + etapeSup = etape if index_etape > 0: index_etape = index_etape - 1 etape = self.etapes[index_etape] @@ -564,7 +568,7 @@ class JDC(A_OBJECT.OBJECT): self.controlContextApres(etape) self.resetContext() - CONNECTOR.Emit(self, "supp", etape) + CONNECTOR.Emit(self, "supp", etapeSup) self.finModif() return 1 @@ -1136,7 +1140,24 @@ class JDC(A_OBJECT.OBJECT): itemMCPath = mc.getChild("MCPath") itemMCPath.setValeur(mc.variableDeterministe.getMCPath()) - # ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes de processing et Accas.validation : a reintegrer + def getDicoForFancy(self): + monDico = {} + monDico["title"] = self.code + monDico["key"] = self.idUnique + monDico["classeAccas"] = "JDC" + monDico["validite"] = self.getValid() + if not (monDico["validite"]): + monDico["validite"] = 0 + # self.editor.fichier ? + listNodes = [] + for e in self.etapes: + listNodes.append(e.getDicoForFancy()) + monDico["children"] = listNodes + return monDico + + + + # ATTENTION SURCHARGE : les methodes ci-dessus surchargent des methodes de Noyau et Validation : a reintegrer def getFile(self, unite=None, fic_origine=""): """ diff --git a/Accas/accessor/A_MCLIST.py b/Accas/accessor/A_MCLIST.py index 3b426509..707305ef 100644 --- a/Accas/accessor/A_MCLIST.py +++ b/Accas/accessor/A_MCLIST.py @@ -69,7 +69,6 @@ class MCList: for i in self.data: listeDict.append(i.getDicoObjetsCompletsPourTree()) return listeDict - def getDicoForFancy(self): listeDict = [] nbFactDejaLa = len(self.data) @@ -83,6 +82,7 @@ class MCList: dico["repetable"] = 0 listeDict.append(dico) return listeDict + def isOblig(self): """ Une MCList n'est jamais obligatoire (meme si le MCFACT qu'elle represente l'est diff --git a/Accas/accessor/A_MCSIMP.py b/Accas/accessor/A_MCSIMP.py index 5938d324..5c116b6c 100644 --- a/Accas/accessor/A_MCSIMP.py +++ b/Accas/accessor/A_MCSIMP.py @@ -64,6 +64,29 @@ class MCSIMP(A_OBJECT.OBJECT): self.definition.siValide(self) return validite + + def getDicoForFancy(self): + # print ('MCSIMP getDicoForFancy ', self) + monDico = {} + monDico["title"] = self.nom + monDico["key"] = self.idUnique + if self.valeur != None: + monDico["wValue"] = str(self.valeur) + else: + monDico["wValue"] = "" + monDico["classeAccas"] = self.nature + monDico["validite"] = self.getValid() + if monDico["validite"] == None: + monDico["validite"] = self.isValid() + monDico["max"] = self.definition.max + monDico["min"] = self.definition.min + monDico["into"] = self.definition.into + monDico["statut"] = self.definition.statut + # a priori jamais vrai sauf si on a change un nom de userassd + if monDico["validite"] == 0 and monDico["statut"] == "f": + monDico["validite"] == 2 + + return monDico def getNomConcept(self): p = self while p.parent: diff --git a/Accas/accessor/A_OBJECT.py b/Accas/accessor/A_OBJECT.py index 9c78e4ce..8093cccc 100644 --- a/Accas/accessor/A_OBJECT.py +++ b/Accas/accessor/A_OBJECT.py @@ -273,7 +273,7 @@ class OBJECT: for leNode in lesNodes: listeNodes.append(leNode) monDico["children"] = listeNodes - print (self.nature) + #print (self.nature) if self.nature != "MCSIMP" and self.nature != "MCLIST" and self.nature != "JDC": monDico["infoOptionnels"] = self.calculOptionnelInclutBlocs() return monDico diff --git a/Editeur/editor.py b/Editeur/editor.py index c307fc39..ec87b14c 100755 --- a/Editeur/editor.py +++ b/Editeur/editor.py @@ -26,6 +26,7 @@ import traceback import Accas.IO.reader as reader import Accas.IO.writer as writer +from Accas.extensions.eficas_exception import EficasException Dictextensions = {"MAP": ".map", "TELEMAC": ".cas"} debug = False @@ -38,7 +39,7 @@ class Editor: Editeur de jdc """ - def __init__(self, appliEficas, fichier=None, jdc=None, units=None, include=0): + def __init__(self, appliEficas, fichier=None, jdc=None, include=0): # ----------------------------------------------------------------------------# if debug: print("dans le init de Editor") self.appliEficas = appliEficas @@ -128,27 +129,25 @@ class Editor: try: #if 1 : self.jdc = self.readFile(self.fichier) - except: + except Exception as e : #else : print("mauvaise lecture du fichier") + raise EficasException("str(e)") if self.appliEficas.salome: try: self.appliEficas.addJdcInSalome(self.fichier) - except: + except Exception as e: print("mauvais enregistrement dans Salome") + raise EficasException("str(e)") else: self.jdc = jdc - if self.jdc is not None and units is not None: - self.jdc.recorded_units = units - self.jdc.old_recorded_units = units - else: if not self.jdc: # nouveau jdc if not include: - self.jdc = self._newJDC(units=units) + self.jdc = self._newJDC() else: - self.jdc = self._newJDCInclude(units=units) + self.jdc = self._newJDCInclude() self.nouveau = 1 if self.jdc: @@ -211,11 +210,11 @@ class Editor: monJDCReader.text = texteNew text = monJDCReader.convert("exec", self.appliEficas) if not monJDCReader.cr.estvide(): - self.afficheInfos("Erreur a la conversion", "red") + self.afficheMessage("Erreur a la conversion", "red") else: text = monJDCReader.text else: - self.afficheInfos("Type de fichier non reconnu", "red") + self.afficheMessage("Type de fichier non reconnu", "red") self.informe( "Type de fichier non reconnu", "EFICAS ne sait pas ouvrir le type de fichier " @@ -240,9 +239,9 @@ class Editor: self.monJDCReader = monJDCReader return jdc - # ---------------------------------------# - def _newJDC(self, texte = "", units=None): - # ---------------------------------------# + # ----------------------------# + def _newJDC(self, texte = ""): + # ----------------------------# """ Initialise un nouveau JDC avec le texte passe en parametre """ @@ -261,15 +260,12 @@ class Editor: ) jdc.lang = self.appliEficas.langue - if units is not None: - jdc.recorded_units = units - jdc.old_recorded_units = units jdc.editor = self return jdc - # --------------------------------# - def _newJDCInclude(self, units=None): - # --------------------------------# + # ----------------------# + def _newJDCInclude(self): + # ----------------------# """ Initialise un nouveau JDC include vierge Inutilise depuis Aster mais interessant @@ -303,9 +299,6 @@ class Editor: ) J.editor = self J.analyse() - if units is not None: - J.recorded_units = units - J.old_recorded_units = units return J # -----------------------# @@ -319,11 +312,11 @@ class Editor: p.readfile(file) text = p.convert("execnoparseur") if not p.cr.estvide(): - self.afficheInfos("Erreur a la conversion", "red") + self.afficheMessage("Erreur a la conversion", "red") return text else: # Il n'existe pas c'est une erreur - self.afficheInfos("Type de fichier non reconnu", "red") + self.afficheMessage("Type de fichier non reconnu", "red") self.informe( "Type de fichier non reconnu", "EFICAS ne sait pas ouvrir le type de fichier " @@ -402,7 +395,7 @@ class Editor: # -----------------------# # on ajoute les regles texteGlobal, testOK = self.jdc.verifRegles() - return texteGglobal + return texteGlobal # ---------------------# def getFileName(self): @@ -450,7 +443,7 @@ class Editor: "Le fichier" + str(fn) + "n a pas pu etre sauvegarde :", str(why), ) - self.afficheInfos( + self.afficheMessage( "Le fichier" + str(fn) + "n a pas pu etre sauvegarde ", "red" ) return 0 @@ -547,7 +540,7 @@ class Editor: dico = self.myWriter.Dico return dico else: - self.afficheInfos( + self.afficheMessage( tr("Format %s non reconnu", "Dictionnaire Imbrique"), "red" ) return "" @@ -694,7 +687,7 @@ class Editor: print("!!!!!!!!!!!!!!!!!!!!!!!!!!!") # --------------------------------------# - def afficheInfos(self, txt, couleur=None): + def afficheMessage(self, txt, couleur=None): # --------------------------------------# # methode differenre avec et sans ihm print(txt) diff --git a/Editeur/editor_manager.py b/Editeur/editor_manager.py index 544af1e4..21b75ccb 100644 --- a/Editeur/editor_manager.py +++ b/Editeur/editor_manager.py @@ -41,9 +41,9 @@ class EditorManager(object): self.doubles = {} - # ---------------------------------------------------------------- - def getEditor(self, fichier=None, jdc=None, units=None, include=0): - # ---------------------------------------------------------------- + # ----------------------------------------------------- + def getEditor(self, fichier=None, jdc=None, include=0): + # ----------------------------------------------------- """ Retourne un nouvel editeur ou None si doublon """ @@ -58,7 +58,7 @@ class EditorManager(object): self.appliEficas.afficheMessage('Eficas sans Ihm', 'Fichier deja ouvert') return None from Editeur.editor import Editor - editor = Editor(self.appliEficas, fichier, jdc, units, include) + editor = Editor(self.appliEficas, fichier, jdc, include) if not editor.jdc : self.appliEficas.afficheMessage('Eficas sans Ihm', 'impossible d allouer un editor') return None @@ -68,14 +68,6 @@ class EditorManager(object): editor.idEditor = idEditor return editor - # ------------------------ - def getEditorById(self,id): - # ------------------------ - if id in self.dictEditors: - editor = self.dictEditors[indexEditor] - return editor - return None - # -------------------------------- def setCurrentEditorById(self,id): # -------------------------------- diff --git a/Editeur/eficas_appli.py b/Editeur/eficas_appli.py index 0ac25294..27476bc4 100755 --- a/Editeur/eficas_appli.py +++ b/Editeur/eficas_appli.py @@ -19,9 +19,11 @@ # import os, sys + from Accas.extensions.eficas_exception import EficasException from Editeur import session from Editeur.getVersion import getEficasVersion +from Accas.extensions.eficas_translation import tr class EficasAppli: @@ -71,7 +73,7 @@ class EficasAppli: try: from Accas import eficasSalome Accas.SalomeEntry = eficasSalome.SalomeEntry - except e: + except Exception as e: print ("impossible d importer les salome entry") print (str(e)) @@ -137,23 +139,17 @@ class EficasAppli: texte = p.convert("execnoparseur") return texte - #------------------------------------------------------------------ - def newEditor(self, fichier=None, jdc=None, units=None, include=0): - #------------------------------------------------------------------ + #------------------------------------------------------ + def getEditor(self, fichier=None, jdc=None, include=0): + #------------------------------------------------------ #PN reflechir a ce que cela veut dire d avoir plusieurs editeurs if (hasattr(self, "editor")) and self.editor != None: print("un seul editeur par application eficas_appli ") sys.exit() - self.editor = self.editorManager.getNewEditor() - return self.editorId - - #------------------- - def getEditor(self): - #------------------- - if (hasattr(self, "editor")) and self.editor != None: return self.editor - self.newEditor() + self.editor = self.editorManager.getEditor(fichier, jdc, include) return self.editor + #-------------------------- def getEditorById(self,id): #-------------------------- @@ -170,7 +166,7 @@ class EficasAppli: try: monEditor = self.editorManager.openFile(fichier) except EficasException as exc: - afficheMessage(self, 'erreur ouverture fichier', str(exc),critical=True) + self.afficheMessage( 'erreur ouverture fichier', str(exc),critical=True) monEditor = None return monEditor @@ -234,10 +230,10 @@ class EficasAppli: for study in session.d_env.studies: os.chdir(cwd) d = session.getUnit(study, self) - self.editorManager.openFile(fichier=study["comm"], units=d) + self.editorManager.openFile(fichier=study["comm"]) - #---------------------- + #--------------------- def saveFullFile(self): #---------------------- # Pour Telemac @@ -247,7 +243,7 @@ class EficasAppli: def fileNew(self): #------------------- try: - self.editorManager.newEditor() + self.editorManager.getEditor() except EficasException as exc: msg = str(exc) if msg != "": diff --git a/Editeur/eficas_go.py b/Editeur/eficas_go.py index e7009e33..4385b4ce 100755 --- a/Editeur/eficas_go.py +++ b/Editeur/eficas_go.py @@ -62,8 +62,8 @@ def lanceQtEficas(code=None, versionCode = None, multi=False, langue="en", GUIP sys.exit(res) -def getEficas( code=None, multi=False, langue="en", forceXML=False, fichierCata=None,GUIPath=None, appWeb = None): -# ------------------------------------------------------------------------------------------------------------------ +def getEficas( code=None, ssCode = None, versionCode = None , multi=False, langue="en", GUIPath=None, appWeb = None, fichierCata = None): +# --------------------------------------------------------------------------------------------------------------------------------------- """ instancie l'appli EFICAS sans Ihm """ @@ -72,7 +72,6 @@ def getEficas( code=None, multi=False, langue="en", forceXML=False, fichierCata= options = session.parse(sys.argv) if options.code != None: code = options.code - if forceXML: options.withXSD = True if GUIPath in ('QT5', 'cinqC') : pathAbso=os.path.abspath(os.path.join(os.path.dirname(__file__),'..','InterfaceGUI',GUIPath)) @@ -86,7 +85,7 @@ def getEficas( code=None, multi=False, langue="en", forceXML=False, fichierCata= print ('lancement de Eficas avec GUIPath = {}'.format(GUIPath)) from Editeur.eficas_appli import EficasAppli - Eficas = EficasAppli(code=code, multi=multi, langue=langue, ssCode=ssCode, versionCode=versionCode, fichierCata=fichierCata, GUIPath=GUIPath, appWeb=None) + Eficas = EficasAppli(code=code, multi=multi, langue=langue, ssCode=ssCode, versionCode=versionCode, fichierCata=fichierCata, GUIPath=GUIPath, appWeb=appWeb) return Eficas diff --git a/Editeur/loggingEnvironnement.py b/Editeur/loggingEnvironnement.py new file mode 100644 index 00000000..84dc2859 --- /dev/null +++ b/Editeur/loggingEnvironnement.py @@ -0,0 +1,84 @@ +from builtins import object +import logging +import os + +msgGetDico='d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine)' +msgId='leMotClef={}' + +class loggingEnvironnement(object): + _instance = None + + def __new__(cls, *args, **kwargs): + if not cls._instance: + cls._instance = super(loggingEnvironnement, cls).__new__(cls, *args, **kwargs) + return cls._instance + + def __init__(self): + self.fichier=None + + def setFile(self,fichier, code='Essai'): + loggerForTrace = logging.getLogger('loggingForTrace') + if self.fichier != None : print ('La log est deja ecrite dans : ', self.fichier); return + if (os.path.isfile(fichier)) : + print ('le fichier {} existe deja'.format(fichier)) + loggerForTrace.info('#_________________ redemarrage de la log _________________') + fileHandler = logging.FileHandler(fichier) + formatter = logging.Formatter('%(message)s') + fileHandler.setFormatter(formatter) + loggerForTrace.addHandler(fileHandler) + loggerForTrace.setLevel(logging.INFO) + loggerForTrace.info('from connectEficas import accasConnecteur') + loggerForTrace.info('monEficasConnecteur=accasConnecteur("{}")'.format(code)) + + +def fonctionLoguee(laFonction, debug=True): +#------------------------------------------- + from inspect import getfullargspec + from functools import wraps + listeArgs=getfullargspec(laFonction) + @wraps(laFonction) + def laFonctionLoguee(*args, **kwargs): + if debug : print('Appel {} avec args={} et kwargs={}'.format( laFonction.__name__, args, kwargs)) + loggerForTrace = logging.getLogger('loggingForTrace') + if 'id' in listeArgs.args : + indexId=listeArgs.args.index('id') + id = args[indexId] + if debug : print ('id est le parametre ', str(indexId), ' de la fonction :', laFonction.__name__) + monConnecteur=args[0] + loggerForTrace.info(msgGetDico) + finMsgId = monConnecteur.reconstruitChaineDIndex(id) + if debug : print ('finMsgId', finMsgId) + loggerForTrace.info(msgId.format(finMsgId)) + else : + if debug : print ('id n est pas un parametre de la fonction :', laFonction.__name__,) + indexId=-1 + + i=1 + chaineDArgs='(' + for monArg in args[1:] : + #if debug : print ('chaineDArgs', chaineDArgs) + #if debug : print ('monArg', monArg) + if indexId == i: + chaineDArgs+='leMotClef,' + i=i+1 + continue + if isinstance(monArg, str) : chaineDArgs+='"'+str(monArg)+'",' + else : chaineDArgs+=str(monArg)+',' + i=i+1 + for (k,v) in kwargs : + if isinstance(v, str) : chaineDArgs+=str(k)+'="'+str(v)+'",' + else : chaineDArgs+=str(k)+'='+str(v)+',' + chaineDArgs=chaineDArgs[:-1]+')' + if debug : print ('chaineDArgs', chaineDArgs) + msg='print (monEficasConnecteur.{}{})'.format(laFonction.__name__, chaineDArgs) + if debug : print ('msg', msg) + loggerForTrace.info(msg) + return laFonction(*args, **kwargs) + return laFonctionLoguee + + +if __name__=='__main__': + monSingleton=loggingEnvironnement() + monSingleton.setFile('/tmp/toto.txt') + loggerForTrace = logging.getLogger('loggingForTrace') + loggerForTrace.info('Our First Log Message') diff --git a/InterfaceGUI/QT5/browser.py b/InterfaceGUI/QT5/browser.py index 49464c49..b9e3ed6a 100644 --- a/InterfaceGUI/QT5/browser.py +++ b/InterfaceGUI/QT5/browser.py @@ -722,9 +722,9 @@ class JDCNode(QTreeWidgetItem, GereRegles): ret, commentaire = self.vraiParent.item.suppItem(self.item) if ret == 0: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) else: - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) self.treeParent.buildChildren() if self.treeParent.childrenComplete: toselect = self.treeParent.childrenComplete[index] diff --git a/InterfaceGUI/QT5/compobloc.py b/InterfaceGUI/QT5/compobloc.py index e2004e98..f58ebcfc 100644 --- a/InterfaceGUI/QT5/compobloc.py +++ b/InterfaceGUI/QT5/compobloc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import compofact from InterfaceGUI.QT5 import browser diff --git a/InterfaceGUI/QT5/compocomm.py b/InterfaceGUI/QT5/compocomm.py index 11247bf2..5101011b 100644 --- a/InterfaceGUI/QT5/compocomm.py +++ b/InterfaceGUI/QT5/compocomm.py @@ -17,7 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr @@ -52,7 +52,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): self.setText(1, tr(debComm)) -class COMMTreeItem(Objecttreeitem.ObjectTreeItem): +class COMMTreeItem(objecttreeitem.ObjectTreeItem): itemNode = Node def init(self): @@ -103,7 +103,7 @@ class COMMTreeItem(Objecttreeitem.ObjectTreeItem): def getObjetCommentarise(self): """ La methode getObjetCommentarise() de la classe compocomm.COMMTreeItem - surcharge la methode getObjetCommentarise de la classe Objecttreeitem.ObjectTreeItem + surcharge la methode getObjetCommentarise de la classe objecttreeitem.ObjectTreeItem elle a pour but d'empecher l'utilisateur final de commentariser un commentaire. """ raise EficasException("Impossible de commentariser un commentaire") diff --git a/InterfaceGUI/QT5/compocommandecomm.py b/InterfaceGUI/QT5/compocommandecomm.py index 401e995f..a899911d 100644 --- a/InterfaceGUI/QT5/compocommandecomm.py +++ b/InterfaceGUI/QT5/compocommandecomm.py @@ -20,12 +20,12 @@ import traceback -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.extensions.eficas_exception import EficasException from InterfaceGUI.QT5 import compocomm -class COMMANDE_COMMTreeItem(Objecttreeitem.ObjectTreeItem): +class COMMANDE_COMMTreeItem(objecttreeitem.ObjectTreeItem): itemNode = compocomm.Node def init(self): diff --git a/InterfaceGUI/QT5/compofact.py b/InterfaceGUI/QT5/compofact.py index c5029f3c..78fc9ba9 100644 --- a/InterfaceGUI/QT5/compofact.py +++ b/InterfaceGUI/QT5/compofact.py @@ -22,7 +22,7 @@ from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem import traceback @@ -38,7 +38,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): else: self.niveau = 1 if hasattr(self, "plie") and self.plie == True: - from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie + from InterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie widget = MonWidgetFactPlie( self, @@ -52,7 +52,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): elif self.editor.maConfiguration.afficheFirstPlies and self.firstAffiche: self.firstAffiche = False self.setPlie() - from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie + from InterfaceGUI.QT5.monWidgetFactPlie import MonWidgetFactPlie widget = MonWidgetFactPlie( self, @@ -64,7 +64,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): maCommande, ) else: - from InterfaceGUI.QT5.nterfaceGUI.QT5.monWidgetFact import MonWidgetFact + from InterfaceGUI.QT5.monWidgetFact import MonWidgetFact widget = MonWidgetFact( self, @@ -82,7 +82,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) -class FACTTreeItem(Objecttreeitem.ObjectTreeItem): +class FACTTreeItem(objecttreeitem.ObjectTreeItem): itemNode = Node def isExpandable(self): diff --git a/InterfaceGUI/QT5/compojdc.py b/InterfaceGUI/QT5/compojdc.py index eb121454..918e28aa 100644 --- a/InterfaceGUI/QT5/compojdc.py +++ b/InterfaceGUI/QT5/compojdc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr @@ -37,7 +37,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuRacine): return param -class JDCTreeItem(Objecttreeitem.ObjectTreeItem): +class JDCTreeItem(objecttreeitem.ObjectTreeItem): itemNode = Node def isExpandable(self): diff --git a/InterfaceGUI/QT5/compomacro.py b/InterfaceGUI/QT5/compomacro.py index 90c19833..465eb001 100644 --- a/InterfaceGUI/QT5/compomacro.py +++ b/InterfaceGUI/QT5/compomacro.py @@ -25,7 +25,7 @@ import types import traceback # Modules Eficas -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.extensions.eficas_translation import tr from InterfaceGUI.QT5 import compooper from InterfaceGUI.QT5 import browser diff --git a/InterfaceGUI/QT5/compomclist.py b/InterfaceGUI/QT5/compomclist.py index ec1ec539..08c70279 100644 --- a/InterfaceGUI/QT5/compomclist.py +++ b/InterfaceGUI/QT5/compomclist.py @@ -27,7 +27,7 @@ from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.processing.P_OBJECT import ErrorObj @@ -109,7 +109,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodeMinimal): return child -class MCListTreeItem(Objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem): +class MCListTreeItem(objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem): """La classe MCListTreeItem joue le role d'un adaptateur pour les objets du processing Accas instances de la classe MCLIST. Elle adapte ces objets pour leur permettre d'etre integres en tant que @@ -147,7 +147,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem, compofact.FACTTreeItem): def isExpandable(self): if len(self._object) > 1: - return Objecttreeitem.SequenceTreeItem.isExpandable(self) + return objecttreeitem.SequenceTreeItem.isExpandable(self) else: return compofact.FACTTreeItem.isExpandable(self) diff --git a/InterfaceGUI/QT5/compooper.py b/InterfaceGUI/QT5/compooper.py index 11b1a50f..9d45e6ee 100644 --- a/InterfaceGUI/QT5/compooper.py +++ b/InterfaceGUI/QT5/compooper.py @@ -23,7 +23,7 @@ import tempfile from Accas.extensions.eficas_translation import tr from Accas.extensions.eficas_exception import EficasException -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode @@ -43,7 +43,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): self.editor.initModif() test, mess = self.item.nommeSd(nom) if test == 0: - self.editor.afficheInfos(mess, "red") + self.editor.afficheMessage(mess, "red") old = self.item.getText() self.monWidgetNom.setText(old) else: @@ -69,7 +69,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): # troisD.envoievisu() -class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): +class EtapeTreeItem(objecttreeitem.ObjectTreeItem): """La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing Accas. Elle leur permet d'etre affichés comme des noeuds d'un arbre graphique. diff --git a/InterfaceGUI/QT5/compoparam.py b/InterfaceGUI/QT5/compoparam.py index 9f36e143..dc7d1339 100644 --- a/InterfaceGUI/QT5/compoparam.py +++ b/InterfaceGUI/QT5/compoparam.py @@ -27,7 +27,7 @@ import types from Accas.extensions.eficas_translation import tr # import modules EFICAS -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode @@ -47,7 +47,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNodePartiel): return None -class PARAMTreeItem(Objecttreeitem.ObjectTreeItem): +class PARAMTreeItem(objecttreeitem.ObjectTreeItem): """ Classe servant a definir l'item porte par le noeud de l'arbre d'EFICAS qui represente le PARAMETRE diff --git a/InterfaceGUI/QT5/compoproc.py b/InterfaceGUI/QT5/compoproc.py index 9321731a..0242b7b3 100644 --- a/InterfaceGUI/QT5/compoproc.py +++ b/InterfaceGUI/QT5/compoproc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import compooper from InterfaceGUI.QT5 import browser from InterfaceGUI.QT5 import typeNode diff --git a/InterfaceGUI/QT5/composimp.py b/InterfaceGUI/QT5/composimp.py index 56959be8..86e006e6 100644 --- a/InterfaceGUI/QT5/composimp.py +++ b/InterfaceGUI/QT5/composimp.py @@ -25,7 +25,7 @@ import traceback from InterfaceGUI.QT5 import typeNode # Modules Eficas -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from Accas import SalomeEntry from Accas import ASSD @@ -257,7 +257,7 @@ class Node(NodeCommun, browser.JDCNode, typeNode.PopUpMenuNodeMinimal): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) -class SIMPTreeItemCommun(Objecttreeitem.AtomicObjectTreeItem): +class SIMPTreeItemCommun(objecttreeitem.AtomicObjectTreeItem): def init(self): self.expandable = 0 diff --git a/InterfaceGUI/QT5/gereIcones.py b/InterfaceGUI/QT5/gereIcones.py index 77d7e142..86e3528e 100644 --- a/InterfaceGUI/QT5/gereIcones.py +++ b/InterfaceGUI/QT5/gereIcones.py @@ -448,7 +448,7 @@ class ContientIcones(object): ) if commentaire != "": - self.editor.afficheInfos(tr(str(commentaire))) + self.editor.afficheMessage(tr(str(commentaire))) if selection == []: return @@ -476,7 +476,7 @@ class ContientIcones(object): if valeur: ok, msgError = self.appliEficas.displayShape(valeur) if not ok: - self.editor.afficheInfos(msgError, Qt.red) + self.editor.afficheMessage(msgError, Qt.red) def BParametresPressed(self): liste = self.node.item.getListeParamPossible() diff --git a/InterfaceGUI/QT5/gereListe.py b/InterfaceGUI/QT5/gereListe.py index 0f35a67b..2bdf4d4c 100644 --- a/InterfaceGUI/QT5/gereListe.py +++ b/InterfaceGUI/QT5/gereListe.py @@ -261,7 +261,7 @@ class GereListe(object): if len(self.listeValeursCourantes) < self.monSimpDef.max: self.chercheLigneVide() else: - self.editor.afficheInfos( + self.editor.afficheMessage( "nb max de valeurs : " + str(self.monSimpDef.max) + " atteint", Qt.red, ) diff --git a/InterfaceGUI/QT5/groupe.py b/InterfaceGUI/QT5/groupe.py index c04f30e6..0f2f877f 100644 --- a/InterfaceGUI/QT5/groupe.py +++ b/InterfaceGUI/QT5/groupe.py @@ -170,12 +170,12 @@ class Groupe(QWidget, FacultatifOuOptionnel): return if len(listeNode) == 1: listeNode[0].delete() - self.editor.afficheInfos("") + self.editor.afficheMessage("") return for noeud in listeNode: noeud.treeParent.item.suppItem(noeud.item) noeud.treeParent.buildChildren() - self.editor.afficheInfos("") + self.editor.afficheMessage("") def ajoutMC(self, texteListeNom): listeNom = texteListeNom.split("+")[1:] @@ -192,7 +192,7 @@ class Groupe(QWidget, FacultatifOuOptionnel): if firstNode == None: firstNode = nouveau if nouveau == None or nouveau == 0: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("insertion impossible a cet endroit pour " + nom), Qt.red ) try: diff --git a/InterfaceGUI/QT5/monFonctionPanel.py b/InterfaceGUI/QT5/monFonctionPanel.py index 6b7709f9..d6afc840 100644 --- a/InterfaceGUI/QT5/monFonctionPanel.py +++ b/InterfaceGUI/QT5/monFonctionPanel.py @@ -65,7 +65,7 @@ class MonFonctionPanel(MonPlusieursBasePanel): message = tr( "La cardinalite n'est pas correcte, la derniere valeur est ignoree" ) - self.editor.afficheInfos(message, Qt.red) + self.editor.afficheMessage(message, Qt.red) i = 0 while i < len(liste): try: @@ -121,7 +121,7 @@ class MonFonctionPanel(MonPlusieursBasePanel): commentaire += str(self.nbValeursASaisir) commentaire += tr(" valeurs") self.LEValeur.setText(str(liste)) - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) return if self.node.item.waitTuple() == 1: @@ -153,7 +153,7 @@ class MonFonctionPanel(MonPlusieursBasePanel): ) self.Commentaire.setText(tr(comm2)) if not validite: - self.editor.afficheInfos(comm, Qt.red) + self.editor.afficheMessage(comm, Qt.red) else: self.LEValeur.setText("") l1 = self.listeValeursCourantes[:indexListe] @@ -186,7 +186,7 @@ class MonFonctionPanel(MonPlusieursBasePanel): if len(liste) % self.nbValeurs != 0: texte = "Nombre de valeur incorrecte" # self.Commentaire.setText(texte) - self.editor.afficheInfos(texte, Qt.red) + self.editor.afficheMessage(texte, Qt.red) return listeDecoupee = self.decoupeListeValeurs(liste) for vals in listeDecoupee: diff --git a/InterfaceGUI/QT5/monWidgetCreeParam.py b/InterfaceGUI/QT5/monWidgetCreeParam.py index ae79ace0..3aa96c07 100644 --- a/InterfaceGUI/QT5/monWidgetCreeParam.py +++ b/InterfaceGUI/QT5/monWidgetCreeParam.py @@ -35,7 +35,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog): def __init__(self, editor, name=None, fl=0): self.editor = editor - self.editor.afficheInfos("") + self.editor.afficheMessage("") QDialog.__init__(self, editor) self.setupUi(self) self.connecterSignaux() @@ -98,7 +98,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog): exec("from InterfaceGUI.QT5.ath import *", contexte) jdc = self.editor.jdc if jdc == None: - self.editor.afficheInfos( + self.editor.afficheMessage( tr( "La Creation de parametre n est possible que dans un jeu de donnees" ), @@ -121,7 +121,7 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog): monTexte = "monParam='" + valString + "'" self.val = "'" + valString + "'" except: - self.editor.afficheInfos(tr("Valeur incorrecte"), Qt.red) + self.editor.afficheMessage(tr("Valeur incorrecte"), Qt.red) if self.lineEditNom.text() != "" and self.dejaExistant == False: self.creeParametre() @@ -131,11 +131,11 @@ class MonWidgetCreeParam(Ui_desWidgetCreeParam, QDialog): if not pattern_name.match(nom): self.lineEditNom.setText("") commentaire = nom + tr(" n est pas un identifiant correct\n ") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) for p in self.editor.jdc.params: if p.nom == nom: commentaire = nom + tr(" existe deja\n ") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) return if self.lineEditVal.text() != "": diff --git a/InterfaceGUI/QT5/monWidgetCreeUserAssd.py b/InterfaceGUI/QT5/monWidgetCreeUserAssd.py index 43cb3713..5f6d89ea 100644 --- a/InterfaceGUI/QT5/monWidgetCreeUserAssd.py +++ b/InterfaceGUI/QT5/monWidgetCreeUserAssd.py @@ -63,7 +63,7 @@ class MonWidgetCreeUserAssd(MonWidgetSimpTxt): self.editor.afficheCommentaire(commentaire) self.oldValeurTexte = self.lineEditVal.text() else: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.lineEditVal.setText("") self.oldValeurTexte = "" self.parentQt.propageChange(self.objSimp.definition.type[0], self) diff --git a/InterfaceGUI/QT5/monWidgetFormule.py b/InterfaceGUI/QT5/monWidgetFormule.py index 51f0eb2d..956da685 100644 --- a/InterfaceGUI/QT5/monWidgetFormule.py +++ b/InterfaceGUI/QT5/monWidgetFormule.py @@ -125,10 +125,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): test, erreur = self.node.item.verifNom(nomFormule) if test: commentaire = nomFormule + tr(" est un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) else: commentaire = nomFormule + tr(" n'est pas un nom valide pour une FORMULE") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) return if str(self.LENomsArgs.text()) != "" and str(self.LECorpsFormule.text()) != "": self.BOkPressedFormule() @@ -141,10 +141,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): test, erreur = self.node.item.verifArguments(arguments) if test: commentaire = tr("Argument(s) valide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) else: commentaire = tr("Argument(s) invalide(s) pour une FORMULE") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) if ( str(self.LECorpsFormule.text()) != "" and str(self.LENomFormule.text()) != "" @@ -164,10 +164,10 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): if test: commentaire = tr("Corps de FORMULE valide") - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) else: commentaire = tr("Corps de FORMULE invalide") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) if str(self.LENomsArgs.text()) != "" and str(self.LENomFormule.text()) != "": self.BOkPressedFormule() @@ -178,13 +178,13 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): nomFormule = str(self.LENomFormule.text()) test, erreur = self.node.item.verifNom(nomFormule) if not test: - self.editor.afficheInfos(erreur, Qt.red) + self.editor.afficheMessage(erreur, Qt.red) return arguments = str(self.LENomsArgs.text()) test, erreur = self.node.item.verifArguments(arguments) if not test: - self.editor.afficheInfos(erreur, Qt.red) + self.editor.afficheMessage(erreur, Qt.red) return expression = str(self.LECorpsFormule.text()) @@ -192,7 +192,7 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): (nomFormule, "REEL", arguments, expression) ) if not test: - self.editor.afficheInfos(erreur, Qt.red) + self.editor.afficheMessage(erreur, Qt.red) return test = self.node.item.object.updateFormulePython( @@ -205,8 +205,8 @@ class MonWidgetFormule(QWidget, Ui_WidgetFormule, FacultatifOuOptionnel): self.node.onValid() self.node.update_valid() commentaire = "Formule saisie" - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) else: commentaire = "Formule incorrecte : " + erreur - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.editor.initModif() diff --git a/InterfaceGUI/QT5/monWidgetMatrice.py b/InterfaceGUI/QT5/monWidgetMatrice.py index a6ea9e71..054c0dd5 100644 --- a/InterfaceGUI/QT5/monWidgetMatrice.py +++ b/InterfaceGUI/QT5/monWidgetMatrice.py @@ -65,7 +65,7 @@ class MonWidgetMatrice(Ui_desWidgetMatrice, Feuille): return boolOk, commentaire = self.monType.verifItem(texte, self.node.item.object) if not boolOk: - self.editor.afficheInfos(tr(commentaire), Qt.red) + self.editor.afficheMessage(tr(commentaire), Qt.red) monItem.setText("") return if self.monType.coloree: @@ -199,12 +199,12 @@ class MonWidgetMatriceOT(MonWidgetMatrice): except: ok = False if ok == False: - self.editor.afficheInfos(tr("Entrer un float SVP"), Qt.red) + self.editor.afficheMessage(tr("Entrer un float SVP"), Qt.red) monItem.setText("") return if self.monType.valSup != None: if val > self.monType.valSup: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Entrer un float inferieur a ") + repr(self.monType.valSup), Qt.red, ) @@ -212,13 +212,13 @@ class MonWidgetMatriceOT(MonWidgetMatrice): return if self.monType.valMin != None: if val < self.monType.valMin: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Entrer un float superieur a ") + repr(self.monType.valMin), Qt.red, ) monItem.setText("") return - self.editor.afficheInfos("") + self.editor.afficheMessage("") if self.monType.structure != None: MonWidgetMatrice.__dict__[self.monType.structure](*(self,)) self.acceptVal() diff --git a/InterfaceGUI/QT5/monWidgetPlusieursBase.py b/InterfaceGUI/QT5/monWidgetPlusieursBase.py index d826ae4e..cf9199cc 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursBase.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursBase.py @@ -231,7 +231,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli if len(listeComplete) > max: texte = tr("Nombre maximum de valeurs ") + str(max) + tr(" atteint") - self.editor.afficheInfos(texte, Qt.red) + self.editor.afficheMessage(texte, Qt.red) return validite, comm, comm2, listeRetour = self.politique.ajoutNTuple(listeComplete) @@ -306,13 +306,13 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli if valeur != None and valeur != "": commentaire = self.ajout1Valeur(valeur) if commentaire != None: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) courant.setText("") donneFocus = courant self.reaffiche() return else: - self.editor.afficheInfos("") + self.editor.afficheMessage("") elif donneFocus == None: donneFocus = courant @@ -329,7 +329,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli return min, max = self.node.item.getMinMax() if len(self.listeValeursCourantes) < self.monSimpDef.min: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("nb min de valeurs : ") + str(self.monSimpDef.min) ) if len(self.listeValeursCourantes) < min and oblige == True: @@ -338,7 +338,7 @@ class MonWidgetPlusieursBase(Ui_WidgetPlusieursBase, Feuille, GereListe, GerePli return retour = self.node.item.setValeur(self.listeValeursCourantes) if len(self.listeValeursCourantes) == self.monSimpDef.max: - self.editor.afficheInfos(tr("nb max de valeurs atteint")) + self.editor.afficheMessage(tr("nb max de valeurs atteint")) self.setValide() self.reaffiche() self.inhibeChangeValeur = False diff --git a/InterfaceGUI/QT5/monWidgetPlusieursCreeUserAssd.py b/InterfaceGUI/QT5/monWidgetPlusieursCreeUserAssd.py index f3db649c..cdd42f10 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursCreeUserAssd.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursCreeUserAssd.py @@ -68,7 +68,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase): oldValeurUserAssd, valeur ) if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.lineEditEnCours.setText(oldValeurUserAssd.nom) nomDernierLineEdit = "lineEditVal" + str(self.numLineEditEnCours + 1) dernier = getattr(self, nomDernierLineEdit) @@ -77,7 +77,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase): validite, objASSD, commentaire = self.objSimp.creeUserASSD(valeur) if commentaire != "" and not validite: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.lineEditEnCours.setText("") if objASSD: objASSD.supprime(self.objSimp) @@ -116,7 +116,7 @@ class MonWidgetPlusieursCreeUserAssd(MonWidgetPlusieursBase): dernier = getattr(self, nomDernierLineEdit) dernier.setFocus() else: - self.editor.afficheInfos("ajout impossible", Qt.red) + self.editor.afficheMessage("ajout impossible", Qt.red) if objASSD: objASSD.supprime(self.objSimp) self.lineEditEnCours.setText("") diff --git a/InterfaceGUI/QT5/monWidgetPlusieursInto.py b/InterfaceGUI/QT5/monWidgetPlusieursInto.py index b7af991d..73b7d7c1 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursInto.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursInto.py @@ -91,7 +91,7 @@ class MonWidgetPlusieursInto(Ui_WidgetPlusieursInto, Feuille, GerePlie, GereList min, max = self.node.item.getMinMax() if max < len(self.listeAAfficher): commentaire = tr("impossible de tout selectionner : max =") + str(max) - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.inhibe = False return for i in range(len(self.listeAAfficher)): @@ -235,17 +235,17 @@ class MonWidgetPlusieursInto(Ui_WidgetPlusieursInto, Feuille, GerePlie, GereList if valeur != None and valeur != "": commentaire = self.ajout1Valeur(valeur) if commentaire != None: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.listeValeursCourantesAvant = self.listeValeursCourantes self.setValeurs() min, max = self.node.item.getMinMax() if len(self.listeValeursCourantes) < min: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Nombre minimal de valeurs : ") + str(min), Qt.red ) elif len(self.listeValeursCourantes) > max: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Nombre maximal de valeurs : ") + str(max), Qt.red ) diff --git a/InterfaceGUI/QT5/monWidgetPlusieursIntoOrdonne.py b/InterfaceGUI/QT5/monWidgetPlusieursIntoOrdonne.py index 916e662f..90940295 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursIntoOrdonne.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursIntoOrdonne.py @@ -254,12 +254,12 @@ class MonWidgetPlusieursIntoOrdonne( self.listeValeursCourantes = self.node.item.getListeValeurs() min, max = self.node.item.getMinMax() if len(self.listeValeursCourantes) + 1 > max: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Nombre maximal de valeurs : ") + str(max), Qt.red ) return else: - self.editor.afficheInfos("") + self.editor.afficheMessage("") affiche = False for i in range(1, self.indexDernierLabel + 1): @@ -301,11 +301,11 @@ class MonWidgetPlusieursIntoOrdonne( self.listeValeursCourantes = self.node.item.getListeValeurs() min, max = self.node.item.getMinMax() if len(self.listeValeursCourantes) < min: - self.editor.afficheInfos( + self.editor.afficheMessage( tr("Nombre minimal de valeurs : ") + str(min), Qt.red ) else: - self.editor.afficheInfos("") + self.editor.afficheMessage("") if len(listeRetour) == 0: self.node.item.setValeur(None) @@ -313,7 +313,7 @@ class MonWidgetPlusieursIntoOrdonne( self.node.item.setValeur(listeRetour) else: commentaire = comm + " " + comm2 - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.setValide() self.reaffiche() diff --git a/InterfaceGUI/QT5/monWidgetPlusieursPlie.py b/InterfaceGUI/QT5/monWidgetPlusieursPlie.py index 59dbe456..79077377 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursPlie.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursPlie.py @@ -84,13 +84,13 @@ class MonWidgetPlusieursPlie(Ui_WidgetPlusieursPlie, Feuille): listeValeur = [] for v in listeValeursBrutes: if v == None or pattern_blanc.match(v): - self.editor.afficheInfos( + self.editor.afficheMessage( str(listeValeur) + " Valeurs saisies incorrectes", Qt.red ) return liste, validite = SaisieValeur.TraiteLEValeur(self, str(v)) if not validite: - self.editor.afficheInfos( + self.editor.afficheMessage( str(listeValeur) + " Valeurs saisies incorrectes", Qt.red ) return @@ -103,7 +103,7 @@ class MonWidgetPlusieursPlie(Ui_WidgetPlusieursPlie, Feuille): self.node.item.isValid() self.setValeurs() else: - self.editor.afficheInfos(str(listeValeur) + " " + comm, Qt.red) + self.editor.afficheMessage(str(listeValeur) + " " + comm, Qt.red) self.lineEditVal.setText("") diff --git a/InterfaceGUI/QT5/monWidgetPlusieursTuple.py b/InterfaceGUI/QT5/monWidgetPlusieursTuple.py index b2989231..dadd1683 100644 --- a/InterfaceGUI/QT5/monWidgetPlusieursTuple.py +++ b/InterfaceGUI/QT5/monWidgetPlusieursTuple.py @@ -378,7 +378,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe): if not validite: if comm2 != "": comm += " " + comm2 - self.editor.afficheInfos( + self.editor.afficheMessage( comm + " " + str(self.objSimp.definition.validators.typeDesTuples), Qt.red, ) @@ -393,7 +393,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe): return min, max = self.node.item.getMinMax() if self.indexDernierLabel == max: - self.editor.afficheInfos(tr("Nb maximum de valeurs atteint")) + self.editor.afficheMessage(tr("Nb maximum de valeurs atteint")) if self.indexDernierLabel < max and libre == False: self.ajoutLineEdit() self.listeAffichageWidget[-2].setFocus(True) @@ -431,7 +431,7 @@ class MonWidgetPlusieursTuple(Feuille, GereListe): if len(liste) % self.nbValeurs != 0: texte = "Nombre incorrect de valeurs" - self.editor.afficheInfos(tr(texte), Qt.red) + self.editor.afficheMessage(tr(texte), Qt.red) return i = 0 @@ -450,12 +450,12 @@ class MonWidgetPlusieursTuple(Feuille, GereListe): if len(listeComplete) > max: texte = tr("Nombre maximum de valeurs ") + str(max) + tr(" atteint") - self.editor.afficheInfos(texte, Qt.red) + self.editor.afficheMessage(texte, Qt.red) return validite, comm, comm2, listeRetour = self.politique.ajoutNTuple(listeComplete) if not validite: - self.editor.afficheInfos(comm + comm2, Qt.red) + self.editor.afficheMessage(comm + comm2, Qt.red) return # on calcule le dernier lineedit rempli avant de changer la valeur diff --git a/InterfaceGUI/QT5/monWidgetSDCOInto.py b/InterfaceGUI/QT5/monWidgetSDCOInto.py index ae3d339e..399bdeff 100644 --- a/InterfaceGUI/QT5/monWidgetSDCOInto.py +++ b/InterfaceGUI/QT5/monWidgetSDCOInto.py @@ -81,5 +81,5 @@ class MonWidgetSDCOInto(Ui_WidgetSDCOInto, Feuille, SaisieSDCO): else: commentaire = self.node.item.getCr() self.reset_old_valeur(anc_val, mess=mess) - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.Commentaire.setText(tr(commentaire)) diff --git a/InterfaceGUI/QT5/monWidgetSimpComplexe.py b/InterfaceGUI/QT5/monWidgetSimpComplexe.py index a846fd70..9bbdf199 100644 --- a/InterfaceGUI/QT5/monWidgetSimpComplexe.py +++ b/InterfaceGUI/QT5/monWidgetSimpComplexe.py @@ -55,7 +55,7 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): if type(valeur) not in (list, tuple): self.LEComp.setText(str(valeur)) commentaire = tr("complexe form deprecated, od value : ", valeur) - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) else: typ_cplx, x1, x2 = valeur self.LEReel.setText(str(x1)) @@ -76,15 +76,15 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): # v=eval(valeur,d) # except : # commentaire=tr("expression invalide") - # self.editor.afficheInfos(commentaire,Qt.red) + # self.editor.afficheMessage(commentaire,Qt.red) # return # try : # i=v.imag - # self.editor.afficheInfos(commentaire) + # self.editor.afficheMessage(commentaire) # self.valeurPressed() # except : # commentaire=tr("l expression n est pas de la forme a+bj") - # self.editor.afficheInfos(commentaire,Qt.red) + # self.editor.afficheMessage(commentaire,Qt.red) def LEReelRPressed(self): # self.LEComp.clear() @@ -92,10 +92,10 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): valeur = str(self.LEReel.text()) try: a = locale.atof(valeur) - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) except: commentaire = tr("expression invalide") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) if self.LEImag.text() != "": self.valeurPressed() else: @@ -106,10 +106,10 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): valeur = str(self.LEImag.text()) try: a = locale.atof(valeur) - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) except: commentaire = tr("expression invalide") - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) if self.LEReel.text() != "": self.valeurPressed() else: @@ -127,13 +127,13 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): # v=eval(valeur,d) # except : # commentaire=tr("expression invalide") - # self.editor.afficheInfos(commentaire,Qt.red) + # self.editor.afficheMessage(commentaire,Qt.red) # return None # try : # i=v.imag # except : # commentaire=tr("expression n est pas de la forme a+bj") - # self.editor.afficheInfos(commentaire,Qt.red) + # self.editor.afficheMessage(commentaire,Qt.red) # return None # return v @@ -159,7 +159,7 @@ class MonWidgetSimpComplexe(Ui_WidgetSimpComplexe, Feuille): elif self.RBRI.isChecked() == 1: l.append("RI") else: - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.RBMP.setFocus(True) return None try: diff --git a/InterfaceGUI/QT5/monWidgetSimpTuple.py b/InterfaceGUI/QT5/monWidgetSimpTuple.py index 6dfd3514..d764fb12 100644 --- a/InterfaceGUI/QT5/monWidgetSimpTuple.py +++ b/InterfaceGUI/QT5/monWidgetSimpTuple.py @@ -47,7 +47,7 @@ class MonWidgetSimpTuple(Feuille): def valeursPressed(self): aLeFocus = self.focusWidget() - self.editor.afficheInfos("") + self.editor.afficheMessage("") texteValeur = "" for i in range(self.nbValeurs): nomLineEdit = "lineEditVal" + str(i + 1) @@ -79,7 +79,7 @@ class MonWidgetSimpTuple(Feuille): texteValeur += "," validite, commentaire = self.politique.recordValeur(texteValeur) if not validite: - self.editor.afficheInfos( + self.editor.afficheMessage( commentaire + " " + str(self.objSimp.definition.validators.typeDesTuples), diff --git a/InterfaceGUI/QT5/qt_editor.py b/InterfaceGUI/QT5/qt_editor.py index d39d0d16..371da4f4 100755 --- a/InterfaceGUI/QT5/qt_editor.py +++ b/InterfaceGUI/QT5/qt_editor.py @@ -32,7 +32,7 @@ import traceback from Accas.extensions.eficas_translation import tr from Editeur import session from InterfaceGUI.common import comploader -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.QT5 import browser from UiQT5.desBaseWidget import Ui_baseWidget @@ -52,7 +52,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): Editeur de jdc """ - def __init__( self, appliEficas, fichier=None, jdc=None, QWParent=None, units=None, include=0): + def __init__( self, appliEficas, fichier=None, jdc=None, QWParent=None, include=0): # ----------------------------------------------------------------------------------------------- QWidget.__init__(self, None) @@ -69,10 +69,10 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): self.sb = None self.QWParent = QWParent - Editor.__init__(self, appliEficas, fichier, jdc, units, include) + Editor.__init__(self, appliEficas, fichier, jdc, include) if self.jdc: comploader.chargerComposants(self.appliEficas.GUIPath) - self.jdc_item = Objecttreeitem.makeObjecttreeitem(self, "nom", self.jdc) + self.jdc_item = objecttreeitem.makeObjecttreeitem(self, "nom", self.jdc) # Particularites IHM : met la fenetre a jour self.initSplitterSizes() @@ -147,7 +147,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): def informe(self, titre, txt, critique=True): # ------------------------------------------# if critique: - self.afficheInfos(tr(txt), Qt.red) + self.afficheMessage(tr(txt), Qt.red) QMessageBox.critical(self, tr(titre), tr(txt)) else: QMessageBox.warning(self, tr(titre), tr(txt)) @@ -236,7 +236,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): self.close() # ----------------------------------------------# - def afficheInfos(self, message, couleur=Qt.black): + def afficheMessage(self, message, couleur=Qt.black): # ----------------------------------------------# if couleur == "red": couleur = Qt.red if self.sb: @@ -402,7 +402,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): tr("Eficas n a pas reussi a copier l objet"), ) self.message = "" - self.afficheInfos("Copie refusee", Qt.red) + self.afficheMessage("Copie refusee", Qt.red) if noeudACopier.treeParent.editor != noeudOuColler.treeParent.editor: try: nom = noeudACopier.item.sd.nom @@ -418,7 +418,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): self, tr("Copie refusee"), tr("Copie refusee pour ce type d objet") ) self.message = "" - self.afficheInfos("Copie refusee", Qt.red) + self.afficheMessage("Copie refusee", Qt.red) return # il faut declarer le JDCDisplay_courant modifie @@ -1223,7 +1223,7 @@ class QtEditor(Editor, Ui_baseWidget, QWidget): def viewJdcRapport(self): # ----------------------------# strRapport = self.getJdcRapport() - self._viewText(strRappoer, "Rapport Validation du JDC") + self._viewText(strRapport, "Rapport Validation du JDC") # ------------------# def _newJDCCND(self): diff --git a/InterfaceGUI/QT5/qt_editor_manager.py b/InterfaceGUI/QT5/qt_editor_manager.py index 011d68ea..44125b73 100644 --- a/InterfaceGUI/QT5/qt_editor_manager.py +++ b/InterfaceGUI/QT5/qt_editor_manager.py @@ -61,9 +61,9 @@ class QtEditorManager(EditorManager): self.appliEficas.construitMenu() - #------------------------------------------------------- - def openFile(self, fichier=None, units=None, patron =0): - #------------------------------------------------------- + #-------------------------------------------- + def openFile(self, fichier=None, patron =0): + #-------------------------------------------- result = None if self.appliEficas.code == None: self.appliEficas.definitCode(None, None) @@ -88,7 +88,7 @@ class QtEditorManager(EditorManager): ulfile = os.path.abspath(fichier) self.appliEficas.maConfiguration.saveDir = os.path.split(ulfile)[0] self.appliEficas.addToRecentList(fichier) - maPage = self.getEditor(fichier, units=units) + maPage = self.getEditor(fichier) if maPage: result = maPage if maPage: self.myQtab.setTabText( self.myQtab.indexOf(maPage), os.path.basename(fichier)) @@ -218,19 +218,11 @@ class QtEditorManager(EditorManager): editor = self.dictEditors[index] editor.handleAjoutEtape(nomEtape) - #------------------------------ - def newEditor(self, include=0): - #------------------------------ - if self.appliEficas.multi == True: - self.appliEficas.definitCode(None, None) - if self.appliEficas.code == None: - return - maPage = self.getEditor(include=include) #-------------------------- def newIncludeEditor(self): #-------------------------- - self.newEditor(include=1) + self.getEditor(include=1) #------------------------------------ def viewJdcFichierSource(self): @@ -289,13 +281,13 @@ class QtEditorManager(EditorManager): if index < 0: return self.dictEditors[index].viewJdcRapport() - #------------------------- - def viewJdcPy(self): - #------------------------- + #-------------------------------- + def viewJdcFichierResultat(self): + #-------------------------------- index = self.myQtab.currentIndex() if index < 0: return - self.dictEditors[index].viewJdcPy() + self.dictEditors[index].viewJdcFichierResultat() #-------------------- def handleSave(self): @@ -384,9 +376,14 @@ class QtEditorManager(EditorManager): editor = self.getEditor(fichier=fn, jdc=jdc, include=1) self.appliEficas.addToRecentList(editor.getFileName()) + #------------------------------------------------------------------ - def getEditor(self, fichier=None, jdc=None, units=None, include=0): + def getEditor(self, fichier=None, jdc=None, include=0): #------------------------------------------------------------------ + if self.appliEficas.multi == True: + self.appliEficas.definitCode(None, None) + if self.appliEficas.code == None: + return newWin = 0 double = None for indexEditor in self.dictEditors: @@ -403,7 +400,7 @@ class QtEditorManager(EditorManager): double = editor else: from qt_editor import QtEditor - editor = QtEditor(self.appliEficas, fichier, jdc, self.myQtab, units, include) + editor = QtEditor(self.appliEficas, fichier, jdc, self.myQtab, include) if double != None: self.doubles[editor] = double if editor.jdc: # le fichier est bien un jdc self.editors.append(editor) diff --git a/InterfaceGUI/QT5/qt_eficas.py b/InterfaceGUI/QT5/qt_eficas.py index 2b530b91..24d1da9b 100755 --- a/InterfaceGUI/QT5/qt_eficas.py +++ b/InterfaceGUI/QT5/qt_eficas.py @@ -687,7 +687,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow): def fileNew(self): #---------------- try: - self.editorManager.newEditor() + self.editorManager.getEditor() except EficasException as exc: msg = str(exc) if msg != "": @@ -741,7 +741,7 @@ class QtEficasAppli(EficasAppli, Ui_Eficas, QMainWindow): #------------------------ def viewJdcRegles(self): #------------------------ - self.editorManager.handleViewJdcRegles() + self.editorManager.viewJdcRegles() #------------------------------ def viewJdcFichierResultat(self): diff --git a/InterfaceGUI/Web/accasConnecteur.py b/InterfaceGUI/Web/accasConnecteur.py deleted file mode 100755 index dbfb1dc4..00000000 --- a/InterfaceGUI/Web/accasConnecteur.py +++ /dev/null @@ -1,411 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2021 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module sert a lancer EFICAS configure pour le Web -""" -# Modules Python -import os, sys -import os, sys -sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) - - -# Modules Eficas - -from collections import OrderedDict -import pprint - - -if sys.version_info[0] < 3: - print("Must be using Python 3") - sys.exit() - -class AccasConnecteur : - def __init__(self,code, fichierCata=None, langue=None, fichierComm=None,appWeb=None) : - #------------------------------------------------------------------------------------- - - self.appWeb=appWeb - - if code == None : multi = True - else : multi = False - from Editeur.eficas_go import getEficasSsIhm - self.monEficas=getEficasSsIhm(code=code, salome=0, multi=multi, langue=langue,fichierCata=fichierCata, GUIPath='Web') - - if self.monEficas == None : - self.toWebApp('afficheInfos', 'erreur à la construction de l appli Eficas', 'rouge') - return - # faire l equivalent du editorManager - if fichierCata == None and fichierComm : - self.toWebApp('afficheInfos', 'pour ouvrir un JDC, il faut connaitre le catalogue', 'rouge') - return - self.litFichierComm(fichierComm) - - def toWebApp(self,fction,*args, **kwargs): - #----------------------------------------- - #if fction =='propageValide' : - debug=0 - if debug : print ('PNPNPN : self.appWeb.toWebApp', fction, *args, **kwargs) - if self.appWeb == None : - #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom) - return - self.appWeb.fromConnecteur(fction, *args, **kwargs) - - def litFichierComm(self,fichierComm=None): - #----------------------------------------- - from InterfaceGUI.Web.editor import JDCWebEditor - self.monEditeur=JDCWebEditor(self.monEficas,fichierComm,connecteur=self) - - def getListeCommandes(self): - #--------------------------- - if self.monEditeur == None : return - return (self.monEditeur.jdc.getListeCmd()) - - def getListeMotsClesFilsPossibles(self,nomCommande): - #----------------------------------------- - # ici il faut programmer getListeMotsClesFilsPossibles dans P_ENTITE - # Pour l instant on renvoie entites - # doit aussi pouvoir etre appele sur FACT et BLOC - maCommande= getattr(self.monEditeur.jdc.cata,nomCommande) - laListe=maCommande.entites - return laListe - - - def getDicoForFancy(self,obj,debug=0) : - #--------------------------------- - dico=self.monEditeur.getDicoForFancy(obj) - if debug : - import pprint - pprint.pprint (dico) - return dico - - - def changeValeur(self,id,valeur) : - #--------------------------------- - """ - id : identifiant unique - valeur : valeur saisie dans le formulaire - doit-on mettre l ancienne valeur en retour qui serait utile si validité = Non - """ - monNode=self.monEditeur.getNodeById(id) - #print (' change Valeur', monNode) - #(idUnique, commentaire, validite)=monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur) - #print ('retour ChangeValeur',idUnique, commentaire, validite ) - return monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur) - - def updateSDName(self,id,sdnom) : - #--------------------------------- - monNode=self.monEditeur.getNodeById(id) - return monNode.fauxNoeudGraphique.updateSDName(sdnom) - - def suppNode(self,id): - #------------------- - - monNode=self.monEditeur.getNodeById(id) - print ('monNode', monNode) - retour=monNode.fauxNoeudGraphique.delete() - return retour - - def appendChild(self,id,name,pos=None): - #------------------------------------- - """ - Methode pour ajouter un objet fils name a l objet associe au noeud id. - On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last') - ou en position pos_ieme de la liste. - retour = nouvelIdUnique ou None - """ - monNode=self.monEditeur.getNodeById(id) - if monNode.fauxNoeudGraphique == None : - print ('PNPN pas de noeud Graphique associe a l id') - return - if debug : print (monNode.fauxNoeudGraphique) - retour = monNode.fauxNoeudGraphique.appendChild(name,pos) - return retour - - def saveFile(self,fileName): - #---------------------------- - """ - sauve le .comm dans fileName (si fileName = None, - alors la sauvegarde est faite dans le fichier courant) - retour = True/False et le nom du fichier sauvegarde - """ - return self.monEditeur.saveFile(fileName) - - -if __name__ == "__main__": - import prefs - name='prefs_'+prefs.code - __import__(name) - code=prefs.code - monEficasConnecteur=accasConnecteur(code, langue='ang') - - testAjoutSuppProc=0 - if testAjoutSuppProc : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc',0) - print ('ajout de MonProc en postion 0', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2',1) - print ('ajout de MonProc2 en postion 1', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - print ('ajout de MonProc2 en postion last', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','first') - print ('ajout de MonProc2 en postion first', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2',) - print ('ajout de MonProc2 sans poistion ne fonctionne pas', r) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - etape2=d['children'][0]['key'] - print ('je detruis' ,etape2) - r=monEficasConnecteur.suppNode(etape2) - print (r) - monProc2=d['children'][0]['key'] - r=monEficasConnecteur.appendChild(monProc2,'Fact2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProc.comm') - - testAjoutSuppFact2=0 - if testAjoutSuppFact2 : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][2]['key'] - r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm') - - testAjoutSuppFact=0 - if testAjoutSuppFact : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][0]['key'] - print ('id monProc2 : ', monProc2) - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print ('ajout de Fact2 dans monProc2 reussi', r) - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print ('ajout de Fact2 dans monProc2 inadequat', r) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - fact11=d['children'][0]['children'][2]['key'] - fact12=d['children'][0]['children'][3]['key'] - fact13=d['children'][0]['children'][4]['key'] - fact14=d['children'][0]['children'][5]['key'] - pprint.pprint(d) - #print (d) - #monFact2=d['children'][0]['children'][3]['key'] - #print (monFact2) - #r=monEficasConnecteur.suppNode(monFact2) - #print (r) - #fact11=d['children'][0]['children'][2]['key'] - #monNode=monEficasConnecteur.monEditeur.getNodeById(fact11) - #print ('monNode', monNode) - r=monEficasConnecteur.suppNode(fact11) - r=monEficasConnecteur.suppNode(fact12) - r=monEficasConnecteur.suppNode(fact13) - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - r=monEficasConnecteur.suppNode(fact14) - print (r) - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #print (d) - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #print (r) - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #fact12=d['children'][0]['children'][3]['key'] - #print(d['children'][0]['children'][3]['title']) - #r=monEficasConnecteur.appendChild(fact12,'paramInFact1') - #fact1=d['children'][0]['children'][2] - #print (fact1) - #fact11=d['children'][0]['children'][2]['key'] - #print (fact11) - #print ('******************************************************') - #r=monEficasConnecteur.suppNode(fact11) - #r=monEficasConnecteur.appendChild(fact11,'paramInFact1') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #paramInFact12=d['children'][0]['children'][2]['children'][0]['key'] - #r=monEficasConnecteur.suppNode(paramInFact12) - #print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact.comm') - exit() - - testChangeValeur=0 - if testChangeValeur : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - print ('idRacine', idRacine) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - - monProc=d['children'][0]['key'] - print ('monProc', monProc) - param1=d['children'][0]['children'][0]['key'] - print ('param1', param1) - r=monEficasConnecteur.changeValeur(param1,'65') - param12=d['children'][0]['children'][1]['key'] - print ('param12', param12) - r=monEficasConnecteur.changeValeur(param12,'9') - r=monEficasConnecteur.appendChild(monProc,'param11') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param11=d['children'][0]['children'][1]['key'] - print ('param11', param11) - r=monEficasConnecteur.changeValeur(param11,'11') - - print ('______________ creation du bloc _____________________') - r=monEficasConnecteur.changeValeur(param1,'2') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - param1_inBloc=d['children'][0]['children'][3]['key'] - # on supprime le bloc - r=monEficasConnecteur.changeValeur(param1_inBloc,'1') - # on le rajoute (pb du bloc dans le bloc) - r=monEficasConnecteur.changeValeur(param1_inBloc,'2') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param1_inBlocDeBloc=d['children'][0]['children'][4]['key'] - r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2') - print ('______________ creation du bloc _____________________') - param2_inBloc=d['children'][0]['children'][6]['key'] - r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/changeValeur.comm') - exit() - - # creation du bloc - #r=monEficasConnecteur.changeValeur(i,'2') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm') - #pprint.pprint(d) - - # suppression du bloc - #r=monEficasConnecteur.changeValeur(i,'1') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm') - #pprint.pprint(d) - - # ajout du Fact2 - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - e=d['children'][2]['key'] - r=monEficasConnecteur.appendChild(e,'Fact2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][4]['key'] - print (mf) - r=monEficasConnecteur.appendChild(mf,'paramFacultatif') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatif.comm') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][4]['children'][1]['key'] - r=monEficasConnecteur.suppNode(mf) - print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatifEtSuppresse.comm') - # essai enlever un mot clef qu on ne peut pas enlever - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][1]['key'] - r=monEficasConnecteur.suppNode(mf) - print (r) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutPuisSuppresFact2.comm') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - #print ('_________', r) - - testPropageValide = 0 - if testPropageValide : - monEficasConnecteur.litFichierComm('propageValide.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - #r=monEficasConnecteur.appendChild(idRacine,'MonProc',0) - #print ('ajout de MonProc en position 0', r) - #r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - r=monEficasConnecteur.appendChild(idRacine,'MonProc','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param1PLast = d['children'][1]['children'][0]['key'] - r=monEficasConnecteur.changeValeur(param1PLast,'1') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/propageValide.comm') - print ('ajout de MonProc2 en postion last', r) - - testUpdateInfo = 0 - if testUpdateInfo : - print ('________________________ testUpdateInfo ___________________________') - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - print ('idRacine', idRacine) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - badMonProc2 = d['children'][0]['children'][0]['key'] - r=monEficasConnecteur.appendChild(badMonProc2,'Fact1') - monProc2 = d['children'][0]['key'] - #print ('idProc2', monProc2) - #print (d) - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - print (['children'][0]) - - testAjoutSimpListe=0 - if testAjoutSimpListe : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][2]['key'] - - testNommeProc=1 - if testNommeProc : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonOper','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monOper=d['children'][2]['key'] - bOk, message = monEficasConnecteur.updateSDName(monOper,'toto') - print ('in testNommeProc, bOk, message', bOk, message) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monParam=d['children'][2]['children'][0]['key'] - r=monEficasConnecteur.changeValeur(monParam,'65') - bOk, message = monEficasConnecteur.updateSDName(monOper,'toto') - print ('in testNommeProc, bOk, message', bOk, message) - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Procs.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Bloc.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Bloc.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine)) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - #print ('\n') - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Fact.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #monDicoAAfficher = (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine)) - #monEficasConnecteur.traiteDico(monDicoAAfficher) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - - #print ('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Fact.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Fact.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - #print ('\n') - diff --git a/InterfaceGUI/Web/compobloc.py b/InterfaceGUI/Web/compobloc.py index 3b99752c..e5c87c50 100644 --- a/InterfaceGUI/Web/compobloc.py +++ b/InterfaceGUI/Web/compobloc.py @@ -19,7 +19,7 @@ # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import compofact from InterfaceGUI.Web import browser diff --git a/InterfaceGUI/Web/compofact.py b/InterfaceGUI/Web/compofact.py index a44d9c59..2a6b648c 100644 --- a/InterfaceGUI/Web/compofact.py +++ b/InterfaceGUI/Web/compofact.py @@ -20,7 +20,7 @@ from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.extensions.eficas_translation import tr @@ -53,7 +53,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): -class FACTTreeItem(Objecttreeitem.ObjectTreeItem): +class FACTTreeItem(objecttreeitem.ObjectTreeItem): itemNode=Node def isExpandable(self): diff --git a/InterfaceGUI/Web/compojdc.py b/InterfaceGUI/Web/compojdc.py index 806a7252..52821f2c 100644 --- a/InterfaceGUI/Web/compojdc.py +++ b/InterfaceGUI/Web/compojdc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode from Accas.extensions.eficas_translation import tr @@ -30,7 +30,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuRacine): return param -class JDCTreeItem(Objecttreeitem.ObjectTreeItem): +class JDCTreeItem(objecttreeitem.ObjectTreeItem): itemNode=Node def isExpandable(self): diff --git a/InterfaceGUI/Web/compomclist.py b/InterfaceGUI/Web/compomclist.py index bf515a00..0403ff31 100644 --- a/InterfaceGUI/Web/compomclist.py +++ b/InterfaceGUI/Web/compomclist.py @@ -23,7 +23,7 @@ from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode from Accas.extensions.eficas_translation import tr -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.processing.P_OBJECT import ErrorObj @@ -139,7 +139,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): -class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): +class MCListTreeItem(objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets du processing Accas instances de la classe MCLIST. Elle adapte ces objets pour leur permettre d'etre integres en tant que @@ -165,7 +165,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): def isExpandable(self): if len(self._object) > 1: - return Objecttreeitem.SequenceTreeItem.isExpandable(self) + return objecttreeitem.SequenceTreeItem.isExpandable(self) else: return compofact.FACTTreeItem.isExpandable(self) diff --git a/InterfaceGUI/Web/compooper.py b/InterfaceGUI/Web/compooper.py index d5ea4251..7ce84364 100644 --- a/InterfaceGUI/Web/compooper.py +++ b/InterfaceGUI/Web/compooper.py @@ -20,7 +20,7 @@ from Accas.extensions.eficas_translation import tr from Accas.extensions.eficas_exception import EficasException -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode @@ -40,7 +40,7 @@ class Node(browser.JDCNode, typeNode.PopUpMenuNode): # typeNode.PopUpMenuNode.createPopUpMenu(self) -class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): +class EtapeTreeItem(objecttreeitem.ObjectTreeItem): """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing Accas. Elle leur permet d'etre affichés comme des noeuds d'un arbre graphique. diff --git a/InterfaceGUI/Web/compoparam.py b/InterfaceGUI/Web/compoparam.py index 849b4269..47892f7a 100644 --- a/InterfaceGUI/Web/compoparam.py +++ b/InterfaceGUI/Web/compoparam.py @@ -25,7 +25,7 @@ # import modules EFICAS -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode from Accas.extensions.eficas_translation import tr @@ -36,7 +36,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): -class PARAMTreeItem(Objecttreeitem.ObjectTreeItem): +class PARAMTreeItem(objecttreeitem.ObjectTreeItem): """ Classe servant a definir l'item porte par le noeud de l'arbre d'EFICAS qui represente le PARAMETRE diff --git a/InterfaceGUI/Web/compoproc.py b/InterfaceGUI/Web/compoproc.py index 5b8b28cf..f793cc46 100644 --- a/InterfaceGUI/Web/compoproc.py +++ b/InterfaceGUI/Web/compoproc.py @@ -17,7 +17,7 @@ # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import compooper from InterfaceGUI.Web import browser from InterfaceGUI.Web import typeNode diff --git a/InterfaceGUI/Web/composimp.py b/InterfaceGUI/Web/composimp.py index df284fde..ead37971 100644 --- a/InterfaceGUI/Web/composimp.py +++ b/InterfaceGUI/Web/composimp.py @@ -21,7 +21,7 @@ import traceback # Modules Eficas -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.processing.P_CR import justifyText from Accas import SalomeEntry from Accas import ASSD @@ -48,7 +48,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): -class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): +class SIMPTreeItem(objecttreeitem.AtomicObjectTreeItem): itemNode=Node def init(self) : diff --git a/InterfaceGUI/Web/web_editor.py b/InterfaceGUI/Web/web_editor.py index ab602fb8..34b69b6c 100755 --- a/InterfaceGUI/Web/web_editor.py +++ b/InterfaceGUI/Web/web_editor.py @@ -26,74 +26,84 @@ import traceback # Modules Eficas from Accas.extensions.eficas_translation import tr +from Accas.extensions.eficas_exception import EficasException -from Editeur import session from InterfaceGUI.common import comploader -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.Web import browser debug = False -from InterfaceGUI.editorSsIhm import JDCEditorSsIhm +from Editeur.editor import Editor -class JDCWebEditor(JDCEditorSsIhm): -# ------------------------------- # +# -------------------- # +class WebEditor(Editor): +# -------------------- # """ Editeur de jdc """ - def __init__ (self,appliEficas,fichier = None, jdc= None, connecteur = None ): - #------------------------------------------------------------------------ + #-------------------------------------------------------------------------- + def __init__ (self,appliEficas,fichier = None, jdc= None, session = None ): + #-------------------------------------------------------------------------- - self.connecteur=connecteur - JDCEditorSsIhm.__init__(self,appliEficas,fichier) + self.connecteur=appliEficas + Editor.__init__(self,appliEficas,fichier) self.dicoIdNode={} comploader.chargerComposants('Web') self.tree=None if self.jdc: - self.jdc_item=Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc ) + self.jdc_item=objecttreeitem.makeObjecttreeitem( self, "nom", self.jdc ) if self.jdc_item : self.tree = browser.JDCTree( self.jdc_item, self ) + #----------------------------- def getNodeById(self,nodeId ): #----------------------------- if nodeId in self.dicoIdNode : return self.dicoIdNode[nodeId] else : return None + #--------------------------------------- def reconstruitChaineDIndex(self,nodeId): #--------------------------------------- + """ utilise pour logguer les fonctions """ if nodeId in self.dicoIdNode : node=self.dicoIdNode[nodeId] - return JDCEditorSsIhm.reconstruitChaineDIndex(self,node) + if node.object == self.jdc : + return 'monEficasConnecteur.monEditeur.tree.racine.item.idUnique' + chaine="['key']" + templateChaine='["children"][{}]' + aTraiter=node.object + while hasattr(aTraiter,'parent') and aTraiter.parent: + chaine=templateChaine.format(aTraiter.getIndexDsParent())+chaine + aTraiter=aTraiter.parent + chaine='d'+chaine + return (chaine) else : return None - def getDicoObjetsCompletsPourTree(self,obj) : - #----------------------------------- - #print ('editor getDicoObjetsCompletsPourTree pour ' ,self, obj) - if self.tree == None : return {} - return obj.getDicoObjetsCompletsPourTree() - - def getDicoObjetsPourWeb(self,obj) : - #----------------------------------- - if self.tree == None : return {} - return obj.getDicoObjetsPourWeb() - + #----------------------------- def getDicoForFancy(self,obj) : - #----------------------------------- + #----------------------------- if self.tree == None : return {} return obj.getDicoForFancy() - def afficheInfos(self,txt,couleur=None): + #------------------------------------- + def afficheMessage(self,txt,couleur=None): #--------------------------------------- - self.connecteur.toWebApp('afficheInfos', txt, couleur) - JDCEditorSsIhm.afficheInfos(self,txt,couleur) + self.connecteur.toWebApp('afficheMessage', txt, couleur) + Editor.afficheMessage(self,'message to webapp',txt,couleur) + #------------------------------------- def afficheAlerte(self,titre,message): #------------------------------------- self.connecteur.toWebApp('afficheAlerte', titre , message) - JDCEditorSsIhm.afficheAlerte(self,titre,message) + Editor.afficheMessage(self,titre,message) + #--------------------------- + def getListeCommandes(self): + #--------------------------- + return (self.jdc.getListeCmd()) diff --git a/InterfaceGUI/Web/web_editor_manager.py b/InterfaceGUI/Web/web_editor_manager.py new file mode 100644 index 00000000..ab70df2d --- /dev/null +++ b/InterfaceGUI/Web/web_editor_manager.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2024 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +import os +from Accas.extensions.eficas_translation import tr +from Editeur.editor_manager import EditorManager + +#-----------------------------------# +class WebEditorManager(EditorManager): +#-----------------------------------# + """ + classe qui gere quel est l editor web actif + """ + + #-------------------------------- + def __init__(self, appliEficas): + #-------------------------------- + super().__init__(appliEficas) + self.dictSessions={} + + + #--------------------------------------- + def afficheInfos(self,txt,couleur=None): + #--------------------------------------- + """ + Est-ce que le web_manager a des infos a afficher ? + sans session ? + """ + self.appliEficas.toWebApp('afficheInfos', txt, couleur) + + + # ------------------------------------------------------ + def getEditor(self, fichier=None, jdc=None, session = 1 ): + # ------------------------------------------------------ + """ + Retourne un nouvel editeur ou le meme si doublon + gere la liste des connexions pour propager les infos + a affiner : le nom du fichier n est pas determinant + il faut aussi la machine dont il provient + """ + for indexEditor in self.dictEditors: + editor = self.dictEditors[indexEditor] + if self.samePath(fichier, editor.getFileName()): + double = editor + + else: + from web_editor import WebEditor + editor = WebEditor(self.appliEficas, fichier) + if editor.jdc: # le fichier est bien un jdc + self.editors.append(editor) + else: + editor=None + return editor + + diff --git a/InterfaceGUI/Web/web_eficas.py b/InterfaceGUI/Web/web_eficas.py index a68d60af..b63e97f8 100755 --- a/InterfaceGUI/Web/web_eficas.py +++ b/InterfaceGUI/Web/web_eficas.py @@ -22,412 +22,72 @@ import os, sys from Editeur.eficas_appli import EficasAppli from InterfaceGUI.Web.web_editor_manager import WebEditorManager +from Accas.extensions.eficas_exception import EficasException +activeLogging=0 +if activeLogging : + from Editeur.loggingEnvironnement import loggingEnvironnement, fonctionLoguee +else : + fonctionLoguee = lambda func: func + +#--------------------------------# class WebEficasAppli(EficasAppli): +#--------------------------------# """ Class implementing the main QT user interface. """ - #---------------------------------------------------------------------------------------------------------------------------------------------- - def __init__(self, code=None, versionCode=None, salome=1, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5"): - #---------------------------------------------------------------------------------------------------------------------------------------------- + #--------------------------------------------------------------------------------------------------------------------------------------------------------- + def __init__(self, code=None, versionCode=None, salome=0, multi=False, langue="fr", ssCode=None, fichierCata=None, GUIPath="InterfaceGUI.QT5", appWeb=None): + #--------------------------------------------------------------------------------------------------------------------------------------------------------- """ Constructor """ - EficasAppli.__init__( self, code, versionCode, salome, multi, langue, ssCode, fichierCata, GUIPath) - self.WebEditorManager = WebEditorManager(self) - self.GUIPath = GUIPath - - if code == None : multi = True - else : multi = False - from Editeur.eficas_go import getEficasSsIhm - - if fichierCata == None and fichierComm : - self.toWebApp('afficheInfos', 'pour ouvrir un JDC, il faut connaitre le catalogue', 'rouge') + EficasAppli.__init__( self, code, versionCode, salome, multi, langue, ssCode, fichierCata, GUIPath, appWeb) + self.editorManager = WebEditorManager(self) + if self.appWeb == None : + super().afficheMessage ('lancement Eficas WEB' , 'le parametre appWeb est obligatoire') return - self.litFichierComm(fichierComm) - - - #def fileOpen(self): - # try: - # self.editorManager.openFile() - # except EficasException as exc: - # msg = str(exc) - # if msg != "": - # QMessageBox.warning(self, tr("Erreur"), msg) - - #def fileSave(self): - # return self.editorManager.handleSave() - - #def fileSaveAs(self): - # return self.editorManager.handleSaveAs() - - #def fileClose(self): - # self.editorManager.handleClose(texte="&Fermer") - - #def fileCloseAll(self): - # self.editorManager.closeAllFiles(texte="&Fermer") - - #def fileExit(self): - # On peut sortir sur Abort - # res = self.editorManager.closeAllFiles() - # if res != 2: - # self.close() - # return res - - - - def toWebApp(self,fction,*args, **kwargs): + #----------------------------------------- + def toWebApp(self, fction,*args, **kwargs): #----------------------------------------- #if fction =='propageValide' : debug=0 - if debug : print ('PNPNPN : self.appWeb.toWebApp', fction, *args, **kwargs) - if self.appWeb == None : - #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom) - return + if debug : print ('PNPNPN : WebEficasAppli.toWebApp', fction, *args, **kwargs) + if self.appWeb == None : return + #if fction =='propageValide' : print ('self.appWeb.toWebApp propageValide', self.monEditeur.getNodeById(args[0]).nom) self.appWeb.fromConnecteur(fction, *args, **kwargs) - - def litFichierComm(self,fichierComm=None): - #----------------------------------------- - from InterfaceGUI.Web.editor import JDCWebEditor - self.monEditeur=JDCWebEditor(self.monEficas,fichierComm,connecteur=self) - - def getListeCommandes(self): - #--------------------------- - if self.monEditeur == None : return - return (self.monEditeur.jdc.getListeCmd()) - - def getListeMotsClesFilsPossibles(self,nomCommande): - #----------------------------------------- - # ici il faut programmer getListeMotsClesFilsPossibles dans P_ENTITE - # Pour l instant on renvoie entites - # doit aussi pouvoir etre appele sur FACT et BLOC - maCommande= getattr(self.monEditeur.jdc.cata,nomCommande) - laListe=maCommande.entites - return laListe - - - def getDicoForFancy(self,obj,debug=0) : - #--------------------------------- - dico=self.monEditeur.getDicoForFancy(obj) - if debug : - import pprint - pprint.pprint (dico) - return dico - - def changeValeur(self,id,valeur) : - #--------------------------------- - """ - id : identifiant unique - valeur : valeur saisie dans le formulaire - doit-on mettre l ancienne valeur en retour qui serait utile si validité = Non - """ - monNode=self.monEditeur.getNodeById(id) - #print (' change Valeur', monNode) - #(idUnique, commentaire, validite)=monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur) - #print ('retour ChangeValeur',idUnique, commentaire, validite ) - return monNode.fauxNoeudGraphique.traiteValeurSaisie(valeur) + #----------------------- + def createEditor(self): + #----------------------- + monEditor = self.editorManager.getEditor(self) + return monEditor - def updateSDName(self,id,sdnom) : - #--------------------------------- - monNode=self.monEditeur.getNodeById(id) - return monNode.fauxNoeudGraphique.updateSDName(sdnom) - def suppNode(self,id): - #------------------- - - monNode=self.monEditeur.getNodeById(id) - print ('monNode', monNode) - retour=monNode.fauxNoeudGraphique.delete() - return retour - - def appendChild(self,id,name,pos=None): - #------------------------------------- - """ - Methode pour ajouter un objet fils name a l objet associe au noeud id. - On peut l'ajouter en debut de liste (pos='first'), en fin (pos='last') - ou en position pos_ieme de la liste. - retour = nouvelIdUnique ou None - """ - monNode=self.monEditeur.getNodeById(id) - if monNode.fauxNoeudGraphique == None : - print ('PNPN pas de noeud Graphique associe a l id') - return - if debug : print (monNode.fauxNoeudGraphique) - retour = monNode.fauxNoeudGraphique.appendChild(name,pos) - return retour - - def saveFile(self,fileName): - #---------------------------- - """ - sauve le .comm dans fileName (si fileName = None, - alors la sauvegarde est faite dans le fichier courant) - retour = True/False et le nom du fichier sauvegarde - """ - return self.monEditeur.saveFile(fileName) + @fonctionLoguee + #--------------------------- + def openFile(self, fichier): + #--------------------------- + try: + monEditor = self.editorManager.getEditor(fichier) + except EficasException as exc: + self.afficheMessage('erreur ouverture fichier', str(exc),critical=True) + monEditor = None + return monEditor + + @fonctionLoguee + #----------------------------------------------------- + def afficheMessage (self, titre, texte,critical=True): + #----------------------------------------------------- +#TODO : le afficheMessage doit tenir compte de qui + if critical : + self.toWebApp('afficheMessage', titre+texte, 'rouge') + else : + self.toWebApp('afficheMessage', titre+texte) if __name__ == "__main__": - import prefs - name='prefs_'+prefs.code - __import__(name) - code=prefs.code - monEficasConnecteur=WebEficasAppli(code, langue='ang', GUIPath) - - testAjoutSuppProc=0 - if testAjoutSuppProc : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc',0) - print ('ajout de MonProc en postion 0', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2',1) - print ('ajout de MonProc2 en postion 1', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - print ('ajout de MonProc2 en postion last', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','first') - print ('ajout de MonProc2 en postion first', r) - r=monEficasConnecteur.appendChild(idRacine,'MonProc2',) - print ('ajout de MonProc2 sans poistion ne fonctionne pas', r) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - etape2=d['children'][0]['key'] - print ('je detruis' ,etape2) - r=monEficasConnecteur.suppNode(etape2) - print (r) - monProc2=d['children'][0]['key'] - r=monEficasConnecteur.appendChild(monProc2,'Fact2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProc.comm') - - testAjoutSuppFact2=0 - if testAjoutSuppFact2 : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][2]['key'] - r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm') - - testAjoutSuppFact=0 - if testAjoutSuppFact : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][0]['key'] - print ('id monProc2 : ', monProc2) - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print ('ajout de Fact2 dans monProc2 reussi', r) - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #print ('ajout de Fact2 dans monProc2 inadequat', r) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - fact11=d['children'][0]['children'][2]['key'] - fact12=d['children'][0]['children'][3]['key'] - fact13=d['children'][0]['children'][4]['key'] - fact14=d['children'][0]['children'][5]['key'] - pprint.pprint(d) - #print (d) - #monFact2=d['children'][0]['children'][3]['key'] - #print (monFact2) - #r=monEficasConnecteur.suppNode(monFact2) - #print (r) - #fact11=d['children'][0]['children'][2]['key'] - #monNode=monEficasConnecteur.monEditeur.getNodeById(fact11) - #print ('monNode', monNode) - r=monEficasConnecteur.suppNode(fact11) - r=monEficasConnecteur.suppNode(fact12) - r=monEficasConnecteur.suppNode(fact13) - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - print ('________________________________________________') - r=monEficasConnecteur.suppNode(fact14) - print (r) - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #r=monEficasConnecteur.appendChild(monProc2,'Fact2') - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #print (d) - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - #r=monEficasConnecteur.appendChild(monProc2,'Fact1') - #print (r) - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #fact12=d['children'][0]['children'][3]['key'] - #print(d['children'][0]['children'][3]['title']) - #r=monEficasConnecteur.appendChild(fact12,'paramInFact1') - #fact1=d['children'][0]['children'][2] - #print (fact1) - #fact11=d['children'][0]['children'][2]['key'] - #print (fact11) - #print ('******************************************************') - #r=monEficasConnecteur.suppNode(fact11) - #r=monEficasConnecteur.appendChild(fact11,'paramInFact1') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #paramInFact12=d['children'][0]['children'][2]['children'][0]['key'] - #r=monEficasConnecteur.suppNode(paramInFact12) - #print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact.comm') - exit() - - testChangeValeur=0 - if testChangeValeur : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - print ('idRacine', idRacine) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - - monProc=d['children'][0]['key'] - print ('monProc', monProc) - param1=d['children'][0]['children'][0]['key'] - print ('param1', param1) - r=monEficasConnecteur.changeValeur(param1,'65') - param12=d['children'][0]['children'][1]['key'] - print ('param12', param12) - r=monEficasConnecteur.changeValeur(param12,'9') - r=monEficasConnecteur.appendChild(monProc,'param11') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param11=d['children'][0]['children'][1]['key'] - print ('param11', param11) - r=monEficasConnecteur.changeValeur(param11,'11') - - print ('______________ creation du bloc _____________________') - r=monEficasConnecteur.changeValeur(param1,'2') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - param1_inBloc=d['children'][0]['children'][3]['key'] - # on supprime le bloc - r=monEficasConnecteur.changeValeur(param1_inBloc,'1') - # on le rajoute (pb du bloc dans le bloc) - r=monEficasConnecteur.changeValeur(param1_inBloc,'2') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param1_inBlocDeBloc=d['children'][0]['children'][4]['key'] - r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2') - print ('______________ creation du bloc _____________________') - param2_inBloc=d['children'][0]['children'][6]['key'] - r=monEficasConnecteur.changeValeur(param1_inBlocDeBloc,'2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/changeValeur.comm') - exit() - - # creation du bloc - #r=monEficasConnecteur.changeValeur(i,'2') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutProcEtBloc.comm') - #pprint.pprint(d) - - # suppression du bloc - #r=monEficasConnecteur.changeValeur(i,'1') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/suppressionBloc.comm') - #pprint.pprint(d) - - # ajout du Fact2 - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - e=d['children'][2]['key'] - r=monEficasConnecteur.appendChild(e,'Fact2') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFact2.comm') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][4]['key'] - print (mf) - r=monEficasConnecteur.appendChild(mf,'paramFacultatif') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatif.comm') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][4]['children'][1]['key'] - r=monEficasConnecteur.suppNode(mf) - print (r) - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutFacultatifEtSuppresse.comm') - # essai enlever un mot clef qu on ne peut pas enlever - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - mf=d['children'][2]['children'][1]['key'] - r=monEficasConnecteur.suppNode(mf) - print (r) - #(ok,newFile)=monEficasConnecteur.saveFile('/tmp/ajoutPuisSuppresFact2.comm') - #d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - #pprint.pprint(d) - #print ('_________', r) - - testPropageValide = 0 - if testPropageValide : - monEficasConnecteur.litFichierComm('propageValide.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - #r=monEficasConnecteur.appendChild(idRacine,'MonProc',0) - #print ('ajout de MonProc en position 0', r) - #r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - r=monEficasConnecteur.appendChild(idRacine,'MonProc','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - param1PLast = d['children'][1]['children'][0]['key'] - r=monEficasConnecteur.changeValeur(param1PLast,'1') - (ok,newFile)=monEficasConnecteur.saveFile('/tmp/propageValide.comm') - print ('ajout de MonProc2 en postion last', r) - - testUpdateInfo = 0 - if testUpdateInfo : - print ('________________________ testUpdateInfo ___________________________') - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - print ('idRacine', idRacine) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - badMonProc2 = d['children'][0]['children'][0]['key'] - r=monEficasConnecteur.appendChild(badMonProc2,'Fact1') - monProc2 = d['children'][0]['key'] - #print ('idProc2', monProc2) - #print (d) - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - r=monEficasConnecteur.appendChild(monProc2,'Fact1') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - print (['children'][0]) - - testAjoutSimpListe=0 - if testAjoutSimpListe : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonProc2','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monProc2=d['children'][2]['key'] - - testNommeProc=1 - if testNommeProc : - monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - idRacine=monEficasConnecteur.monEditeur.tree.racine.item.idUnique - r=monEficasConnecteur.appendChild(idRacine,'MonOper','last') - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monOper=d['children'][2]['key'] - bOk, message = monEficasConnecteur.updateSDName(monOper,'toto') - print ('in testNommeProc, bOk, message', bOk, message) - d=monEficasConnecteur.getDicoForFancy(monEficasConnecteur.monEditeur.tree.racine) - monParam=d['children'][2]['children'][0]['key'] - r=monEficasConnecteur.changeValeur(monParam,'65') - bOk, message = monEficasConnecteur.updateSDName(monOper,'toto') - print ('in testNommeProc, bOk, message', bOk, message) - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Procs.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Procs.comm') - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Bloc.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Bloc.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #print (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine)) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - #print ('\n') - - #print ( '\n Fichier /home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_2Fact.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #monDicoAAfficher = (monEficasConnecteur.getDicoObjetsPourWeb(monEficasConnecteur.monEditeur.tree.racine)) - #monEficasConnecteur.traiteDico(monDicoAAfficher) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - - #print ('/home/A96028/QT5GitEficasTravail/Web/eficas/WebTest/web_tres_simple_avec_Fact.comm') - #monEficasConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_Fact.comm') - #print (monEficasConnecteur.generDicoPourWeb()) - #pprint.pprint (monEficasConnecteur.getDicoObjetsCompletsPourTree(monEficasConnecteur.monEditeur.tree.racine)) - #print ('\n') - + print ('todo') diff --git a/InterfaceGUI/cinqC/compoSelection.py b/InterfaceGUI/cinqC/compoSelection.py index 916b8b68..76c35b08 100644 --- a/InterfaceGUI/cinqC/compoSelection.py +++ b/InterfaceGUI/cinqC/compoSelection.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # from __future__ import absolute_import -from Editeur import Objecttreeitem +from Editeur import objecttreeitem from InterfaceGUI.cinqC import browser from InterfaceGUI.cinqC import compoproc diff --git a/InterfaceGUI/cinqC/compofact.py b/InterfaceGUI/cinqC/compofact.py index 109f4071..8b7a7978 100644 --- a/InterfaceGUI/cinqC/compofact.py +++ b/InterfaceGUI/cinqC/compofact.py @@ -23,7 +23,7 @@ from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem import traceback @@ -56,7 +56,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodePartiel): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) -class FACTTreeItem(Objecttreeitem.ObjectTreeItem): +class FACTTreeItem(objecttreeitem.ObjectTreeItem): itemNode=Node def isExpandable(self): diff --git a/InterfaceGUI/cinqC/compojdc.py b/InterfaceGUI/cinqC/compojdc.py index 21cf9bcc..e27b3c84 100644 --- a/InterfaceGUI/cinqC/compojdc.py +++ b/InterfaceGUI/cinqC/compojdc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.cinqC import browser from Accas.extensions.eficas_translation import tr @@ -32,7 +32,7 @@ class Node(browser.JDCNode): -class JDCTreeItem(Objecttreeitem.ObjectTreeItem): +class JDCTreeItem(objecttreeitem.ObjectTreeItem): itemNode=Node def isExpandable(self): diff --git a/InterfaceGUI/cinqC/compomclist.py b/InterfaceGUI/cinqC/compomclist.py index 49a02e58..7499c113 100644 --- a/InterfaceGUI/cinqC/compomclist.py +++ b/InterfaceGUI/cinqC/compomclist.py @@ -26,7 +26,7 @@ from InterfaceGUI.cinqC import browser from InterfaceGUI.QT5 import typeNode from Accas.extensions.eficas_translation import tr -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from Accas.processing.P_OBJECT import ErrorObj @@ -73,7 +73,7 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): -class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): +class MCListTreeItem(objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): """ La classe MCListTreeItem joue le role d'un adaptateur pour les objets du processing Accas instances de la classe MCLIST. Elle adapte ces objets pour leur permettre d'etre integres en tant que @@ -110,7 +110,7 @@ class MCListTreeItem(Objecttreeitem.SequenceTreeItem,compofact.FACTTreeItem): def isExpandable(self): if len(self._object) > 1: - return Objecttreeitem.SequenceTreeItem.isExpandable(self) + return objecttreeitem.SequenceTreeItem.isExpandable(self) else: return compofact.FACTTreeItem.isExpandable(self) diff --git a/InterfaceGUI/cinqC/compooper.py b/InterfaceGUI/cinqC/compooper.py index d11373ef..e5a824f7 100644 --- a/InterfaceGUI/cinqC/compooper.py +++ b/InterfaceGUI/cinqC/compooper.py @@ -20,7 +20,7 @@ import os import tempfile -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.cinqC import browser class Node(browser.JDCNode ): @@ -41,7 +41,7 @@ class Node(browser.JDCNode ): return MonWidgetCommande(self,self.editor,self.item.object) -class EtapeTreeItem(Objecttreeitem.ObjectTreeItem): +class EtapeTreeItem(objecttreeitem.ObjectTreeItem): """ La classe EtapeTreeItem est un adaptateur des objets ETAPE du processing Accas. Elle leur permet d'etre affichés comme des noeuds d'un arbre graphique. diff --git a/InterfaceGUI/cinqC/compoproc.py b/InterfaceGUI/cinqC/compoproc.py index 37e83d71..86fd8cfc 100644 --- a/InterfaceGUI/cinqC/compoproc.py +++ b/InterfaceGUI/cinqC/compoproc.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # from __future__ import absolute_import -from InterfaceGui.common import Objecttreeitem +from InterfaceGui.common import objecttreeitem from InterfaceGUI.cinqC import browser from InterfaceGUI.cinqC import compooper diff --git a/InterfaceGUI/cinqC/composimp.py b/InterfaceGUI/cinqC/composimp.py index d3561fd7..1fe7da53 100644 --- a/InterfaceGUI/cinqC/composimp.py +++ b/InterfaceGUI/cinqC/composimp.py @@ -18,7 +18,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -from InterfaceGUI.common import Objecttreeitem +from InterfaceGUI.common import objecttreeitem from InterfaceGUI.cinqC import browser from InterfaceGUI.QT5.compojdc import JDCTreeItem diff --git a/InterfaceGUI/cinqC/qt_editor.py b/InterfaceGUI/cinqC/qt_editor.py index c88f5159..98fc88e5 100644 --- a/InterfaceGUI/cinqC/qt_editor.py +++ b/InterfaceGUI/cinqC/qt_editor.py @@ -28,7 +28,7 @@ from PyQt5.QtWidgets import QWidget from Editeur.editor import Editor from UiQT5.editor5C import Ui_editor5C from InterfaceGui.common import comploader -from InterfaceGui.common import Objecttreeitem +from InterfaceGui.common import objecttreeitem from InterfaceGUI.cinqC import browser from InterfaceGUI.cinqC.connectDB import connectDB import Accas.IO.writer as generator @@ -41,7 +41,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget): Editeur de jdc 5C """ - def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, units = None, include=0): + def __init__ (self,appliEficas,fichier = None, jdc=None, QWParent=None, include=0): #------------------------------------------------------------------------------------------------ debug = 0 @@ -97,7 +97,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget): self.jdcSelection=self._newJDC(texte=texte) self.jdcSelection.analyse() if debug : print (self.jdcSelection.etapes) - self.jdcSelectionItem = Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcSelection ) + self.jdcSelectionItem = objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcSelection ) if self.jdcSelectionItem : self.treeJdcSelection = browser.JDCTree( self.jdcSelectionItem, self ) if debug : print (self.treeJdcSelection) @@ -167,7 +167,7 @@ class QtEditor(Ui_editor5C, Editor, QWidget): if debug : print ('texte newJDC' , texte) self.jdcLabels=self._newJDC(texte=texte) self.jdcLabels.analyse() - jdcLabelsItem = Objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcLabels ) + jdcLabelsItem = objecttreeitem.makeObjecttreeitem( self, "nom", self.jdcLabels ) if jdcLabelsItem : treeJdcLabels = browser.JDCTree( jdcLabelsItem, self ) widgetLabels = treeJdcLabels.racine.children[0].fenetre diff --git a/InterfaceGUI/cinqC/qt_eficas.py b/InterfaceGUI/cinqC/qt_eficas.py index 945b61d0..f1cd30ac 100644 --- a/InterfaceGUI/cinqC/qt_eficas.py +++ b/InterfaceGUI/cinqC/qt_eficas.py @@ -35,7 +35,7 @@ class QtEficasAppli(Ui_Eficas5C, QtEficasAppli): super().__init__(code=code, salome=salome, multi=multi, langue=langue, versionCode=versionCode, GUIPath=GUIPath) self.withXSD = True self.GUIPath = GUIPath - self.editorManager.newEditor() + self.editorManager.getEditor() def connecterSignaux(self) : diff --git a/InterfaceGUI/common/Objecttreeitem.py b/InterfaceGUI/common/Objecttreeitem.py deleted file mode 100644 index 81338a1f..00000000 --- a/InterfaceGUI/common/Objecttreeitem.py +++ /dev/null @@ -1,551 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2024 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" -""" -from builtins import str -from builtins import object -import types, os, sys -from copy import copy, deepcopy -from uuid import uuid1 - -# import du chargeur de composants -from InterfaceGUI.common.comploader import makeObjecttreeitem -from Accas.accessor import CONNECTOR -from Accas.extensions.eficas_translation import tr -from Accas.extensions.eficas_exception import EficasException - -from reprlib import Repr - -myrepr = Repr() -myrepr.maxstring = 100 -myrepr.maxother = 100 - - -class TreeItem(object): - - """Abstract class representing tree items. - - Methods should typically be overridden, otherwise a default action - is used. - - """ - - # itemNode est une factory qui doit retourner un objet de la classe Node - # ou derive de cette classe. - # Le widget arbre utilisera cet objet comme noeud associe au tree item. - # Par defaut, utilise la classe Node de base - # La signature de la factory est la suivante : - # itemNode(treeOrNode,item,command,rmenu) - # ou treeOrNode est le noeud parent, item est l'item associe - # command est une fonction python appelee sur selection graphique - # du noeud et rmenu est une fonction python appelee sur click droit sur le noeud - itemNode = None - - def __init__(self): - """Constructor. Do whatever you need to do.""" - - def getText(self): - """Return text string to display.""" - - def getLabelText(self): - """Return label text string to display in front of text (if any).""" - - expandable = None - - def _isExpandable(self): - if self.expandable is None: - self.expandable = self.isExpandable() - return self.expandable - - def isExpandable(self): - """Return whether there are subitems.""" - return 1 - - def _getSubList(self): - """Do not override! Called by TreeNode.""" - if not self.isExpandable(): - return [] - sublist = self.getSubList() - if not sublist: - self.expandable = 0 - return sublist - - def IsEditable(self): - """Return whether the item's text may be edited.""" - pass - - def SetText(self, text): - """Change the item's text (if it is editable).""" - pass - - def getIconName(self): - """Return name of icon to be displayed normally.""" - pass - - def getSelectedIconName(self): - """Return name of icon to be displayed when selected.""" - pass - - def getSubList(self): - """Return list of items forming sublist.""" - pass - - def onDoubleClick(self): - """Called on a double-click on the item.""" - pass - - -class Delegate(object): - def __init__(self, delegate=None): - self.object = delegate - self.__cache = {} - - def setDelegate(self, delegate): - self.resetcache() - self.object = delegate - - def getDelegate(self): - return self.object - - def __getattr__(self, name): - attr = getattr(self.object, name) # May raise AttributeError - setattr(self, name, attr) - self.__cache[name] = attr - return attr - - def resetcache(self): - for key in list(self.__cache.keys()): - try: - delattr(self, key) - except AttributeError: - pass - self.__cache.clear() - - def cachereport(self): - keys = list(self.__cache.keys()) - keys.sort() - # print keys - - -class ObjectTreeItem(TreeItem, Delegate): - def __init__(self, appliEficas, labeltext, object, setFunction=None): - self.labeltext = labeltext - self.appliEficas = appliEficas - # L'objet delegue est stocke dans l'attribut object - # L'objet associe a l'item est stocke dans l'attribut _object - # Il peut etre obtenu par appel a la methode getObject - # Attention : le delegue peut etre different de l'objet associe (MCLIST) - # Dans le cas d'une MCListe de longueur 1, l'objet associe est la MCListe - # et l'objet delegue est le MCFACT (object = _object.data[0]) - Delegate.__init__(self, object) - # On cache l'objet initial (pour destruction eventuelle - # ulterieure) - self._object = object - self.setFunction = setFunction - self.expandable = 1 - self.sublist = [] - self.init() - - - # La partie suivante ne sert que pour le Web - # on met le meme id au noeud et a l objet - # utile pour les MCList - if hasattr(object, "idUnique"): - self.idUnique = object.idUnique - else: - self.idUnique = uuid1().hex - - if self._object.nature == "MCList" and len(self._object.data) == 1: - # pour les suppressions on met le meme id a l objet et a la liste - self._object.data[0].idUnique = self.idUnique - self._object.idUnique = self._object.data[0].idUnique - if hasattr(self.appliEficas, "dicoIdNode"): - self.appliEficas.dicoIdNode[self._object.data[0].idUnique] = self - self.idUnique = 0 - return - - self._object.idUnique = self.idUnique - if hasattr(self.appliEficas, "dicoIdNode") and self.idUnique: - self.appliEficas.dicoIdNode[self.idUnique] = self - - def init(self): - return - - def getObject(self): - return self._object - - def connect(self, channel, callable, args): - """Connecte la fonction callable (avec arguments args) a l'item self sur le - canal channel - """ - # print self,channel,callable,args - CONNECTOR.Connect(self._object, channel, callable, args) - CONNECTOR.Connect(self.object, channel, callable, args) - - def copy(self): - """ - Cree un item copie de self - """ - object = self._object.copy() - appliEficas = copy(self.appliEficas) - labeltext = copy(self.labeltext) - fonction = deepcopy(self.setFunction) - item = makeObjecttreeitem(appliEficas, labeltext, object, fonction) - return item - - def isActif(self): - if hasattr(self.object, "actif"): - return self.object.actif - else: - return 1 - - def update(self, item): - """ - Met a jour l'item courant a partir d'un autre item passe en argument - Ne fait rien par defaut - """ - pass - - def getLabelText(self): - """Retourne 3 valeurs : - - le texte a afficher dans le noeud representant l'item - - la fonte dans laquelle afficher ce texte - - la couleur du texte - """ - # None --> fonte et couleur par defaut - return tr(self.labeltext), None, None - - def getNature(self): - """ - Retourne la nature de l'item et de l'objet - """ - return self.object.nature - - def getRegles(self): - """retourne les regles de l'objet pointe par self""" - return self.object.getRegles() - - def getListeMcPresents(self): - """Retourne la liste des mots-cles fils de l'objet pointe par self""" - return self.object.listeMcPresents() - - def getVal(self): - """Retourne le nom de la valeur de l'objet pointe par self dans le cas - ou celle-ci est un objet (ASSD)""" - return self.object.getVal() - - def get_definition(self): - """ - Retourne l'objet definition de l'objet pointe par self - """ - return self.object.definition - - def getListeMcOrdonnee(self, liste, dico): - """retourne la liste ordonnee (suivant le catalogue) brute des mots-cles - d'une entite composee dont le chemin complet est donne sous forme - d'une liste du type :ETAPE + MCFACT ou MCBLOC + ... - il faut encore rearranger cette liste (certains mots-cles deja - presents ne doivent plus etre proposes, regles ...)""" - return self.object.getListeMcOrdonnee(liste, dico) - - def getListeMcOrdonneeBrute(self, liste, dico): - """ - retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles - d'une entite composee dont le chemin complet est donne sous forme - d'une liste du type :ETAPE + MCFACT ou MCBLOC + ... - """ - return self.object.getListeMcOrdonneeBrute(liste, dico) - - def getGenealogie(self): - """ - Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE) - de l'objet pointe par self - """ - return self.object.getGenealogie() - - def getIndexChild(self, nom_fils): - """ - Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils - Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter - le nouveau mot-cle - """ - return self.object.getIndexChild(nom_fils) - - def getIndexChild_old(self, nom_fils): - """ - Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils - Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter - le nouveau mot-cle - """ - liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute( - self.getGenealogie(), self.getJdc().dicoCataOrdonne - ) - liste_noms_mc_presents = self.object.listeMcPresents() - l = [] - for nom in liste_noms_mc_ordonnee: - if nom in liste_noms_mc_presents or nom == nom_fils: - l.append(nom) - # l contient les anciens mots-cles + le nouveau dans l'ordre - return l.index(nom_fils) - - def appendChild(self, name, pos=None): - """ - Permet d'ajouter un item fils a self - """ - if pos == "first": - index = 0 - elif pos == "last": - index = len(self.listeMcPresents()) - elif type(pos) == int: - # la position est fixee - index = pos - # elif type(pos) == types.InstanceType: - elif type(pos) == object: - # pos est un item. Il faut inserer name apres pos - index = self.getIndex(pos) + 1 - # elif type(name) == types.InstanceType: - elif type(name) == object: - index = self.getIndexChild(name.nom) - else: - index = self.getIndexChild(name) - return self.addobject(name, index) - - def appendBrother(self, name, pos="after"): - """ - Permet d'ajouter un frere a self - par defaut on l'ajoute apres self - """ - index = self._object.parent.getIndex(self.getObject()) - if pos == "before": - index = index - elif pos == "after": - index = index + 1 - else: - print((tr("%d n'est pas un index valide pour appendBrother", pos))) - return - return self.parent.addobject(name, index) - - def getCopieObjet(self): - """Retourne une copie de l'objet pointe par self""" - return self.object.copy() - - def getPosition(self): - """Retourne la valeur de l'attribut position de l'objet pointe par self""" - definition = self.get_definition() - try: - return getattr(definition, "position") - except AttributeError: - return "local" - - def getNom(self): - """Retourne le nom de l'objet pointe par self""" - return self.object.nom - - def getJdc(self): - """Retourne le jdc auquel appartient l'objet pointe par self""" - return self.object.jdc - - def getValeur(self): - """Retourne la valeur de l'objet pointe par self""" - return self.object.valeur - - def getCr(self): - """Retourne le compte-rendu CR de self""" - return self.object.report() - - def getObjetCommentarise(self): - """ - Cette methode retourne un objet commentarise - representatif de self.object - --> a surcharger par les differents items - """ - raise EficasException( - "MESSAGE AU DEVELOPPEUR : il faut \ - surcharger la methode getObjetCommentarise() \ - pour la classe %s", - self.__class__.__name__, - ) - - def isValid(self): - """Retourne 1 si l'objet pointe par self est valide, 0 sinon""" - return self.object.isValid() - - def isCopiable(self): - """ - Retourne 1 si l'objet est copiable, 0 sinon - Par defaut retourne 0 - """ - return 0 - - def getMcPresents(self): - """Retourne le dictionnaire des mots-cles presents de l'objet pointe par self""" - return self.object.dictMcPresents() - - def verifConditionRegles(self, l_mc_presents): - return self.object.verifConditionRegles(l_mc_presents) - - def getFr(self): - """Retourne le fr de l'objet pointe par self""" - try: - return self.object.getFr() - except: - return "" - - def getDocu(self): - """Retourne la cle de doc de l'objet pointe par self""" - return self.object.getDocu() - - def setValeur(self, new_valeur): - """Remplace la valeur de l'objet pointe par self par new_valeur""" - return self.object.setValeur(new_valeur) - - def getText(self): - return myrepr.repr(self.object) - - def getIconName(self): - if not self.isExpandable(): - return "python" - - def IsEditable(self): - return self.setFunction is not None - - def SetText(self, text): - try: - value = eval(text) - self.setFunction(value) - except: - pass - - def isExpandable(self): - return 1 - - def getSubList(self): - keys = dir(self.object) - sublist = [] - for key in keys: - try: - value = getattr(self.object, key) - except AttributeError: - continue - item = makeObjecttreeitem( - self.appliEficas, - str(key) + " =", - value, - lambda value, key=key, object=self.object: setattr(object, key, value), - ) - sublist.append(item) - return sublist - - # a piori inutile PN 06 11 17 - # def wait_fichier_init(self): - """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation - (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """ - - # return self.object.definition.fichier_ini - - def makeObjecttreeitem(self, appliEficas, labeltext, object, setFunction=None): - """ - Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet - de type item associe a l'object passe en argument. - """ - return makeObjecttreeitem(appliEficas, labeltext, object, setFunction) - - # def __del__(self): - # print "__del__",self - - -class AtomicObjectTreeItem(ObjectTreeItem): - def isExpandable(self): - return 0 - - -class SequenceTreeItem(ObjectTreeItem): - def isExpandable(self): - return len(self._object) > 0 - - def __len__(self): - return len(self._object) - - def keys(self): - return list(range(len(self._object))) - - def getIconName(self): - if self._object.isValid(): - return "ast-green-los" - elif self._object.isOblig(): - return "ast-red-los" - else: - return "ast-yel-los" - - def ajoutPossible(self): - return self._object.ajoutPossible() - - def getIndex(self, child): - """Retourne le numero de child dans la liste des enfants de self""" - return self._object.getIndex(child.getObject()) - - def getText(self): - return " " - - def addItem(self, obj, pos): - self._object.insert(pos, obj) - item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj) - return item - - def suppItem(self, item): - try: - self._object.remove(item.getObject()) - # la liste peut etre retournee vide ! - message = "Mot-clef " + item.getObject().nom + " supprime" - self.appliEficas.afficheMessages(message) - return 1 - except: - return 0 - - def getSubList(self): - isublist = iter(self.sublist) - liste = self._object.data - iliste = iter(liste) - self.sublist = [] - - while 1: - old_obj = obj = None - for item in isublist: - old_obj = item.getObject() - if old_obj in liste: - break - - for obj in iliste: - if obj is old_obj: - break - - # nouvel objet : on cree un nouvel item - def setFunction(value, object=obj): - object = value - - it = self.makeObjecttreeitem( - self.appliEficas, obj.nom + " : ", obj, setFunction - ) - self.sublist.append(it) - if old_obj is None and obj is None: - break - if old_obj is obj: - self.sublist.append(item) - return self.sublist diff --git a/InterfaceGUI/common/objecttreeitem.py b/InterfaceGUI/common/objecttreeitem.py new file mode 100644 index 00000000..81338a1f --- /dev/null +++ b/InterfaceGUI/common/objecttreeitem.py @@ -0,0 +1,551 @@ +# -*- coding: utf-8 -*- +# Copyright (C) 2007-2024 EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# +""" +""" +from builtins import str +from builtins import object +import types, os, sys +from copy import copy, deepcopy +from uuid import uuid1 + +# import du chargeur de composants +from InterfaceGUI.common.comploader import makeObjecttreeitem +from Accas.accessor import CONNECTOR +from Accas.extensions.eficas_translation import tr +from Accas.extensions.eficas_exception import EficasException + +from reprlib import Repr + +myrepr = Repr() +myrepr.maxstring = 100 +myrepr.maxother = 100 + + +class TreeItem(object): + + """Abstract class representing tree items. + + Methods should typically be overridden, otherwise a default action + is used. + + """ + + # itemNode est une factory qui doit retourner un objet de la classe Node + # ou derive de cette classe. + # Le widget arbre utilisera cet objet comme noeud associe au tree item. + # Par defaut, utilise la classe Node de base + # La signature de la factory est la suivante : + # itemNode(treeOrNode,item,command,rmenu) + # ou treeOrNode est le noeud parent, item est l'item associe + # command est une fonction python appelee sur selection graphique + # du noeud et rmenu est une fonction python appelee sur click droit sur le noeud + itemNode = None + + def __init__(self): + """Constructor. Do whatever you need to do.""" + + def getText(self): + """Return text string to display.""" + + def getLabelText(self): + """Return label text string to display in front of text (if any).""" + + expandable = None + + def _isExpandable(self): + if self.expandable is None: + self.expandable = self.isExpandable() + return self.expandable + + def isExpandable(self): + """Return whether there are subitems.""" + return 1 + + def _getSubList(self): + """Do not override! Called by TreeNode.""" + if not self.isExpandable(): + return [] + sublist = self.getSubList() + if not sublist: + self.expandable = 0 + return sublist + + def IsEditable(self): + """Return whether the item's text may be edited.""" + pass + + def SetText(self, text): + """Change the item's text (if it is editable).""" + pass + + def getIconName(self): + """Return name of icon to be displayed normally.""" + pass + + def getSelectedIconName(self): + """Return name of icon to be displayed when selected.""" + pass + + def getSubList(self): + """Return list of items forming sublist.""" + pass + + def onDoubleClick(self): + """Called on a double-click on the item.""" + pass + + +class Delegate(object): + def __init__(self, delegate=None): + self.object = delegate + self.__cache = {} + + def setDelegate(self, delegate): + self.resetcache() + self.object = delegate + + def getDelegate(self): + return self.object + + def __getattr__(self, name): + attr = getattr(self.object, name) # May raise AttributeError + setattr(self, name, attr) + self.__cache[name] = attr + return attr + + def resetcache(self): + for key in list(self.__cache.keys()): + try: + delattr(self, key) + except AttributeError: + pass + self.__cache.clear() + + def cachereport(self): + keys = list(self.__cache.keys()) + keys.sort() + # print keys + + +class ObjectTreeItem(TreeItem, Delegate): + def __init__(self, appliEficas, labeltext, object, setFunction=None): + self.labeltext = labeltext + self.appliEficas = appliEficas + # L'objet delegue est stocke dans l'attribut object + # L'objet associe a l'item est stocke dans l'attribut _object + # Il peut etre obtenu par appel a la methode getObject + # Attention : le delegue peut etre different de l'objet associe (MCLIST) + # Dans le cas d'une MCListe de longueur 1, l'objet associe est la MCListe + # et l'objet delegue est le MCFACT (object = _object.data[0]) + Delegate.__init__(self, object) + # On cache l'objet initial (pour destruction eventuelle + # ulterieure) + self._object = object + self.setFunction = setFunction + self.expandable = 1 + self.sublist = [] + self.init() + + + # La partie suivante ne sert que pour le Web + # on met le meme id au noeud et a l objet + # utile pour les MCList + if hasattr(object, "idUnique"): + self.idUnique = object.idUnique + else: + self.idUnique = uuid1().hex + + if self._object.nature == "MCList" and len(self._object.data) == 1: + # pour les suppressions on met le meme id a l objet et a la liste + self._object.data[0].idUnique = self.idUnique + self._object.idUnique = self._object.data[0].idUnique + if hasattr(self.appliEficas, "dicoIdNode"): + self.appliEficas.dicoIdNode[self._object.data[0].idUnique] = self + self.idUnique = 0 + return + + self._object.idUnique = self.idUnique + if hasattr(self.appliEficas, "dicoIdNode") and self.idUnique: + self.appliEficas.dicoIdNode[self.idUnique] = self + + def init(self): + return + + def getObject(self): + return self._object + + def connect(self, channel, callable, args): + """Connecte la fonction callable (avec arguments args) a l'item self sur le + canal channel + """ + # print self,channel,callable,args + CONNECTOR.Connect(self._object, channel, callable, args) + CONNECTOR.Connect(self.object, channel, callable, args) + + def copy(self): + """ + Cree un item copie de self + """ + object = self._object.copy() + appliEficas = copy(self.appliEficas) + labeltext = copy(self.labeltext) + fonction = deepcopy(self.setFunction) + item = makeObjecttreeitem(appliEficas, labeltext, object, fonction) + return item + + def isActif(self): + if hasattr(self.object, "actif"): + return self.object.actif + else: + return 1 + + def update(self, item): + """ + Met a jour l'item courant a partir d'un autre item passe en argument + Ne fait rien par defaut + """ + pass + + def getLabelText(self): + """Retourne 3 valeurs : + - le texte a afficher dans le noeud representant l'item + - la fonte dans laquelle afficher ce texte + - la couleur du texte + """ + # None --> fonte et couleur par defaut + return tr(self.labeltext), None, None + + def getNature(self): + """ + Retourne la nature de l'item et de l'objet + """ + return self.object.nature + + def getRegles(self): + """retourne les regles de l'objet pointe par self""" + return self.object.getRegles() + + def getListeMcPresents(self): + """Retourne la liste des mots-cles fils de l'objet pointe par self""" + return self.object.listeMcPresents() + + def getVal(self): + """Retourne le nom de la valeur de l'objet pointe par self dans le cas + ou celle-ci est un objet (ASSD)""" + return self.object.getVal() + + def get_definition(self): + """ + Retourne l'objet definition de l'objet pointe par self + """ + return self.object.definition + + def getListeMcOrdonnee(self, liste, dico): + """retourne la liste ordonnee (suivant le catalogue) brute des mots-cles + d'une entite composee dont le chemin complet est donne sous forme + d'une liste du type :ETAPE + MCFACT ou MCBLOC + ... + il faut encore rearranger cette liste (certains mots-cles deja + presents ne doivent plus etre proposes, regles ...)""" + return self.object.getListeMcOrdonnee(liste, dico) + + def getListeMcOrdonneeBrute(self, liste, dico): + """ + retourne la liste ordonnee (suivant le catalogue) BRUTE des mots-cles + d'une entite composee dont le chemin complet est donne sous forme + d'une liste du type :ETAPE + MCFACT ou MCBLOC + ... + """ + return self.object.getListeMcOrdonneeBrute(liste, dico) + + def getGenealogie(self): + """ + Retourne la liste des noms des ascendants (noms de MCSIMP,MCFACT,MCBLOC ou ETAPE) + de l'objet pointe par self + """ + return self.object.getGenealogie() + + def getIndexChild(self, nom_fils): + """ + Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils + Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter + le nouveau mot-cle + """ + return self.object.getIndexChild(nom_fils) + + def getIndexChild_old(self, nom_fils): + """ + Retourne l'index dans la liste des fils de self du nouveau fils de nom nom_fils + Necessaire pour savoir a quelle position dans la liste des fils il faut ajouter + le nouveau mot-cle + """ + liste_noms_mc_ordonnee = self.getListeMcOrdonneeBrute( + self.getGenealogie(), self.getJdc().dicoCataOrdonne + ) + liste_noms_mc_presents = self.object.listeMcPresents() + l = [] + for nom in liste_noms_mc_ordonnee: + if nom in liste_noms_mc_presents or nom == nom_fils: + l.append(nom) + # l contient les anciens mots-cles + le nouveau dans l'ordre + return l.index(nom_fils) + + def appendChild(self, name, pos=None): + """ + Permet d'ajouter un item fils a self + """ + if pos == "first": + index = 0 + elif pos == "last": + index = len(self.listeMcPresents()) + elif type(pos) == int: + # la position est fixee + index = pos + # elif type(pos) == types.InstanceType: + elif type(pos) == object: + # pos est un item. Il faut inserer name apres pos + index = self.getIndex(pos) + 1 + # elif type(name) == types.InstanceType: + elif type(name) == object: + index = self.getIndexChild(name.nom) + else: + index = self.getIndexChild(name) + return self.addobject(name, index) + + def appendBrother(self, name, pos="after"): + """ + Permet d'ajouter un frere a self + par defaut on l'ajoute apres self + """ + index = self._object.parent.getIndex(self.getObject()) + if pos == "before": + index = index + elif pos == "after": + index = index + 1 + else: + print((tr("%d n'est pas un index valide pour appendBrother", pos))) + return + return self.parent.addobject(name, index) + + def getCopieObjet(self): + """Retourne une copie de l'objet pointe par self""" + return self.object.copy() + + def getPosition(self): + """Retourne la valeur de l'attribut position de l'objet pointe par self""" + definition = self.get_definition() + try: + return getattr(definition, "position") + except AttributeError: + return "local" + + def getNom(self): + """Retourne le nom de l'objet pointe par self""" + return self.object.nom + + def getJdc(self): + """Retourne le jdc auquel appartient l'objet pointe par self""" + return self.object.jdc + + def getValeur(self): + """Retourne la valeur de l'objet pointe par self""" + return self.object.valeur + + def getCr(self): + """Retourne le compte-rendu CR de self""" + return self.object.report() + + def getObjetCommentarise(self): + """ + Cette methode retourne un objet commentarise + representatif de self.object + --> a surcharger par les differents items + """ + raise EficasException( + "MESSAGE AU DEVELOPPEUR : il faut \ + surcharger la methode getObjetCommentarise() \ + pour la classe %s", + self.__class__.__name__, + ) + + def isValid(self): + """Retourne 1 si l'objet pointe par self est valide, 0 sinon""" + return self.object.isValid() + + def isCopiable(self): + """ + Retourne 1 si l'objet est copiable, 0 sinon + Par defaut retourne 0 + """ + return 0 + + def getMcPresents(self): + """Retourne le dictionnaire des mots-cles presents de l'objet pointe par self""" + return self.object.dictMcPresents() + + def verifConditionRegles(self, l_mc_presents): + return self.object.verifConditionRegles(l_mc_presents) + + def getFr(self): + """Retourne le fr de l'objet pointe par self""" + try: + return self.object.getFr() + except: + return "" + + def getDocu(self): + """Retourne la cle de doc de l'objet pointe par self""" + return self.object.getDocu() + + def setValeur(self, new_valeur): + """Remplace la valeur de l'objet pointe par self par new_valeur""" + return self.object.setValeur(new_valeur) + + def getText(self): + return myrepr.repr(self.object) + + def getIconName(self): + if not self.isExpandable(): + return "python" + + def IsEditable(self): + return self.setFunction is not None + + def SetText(self, text): + try: + value = eval(text) + self.setFunction(value) + except: + pass + + def isExpandable(self): + return 1 + + def getSubList(self): + keys = dir(self.object) + sublist = [] + for key in keys: + try: + value = getattr(self.object, key) + except AttributeError: + continue + item = makeObjecttreeitem( + self.appliEficas, + str(key) + " =", + value, + lambda value, key=key, object=self.object: setattr(object, key, value), + ) + sublist.append(item) + return sublist + + # a piori inutile PN 06 11 17 + # def wait_fichier_init(self): + """ Retourne 1 si l'object pointe par self attend un fichier d'initialisation + (ex: macros POURSUITE et INCLUDE de Code_Aster), 0 SINON """ + + # return self.object.definition.fichier_ini + + def makeObjecttreeitem(self, appliEficas, labeltext, object, setFunction=None): + """ + Cette methode, globale pour les objets de type item, permet de construire et de retourner un objet + de type item associe a l'object passe en argument. + """ + return makeObjecttreeitem(appliEficas, labeltext, object, setFunction) + + # def __del__(self): + # print "__del__",self + + +class AtomicObjectTreeItem(ObjectTreeItem): + def isExpandable(self): + return 0 + + +class SequenceTreeItem(ObjectTreeItem): + def isExpandable(self): + return len(self._object) > 0 + + def __len__(self): + return len(self._object) + + def keys(self): + return list(range(len(self._object))) + + def getIconName(self): + if self._object.isValid(): + return "ast-green-los" + elif self._object.isOblig(): + return "ast-red-los" + else: + return "ast-yel-los" + + def ajoutPossible(self): + return self._object.ajoutPossible() + + def getIndex(self, child): + """Retourne le numero de child dans la liste des enfants de self""" + return self._object.getIndex(child.getObject()) + + def getText(self): + return " " + + def addItem(self, obj, pos): + self._object.insert(pos, obj) + item = self.makeObjecttreeitem(self.appliEficas, obj.nom + ":", obj) + return item + + def suppItem(self, item): + try: + self._object.remove(item.getObject()) + # la liste peut etre retournee vide ! + message = "Mot-clef " + item.getObject().nom + " supprime" + self.appliEficas.afficheMessages(message) + return 1 + except: + return 0 + + def getSubList(self): + isublist = iter(self.sublist) + liste = self._object.data + iliste = iter(liste) + self.sublist = [] + + while 1: + old_obj = obj = None + for item in isublist: + old_obj = item.getObject() + if old_obj in liste: + break + + for obj in iliste: + if obj is old_obj: + break + + # nouvel objet : on cree un nouvel item + def setFunction(value, object=obj): + object = value + + it = self.makeObjecttreeitem( + self.appliEficas, obj.nom + " : ", obj, setFunction + ) + self.sublist.append(it) + if old_obj is None and obj is None: + break + if old_obj is obj: + self.sublist.append(item) + return self.sublist diff --git a/InterfaceGUI/common/traiteSaisie.py b/InterfaceGUI/common/traiteSaisie.py index d7cb0b99..c2a93a1a 100644 --- a/InterfaceGUI/common/traiteSaisie.py +++ b/InterfaceGUI/common/traiteSaisie.py @@ -38,7 +38,7 @@ class SaisieValeur(object): validite,commentaire=self.politique.recordValeur(nouvelleValeurFormat) if commentaire != "" : if validite : self.editor.afficheCommentaire(commentaire) - else : self.editor.afficheInfos(commentaire,'red') + else : self.editor.afficheMessage(commentaire,'red') self.inSaisieValeur=False self.setValide() @@ -56,7 +56,7 @@ class SaisieValeur(object): try: nouvelleValeur = str(self.lineEditVal.text()) except UnicodeEncodeError as e: - self.editor.afficheInfos("pb d encoding", Qt.red) + self.editor.afficheMessage("pb d encoding", Qt.red) validite, commentaire = self.politique.recordValeur(None) self.lineEditVal.setText("") self.setValide() @@ -74,7 +74,7 @@ class SaisieValeur(object): if self.node.item.definition.validators != None: if self.node.item.definition.validators.verifItem(nouvelleValeur) != 1: commentaire = self.node.item.definition.validators.infoErreurItem() - self.editor.afficheInfos(commentaire, Qt.red) + self.editor.afficheMessage(commentaire, Qt.red) self.inSaisieValeur = False return @@ -82,7 +82,7 @@ class SaisieValeur(object): validite, commentaire = self.politique.recordValeur(nouvelleValeurFormat) if commentaire != "": if validite: self.editor.afficheCommentaire(commentaire) - else: self.editor.afficheInfos(commentaire, 'red') + else: self.editor.afficheMessage(commentaire, 'red') self.inSaisieValeur = False self.setValide() @@ -134,7 +134,7 @@ class SaisieValeur(object): commentaire = tr( "Veuillez entrer le complexe sous forme aster ou sous forme python" ) - self.editor.afficheInfos(commentaire) + self.editor.afficheMessage(commentaire) return listeValeurs, 0 else: # ce n'est pas un tuple a la mode aster diff --git a/Web/mdm.py b/Web/mdm.py index 97c4534f..26803393 100755 --- a/Web/mdm.py +++ b/Web/mdm.py @@ -1,7 +1,6 @@ # coding: utf-8 #!/usr/bin/env python3 import sys -from accasConnecteur import AccasConnecteur code='Essai' #code=None @@ -52,16 +51,21 @@ app.config["REDIS_URL"] = "redis://localhost" app.register_blueprint(sse, url_prefix='/stream') ### Eficas Connector -def createConnecteur(app): - monConnecteur=AccasConnecteur(code, langue='ang',appWeb=app) - return monConnecteur +def createWebAppli(app): + import os + sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')) + from Editeur.eficas_go import getEficas + eficasAppli=getEficas(code, langue='ang',GUIPath= 'Web',appWeb=app) + return eficasAppli -monConnecteur=createConnecteur(app) + +eficasAppli=createWebAppli(app) debug=1 if debug : + eficasEditeur=eficasAppli.getEditor() print ('les commandes dans le catalogue') print ('_______________________________') - print (monConnecteur.getListeCommandes()) + print (eficasEditeur.getListeCommandes()) def fromConnecteur(maFonction,*args,**kwargs): fnct=globals()[maFonction] @@ -96,9 +100,9 @@ def deleteChildren(idList): #TODO: Câbler la sélection du catalogue avant d'activer les appels suivants # car si la page Web n'est pas rendue et que le connecteur génère une erreur... boom ! -def afficheInfos(txt, couleur): #TODO: RENAME TO ... displayWarning - print ('Flask/afficheInfos: ', txt, couleur) - # sse.publish( {'txt':txt, 'color':couleur, 'messageClass':"alert-warning" ,'message': "Hello from afficheInfos!"}, +def afficheMessage(txt, couleur): #TODO: RENAME TO ... displayWarning + print ('Flask/afficheMessage: ', txt, couleur) + # sse.publish( {'txt':txt, 'color':couleur, 'messageClass':"alert-warning" ,'message': "Hello from afficheMessage!"}, # type='displayMessage') def afficheAlerte(titre, message): #TODO: RENAME TO ... displayDanger @@ -126,13 +130,13 @@ def updateSimp(): id=req['id'];value=req['value'] # id, value = req.values() # Dangereux correspondance implicite value = str(value) #On peut écrire Pi - rId,message,changeDone = monConnecteur.changeValeur(id,value); + rId,message,changeDone = eficasEditeur.changeValeur(id,value); assert(rId==id) #changeDone = True print ("changeDone : ",changeDone) # Ne pas recuperer et ne pas renvoyer le noeud dans le cas du SIMP # (le changeDone et l''ancienne valeur ds la WebApp suffit - node = monConnecteur.getDicoForFancy(monConnecteur.monEditeur.getNodeById(id)) + node = eficasEditeur.getDicoForFancy(eficasEditeur.getNodeById(id)) print("Flask/updateSimp node : ",node) # return jsonify([myTreeDico]) @@ -155,7 +159,7 @@ def updateSDName(): print(req['id']) id=req['id'];sdnom=req['sdnom'] sdnom = str(sdnom) #On peut écrire Pi - changeDone,message = monConnecteur.updateSDName(id,sdnom); + changeDone,message = eficasEditeur.updateSDName(id,sdnom); #changeDone = True print ("changeDone : ",changeDone) @@ -178,7 +182,7 @@ def removeNode(): # Print the dictionary print("/removeNode ",req);print("/removeNode ",req['id']); id = req['id']; - ret,message = monConnecteur.suppNode(id); + ret,message = eficasEditeur.suppNode(id); print ("/removeNode : ret : ",ret," message : ",message) return make_response(json.dumps( {'ret':ret, 'message':message} )) @@ -197,8 +201,8 @@ def appendChild(): print(__file__+"/appendChild : ",req); id=req['id'];name=req['name'];pos=req['pos']; # id, value = req.values() # Dangereux correspondance implicite - #rId,message,changeDone = monConnecteur.appendChild(id,name,pos); - newId = monConnecteur.appendChild(id,name,pos); + #rId,message,changeDone = eficasEditeur.appendChild(id,name,pos); + newId = eficasEditeur.appendChild(id,name,pos); print (__file__+"/appendChild : newId : ",newId); return make_response(json.dumps( {'id':newId} )) @@ -213,11 +217,20 @@ def appendChild(): @app.route('/') def index(): - - monConnecteur.litFichierComm('../WebTest/web_tres_simple_avec_2Fact.comm') - #monConnecteur.litFichierComm('../WebTest/edg_REP1300_FULL_PN.comm') - myFancyTreeDico=monConnecteur.getDicoForFancy(monConnecteur.monEditeur.tree.racine) - +#PN decider de ce qu on appelle +# Lecture du cata +# Lecture du fichier + #eficasEditeur = eficasAppli.litFichierComm('../Codes/WebTest/web_tres_simple_avec_2Fact.comm') + #eficasAppli.litFichierComm('../WebTest/edg_REP1300_FULL_PN.comm') + + eficasEditeur = eficasAppli.openFile('../Codes/WebTest/web_tres_simple_avec_2Fact.comm') + if not(eficasEditeur) : + return render_template('commandes_2.html', + titre='Pb a la lecture', + listeCommandes = [], + tree= None + ) + myFancyTreeDico=eficasEditeur.getDicoForFancy(eficasEditeur.tree.racine) myFancyTreeJS=json.dumps([myFancyTreeDico],indent=4) #TODO : remove indent if not DEBUG print("---- myFancyTreeDico ----") @@ -227,7 +240,7 @@ def index(): return render_template('commandes_2.html', titre=code, - listeCommandes = monConnecteur.getListeCommandes(), + listeCommandes = eficasEditeur.getListeCommandes(), tree=myFancyTreeJS, # tree=tree4Fancy, )