1.1 --- a/src/contrib/visualizer/core.py Tue Mar 31 16:06:08 2009 +0100
1.2 +++ b/src/contrib/visualizer/core.py Thu Jan 21 14:11:14 2010 +0000
1.3 @@ -15,9 +15,9 @@
1.4
1.5 import platform
1.6 if platform.system() == "Windows":
1.7 - SHELL_FONT = "Lucida Console 9"
1.8 + SHELL_FONT = "Lucida Console 9"
1.9 else:
1.10 - SHELL_FONT = "Luxi Mono 10"
1.11 + SHELL_FONT = "Luxi Mono 10"
1.12
1.13
1.14 import ns3
1.15 @@ -1098,10 +1098,39 @@
1.16 import types
1.17 __IPYTHON__.runcode = types.MethodType(runcode, __IPYTHON__)
1.18
1.19 + def autoscale_view(self):
1.20 + self._update_node_positions()
1.21 + positions = [node.get_position() for node in self.nodes.itervalues()]
1.22 + min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions)
1.23 + max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions)
1.24 + min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y)
1.25 + max_x_px, max_y_px = self.canvas.convert_to_pixels(max_x, max_y)
1.26 + dx = max_x - min_x
1.27 + dy = max_y - min_y
1.28 + dx_px = max_x_px - min_x_px
1.29 + dy_px = max_y_px - min_y_px
1.30 + hadj = self._scrolled_window.get_hadjustment()
1.31 + vadj = self._scrolled_window.get_vadjustment()
1.32 + new_dx, new_dy = 1.5*dx_px, 1.5*dy_px
1.33 +
1.34 + self.zoom.value = min(hadj.page_size/new_dx, vadj.page_size/new_dy)
1.35 +
1.36 + x1, y1 = self.canvas.convert_from_pixels(hadj.value, vadj.value)
1.37 + x2, y2 = self.canvas.convert_from_pixels(hadj.value+hadj.page_size, vadj.value+vadj.page_size)
1.38 + width = x2 - x1
1.39 + height = y2 - y1
1.40 + center_x = (min_x + max_x) / 2
1.41 + center_y = (min_y + max_y) / 2
1.42 +
1.43 + self.canvas.scroll_to(center_x - width/2, center_y - height/2)
1.44 +
1.45 + return False
1.46 +
1.47 def start(self):
1.48 self.scan_topology()
1.49 self.window.connect("delete-event", self._quit)
1.50 #self._start_update_timer()
1.51 + gobject.timeout_add(200, self.autoscale_view)
1.52 self.simulation.start()
1.53
1.54 try: