1
0
mirror of https://github.com/gryf/wicd.git synced 2025-12-23 22:52:33 +01:00

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.
This commit is contained in:
imdano
2008-10-11 12:36:49 +00:00
parent 9ee8bc1875
commit 20b4a61f30
6 changed files with 35 additions and 77 deletions

View File

@@ -1,2 +1,2 @@
#!/bin/bash #!/bin/bash
exec %LIB%wicd-client.py $@ exec python -O %LIB%wicd-client.py $@

View File

@@ -1,3 +1,3 @@
#!/bin/bash #!/bin/bash
exec %LIB%wicd-daemon.py $@ exec python -O %LIB%wicd-daemon.py $@

View File

@@ -101,6 +101,8 @@ def alert(parent, message):
dialog.run() dialog.run()
dialog.destroy() dialog.destroy()
def dummy(x=None):pass
######################################## ########################################
##### GTK EXTENSION CLASSES ##### GTK EXTENSION CLASSES
######################################## ########################################
@@ -220,8 +222,15 @@ class appGui(object):
""" The main wicd GUI class. """ """ The main wicd GUI class. """
def __init__(self, dbus_man=None, standalone=False): def __init__(self, dbus_man=None, standalone=False):
""" Initializes everything needed for the GUI. """ """ Initializes everything needed for the GUI. """
if not standalone: if dbus_man:
setup_dbus(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" gladefile = wpath.share + "wicd.glade"
self.wTree = gtk.glade.XML(gladefile) self.wTree = gtk.glade.XML(gladefile)
@@ -235,10 +244,7 @@ class appGui(object):
"preferences_clicked" : self.settings_dialog, "preferences_clicked" : self.settings_dialog,
"about_clicked" : self.about_dialog, "about_clicked" : self.about_dialog,
"create_adhoc_network_button_button" : self.create_adhoc_network, "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) self.wTree.signal_autoconnect(dic)
# Set some strings in the GUI - they may be translated # Set some strings in the GUI - they may be translated
@@ -265,33 +271,28 @@ class appGui(object):
self.wpadrivercombo = None self.wpadrivercombo = None
self.connecting = False self.connecting = False
self.prev_state = None 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('delete_event', self.exit)
self.window.connect('key-release-event', self.key_event) 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") size = daemon.ReadWindowSize("main")
width = size[0] width = size[0]
height = size[1] height = size[1]
if width > -1 and height > -1: if width > -1 and height > -1:
self.window.resize(int(width), int(height)) self.window.resize(int(width), int(height))
else: else:
self.dialog.resize(gtk.gdk.screen_width() / 3, self.window.resize(gtk.gdk.screen_width() / 3,
gtk.gdk.screen_height() / 2) gtk.gdk.screen_height() / 2)
try: try:
gobject.timeout_add_seconds(1, self.update_statusbar) gobject.timeout_add_seconds(1, self.update_statusbar)
except: except:
gobject.timeout_add(1000, self.update_statusbar) gobject.timeout_add(1000, self.update_statusbar)
self.refresh_clicked()
def create_adhoc_network(self, widget=None): def create_adhoc_network(self, widget=None):
""" Shows a dialog that creates a new adhoc network. """ """ Shows a dialog that creates a new adhoc network. """
@@ -389,50 +390,6 @@ class appGui(object):
else: else:
dialog.destroy() 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): def cancel_connect(self, widget):
""" Alerts the daemon to cancel the connection process. """ """ Alerts the daemon to cancel the connection process. """
#should cancel a connection if there #should cancel a connection if there
@@ -582,7 +539,6 @@ class appGui(object):
def refresh_clicked(self, widget=None): def refresh_clicked(self, widget=None):
""" Kick off an asynchronous wireless scan. """ """ Kick off an asynchronous wireless scan. """
def dummy(x=None):pass
wireless.Scan(reply_handler=dummy, error_handler=dummy) wireless.Scan(reply_handler=dummy, error_handler=dummy)
def refresh_networks(self, widget=None, fresh=True, hidden=None): def refresh_networks(self, widget=None, fresh=True, hidden=None):
@@ -889,16 +845,11 @@ class appGui(object):
self.is_visible = True self.is_visible = True
daemon.SetGUIOpen(True) daemon.SetGUIOpen(True)
self.wait_for_events(0.1) self.wait_for_events(0.1)
gobject.idle_add(self.refresh_networks) gobject.idle_add(self.refresh_clicked)
if __name__ == '__main__': if __name__ == '__main__':
setup_dbus() setup_dbus()
app = appGui(standalone=True) app = appGui(standalone=True)
bus.add_signal_receiver(app.dbus_scan_finished, 'SendEndScanSignal', mainloop = gobject.MainLoop()
'org.wicd.daemon.wireless') mainloop.run()
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()

View File

@@ -22,7 +22,7 @@ import locale
import gettext import gettext
import sys import sys
from subprocess import Popen, STDOUT, PIPE, call from subprocess import Popen, STDOUT, PIPE, call
import commands from commands import getoutput
# wicd imports # wicd imports
import wpath import wpath
@@ -337,7 +337,7 @@ def detect_desktop_environment():
desktop_environment = 'gnome' desktop_environment = 'gnome'
else: else:
try: try:
info = commands.getoutput('xprop -root _DT_SAVE_MODE') info = getoutput('xprop -root _DT_SAVE_MODE')
if ' = "xfce4"' in info: if ' = "xfce4"' in info:
desktop_environment = 'xfce' desktop_environment = 'xfce'
except (OSError, RuntimeError): except (OSError, RuntimeError):
@@ -356,7 +356,7 @@ def choose_sudo_prog():
else: else:
paths = [] paths = []
for p in env_path: for p in env_path:
paths.extend([p + '/gksu', p + '/ktsuss']) paths.extend([p + '/gksudo', p + "/gksu", p + '/ktsuss'])
for path in paths: for path in paths:
if os.access(path, os.F_OK): if os.access(path, os.F_OK):
return path return path
@@ -489,6 +489,7 @@ def get_language_list_gui():
language['aborted'] = _('Connection Cancelled') language['aborted'] = _('Connection Cancelled')
language['bad_pass'] = _('Connection Failed: Bad password') language['bad_pass'] = _('Connection Failed: Bad password')
language['done'] = _('Done connecting...') language['done'] = _('Done connecting...')
language['scanning'] = _('Scanning')
return language return language

View File

@@ -232,6 +232,7 @@ class AdvancedSettingsDialog(gtk.Dialog):
""" """
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
if hasattr(obj, "destroy"): if hasattr(obj, "destroy"):
obj.destroy() obj.destroy()
if hasattr(obj, "__del__"): if hasattr(obj, "__del__"):
@@ -280,6 +281,7 @@ class WiredSettingsDialog(AdvancedSettingsDialog):
""" """
self.disconnect(self.des) self.disconnect(self.des)
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
if hasattr(obj, "destroy"): if hasattr(obj, "destroy"):
obj.destroy() obj.destroy()
if hasattr(obj, "__del__"): if hasattr(obj, "__del__"):
@@ -342,6 +344,7 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
""" """
self.disconnect(self.des) self.disconnect(self.des)
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
if hasattr(obj, "destroy"): if hasattr(obj, "destroy"):
obj.destroy() obj.destroy()
if hasattr(obj, "__del__"): if hasattr(obj, "__del__"):
@@ -510,6 +513,7 @@ class NetworkEntry(gtk.HBox):
""" """
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
try: obj.destroy() try: obj.destroy()
except: pass except: pass
if hasattr(obj, '__del__'): if hasattr(obj, '__del__'):
@@ -517,6 +521,7 @@ class NetworkEntry(gtk.HBox):
else: else:
del obj del obj
for obj in vars(super(NetworkEntry, self)): for obj in vars(super(NetworkEntry, self)):
obj = self.__dict__[obj]
try: obj.destroy() try: obj.destroy()
except: pass except: pass
if hasattr(obj, '__del__'): if hasattr(obj, '__del__'):
@@ -621,6 +626,7 @@ class WiredNetworkEntry(NetworkEntry):
self.advanced_dialog.destroy_called() self.advanced_dialog.destroy_called()
del self.advanced_dialog del self.advanced_dialog
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
if hasattr(obj, "destroy"): if hasattr(obj, "destroy"):
obj.destroy() obj.destroy()
if hasattr(obj, '__del__'): if hasattr(obj, '__del__'):
@@ -834,6 +840,7 @@ class WirelessNetworkEntry(NetworkEntry):
self.advanced_dialog.destroy_called() self.advanced_dialog.destroy_called()
del self.advanced_dialog del self.advanced_dialog
for obj in vars(self): for obj in vars(self):
obj = self.__dict__[obj]
if hasattr(obj, "destroy"): if hasattr(obj, "destroy"):
obj.destroy() obj.destroy()

View File

@@ -691,8 +691,7 @@ def main(argv):
setup_dbus() setup_dbus()
if not use_tray or not ICON_AVAIL: if not use_tray or not ICON_AVAIL:
the_gui = gui.appGui() the_gui = gui.appGui(dbus_man=dbus_manager, standalone=True)
the_gui.standalone = True
mainloop = gobject.MainLoop() mainloop = gobject.MainLoop()
mainloop.run() mainloop.run()
sys.exit(0) sys.exit(0)