mirror of
https://github.com/gryf/wicd.git
synced 2025-12-23 14:42:29 +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:
@@ -1,2 +1,2 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
exec %LIB%wicd-client.py $@
|
exec python -O %LIB%wicd-client.py $@
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
exec %LIB%wicd-daemon.py $@
|
exec python -O %LIB%wicd-daemon.py $@
|
||||||
|
|||||||
91
wicd/gui.py
91
wicd/gui.py
@@ -100,6 +100,8 @@ def alert(parent, message):
|
|||||||
dialog.set_markup(message)
|
dialog.set_markup(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,19 +271,13 @@ 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]
|
||||||
@@ -285,13 +285,14 @@ class appGui(object):
|
|||||||
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. """
|
||||||
@@ -388,50 +389,6 @@ class appGui(object):
|
|||||||
self.refresh_networks(None, True, answer)
|
self.refresh_networks(None, True, answer)
|
||||||
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. """
|
||||||
@@ -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()
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user