CODE: #!/usr/bin/python # -*- coding: utf-8 -*- 」』東南大學 PPPoE 托盤程序 」』 import gtk import os import gobject import pynotify import datetime # OK def makeMenu(event_button, event_time, icon): menu = gtk.Menu() connetTitle=gtk.STOCK_CONNECT global gIcon if gIcon.pppoe_status!=」Stopped」: connetTitle=gtk.STOCK_DISCONNECT itemConnect = gtk.ImageMenuItem(connetTitle) itemConnect.show() itemConnect.connect(」activate」, connect,menu) menu.append(itemConnect) # connect SEU itemSEU = gtk.ImageMenuItem(gtk.STOCK_CONNECT) label = itemSEU.get_children()[0] label=label.set_label(」連接內網」) itemSEU.show() itemSEU.connect(」activate」, connectSEU, menu) menu.append(itemSEU) # connect NJXY itemNJXY = gtk.ImageMenuItem(gtk.STOCK_CONNECT) label = itemNJXY.get_children()[0] label=label.set_label(」連接外網」) itemNJXY.show() itemNJXY.connect(」activate」, connectNJXY, menu) menu.append(itemNJXY) # about itemAbout = gtk.ImageMenuItem(gtk.STOCK_ABOUT) itemAbout.show() itemAbout.connect(」activate」, about,menu) menu.append(itemAbout) # quit itemQuit = gtk.ImageMenuItem(gtk.STOCK_QUIT) itemQuit.show() itemQuit.connect(」activate」, quit,menu) menu.append(itemQuit) # pop menu.popup(None, None, gtk.status_icon_position_menu, event_button, event_time, icon) # OK def on_right_click(icon, event_button, event_time): makeMenu(event_button, event_time, icon) # OK def quit(self,event): gtk.main_quit() # OK def connect(self,event): if gIcon.pppoe_status != 『Stopped』: start = os.popen(』gksu poff -a』) else: lastStatus = 『SEU』 pppoe(』dsl-provider』) # OK def connectSEU(self, event): global lastStatus lastStatus = 『SEU』 pppoe(』seu』) # OK def connectNJXY(self, event): global preTime,lastStatus lastStatus = 『NJXY』 pppoe(』njxy』) preTime = datetime.datetime.now() # OK def pppoe(arg): start=os.popen(」gksu poff -a && gksu pon 「+arg) start.readline() start.close() # OK def on_press(self): global gIcon showNotify(update(gIcon)) return True # OK def about(self,event): about=」』About: Author: Xu Yuan Modify: PT Email: xuyuan.cn@gmail.com pt0079@gmail.com」』 showNotify(about) # OK def Init(parent=None): icon = gtk.status_icon_new_from_stock(」Running.png」) icon.connect(』popup-menu』, on_right_click) icon.set_tooltip(」control the PPPoE」) icon.connect(」activate」,on_press) icon.pppoe_status=」Running」 return icon # OK def update(icon): global lastStatus,curTime,preTime icon.pppoe_status = GetPPPoEStatus() if icon.pppoe_status!=』Stopped』: if lastStatus != 『SEU』: curTime = datetime.datetime.now() delTime = (curTime - preTime).seconds/60.0 info = 『連接正常』 + 『\n』 + 『已連接外網%f分鐘』%delTime info += 『已燒%f 元RMB』%(delTime*0.01) else: info = 『連接正常\n校園網==>免費!』 else: info = 『網路連接斷開』 #tooltip icon.set_tooltip(」東南大學 PPPoE\n」+info) #change the icon filename=icon.pppoe_status+」.png」 icon.set_from_file(filename) return info # OK def showNotify(info): # pop tip pynotify.init(」東南大學 PPPoE」) n=pynotify.Notification(」東南大學 PPPoE」,info) n.set_timeout(5000) n.show() return # OK def GetPPPoEStatus(): s=os.popen(」/sbin/ifconfig -a | grep ppp0″) r=s.readline() if r==」": result=」Stopped」 else: result=」Running」 s.close() return result if __name__ == 『__main__』: global lastStatus,gIcon,gTimer,preTime,curTime preTime = datetime.datetime.now() #在我的機器上默認的PPPoE連接是@seu的 lastStatus = 『SEU』 gIcon=Init() showNotify(update(gIcon)) gTimer=gobject.timeout_add(2000,update,gIcon) gtk.main() |
[火星人 ] ubuntu宿舍用,量產型撥號程序已經有433次圍觀