From 0d1ba53bb10dc29ffddcb46cab8eefe5b460177f Mon Sep 17 00:00:00 2001 From: imdano <> Date: Sun, 4 May 2008 18:10:47 +0000 Subject: [PATCH] Testing/Experimental: - Emit a dbus signal when an autoscan is called, so that the GUI can update if needed. Experimental: - Merged a few changes from the testing branch. --- daemon.py | 6 ++++++ gui.py | 20 +++++++++++++++----- monitor.py | 9 +++++---- wicd.py | 5 +++++ 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/daemon.py b/daemon.py index 2d9e22d..f3e8353 100644 --- a/daemon.py +++ b/daemon.py @@ -652,6 +652,12 @@ class ConnectionWizard(dbus.service.Object): """ pass + + @dbus.service.method('org.wicd.daemon') + @dbus.service.signal(dbus_interface='org.wicd.daemon', signature='') + def SendScanSignal(self): + """ Emits a signal announcing a scan has occurred. """ + pass ########## WIRELESS FUNCTIONS ################################# diff --git a/gui.py b/gui.py index d05c986..ae47052 100644 --- a/gui.py +++ b/gui.py @@ -69,7 +69,6 @@ except: daemon = dbus.Interface(proxy_obj, 'org.wicd.daemon') wireless = dbus.Interface(proxy_obj, 'org.wicd.daemon.wireless') wired = dbus.Interface(proxy_obj, 'org.wicd.daemon.wired') -vpn_session = dbus.Interface(proxy_obj, 'org.wicd.daemon.vpn') config = dbus.Interface(proxy_obj, 'org.wicd.daemon.config') _ = misc.get_gettext() @@ -821,7 +820,7 @@ class WiredNetworkEntry(NetworkEntry): def edit_scripts(self, widget=None, event=None): """ Launch the script editting dialog. """ profile = self.combo_profile_names.get_active_text() - os.spawnlpe(os.P_WAIT, "gksudo", "gksudo", "./configscript.py", + os.spawnlpe(os.P_WAIT, "gksudo", "gksudo", "-m", "You must enter your password to configure scripts.", "./configscript.py", profile, "wired", os.environ) def check_enable(self): @@ -1020,7 +1019,7 @@ class WirelessNetworkEntry(NetworkEntry): if dbm_strength is not None: dbm_strength = int(dbm_strength) else: - dbm_strength = -1 + dbm_strength = -100 display_type = daemon.GetSignalDisplayType() if daemon.GetWPADriver() == 'ralink legacy' or display_type == 1: # Use the -xx dBm signal strength to display a signal icon @@ -1091,7 +1090,7 @@ class WirelessNetworkEntry(NetworkEntry): def edit_scripts(self, widget=None, event=None): """ Launch the script editting dialog. """ - result = os.spawnlpe(os.P_WAIT, "gksudo", "gksudo", "./configscript.py", + result = os.spawnlpe(os.P_WAIT, "gksudo", "gksudo", "-m", "You must enter your password to configure scripts.", "./configscript.py", str(self.networkID), "wireless", os.environ) def update_autoconnect(self, widget=None): @@ -1194,7 +1193,6 @@ class appGui: self.window.set_icon_from_file(wpath.etc + "wicd.png") self.statusID = None self.first_dialog_load = True - self.vpn_connection_pipe = None self.is_visible = True self.pulse_active = False self.standalone = standalone @@ -1673,6 +1671,16 @@ class appGui: def set_status(self, msg): """ Sets the status bar message for the GUI. """ self.statusID = self.status_bar.push(1, msg) + + def dbus_refresh_networks(self): + """ Calls for a non-fresh update of the gui window. + + This method is called after the daemon runs an automatic + rescan. + + """ + print 'got rescan signal' + self.refresh_networks(fresh=False) def refresh_networks(self, widget=None, fresh=True, hidden=None): """ Refreshes the network list. @@ -2011,4 +2019,6 @@ class appGui: if __name__ == '__main__': app = appGui(standalone=True) + bus.add_signal_receiver(app.dbus_refresh_networks, 'SendScanSignal', + 'org.wicd.daemon') gtk.main() diff --git a/monitor.py b/monitor.py index 1ae8477..2705950 100755 --- a/monitor.py +++ b/monitor.py @@ -154,7 +154,7 @@ class ConnectionStatus(): """ wired_ip = None wifi_ip = None - + try: if daemon.GetSuspend(): print "Suspended." @@ -191,10 +191,10 @@ class ConnectionStatus(): self.auto_reconnect(from_wireless) self.update_state(state) except dbus.exceptions.DBusException, e: - print 'DBus Error: ' + str(e) + print 'Ignoring DBus Error: ' + str(e) finally: return True - + def update_state(self, state, wired_ip=None, wifi_ip=None): """ Set the current connection state. """ # Set our connection state/info. @@ -272,8 +272,9 @@ class ConnectionStatus(): if daemon.GetSuspend(): return True wireless.Scan() + daemon.SendScanSignal() except dbus.exceptions.DBusException: - pass + print 'dbus exception while attempting rescan' finally: return True diff --git a/wicd.py b/wicd.py index 058f874..3f995c9 100755 --- a/wicd.py +++ b/wicd.py @@ -389,12 +389,15 @@ class TrayIcon: pb = gtk.gdk.pixbuf_new_from_file_at_size(self._get_img(n_id), 20, 20) image.set_from_pixbuf(pb) + del pb item.set_image(image) + del image item.connect("activate", network_selected, type_, n_id) net_menu.append(item) item.show() if is_connecting: item.set_sensitive(False) + del item def _get_img(self, net_id): """ Determines which image to use for the wireless entries. """ @@ -462,6 +465,8 @@ class TrayIcon: """ Toggles the wicd GUI. """ if not self.gui_win: self.gui_win = gui.appGui() + bus.add_signal_receiver(self.gui_win.dbus_refresh_networks, + 'SendScanSignal', 'org.wicd.daemon') elif not self.gui_win.is_visible: self.gui_win.show_win() else: