import gobject
import gtk
import appindicator
import gtop
import math
import time
from multiprocessing import Process, Queue
import inspect

def getUptime():
	up = gtop.uptime().uptime
	days = math.floor(up/60/60/60);
	hours = math.floor((up-days*60*60*60)/60/60);
	minutes = math.floor((up-days*60*60*60-hours*60*60)/60);
	if (days>0):
		return "%02dd %02d:%02d" % (days, hours, minutes)
	else:
		return "%02d:%02d" % (hours, minutes)

def refresh(ind):
	ind.set_label(getUptime())
	ind.set_status(appindicator.STATUS_ATTENTION)
	ind.set_status(appindicator.STATUS_ACTIVE)

def autorefresh(ind):
	while 1:
		refresh(ind)
		time.sleep(1)

if __name__ == "__main__":
	ind = appindicator.Indicator ("uptime-indicator", "", appindicator.CATEGORY_APPLICATION_STATUS)
	# print(inspect.getmembers(ind))
	menu = gtk.Menu()
	ind.set_menu(menu)
	refresh(ind)
	q = Queue()
	p = Process(target=autorefresh, args=(ind,))
	p.start()
	gtk.main()

