#!/usr/bin/python3 # very basic GUI for rsstube # TODO: some things that would be good... # - make it better in general # - probably rewrite rsstube interface so it can be called as a proper function # - support inputting multiple URLs # - support output as OPML # - copy to clipboard button import gi,subprocess,sys,pycurl gi.require_version('Gtk', '3.0') from gi.repository import Gtk class RsstubeGtk(Gtk.Window): def __init__(self): super(RsstubeGtk, self).__init__() self.set_title("rsstube-gtk") self.set_size_request(600,250) self.input_label = Gtk.Label() self.input_label.set_text("Enter URL") self.entry = Gtk.Entry() self.entry.set_width_chars(60) self.btn = Gtk.Button() self.btn.set_label("Get Feed") self.btn.connect("clicked",self.get_feed) self.output_label = Gtk.Label() self.output_label.set_text("") self.output_label.set_selectable(True) self.output_label.set_width_chars(60) fixed = Gtk.Fixed() fixed.put(self.input_label,25,25) fixed.put(self.entry,25,50) fixed.put(self.btn,25,100) fixed.put(self.output_label,25,150) self.add(fixed) self.show_all() self.connect("destroy", Gtk.main_quit) # runs rsstube def get_feed(self,widget): error_color = "#B3589A" url = self.entry.get_text() feed = str(subprocess.check_output([sys.executable, "scripts/rsstube.py", url])) feed = feed[:feed.rindex("\\n")] feed = feed[feed.rindex("\\n")+2:] # this color is used for error output if "\\x1b[1;31m[" in feed: errmsg = feed[feed.index(']')+2:] errmsg = errmsg[:errmsg.rindex("\\x1b[0m")] self.output_label.set_markup('' + errmsg + '') else: self.output_label.set_markup('' + feed + '') RsstubeGtk() Gtk.main()