select_node accepts ns3 nodeid; add method center_on_node.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Wed, 25 Feb 2009 11:54:11 +0000
changeset 3913 60ca8f5c89a2
parent 3912 dc440befc0f1
child 3914 9e176de6d705
select_node accepts ns3 nodeid; add method center_on_node.
src/contrib/visualizer/core.py
--- 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