40 |
def __init__(self, item_view_container): |
def __init__(self, item_view_container): |
41 |
widget_tree = glade.get_widget_tree(item_view_container) |
widget_tree = glade.get_widget_tree(item_view_container) |
42 |
|
|
43 |
self._source_display_frame = widget_tree.get_widget( |
self._source_item_hbox = widget_tree.get_widget('item_source_hbox') |
44 |
'source_display_frame') |
self._source_subs_hbox = widget_tree.get_widget('item_subscribe_hbox') |
45 |
self._source_name_label = widget_tree.get_widget('source_name_label') |
self._source_subscribe_button = widget_tree.get_widget('source_subscribe_button') |
46 |
self._source_url_label = widget_tree.get_widget('source_url_label') |
self._source_url = gnome.ui.HRef(url='', text='') |
47 |
|
self._source_item_hbox.pack_start(self._source_url, expand=gtk.FALSE, fill=gtk.TRUE) |
48 |
widget_tree.signal_connect('on_source_subscribe_button_clicked', |
widget_tree.signal_connect('on_source_subscribe_button_clicked', |
49 |
self.on_source_subscribe_button_clicked) |
self.on_source_subscribe_button_clicked) |
50 |
|
|
90 |
stream.write(image.get_data()) |
stream.write(image.get_data()) |
91 |
except Exception, ex: |
except Exception, ex: |
92 |
log(ex) |
log(ex) |
|
#raise |
|
93 |
|
|
94 |
stream.close() |
stream.close() |
95 |
return |
return |
119 |
self.htmlify_item(item) + |
self.htmlify_item(item) + |
120 |
"</body></html>") |
"</body></html>") |
121 |
html = html.encode('utf-8') |
html = html.encode('utf-8') |
122 |
self._document.write_stream(html) |
self._document.write_stream(html) |
123 |
self._document.close_stream() |
self._document.close_stream() |
124 |
va = self._scrolled_window.get_vadjustment() |
va = self._scrolled_window.get_vadjustment() |
125 |
va.set_value(va.lower) |
va.set_value(va.lower) |
126 |
if item.source is not None: |
if item.source is not None: |
127 |
self._source_name_label.set_text(item.source['text']) |
self._source_url.set_text(item.source['url']) |
128 |
self._source_url_label.set_text(item.source['url']) |
self._source_url.set_url(item.source['url']) |
129 |
self._source_display_frame.show() |
self._source_url.show() |
130 |
|
self._source_item_hbox.show() |
131 |
|
self._source_subs_hbox.show() |
132 |
else: |
else: |
133 |
self._source_display_frame.hide() |
self._source_item_hbox.hide() |
134 |
|
self._source_subs_hbox.hide() |
135 |
self._item = item |
self._item = item |
136 |
return |
return |
137 |
|
|
141 |
self._document.write_stream(self.htmlify_empty_feed(feed)) |
self._document.write_stream(self.htmlify_empty_feed(feed)) |
142 |
self._document.close_stream() |
self._document.close_stream() |
143 |
self._item = None |
self._item = None |
144 |
self._source_display_frame.hide() |
self._source_item_hbox.hide() |
145 |
|
self._source_subs_hbox.hide() |
146 |
return |
return |
147 |
|
|
148 |
def htmlify_empty_feed(self, feed): |
def htmlify_empty_feed(self, feed): |
224 |
|
|
225 |
self.create_item_selection_columns(self._widget) |
self.create_item_selection_columns(self._widget) |
226 |
|
|
|
#model.set_sort_column_id(5, straw.config.item_order) |
|
227 |
widget.get_selection().connect("changed", self.item_selection_changed) |
widget.get_selection().connect("changed", self.item_selection_changed) |
228 |
|
|
229 |
self._feed = None |
self._feed = None |
244 |
weight=self.COLUMN_BOLD) |
weight=self.COLUMN_BOLD) |
245 |
column.set_resizable(gtk.TRUE) |
column.set_resizable(gtk.TRUE) |
246 |
column.set_reorderable(gtk.TRUE) |
column.set_reorderable(gtk.TRUE) |
|
#column.set_sort_column_id(0) |
|
|
#column.set_sort_order('ascending') |
|
|
#column.set_sort_indicator(gtk.TRUE) |
|
|
#column.clicked() |
|
247 |
item_list_view.append_column(column) |
item_list_view.append_column(column) |
248 |
|
|
249 |
return |
return |
407 |
# set toolbar tooltips |
# set toolbar tooltips |
408 |
widget_tree = glade.get_widget_tree(widget) |
widget_tree = glade.get_widget_tree(widget) |
409 |
self._widget = widget |
self._widget = widget |
|
self._back = widget_tree.get_widget('toolbar_back_button') |
|
410 |
self._forward = widget_tree.get_widget('toolbar_forward_button') |
self._forward = widget_tree.get_widget('toolbar_forward_button') |
411 |
self._poll = widget_tree.get_widget('toolbar_poll_button') |
self._poll = widget_tree.get_widget('toolbar_poll_button') |
412 |
self._new = widget_tree.get_widget('toolbar_new_feed_button') |
self._new = widget_tree.get_widget('toolbar_new_feed_button') |
417 |
poll = _("Get news items") |
poll = _("Get news items") |
418 |
next = _("Go to next unread feed or item") |
next = _("Go to next unread feed or item") |
419 |
new = _("Subscribe to a new feed") |
new = _("Subscribe to a new feed") |
|
back = _("Go back to the next feed or item") |
|
420 |
find = _("Find a word or a phrase on feeds") |
find = _("Find a word or a phrase on feeds") |
421 |
|
|
|
self._tooltips.set_tip(self._back, back, back) |
|
422 |
self._tooltips.set_tip(self._forward, next, next) |
self._tooltips.set_tip(self._forward, next, next) |
423 |
self._tooltips.set_tip(self._poll, poll, poll) |
self._tooltips.set_tip(self._poll, poll, poll) |
424 |
self._tooltips.set_tip(self._new, new, new) |
self._tooltips.set_tip(self._new, new, new) |
650 |
if not self._item_view.scroll_down(): |
if not self._item_view.scroll_down(): |
651 |
straw.main.display_next_unread_item() |
straw.main.display_next_unread_item() |
652 |
|
|
|
def on_toolbar_back_button_clicked(self, button, *args): |
|
|
# FIXME: item or feed? |
|
|
straw.main.display_previous_item() |
|
|
|
|
653 |
def on_menu_about_activate(self, menuitem, *args): |
def on_menu_about_activate(self, menuitem, *args): |
654 |
whatis = "Straw is a desktop news aggregator for GNOME" |
description = "Straw is a desktop news aggregator for GNOME" |
655 |
gnome.ui.About( |
gnome.ui.About( |
656 |
straw.APPNAME, straw.VERSION, "Copyright (c) 2002-2003 Juri Pakaste", whatis, |
straw.APPNAME, straw.VERSION, "Copyright (c) 2002-2003 Juri Pakaste", description, |
657 |
["Juri Pakaste <juri@iki.fi>", |
["Juri Pakaste <juri@iki.fi>", |
658 |
"Jan Alonzo <jmalonzo@unpluggable.com>", |
"Jan Alonzo <jmalonzo@unpluggable.com>", |
659 |
"rssparser.py and rssfinder.py by Mark Pilgrim", |
"Scott Douglas-Watson <sdouglaswatson@yahoo.co.uk>", |
660 |
|
"feedparser.py and rssfinder.py by Mark Pilgrim", |
661 |
"Icons by Jakub 'jimmac' Steiner and Juri Pakaste"], |
"Icons by Jakub 'jimmac' Steiner and Juri Pakaste"], |
662 |
[], |
[], |
663 |
"Juri Pakaste <juri@iki.fi>\n" |
"Juri Pakaste <juri@iki.fi>\n" |
810 |
|
|
811 |
def number_of_new(self, feed): |
def number_of_new(self, feed): |
812 |
nu = feed.number_of_unread |
nu = feed.number_of_unread |
813 |
return ("%s/%s" % (nu, feed.number_of_items), nu) |
if nu != 0: |
814 |
|
return ("(%s)" % nu, nu) |
815 |
|
else: |
816 |
|
return (" ", nu) |
817 |
|
#return ("%s/%s" % (nu, feed.number_of_items), nu) |
818 |
|
|
819 |
def _select_feed_status_icon(self, feed): |
def _select_feed_status_icon(self, feed): |
820 |
if feed.process_status is not straw.Feed.STATUS_IDLE: |
if feed.process_status is not straw.Feed.STATUS_IDLE: |
845 |
feed.signal_disconnect( |
feed.signal_disconnect( |
846 |
straw.FeedStatusChangedSignal, self.feed_updated) |
straw.FeedStatusChangedSignal, self.feed_updated) |
847 |
except KeyError: |
except KeyError: |
848 |
pass |
log("Key error in display_feeds in MainWindow") |
849 |
feed.signal_connect(straw.ItemReadSignal, self.item_read, fc) |
feed.signal_connect(straw.ItemReadSignal, self.item_read, fc) |
850 |
feed.signal_connect(straw.AllItemsReadSignal, |
feed.signal_connect(straw.AllItemsReadSignal, |
851 |
self.all_items_read, fc) |
self.all_items_read, fc) |
971 |
# self.update_total_unread_indicator() |
# self.update_total_unread_indicator() |
972 |
|
|
973 |
def create_feed_selection_columns(self, feed_list_view): |
def create_feed_selection_columns(self, feed_list_view): |
974 |
renderer = gtk.CellRendererPixbuf() |
column = gtk.TreeViewColumn() |
975 |
column = gtk.TreeViewColumn('Status', renderer, |
column.set_title("_Subscriptions") |
976 |
stock_id=self.COLUMN_STATUS_PIXBUF, |
|
977 |
visible=self.COLUMN_STATUS_FLAG) |
status_renderer = gtk.CellRendererPixbuf() |
978 |
feed_list_view.append_column(column) |
column.pack_start(status_renderer, gtk.FALSE) |
979 |
renderer = gtk.CellRendererText() |
column.add_attribute(status_renderer, "stock_id", self.COLUMN_STATUS_PIXBUF) |
980 |
column = gtk.TreeViewColumn('Title', renderer, text=self.COLUMN_NAME, |
column.add_attribute(status_renderer, "visible", self.COLUMN_STATUS_FLAG) |
981 |
weight=self.COLUMN_BOLD) |
|
982 |
feed_list_view.append_column(column) |
title_renderer = gtk.CellRendererText() |
983 |
renderer = gtk.CellRendererText() |
column.pack_start(title_renderer, gtk.TRUE) |
984 |
column = gtk.TreeViewColumn('New', renderer, text=self.COLUMN_UNREAD, |
column.add_attribute(title_renderer, "text", self.COLUMN_NAME) |
985 |
weight=self.COLUMN_BOLD) |
column.add_attribute(title_renderer, "weight", self.COLUMN_BOLD) |
986 |
|
|
987 |
|
unread_renderer = gtk.CellRendererText() |
988 |
|
column.pack_end(unread_renderer, gtk.TRUE) |
989 |
|
column.add_attribute(unread_renderer, "text", self.COLUMN_UNREAD) |
990 |
|
column.add_attribute(unread_renderer, "weight", self.COLUMN_BOLD) |
991 |
|
|
992 |
feed_list_view.append_column(column) |
feed_list_view.append_column(column) |
993 |
|
|
994 |
|
|