description and other improvements for available episodes list

git-svn-id: svn://svn.berlios.de/gpodder/trunk@178 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
Thomas Perl 2006-11-20 11:51:20 +00:00
parent cda1c5bffe
commit 48a1a978aa
4 changed files with 38 additions and 5 deletions

View File

@ -1,3 +1,12 @@
Mon, 20 Nov 2006 12:46:54 +0100 <thp@perli.net>
* src/gpodder/libpodcasts.py: Added one_line_description() to
podcastItem; modified getItemsModel to return description
* src/gpodder/gpodder.py: Added description to "available
episodes" list; made columns resizable and reorderable and
added "ellipsize" property to both name and description field
* bin/gpodder: bumped release date again (wonder if we should
use svn:keywords on that file some time soon ;)
Mon, 20 Nov 2006 11:58:37 +0100 <thp@perli.net>
* src/gpodder/libipodsync.py: Applied patch from Nick (nikosapi
gmail com) to add file size to iTunesDB. This should fix the

View File

@ -26,8 +26,8 @@
# PLEASE DO NOT CHANGE FORMAT OF __version__ LINE (setup.py reads this)
__author__ = "Thomas Perl <thp@perli.net>"
__version__ = "0.8.0+svn20061117"
__date__ = "2006-11-17"
__version__ = "0.8.0+svn20061120"
__date__ = "2006-11-20"
__copyright__ = "Copyright (c) 2005-2006 %s. All rights reserved." % __author__
__licence__ = "GPL"

View File

@ -29,6 +29,7 @@
import os
import gtk
import gobject
import pango
import sys
from threading import Event
@ -122,8 +123,9 @@ class Gpodder(SimpleGladeApp):
#gtk.TreeViewColumn( "", gtk.CellRendererToggle(), active=3),
namecell = gtk.CellRendererText()
namecell.set_property('cell-background', 'white')
namecell.set_property('ellipsize', pango.ELLIPSIZE_END)
namecolumn = gtk.TreeViewColumn( _("Episode"), namecell, text=1)
namecolumn.add_attribute(namecell, "cell-background", 4)
namecolumn.add_attribute(namecell, "cell-background", 4)
sizecell = gtk.CellRendererText()
sizecell.set_property('cell-background', 'white')
@ -135,7 +137,15 @@ class Gpodder(SimpleGladeApp):
releasecolumn = gtk.TreeViewColumn( _("Released"), releasecell, text=5)
releasecolumn.add_attribute(releasecell, "cell-background", 4)
for itemcolumn in ( namecolumn, sizecolumn, releasecolumn ):
desccell = gtk.CellRendererText()
desccell.set_property('cell-background', 'white')
desccell.set_property('ellipsize', pango.ELLIPSIZE_END)
desccolumn = gtk.TreeViewColumn( _("Description"), desccell, text=6)
desccolumn.add_attribute(desccell, "cell-background", 4)
for itemcolumn in ( namecolumn, sizecolumn, releasecolumn, desccolumn ):
itemcolumn.set_resizable( True)
itemcolumn.set_reorderable( True)
self.treeAvailable.append_column( itemcolumn)
# enable multiple selection support
@ -240,6 +250,7 @@ class Gpodder(SimpleGladeApp):
try:
self.items_model = self.channels[self.active_channel].getItemsModel()
self.treeAvailable.set_model( self.items_model)
self.treeAvailable.columns_autosize()
except:
if self.items_model != None:
self.items_model.clear()
@ -657,6 +668,7 @@ class Gpodder(SimpleGladeApp):
filename = self.get_current_channel_downloaded()
new_model = self.ldb.getDownloadedEpisodesModelByFilename( filename)
self.treeDownloaded.set_model( new_model)
self.treeDownloaded.columns_autosize()
except:
if self.treeDownloaded.get_model() != None:
self.treeDownloaded.get_model().clear()

View File

@ -180,7 +180,7 @@ class podcastChannel(ListType):
return self.podcastFilenameExists( item.url)
def getItemsModel( self, want_color = True):
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING)
new_model = gtk.ListStore( gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
for item in self:
# Skip items with no download url
@ -196,6 +196,7 @@ class podcastChannel(ListType):
new_model.set( new_iter, 3, True)
new_model.set( new_iter, 4, background_color)
new_model.set( new_iter, 5, item.cute_pubdate())
new_model.set( new_iter, 6, item.one_line_description())
return new_model
@ -343,6 +344,17 @@ class podcastItem(object):
self.pubDate = pubDate
if pubDate == None:
self.pubDate = datetime.now().ctime()
def one_line_description( self):
lines = self.description.strip().splitlines()
if not lines or lines[0] == '':
return _('No description available')
else:
desc = lines[0].strip()
if len( desc) > 20:
return desc[:80] + '...'
else:
return desc
def cute_pubdate( self):
seconds_in_a_day = 86400