Salome HOME
cht version
[tools/eficas.git] / Noyau / N_TUPLE.py
1 import types
2 import Accas
3 import inspect
4 class N_Tuple:
5     def __init__(self,ntuple):
6         self.ntuple=ntuple
7
8     def __convert__(self,valeur):
9         try:
10             if isinstance(valeur, basestring) : return None
11         except NameError:
12             if isinstance(valeur, str): return None
13         if len(valeur) != self.ntuple: return None
14         return valeur
15
16     def info(self):
17         return "Tuple de %s elements" % self.ntuple
18
19 class N_Matrice:
20     def __init__(self, nbLigs=None, nbCols=None,
21                  methodeCalculTaille=None, formatSortie="ligne",
22                  valSup=None, valMin=None, structure=None, typElt='R',
23                  typEltInto=None, listeHeaders=None, coloree=False,
24                  defaut=None):
25         self.nbLigs = nbLigs
26         self.nbCols = nbCols
27         self.methodeCalculTaille = methodeCalculTaille
28         self.formatSortie = formatSortie
29         self.valSup = valSup
30         self.valMin = valMin
31         self.structure = structure
32         self.typElt = typElt
33         self.listeHeaders = listeHeaders
34         self.typEltInto = typEltInto
35         self.jdc=None
36         self.coloree=coloree
37         self.defaut=defaut
38         if self.coloree : self.activeCouleur()
39
40     def __convert__(self, valeur):
41         # Attention ne verifie pas grand chose
42         if not isinstance(valeur, types.ListType):
43             return None
44         return valeur
45
46     def verifItem(self,texte,mc):
47         val=''
48         if self.typElt == 'R' :
49             try    : val=float(str(texte)); ok=True
50             except : return (False,"Entrer un float SVP")
51         if self.typElt == 'I' :
52             try    : val=int(str(texte)); ok=True
53             except : return (False,"Entrer un float SVP")
54         if self.typElt in ('R', 'I') and self.valSup != None :
55             if val > self.valSup :
56                return (False, "Entrer un nombre inferieur a " + repr(self.valSup))
57         if self.typElt in ('R', 'I') and self.valMin != None :
58             if val < self.valMin :
59                return (False, "Entrer un nombre superieur a " + repr(self.valMin))
60         if val=='' : val = texte
61         if self.typEltInto != None and val not in self.typEltInto :
62                 return ( "Entrer une valeur contenue dans " + str(self.typEltInto))
63         try :
64            if issubclass (self.typElt, Accas.ASSD):
65               if not self.jdc : self.jdc = CONTEXT.getCurrentJdC()
66               if not(val in self.jdc.sdsDict.keys()) : return (False, 'Concept inexistant')
67               if not (isinstance(self.jdc.sdsDict[val],self.typElt)) : return (False, 'Concept d un autre type')
68               a=self.jdc.getSdAvantDuBonType(mc.etape,(self.typElt,))
69               if texte not in self.jdc.getSdAvantDuBonType(mc.etape,(self.typElt,)) : 
70                  return (False, 'Le concept doit etre defini avant')
71         except :
72               pass
73         return ( True, "")
74
75     def convertItem(self,texte):
76         if self.typElt == 'R' : val=float(str(texte))
77         if self.typElt == 'I' : val=int(str(texte))
78         try : 
79           if issubclass (self.typElt, Accas.ASSD): return self.jdc.sdsDict[texte]
80         except : 
81           pass
82
83
84     def info(self):
85         return "Matrice %s x %s" % (self.nbLigs, self.nbCols)
86
87     __repr__ = info
88     __str__ = info
89
90 class N_Matrice_Correlation(N_Matrice):
91     pass