1.1 --- a/viewer.py Fri Feb 16 00:13:09 2007 +0100
1.2 +++ b/viewer.py Fri Feb 16 00:50:41 2007 +0100
1.3 @@ -840,9 +840,7 @@
1.4 self._name_start(main_param)
1.5 self._popup_start()
1.6 self.stream.write("<div class='types'>\n")
1.7 - for i in range(0, len(subprograms)):
1.8 - param, default = params[i][n]
1.9 - self._parameter(subprograms[i], param)
1.10 + self._parameter(subprograms, params, n)
1.11 self.stream.write("</div>\n")
1.12 self._popup_end()
1.13 self._name_end()
1.14 @@ -856,9 +854,7 @@
1.15 self._name_start(main_param)
1.16 self._popup_start()
1.17 self.stream.write("<div class='types'>\n")
1.18 - for i in range(0, len(subprograms)):
1.19 - param, default = stars[i]
1.20 - self._parameter(subprograms[i], param)
1.21 + self._parameter(subprograms, stars)
1.22 self.stream.write("</div>\n")
1.23 self._popup_end()
1.24 self._name_end()
1.25 @@ -872,18 +868,24 @@
1.26 self._name_start(main_param)
1.27 self._popup_start()
1.28 self.stream.write("<div class='types'>\n")
1.29 - for i in range(0, len(subprograms)):
1.30 - param, default = dstars[i]
1.31 - self._parameter(subprograms[i], param)
1.32 + self._parameter(subprograms, dstars)
1.33 self.stream.write("</div>\n")
1.34 self._popup_end()
1.35 self._name_end()
1.36 self._default(main_default)
1.37 first = 0
1.38
1.39 - def _parameter(self, subprogram, param):
1.40 - if hasattr(subprogram, "paramtypes"):
1.41 - self._types_list(subprogram.paramtypes[param])
1.42 + def _parameter(self, subprograms, params, n=None):
1.43 + types = []
1.44 + for i in range(0, len(subprograms)):
1.45 + subprogram = subprograms[i]
1.46 + if n is not None:
1.47 + param, default = params[i][n]
1.48 + else:
1.49 + param, default = params[i]
1.50 + if hasattr(subprogram, "paramtypes"):
1.51 + types += subprogram.paramtypes[param]
1.52 + self._types_list(types)
1.53
1.54 def _default(self, default):
1.55 if default is not None and default.original is not None:
1.56 @@ -914,7 +916,7 @@
1.57 _node = node._node
1.58 if isinstance(_node, Not):
1.59 _node = _node.expr
1.60 - self._invocations_list(_node)
1.61 + self._invocations_list(_node.active())
1.62 self.stream.write("</div>\n")
1.63
1.64 def _invocations(self, nodes):
1.65 @@ -941,24 +943,14 @@
1.66
1.67 def _types(self, nodes):
1.68 self.stream.write("<div class='types'>\n")
1.69 - for node in nodes:
1.70 - self._type(node)
1.71 + all_types = [(getattr(n, "types", []) or flatten(getattr(n, "writes", {}).values())) for n in nodes]
1.72 + types = flatten(all_types)
1.73 + if not types:
1.74 + self._no_types()
1.75 + else:
1.76 + self._types_list(types)
1.77 self.stream.write("</div>\n")
1.78
1.79 - def _type(self, node):
1.80 - if hasattr(node, "types"):
1.81 - if node.types:
1.82 - self._types_list(node.types)
1.83 - else:
1.84 - self._no_types()
1.85 - elif hasattr(node, "writes"):
1.86 - if node.writes:
1.87 - self._types_list(flatten(node.writes.values()))
1.88 - else:
1.89 - self._no_types()
1.90 - else:
1.91 - self._unvisited()
1.92 -
1.93 def _unvisited(self):
1.94 self.stream.write("<div class='type'>")
1.95 self.stream.write("unvisited\n")