| 50 |
50 |
| 51 class RssTree(gnt.Tree): |
51 class RssTree(gnt.Tree): |
| 52 __gsignals__ = { |
52 __gsignals__ = { |
| 53 'active_changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_OBJECT,)) |
53 'active_changed' : (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_OBJECT,)) |
| 54 } |
54 } |
| |
55 |
| |
56 __gntbindings__ = { |
| |
57 'jump-next-unread' : ('jump_next_unread', 'J') |
| |
58 } |
| |
59 |
| |
60 def jump_next_unread(self, null): |
| |
61 first = None |
| |
62 next = None |
| |
63 all = self.get_rows() |
| |
64 for item in all: |
| |
65 if item.unread: |
| |
66 if next: |
| |
67 first = item |
| |
68 break |
| |
69 elif not first and self.active != item: |
| |
70 first = item |
| |
71 if self.active == item: |
| |
72 next = item |
| |
73 if first: |
| |
74 self.set_active(first) |
| |
75 self.set_selected(first) |
| 55 |
76 |
| 56 def __init__(self): |
77 def __init__(self): |
| 57 self.active = None |
78 self.active = None |
| 58 gnt.Tree.__init__(self) |
79 gnt.Tree.__init__(self) |
| 59 gnt.set_flag(self, 8) # remove borders |
80 gnt.set_flag(self, 8) # remove borders |
| 81 self.set_active(now) |
102 self.set_active(now) |
| 82 return True |
103 return True |
| 83 return False |
104 return False |
| 84 |
105 |
| 85 gobject.type_register(RssTree) |
106 gobject.type_register(RssTree) |
| |
107 gnt.register_bindings(RssTree) |
| 86 |
108 |
| 87 win = gnt.Box(homo = False, vert = True) |
109 win = gnt.Box(homo = False, vert = True) |
| 88 win.set_toplevel(True) |
110 win.set_toplevel(True) |
| 89 win.set_title("GntRss") |
111 win.set_title("GntRss") |
| 90 win.set_pad(0) |
112 win.set_pad(0) |
| 245 details.append_text_with_flags(str(item.title) + "\n", gnt.TEXT_FLAG_BOLD) |
267 details.append_text_with_flags(str(item.title) + "\n", gnt.TEXT_FLAG_BOLD) |
| 246 details.append_text_with_flags("Link: ", gnt.TEXT_FLAG_BOLD) |
268 details.append_text_with_flags("Link: ", gnt.TEXT_FLAG_BOLD) |
| 247 details.append_text_with_flags(str(item.link) + "\n", gnt.TEXT_FLAG_UNDERLINE) |
269 details.append_text_with_flags(str(item.link) + "\n", gnt.TEXT_FLAG_UNDERLINE) |
| 248 details.append_text_with_flags("Date: ", gnt.TEXT_FLAG_BOLD) |
270 details.append_text_with_flags("Date: ", gnt.TEXT_FLAG_BOLD) |
| 249 details.append_text_with_flags(str(item.date) + "\n", gnt.TEXT_FLAG_NORMAL) |
271 details.append_text_with_flags(str(item.date) + "\n", gnt.TEXT_FLAG_NORMAL) |
| |
272 details.append_text_with_flags("\n", gnt.TEXT_FLAG_NORMAL) |
| 250 parser = gnthtml.GParser(details) |
273 parser = gnthtml.GParser(details) |
| 251 parser.parse(str(item.summary)) |
274 parser.parse(str(item.summary)) |
| 252 item.mark_unread(False) |
275 item.mark_unread(False) |
| 253 |
276 |
| 254 if old and old.unread: # If the last selected item is marked 'unread', then make sure it's bold |
277 if old and old.unread: # If the last selected item is marked 'unread', then make sure it's bold |
| 346 win.add_widget(box) |
369 win.add_widget(box) |
| 347 win.show() |
370 win.show() |
| 348 |
371 |
| 349 def update_feed_title(feed, property): |
372 def update_feed_title(feed, property): |
| 350 if property.name == 'title': |
373 if property.name == 'title': |
| 351 feeds.change_text(feed, 0, feed.title) |
374 if feed.customtitle: |
| |
375 title = feed.customtitle |
| |
376 else: |
| |
377 title = feed.title |
| |
378 feeds.change_text(feed, 0, title) |
| 352 elif property.name == 'unread': |
379 elif property.name == 'unread': |
| 353 feeds.change_text(feed, 1, str(feed.unread) + "(" + str(len(feed.items)) + ")") |
380 feeds.change_text(feed, 1, str(feed.unread) + "(" + str(len(feed.items)) + ")") |
| 354 flag = 0 |
381 flag = 0 |
| 355 if feeds.active == feed: |
382 if feeds.active == feed: |
| 356 flag = gnt.TEXT_FLAG_UNDERLINE |
383 flag = gnt.TEXT_FLAG_UNDERLINE |
| 360 feeds.set_row_flags(feed, flag) |
387 feeds.set_row_flags(feed, flag) |
| 361 |
388 |
| 362 # populate everything |
389 # populate everything |
| 363 for feed in gntrss.feeds: |
390 for feed in gntrss.feeds: |
| 364 feed.refresh() |
391 feed.refresh() |
| |
392 feed.set_auto_refresh(True) |
| 365 add_feed(feed) |
393 add_feed(feed) |
| 366 |
394 |
| 367 gnt.gnt_register_action("Stuff", add_new_feed) |
395 gnt.gnt_register_action("Stuff", add_new_feed) |
| 368 gnt.gnt_main() |
396 gnt.gnt_main() |
| 369 |
397 |