# -*- coding: utf-8 -*- import gtk import webkit from xml.dom import minidom import urllib class RSSFeeder: # Attributes _title = "RSS Feeder" _label_text = "HELLO News" _window = None _toolbar = None _statusbar = None _mainbox = None _label = None _news_button = None _planet_button = None _cool_button = None _fun_button = None _like_button = None _updates_button = None _exit_button = None _feedview = None _feedbox = None _feedview_scroller = None _statusbar_progressbar = None _feedliststore = None _feedtreeview = None _feedcellrenderer = None _feedcelltreeviewcolumn = None _currentbutton = None _currentItems = None # Constants _greenColor = '#00E500' _defaultColor = "#EFEFEF" _redColor = '#FF0000' _feeds_limit = 20 def getFeedURL(self): if self._currentbutton == "news": return "http://www.eltiempo.com/colombia/rss.xml" elif self._currentbutton == "planet": return "http://www.eltiempo.com/deportes/rss.xml" elif self._currentbutton == "cool": return "http://www.eltiempo.com/tecnologia/rss.xml" return "http://www.eltiempo.com/mundo/rss.xml" def exit_button_clicked(self,btn): """ Callback for exit button click """ self.exitApplication() def selectButton(self): self._news_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._defaultColor)) self._planet_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._defaultColor)) self._fun_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._defaultColor)) self._cool_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._defaultColor)) if self._currentbutton == "news": self._news_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._greenColor)) elif self._currentbutton == "planet": self._planet_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._greenColor)) elif self._currentbutton == "cool": self._cool_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._greenColor)) elif self._currentbutton == "fun": self._fun_button.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(self._greenColor)) def news_button_clicked(self,btn): """ Callback for news button click """ if self._currentbutton == "news": self.clearCurrentFeeds() else: self._currentbutton = "news" self.selectButton() url = self.getFeedURL() self.load_rss_items(url) def planet_button_clicked(self,btn): """ Callback for planet button click """ if self._currentbutton == "planet": self.clearCurrentFeeds() else: self._currentbutton = "planet" self.selectButton() url = self.getFeedURL() self.load_rss_items(url) def cool_button_clicked(self,btn): """ Callback for cool button click """ if self._currentbutton == "cool": self.clearCurrentFeeds() else: self._currentbutton = "cool" self.selectButton() url = self.getFeedURL() self.load_rss_items(url) def fun_button_clicked(self,btn): """ Callback for fun button click """ if self._currentbutton == "fun": self.clearCurrentFeeds() else: self._currentbutton = "fun" self.selectButton() url = self.getFeedURL() self.load_rss_items(url) def updates_button_clicked(self,btn): """ Callback for updates button click """ if self._currentbutton is not None: url = self.getFeedURL() self.load_rss_items(url) def clearCurrentFeeds(self): self._feedliststore.clear() self._currentbutton = None self._currentItems = None self.selectButton() self._feedview.load_html_string('','') def load_rss_items(self,url): """ Get the RSS items """ connection = urllib.urlopen(url) feed = minidom.parse(connection) connection.close() items = feed.getElementsByTagName('item')[0:self._feeds_limit] self._feedliststore.clear() self._feedview.load_html_string('','') self._currentItems = items for item in items: self._feedliststore.append([item.childNodes[1].childNodes[0].data]) def load_rss_item(self,itemTitle): """ Get the RSS items """ if self._currentItems is not None: for item in self._currentItems: title = item.childNodes[1].childNodes[0].data if title == itemTitle: description = item.childNodes[9].childNodes[0].data content = item.childNodes[13].childNodes[0].data html = """