X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=InterfaceQT4%2Fcomposimp.py;h=88a18a27ed1de8d22d10aaf2350481f70a69eb09;hb=75ba37ea740a909acf29f20c42d53d9ecd2cffdc;hp=f97c0a95c7d2c0bdbe5f27fc111f81333861b1f2;hpb=796ae9061bdbb9bbaffe59639526dd550b2839fb;p=tools%2Feficas.git diff --git a/InterfaceQT4/composimp.py b/InterfaceQT4/composimp.py index f97c0a95..88a18a27 100644 --- a/InterfaceQT4/composimp.py +++ b/InterfaceQT4/composimp.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: iso-8859-1 -*- # Copyright (C) 2007-2013 EDF R&D # # This library is free software; you can redistribute it and/or @@ -18,110 +18,38 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # # Modules Python -import string,types,os +from __future__ import absolute_import +from __future__ import print_function +try : + from builtins import str +except : pass + +import types,os from copy import copy,deepcopy import traceback -import typeNode +from . import typeNode # Modules Eficas from Editeur import Objecttreeitem -import browser +from . import browser from Noyau.N_CR import justify_text from Accas import SalomeEntry class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): - def getPanel(self): - """ - """ - klass = None - # Attention l ordre des if est important - - if self.item.wait_matrice (): - from monMatricePanel import MonMatricePanel - klass=MonMatricePanel - # l'objet prend sa (ses) valeur(s) dans un ensemble discret de valeurs - elif self.item.has_into(): - if self.item.is_list() : - from monPlusieursIntoPanel import MonPlusieursIntoPanel - klass = MonPlusieursIntoPanel - else: - from monUniqueIntoPanel import MonUniqueIntoPanel - klass = MonUniqueIntoPanel - - # l'objet prend une ou des valeurs a priori quelconques - else: - # on attend une liste de valeurs - if self.item.is_list() : - # on attend une liste de SD - if self.item.wait_tuple() : - from monFonctionPanel import MonFonctionPanel - klass = MonFonctionPanel - elif self.item.wait_assd(): - from monPlusieursASSDPanel import MonPlusieursASSDPanel - klass = MonPlusieursASSDPanel - else: - # on attend une liste de valeurs de types debase (entiers, réels,...) - from monPlusieursBasePanel import MonPlusieursBasePanel - klass = MonPlusieursBasePanel - # on n'attend qu'une seule valeur - else: - # on attend une SD ou un objet de la classe CO (qui n'existe pas encore) - if self.item.wait_co(): - if len(self.item.get_sd_avant_du_bon_type()) != 0 : - from monUniqueSDCOIntoPanel import MonUniqueSDCOIntoPanel - klass = MonUniqueSDCOIntoPanel - else : - from monUniqueSDCOPanel import MonUniqueSDCOPanel - klass = MonUniqueSDCOPanel - - # on attend une SD - elif self.item.wait_assd(): - if 'R' in self.item.GetType(): - from monUniqueASSDPanel import MonUniqueASSDReelPanel - klass = MonUniqueASSDReelPanel - else : - from monUniqueASSDPanel import MonUniqueASSDPanel - klass = MonUniqueASSDPanel - - # on attend une valeur d'un type de base (entier,reel,...) - else: - # on attend un complexe - if self.item.wait_complex(): - from monUniqueCompPanel import MonUniqueCompPanel - klass = MonUniqueCompPanel - elif self.item.wait_bool() : - from monUniqueBoolPanel import MonUniqueBoolPanel - klass = MonUniqueBoolPanel - else : - from monUniqueBasePanel import MonUniqueBasePanel - klass = MonUniqueBasePanel - - # cas particulier des fonctions - genea = self.item.get_genealogie() - if "VALE" in genea or "VALE_C" in genea: - if "DEFI_FONCTION" in genea : - from monFonctionPanel import MonFonctionPanel - klass = MonFonctionPanel - - if not klass: - return None - return klass( self, self.editor ) - def createPopUpMenu(self): typeNode.PopUpMenuNodeMinimal.createPopUpMenu(self) - def getPanelGroupe(self,parentQt,commande): + def getPanelGroupe(self,parentQt,maCommande): maDefinition=self.item.get_definition() monObjet=self.item.object monNom=self.item.nom - maCommande=commande # label informatif if monObjet.isInformation(): - from monWidgetInfo import MonWidgetInfo + from .monWidgetInfo import MonWidgetInfo widget=MonWidgetInfo(self,maDefinition,monNom,monObjet,parentQt,maCommande) self.widget=widget return widget @@ -130,99 +58,161 @@ class Node(browser.JDCNode,typeNode.PopUpMenuNodeMinimal): # Attention l ordre des if est important # Attention il faut gerer les blocs et les facteurs # a gerer comme dans composimp - # Gerer les matrices --> Actuellement pas dans ce type de panneau + # Gestion des matrices + if self.item.wait_matrice (): + from .monWidgetMatrice import MonWidgetMatrice + widget=MonWidgetMatrice(self,maDefinition,monNom,monObjet,parentQt,maCommande) + self.widget=widget + return widget #print "____________________________", monNom, self.item.wait_co() #print "____________________________", monNom, self.item.wait_assd() # Gestion d'une seule valeur (eventuellement un tuple ou un complexe) + if maDefinition.into != [] and maDefinition.into != None: + if type(maDefinition.into) ==types.FunctionType : monInto=maDefinition.into() + else : monInto = maDefinition.into + + if maDefinition.max == 1 : + # A verifier if maDefinition.into != [] and maDefinition.into != None: - if len(maDefinition.into) < 4 : - from monWidgetRadioButton import MonWidgetRadioButton + if len(monInto) < 4 : + from .monWidgetRadioButton import MonWidgetRadioButton widget=MonWidgetRadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) - elif len(maDefinition.into) < 7 : - from monWidget4a6RadioButton import MonWidget4a6RadioButton + elif len(monInto) < 7 : + from .monWidget4a6RadioButton import MonWidget4a6RadioButton widget=MonWidget4a6RadioButton(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetCB import MonWidgetCB + from .monWidgetCB import MonWidgetCB widget=MonWidgetCB(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_bool() : - from monWidgetSimpBool import MonWidgetSimpBool + from .monWidgetSimpBool import MonWidgetSimpBool widget=MonWidgetSimpBool(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_fichier(): - from monWidgetSimpFichier import MonWidgetSimpFichier + from .monWidgetSimpFichier import MonWidgetSimpFichier widget=MonWidgetSimpFichier(self,maDefinition,monNom,monObjet,parentQt,maCommande) # PNPNPN - a faire elif self.item.wait_date(): - from monWidgetDate import MonWidgetDate + from .monWidgetDate import MonWidgetDate widget=MonWidgetDate(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_heure(): - from monWidgetHeure import MonWidgetHeure + from .monWidgetHeure import MonWidgetHeure widget=MonWidgetHeure(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_tuple() : if self.item.object.definition.type[0].ntuple == 2: - from monWidgetSimpTuple2 import MonWidgetSimpTuple2 + from .monWidgetSimpTuple2 import MonWidgetSimpTuple2 widget=MonWidgetSimpTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.object.definition.type[0].ntuple == 3 : - from monWidgetSimpTuple3 import MonWidgetSimpTuple3 + from .monWidgetSimpTuple3 import MonWidgetSimpTuple3 widget=MonWidgetSimpTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - print "Pas de Tuple de longueur > 3" - print "Prevenir la maintenance " + print ("Pas de Tuple de longueur > 3") + print ("Prevenir la maintenance ") elif self.item.wait_complex(): - from monWidgetSimpComplexe import MonWidgetSimpComplexe + from .monWidgetSimpComplexe import MonWidgetSimpComplexe widget=MonWidgetSimpComplexe(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_co(): if len(self.item.get_sd_avant_du_bon_type()) == 0 : - from monWidgetUniqueSDCO import MonWidgetUniqueSDCO + from .monWidgetUniqueSDCO import MonWidgetUniqueSDCO widget=MonWidgetUniqueSDCO(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetSDCOInto import MonWidgetSDCOInto + from .monWidgetSDCOInto import MonWidgetSDCOInto widget=MonWidgetSDCOInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_assd(): if len(self.item.get_sd_avant_du_bon_type()) == 0 : - from monWidgetVide import MonWidgetVide + from .monWidgetVide import MonWidgetVide widget=MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) - if len(self.item.get_sd_avant_du_bon_type()) < 4 : - from monWidgetRadioButton import MonWidgetRadioButtonSD + elif len(self.item.get_sd_avant_du_bon_type()) < 4 : + from .monWidgetRadioButton import MonWidgetRadioButtonSD widget=MonWidgetRadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif len(self.item.get_sd_avant_du_bon_type()) < 7 : - from monWidget4a6RadioButton import MonWidget4a6RadioButtonSD + from .monWidget4a6RadioButton import MonWidget4a6RadioButtonSD widget=MonWidget4a6RadioButtonSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetCB import MonWidgetCBSD + from .monWidgetCB import MonWidgetCBSD widget=MonWidgetCBSD(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_Salome() and self.editor.salome: - # Pas fait - from monWidgetSimpSalome import MonWidgetSimpSalome + from .monWidgetSimpSalome import MonWidgetSimpSalome widget=MonWidgetSimpSalome(self,maDefinition,monNom,monObjet,parentQt,maCommande) elif self.item.wait_TXM(): - from monWidgetSimpTxt import MonWidgetSimpTxt + from .monWidgetSimpTxt import MonWidgetSimpTxt widget=MonWidgetSimpTxt(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetSimpBase import MonWidgetSimpBase + from .monWidgetSimpBase import MonWidgetSimpBase widget=MonWidgetSimpBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) # Gestion des listes else : - if maDefinition.into != [] and maDefinition.into != None: + if maDefinition.intoSug != [] and maDefinition.intoSug != None: + from .monWidgetIntoSug import MonWidgetIntoSug + widget=MonWidgetIntoSug(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #if maDefinition.into != [] and maDefinition.into != None: + # Attention pas fini --> on attend une liste de ASSD avec ordre + elif self.item.wait_assd() and self.item.is_list_SansOrdreNiDoublon(): + #if self.item.is_list_Chargement(): + #from monWidgetPlusieursTuple2AvecChargement import MonWidgetPlusieursTuple2AvecChargement + #widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande) + # pass + #else : + listeAAfficher = self.item.get_sd_avant_du_bon_type() + if len(listeAAfficher) == 0: + from .monWidgetVide import MonWidgetVide + widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from .monWidgetPlusieursInto import MonWidgetPlusieursInto + widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.wait_assd() : + listeAAfficher = self.item.get_sd_avant_du_bon_type() + if len(listeAAfficher) == 0: + from .monWidgetVide import MonWidgetVide + widget = MonWidgetVide(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from .monWidgetPlusieursASSDIntoOrdonne import MonWidgetPlusieursASSDIntoOrdonne + widget=MonWidgetPlusieursASSDIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.wait_tuple() : + if self.item.object.definition.type[0].ntuple == 2: + from .monWidgetPlusieursTuple2 import MonWidgetPlusieursTuple2 + widget=MonWidgetPlusieursTuple2(self,maDefinition,monNom,monObjet,parentQt,maCommande) + elif self.item.object.definition.type[0].ntuple == 3 : + from .monWidgetPlusieursTuple3 import MonWidgetPlusieursTuple3 + widget=MonWidgetPlusieursTuple3(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + print ("Pas de Tuple de longueur > 3") + print ("Prevenir la maintenance ") + elif self.item.has_into(): if self.item.is_list_SansOrdreNiDoublon(): - from monWidgetPlusieursInto import MonWidgetPlusieursInto - widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from .monWidgetPlusieursInto import MonWidgetPlusieursInto + widget=MonWidgetPlusieursInto(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne - widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) +# tres vite pour le tag mais devra etre gere dans configuration + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from .monWidgetPlusieursIntoOrdonne import MonWidgetPlusieursIntoOrdonne + widget=MonWidgetPlusieursIntoOrdonne(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) else : - from monWidgetPlusieursBase import MonWidgetPlusieursBase - widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + #print 8 + if self.item in self.editor.listeDesListesOuvertes or not(self.editor.afficheListesPliees) : + from .monWidgetPlusieursBase import MonWidgetPlusieursBase + widget=MonWidgetPlusieursBase(self,maDefinition,monNom,monObjet,parentQt,maCommande) + else : + from .monWidgetPlusieursPlie import MonWidgetPlusieursPlie + widget=MonWidgetPlusieursPlie(self,maDefinition,monNom,monObjet,parentQt,maCommande) + self.widget=widget return widget @@ -276,7 +266,11 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): return is_a_list def is_list_SansOrdreNiDoublon(self): - if self.definition.homo=="SansOrdreNiDoublon": return 1 + if self.definition.homo=="SansOrdreNiDoublon" : return 1 + return 0 + + def is_list_Chargement(self): + if self.definition.docu != "" : return 1 return 0 def has_into(self): @@ -299,6 +293,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): has_an_into= self.definition.validators.has_into() return has_an_into + def has_intoSug(self): + if self.definition.intoSug: return 1 + return 0 + def GetMinMax(self): """ Retourne les valeurs min et max de la definition de object """ @@ -324,16 +322,16 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): try : if "R" in self.object.definition.type: clef=self.object.GetNomConcept() - if self.appli.dict_reels.has_key(clef): - if type(valeurs) == types.TupleType: + if clef in self.appli.dict_reels: + if type(valeurs) == tuple: valeurs_reelles=[] for val in valeurs : - if self.appli.dict_reels[clef].has_key(val) : + if val in self.appli.dict_reels[clef]: valeurs_reelles.append(self.appli.dict_reels[clef][val]) else : valeurs_reelles.append(val) else : - if self.appli.dict_reels[clef].has_key(valeurs): + if valeurs in self.appli.dict_reels[clef]: valeurs_reelles=self.appli.dict_reels[clef][valeurs] valeurs=valeurs_reelles except : @@ -346,9 +344,40 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): else: valeurspossibles = self.get_definition().into + if listeActuelle==[] : return valeurspossibles + #On ne garde que les items valides listevalideitem=[] - if type(valeurspossibles) in (types.ListType,types.TupleType) : + if type(valeurspossibles) in (list,tuple) : + pass + else : + valeurspossibles=(valeurspossibles,) + for item in valeurspossibles: + encorevalide=self.valide_item(item) + if encorevalide : + listevalideitem.append(item) + + #on ne garde que les choix possibles qui passent le test de valide_liste_partielle + listevalideliste=[] + for item in listevalideitem: + encorevalide=self.valide_liste_partielle(item,listeActuelle) + if encorevalide : + listevalideliste.append(item) + #print listevalideliste + return listevalideliste + + def get_liste_possible_avecSug(self,listeActuelle=[]): + if hasattr(self.definition,'intoSug'): + valeurspossibles = self.definition.intoSug + else: + return listeActuelle + + if listeActuelle==[] : return valeurspossibles + valeurspossibles = valeurspossibles+listeActuelle + + #On ne garde que les items valides + listevalideitem=[] + if type(valeurspossibles) in (list,tuple) : pass else : valeurspossibles=(valeurspossibles,) @@ -463,7 +492,6 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): return "ast-red-ball" else: return "ast-yel-ball" - print "invalide" def GetText(self): """ @@ -543,6 +571,10 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): attend un objet GEOM, 0 sinon """ return self.object.wait_geom() + + def wait_TXM(self): + return self.object.wait_TXM() + def wait_complex(self): """ Méthode booléenne qui retourne 1 si l'objet pointé par self @@ -609,10 +641,13 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): return boo def wait_Salome(self): - type = self.object.definition.type[0] - if 'grma' in repr(type) : return True - if 'grno' in repr(type) : return True - if (isinstance(type, types.ClassType) and issubclass(type, SalomeEntry)) : return True + monType = self.object.definition.type[0] + if 'grma' in repr(monType) : return True + if 'grno' in repr(monType) : return True + try : + if issubclass(monType, SalomeEntry) : return True + except : + pass return False def GetType(self): @@ -632,15 +667,15 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): # traite_reel def eval_valeur(self,valeur): - """ Lance l'interprétation de 'valeur' (chaine de caractéres) comme valeur de self : - - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...) - - retourne 'valeur' (chaine de caractéres) sinon + """ Lance l'interpretation de 'valeur' (chaine de caracteres) comme valeur de self : + - retourne l'objet associe si on a pu interpreter (entier, reel, ASSD,...) + - retourne 'valeur' (chaine de caracteres) sinon """ newvaleur=self.eval_val(valeur) return newvaleur,1 def eval_valeur_BAK(self,valeur): - """ Lance l'interprétation de 'valeur' (chaine de caractéres) comme valeur + """ Lance l'interpretation de 'valeur' (chaine de caractéres) comme valeur de l'objet pointé par self : - retourne l'objet associé si on a pu interpréter (entier, réel, ASSD,...) - retourne 'valeur' (chaine de caractéres) sinon @@ -648,7 +683,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): - retourne invalide si 1 des objets du tuple l est """ validite=1 - if type(valeur) in (types.ListType,types.TupleType) : + if type(valeur) in (list,tuple) : valeurretour=[] for item in valeur : newvaleur,validiteitem=self.eval_valeur_item(item) @@ -684,7 +719,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): #print "eval_valeur_item",valeurretour,validite if validite == 0: - if type(valeur) == types.StringType and self.object.wait_TXM(): + if type(valeur) == bytes and self.object.wait_TXM(): essai_valeur="'" + valeur + "'" valeurretour,validite= self.object.eval_valeur(essai_valeur) @@ -703,7 +738,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): #validite=0 # on est dans le cas ou on a évalué et ou on n'aurait pas du if self.object.wait_TXM() : - if type(valeurretour) != types.StringType: + if type(valeurretour) != bytes: valeurretour=str(valeur) validite=1 return valeurretour,validite @@ -738,7 +773,7 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): ou de détecter si on fait référence a un concept produit par DEFI_VALEUR ou un EVAL ... """ - valeur = string.strip(valeur) + valeur = valeur.strip() liste_reels = self.get_sd_avant_du_bon_type() if valeur in liste_reels: return valeur @@ -746,12 +781,12 @@ class SIMPTreeItem(Objecttreeitem.AtomicObjectTreeItem): if valeur[0:4] == 'EVAL' : # on a trouvé un EVAL --> on retourne directement la valeur return valeur - if string.find(valeur,'.') == -1 : + if valeur.find('.') == -1 : # aucun '.' n'a été trouvé dans valeur --> on en rajoute un a la fin if (self.is_param(valeur)): return valeur else: - if string.find(valeur,'e') != -1: + if valeur.find('e') != -1: # Notation scientifique ? try : r=eval(valeur)