2 |
|
|
3 |
import gobject |
import gobject |
4 |
import gtk |
import gtk |
5 |
import traceback |
import traceback |
|
|
|
6 |
import straw |
import straw |
7 |
from error import log |
from error import log |
8 |
|
from xml.sax import saxutils |
9 |
|
|
10 |
|
|
11 |
def set_busy_cursor(): |
def set_busy_cursor(): |
24 |
class SubscribeDialog: |
class SubscribeDialog: |
25 |
COLUMN_SUBSCRIBE = 0 |
COLUMN_SUBSCRIBE = 0 |
26 |
COLUMN_TITLE = 1 |
COLUMN_TITLE = 1 |
27 |
COLUMN_DESCRIPTION = 2 |
COLUMN_FEED = 2 |
28 |
COLUMN_FEED = 3 |
COLUMN_PARSEDSUMMARY = 3 |
29 |
COLUMN_PARSEDSUMMARY = 4 |
COLUMN_STATUS_FLAG = 4 |
30 |
COLUMN_STATUS_FLAG = 5 |
COLUMN_URL = 5 |
|
COLUMN_URL = 6 |
|
31 |
|
|
32 |
def __init__(self, xml): |
def __init__(self, xml): |
33 |
self._window = xml.get_widget("subscribe_dialog") |
self._window = xml.get_widget("subscribe_dialog") |
50 |
xml.signal_autoconnect(nameFuncMap) |
xml.signal_autoconnect(nameFuncMap) |
51 |
|
|
52 |
model = gtk.ListStore(gobject.TYPE_OBJECT, gobject.TYPE_STRING, |
model = gtk.ListStore(gobject.TYPE_OBJECT, gobject.TYPE_STRING, |
53 |
gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, |
gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT, |
54 |
gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN, |
gobject.TYPE_BOOLEAN, gobject.TYPE_STRING) |
|
gobject.TYPE_STRING) |
|
55 |
|
|
56 |
self._subscribe_multiple_match_view.set_model(model) |
self._subscribe_multiple_match_view.set_model(model) |
57 |
self.create_columns(self._subscribe_multiple_match_view) |
self.create_columns(self._subscribe_multiple_match_view) |
217 |
treeview.append_column(column) |
treeview.append_column(column) |
218 |
renderer.connect('toggled', self.sticky_toggled) |
renderer.connect('toggled', self.sticky_toggled) |
219 |
|
|
220 |
for cname, cnum in [(_('Title'), self.COLUMN_TITLE), |
cname= _('Title') |
221 |
(_('Description'), self.COLUMN_DESCRIPTION), |
cnum = self.COLUMN_TITLE |
222 |
(_('URL'), self.COLUMN_URL),]: |
renderer = gtk.CellRendererText() |
223 |
renderer = gtk.CellRendererText() |
column = gtk.TreeViewColumn(cname, renderer, markup = cnum) |
224 |
column = gtk.TreeViewColumn(cname, renderer, text = cnum) |
treeview.append_column(column) |
|
treeview.append_column(column) |
|
225 |
|
|
226 |
def sticky_toggled(self, cell, path): |
def sticky_toggled(self, cell, path): |
227 |
model = self._subscribe_multiple_match_view.get_model() |
model = self._subscribe_multiple_match_view.get_model() |
258 |
model.clear() |
model.clear() |
259 |
for feed, ps in self._found_feeds: |
for feed, ps in self._found_feeds: |
260 |
iter = model.append() |
iter = model.append() |
261 |
model.set(iter, self.COLUMN_TITLE, feed.title, |
escaped_text = "<b>%s</b>\n%s" % (saxutils.escape(feed.title), saxutils.escape(feed.channel_description)) |
262 |
self.COLUMN_DESCRIPTION, feed.channel_description, |
escaped_text = "%s\n%s" % (escaped_text.strip(), saxutils.escape(feed.access_info[0])) |
263 |
|
model.set(iter, self.COLUMN_TITLE, escaped_text, |
264 |
self.COLUMN_FEED, feed, self.COLUMN_PARSEDSUMMARY, ps, |
self.COLUMN_FEED, feed, self.COLUMN_PARSEDSUMMARY, ps, |
265 |
self.COLUMN_STATUS_FLAG, feed.id in self._feeds, |
self.COLUMN_STATUS_FLAG, feed.id in self._feeds, |
266 |
self.COLUMN_URL, feed.access_info[0]) |
self.COLUMN_URL, feed.access_info[0]) |
293 |
for url, data in found: |
for url, data in found: |
294 |
feed = straw.create_new_feed("temporary feed", url) |
feed = straw.create_new_feed("temporary feed", url) |
295 |
ps = self.parse_feed(data, feed) |
ps = self.parse_feed(data, feed) |
296 |
feed.title = straw.utils.convert_entities(ps.title) |
feed.title = straw.utils.convert_entities(ps.title).strip() |
297 |
feed.channel_description = straw.utils.convert_entities(ps.description) |
feed.channel_description = straw.utils.convert_entities(ps.description).strip() |
298 |
feeds.append((feed, ps)) |
feeds.append((feed, ps)) |
299 |
return feeds |
return feeds |
300 |
except Exception, e: |
except Exception, e: |