diff --git a/rsstube-gtk.py b/rsstube-gtk.py new file mode 100755 index 0000000..c3e73e7 --- /dev/null +++ b/rsstube-gtk.py @@ -0,0 +1,64 @@ +#!/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()