Skip to content

Instantly share code, notes, and snippets.

@EntityReborn
Created November 2, 2011 23:12
Show Gist options
  • Save EntityReborn/1335250 to your computer and use it in GitHub Desktop.
Save EntityReborn/1335250 to your computer and use it in GitHub Desktop.
Checks the modem's connection speed.
import downloader
import re
import sys
from PyQt4 import QtGui, QtCore
def getIcon(number):
image = QtGui.QPixmap(16, 16)
font = QtGui.QFont('terminal', 5)
font.setStretch(150)
m = QtGui.QFontMetrics(font)
painter = QtGui.QPainter()
painter.begin(image)
painter.setOpacity(1)
painter.fillRect(image.rect(), QtCore.Qt.black)
try:
int(number)
except Exception:
painter.setPen(QtCore.Qt.red)
else:
painter.setPen(QtCore.Qt.green)
painter.setFont(font)
painter.drawText(1, 8, number[0])
painter.drawText(8, 8, number[1])
painter.drawText(1, 15, number[2])
painter.drawText(8, 15, number[3])
painter.end()
icon = QtGui.QIcon()
icon.addPixmap(image)
return icon
class SystemTrayIcon(QtGui.QSystemTrayIcon):
def __init__(self, icon, parent=None):
QtGui.QSystemTrayIcon.__init__(self, icon, parent)
menu = QtGui.QMenu(parent)
exitAction = menu.addAction("Exit")
exitAction.triggered.connect(QtGui.qApp.quit)
checkAction = menu.addAction("Check")
checkAction.triggered.connect(self.checkSpeed)
self.setContextMenu(menu)
self.timer = QtCore.QTimer()
QtCore.QObject.connect(self.timer, QtCore.SIGNAL("timeout()"), self.checkSpeed)
self.timer.start(30000)
self.checkSpeed()
def checkSpeed(self):
self.setToolTip("Checking...")
self.setIcon(getIcon("????"))
dl = downloader.Downloader()
b = dl.browser()
b.add_password("192.168.1.254", "TELMEX", "<redacted>") # HTTP auth ftw!
r = dl.open("http://192.168.1.254/rpSysStatus.html")
if r:
page = r.read()
regex = "^Ancho de banda descendente/ascendente \(kbps\)</td>"
regex += "<TD width=\"50%\" class=tablecolvalue>\s*?(\d*?) /"
m = re.search(regex, page, re.M)
if m:
number = m.group(1)
self.setToolTip(number+"kbps")
self.setIcon(getIcon(number))
return
self.setIcon(getIcon("xxxx"))
self.setToolTip("Error parsing page.")
return
self.setIcon(getIcon("----"))
self.setToolTip("Not connected, or not at home!")
return
def main():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
icon = QtGui.QIcon(getIcon("8888"))
trayIcon = SystemTrayIcon(icon, w)
trayIcon.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment