def __init__(self, send_to_crumb_cb): gtk.VBox.__init__(self, 0) cont = Contain(app_theme.get_pixbuf("network/wifi.png"), _("Hotspot"), self.toggle_cb) self.pack_start(cont, False, False) self.settings = None self.send_to_crumb_cb = send_to_crumb_cb self.align = gtk.Alignment(0, 0, 1, 1) self.align.set_padding(0, 0, PADDING, 22) self.hotspot_box = HotspotBox(self.active_connection) self.align.add(self.hotspot_box) self.active_this_adhoc = False if self.is_adhoc_active(): cont.set_active(True) self.hotspot_box.set_net_state(2) self.active_this_adhoc = True self.__init_state()
class HotSpot(gtk.VBox): def __init__(self, send_to_crumb_cb): gtk.VBox.__init__(self, 0) cont = Contain(app_theme.get_pixbuf("network/wifi.png"), _("Hotspot"), self.toggle_cb) self.pack_start(cont, False, False) self.settings = None self.send_to_crumb_cb = send_to_crumb_cb self.align = gtk.Alignment(0, 0, 1, 1) self.align.set_padding(0, 0, PADDING, 22) self.hotspot_box = HotspotBox(self.active_connection) self.align.add(self.hotspot_box) self.active_this_adhoc = False if self.is_adhoc_active(): cont.set_active(True) self.hotspot_box.set_net_state(2) self.active_this_adhoc = True self.__init_state() def set_net_state(self, state): self.hotspot_box.set_net_state(state) def get_net_state(self): self.hotspot_box.get_net_state() def toggle_cb(self, widget): active = widget.get_active() if active: self.add(self.align) self.show_all() # Handle data self.fill_entries() if self.hotspot_box.get_net_state() == 2: self.hotspot_box.set_active(False) else: self.hotspot_box.set_active(True) else: from nmlib.nm_remote_connection import NMRemoteConnection if isinstance(self.connection, NMRemoteConnection): self.connection.delete() self.hotspot_box.set_net_state(0) self.hotspot_box.set_active(False) self.remove(self.align) def fill_entries(self): self.connection = self.get_adhoc_connection() security_setting = self.connection.get_setting( "802-11-wireless-security") security_setting.wep_key_type = 2 if self.connection: (ssid, pwd) = self.get_settings(self.connection) self.hotspot_box.set_ssid(ssid) self.hotspot_box.set_pwd(pwd) def get_settings(self, connection): ssid = connection.get_setting("802-11-wireless").ssid pwd = self.__get_pwd(connection) return (ssid, pwd) def __get_pwd(self, connection): try: (setting_name, method) = connection.guess_secret_info() secret = nm_module.secret_agent.agent_get_secrets( connection.object_path, setting_name, method) except: secret = "" return secret def get_adhoc_connection(self): connections = filter( lambda c: c.get_setting("802-11-wireless").mode == "adhoc", nm_module.nm_remote_settings.get_wireless_connections()) if connections: return connections[0] else: return nm_module.nm_remote_settings.new_adhoc_connection("") def is_adhoc_active(self): # TODO just for one device wireless_device = net_manager.device_manager.get_wireless_devices()[0] active = wireless_device.get_active_connection() if active: if active.get_connection().get_setting( "802-11-wireless").mode == "adhoc": return True else: return False else: return False def is_valid(self): security_setting = self.connection.get_setting( "802-11-wireless-security") #active = security_setting.wep_tx_keyidx return security_setting.verify_wep_key(self.hotspot_box.get_pwd(), 2) def active_connection(self): ssid = self.hotspot_box.get_ssid() pwd = self.hotspot_box.get_pwd() if self.is_valid(): from nmlib.nm_remote_connection import NMRemoteConnection self.connection.get_setting("802-11-wireless").ssid = ssid self.connection.get_setting( "802-11-wireless-security").set_wep_key(0, pwd) if not isinstance(self.connection, NMRemoteConnection): self.connection = nm_module.nm_remote_settings.new_connection_finish( self.connection.settings_dict, 'lan') if isinstance(self.connection, NMRemoteConnection): self.connection.update() wireless_device = net_manager.device_manager.get_wireless_devices( )[0] self.active_this_adhoc = True wireless_device.nm_device_disconnect() nm_module.nmclient.activate_connection_async( self.connection.object_path, wireless_device.object_path, "/") return True else: return False def slide_to_event(self, widget, event): self.settings.init("", init_connections=True, all_adhoc=True) self.send_to_crumb_cb() slider.slide_to_page(self.settings, "none") def __init_state(self): pass def expose_event(self, widget, event): cr = widget.window.cairo_create() rect = widget.child.allocation width, height = get_content_size(self.label_name) cr.set_source_rgb( *color_hex_to_cairo(ui_theme.get_color("link_text").get_color())) draw_line(cr, rect.x, rect.y + rect.height, rect.x + width, rect.y + rect.height)
class HotSpot(gtk.VBox): def __init__(self, send_to_crumb_cb): gtk.VBox.__init__(self, 0) cont = Contain(app_theme.get_pixbuf("network/wifi.png"), _("Hotspot"), self.toggle_cb) self.pack_start(cont, False, False) self.settings = None self.send_to_crumb_cb = send_to_crumb_cb self.align = gtk.Alignment(0, 0, 1, 1) self.align.set_padding(0, 0, PADDING, 22) self.hotspot_box = HotspotBox(self.active_connection) self.align.add(self.hotspot_box) self.active_this_adhoc = False if self.is_adhoc_active(): cont.set_active(True) self.hotspot_box.set_net_state(2) self.active_this_adhoc = True self.__init_state() def set_net_state(self, state): self.hotspot_box.set_net_state(state) def get_net_state(self): self.hotspot_box.get_net_state() def toggle_cb(self, widget): active = widget.get_active() if active: self.add(self.align) self.show_all() # Handle data self.fill_entries() if self.hotspot_box.get_net_state() == 2: self.hotspot_box.set_active(False) else: self.hotspot_box.set_active(True) else: from nmlib.nm_remote_connection import NMRemoteConnection if isinstance(self.connection, NMRemoteConnection): self.connection.delete() self.hotspot_box.set_net_state(0) self.hotspot_box.set_active(False) self.remove(self.align) def fill_entries(self): self.connection = self.get_adhoc_connection() security_setting = self.connection.get_setting("802-11-wireless-security") security_setting.wep_key_type = 2 if self.connection: (ssid, pwd) = self.get_settings(self.connection) self.hotspot_box.set_ssid(ssid) self.hotspot_box.set_pwd(pwd) def get_settings(self, connection): ssid = connection.get_setting("802-11-wireless").ssid pwd = self.__get_pwd(connection) return (ssid, pwd) def __get_pwd(self, connection): try: (setting_name, method) = connection.guess_secret_info() secret = nm_module.secret_agent.agent_get_secrets(connection.object_path, setting_name, method) except: secret = "" return secret def get_adhoc_connection(self): connections = filter(lambda c: c.get_setting("802-11-wireless").mode == "adhoc", nm_module.nm_remote_settings.get_wireless_connections()) if connections: return connections[0] else: return nm_module.nm_remote_settings.new_adhoc_connection("") def is_adhoc_active(self): # TODO just for one device wireless_device = net_manager.device_manager.get_wireless_devices()[0] active = wireless_device.get_active_connection() if active: if active.get_connection().get_setting("802-11-wireless").mode == "adhoc": return True else: return False else: return False def is_valid(self): security_setting = self.connection.get_setting("802-11-wireless-security") #active = security_setting.wep_tx_keyidx return security_setting.verify_wep_key(self.hotspot_box.get_pwd(), 2) def active_connection(self): ssid = self.hotspot_box.get_ssid() pwd = self.hotspot_box.get_pwd() if self.is_valid(): from nmlib.nm_remote_connection import NMRemoteConnection self.connection.get_setting("802-11-wireless").ssid = ssid self.connection.get_setting("802-11-wireless-security").set_wep_key(0, pwd) if not isinstance(self.connection, NMRemoteConnection): self.connection = nm_module.nm_remote_settings.new_connection_finish(self.connection.settings_dict, 'lan') if isinstance(self.connection, NMRemoteConnection): self.connection.update() wireless_device = net_manager.device_manager.get_wireless_devices()[0] self.active_this_adhoc = True wireless_device.nm_device_disconnect() nm_module.nmclient.activate_connection_async(self.connection.object_path, wireless_device.object_path, "/") return True else: return False def slide_to_event(self, widget, event): self.settings.init("",init_connections=True, all_adhoc=True) self.send_to_crumb_cb() slider.slide_to_page(self.settings, "none") def __init_state(self): pass def expose_event(self, widget, event): cr = widget.window.cairo_create() rect = widget.child.allocation width, height = get_content_size(self.label_name) cr.set_source_rgb(*color_hex_to_cairo(ui_theme.get_color("link_text").get_color())) draw_line(cr, rect.x, rect.y + rect.height, rect.x + width, rect.y + rect.height)