diff options
-rw-r--r-- | NEWS | 2 | ||||
-rwxr-xr-x | src/net_monitor | 146 |
2 files changed, 75 insertions, 73 deletions
@@ -1,6 +1,8 @@ Mandriva network monitoring tool -- History of user-visible changes Copyright (C) 2009, Mandriva +- convert to gtk3 + 0.13: - properly check for network accounting - allow to be properly installed on rpm-less systems diff --git a/src/net_monitor b/src/net_monitor index 4caca6b..e01cc86 100755 --- a/src/net_monitor +++ b/src/net_monitor @@ -1,8 +1,8 @@ #!/usr/bin/python -import gobject -import gtk -import pango +from gi.repository import GObject +from gi.repository import Gtk +from gi.repository import Pango import gc import os @@ -79,7 +79,7 @@ class LoadGraph: self.max = max # size of the GtkDrawingArea - self.__rect = self.__inner = gtk.gdk.Rectangle() + self.__rect = self.__inner = () self.maxval = 0 # maximum value in the history self.__mesh_x = self.__mesh_y = 0 # distance in pixels between items self.__get_max() @@ -279,17 +279,17 @@ class MonitorGui: ICON_CONNECTED="/usr/share/libDrakX/pixmaps/connected.png" (COLUMN_PROTO, COLUMN_LOC_ADDR, COLUMN_LOC_PORT, COLUMN_REM_ADDR, COLUMN_REM_PORT, COLUMN_STATUS) = range(6) def __init__(self, default_iface=None): - self.window = gtk.Window() + self.window = Gtk.Window() self.window.set_title(_("Network monitor")) self.window.set_default_size(640, 440) - self.window.connect('delete-event', lambda *w: gtk.main_quit()) + self.window.connect('delete-event', lambda *w: Gtk.main_quit()) - self.main_vbox = gtk.VBox() + self.main_vbox = Gtk.VBox() self.window.add(self.main_vbox) # notebook - self.notebook = gtk.Notebook() - self.main_vbox.pack_start(self.notebook) + self.notebook = Gtk.Notebook() + self.main_vbox.pack_start(self.notebook, True, True, 0) #self.notebook.connect('switch-page', self.show_net_status) # monitor @@ -336,7 +336,7 @@ class MonitorGui: cur_page = self.notebook.append_page(network_stat, network_stat_label) # global statusbar - self.statusbar = gtk.Statusbar() + self.statusbar = Gtk.Statusbar() self.context_id = self.statusbar.get_context_id("Statusbar") self.main_vbox.pack_start(self.statusbar, False, False, padding=1) @@ -345,7 +345,7 @@ class MonitorGui: # configure timer self.signals = Queue.Queue() - gobject.timeout_add_seconds(1, self.update) + GObject.timeout_add_seconds(1, self.update) self.window.show_all() @@ -494,49 +494,49 @@ class MonitorGui: else: value = "%s (%s)" % (pretty_size, pretty_bytes) self.ifaces[iface][widget].set_text(str(value)) - gobject.timeout_add_seconds(interval, self.update) + GObject.timeout_add_seconds(interval, self.update) def show_statistics_dialog(self, widget, iface): """Shows statistics dialog""" - dialog = gtk.Dialog(_("Network statistics for %s") % iface, + dialog = Gtk.Dialog(_("Network statistics for %s") % iface, self.window, 0, - (gtk.STOCK_OK, gtk.RESPONSE_OK) + (Gtk.STOCK_OK, Gtk.ResponseType.OK) ) # statistics vbox stats_vbox = dialog.vbox if self.monitor.has_network_accounting(iface): # graph - graph_vnstat = gtk.Image() + graph_vnstat = Gtk.Image() pixbuf = self.load_graph_from_vnstat(iface, type="summary") graph_vnstat.set_from_pixbuf(pixbuf) - stats_vbox.pack_start(graph_vnstat) + stats_vbox.pack_start(graph_vnstat, True, True, 0) # buttons - frame = gtk.Frame(_("Network traffic statistics for %s") % iface) + frame = Gtk.Frame(_("Network traffic statistics for %s") % iface) stats_vbox.add(frame) - vbox = gtk.VBox() + vbox = Gtk.VBox() frame.add(vbox) # summary - button = gtk.RadioButton(None, _("Summary")) + button = Gtk.RadioButton(None, _("Summary")) button.connect('toggled', self.update_stat_iface, (iface, graph_vnstat, "summary")) vbox.pack_start(button, False, False) # summary - button = gtk.RadioButton(button, _("Hourly traffic")) + button = Gtk.RadioButton(button, _("Hourly traffic")) button.connect('toggled', self.update_stat_iface, (iface, graph_vnstat, "hourly")) vbox.pack_start(button, False, False) # summary - button = gtk.RadioButton(button, _("Daily traffic")) + button = Gtk.RadioButton(button, _("Daily traffic")) button.connect('toggled', self.update_stat_iface, (iface, graph_vnstat, "daily")) vbox.pack_start(button, False, False) # summary - button = gtk.RadioButton(button, _("Monthly traffic")) + button = Gtk.RadioButton(button, _("Monthly traffic")) button.connect('toggled', self.update_stat_iface, (iface, graph_vnstat, "monthly")) vbox.pack_start(button, False, False) # summary - button = gtk.RadioButton(button, _("Top 10 traffic days")) + button = Gtk.RadioButton(button, _("Top 10 traffic days")) button.connect('toggled', self.update_stat_iface, (iface, graph_vnstat, "top")) vbox.pack_start(button, False, False) else: - label = gtk.Label(_("Network accounting was not enabled on interface %s.\nPlease enable network accounting on the interface in order to view traffic statistics and restart your network connection to start collecting traffic statistics.")) + label = Gtk.Label(label=_("Network accounting was not enabled on interface %s.\nPlease enable network accounting on the interface in order to view traffic statistics and restart your network connection to start collecting traffic statistics.")) stats_vbox.add(label) stats_vbox.show_all() @@ -562,20 +562,20 @@ class MonitorGui: def build_network_stat(self): """Builds graphical view for connections""" - vbox = gtk.VBox() - sw = gtk.ScrolledWindow() - sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) - sw.set_shadow_type(gtk.SHADOW_ETCHED_IN) - - lstore = gtk.ListStore( - gobject.TYPE_STRING, - gobject.TYPE_STRING, - gobject.TYPE_INT, - gobject.TYPE_STRING, - gobject.TYPE_INT, - gobject.TYPE_STRING + vbox = Gtk.VBox() + sw = Gtk.ScrolledWindow() + sw.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) + sw.set_shadow_type(Gtk.ShadowType.ETCHED_IN) + + lstore = Gtk.ListStore( + GObject.TYPE_STRING, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_STRING, + GObject.TYPE_INT, + GObject.TYPE_STRING ) - treeview = gtk.TreeView(lstore) + treeview = Gtk.TreeView(lstore) treeview.set_rules_hint(True) treeview.set_search_column(self.COLUMN_LOC_ADDR) @@ -589,8 +589,8 @@ class MonitorGui: (self.COLUMN_REM_ADDR, _("Remote address")), (self.COLUMN_REM_PORT, _("Remote port")), (self.COLUMN_STATUS, _("Connection status")) ]: - renderer = gtk.CellRendererText() - column = gtk.TreeViewColumn(descr, renderer, text=c) + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(descr, renderer, text=c) column.set_sort_column_id(c) column.set_resizable(True) column.set_expand(True) @@ -599,20 +599,20 @@ class MonitorGui: sw.add(treeview) # build tab label - widget = gtk.HBox() + widget = Gtk.HBox() try: - icon = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file(self.ICON_CONNECTED) + icon = Gtk.Image() + pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.ICON_CONNECTED) icon.set_from_pixbuf(pixbuf) - widget.pack_start(icon) + widget.pack_start(icon, True, True, 0) except: traceback.print_exc() - widget.pack_start(gtk.Label(_("connections"))) + widget.pack_start(Gtk.Label(_("connections", True, True, 0))) widget.show_all() - vbox.pack_start(sw) + vbox.pack_start(sw, True, True, 0) - button = gtk.Button(_("Refresh")) + button = Gtk.Button(_("Refresh")) button.connect('clicked', self.refresh_connections) vbox.pack_start(button, False, False) @@ -620,10 +620,10 @@ class MonitorGui: def build_iface_stat(self, iface): """Builds graphical view for interface""" - traf_vbox = gtk.VBox(spacing=5) + traf_vbox = Gtk.VBox(spacing=5) # graph - draw = gtk.DrawingArea() - traf_vbox.pack_start(draw) + draw = Gtk.DrawingArea() + traf_vbox.pack_start(draw, True, True, 0) histogram = {"in": [], "out": []} graph = LoadGraph(draw, histogram, HISTOGRAM_SIZE) draw.connect('expose_event', graph.on_expose) @@ -631,16 +631,16 @@ class MonitorGui: self.ifaces[iface]['histogram'] = histogram # configuring callbacks - sizegroup1 = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - sizegroup2 = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - sizegroup3 = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) - sizegroup4 = gtk.SizeGroup(gtk.SIZE_GROUP_HORIZONTAL) + sizegroup1 = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL) + sizegroup2 = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL) + sizegroup3 = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL) + sizegroup4 = Gtk.SizeGroup(Gtk.SizeGroupMode.HORIZONTAL) # traffic - frame = gtk.Frame(_("Traffic statistics")) + frame = Gtk.Frame(_("Traffic statistics")) traf_vbox.pack_start(frame, False, False) - table = gtk.Table(2, 2, False) + table = Gtk.Table(2, 2, False) frame.add(table) cur_row = 0 @@ -663,10 +663,10 @@ class MonitorGui: self.__add_row(table, cur_row, items) cur_row += 1 - frame_global = gtk.Frame(_("Interface settings")) + frame_global = Gtk.Frame(_("Interface settings")) traf_vbox.pack_start(frame_global, False, False) - table = gtk.Table(2, 2, False) + table = Gtk.Table(2, 2, False) frame_global.add(table) cur_row = 0 @@ -711,7 +711,7 @@ class MonitorGui: self.ifaces[iface]["quality"] = quality # link quality graph - draw = gtk.DrawingArea() + draw = Gtk.DrawingArea() histogram = {"in": [], "out": []} graph = LoadGraph(draw, histogram, HISTOGRAM_SIZE, min_height=40, axes_text="%", draw_both=False, max=100, draw_legend=False) draw.connect('expose_event', graph.on_expose) @@ -728,23 +728,23 @@ class MonitorGui: cur_row += 1 # statistics button - frame_accounting = gtk.Frame(_("Traffic accounting")) - vbox = gtk.VBox() + frame_accounting = Gtk.Frame(_("Traffic accounting")) + vbox = Gtk.VBox() frame_accounting.add(vbox) if self.monitor.has_network_accounting(iface): iface_u, iface_uptime = self.build_value_pair(sizegroup1, _("Connection time:")) self.ifaces[iface]["widget_uptime"] = iface_uptime vbox.pack_start(iface_u, False, False) - button = gtk.Button(_("Show detailed network statistics")) + button = Gtk.Button(_("Show detailed network statistics")) button.connect('clicked', self.show_statistics_dialog, iface) vbox.pack_start(button, False, False) else: - label = gtk.Label("\n".join(textwrap.wrap(_("Network accounting is not enabled for this interface. Please enable it in Network center (press Configure button next to the interface item, then check \"Enable traffic accounting\" item) in order to view detailed traffic statistics")))) + label = Gtk.Label("\n".join(textwrap.wrap(_("Network accounting is not enabled for this interface. Please enable it in Network center (press Configure button next to the interface item, then check \"Enable traffic accounting\" item) in order to view detailed traffic statistics")))) vbox.pack_start(label, False, False) traf_vbox.pack_start(frame_accounting, False, False) # building notebook label icons - traf_label = gtk.HBox(False, 2) + traf_label = Gtk.HBox(False, 2) if iface in self.wireless_ifaces: # wifi self.__load_interface_icon(traf_label, 'wireless') @@ -758,7 +758,7 @@ class MonitorGui: # ethernet self.__load_interface_icon(traf_label, 'bluetooth') - traf_label.pack_start(gtk.Label(iface)) + traf_label.pack_start(Gtk.Label(iface, True, True, 0)) traf_label.show_all() return traf_vbox, traf_label @@ -766,17 +766,17 @@ class MonitorGui: def __load_interface_icon(self, widget, icon_title): """Loads interface icon""" try: - icon = gtk.Image() - pixbuf = gtk.gdk.pixbuf_new_from_file(self.ICON_PATTERN % icon_title) + icon = Gtk.Image() + pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.ICON_PATTERN % icon_title) icon.set_from_pixbuf(pixbuf) - widget.pack_start(icon) + widget.pack_start(icon, True, True, 0) except: traceback.print_exc() def __add_row(self, table, row, items, markup=False, wrap=False): cur_pos = 1 for item in items: - table.attach(item, cur_pos - 1, cur_pos, row, row + 1, gtk.EXPAND | gtk.FILL, 0, 0, 0) + table.attach(item, cur_pos - 1, cur_pos, row, row + 1, Gtk.AttachOptions.EXPAND | Gtk.AttachOptions.FILL, 0, 0, 0) cur_pos += 1 def build_widget_pair(self, container, w1, w2): @@ -788,11 +788,11 @@ class MonitorGui: def build_value_pair(self, sizegroup, text, value_text=None, value_sizegroup=None): """Builds a value pair""" - hbox = gtk.HBox(spacing=10) - name = gtk.Label(text) + hbox = Gtk.HBox(spacing=10) + name = Gtk.Label(label=text) name.set_property("xalign", 0.0) hbox.pack_start(name, False, False) - value = gtk.Label(value_text) + value = Gtk.Label(label=value_text) value.set_property("xalign", 0.0) hbox.pack_start(value, False, False) if sizegroup: @@ -825,7 +825,7 @@ class MonitorGui: print "Unknown parameter %s, showing summary.." % type param="-s" data = os.popen("vnstati %s -o - -i %s" % (param, iface)).read() - loader = gtk.gdk.PixbufLoader() + loader = GdkPixbuf.PixbufLoader() loader.write(data) loader.close() pixbuf = loader.get_pixbuf() @@ -871,4 +871,4 @@ if __name__ == "__main__": iface = o[1] monitor = MonitorGui(default_iface=iface) signal.signal(signal.SIGHUP, lambda s, f: monitor.queue_update(s)) - gtk.main() + Gtk.main() |