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