__init__.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. # -*- coding: utf-8 -*-
  2. import dbus
  3. import dbus.service
  4. import sys
  5. from wicd import misc
  6. ##misc.to_bool
  7. ##misc.misc.noneToString
  8. ##misc.to_unicode
  9. ##misc.Noneify
  10. from wicd.translations import _
  11. from wicd import wpath
  12. from wicd import dbusmanager
  13. from wicd import misc
  14. import time
  15. import gobject
  16. if getattr(dbus, 'version', (0, 0, 0)) < (0, 80, 0):
  17. import dbus.glib
  18. else:
  19. from dbus.mainloop.glib import DBusGMainLoop
  20. DBusGMainLoop(set_as_default=True)
  21. bus = daemon = wireless = wired = None
  22. manager = objects = adapter = None
  23. devices = {}
  24. def setup_dbus(force=True):
  25. global bus,daemon,wireless,wired
  26. global manager,objects,adapter,devices
  27. try:
  28. dbusmanager.connect_to_dbus()
  29. except dbus.DBusException:
  30. print >> sys.stderr,\
  31. _("Can't connect to wicd daemon,trying to start it automatically...")
  32. else:
  33. bus = dbusmanager.get_bus()
  34. dbus_ifaces = dbusmanager.get_dbus_ifaces()
  35. daemon = dbus_ifaces["daemon"] ## @dbus.service.method('org.wicd.daemon')
  36. wireless = dbus_ifaces["wireless"] ## @dbus.service.method('org.wicd.daemon.wireless')
  37. wired = dbus_ifaces["wired"] ## @
  38. ### BlueZ
  39. try:
  40. proxy_obj = bus.get_object("org.bluez", "/")
  41. manager = dbus.Interface(proxy_obj,"org.freedesktop.DBus.ObjectManager")
  42. objects = manager.GetManagedObjects()
  43. for path, interfaces in objects.iteritems():
  44. if "org.bluez.Device1" in interfaces:
  45. devices[path] = interfaces["org.bluez.Device1"] ## like /org/bluez/hci0/dev_xx_xx_xx_yy_yy_yy
  46. proxy_obj = bus.get_object("org.bluez", "/org/bluez/hci0")
  47. adapter = dbus.Interface(proxy_obj, "org.bluez.Adapter1")
  48. except Exception as e:
  49. print(str(e))
  50. if not daemon:
  51. print("Error connecting to wicd via D-Bus")
  52. return True
  53. def wifi_strength():
  54. fast = not daemon.NeedsExternalCalls()
  55. if not fast:
  56. iwconfig = wireless.GetIwconfig()
  57. else:
  58. iwconfig = ''
  59. if daemon.GetSignalDisplayType() == 0:
  60. strength = wireless.GetCurrentSignalStrength(iwconfig)
  61. else:
  62. strength = wireless.GetCurrentDBMStrength(iwconfig)
  63. return strength
  64. def get_wifi_ip():
  65. if wireless == None:
  66. return None
  67. return wireless.GetWirelessIP('')
  68. def is_wifi_connected_now():
  69. if wireless == None:
  70. return False
  71. wireless_connecting = wireless.CheckIfWirelessConnecting()
  72. fast = not daemon.NeedsExternalCalls()
  73. if wireless_connecting:
  74. return False
  75. else:
  76. if not fast:
  77. iwconfig = wireless.GetIwconfig()
  78. else:
  79. iwconfig = ''
  80. if check_for_wireless(iwconfig,wireless.GetWirelessIP(''),None):
  81. return True
  82. else:
  83. return False
  84. def check_for_wireless(iwconfig,wireless_ip,set_status):
  85. if not wireless_ip:
  86. return False
  87. network = wireless.GetCurrentNetwork(iwconfig)
  88. if not network:
  89. return False
  90. network = misc.to_unicode(network)
  91. if daemon.GetSignalDisplayType() == 0:
  92. strength = wireless.GetCurrentSignalStrength(iwconfig)
  93. else:
  94. strength = wireless.GetCurrentDBMStrength(iwconfig)
  95. if strength is None:
  96. return False
  97. strength = misc.to_unicode(daemon.FormatSignalForPrinting(strength))
  98. ip = misc.to_unicode(wireless_ip)
  99. """
  100. print(_('dbus Connected to $A at $B (IP: $C)').replace
  101. ('$A', network).replace
  102. ('$B', strength).replace
  103. ('$C', ip))
  104. """
  105. return True