Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/python
- """wifimon
- wifimon monitors your wifi connection and sits in your systray
- """
- # Imports
- #import os, sys
- import re # regular expression
- import time # for sleep()
- import signal # To catch sig int (ctrl-c)
- import sys # To catch sig int (ctrl-c)
- from PyQt4 import QtGui, QtCore
- # All the configurations
- class Conf:
- def __init__(self):
- self.interface = "no interface assigned!"
- self.percentage = -1
- self.intervall = 10
- self.statfile = "/proc/net/wireless"
- #self.statfile = "test_wlan"
- #self.statfile = "test_nowlan"
- self.iconPath = "./img/"
- # Read in the configuration file
- def read_conf():
- return 0
- # The sys tray
- class WifiIcon(QtGui.QSystemTrayIcon):
- def __init__(self, parent=None):
- QtGui.QSystemTrayIcon.__init__(self, parent)
- def event(self, event):
- if event == QtCore.QEvent.Show:
- self.emit(QtCore.SIGNAL("startCycle()"))
- return 0
- # The main class monitoring wifi
- class WifiMonitor(QtGui.QWidget):
- # The signals; can't be in constructor
- start = QtCore.pyqtSignal()
- show_tray = QtCore.pyqtSignal()
- signal_get_status = QtCore.pyqtSignal()
- signal_display_status = QtCore.pyqtSignal()
- signal_busy = QtCore.pyqtSignal()
- def __init__(self):
- QtGui.QWidget.__init__(self)
- self.createActions()
- self.createTrayIcon()
- self.trayIcon.show()
- def createActions(self):
- self.quitAction = QtGui.QAction(self.tr("&Quit"), self)
- QtCore.QObject.connect(self.quitAction, QtCore.SIGNAL("triggered()"),
- QtGui.qApp, QtCore.SLOT("quit()"))
- #self.start.connect(self.run)
- self.signal_get_status.connect(self.get_status)
- self.signal_display_status.connect(self.display_status)
- self.signal_busy.connect(self.busy)
- self.connect(self, QtCore.SIGNAL("startCycle"), self.get_status)
- def createTrayIcon(self):
- self.trayIconMenu = QtGui.QMenu(self)
- self.trayIconMenu.addAction(self.quitAction)
- #self.trayIcon = QtGui.QSystemTrayIcon(self)
- self.trayIcon = WifiIcon(self)
- self.trayIcon.setContextMenu(self.trayIconMenu)
- #pathToIcon = "/usr/share/icons/default.kde4/22x22/devices/network-wireless-connected-100.png"
- pathToIcon = conf.iconPath + "wifi_none.svg"
- self.trayIcon.setIcon(QtGui.QIcon(pathToIcon))
- self.show_tray.connect(self.trayIcon.show)
- #def showEvent(self, event):
- # #self.signal_busy.emit()
- # self.emit(QtCore.SIGNAL("startCycle()"))
- # Read in the satus of the connection
- def get_status(self):
- # open status file and discard first two lines
- f = open(conf.statfile)
- f.readline()
- f.readline()
- l = f.readline()
- if (len(l) != 0):
- print(l)
- m = re.search("(\S+\d):[ ]+(\d+)[ ]+(\d+)\.", l)
- conf.interface = m.group(1)
- #status = m.group(2)
- conf.percentage = int(m.group(3))
- self.signal_display_status.emit()
- # Display the status
- def display_status(self):
- if (conf.percentage >= 0):
- print("%s @ %d" % (conf.interface, conf.percentage))
- if conf.percentage:
- filePercentage = (int((conf.percentage - 1) / 25) + 1) * 25
- else:
- filePercentage = 0
- pathToIcon = conf.iconPath + "wifi_" + str(filePercentage) + ".svg"
- self.trayIcon.setIcon(QtGui.QIcon(pathToIcon))
- else:
- print("No wifi connection detected!")
- pathToIcon = conf.iconPath + "wifi_none.svg"
- self.trayIcon.setIcon(QtGui.QIcon(pathToIcon))
- print(pathToIcon)
- self.show_tray.emit()
- self.signal_busy.emit()
- def busy(self):
- time.sleep(conf.intervall)
- self.signal_get_status.emit()
- ## main loop
- #def run(self):
- # while True:
- # self.get_status()
- # self.display_status()
- # time.sleep(conf.intervall)
- # What to do, in the case of interruption
- def signal_handler(signal, frame):
- print("\nProgram was interrupted!")
- sys.exit(0)
- if (__name__ == "__main__"):
- signal.signal(signal.SIGINT, signal_handler)
- conf = Conf()
- read_conf()
- app = QtGui.QApplication(sys.argv)
- wifiMon = WifiMonitor()
- #icon.start.emit()
- #icon.show_tray.emit()
- #icon.signal_get_status.emit()
- #timer = QtCore.QTimer()
- ##timer.singleShot(10, icon.signal_get_status.emit)
- #QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"),
- # icon.signal_get_status.emit())
- # #icon, QtCore.SLOT("signal_get_status()"))
- #timer.start(0)
- app.exec_()
- sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment