63 |
|
|
64 |
straw.main_window = straw.MainWindow( |
straw.main_window = straw.MainWindow( |
65 |
glade.XML(xmlfile, "straw_main", gettext.textdomain())) |
glade.XML(xmlfile, "straw_main", gettext.textdomain())) |
66 |
self.update_feeds(config.feeds) |
feedlist = straw.FeedList.get_instance() |
67 |
config.signal_connect( |
feedlist.load_data() |
68 |
|
self.update_feeds(feedlist) |
69 |
|
feedlist.signal_connect( |
70 |
straw.FeedsChangedSignal, self.feeds_changed) |
straw.FeedsChangedSignal, self.feeds_changed) |
71 |
self._itemstore = straw.ItemStore() |
self._itemstore = straw.ItemStore() |
72 |
self.restore_feeds(self._itemstore) |
self.restore_feeds(self._itemstore) |
102 |
locale.setlocale(locale.LC_ALL) |
locale.setlocale(locale.LC_ALL) |
103 |
|
|
104 |
def restore_feeds(self, itemstore): |
def restore_feeds(self, itemstore): |
105 |
for f in straw.Config.get_instance().feeds: |
feedlist = straw.FeedList.get_instance() |
106 |
|
for f in feedlist: |
107 |
f.restore_items(itemstore.read_feed_items(f)) |
f.restore_items(itemstore.read_feed_items(f)) |
108 |
|
|
109 |
# called when FeedsChangedSignal is sent |
# called when FeedsChangedSignal is sent |
110 |
def feeds_changed(self, signal): |
def feeds_changed(self, signal): |
111 |
self.update_feeds(signal.sender.feeds) |
self.update_feeds(signal.sender) |
112 |
return |
return |
113 |
|
|
114 |
def update_feeds(self, feeds): |
def update_feeds(self, feeds): |
115 |
straw.main_window.display_feeds(straw.Config.get_instance().feeds, self._visible_feed) |
straw.main_window.display_feeds(straw.FeedList.get_instance(), self._visible_feed) |
116 |
return |
return |
117 |
|
|
118 |
def display_feeds(self): |
def display_feeds(self): |
119 |
straw.main_window.display_feeds(straw.Config.get_instance().feeds, self._visible_feed) |
straw.main_window.display_feeds(straw.FeedList.get_instance(), self._visible_feed) |
120 |
return |
return |
121 |
|
|
122 |
def get_visible_feed(self): |
def get_visible_feed(self): |
155 |
straw.dashboardfe.item_changed(item) |
straw.dashboardfe.item_changed(item) |
156 |
|
|
157 |
def get_next_item(self, item = None): |
def get_next_item(self, item = None): |
158 |
config = straw.Config.get_instance() |
feeds = straw.FeedList.get_instance() |
159 |
if item is None: |
if item is None: |
160 |
item = self._visible_item |
item = self._visible_item |
161 |
if item is None: |
if item is None: |
162 |
if not len(config.feeds): |
if not len(feeds): |
163 |
return None |
return None |
164 |
feed = config.feeds[0] |
feed = feeds[0] |
165 |
return feed.get_first_item() |
return feed.get_first_item() |
166 |
feed = item.feed |
feed = item.feed |
167 |
ni = feed.get_next_item(item) |
ni = feed.get_next_item(item) |
168 |
if ni is not None: |
if ni is not None: |
169 |
return ni |
return ni |
170 |
else: |
else: |
171 |
feed_idx = config.feeds.index(feed) |
feed_idx = feeds.index(feed) |
172 |
fi = 1 |
fi = 1 |
173 |
while fi <= len(config.feeds): |
while fi <= len(feeds): |
174 |
item = config.feeds[ |
item = feeds[ |
175 |
(feed_idx + fi) % len(config.feeds)].get_first_item() |
(feed_idx + fi) % len(feeds)].get_first_item() |
176 |
if item is not None: |
if item is not None: |
177 |
return item |
return item |
178 |
fi += 1 |
fi += 1 |
203 |
self.display_item_unselected(item) |
self.display_item_unselected(item) |
204 |
|
|
205 |
def get_previous_item(self, item = None): |
def get_previous_item(self, item = None): |
206 |
config = straw.Config.get_instance() |
feeds = straw.FeedList.get_instance() |
207 |
if item is None: |
if item is None: |
208 |
item = self._visible_item |
item = self._visible_item |
209 |
if item is None: |
if item is None: |
210 |
if not len(config.feeds): |
if not len(feeds): |
211 |
return None |
return None |
212 |
feed = config.feeds[-1] |
feed = feeds[-1] |
213 |
return feed.get_last_item() |
return feed.get_last_item() |
214 |
feed = item.feed |
feed = item.feed |
215 |
ni = feed.get_previous_item(item) |
ni = feed.get_previous_item(item) |
216 |
if ni is not None: |
if ni is not None: |
217 |
return ni |
return ni |
218 |
else: |
else: |
219 |
feed_idx = config.feeds.index(feed) |
feed_idx = feeds.index(feed) |
220 |
fd = 1 |
fd = 1 |
221 |
while fd <= len(config.feeds): |
while fd <= len(feeds): |
222 |
item = config.feeds[ |
item = feeds[ |
223 |
(feed_idx - fd) % len(config.feeds)].get_last_item() |
(feed_idx - fd) % len(feeds)].get_last_item() |
224 |
if item is not None: |
if item is not None: |
225 |
return item |
return item |
226 |
fd += 1 |
fd += 1 |
230 |
self.display_item_unselected(self.get_previous_item(item)) |
self.display_item_unselected(self.get_previous_item(item)) |
231 |
|
|
232 |
def get_next_feed(self, item = None): |
def get_next_feed(self, item = None): |
233 |
config = straw.Config.get_instance() |
feeds = straw.FeedList.get_instance() |
234 |
feed = None |
feed = None |
235 |
if item is None: |
if item is None: |
236 |
item = self._visible_item |
item = self._visible_item |
237 |
if item is None: |
if item is None: |
238 |
if len(config.feeds): |
if len(feeds): |
239 |
feed = config.feeds[0] |
feed = feeds[0] |
240 |
else: |
else: |
241 |
feed = item.feed |
feed = item.feed |
242 |
feed_idx = config.feeds.index(feed) |
feed_idx = feeds.index(feed) |
243 |
if feed_idx < len(config.feeds) - 1: |
if feed_idx < len(feeds) - 1: |
244 |
feed_idx += 1 |
feed_idx += 1 |
245 |
else: |
else: |
246 |
feed_idx = 0 |
feed_idx = 0 |
247 |
feed = config.feeds[feed_idx] |
feed = feeds[feed_idx] |
248 |
return feed |
return feed |
249 |
|
|
250 |
def display_next_unread_feed(self, item = None): |
def display_next_unread_feed(self, item = None): |
262 |
self.display_item_unselected(item) |
self.display_item_unselected(item) |
263 |
|
|
264 |
def get_previous_feed(self, item = None): |
def get_previous_feed(self, item = None): |
265 |
config = straw.Config.get_instance() |
feeds = straw.FeedList.get_instance() |
266 |
feed = None |
feed = None |
267 |
if item is None: |
if item is None: |
268 |
item = self._visible_item |
item = self._visible_item |
269 |
if item is None: |
if item is None: |
270 |
if len(config.feeds): |
if len(feeds): |
271 |
feed = config.feeds[0] |
feed = feeds[0] |
272 |
else: |
else: |
273 |
feed = item.feed |
feed = item.feed |
274 |
feed_idx = config.feeds.index(feed) |
feed_idx = feeds.index(feed) |
275 |
if feed_idx > 0: |
if feed_idx > 0: |
276 |
feed_idx -= 1 |
feed_idx -= 1 |
277 |
else: |
else: |
278 |
feed_idx = len(config.feeds) - 1 |
feed_idx = len(feeds) - 1 |
279 |
feed = config.feeds[feed_idx] |
feed = feeds[feed_idx] |
280 |
return feed |
return feed |
281 |
|
|
282 |
def display_previous_feed(self, item = None): |
def display_previous_feed(self, item = None): |
334 |
def import_opml(self, filename): |
def import_opml(self, filename): |
335 |
opml = straw.OPMLImport.read(open(filename)) |
opml = straw.OPMLImport.read(open(filename)) |
336 |
if opml is not None: |
if opml is not None: |
337 |
config = straw.Config.get_instance() |
feeds = straw.FeedList.get_instance() |
338 |
current_feeds = {} |
current_feeds = {} |
339 |
for feed in config.feeds: |
for feed in feeds: |
340 |
current_feeds[feed.access_info[0]] = 1 |
current_feeds[feed.access_info[0]] = 1 |
341 |
for b in opml: |
for b in opml: |
342 |
if current_feeds.has_key(b.xmlurl): |
if current_feeds.has_key(b.xmlurl): |
343 |
continue |
continue |
344 |
if b.type == "rss": |
if b.type == "rss": |
345 |
config.feeds.append( |
feeds.append( |
346 |
straw.create_new_feed(b.title, b.xmlurl)) |
straw.create_new_feed(b.title, b.xmlurl)) |
347 |
else: |
else: |
348 |
error = 1 |
error = 1 |