Mercurial > pidgin
comparison finch/libgnt/pygnt/example/rss/gntrss-ui.py @ 18732:a03c8b79f39b
Use __gntbindings__ to specify a 'jump-next-unread' action bound to 'J'. This
works some times. But sometimes it also causes crash :(
author | Sadrul Habib Chowdhury <imadil@gmail.com> |
---|---|
date | Tue, 31 Jul 2007 12:06:02 +0000 |
parents | 778f4fc8cbcc |
children | 2e41a68009ba |
comparison
equal
deleted
inserted
replaced
18731:6976a6dae441 | 18732:a03c8b79f39b |
---|---|
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 |