Salome HOME
reindent + copyright + merge manuel avec la V9_dev sauf repertoires metier
[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         self.nbLigs = nbLigs
25         self.nbCols = nbCols
26         self.methodeCalculTaille = methodeCalculTaille
27         self.formatSortie = formatSortie
28         self.valSup = valSup
29         self.valMin = valMin
30         self.structure = structure
31         self.typElt = typElt
32         self.listeHeaders = listeHeaders
33         self.typEltInto = typEltInto
34         self.jdc=None
35         self.coloree=coloree
36         if self.coloree : self.activeCouleur()
37
38     def __convert__(self, valeur):
39         # Attention ne verifie pas grand chose
40         if not isinstance(valeur, types.ListType):
41             return None
42         return valeur
43
44     def verifItem(self,texte,mc):
45         val=''
46         if self.typElt == 'R' :
47             try    : val=float(str(texte)); ok=True
48             except : return (False,"Entrer un float SVP")
49         if self.typElt == 'I' :
50             try    : val=int(str(texte)); ok=True
51             except : return (False,"Entrer un float SVP")
52         if self.typElt in ('R', 'I') and self.valSup != None :
53             if val > self.valSup :
54                return (False, "Entrer un nombre inferieur a " + repr(self.valSup))
55         if self.typElt in ('R', 'I') and self.valMin != None :
56             if val < self.valMin :
57                return (False, "Entrer un nombre superieur a " + repr(self.valMin))
58         if val=='' : val = texte
59         if self.typEltInto != None and val not in self.typEltInto :
60                 return ( "Entrer une valeur contenue dans " + str(self.typEltInto))
61         try :
62            if issubclass (self.typElt, Accas.ASSD):
63               if not self.jdc : self.jdc = CONTEXT.getCurrentJdC()
64               if not(val in self.jdc.sdsDict.keys()) : return (False, 'Concept inexistant')
65               if not (isinstance(self.jdc.sdsDict[val],self.typElt)) : return (False, 'Concept d un autre type')
66               a=self.jdc.getSdAvantDuBonType(mc.etape,(self.typElt,))
67               if texte not in self.jdc.getSdAvantDuBonType(mc.etape,(self.typElt,)) : 
68                  return (False, 'Le concept doit etre defini avant')
69         except :
70               pass
71         return ( True, "")
72
73     def convertItem(self,texte):
74         if self.typElt == 'R' : val=float(str(texte))
75         if self.typElt == 'I' : val=int(str(texte))
76         try : 
77           if issubclass (self.typElt, Accas.ASSD): return self.jdc.sdsDict[texte]
78         except : 
79           pass
80
81
82     def info(self):
83         return "Matrice %s x %s" % (self.nbLigs, self.nbCols)
84
85     __repr__ = info
86     __str__ = info
87