network: fix issues, reload button, keyboard enter works on psk entry
This commit is contained in:
parent
e186fa6a3d
commit
2a7acea86c
@ -13,6 +13,8 @@ def create_panel(*args):
|
|||||||
return NetworkPanel(*args)
|
return NetworkPanel(*args)
|
||||||
|
|
||||||
class NetworkPanel(ScreenPanel):
|
class NetworkPanel(ScreenPanel):
|
||||||
|
initialized = False
|
||||||
|
|
||||||
def initialize(self, menu):
|
def initialize(self, menu):
|
||||||
_ = self.lang.gettext
|
_ = self.lang.gettext
|
||||||
self.show_add = False
|
self.show_add = False
|
||||||
@ -52,7 +54,12 @@ class NetworkPanel(ScreenPanel):
|
|||||||
|
|
||||||
self.labels['interface'] = Gtk.Label()
|
self.labels['interface'] = Gtk.Label()
|
||||||
self.labels['interface'].set_text(" %s: %s " % (_("Interface"), self.interface))
|
self.labels['interface'].set_text(" %s: %s " % (_("Interface"), self.interface))
|
||||||
|
self.labels['interface'].set_hexpand(True)
|
||||||
self.labels['ip'] = Gtk.Label()
|
self.labels['ip'] = Gtk.Label()
|
||||||
|
self.labels['ip'].set_hexpand(True)
|
||||||
|
reload_networks = self._gtk.ButtonImage("refresh", None, "color1")
|
||||||
|
reload_networks.connect("clicked", self.reload_networks)
|
||||||
|
reload_networks.set_hexpand(False)
|
||||||
|
|
||||||
sbox = Gtk.Box()
|
sbox = Gtk.Box()
|
||||||
sbox.set_hexpand(True)
|
sbox.set_hexpand(True)
|
||||||
@ -61,6 +68,8 @@ class NetworkPanel(ScreenPanel):
|
|||||||
if ip is not None:
|
if ip is not None:
|
||||||
self.labels['ip'].set_text("IP: %s " % ip)
|
self.labels['ip'].set_text("IP: %s " % ip)
|
||||||
sbox.add(self.labels['ip'])
|
sbox.add(self.labels['ip'])
|
||||||
|
sbox.add(reload_networks)
|
||||||
|
|
||||||
|
|
||||||
scroll = Gtk.ScrolledWindow()
|
scroll = Gtk.ScrolledWindow()
|
||||||
scroll.set_property("overlay-scrolling", False)
|
scroll.set_property("overlay-scrolling", False)
|
||||||
@ -94,14 +103,13 @@ class NetworkPanel(ScreenPanel):
|
|||||||
|
|
||||||
self.content.add(box)
|
self.content.add(box)
|
||||||
self.labels['main_box'] = box
|
self.labels['main_box'] = box
|
||||||
|
self.initialized = True
|
||||||
|
|
||||||
def load_networks(self):
|
def load_networks(self):
|
||||||
networks = self.wifi.get_networks()
|
networks = self.wifi.get_networks()
|
||||||
|
|
||||||
conn_ssid = self.wifi.get_connected_ssid()
|
if not networks:
|
||||||
if conn_ssid in networks:
|
return
|
||||||
networks.remove(conn_ssid)
|
|
||||||
self.add_network(conn_ssid, False)
|
|
||||||
|
|
||||||
for net in networks:
|
for net in networks:
|
||||||
self.add_network(net, False)
|
self.add_network(net, False)
|
||||||
@ -113,28 +121,35 @@ class NetworkPanel(ScreenPanel):
|
|||||||
_ = self.lang.gettext
|
_ = self.lang.gettext
|
||||||
|
|
||||||
if ssid is None:
|
if ssid is None:
|
||||||
|
logging.info("SSID is None")
|
||||||
return
|
return
|
||||||
ssid = ssid.strip()
|
ssid = ssid.strip()
|
||||||
if ssid in list(self.networks):
|
if ssid in list(self.networks):
|
||||||
logging.info("SSID already listed")
|
logging.info("SSID already listed")
|
||||||
return
|
return
|
||||||
|
|
||||||
netinfo = self.wifi.get_network_info(ssid)
|
|
||||||
if netinfo is None:
|
|
||||||
logging.debug("Couldn't get netinfo")
|
|
||||||
netinfo = {'connected': False}
|
|
||||||
|
|
||||||
configured_networks = self.wifi.get_supplicant_networks()
|
configured_networks = self.wifi.get_supplicant_networks()
|
||||||
network_id = -1
|
network_id = -1
|
||||||
for net in list(configured_networks):
|
for net in list(configured_networks):
|
||||||
if configured_networks[net]['ssid'] == ssid:
|
if configured_networks[net]['ssid'] == ssid:
|
||||||
network_id = net
|
network_id = net
|
||||||
|
|
||||||
frame = Gtk.Frame()
|
if ssid.startswith("\x00"):
|
||||||
frame.get_style_context().add_class("frame-item")
|
display_name = _("Hidden")
|
||||||
|
else:
|
||||||
|
display_name = str(ssid)
|
||||||
|
|
||||||
|
netinfo = self.wifi.get_network_info(ssid)
|
||||||
|
connected_ssid = self.wifi.get_connected_ssid()
|
||||||
|
if netinfo is None:
|
||||||
|
logging.debug("Couldn't get netinfo")
|
||||||
|
if connected_ssid == ssid:
|
||||||
|
netinfo = {'connected': True}
|
||||||
|
display_name += " " + _("Connected")
|
||||||
|
else:
|
||||||
|
netinfo = {'connected': False}
|
||||||
|
|
||||||
name = Gtk.Label()
|
name = Gtk.Label("")
|
||||||
name.set_markup("<big><b>%s</b></big>" % (ssid))
|
name.set_markup("<big><b>%s</b></big>" % (ssid))
|
||||||
name.set_hexpand(True)
|
name.set_hexpand(True)
|
||||||
name.set_halign(Gtk.Align.START)
|
name.set_halign(Gtk.Align.START)
|
||||||
@ -170,21 +185,21 @@ class NetworkPanel(ScreenPanel):
|
|||||||
buttons = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
buttons = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
|
||||||
if network_id != -1 or netinfo['connected']:
|
if network_id != -1 or netinfo['connected']:
|
||||||
buttons.pack_end(delete, False, False, 0)
|
buttons.pack_end(delete, False, False, 0)
|
||||||
connected_ssid = self.wifi.get_connected_ssid()
|
else:
|
||||||
if ssid != connected_ssid or not netinfo['connected']:
|
|
||||||
buttons.pack_end(connect, False, False, 0)
|
buttons.pack_end(connect, False, False, 0)
|
||||||
|
|
||||||
network.add(buttons)
|
network.add(buttons)
|
||||||
|
|
||||||
|
frame = Gtk.Frame()
|
||||||
|
frame.get_style_context().add_class("frame-item")
|
||||||
self.networks[ssid] = frame
|
self.networks[ssid] = frame
|
||||||
frame.add(network)
|
frame.add(network)
|
||||||
|
|
||||||
nets = sorted(list(self.networks), reverse=False)
|
nets = sorted(list(self.networks), reverse=False)
|
||||||
if connected_ssid == ssid:
|
if connected_ssid in nets:
|
||||||
pos = 0
|
nets.remove(connected_ssid)
|
||||||
name.set_markup("<big><b>%s</b></big> (%s)" % (ssid, _("Connected")))
|
nets.insert(0, connected_ssid)
|
||||||
elif nets.index(ssid) is not None:
|
if nets.index(ssid) is not None:
|
||||||
pos = nets.index(ssid) + 1
|
pos = nets.index(ssid)
|
||||||
else:
|
else:
|
||||||
logging.info("Error: SSID not in nets")
|
logging.info("Error: SSID not in nets")
|
||||||
return
|
return
|
||||||
@ -282,16 +297,16 @@ class NetworkPanel(ScreenPanel):
|
|||||||
scroll.set_vexpand(True)
|
scroll.set_vexpand(True)
|
||||||
scroll.add_events(Gdk.EventMask.TOUCH_MASK)
|
scroll.add_events(Gdk.EventMask.TOUCH_MASK)
|
||||||
scroll.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
|
scroll.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
|
||||||
self.labels['connecting_info'] = Gtk.Label(_("Starting WiFi Re-association"))
|
self.labels['connecting_info'] = Gtk.Label(_("Starting WiFi Association"))
|
||||||
self.labels['connecting_info'].set_halign(Gtk.Align.START)
|
self.labels['connecting_info'].set_halign(Gtk.Align.START)
|
||||||
self.labels['connecting_info'].set_valign(Gtk.Align.START)
|
self.labels['connecting_info'].set_valign(Gtk.Align.START)
|
||||||
scroll.add(self.labels['connecting_info'])
|
scroll.add(self.labels['connecting_info'])
|
||||||
self._gtk.Dialog(self._screen, buttons, scroll, self.close_dialog)
|
self._gtk.Dialog(self._screen, buttons, scroll, self.close_dialog)
|
||||||
self._screen.show_all()
|
self._screen.show_all()
|
||||||
|
|
||||||
if ssid in self.networks:
|
if ssid in list(self.networks):
|
||||||
self.remove_network(ssid)
|
self.remove_network(ssid)
|
||||||
if self.prev_network in self.networks:
|
if self.prev_network in list(self.networks):
|
||||||
self.remove_network(self.prev_network)
|
self.remove_network(self.prev_network)
|
||||||
|
|
||||||
self.wifi.add_callback("connecting_status", self.connecting_status_callback)
|
self.wifi.add_callback("connecting_status", self.connecting_status_callback)
|
||||||
@ -302,9 +317,9 @@ class NetworkPanel(ScreenPanel):
|
|||||||
self.labels['connecting_info'].show_all()
|
self.labels['connecting_info'].show_all()
|
||||||
|
|
||||||
def remove_network(self, ssid, show=True):
|
def remove_network(self, ssid, show=True):
|
||||||
if ssid not in self.networks:
|
if ssid not in list(self.networks):
|
||||||
return
|
return
|
||||||
|
logging.info(self.labels['networklist'])
|
||||||
for i in range(len(self.labels['networklist'])):
|
for i in range(len(self.labels['networklist'])):
|
||||||
if self.networks[ssid] == self.labels['networklist'].get_child_at(0, i):
|
if self.networks[ssid] == self.labels['networklist'].get_child_at(0, i):
|
||||||
self.labels['networklist'].remove_row(i)
|
self.labels['networklist'].remove_row(i)
|
||||||
@ -350,6 +365,7 @@ class NetworkPanel(ScreenPanel):
|
|||||||
label.set_hexpand(False)
|
label.set_hexpand(False)
|
||||||
entry = Gtk.Entry()
|
entry = Gtk.Entry()
|
||||||
entry.set_hexpand(True)
|
entry.set_hexpand(True)
|
||||||
|
entry.connect("activate", self.add_new_network, ssid, True)
|
||||||
|
|
||||||
save = self._gtk.ButtonImage("sd", _("Save"), "color3")
|
save = self._gtk.ButtonImage("sd", _("Save"), "color3")
|
||||||
save.set_hexpand(False)
|
save.set_hexpand(False)
|
||||||
@ -378,7 +394,7 @@ class NetworkPanel(ScreenPanel):
|
|||||||
_ = self.lang.gettext
|
_ = self.lang.gettext
|
||||||
info = freq = encr = chan = lvl = ipv4 = ipv6 = ""
|
info = freq = encr = chan = lvl = ipv4 = ipv6 = ""
|
||||||
|
|
||||||
if ssid not in self.networks or ssid not in self.labels['networks']:
|
if ssid not in list(self.networks) or ssid not in self.labels['networks']:
|
||||||
logging.info("Unknown SSID %s", ssid)
|
logging.info("Unknown SSID %s", ssid)
|
||||||
return
|
return
|
||||||
netinfo = self.wifi.get_network_info(ssid)
|
netinfo = self.wifi.get_network_info(ssid)
|
||||||
@ -423,31 +439,32 @@ class NetworkPanel(ScreenPanel):
|
|||||||
ipv4 = ""
|
ipv4 = ""
|
||||||
ipv6 = ""
|
ipv6 = ""
|
||||||
if netifaces.AF_INET in ifadd and len(ifadd[netifaces.AF_INET]) > 0:
|
if netifaces.AF_INET in ifadd and len(ifadd[netifaces.AF_INET]) > 0:
|
||||||
ipv4 = "<b>%s:</b> %s " % (_("IPv4"), ifadd[netifaces.AF_INET][0]['addr'])
|
ipv4 = "<b>%s:</b> %s " % ("IPv4", ifadd[netifaces.AF_INET][0]['addr'])
|
||||||
if netifaces.AF_INET6 in ifadd and len(ifadd[netifaces.AF_INET6]) > 0:
|
if netifaces.AF_INET6 in ifadd and len(ifadd[netifaces.AF_INET6]) > 0:
|
||||||
ipv6 = ipv6 = "<b>%s:</b> %s " % (_("IPv6"), ifadd[netifaces.AF_INET6][0]['addr'].split('%')[0])
|
ipv6 = ipv6 = "<b>%s:</b> %s " % ("IPv6", ifadd[netifaces.AF_INET6][0]['addr'].split('%')[0])
|
||||||
connected = "<b>%s</b>\n\n<small><b>%s</b></small>\n<b>%s:</b> %s\n%s\n%s\n" % (
|
connected = "<b>%s</b>\n\n<small><b>%s</b></small>\n<b>%s:</b> %s\n%s\n%s\n" % (
|
||||||
self.interface, _("Connected"), _("Hostname"), hostname, ipv4, ipv6)
|
self.interface, _("Connected"), _("Hostname"), hostname, ipv4, ipv6)
|
||||||
|
|
||||||
self.labels['networkinfo'].set_markup(connected)
|
self.labels['networkinfo'].set_markup(connected)
|
||||||
self.labels['networkinfo'].show_all()
|
self.labels['networkinfo'].show_all()
|
||||||
|
|
||||||
def activate(self):
|
def reload_networks(self, widget=None):
|
||||||
self.networks = {}
|
self.networks = {}
|
||||||
|
self.labels['networklist'].remove_column(0)
|
||||||
for i in range(len(self.labels['networklist'])):
|
self.wifi.rescan()
|
||||||
self.labels['networklist'].remove_row(i)
|
|
||||||
if self.wifi is not None and self.wifi.is_initialized():
|
if self.wifi is not None and self.wifi.is_initialized():
|
||||||
GLib.idle_add(self.load_networks)
|
GLib.idle_add(self.load_networks)
|
||||||
if self.update_timeout is None:
|
|
||||||
if self.wifi is not None and self.wifi.is_initialized():
|
def activate(self):
|
||||||
self.update_timeout = GLib.timeout_add_seconds(5, self.update_all_networks)
|
if self.initialized:
|
||||||
else:
|
self.reload_networks()
|
||||||
self.update_timeout = GLib.timeout_add_seconds(5, self.update_single_network_info)
|
if self.update_timeout is None:
|
||||||
return
|
if self.wifi is not None and self.wifi.is_initialized():
|
||||||
|
self.update_timeout = GLib.timeout_add_seconds(5, self.update_all_networks)
|
||||||
|
else:
|
||||||
|
self.update_timeout = GLib.timeout_add_seconds(5, self.update_single_network_info)
|
||||||
|
|
||||||
def deactivate(self):
|
def deactivate(self):
|
||||||
if self.update_timeout is not None:
|
if self.update_timeout is not None:
|
||||||
GLib.source_remove(self.update_timeout)
|
GLib.source_remove(self.update_timeout)
|
||||||
self.update_timeout = None
|
self.update_timeout = None
|
||||||
self.networks = None
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user