From 226c001b226e46cda6642d3c97a65d74bdeedde1 Mon Sep 17 00:00:00 2001 From: Paul Goins Date: Sun, 21 Feb 2010 10:31:45 +0900 Subject: [PATCH] Added experimental (non-working?) size detection to download thread. Other small changes. --- jben/jben/download_thread.py | 11 ++++++++++- jben/jben/interface/gtk/dialog/dict_download.py | 7 ++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/jben/jben/download_thread.py b/jben/jben/download_thread.py index 986369a..7d3d93a 100644 --- a/jben/jben/download_thread.py +++ b/jben/jben/download_thread.py @@ -14,7 +14,9 @@ class DownloadThread(threading.Thread): """ - CONNECTING, DOWNLOADING, DONE, ERROR = range(4) + # out_queue messages + CONNECTING, CONNECTED, DOWNLOADING, DONE, ERROR = range(5) + # in_queue messages ABORT = 1 def __init__(self, url, fname, chunk_size=16384, timeout=None): @@ -35,6 +37,13 @@ class DownloadThread(threading.Thread): resp = urllib2.urlopen(self.url, timeout=self.timeout) else: resp = urllib2.urlopen(self.url) + # **************** + info = resp.info() + size_headers = info.getheaders("content-length") + file_size = size_headers[0] if size_headers else None + print "FILE SIZE for %s:" % self.url, file_size + self.out_queue.put((self.CONNECTED, file_size)) + # **************** while True: try: event = self.in_queue.get(block=False) diff --git a/jben/jben/interface/gtk/dialog/dict_download.py b/jben/jben/interface/gtk/dialog/dict_download.py index 486e260..02b05aa 100644 --- a/jben/jben/interface/gtk/dialog/dict_download.py +++ b/jben/jben/interface/gtk/dialog/dict_download.py @@ -2,8 +2,9 @@ from __future__ import absolute_import -import gtk +import gtk, gobject from ..widget.storedsize import StoredSizeDialog +from jben.download_thread import DownloadThread class DictDownload(StoredSizeDialog): @@ -19,10 +20,14 @@ class DictDownload(StoredSizeDialog): ) self._layout() self.connect("show", self.on_show) + self.urls = ["/".join((mirror, f)) for f in files] def on_show(self, widget): # *** TODO TO DO TODO *** + # Temporarily: just finish + self.on_finished() + def on_finished(self): # After everything's finished... self.ok_btn.set_sensitive(True) -- 2.11.4.GIT