歡迎您光臨本站 註冊首頁

ubuntu宿舍用,量產型撥號程序

←手機掃碼閱讀     火星人 @ 2014-03-26 , reply:0

之前Linux版兩牛人寫了bras的撥號托盤程序,仰仗ing

然後就手癢改寫了xuyuan牛人的程序,改成宿舍寬頻使用

change notes:
1.將普通的菜單改成代STOCK ICON的菜單

2.記錄連接外網的時間,計算出本次上外網的花費[按6毛錢每小時算]

3.方便的選擇內外網切換

學到的東西:
1.如何更該一個帶STOCK ICON的ImageMenuItem的標籤

2.用datetime module測算出經過的時間
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宿舍用,量產型撥號程序已經有431次圍觀

http://coctec.com/docs/linux/show-post-179939.html