mirror of
https://github.com/gryf/wicd.git
synced 2025-12-31 11:02:33 +01:00
Moved translations out of translations.py, re-designed l10n system a bit
This commit is contained in:
@@ -37,13 +37,6 @@ from wicd import dbusmanager
|
||||
|
||||
_ = translations.get_gettext()
|
||||
|
||||
language = {}
|
||||
language['configure_scripts'] = _("Configure Scripts")
|
||||
language['before_script'] = _("Pre-connection Script")
|
||||
language['after_script'] = _("Post-connection Script")
|
||||
language['pre_disconnect_script'] = _("Pre-disconnection Script")
|
||||
language['post_disconnect_script'] = _("Post-disconnection Script")
|
||||
|
||||
dbus = dbusmanager.DBusManager()
|
||||
dbus.connect_to_dbus()
|
||||
|
||||
@@ -158,11 +151,11 @@ def main (argv):
|
||||
self.wTree = gtk.Builder()
|
||||
self.wTree.add_from_file(gladefile)
|
||||
self.dialog = self.wTree.get_object("configure_script_dialog")
|
||||
self.wTree.get_object("pre_label").set_label(language['before_script'] + ":")
|
||||
self.wTree.get_object("post_label").set_label(language['after_script'] + ":")
|
||||
self.wTree.get_object("pre_disconnect_label").set_label(language['pre_disconnect_script']
|
||||
self.wTree.get_object("pre_label").set_label(_('Pre-connection Script') + ":")
|
||||
self.wTree.get_object("post_label").set_label(_('Post-connection Script') + ":")
|
||||
self.wTree.get_object("pre_disconnect_label").set_label(_('Pre-disconnection Script')
|
||||
+ ":")
|
||||
self.wTree.get_object("post_disconnect_label").set_label(language['post_disconnect_script']
|
||||
self.wTree.get_object("post_disconnect_label").set_label(_('Post-disconnection Script')
|
||||
+ ":")
|
||||
self.wTree.get_object("window1").hide()
|
||||
|
||||
|
||||
72
gtk/gui.py
72
gtk/gui.py
@@ -36,12 +36,12 @@ from wicd import misc
|
||||
from wicd import wpath
|
||||
from wicd import dbusmanager
|
||||
from wicd.misc import noneToString
|
||||
from wicd.translations import _
|
||||
import prefs
|
||||
from prefs import PreferencesDialog
|
||||
import netentry
|
||||
from netentry import WiredNetworkEntry, WirelessNetworkEntry
|
||||
from guiutil import error, LabelEntry
|
||||
from wicd.translations import language
|
||||
|
||||
if __name__ == '__main__':
|
||||
wpath.chdir(__file__)
|
||||
@@ -62,8 +62,7 @@ def setup_dbus(force=True):
|
||||
try:
|
||||
dbusmanager.connect_to_dbus()
|
||||
except DBusException:
|
||||
error(None, "Could not connect to wicd's D-Bus interface. " +
|
||||
"Check the wicd log for error messages.")
|
||||
error(None, _("Could not connect to wicd's D-Bus interface. Check the wicd log for error messages."))
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
@@ -83,7 +82,7 @@ def handle_no_dbus(from_tray=False):
|
||||
DBUS_AVAIL = False
|
||||
if from_tray: return False
|
||||
print "Wicd daemon is shutting down!"
|
||||
error(None, language['lost_dbus'], block=False)
|
||||
error(None, _('The wicd daemon has shut down. The UI will not function properly until it is restarted.'), block=False)
|
||||
return False
|
||||
|
||||
|
||||
@@ -95,14 +94,14 @@ class WiredProfileChooser:
|
||||
# functions and widgets it uses.
|
||||
wired_net_entry = WiredNetworkEntry()
|
||||
|
||||
dialog = gtk.Dialog(title = language['wired_network_found'],
|
||||
dialog = gtk.Dialog(title = _('Wired connection detected'),
|
||||
flags = gtk.DIALOG_MODAL,
|
||||
buttons = (gtk.STOCK_CONNECT, 1,
|
||||
gtk.STOCK_CANCEL, 2))
|
||||
dialog.set_has_separator(False)
|
||||
dialog.set_size_request(400, 150)
|
||||
instruct_label = gtk.Label(language['choose_wired_profile'] + ':\n')
|
||||
stoppopcheckbox = gtk.CheckButton(language['stop_showing_chooser'])
|
||||
instruct_label = gtk.Label(_('Select or create a wired profile to connect with') + ':\n')
|
||||
stoppopcheckbox = gtk.CheckButton(_('Stop Showing Autoconnect pop-up temporarily'))
|
||||
|
||||
wired_net_entry.is_full_gui = False
|
||||
instruct_label.set_alignment(0, 0)
|
||||
@@ -185,10 +184,10 @@ class appGui(object):
|
||||
|
||||
# Set some strings in the GUI - they may be translated
|
||||
label_instruct = self.wTree.get_object("label_instructions")
|
||||
label_instruct.set_label(language['select_a_network'])
|
||||
label_instruct.set_label(_('Choose from the networks below:'))
|
||||
|
||||
probar = self.wTree.get_object("progressbar")
|
||||
probar.set_text(language['connecting'])
|
||||
probar.set_text(_('Connecting'))
|
||||
|
||||
self.rfkill_button = self.wTree.get_object("rfkill_button")
|
||||
self.all_network_list = self.wTree.get_object("network_list_vbox")
|
||||
@@ -220,7 +219,7 @@ class appGui(object):
|
||||
self.update_cb = None
|
||||
self._wired_showing = False
|
||||
self.network_list.set_sensitive(False)
|
||||
label = gtk.Label("%s..." % language['scanning'])
|
||||
label = gtk.Label("%s..." % _('Scanning'))
|
||||
self.network_list.pack_start(label)
|
||||
label.show()
|
||||
self.wait_for_events(0.2)
|
||||
@@ -249,27 +248,27 @@ class appGui(object):
|
||||
self.refresh_clicked()
|
||||
|
||||
def handle_connection_results(self, results):
|
||||
if results not in ['Success', 'aborted'] and self.is_visible:
|
||||
if results not in ['success', 'aborted'] and self.is_visible:
|
||||
error(self.window, language[results], block=False)
|
||||
|
||||
def create_adhoc_network(self, widget=None):
|
||||
""" Shows a dialog that creates a new adhoc network. """
|
||||
print "Starting the Ad-Hoc Network Creation Process..."
|
||||
dialog = gtk.Dialog(title = language['create_adhoc_network'],
|
||||
dialog = gtk.Dialog(title = _('Create an Ad-Hoc Network'),
|
||||
flags = gtk.DIALOG_MODAL,
|
||||
buttons=(gtk.STOCK_CANCEL, 2, gtk.STOCK_OK, 1))
|
||||
dialog.set_has_separator(False)
|
||||
dialog.set_size_request(400, -1)
|
||||
self.chkbox_use_encryption = gtk.CheckButton(language['use_wep_encryption'])
|
||||
self.chkbox_use_encryption = gtk.CheckButton(_('Use Encryption (WEP only)'))
|
||||
self.chkbox_use_encryption.set_active(False)
|
||||
ip_entry = LabelEntry(language['ip'] + ':')
|
||||
essid_entry = LabelEntry(language['essid'] + ':')
|
||||
channel_entry = LabelEntry(language['channel'] + ':')
|
||||
self.key_entry = LabelEntry(language['key'] + ':')
|
||||
ip_entry = LabelEntry(_('IP') + ':')
|
||||
essid_entry = LabelEntry(_('ESSID') + ':')
|
||||
channel_entry = LabelEntry(_('Channel') + ':')
|
||||
self.key_entry = LabelEntry(_('Key') + ':')
|
||||
self.key_entry.set_auto_hidden(True)
|
||||
self.key_entry.set_sensitive(False)
|
||||
|
||||
chkbox_use_ics = gtk.CheckButton(language['use_ics'])
|
||||
chkbox_use_ics = gtk.CheckButton( _('Activate Internet Connection Sharing'))
|
||||
|
||||
self.chkbox_use_encryption.connect("toggled",
|
||||
self.toggle_encrypt_check)
|
||||
@@ -309,10 +308,10 @@ class appGui(object):
|
||||
wireless.SwitchRfKill()
|
||||
if wireless.GetRfKillEnabled():
|
||||
self.rfkill_button.set_stock_id(gtk.STOCK_MEDIA_PLAY)
|
||||
self.rfkill_button.set_label(language['switch_on_wifi'])
|
||||
self.rfkill_button.set_label(_('Switch On Wi-Fi'))
|
||||
else:
|
||||
self.rfkill_button.set_stock_id(gtk.STOCK_MEDIA_STOP)
|
||||
self.rfkill_button.set_label(language['switch_off_wifi'])
|
||||
self.rfkill_button.set_label(_('Switch Off Wi-Fi'))
|
||||
|
||||
def disconnect_all(self, widget=None):
|
||||
""" Disconnects from any active network. """
|
||||
@@ -350,11 +349,11 @@ class appGui(object):
|
||||
|
||||
def connect_hidden(self, widget):
|
||||
""" Prompts the user for a hidden network, then scans for it. """
|
||||
dialog = gtk.Dialog(title=language['hidden_network'],
|
||||
dialog = gtk.Dialog(title=('Hidden Network'),
|
||||
flags=gtk.DIALOG_MODAL,
|
||||
buttons=(gtk.STOCK_CONNECT, 1, gtk.STOCK_CANCEL, 2))
|
||||
dialog.set_has_separator(False)
|
||||
lbl = gtk.Label(language['hidden_network_essid'])
|
||||
lbl = gtk.Label(_('Hidden Network ESSID'))
|
||||
textbox = gtk.Entry()
|
||||
dialog.vbox.pack_start(lbl)
|
||||
dialog.vbox.pack_start(textbox)
|
||||
@@ -419,14 +418,14 @@ class appGui(object):
|
||||
if self.connecting:
|
||||
# Adjust our state from connecting->connected.
|
||||
self._set_not_connecting_state()
|
||||
self.set_status(language['connected_to_wired'].replace('$A', info[0]))
|
||||
self.set_status(_('Connected to wired network (IP: $A)').replace('$A', info[0]))
|
||||
return True
|
||||
|
||||
def set_wireless_state(self, info):
|
||||
if self.connecting:
|
||||
# Adjust our state from connecting->connected.
|
||||
self._set_not_connecting_state()
|
||||
self.set_status(language['connected_to_wireless'].replace
|
||||
self.set_status(_('Connected to $A at $B (IP: $C)').replace
|
||||
('$A', info[1]).replace
|
||||
('$B', daemon.FormatSignalForPrinting(info[2])).replace
|
||||
('$C', info[0]))
|
||||
@@ -436,7 +435,7 @@ class appGui(object):
|
||||
if self.connecting:
|
||||
# Adjust our state from connecting->not-connected.
|
||||
self._set_not_connecting_state()
|
||||
self.set_status(language['not_connected'])
|
||||
self.set_status(_('Not connected'))
|
||||
return True
|
||||
|
||||
def _set_not_connecting_state(self):
|
||||
@@ -468,11 +467,10 @@ class appGui(object):
|
||||
gobject.idle_add(self.status_bar.remove_message, 1, self.statusID)
|
||||
if info[0] == "wireless":
|
||||
essid, stat = wireless.CheckWirelessConnectingMessage()
|
||||
gobject.idle_add(self.set_status, "%s: %s" % (essid,
|
||||
language[str(stat)]))
|
||||
gobject.idle_add(self.set_status, "%s: %s" % (essid, stat))
|
||||
elif info[0] == "wired":
|
||||
gobject.idle_add(self.set_status, language['wired_network'] + ': ' +
|
||||
language[str(wired.CheckWiredConnectingMessage())])
|
||||
gobject.idle_add(self.set_status, _('Wired Network') + ': ' \
|
||||
+ wired.CheckWiredConnectingMessage())
|
||||
return True
|
||||
|
||||
def update_connect_buttons(self, state=None, x=None, force_check=False):
|
||||
@@ -526,7 +524,7 @@ class appGui(object):
|
||||
# Remove stuff already in there.
|
||||
self._remove_items_from_vbox(self.wired_network_box)
|
||||
self._remove_items_from_vbox(self.network_list)
|
||||
label = gtk.Label("%s..." % language['scanning'])
|
||||
label = gtk.Label("%s..." % _('Scanning'))
|
||||
self.network_list.pack_start(label)
|
||||
self.network_list.show_all()
|
||||
if wired.CheckPluggedIn() or daemon.GetAlwaysShowWiredInterface():
|
||||
@@ -599,9 +597,9 @@ class appGui(object):
|
||||
else:
|
||||
instruct_label.hide()
|
||||
if wireless.GetKillSwitchEnabled():
|
||||
label = gtk.Label(language['killswitch_enabled'] + ".")
|
||||
label = gtk.Label(_('Wireless Kill Switch Enabled') + ".")
|
||||
else:
|
||||
label = gtk.Label(language['no_wireless_networks_found'])
|
||||
label = gtk.Label(_('No wireless networks found.'))
|
||||
self.network_list.pack_start(label)
|
||||
label.show()
|
||||
self.update_connect_buttons(force_check=True)
|
||||
@@ -628,7 +626,7 @@ class appGui(object):
|
||||
for lblent in req_entlist:
|
||||
lblent.set_text(lblent.get_text().strip())
|
||||
if not misc.IsValidIP(lblent.get_text()):
|
||||
error(self.window, language['invalid_address'].
|
||||
error(self.window, _('Invalid address in $A entry.').
|
||||
replace('$A', lblent.label.get_label()))
|
||||
return False
|
||||
|
||||
@@ -636,7 +634,7 @@ class appGui(object):
|
||||
for lblent in opt_entlist:
|
||||
lblent.set_text(lblent.get_text().strip())
|
||||
if lblent.get_text() and not misc.IsValidIP(lblent.get_text()):
|
||||
error(self.window, language['invalid_address'].
|
||||
error(self.window, _('Invalid address in $A entry.').
|
||||
replace('$A', lblent.label.get_label()))
|
||||
return False
|
||||
|
||||
@@ -691,14 +689,14 @@ class appGui(object):
|
||||
for entry_info in encryption_info.itervalues():
|
||||
if entry_info[0].entry.get_text() == "" and \
|
||||
entry_info[1] == 'required':
|
||||
error(self.window, "%s (%s)" % (language['encrypt_info_missing'],
|
||||
error(self.window, "%s (%s)" % (_('Required encryption information is missing.'),
|
||||
entry_info[0].label.get_label())
|
||||
)
|
||||
return False
|
||||
# Make sure the checkbox is checked when it should be
|
||||
elif not entry.chkbox_encryption.get_active() and \
|
||||
wireless.GetWirelessProperty(networkid, "encryption"):
|
||||
error(self.window, language['enable_encryption'])
|
||||
error(self.window, _('This network requires encryption to be enabled.'))
|
||||
return False
|
||||
return True
|
||||
|
||||
@@ -722,7 +720,7 @@ class appGui(object):
|
||||
self.all_network_list.set_sensitive(False)
|
||||
if self.statusID:
|
||||
gobject.idle_add(self.status_bar.remove_message, 1, self.statusID)
|
||||
gobject.idle_add(self.set_status, language["disconnecting_active"])
|
||||
gobject.idle_add(self.set_status, _('Disconnecting active connections...'))
|
||||
gobject.idle_add(self.status_area.show_all)
|
||||
self.wait_for_events()
|
||||
self._connect_thread_started = False
|
||||
|
||||
@@ -32,7 +32,7 @@ import wicd.dbusmanager as dbusmanager
|
||||
from wicd.misc import noneToString, stringToNone, noneToBlankString, to_bool
|
||||
from guiutil import error, LabelEntry, GreyLabel, LeftAlignedLabel, string_input, ProtectedLabelEntry
|
||||
|
||||
from wicd.translations import language
|
||||
from wicd.translations import language, _
|
||||
|
||||
# These get set when a NetworkEntry is instantiated.
|
||||
daemon = None
|
||||
@@ -55,9 +55,9 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
"""
|
||||
# if no network name was passed, just use Properties as the title
|
||||
if network_name:
|
||||
title = '%s - %s' % (network_name, language['properties'])
|
||||
title = '%s - %s' % (network_name, _('Properties'))
|
||||
else:
|
||||
title = language['properties']
|
||||
title = _('Properties')
|
||||
|
||||
gtk.Dialog.__init__(self, title=title,
|
||||
flags=gtk.DIALOG_MODAL, buttons=(gtk.STOCK_CANCEL,
|
||||
@@ -70,23 +70,23 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
self.connect('show', lambda *a, **k: self.set_default_size())
|
||||
|
||||
# Set up the Advanced Settings Dialog.
|
||||
self.txt_ip = LabelEntry(language['ip'])
|
||||
self.txt_ip = LabelEntry(_('IP'))
|
||||
self.txt_ip.entry.connect('focus-out-event', self.set_defaults)
|
||||
self.txt_netmask = LabelEntry(language['netmask'])
|
||||
self.txt_gateway = LabelEntry(language['gateway'])
|
||||
self.txt_search_dom = LabelEntry(language['search_domain'])
|
||||
self.txt_domain = LabelEntry(language['dns_domain'])
|
||||
self.txt_dns_1 = LabelEntry(language['dns'] + ' 1')
|
||||
self.txt_dns_2 = LabelEntry(language['dns'] + ' 2')
|
||||
self.txt_dns_3 = LabelEntry(language['dns'] + ' 3')
|
||||
self.txt_netmask = LabelEntry(_('Netmask'))
|
||||
self.txt_gateway = LabelEntry(_('Gateway'))
|
||||
self.txt_search_dom = LabelEntry(_('Search domain'))
|
||||
self.txt_domain = LabelEntry(_('DNS domain'))
|
||||
self.txt_dns_1 = LabelEntry(_('DNS server') + ' 1')
|
||||
self.txt_dns_2 = LabelEntry(_('DNS server') + ' 2')
|
||||
self.txt_dns_3 = LabelEntry(_('DNS server') + ' 3')
|
||||
dhcp_hostname_hbox = gtk.HBox(False, 0)
|
||||
self.chkbox_use_dhcp_hostname = gtk.CheckButton()
|
||||
self.txt_dhcp_hostname = LabelEntry("DHCP Hostname")
|
||||
dhcp_hostname_hbox.pack_start(self.chkbox_use_dhcp_hostname, fill=False, expand=False)
|
||||
dhcp_hostname_hbox.pack_start(self.txt_dhcp_hostname)
|
||||
self.chkbox_static_ip = gtk.CheckButton(language['use_static_ip'])
|
||||
self.chkbox_static_dns = gtk.CheckButton(language['use_static_dns'])
|
||||
self.chkbox_global_dns = gtk.CheckButton(language['use_global_dns'])
|
||||
self.chkbox_static_ip = gtk.CheckButton(_('Use Static IPs'))
|
||||
self.chkbox_static_dns = gtk.CheckButton(_('Use Static DNS'))
|
||||
self.chkbox_global_dns = gtk.CheckButton(_('Use global DNS servers'))
|
||||
self.hbox_dns = gtk.HBox(False, 0)
|
||||
self.hbox_dns.pack_start(self.chkbox_static_dns)
|
||||
self.hbox_dns.pack_start(self.chkbox_global_dns)
|
||||
@@ -98,7 +98,7 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
script_image.set_padding(4, 0)
|
||||
#self.script_button.set_alignment(.5, .5)
|
||||
self.script_button.set_image(script_image)
|
||||
self.script_button.set_label(language['scripts'])
|
||||
self.script_button.set_label(_('Scripts'))
|
||||
|
||||
self.button_hbox = gtk.HBox(False, 2)
|
||||
self.button_hbox.pack_start(self.script_button, fill=False, expand=False)
|
||||
@@ -163,7 +163,7 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
if stringToNone(netmask.get_text()) is None: # Make sure the netmask is blank
|
||||
netmask.set_text('255.255.255.0') # Fill in the most common one
|
||||
elif ipAddress != "":
|
||||
error(None, language['invalid_ip_address'])
|
||||
error(None, _('Invalid IP address entered.'))
|
||||
|
||||
def reset_static_checkboxes(self):
|
||||
# Enable the right stuff
|
||||
@@ -229,7 +229,7 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
""" Set the DNS entries' sensitivity based on the Global checkbox. """
|
||||
global_dns_active = daemon.GetUseGlobalDNS()
|
||||
if not global_dns_active and self.chkbox_global_dns.get_active():
|
||||
error(None, language['global_dns_not_enabled'])
|
||||
error(None, _('Global DNS has not been enabled in general preferences.'))
|
||||
self.chkbox_global_dns.set_active(False)
|
||||
if daemon.GetUseGlobalDNS() and self.chkbox_static_dns.get_active():
|
||||
for w in [self.txt_dns_1, self.txt_dns_2, self.txt_dns_3,
|
||||
@@ -282,7 +282,7 @@ class AdvancedSettingsDialog(gtk.Dialog):
|
||||
class WiredSettingsDialog(AdvancedSettingsDialog):
|
||||
def __init__(self, name):
|
||||
""" Build the wired settings dialog. """
|
||||
AdvancedSettingsDialog.__init__(self, language['wired_network'])
|
||||
AdvancedSettingsDialog.__init__(self, _('Wired Network'))
|
||||
self.des = self.connect("destroy", self.destroy_called)
|
||||
self.script_button.connect("clicked", self.edit_scripts)
|
||||
self.prof_name = name
|
||||
@@ -296,10 +296,12 @@ class WiredSettingsDialog(AdvancedSettingsDialog):
|
||||
profile = self.prof_name
|
||||
cmdend = [os.path.join(wpath.gtk, "configscript.py"), profile, "wired"]
|
||||
if os.getuid() != 0:
|
||||
cmdbase = misc.get_sudo_cmd(language['scripts_need_pass'],
|
||||
cmdbase = misc.get_sudo_cmd(_('You must enter your password to configure scripts'),
|
||||
prog_num=daemon.GetSudoApp())
|
||||
if not cmdbase:
|
||||
error(None, language["no_sudo_prog"])
|
||||
error(None, _('Could not find a graphical sudo program. '\
|
||||
'The script editor could not be launched. '\
|
||||
"You'll have to edit scripts directly your configuration file."))
|
||||
return
|
||||
cmdbase.extend(cmdend)
|
||||
misc.LaunchAndWait(cmdbase)
|
||||
@@ -350,8 +352,8 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
||||
# Set up encryption stuff
|
||||
self.networkID = networkID
|
||||
self.combo_encryption = gtk.combo_box_new_text()
|
||||
self.chkbox_encryption = gtk.CheckButton(language['use_encryption'])
|
||||
self.chkbox_global_settings = gtk.CheckButton(language['global_settings'])
|
||||
self.chkbox_encryption = gtk.CheckButton(_('Use Encryption'))
|
||||
self.chkbox_global_settings = gtk.CheckButton(_('Use these settings for all networks sharing this essid'))
|
||||
# Make the vbox to hold the encryption stuff.
|
||||
self.vbox_encrypt_info = gtk.VBox(False, 0)
|
||||
self.toggle_encryption()
|
||||
@@ -402,10 +404,12 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
||||
cmdend = [os.path.join(wpath.gtk, "configscript.py"),
|
||||
str(self.networkID), "wireless"]
|
||||
if os.getuid() != 0:
|
||||
cmdbase = misc.get_sudo_cmd(language['scripts_need_pass'],
|
||||
cmdbase = misc.get_sudo_cmd(_('You must enter your password to configure scripts'),
|
||||
prog_num=daemon.GetSudoApp())
|
||||
if not cmdbase:
|
||||
error(None, language["no_sudo_prog"])
|
||||
error(None, _('Could not find a graphical sudo program. '\
|
||||
'The script editor could not be launched. '\
|
||||
"You'll have to edit scripts directly your configuration file."))
|
||||
return
|
||||
cmdbase.extend(cmdend)
|
||||
misc.LaunchAndWait(cmdbase)
|
||||
@@ -478,7 +482,7 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
||||
for entry_info in encrypt_info.itervalues():
|
||||
if entry_info[0].entry.get_text() == "" and \
|
||||
entry_info[1] == 'required':
|
||||
error(self, "%s (%s)" % (language['encrypt_info_missing'],
|
||||
error(self, "%s (%s)" % (_('Required encryption information is missing.'),
|
||||
entry_info[0].label.get_label())
|
||||
)
|
||||
return False
|
||||
@@ -489,7 +493,7 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
||||
elif not self.chkbox_encryption.get_active() and \
|
||||
wireless.GetWirelessProperty(networkid, "encryption"):
|
||||
# Encrypt checkbox is off, but the network needs it.
|
||||
error(self, language['enable_encryption'])
|
||||
error(self, _('This network requires encryption to be enabled.'))
|
||||
return False
|
||||
else:
|
||||
print "no encryption specified..."
|
||||
@@ -531,11 +535,8 @@ class WirelessSettingsDialog(AdvancedSettingsDialog):
|
||||
for type_ in ['required', 'optional']:
|
||||
fields = methods[ID][type_]
|
||||
for field in fields:
|
||||
if language.has_key(field[1]):
|
||||
field_text = language[field[1].lower().replace(' ','_')]
|
||||
else:
|
||||
field_text = field[1].replace('_',' ')
|
||||
|
||||
field_text = language[field[1].lower().replace(' ','_')]
|
||||
|
||||
if field in methods[ID]['protected']:
|
||||
box = ProtectedLabelEntry(field_text)
|
||||
else:
|
||||
@@ -593,7 +594,7 @@ class NetworkEntry(gtk.HBox):
|
||||
self.advanced_image.set_from_stock(gtk.STOCK_EDIT, 4)
|
||||
self.advanced_image.set_padding(4, 0)
|
||||
self.advanced_button.set_alignment(.5, .5)
|
||||
self.advanced_button.set_label(language['properties'])
|
||||
self.advanced_button.set_label(_('Properties'))
|
||||
self.advanced_button.set_image(self.advanced_image)
|
||||
|
||||
self.buttons_hbox.pack_start(self.connect_hbox, False, False)
|
||||
@@ -624,14 +625,14 @@ class WiredNetworkEntry(NetworkEntry):
|
||||
self.connect_button.show()
|
||||
|
||||
self.name_label.set_use_markup(True)
|
||||
self.name_label.set_label("<b>" + language['wired_network'] + "</b>")
|
||||
self.name_label.set_label("<b>" + _('Wired Network') + "</b>")
|
||||
|
||||
self.is_full_gui = True
|
||||
|
||||
self.button_add = gtk.Button(stock=gtk.STOCK_ADD)
|
||||
self.button_delete = gtk.Button(stock=gtk.STOCK_DELETE)
|
||||
self.profile_help = gtk.Label(language['wired_network_instructions'])
|
||||
self.chkbox_default_profile = gtk.CheckButton(language['default_wired'])
|
||||
self.profile_help = gtk.Label(_('To connect to a wired network, you must create a network profile. To create a network profile, type a name that describes this network, and press Add.'))
|
||||
self.chkbox_default_profile = gtk.CheckButton(_('Use as default profile (overwrites any previous default)'))
|
||||
self.combo_profile_names = gtk.combo_box_new_text()
|
||||
|
||||
# Format the profile help label.
|
||||
@@ -812,8 +813,8 @@ class WirelessNetworkEntry(NetworkEntry):
|
||||
self.lbl_channel = GreyLabel()
|
||||
|
||||
print "ESSID : " + self.essid
|
||||
self.chkbox_autoconnect = gtk.CheckButton(language['automatic_connect'])
|
||||
self.chkbox_neverconnect = gtk.CheckButton(language['never_connect'])
|
||||
self.chkbox_autoconnect = gtk.CheckButton(_('Automatically connect to this network'))
|
||||
self.chkbox_neverconnect = gtk.CheckButton(_('Never connect to this network'))
|
||||
|
||||
self.set_signal_strength(wireless.GetWirelessProperty(networkID,
|
||||
'quality'),
|
||||
@@ -955,13 +956,13 @@ class WirelessNetworkEntry(NetworkEntry):
|
||||
if on and ttype:
|
||||
self.lbl_encryption.set_label(str(ttype))
|
||||
if on and not ttype:
|
||||
self.lbl_encryption.set_label(language['secured'])
|
||||
self.lbl_encryption.set_label(_('Secured'))
|
||||
if not on:
|
||||
self.lbl_encryption.set_label(language['unsecured'])
|
||||
self.lbl_encryption.set_label(_('Unsecured'))
|
||||
|
||||
def set_channel(self, channel):
|
||||
""" Set the channel value for the WirelessNetworkEntry. """
|
||||
self.lbl_channel.set_label(language['channel'] + ' ' + str(channel))
|
||||
self.lbl_channel.set_label(_('Channel') + ' ' + str(channel))
|
||||
|
||||
def format_entry(self, networkid, label):
|
||||
""" Helper method for fetching/formatting wireless properties. """
|
||||
@@ -1077,13 +1078,13 @@ class WirelessInformationDialog(gtk.Dialog):
|
||||
if on and ttype:
|
||||
self.lbl_encryption.set_label(str(ttype))
|
||||
if on and not ttype:
|
||||
self.lbl_encryption.set_label(language['secured'])
|
||||
self.lbl_encryption.set_label(_('Secured'))
|
||||
if not on:
|
||||
self.lbl_encryption.set_label(language['unsecured'])
|
||||
self.lbl_encryption.set_label(_('Unsecured'))
|
||||
|
||||
def set_channel(self, channel):
|
||||
""" Set the channel value for the WirelessNetworkEntry. """
|
||||
self.lbl_channel.set_label(language['channel'] + ' ' + str(channel))
|
||||
self.lbl_channel.set_label(_('Channel') + ' ' + str(channel))
|
||||
|
||||
def set_mode(self, mode):
|
||||
""" Set the mode value for the WirelessNetworkEntry. """
|
||||
|
||||
60
gtk/prefs.py
60
gtk/prefs.py
@@ -33,6 +33,7 @@ from wicd import misc
|
||||
from wicd import wpath
|
||||
from wicd import dbusmanager
|
||||
from wicd.misc import checkboxTextboxToggle, noneToBlankString
|
||||
from wicd.translations import _
|
||||
|
||||
daemon = None
|
||||
wireless = None
|
||||
@@ -285,18 +286,18 @@ class PreferencesDialog(object):
|
||||
""" Sets up a label for the given widget name. """
|
||||
widget = self.wTree.get_object(name)
|
||||
# if lbl:
|
||||
# widget.set_label(language[lbl])
|
||||
# widget.set_label(lbl)
|
||||
if widget is None:
|
||||
raise ValueError('widget %s does not exist' % name)
|
||||
return widget
|
||||
|
||||
# External Programs tab
|
||||
# self.wTree.get_object("gen_settings_label").set_label(language["gen_settings"])
|
||||
# self.wTree.get_object("ext_prog_label").set_label(language["ext_programs"])
|
||||
# self.wTree.get_object("dhcp_client_label").set_label(language["dhcp_client"])
|
||||
# self.wTree.get_object("wired_detect_label").set_label(language["wired_detect"])
|
||||
# self.wTree.get_object("route_flush_label").set_label(language["route_flush"])
|
||||
# self.wTree.get_object("pref_backend_label").set_label(language["backend"] + ":")
|
||||
# self.wTree.get_object("gen_settings_label").set_label(_('General Settings'))
|
||||
# self.wTree.get_object("ext_prog_label").set_label(_('External Programs'))
|
||||
# self.wTree.get_object("dhcp_client_label").set_label(_('DHCP Client'))
|
||||
# self.wTree.get_object("wired_detect_label").set_label(_('Wired Link Detection'))
|
||||
# self.wTree.get_object("route_flush_label").set_label(_('Route Table Flushing'))
|
||||
# self.wTree.get_object("pref_backend_label").set_label(_('Backend') + ":")
|
||||
|
||||
# entryWiredAutoMethod = self.wTree.get_object("pref_wired_auto_label")
|
||||
# entryWiredAutoMethod.set_label('Wired Autoconnect Setting:')
|
||||
@@ -305,16 +306,16 @@ class PreferencesDialog(object):
|
||||
# atrlist.insert(pango.AttrWeight(pango.WEIGHT_BOLD, 0, 50))
|
||||
# entryWiredAutoMethod.set_attributes(atrlist)
|
||||
|
||||
# self.set_label("pref_dns1_label", "%s %s" % (language['dns'], language['1']))
|
||||
# self.set_label("pref_dns2_label", "%s %s" % (language['dns'], language['2']))
|
||||
# self.set_label("pref_dns3_label", "%s %s" % (language['dns'], language['3']))
|
||||
# self.set_label("pref_search_dom_label", "%s:" % language['search_domain'])
|
||||
# self.set_label("pref_wifi_label", "%s:" % language['wireless_interface'])
|
||||
# self.set_label("pref_wired_label", "%s:" % language['wired_interface'])
|
||||
# self.set_label("pref_driver_label", "%s:" % language['wpa_supplicant_driver'])
|
||||
# self.set_label("pref_dns1_label", "%s 1" % _('DNS server'))
|
||||
# self.set_label("pref_dns2_label", "%s 2" % _('DNS server'))
|
||||
# self.set_label("pref_dns3_label", "%s 3" % _('DNS server'))
|
||||
# self.set_label("pref_search_dom_label", "%s:" % _('Search domain'))
|
||||
# self.set_label("pref_wifi_label", "%s:" % _('Wireless Interface'))
|
||||
# self.set_label("pref_wired_label", "%s:" % _('Wired Interface'))
|
||||
# self.set_label("pref_driver_label", "%s:" % _('WPA Supplicant Driver'))
|
||||
|
||||
self.dialog = self.wTree.get_object("pref_dialog")
|
||||
self.dialog.set_title(language['preferences'])
|
||||
self.dialog.set_title(_('Preferences'))
|
||||
if os.path.exists(os.path.join(wpath.images, "wicd.png")):
|
||||
self.dialog.set_icon_from_file(os.path.join(wpath.images, "wicd.png"))
|
||||
width = int(gtk.gdk.screen_width() / 2.4)
|
||||
@@ -322,53 +323,52 @@ class PreferencesDialog(object):
|
||||
width = 450
|
||||
self.dialog.resize(width, int(gtk.gdk.screen_height() / 2))
|
||||
|
||||
self.wiredcheckbox = setup_label("pref_always_check",
|
||||
'wired_always_on')
|
||||
self.wiredcheckbox = setup_label("pref_always_check", _('''Always show wired interface'''))
|
||||
self.preferwiredcheckbox = setup_label("pref_prefer_wired_check",
|
||||
"prefer_wired")
|
||||
|
||||
self.reconnectcheckbox = setup_label("pref_auto_check",
|
||||
'auto_reconnect')
|
||||
_('Automatically reconnect on connection loss'))
|
||||
self.showneverconnectcheckbox = setup_label("pref_show_never_connect_check",
|
||||
'show_never_connect')
|
||||
_('Show never connect networks'))
|
||||
self.debugmodecheckbox = setup_label("pref_debug_check",
|
||||
'use_debug_mode')
|
||||
_('Enable debug mode'))
|
||||
self.displaytypecheckbox = setup_label("pref_dbm_check",
|
||||
'display_type_dialog')
|
||||
_('Use dBm to measure signal strength'))
|
||||
self.verifyapcheckbox = setup_label("pref_verify_ap_check",
|
||||
'verify_ap_dialog')
|
||||
_('Ping static gateways after connecting to verify association'))
|
||||
self.usedefaultradiobutton = setup_label("pref_use_def_radio",
|
||||
'use_default_profile')
|
||||
_('Use default profile on wired autoconnect'))
|
||||
self.showlistradiobutton = setup_label("pref_prompt_radio",
|
||||
'show_wired_list')
|
||||
_('Prompt for profile on wired autoconnect'))
|
||||
self.lastusedradiobutton = setup_label("pref_use_last_radio",
|
||||
'use_last_used_profile')
|
||||
_('Use last used profile on wired autoconnect'))
|
||||
|
||||
|
||||
self.notificationscheckbox = setup_label("pref_use_libnotify",
|
||||
'display_notifications')
|
||||
_('Display notifications about connection status'))
|
||||
|
||||
# DHCP Clients
|
||||
self.dhcpautoradio = setup_label("dhcp_auto_radio", "wicd_auto_config")
|
||||
self.dhcpautoradio = setup_label("dhcp_auto_radio", _('Automatic (recommended)'))
|
||||
self.dhclientradio = self.wTree.get_object("dhclient_radio")
|
||||
self.pumpradio = self.wTree.get_object("pump_radio")
|
||||
self.dhcpcdradio = self.wTree.get_object("dhcpcd_radio")
|
||||
self.udhcpcradio = self.wTree.get_object("udhcpc_radio")
|
||||
|
||||
# Wired Link Detection Apps
|
||||
self.linkautoradio = setup_label("link_auto_radio", 'wicd_auto_config')
|
||||
self.linkautoradio = setup_label("link_auto_radio", _('Automatic (recommended)'))
|
||||
self.linkautoradio = setup_label("link_auto_radio")
|
||||
self.ethtoolradio = setup_label("ethtool_radio")
|
||||
self.miitoolradio = setup_label("miitool_radio")
|
||||
|
||||
# Route Flushing Apps
|
||||
self.flushautoradio = setup_label("flush_auto_radio",
|
||||
'wicd_auto_config')
|
||||
_('Automatic (recommended)'))
|
||||
self.ipflushradio = setup_label("ip_flush_radio")
|
||||
self.routeflushradio = setup_label("route_flush_radio")
|
||||
|
||||
# Graphical Sudo Apps
|
||||
self.sudoautoradio = setup_label("sudo_auto_radio", "wicd_auto_config")
|
||||
self.sudoautoradio = setup_label("sudo_auto_radio", _('Automatic (recommended)'))
|
||||
self.gksudoradio = setup_label("gksudo_radio")
|
||||
self.kdesuradio = setup_label("kdesu_radio")
|
||||
self.ktsussradio = setup_label("ktsuss_radio")
|
||||
|
||||
@@ -64,7 +64,7 @@ from wicd import dbusmanager
|
||||
import gui
|
||||
from guiutil import error, can_use_notify
|
||||
|
||||
from wicd.translations import language
|
||||
from wicd.translations import _
|
||||
|
||||
ICON_AVAIL = True
|
||||
USE_EGG = False
|
||||
@@ -91,7 +91,7 @@ def catchdbus(func):
|
||||
return func(*args, **kwargs)
|
||||
except DBusException, e:
|
||||
if e.get_dbus_name() != None and "DBus.Error.AccessDenied" in e.get_dbus_name():
|
||||
error(None, language['access_denied'].replace("$A","<b>"+wpath.wicd_group+"</b>"))
|
||||
error(None, _('Unable to contact the Wicd daemon due to an access denied error from DBus. Please check that your user is in the $A group.').replace("$A","<b>"+wpath.wicd_group+"</b>"))
|
||||
#raise
|
||||
raise DBusException(e)
|
||||
else:
|
||||
@@ -208,20 +208,20 @@ class TrayIcon(object):
|
||||
Updates the trayicon tooltip based on current connection status
|
||||
"""
|
||||
if (self.network_type == "none"):
|
||||
self.tr.set_tooltip(language['not_connected'])
|
||||
self.tr.set_tooltip(_('Not connected'))
|
||||
elif (self.network_type == "wireless"):
|
||||
self.tr.set_tooltip(language['connected_to_wireless']
|
||||
self.tr.set_tooltip(_('Connected to $A at $B (IP: $C)')
|
||||
.replace('$A', self.network_name)
|
||||
.replace('$B', self.network_str)
|
||||
.replace('$C', self.network_addr))
|
||||
elif (self.network_type == "wired"):
|
||||
self.tr.set_tooltip(language['connected_to_wired']
|
||||
self.tr.set_tooltip(_('Connected to wired network (IP: $A)')
|
||||
.replace('$A', self.network_addr))
|
||||
elif (self.network_type == "killswitch"):
|
||||
self.tr.set_tooltip(language['not_connected'] + "(" +
|
||||
language['killswitched_enabled'] + ")")
|
||||
self.tr.set_tooltip(_('Not connected') + "(" +
|
||||
_('Wireless Kill Switch Enabled') + ")")
|
||||
elif (self.network_type == "no_daemon"):
|
||||
self.tr.set_tooltip(language['no_daemon_tooltip'])
|
||||
self.tr.set_tooltip(_('Wicd daemon unreachable'))
|
||||
|
||||
return True
|
||||
|
||||
@@ -260,11 +260,11 @@ class TrayIcon(object):
|
||||
self.network_addr = str(info[0])
|
||||
self.network_type = "wired"
|
||||
self.tr.set_from_file(os.path.join(wpath.images, "wired.png"))
|
||||
# status_string = language['connected_to_wired'].replace('$A',
|
||||
# status_string = _('Connected to wired network (IP: $A)').replace('$A',
|
||||
#wired_ip)
|
||||
# self.tr.set_tooltip(status_string)
|
||||
self._show_notification(language['wired_network'],
|
||||
language['connection_established'],
|
||||
self._show_notification(_('Wired Network'),
|
||||
_('Connection established'),
|
||||
'network-wired')
|
||||
|
||||
self.update_tooltip()
|
||||
@@ -287,14 +287,14 @@ class TrayIcon(object):
|
||||
|
||||
if wireless.GetWirelessProperty(cur_net_id, "encryption"):
|
||||
lock = "-lock"
|
||||
# status_string = (language['connected_to_wireless']
|
||||
# status_string = (_('Connected to $A at $B (IP: $C)')
|
||||
#.replace('$A', self.network)
|
||||
# .replace('$B', sig_string)
|
||||
# .replace('$C', str(wireless_ip)))
|
||||
#self.tr.set_tooltip(status_string)
|
||||
self.set_signal_image(int(strength), lock)
|
||||
self._show_notification(self.network,
|
||||
language['connection_established'],
|
||||
_('Connection established'),
|
||||
'network-wireless')
|
||||
|
||||
|
||||
@@ -304,22 +304,22 @@ class TrayIcon(object):
|
||||
""" Sets the icon info for a connecting state. """
|
||||
wired = False
|
||||
if info[0] == 'wired' and len(info) == 1:
|
||||
cur_network = language['wired_network']
|
||||
cur_network = _('Wired Network')
|
||||
wired = True
|
||||
else:
|
||||
cur_network = info[1]
|
||||
status_string = language['connecting'] + " to " + \
|
||||
status_string = _('Connecting') + " to " + \
|
||||
cur_network + "..."
|
||||
self.update_tooltip()
|
||||
# self.tr.set_tooltip(status_string)
|
||||
self.tr.set_from_file(os.path.join(wpath.images, "no-signal.png"))
|
||||
if wired:
|
||||
self._show_notification(cur_network,
|
||||
language['establishing_connection'],
|
||||
_('Establishing connection...'),
|
||||
'network-wired')
|
||||
else:
|
||||
self._show_notification(cur_network,
|
||||
language['establishing_connection'],
|
||||
_('Establishing connection...'),
|
||||
'network-wireless')
|
||||
|
||||
|
||||
@@ -328,14 +328,14 @@ class TrayIcon(object):
|
||||
""" Set the icon info for the not connected state. """
|
||||
self.tr.set_from_file(wpath.images + "no-signal.png")
|
||||
if not DBUS_AVAIL:
|
||||
status = language['no_daemon_tooltip']
|
||||
status = _('Wicd daemon unreachable')
|
||||
elif wireless.GetKillSwitchEnabled():
|
||||
status = (language['not_connected'] + " (" +
|
||||
language['killswitch_enabled'] + ")")
|
||||
status = (_('Not connected') + " (" +
|
||||
_('Wireless Kill Switch Enabled') + ")")
|
||||
else:
|
||||
status = language['not_connected']
|
||||
status = _('Not connected')
|
||||
# self.tr.set_tooltip(status)
|
||||
self._show_notification(language['disconnected'], None, 'stop')
|
||||
self._show_notification(_('Disconnected'), None, 'stop')
|
||||
self.update_tooltip()
|
||||
|
||||
@catchdbus
|
||||
@@ -495,9 +495,9 @@ class TrayIcon(object):
|
||||
('Menu', None, 'Menu'),
|
||||
('Connect', gtk.STOCK_CONNECT, "Connect"),
|
||||
('Info', gtk.STOCK_INFO, "_Connection Info", None,
|
||||
'Information about the current connection',
|
||||
_('Information about the current connection'),
|
||||
self.on_conn_info),
|
||||
('Quit',gtk.STOCK_QUIT,'_Quit',None,'Quit wicd-tray-icon',
|
||||
('Quit',gtk.STOCK_QUIT,'_Quit',None,_('Quit wicd-tray-icon'),
|
||||
self.on_quit),
|
||||
]
|
||||
actg = gtk.ActionGroup('Actions')
|
||||
@@ -535,7 +535,7 @@ class TrayIcon(object):
|
||||
if DBUS_AVAIL:
|
||||
self.toggle_wicd_gui()
|
||||
else:
|
||||
# error(None, language["daemon_unavailable"])
|
||||
# error(None, _('The wicd daemon is unavailable, so your request cannot be completed'))
|
||||
pass
|
||||
|
||||
def on_quit(self, widget=None):
|
||||
@@ -598,12 +598,19 @@ class TrayIcon(object):
|
||||
|
||||
# Choose info for the data
|
||||
if state == misc.WIRED:
|
||||
text = (language['conn_info_wired']
|
||||
text = (_('''$A
|
||||
$B KB/s
|
||||
$C KB/s''')
|
||||
.replace('$A', str(info[0])) #IP
|
||||
.replace('$B', str(rx)) #RX
|
||||
.replace('$C', str(tx))) #TX
|
||||
elif state == misc.WIRELESS:
|
||||
text = (language['conn_info_wireless']
|
||||
text = (_('''$A
|
||||
$B
|
||||
$C
|
||||
$D
|
||||
$E KB/s
|
||||
$F KB/s''')
|
||||
.replace('$A', str(info[1])) #SSID
|
||||
.replace('$B', str(info[4])) #Speed
|
||||
.replace('$C', str(info[0])) #IP
|
||||
@@ -616,13 +623,22 @@ class TrayIcon(object):
|
||||
# Choose info for the labels
|
||||
self.list[0].set_text('\n' + text)
|
||||
if state == misc.WIRED:
|
||||
self.list[1].set_text(language['conn_info_wired_labels'])
|
||||
self.list[1].set_text(_('''Wired
|
||||
IP:
|
||||
RX:
|
||||
TX:'''))
|
||||
elif state == misc.WIRELESS:
|
||||
self.list[1].set_text(language['conn_info_wireless_labels'])
|
||||
self.list[1].set_text(_('''Wireless
|
||||
SSID:
|
||||
Speed:
|
||||
IP:
|
||||
Strength:
|
||||
RX:
|
||||
TX:'''))
|
||||
elif state == misc.CONNECTING:
|
||||
self.list[1].set_text(language['connecting'])
|
||||
self.list[1].set_text(_('Connecting'))
|
||||
elif state in (misc.SUSPENDED, misc.NOT_CONNECTED):
|
||||
self.list[1].set_text(language['disconnected'])
|
||||
self.list[1].set_text(_('Disconnected'))
|
||||
|
||||
return True
|
||||
|
||||
@@ -776,7 +792,7 @@ class TrayIcon(object):
|
||||
self._add_item_to_menu(submenu, essid, "wifi", x,
|
||||
is_connecting, is_active)
|
||||
else:
|
||||
no_nets_item = gtk.MenuItem(language['no_wireless_networks_found'])
|
||||
no_nets_item = gtk.MenuItem(_('No wireless networks found.'))
|
||||
no_nets_item.set_sensitive(False)
|
||||
no_nets_item.show()
|
||||
submenu.append(no_nets_item)
|
||||
@@ -789,7 +805,7 @@ class TrayIcon(object):
|
||||
submenu = net_menuitem.get_submenu()
|
||||
self._clear_menu(submenu)
|
||||
|
||||
loading_item = gtk.MenuItem(language['scanning'] + "...")
|
||||
loading_item = gtk.MenuItem(_('Scanning') + "...")
|
||||
loading_item.set_sensitive(False)
|
||||
loading_item.show()
|
||||
submenu.append(loading_item)
|
||||
@@ -933,8 +949,7 @@ def setup_dbus(force=True):
|
||||
try:
|
||||
dbusmanager.connect_to_dbus()
|
||||
except DBusException:
|
||||
error(None, "Could not connect to wicd's D-Bus interface. " +
|
||||
"Check the wicd log for error messages.")
|
||||
error(None, _("Could not connect to wicd's D-Bus interface. Check the wicd log for error messages."))
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
@@ -963,7 +978,7 @@ def handle_no_dbus():
|
||||
DBUS_AVAIL = False
|
||||
gui.handle_no_dbus(from_tray=True)
|
||||
print "Wicd daemon is shutting down!"
|
||||
lost_dbus_id = misc.timeout_add(5, lambda:error(None, language['lost_dbus'],
|
||||
lost_dbus_id = misc.timeout_add(5, lambda:error(None, _('The wicd daemon has shut down. The UI will not function properly until it is restarted.'),
|
||||
block=False))
|
||||
return False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user