|
31 |
import os |
31 |
import os |
32 |
import sys |
32 |
import sys |
33 |
|
33 |
|
|
|
34 |
if sys.version_info > (3,): |
35 |
long = int |
36 |
|
34 |
try: |
37 |
try: |
35 |
import gi |
38 |
import gi |
36 |
gi.require_version('GooCanvas', '2.0') |
39 |
gi.require_version('GooCanvas', '2.0') |
|
45 |
from gi.repository import Pango |
48 |
from gi.repository import Pango |
46 |
from gi.repository import GooCanvas |
49 |
from gi.repository import GooCanvas |
47 |
import threading |
50 |
import threading |
48 |
import hud |
51 |
from . import hud |
49 |
#import time |
52 |
#import time |
50 |
try: |
53 |
try: |
51 |
import svgitem |
54 |
import svgitem |
52 |
except ImportError: |
55 |
except ImportError: |
53 |
svgitem = None |
56 |
svgitem = None |
54 |
except ImportError as _import_error: |
57 |
except ImportError as e: |
|
|
58 |
_import_error = e |
55 |
import dummy_threading as threading |
59 |
import dummy_threading as threading |
56 |
else: |
60 |
else: |
57 |
_import_error = None |
61 |
_import_error = None |
|
61 |
except ImportError: |
65 |
except ImportError: |
62 |
ipython_view = None |
66 |
ipython_view = None |
63 |
|
67 |
|
64 |
from base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER |
68 |
from .base import InformationWindow, PyVizObject, Link, lookup_netdevice_traits, PIXELS_PER_METER |
65 |
from base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas |
69 |
from .base import transform_distance_simulation_to_canvas, transform_point_simulation_to_canvas |
66 |
from base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation |
70 |
from .base import transform_distance_canvas_to_simulation, transform_point_canvas_to_simulation |
67 |
from base import load_plugins, register_plugin, plugins |
71 |
from .base import load_plugins, register_plugin, plugins |
68 |
|
72 |
|
69 |
PI_OVER_2 = math.pi/2 |
73 |
PI_OVER_2 = math.pi/2 |
70 |
PI_TIMES_2 = math.pi*2 |
74 |
PI_TIMES_2 = math.pi*2 |
Lines 773-779
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
773 |
assert isinstance(mode, ShowTransmissionsMode) |
777 |
assert isinstance(mode, ShowTransmissionsMode) |
774 |
self._show_transmissions_mode = mode |
778 |
self._show_transmissions_mode = mode |
775 |
if self._show_transmissions_mode == ShowTransmissionsMode.ALL: |
779 |
if self._show_transmissions_mode == ShowTransmissionsMode.ALL: |
776 |
self.simulation.set_nodes_of_interest(range(ns.network.NodeList.GetNNodes())) |
780 |
self.simulation.set_nodes_of_interest(list(range(ns.network.NodeList.GetNNodes()))) |
777 |
elif self._show_transmissions_mode == ShowTransmissionsMode.NONE: |
781 |
elif self._show_transmissions_mode == ShowTransmissionsMode.NONE: |
778 |
self.simulation.set_nodes_of_interest([]) |
782 |
self.simulation.set_nodes_of_interest([]) |
779 |
elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED: |
783 |
elif self._show_transmissions_mode == ShowTransmissionsMode.SELECTED: |
Lines 854-860
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
854 |
settings_hbox.pack_start(vbox, False, False, 6) |
858 |
settings_hbox.pack_start(vbox, False, False, 6) |
855 |
self.node_size_adjustment = scale.get_adjustment() |
859 |
self.node_size_adjustment = scale.get_adjustment() |
856 |
def node_size_changed(adj): |
860 |
def node_size_changed(adj): |
857 |
for node in self.nodes.itervalues(): |
861 |
for node in self.nodes.values(): |
858 |
node.set_size(adj.get_value()) |
862 |
node.set_size(adj.get_value()) |
859 |
self.node_size_adjustment.connect("value-changed", node_size_changed) |
863 |
self.node_size_adjustment.connect("value-changed", node_size_changed) |
860 |
self.node_size_adjustment.set_lower(0.01) |
864 |
self.node_size_adjustment.set_lower(0.01) |
Lines 1237-1243
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
1237 |
self.emit("update-view") |
1241 |
self.emit("update-view") |
1238 |
|
1242 |
|
1239 |
def _update_node_positions(self): |
1243 |
def _update_node_positions(self): |
1240 |
for node in self.nodes.itervalues(): |
1244 |
for node in self.nodes.values(): |
1241 |
if node.has_mobility: |
1245 |
if node.has_mobility: |
1242 |
ns3_node = ns.network.NodeList.GetNode(node.node_index) |
1246 |
ns3_node = ns.network.NodeList.GetNode(node.node_index) |
1243 |
mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node) |
1247 |
mobility = ns.mobility.MobilityModel.GetMobilityModel (ns3_node) |
Lines 1319-1325
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
1319 |
|
1323 |
|
1320 |
k = self.node_size_adjustment.get_value()/5 |
1324 |
k = self.node_size_adjustment.get_value()/5 |
1321 |
|
1325 |
|
1322 |
for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.iteritems(): |
1326 |
for (transmitter_id, receiver_id), (rx_bytes, rx_count) in transmissions_average.items(): |
1323 |
transmitter = self.get_node(transmitter_id) |
1327 |
transmitter = self.get_node(transmitter_id) |
1324 |
receiver = self.get_node(receiver_id) |
1328 |
receiver = self.get_node(receiver_id) |
1325 |
try: |
1329 |
try: |
Lines 1405-1411
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
1405 |
|
1409 |
|
1406 |
k = self.node_size_adjustment.get_value()/5 |
1410 |
k = self.node_size_adjustment.get_value()/5 |
1407 |
|
1411 |
|
1408 |
for transmitter_id, (drop_bytes, drop_count) in drops_average.iteritems(): |
1412 |
for transmitter_id, (drop_bytes, drop_count) in drops_average.items(): |
1409 |
transmitter = self.get_node(transmitter_id) |
1413 |
transmitter = self.get_node(transmitter_id) |
1410 |
try: |
1414 |
try: |
1411 |
arrow, label = old_arrows.pop() |
1415 |
arrow, label = old_arrows.pop() |
Lines 1521-1527
class Visualizer(GObject.GObject):
|
Link Here
|
---|
|
1521 |
if not self.nodes: |
1525 |
if not self.nodes: |
1522 |
return |
1526 |
return |
1523 |
self._update_node_positions() |
1527 |
self._update_node_positions() |
1524 |
positions = [node.get_position() for node in self.nodes.itervalues()] |
1528 |
positions = [node.get_position() for node in self.nodes.values()] |
1525 |
min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions) |
1529 |
min_x, min_y = min(x for (x,y) in positions), min(y for (x,y) in positions) |
1526 |
max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions) |
1530 |
max_x, max_y = max(x for (x,y) in positions), max(y for (x,y) in positions) |
1527 |
min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y) |
1531 |
min_x_px, min_y_px = self.canvas.convert_to_pixels(min_x, min_y) |