hackertray/__main__.py

67 lines
1.6 KiB
Python

#!/usr/bin/python
import pygtk
pygtk.require('2.0')
import gtk
import appindicator
import requests
import webbrowser
class HackerNewsApp:
def __init__(self):
self.ind = appindicator.Indicator ("Hacker Tray", "hacker-tray", appindicator.CATEGORY_APPLICATION_STATUS)
self.ind.set_status (appindicator.STATUS_ACTIVE)
self.ind.set_label("Y")
# create a menu
self.menu = gtk.Menu()
# create items for the menu - labels, checkboxes, radio buttons and images are supported:
btnRefresh = gtk.MenuItem("Refresh This")
btnRefresh.show()
btnRefresh.connect("activate", self.refresh)
self.menu.append(btnRefresh)
btnQuit = gtk.MenuItem("Quit")
btnQuit.show()
btnQuit.connect("activate", self.quit)
self.menu.append(btnQuit)
self.menu.show()
self.ind.set_menu(self.menu)
self.refresh()
def quit(self, widget, data=None):
gtk.main_quit()
def open(self, widget, data=None):
webbrowser.open(widget.url)
def addItem(self, item):
i = gtk.CheckMenuItem("("+str(item['points']).zfill(3)+"/"+str(item['comments_count']).zfill(3)+") "+item['title'])
i.url = item['url']
i.connect('activate', self.open)
self.menu.prepend(i)
i.show()
def refresh(self, widget=None, data=None):
self.data = reversed(getHomePage()[0:15]);
for i in self.menu.get_children():
if(i.__class__.__name__=="CheckMenuItem"):
self.menu.remove(i)
for i in self.data:
self.addItem(i)
def getHomePage():
r = requests.get('https://node-hnapi.herokuapp.com/news')
return r.json()
def main():
gtk.main()
return 0
if __name__ == "__main__":
indicator = HackerNewsApp()
main()