Add very basic GUI.
This commit is contained in:
parent
cfe3ef63a0
commit
3dde349ea9
|
@ -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('<span foreground="' + error_color + '">' + errmsg + '</span>')
|
||||||
|
else:
|
||||||
|
self.output_label.set_markup('<a href="' + feed + '">' + feed + '</a>')
|
||||||
|
|
||||||
|
RsstubeGtk()
|
||||||
|
Gtk.main()
|
Loading…
Reference in New Issue