From 133883412aa83c9657a33293e9ca4a6ffd5445e8 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Tue, 22 Sep 2009 18:53:14 +0200 Subject: [PATCH] Redesign download list contents (multiline) --- src/gpodder/download.py | 4 ++++ src/gpodder/gtkui/download.py | 33 ++++++++++++++++++--------------- src/gpodder/gui.py | 30 +++++++++--------------------- 3 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/gpodder/download.py b/src/gpodder/download.py index acd32f0c..3d0551fe 100644 --- a/src/gpodder/download.py +++ b/src/gpodder/download.py @@ -526,6 +526,10 @@ class DownloadTask(object): self.__episode = episode self._config = config + # Set names for the downloads list + self.markup_name = saxutils.escape(self.__episode.title) + self.markup_podcast_name = saxutils.escape(self.__episode.channel.title) + # Create the target filename and save it in the database self.filename = self.__episode.local_filename(create=True) self.tempname = self.filename + '.partial' diff --git a/src/gpodder/gtkui/download.py b/src/gpodder/gtkui/download.py index bb6fdf00..62a8f2b9 100644 --- a/src/gpodder/gtkui/download.py +++ b/src/gpodder/gtkui/download.py @@ -39,13 +39,12 @@ _ = gpodder.gettext class DownloadStatusModel(gtk.ListStore): # Symbolic names for our columns, so we know what we're up to - C_TASK, C_NAME, C_URL, C_PROGRESS, C_PROGRESS_TEXT, C_SIZE_TEXT, \ - C_ICON_NAME, C_SPEED_TEXT, C_STATUS_TEXT = range(9) + C_TASK, C_NAME, C_URL, C_PROGRESS, C_PROGRESS_TEXT, C_ICON_NAME = range(6) SEARCH_COLUMNS = (C_NAME, C_URL) def __init__(self): - gtk.ListStore.__init__(self, object, str, str, int, str, str, str, str, str) + gtk.ListStore.__init__(self, object, str, str, int, str, str) # Set up stock icon IDs for tasks self._status_ids = collections.defaultdict(lambda: None) @@ -63,26 +62,30 @@ class DownloadStatusModel(gtk.ListStore): # Initial update request - update non-changing fields self.set(iter, self.C_TASK, task, - self.C_NAME, str(task), self.C_URL, task.url) if task.status == task.FAILED: - status_message = _('Failed: %s') % (task.error_message,) + status_message = '%s: %s' % (\ + task.STATUS_MESSAGE[task.status], \ + task.error_message) + elif task.status == task.DOWNLOADING: + status_message = '%s (%s, %s/s)' % (\ + task.STATUS_MESSAGE[task.status], \ + util.format_filesize(task.total_size), \ + util.format_filesize(task.speed)) else: - status_message = task.STATUS_MESSAGE[task.status] - - if task.status == task.DOWNLOADING: - speed_message = '%s/s' % util.format_filesize(task.speed) - else: - speed_message = '' + status_message = '%s (%s)' % (\ + task.STATUS_MESSAGE[task.status], \ + util.format_filesize(task.total_size)) self.set(iter, + self.C_NAME, '%s\n%s - %s' % (\ + task.markup_name, \ + status_message, \ + task.markup_podcast_name), self.C_PROGRESS, 100.*task.progress, self.C_PROGRESS_TEXT, '%.0f%%' % (task.progress*100.,), - self.C_SIZE_TEXT, util.format_filesize(task.total_size), - self.C_ICON_NAME, self._status_ids[task.status], - self.C_SPEED_TEXT, speed_message, - self.C_STATUS_TEXT, status_message) + self.C_ICON_NAME, self._status_ids[task.status]) def __add_new_task(self, task): iter = self.append() diff --git a/src/gpodder/gui.py b/src/gpodder/gui.py index 63a6d67a..0cbdf353 100644 --- a/src/gpodder/gui.py +++ b/src/gpodder/gui.py @@ -589,36 +589,24 @@ class gPodder(BuilderWidget, dbus.service.Object): cell = gtk.CellRendererText() cell.set_property('ellipsize', pango.ELLIPSIZE_END) column.pack_start(cell, expand=True) - column.add_attribute(cell, 'text', DownloadStatusModel.C_NAME) - + column.add_attribute(cell, 'markup', DownloadStatusModel.C_NAME) column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) - column.set_resizable(True) column.set_expand(True) self.treeDownloads.append_column(column) # Second column: Progress - column = gtk.TreeViewColumn(_('Progress'), gtk.CellRendererProgress(), + cell = gtk.CellRendererProgress() + cell.set_property('yalign', .5) + cell.set_property('ypad', 6) + column = gtk.TreeViewColumn(_('Progress'), cell, value=DownloadStatusModel.C_PROGRESS, \ text=DownloadStatusModel.C_PROGRESS_TEXT) + column.set_sizing(gtk.TREE_VIEW_COLUMN_AUTOSIZE) + column.set_expand(False) + column.set_property('min-width', 150) + column.set_property('max-width', 150) self.treeDownloads.append_column(column) - # Third column: Size - if gpodder.ui.desktop: - column = gtk.TreeViewColumn(_('Size'), gtk.CellRendererText(), - text=DownloadStatusModel.C_SIZE_TEXT) - self.treeDownloads.append_column(column) - - # Fourth column: Speed - column = gtk.TreeViewColumn(_('Speed'), gtk.CellRendererText(), - text=DownloadStatusModel.C_SPEED_TEXT) - self.treeDownloads.append_column(column) - - if not gpodder.ui.fremantle: - # Fifth column: Status - column = gtk.TreeViewColumn(_('Status'), gtk.CellRendererText(), - text=DownloadStatusModel.C_STATUS_TEXT) - self.treeDownloads.append_column(column) - self.treeDownloads.set_model(self.download_status_model) TreeViewHelper.set(self.treeDownloads, TreeViewHelper.ROLE_DOWNLOADS) -- 2.11.4.GIT