예제 #1
0
	def _on_selection_changed(self, selection):		
		tree,selected = selection.get_selected_rows()
		selected = [i[0] for i in selected]
		
		resume_sens = False
		i=-1
		for item in self._downloads_liststore:
			i+=1

			if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED:
				if i in selected:
					item[D_DESCRIPTION_MARKUP] = '<i>'+utils.my_quote(item[D_DESCRIPTION])+'</i>'
					item[D_SIZE_MARKUP]= '<i>'+item[D_SIZE]+'</i>'
					if item[D_STATUS] == PAUSED:
						item[D_STATUS_MARKUP] = '<i>'+_("Paused")+'</i>'
						resume_sens = True
					elif item[D_STATUS] == QUEUED:
						item[D_STATUS_MARKUP] = '<i>'+_("Queued")+'</i>'
				else:
					item[D_DESCRIPTION_MARKUP] = '<span color="#777"><i>'+utils.my_quote(item[D_DESCRIPTION])+'</i></span>'
					item[D_SIZE_MARKUP]= '<span color="#777"><i>'+item[D_SIZE]+'</i></span>'
					if item[D_STATUS] == PAUSED:
						item[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Paused")+'</i></span>'
					elif item[D_STATUS] == QUEUED:
						item[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Queued")+'</i></span>'
			else:
				item[D_DESCRIPTION_MARKUP] = utils.my_quote(item[D_DESCRIPTION])
				item[D_SIZE_MARKUP] = item[D_SIZE]
				item[D_STATUS_MARKUP] = ""
		self._resume_button.set_sensitive(resume_sens)
예제 #2
0
	def _push_update_handler(self):
		if len(self._updates) == 0 or not self._show_notifications:
			self._updater_id = -1
			return False
		feed_id, entry_id = self._updates.pop(0)
		feed_title = self._app.db.get_feed_title(feed_id)
		entry = self._app.db.get_entry(entry_id)
		icon = self._icon_manager.get_icon(feed_id)
		
		feed_title = utils.my_quote(feed_title)
		entry_title = utils.my_quote(entry['title'])
		
		self._tray_icon.display_notification(feed_title, entry_title, icon, (NOTIFY_ENTRY, entry))
		return True
예제 #3
0
	def _download_finished_cb(self, app, d):
		if (d.status == FINISHED or d.status == FINISHED_AND_PLAY) and \
		                                      self._show_notifications:
			entry = self._app.db.get_entry(d.media['entry_id'])
			entry_title = utils.my_quote(entry['title'])
			feed_title = self._app.db.get_feed_title(entry['feed_id'])
			feed_title = utils.my_quote(feed_title)
			icon = self._icon_manager.get_icon(entry['feed_id'])
			
			title = _("Download Complete")
			d2 = {'feed_title':feed_title,
				 'entry_title':entry_title,
				 'size': utils.format_size(d.total_size)}
			message = _("<b>%(feed_title)s:</b> %(entry_title)s" % d2)
			
			self._tray_icon.display_notification(title, message, icon, (NOTIFY_DOWNLOAD, d.media['media_id']))
예제 #4
0
파일: FeedList.py 프로젝트: ywwg/penguintv
	def _get_fancy_markedup_title(self, title, first_entry_title, unread, total, flag, feed_id, selected=None):
		#logging.debug("fancy title: %s %s %i %i %i %i", title, first_entry_title, unread, total, flag, feed_id)
		if selected is None:
			selection = self._widget.get_selection()
			model, iter = selection.get_selected()
			try: sel = model[iter][FEEDID]
			except: sel = -1
			selected = feed_id == sel
			
		if not title:
			return _("Please wait...")
		try:
			if utils.RUNNING_HILDON:
				if not selected:
					title = '<span size="large">'+utils.my_quote(title)+'</span>\n<span color="#777777"><i>'+utils.my_quote(first_entry_title)+'</i></span>'
				else:
					title = '<span size="large">'+utils.my_quote(title)+'</span>\n<span><i>'+utils.my_quote(first_entry_title)+'</i></span>'
			else:
				if not selected:
					title = utils.my_quote(title)+'\n<span color="#777777" size="x-small"><i>'+utils.my_quote(first_entry_title)+'</i></span>'
				else:
					title = utils.my_quote(title)+'\n<span size="x-small"><i>'+utils.my_quote(first_entry_title)+'</i></span>'	
			
			if flag & ptvDB.F_UNVIEWED == ptvDB.F_UNVIEWED:
				if unread == 0:
					logging.warning("Flag says there are unviewed, but count says no.  not setting bold")
				else:
					title="<b>"+title+'</b>'
		except:
			return title
		return title
예제 #5
0
파일: FeedList.py 프로젝트: ywwg/penguintv
	def _get_markedup_title(self, title, flag):
		if not title:
			return _("Please wait...")
		if utils.RUNNING_SUGAR:
			title='<span size="x-small">'+title+'</span>'
		elif utils.RUNNING_HILDON:
			title='<span size="large">'+title+'</span>'
		try:
			if flag & ptvDB.F_UNVIEWED == ptvDB.F_UNVIEWED:
					title="<b>"+utils.my_quote(title)+"</b>"
		except:
			return title
		return title
예제 #6
0
    def _on_selection_changed(self, selection):
        tree, selected = selection.get_selected_rows()
        selected = [i[0] for i in selected]

        resume_sens = False
        i = -1
        for item in self._downloads_liststore:
            i += 1

            if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED:
                if i in selected:
                    item[D_DESCRIPTION_MARKUP] = '<i>' + utils.my_quote(
                        item[D_DESCRIPTION]) + '</i>'
                    item[D_SIZE_MARKUP] = '<i>' + item[D_SIZE] + '</i>'
                    if item[D_STATUS] == PAUSED:
                        item[D_STATUS_MARKUP] = '<i>' + _("Paused") + '</i>'
                        resume_sens = True
                    elif item[D_STATUS] == QUEUED:
                        item[D_STATUS_MARKUP] = '<i>' + _("Queued") + '</i>'
                else:
                    item[
                        D_DESCRIPTION_MARKUP] = '<span color="#777"><i>' + utils.my_quote(
                            item[D_DESCRIPTION]) + '</i></span>'
                    item[D_SIZE_MARKUP] = '<span color="#777"><i>' + item[
                        D_SIZE] + '</i></span>'
                    if item[D_STATUS] == PAUSED:
                        item[D_STATUS_MARKUP] = '<span color="#777"><i>' + _(
                            "Paused") + '</i></span>'
                    elif item[D_STATUS] == QUEUED:
                        item[D_STATUS_MARKUP] = '<span color="#777"><i>' + _(
                            "Queued") + '</i></span>'
            else:
                item[D_DESCRIPTION_MARKUP] = utils.my_quote(
                    item[D_DESCRIPTION])
                item[D_SIZE_MARKUP] = item[D_SIZE]
                item[D_STATUS_MARKUP] = ""
        self._resume_button.set_sensitive(resume_sens)
예제 #7
0
    def update_downloads(self):
        """gets called a lot (once for every progress callback) so be quick"""
        self._downloads = self._mm.get_download_list()
        current_list = [item.media['media_id'] for item in self._downloads]
        viewing_list = [item[D_MEDIA_ID] for item in self._downloads_liststore]

        oldset = set(viewing_list)
        newset = set(current_list)

        removed = list(oldset.difference(newset))
        added = list(newset.difference(oldset))
        unchanged = list(oldset.intersection(newset))

        #slower but works better, because the list is changing all over the place
        for item in removed:
            i = -1
            for row in self._downloads_liststore:
                i += 1
                if row[0] == item:
                    self._downloads_liststore.remove(
                        self._downloads_liststore.get_iter((i, )))
                    break

        tree, selected = self._downloads_listview.get_selection(
        ).get_selected_rows()
        selected = [i[0] for i in selected]

        i = -1
        for item in self._downloads_liststore:
            i += 1
            if item[D_MEDIA_ID] in unchanged:
                index = current_list.index(item[D_MEDIA_ID])
                medium = self._downloads[index]

                iter = self._downloads_liststore[i]
                iter[D_PROGRESS] = medium.progress
                iter[D_SIZE] = utils.format_size(medium.total_size)
                #iter[D_STATUS] refers to the old status

                if medium.status == PAUSED or medium.status == QUEUED:
                    if iter[D_STATUS] != medium.status:
                        if i in selected:
                            iter[
                                D_DESCRIPTION_MARKUP] = '<i>' + utils.my_quote(
                                    iter[D_DESCRIPTION]) + '</i>'
                            iter[D_SIZE_MARKUP] = '<i>' + iter[D_SIZE] + '</i>'
                            if medium.status == PAUSED:
                                iter[D_STATUS_MARKUP] = '<i>' + _(
                                    "Paused") + '</i>'
                            elif medium.status == QUEUED:
                                iter[D_STATUS_MARKUP] = '<i>' + _(
                                    "Queued") + '</i>'
                        else:
                            iter[
                                D_DESCRIPTION_MARKUP] = '<span color="#777"><i>' + utils.my_quote(
                                    iter[D_DESCRIPTION]) + '</i></span>'
                            iter[
                                D_SIZE_MARKUP] = '<span color="#777"><i>' + iter[
                                    D_SIZE] + '</i></span>'
                            if medium.status == PAUSED:
                                iter[
                                    D_STATUS_MARKUP] = '<span color="#777"><i>' + _(
                                        "Paused") + '</i></span>'
                            elif medium.status == QUEUED:
                                iter[
                                    D_STATUS_MARKUP] = '<span color="#777"><i>' + _(
                                        "Queued") + '</i></span>'
                        iter[D_STATUS] = medium.status
                else:
                    #if iter[D_STATUS] == PAUSED or i in selected:
                    iter[D_DESCRIPTION_MARKUP] = utils.my_quote(
                        iter[D_DESCRIPTION])
                    iter[D_SIZE_MARKUP] = iter[D_SIZE]
                    iter[D_STATUS] = medium.status
                    iter[D_STATUS_MARKUP] = ""

        #check resume button sensitivity
        resume_sens = False
        i = -1
        for item in self._downloads_liststore:
            i += 1
            if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED:
                if i in selected:
                    resume_sens = True
                    break
        self._resume_button.set_sensitive(resume_sens)

        for media_id in added:
            item = self._downloads[current_list.index(media_id)]
            try:
                entry = self._app.db.get_entry(item.media['entry_id'])
                description = self._app.db.get_feed_title(
                    entry['feed_id']) + " " + utils.get_hyphen(
                    ) + " " + entry['title']
                size = utils.format_size(item.total_size)
            except:
                logging.warning(
                    "trouble getting entry updating downloads: %s" % str(item))
                continue
            if item.status == PAUSED:
                description_markup = '<span color="#777"><i>' + utils.my_quote(
                    description) + '</i></span>'
                size_markup = '<span color="#777"><i>' + size + '</i></span>'
                status_markup = '<i>' + _("Paused") + '</i>'
            elif item.status == QUEUED:
                description_markup = '<span color="#777"><i>' + utils.my_quote(
                    description) + '</i></span>'
                size_markup = '<span color="#777"><i>' + size + '</i></span>'
                status_markup = '<i>' + _("Queued") + '</i>'
            else:
                description_markup = utils.my_quote(description)
                size_markup = size
                status_markup = ""

            pixbuf = self._icon_manager.get_icon_pixbuf(
                entry['feed_id'], MAX_WIDTH, MAX_HEIGHT, MIN_SIZE, MIN_SIZE)
            self._downloads_liststore.append([
                media_id, description, description_markup, item.progress, size,
                size_markup, pixbuf, item.status, status_markup
            ])

        #make sure both lists are sorted the same way
        id_list = [row[D_MEDIA_ID] for row in self._downloads_liststore]
        self._downloads.sort(lambda x, y: id_list.index(x.media['media_id']) -
                             id_list.index(y.media['media_id']))
예제 #8
0
	def update_downloads(self):
		"""gets called a lot (once for every progress callback) so be quick"""
		self._downloads = self._mm.get_download_list()
		current_list = [item.media['media_id'] for item in self._downloads]
		viewing_list = [item[D_MEDIA_ID] for item in self._downloads_liststore]

		oldset = set(viewing_list)
		newset = set(current_list)
		
		removed   = list(oldset.difference(newset))
		added     = list(newset.difference(oldset))
		unchanged = list(oldset.intersection(newset))
		
		#slower but works better, because the list is changing all over the place
		for item in removed:
			i=-1
			for row in self._downloads_liststore:
				i+=1
				if row[0] == item:
					self._downloads_liststore.remove(self._downloads_liststore.get_iter((i,)))
					break
		
		tree,selected = self._downloads_listview.get_selection().get_selected_rows()
		selected = [i[0] for i in selected] 

		i=-1
		for item in self._downloads_liststore:
			i+=1
			if item[D_MEDIA_ID] in unchanged:
				index = current_list.index(item[D_MEDIA_ID])
				medium = self._downloads[index]

				iter = self._downloads_liststore[i]
				iter[D_PROGRESS] = medium.progress
				iter[D_SIZE]     = utils.format_size(medium.total_size)
				#iter[D_STATUS] refers to the old status

				if medium.status == PAUSED or medium.status == QUEUED:
					if iter[D_STATUS] != medium.status:
						if i in selected:
							iter[D_DESCRIPTION_MARKUP] = '<i>'+utils.my_quote(iter[D_DESCRIPTION])+'</i>'
							iter[D_SIZE_MARKUP]= '<i>'+iter[D_SIZE]+'</i>'
							if medium.status == PAUSED:
								iter[D_STATUS_MARKUP] = '<i>'+_("Paused")+'</i>'
							elif medium.status == QUEUED:
								iter[D_STATUS_MARKUP] = '<i>'+_("Queued")+'</i>'
						else:
							iter[D_DESCRIPTION_MARKUP] = '<span color="#777"><i>'+utils.my_quote(iter[D_DESCRIPTION])+'</i></span>'
							iter[D_SIZE_MARKUP] = '<span color="#777"><i>'+iter[D_SIZE]+'</i></span>'
							if medium.status == PAUSED:
								iter[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Paused")+'</i></span>'
							elif medium.status == QUEUED:
								iter[D_STATUS_MARKUP] = '<span color="#777"><i>'+_("Queued")+'</i></span>'
						iter[D_STATUS] = medium.status
				else:
					#if iter[D_STATUS] == PAUSED or i in selected:
					iter[D_DESCRIPTION_MARKUP] = utils.my_quote(iter[D_DESCRIPTION])
					iter[D_SIZE_MARKUP]= iter[D_SIZE]
					iter[D_STATUS] = medium.status
					iter[D_STATUS_MARKUP] = ""
					
		#check resume button sensitivity
		resume_sens = False
		i=-1
		for item in self._downloads_liststore:
			i+=1
			if item[D_STATUS] == PAUSED or item[D_STATUS] == QUEUED:
				if i in selected:
					resume_sens = True
					break
		self._resume_button.set_sensitive(resume_sens)

		for media_id in added:
			item        = self._downloads[current_list.index(media_id)]
			try:
				entry       = self._app.db.get_entry(item.media['entry_id'])
				description = self._app.db.get_feed_title(entry['feed_id']) + " " + utils.get_hyphen() + " " + entry['title']
				size        = utils.format_size(item.total_size)
			except:
				logging.warning("trouble getting entry updating downloads: %s" % str(item))
				continue
			if item.status == PAUSED:
				description_markup = '<span color="#777"><i>'+utils.my_quote(description)+'</i></span>'
				size_markup = '<span color="#777"><i>'+size+'</i></span>'
				status_markup = '<i>'+_("Paused")+'</i>'
			elif item.status == QUEUED:
				description_markup = '<span color="#777"><i>'+utils.my_quote(description)+'</i></span>'
				size_markup = '<span color="#777"><i>'+size+'</i></span>'
				status_markup = '<i>'+_("Queued")+'</i>'
			else:
				description_markup = utils.my_quote(description)
				size_markup = size
				status_markup = ""

			pixbuf = self._icon_manager.get_icon_pixbuf(entry['feed_id'], 
					   MAX_WIDTH, MAX_HEIGHT, MIN_SIZE, MIN_SIZE)
			self._downloads_liststore.append([media_id, 
											  description, 
											  description_markup,
											  item.progress, 
											  size, 
											  size_markup,
											  pixbuf,
											  item.status,
											  status_markup])
			
		#make sure both lists are sorted the same way
		id_list = [row[D_MEDIA_ID] for row in self._downloads_liststore]
		self._downloads.sort(lambda x,y: id_list.index(x.media['media_id']) - id_list.index(y.media['media_id']))