From 20b4a61f30e04e9ec3b1d10da23a478a0c901283 Mon Sep 17 00:00:00 2001 From: imdano <> Date: Sat, 11 Oct 2008 12:36:49 +0000 Subject: [PATCH] experimental branch: - Actually destroy the network entry objects that are supposed to get destroied - Improve GUI behavior when initially opened. - Use the python -O flag when launching the daemon/GUI. - Favor gksudo over gksu. - Remove broken interface enable/disable options. --- in/scripts=wicd-client.in | 2 +- in/scripts=wicd.in | 2 +- wicd/gui.py | 91 +++++++++------------------------------ wicd/misc.py | 7 +-- wicd/netentry.py | 7 +++ wicd/wicd-client.py | 3 +- 6 files changed, 35 insertions(+), 77 deletions(-) diff --git a/in/scripts=wicd-client.in b/in/scripts=wicd-client.in index 5de5158..d79a061 100755 --- a/in/scripts=wicd-client.in +++ b/in/scripts=wicd-client.in @@ -1,2 +1,2 @@ #!/bin/bash -exec %LIB%wicd-client.py $@ +exec python -O %LIB%wicd-client.py $@ diff --git a/in/scripts=wicd.in b/in/scripts=wicd.in index 7e965ca..579a110 100755 --- a/in/scripts=wicd.in +++ b/in/scripts=wicd.in @@ -1,3 +1,3 @@ #!/bin/bash -exec %LIB%wicd-daemon.py $@ +exec python -O %LIB%wicd-daemon.py $@ diff --git a/wicd/gui.py b/wicd/gui.py index 8a67aa2..fab7f8d 100644 --- a/wicd/gui.py +++ b/wicd/gui.py @@ -100,6 +100,8 @@ def alert(parent, message): dialog.set_markup(message) dialog.run() dialog.destroy() + +def dummy(x=None):pass ######################################## ##### GTK EXTENSION CLASSES @@ -220,8 +222,15 @@ class appGui(object): """ The main wicd GUI class. """ def __init__(self, dbus_man=None, standalone=False): """ Initializes everything needed for the GUI. """ - if not standalone: + if dbus_man: setup_dbus(dbus_man) + if standalone: + bus.add_signal_receiver(self.dbus_scan_finished, 'SendEndScanSignal', + 'org.wicd.daemon.wireless') + bus.add_signal_receiver(self.dbus_scan_started, 'SendStartScanSignal', + 'org.wicd.daemon.wireless') + bus.add_signal_receiver(self.update_connect_buttons, 'StatusChanged', + 'org.wicd.daemon') gladefile = wpath.share + "wicd.glade" self.wTree = gtk.glade.XML(gladefile) @@ -235,10 +244,7 @@ class appGui(object): "preferences_clicked" : self.settings_dialog, "about_clicked" : self.about_dialog, "create_adhoc_network_button_button" : self.create_adhoc_network, - "on_iface_menu_enable_wireless" : self.on_enable_wireless, - "on_iface_menu_disable_wireless" : self.on_disable_wireless, - "on_iface_menu_enable_wired" : self.on_enable_wired, - "on_iface_menu_disable_wired" : self.on_disable_wired,} + } self.wTree.signal_autoconnect(dic) # Set some strings in the GUI - they may be translated @@ -265,19 +271,13 @@ class appGui(object): self.wpadrivercombo = None self.connecting = False self.prev_state = None - self.refresh_networks(fresh=False) - + label = gtk.Label("%s..." % language['scanning']) + self.network_list.pack_start(label) + label.show() + self.network_list.set_sensitive(False) + self.wait_for_events(0.2) self.window.connect('delete_event', self.exit) self.window.connect('key-release-event', self.key_event) - - if not wireless.IsWirelessUp(): - self.wTree.get_widget("iface_menu_disable_wireless").hide() - else: - self.wTree.get_widget("iface_menu_enable_wireless").hide() - if not wired.IsWiredUp(): - self.wTree.get_widget("iface_menu_disable_wired").hide() - else: - self.wTree.get_widget("iface_menu_enable_wired").hide() size = daemon.ReadWindowSize("main") width = size[0] @@ -285,13 +285,14 @@ class appGui(object): if width > -1 and height > -1: self.window.resize(int(width), int(height)) else: - self.dialog.resize(gtk.gdk.screen_width() / 3, + self.window.resize(gtk.gdk.screen_width() / 3, gtk.gdk.screen_height() / 2) try: gobject.timeout_add_seconds(1, self.update_statusbar) except: gobject.timeout_add(1000, self.update_statusbar) + self.refresh_clicked() def create_adhoc_network(self, widget=None): """ Shows a dialog that creates a new adhoc network. """ @@ -388,50 +389,6 @@ class appGui(object): self.refresh_networks(None, True, answer) else: dialog.destroy() - - def on_enable_wireless(self, widget): - """ Called when the Enable Wireless Interface button is clicked. """ - success = wireless.EnableWirelessInterface() - if success: - enable_item = self.wTree.get_widget("iface_menu_enable_wireless") - disable_item = self.wTree.get_widget("iface_menu_disable_wireless") - enable_item.hide() - disable_item.show() - else: - error(self.window, "Failed to enable wireless interface.") - - def on_disable_wireless(self, widget): - """ Called when the Disable Wireless Interface button is clicked. """ - success = wireless.DisableWirelessInterface() - if success: - enable_item = self.wTree.get_widget("iface_menu_enable_wireless") - disable_item = self.wTree.get_widget("iface_menu_disable_wireless") - enable_item.show() - disable_item.hide() - else: - error(self.window, "Failed to disable wireless interface.") - - def on_enable_wired(self, widget): - """ Called when the Enable Wired Interface button is clicked. """ - success = wired.EnableWiredInterface() - if success: - enable_item = self.wTree.get_widget("iface_menu_enable_wired") - disable_item = self.wTree.get_widget("iface_menu_disable_wired") - enable_item.hide() - disable_item.show() - else: - error(self.window, "Failed to enable wired interface.") - - def on_disable_wired(self, widget): - """ Called when the Disable Wired Interface button is clicked. """ - success = wired.DisableWiredInterface() - if success: - enable_item = self.wTree.get_widget("iface_menu_enable_wired") - disable_item = self.wTree.get_widget("iface_menu_disable_wired") - enable_item.show() - disable_item.hide() - else: - error(self.window, "Failed to disable wired interface.") def cancel_connect(self, widget): """ Alerts the daemon to cancel the connection process. """ @@ -582,7 +539,6 @@ class appGui(object): def refresh_clicked(self, widget=None): """ Kick off an asynchronous wireless scan. """ - def dummy(x=None):pass wireless.Scan(reply_handler=dummy, error_handler=dummy) def refresh_networks(self, widget=None, fresh=True, hidden=None): @@ -889,16 +845,11 @@ class appGui(object): self.is_visible = True daemon.SetGUIOpen(True) self.wait_for_events(0.1) - gobject.idle_add(self.refresh_networks) + gobject.idle_add(self.refresh_clicked) if __name__ == '__main__': setup_dbus() app = appGui(standalone=True) - bus.add_signal_receiver(app.dbus_scan_finished, 'SendEndScanSignal', - 'org.wicd.daemon.wireless') - bus.add_signal_receiver(app.dbus_scan_started, 'SendStartScanSignal', - 'org.wicd.daemon.wireless') - bus.add_signal_receiver(app.update_connect_buttons, 'StatusChanged', - 'org.wicd.daemon') - gtk.main() + mainloop = gobject.MainLoop() + mainloop.run() diff --git a/wicd/misc.py b/wicd/misc.py index fbc0388..ab3acf4 100644 --- a/wicd/misc.py +++ b/wicd/misc.py @@ -22,7 +22,7 @@ import locale import gettext import sys from subprocess import Popen, STDOUT, PIPE, call -import commands +from commands import getoutput # wicd imports import wpath @@ -337,7 +337,7 @@ def detect_desktop_environment(): desktop_environment = 'gnome' else: try: - info = commands.getoutput('xprop -root _DT_SAVE_MODE') + info = getoutput('xprop -root _DT_SAVE_MODE') if ' = "xfce4"' in info: desktop_environment = 'xfce' except (OSError, RuntimeError): @@ -356,7 +356,7 @@ def choose_sudo_prog(): else: paths = [] for p in env_path: - paths.extend([p + '/gksu', p + '/ktsuss']) + paths.extend([p + '/gksudo', p + "/gksu", p + '/ktsuss']) for path in paths: if os.access(path, os.F_OK): return path @@ -489,6 +489,7 @@ def get_language_list_gui(): language['aborted'] = _('Connection Cancelled') language['bad_pass'] = _('Connection Failed: Bad password') language['done'] = _('Done connecting...') + language['scanning'] = _('Scanning') return language diff --git a/wicd/netentry.py b/wicd/netentry.py index f100c15..185aba2 100644 --- a/wicd/netentry.py +++ b/wicd/netentry.py @@ -232,6 +232,7 @@ class AdvancedSettingsDialog(gtk.Dialog): """ for obj in vars(self): + obj = self.__dict__[obj] if hasattr(obj, "destroy"): obj.destroy() if hasattr(obj, "__del__"): @@ -280,6 +281,7 @@ class WiredSettingsDialog(AdvancedSettingsDialog): """ self.disconnect(self.des) for obj in vars(self): + obj = self.__dict__[obj] if hasattr(obj, "destroy"): obj.destroy() if hasattr(obj, "__del__"): @@ -342,6 +344,7 @@ class WirelessSettingsDialog(AdvancedSettingsDialog): """ self.disconnect(self.des) for obj in vars(self): + obj = self.__dict__[obj] if hasattr(obj, "destroy"): obj.destroy() if hasattr(obj, "__del__"): @@ -510,6 +513,7 @@ class NetworkEntry(gtk.HBox): """ for obj in vars(self): + obj = self.__dict__[obj] try: obj.destroy() except: pass if hasattr(obj, '__del__'): @@ -517,6 +521,7 @@ class NetworkEntry(gtk.HBox): else: del obj for obj in vars(super(NetworkEntry, self)): + obj = self.__dict__[obj] try: obj.destroy() except: pass if hasattr(obj, '__del__'): @@ -621,6 +626,7 @@ class WiredNetworkEntry(NetworkEntry): self.advanced_dialog.destroy_called() del self.advanced_dialog for obj in vars(self): + obj = self.__dict__[obj] if hasattr(obj, "destroy"): obj.destroy() if hasattr(obj, '__del__'): @@ -834,6 +840,7 @@ class WirelessNetworkEntry(NetworkEntry): self.advanced_dialog.destroy_called() del self.advanced_dialog for obj in vars(self): + obj = self.__dict__[obj] if hasattr(obj, "destroy"): obj.destroy() diff --git a/wicd/wicd-client.py b/wicd/wicd-client.py index 4b5e014..516e79f 100755 --- a/wicd/wicd-client.py +++ b/wicd/wicd-client.py @@ -691,8 +691,7 @@ def main(argv): setup_dbus() if not use_tray or not ICON_AVAIL: - the_gui = gui.appGui() - the_gui.standalone = True + the_gui = gui.appGui(dbus_man=dbus_manager, standalone=True) mainloop = gobject.MainLoop() mainloop.run() sys.exit(0)