move download directory fix, new dialog
git-svn-id: svn://svn.berlios.de/gpodder/trunk@221 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
parent
60029079e5
commit
1f6834e119
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
Wed, 20 Dec 2006 17:35:48 +0100 <thp@perli.net>
|
||||
* src/gpodder/libgpodder.py: Added get_size() and
|
||||
size_to_string() functions to gPodderLib to get the size
|
||||
of a folder/file and to convert the byte size to a string
|
||||
* src/gpodder/libpodcasts.py: Utilize gPodderLib's new
|
||||
size_to_string() function for getting the size string;
|
||||
fixed a bug when moving the download directory to another
|
||||
device (thanks to Andy <apblist speakeasy net> for reporting)
|
||||
* src/gpodder/gpodder.py: Added moving progress dialog to
|
||||
show progress of moving download directory to another device
|
||||
* bin/gpodder: the usual version bumping
|
||||
|
||||
Sun, 17 Dec 2006 02:19:04 +0100 <thp@perli.net>
|
||||
* src/gpodder/libipodsync.py: Re-factor general sync method
|
||||
interface to "gPodderSyncMethod" and let gPodder_iPodSync
|
||||
|
|
|
@ -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+svn20061216-ik"
|
||||
__date__ = "2006-12-16"
|
||||
__version__ = "0.8.0+svn20061220"
|
||||
__date__ = "2006-12-20"
|
||||
__copyright__ = "Copyright (c) 2005-2006 %s. All rights reserved." % __author__
|
||||
__licence__ = "GPL"
|
||||
|
||||
|
|
|
@ -949,6 +949,13 @@ class Gpodderproperties(SimpleGladeApp):
|
|||
# return last item = custom command
|
||||
return index-1
|
||||
# end find_active
|
||||
|
||||
def set_download_dir( self, new_download_dir, event = None):
|
||||
gl = gPodderLib()
|
||||
gl.downloaddir = self.chooserDownloadTo.get_filename()
|
||||
|
||||
if event:
|
||||
event.set()
|
||||
#-- Gpodderproperties custom methods }
|
||||
|
||||
#-- Gpodderproperties.on_gPodderProperties_destroy {
|
||||
|
@ -1040,7 +1047,54 @@ class Gpodderproperties(SimpleGladeApp):
|
|||
gl.ipod_mount = self.iPodMountpoint.get_label()
|
||||
gl.mp3_player_folder = self.filesystemMountpoint.get_label()
|
||||
gl.opml_url = self.opmlURL.get_text()
|
||||
gl.downloaddir = self.chooserDownloadTo.get_filename()
|
||||
|
||||
if gl.downloaddir != self.chooserDownloadTo.get_filename():
|
||||
new_download_dir = self.chooserDownloadTo.get_filename()
|
||||
download_dir_size = gl.get_size( gl.downloaddir)
|
||||
download_dir_size_string = gl.size_to_string( download_dir_size, 'MB')
|
||||
event = Event()
|
||||
|
||||
dlg = gtk.Dialog( _('Moving downloads folder'), self.gPodderProperties)
|
||||
dlg.vbox.set_spacing( 5)
|
||||
dlg.set_border_width( 5)
|
||||
|
||||
label = gtk.Label()
|
||||
label.set_line_wrap( True)
|
||||
label.set_markup( _('Moving downloads from <b>%s</b> to <b>%s</b>...') % ( gl.downloaddir, new_download_dir, ))
|
||||
myprogressbar = gtk.ProgressBar()
|
||||
|
||||
# put it all together
|
||||
dlg.vbox.pack_start( label)
|
||||
dlg.vbox.pack_end( myprogressbar)
|
||||
|
||||
# switch windows
|
||||
dlg.show_all()
|
||||
self.gPodderProperties.hide_all()
|
||||
|
||||
# hide action area and separator line
|
||||
dlg.action_area.hide()
|
||||
dlg.set_has_separator( False)
|
||||
|
||||
args = ( new_download_dir, event, )
|
||||
|
||||
thread = Thread( target = self.set_download_dir, args = args)
|
||||
thread.start()
|
||||
|
||||
while not event.isSet():
|
||||
new_download_dir_size = gl.get_size( new_download_dir)
|
||||
fract = (1.00*new_download_dir_size) / (1.00*download_dir_size)
|
||||
if fract < 0.99:
|
||||
myprogressbar.set_text( _('%s of %s') % ( gl.size_to_string( new_download_dir_size, 'MB'), download_dir_size_string, ))
|
||||
else:
|
||||
myprogressbar.set_text( _('Finishing... please wait.'))
|
||||
myprogressbar.set_fraction( fract)
|
||||
event.wait( 0.1)
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration( False)
|
||||
|
||||
dlg.destroy()
|
||||
|
||||
|
||||
gl.update_on_startup = self.updateonstartup.get_active()
|
||||
device_type = self.comboboxDeviceType.get_active()
|
||||
if device_type == 0:
|
||||
|
|
|
@ -46,12 +46,15 @@ from os.path import basename
|
|||
from os.path import isfile
|
||||
from os.path import isdir
|
||||
from os.path import islink
|
||||
from os.path import getsize
|
||||
from os.path import join
|
||||
from os import mkdir
|
||||
from os import rmdir
|
||||
from os import makedirs
|
||||
from os import environ
|
||||
from os import system
|
||||
from os import unlink
|
||||
from os import listdir
|
||||
from glob import glob
|
||||
|
||||
# for the desktop symlink stuff:
|
||||
|
@ -200,6 +203,10 @@ class gPodderLibClass( object):
|
|||
log( 'Desktop symlink exists before move.')
|
||||
generate_symlink = True
|
||||
|
||||
# Fix error when moving over disk boundaries
|
||||
if isdir( new_downloaddir) and not listdir( new_downloaddir):
|
||||
rmdir( new_downloaddir)
|
||||
|
||||
shutil.move( self.__download_dir, new_downloaddir)
|
||||
|
||||
if generate_symlink:
|
||||
|
@ -307,6 +314,36 @@ class gPodderLibClass( object):
|
|||
except:
|
||||
return exists( symlink_path)
|
||||
|
||||
def get_size( self, filename):
|
||||
if isfile( filename):
|
||||
return getsize( filename)
|
||||
elif isdir( filename):
|
||||
sum = getsize( filename)
|
||||
for item in listdir( filename):
|
||||
sum = sum + self.get_size( join( filename, item))
|
||||
return sum
|
||||
else:
|
||||
log( 'Cannot get size for %s' % ( filename, ))
|
||||
return 0L
|
||||
|
||||
def size_to_string( self, size, method = None):
|
||||
methods = {
|
||||
'GB': 1073741824.0,
|
||||
'MB': 1048576.0,
|
||||
'KB': 1024.0,
|
||||
'B': 1.0,
|
||||
}
|
||||
|
||||
size = float(size)
|
||||
|
||||
if method not in methods:
|
||||
method = 'B'
|
||||
for trying in ( 'KB', 'MB', 'GB'):
|
||||
if size >= methods[trying]:
|
||||
method = trying
|
||||
|
||||
return '%.2f %s' % ( size / methods[method], method, )
|
||||
|
||||
def createDesktopSymlink( self):
|
||||
if not self.getDesktopSymlink():
|
||||
downloads_path = expanduser( "~/Desktop/")
|
||||
|
|
|
@ -409,20 +409,9 @@ class podcastItem(object):
|
|||
size = int( self.length)
|
||||
except ValueError:
|
||||
return '-'
|
||||
|
||||
kilobyte = 1024
|
||||
megabyte = kilobyte * 1024
|
||||
gigabyte = megabyte * 1024
|
||||
|
||||
if size > gigabyte:
|
||||
# Might be a bit big, but who cares...
|
||||
return '%d GB' % int(size / gigabyte)
|
||||
if size > megabyte:
|
||||
return '%d MB' % int(size / megabyte)
|
||||
if size > kilobyte:
|
||||
return '%d KB' % int(size / kilobyte)
|
||||
|
||||
return '%d Bytes' % size
|
||||
return libgpodder.gPodderLib().size_to_string( size)
|
||||
|
||||
|
||||
|
||||
class opmlChannel(object):
|
||||
|
|
Loading…
Reference in New Issue