1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 """This module contains the definition of the ObjectInfo class. """
16
17 __id__ = "$Id: objectinfo.py 6718 2011-08-23 21:33:20Z yshang $"
18
20 """
21 ObjectInfo uses the info in the engine definition to define what is allowed
22 to be set in an object, namely the legal content of an object.
23 """
25 '''Initialization.
26
27 @type cls: an engine class
28 @param cls: the class of the engine fit object
29 @return: no value
30 '''
31 self.cls = cls
32 return
33
35 """
36 List all the parameters that can be refined by the engine.
37
38 @return: a list of refinable parameter names
39 """
40 params = []
41 if self.cls is None:
42 return params
43 for name, info in self.cls.ParamDict.items():
44 if info.__class__.__name__ == 'RefineInfo':
45 params.append(name)
46 for name, info in self.cls.ParamListDict.items():
47 if info.__class__.__name__ == 'RefineInfo':
48 params.append(name)
49
50 return params
51
53 """
54 Get the description of a parameter.
55
56 @type paramname: string
57 @param paramname: parameter name
58 @return: a string to describe the parameter
59 """
60 if paramname in self.cls.ParamDict:
61 return self.cls.ParamDict[paramname].description
62 if paramname in self.cls.ParamListDict:
63 return self.cls.ParamListDict[paramname].description
64
65 return ''
66
67 - def get(self,paramname):
68 """
69 Get the full info of a parameter.
70
71 @type paramname: string
72 @param paramname: parameter name
73 @return: an Info object defined in the engine.
74 """
75 if paramname in self.cls.ParamDict:
76 return self.cls.ParamDict[paramname]
77 if paramname in self.cls.ParamListDict:
78 return self.cls.ParamListDict[paramname]
79
80 return None
81
83 """
84 Set the object info for the engine.
85
86 @type refinementObj: Refinement object
87 @param refinementObj: the ObjectInfo will be generated and set to the
88 refinementObj
89 @return: no return value
90 """
91 try:
92 engineclassname = refinementObj.getAttr('rietveldcls')
93 modulename, classname = engineclassname.rsplit('.', 1)
94 module = __import__(modulename, globals(), locals(), [classname], -1)
95 engineclass = getattr(module, classname)
96 refinementObj.info = ObjectInfo(engineclass)
97 except (ImportError, AttributeError, ValueError):
98 refinementObj.info = ObjectInfo()
99
100 for myobjchild in refinementObj.objects:
101 setObjectInfo(myobjchild)
102
103 return
104