select_node accepts ns3 nodeid; add method center_on_node.
--- a/src/contrib/visualizer/core.py Thu Jan 29 18:42:44 2009 +0000
+++ b/src/contrib/visualizer/core.py Wed Feb 25 11:54:11 2009 +0000
@@ -819,7 +819,24 @@
px, py = self.canvas.convert_to_pixels(x, y)
hadj.value = px - hadj.page_size/2
vadj.value = py - vadj.page_size/2
-
+
+ def center_on_node(self, node):
+ if isinstance(node, ns3.Node):
+ node = self.nodes[node.GetId()]
+ elif isinstance(node, (int, long)):
+ node = self.nodes[node]
+ elif isinstance(node, Node):
+ pass
+ else:
+ raise TypeError("expected int, viz.Node or ns3.Node, not %r" % node)
+
+ x, y = node.get_position()
+ hadj = self._scrolled_window.get_hadjustment()
+ vadj = self._scrolled_window.get_vadjustment()
+ px, py = self.canvas.convert_to_pixels(x, y)
+ hadj.value = px - hadj.page_size/2
+ vadj.value = py - vadj.page_size/2
+
def update_model(self):
self.simulation.lock.acquire()
@@ -1159,6 +1176,14 @@
def select_node(self, node):
if isinstance(node, ns3.Node):
node = self.nodes[node.GetId()]
+ elif isinstance(node, (int, long)):
+ node = self.nodes[node]
+ elif isinstance(node, Node):
+ pass
+ elif node is None:
+ pass
+ else:
+ raise TypeError("expected None, int, viz.Node or ns3.Node, not %r" % node)
if node is self.selected_node:
return