response = dialog.run()
dialog.hide()
if response == gtk.RESPONSE_OK:
- filename = dialog.get_filename()
- print filename
- try:
+ filename = dialog.get_filename()
+ print filename
+ #try:
cont = True
if isfile(filename):
file.write(self.getOpmlText(listing))
file.close()
note = "Feeds exported to %s" %filename
- except:
+ #except:
note = "Failed to export feeds"
- dialog.destroy()
- dialog = hildon.Note ("information", parent, note , gtk.STOCK_DIALOG_INFO )
- dialog.run()
- dialog.destroy()
+ #dialog.destroy()
+ #dialog = hildon.Note ("information", parent, note , gtk.STOCK_DIALOG_INFO )
+ #dialog.run()
+ #dialog.destroy()
elif response == gtk.RESPONSE_CANCEL:
dialog.destroy()
title = listing.getFeedTitle(key)
url = listing.getFeedUrl(key)
if not title == "Archived Articles":
- opml_text += """\n\t\t<outline type="rss" text="%s" title="%s" xmlUrl="%s"/>""" % (title, title, url)
+ opml_text += """\n\t\t<outline type="rss" text="%s" title="%s" xmlUrl="%s"/>""" % (self.sanitize(title), self.sanitize(title), self.sanitize(url))
opml_text += """\n</body>\n</opml>\n"""
return opml_text
+
+ def sanitize(self, text):
+ from cgi import escape
+ return escape(text).encode('ascii', 'xmlcharrefreplace')
+
class GetOpmlData():
return []
def downloadFile(self):
- dlg = gtk.Dialog("OPML Import", self.parent, gtk.DIALOG_DESTROY_WITH_PARENT,
- (gtk.STOCK_OK, gtk.RESPONSE_OK,
+ dlg = gtk.Dialog("Import OPML from web", self.parent, gtk.DIALOG_DESTROY_WITH_PARENT,
+ ('Import', gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
- lbl = gtk.Label("Enter the URL of the OPML file:")
- lbl.show()
- dlg.vbox.pack_start(lbl)
- entry = gtk.Entry()
+ hb = gtk.HBox(False, 5)
+ hb.pack_start(gtk.Label('URL:'), expand=False)
+ entry = hildon.Entry(0)
entry.set_text("http://")
- entry.select_region(0,-1)
- entry.show()
- dlg.vbox.pack_start(entry, False)
+ entry.select_region(-1, -1)
+ hb.pack_start(entry, expand=True)
+ hb.show_all()
+ dlg.vbox.pack_start(hb, False)
resp = dlg.run()
url = entry.get_text()