/
qwings.py
95 lines (68 loc) · 3.19 KB
/
qwings.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/python
# coding: utf-8
import sys, os
from time import time
from PyQt4 import QtGui
from PyQt4 import QtCore
from settings import config, save_config
from utm5client import UTM5Client
from qwingschat import QWingsChat
from qtrafview import QTrafView
class QUtm5Gui(QtGui.QApplication):
def __init__(self, argv):
super(QUtm5Gui, self).__init__(argv)
if config['utm5']['login'] is None or config['utm5']['passwd'] is None:
self.login_dialog()
self.utm5client = UTM5Client(auto_auth=True)
self.chat = QWingsChat(app=self)
self.traf = QTrafView()
if config['chat']['show'] == "True":
self.chat.show()
self.trayIcon = QtGui.QSystemTrayIcon()
self.trayIcon.setIcon(QtGui.QIcon(os.path.join(os.path.dirname(__file__), 'wings_logo.png')))
self.trayIcon.setVisible(True)
self.connect(self.trayIcon,
QtCore.SIGNAL("activated(QSystemTrayIcon::ActivationReason)"),
self.on_sys_tray_activated)
self.trayIconMenu = QtGui.QMenu()
act = self.trayIconMenu.addAction("Чат")
self.connect(act, QtCore.SIGNAL("triggered()"), self.toggle_chat)
act = self.trayIconMenu.addAction("Трафик")
self.connect(act, QtCore.SIGNAL("triggered()"), self.toggle_traffic)
self.trayIconMenu.addSeparator()
act = self.trayIconMenu.addAction("Выход")
self.connect(act, QtCore.SIGNAL("triggered()"), self.quit)
self.trayIcon.setContextMenu(self.trayIconMenu)
self.update_tooltip_timer = QtCore.QTimer()
self.update_tooltip_timer.singleShot(0, self.update_tooltip)
QtCore.QObject.connect(self.update_tooltip_timer,
QtCore.SIGNAL("timeout()"), self.update_tooltip)
self.update_tooltip_timer.start(1000*60*5) # 5 minutes
def login_dialog(self):
while True:
config['utm5']['login'], ok1 = QtGui.QInputDialog.getText(None,
'Вход в личный кабинет', 'Введите логин:')
config['utm5']['passwd'], ok2 = QtGui.QInputDialog.getText(None,
'Вход в личный кабинет', 'Введите пароль:')
if ok1 and ok2: break
save_config()
def update_tooltip(self):
daytime, full = self.utm5client.get_month_traffic()
def hum(size):
return '%.2f МиБ' % (float(size)/(2**20),)
tooltip = ('Дневной входящий: {}\r\n'
'Дневной исходящий: {}\r\n'
'Полный входящий: {}\r\n'
'Полный исходящий: {}').format(*map(hum, daytime + full))
self.trayIcon.setToolTip(tooltip)
def toggle_chat(self):
self.chat.setVisible(not self.chat.isVisible())
config['chat']['show'] = str(self.chat.isVisible())
save_config()
def toggle_traffic(self):
self.traf.setVisible(not self.traf.isVisible())
def on_sys_tray_activated(self, reason):
if reason == QtGui.QSystemTrayIcon.Trigger: # click
self.toggle_chat()
if __name__ == "__main__":
sys.exit(QUtm5Gui(sys.argv).exec_())