From 22e017739d237df346286fd04aa201715374a5ea Mon Sep 17 00:00:00 2001 From: Julien Valroff Date: Fri, 13 Aug 2010 21:35:55 +0200 Subject: Imported Upstream version 0.3.1 --- rapid/ChangeLog | 22 ++++++++++ rapid/config.py | 4 +- rapid/glade3/rapid.glade | 5 ++- rapid/rapid.py | 110 ++++++++++++++++++++++++++++++++--------------- 4 files changed, 105 insertions(+), 36 deletions(-) (limited to 'rapid') diff --git a/rapid/ChangeLog b/rapid/ChangeLog index 552c77d..259029a 100644 --- a/rapid/ChangeLog +++ b/rapid/ChangeLog @@ -1,3 +1,25 @@ +Version 0.3.1 +------------- + +2010-08-13 + +The main window now works more effectively on tiny screens, such as those found +on netbooks. If the screen height is less than or equal to 650 pixels, elements +in the preview pane are removed, and the spacing is tightened. + +The amount of free space available on the filesystem where photos are to be +downloaded is now displayed in the status bar. (Note this is only the case on +moderately up-to-date Linux distributions that use GVFS, such as Ubuntu 8.10 or +higher). + +Add Chinese (simplified) translation. A big thanks goes out to the Ubuntu +Chinese translation team. Partial translations of Bulgarian, Japanese, Occitan +(post 1500), Persian, Portugese (Brazilian), and Turkish have been added. In the +past only translations that were largely finished were added, but hopefully +adding incomplete translations will speed up their completion. Updated Finnish, +French, Hungarian, Russian, Serbian and Spanish translations. + + Version 0.3.0 ------------- diff --git a/rapid/config.py b/rapid/config.py index 2f0e1e3..6fe31b1 100644 --- a/rapid/config.py +++ b/rapid/config.py @@ -15,7 +15,7 @@ ### along with this program; if not, write to the Free Software ### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -version = '0.3.0' +version = '0.3.1' GCONF_KEY="/apps/rapid-photo-downloader" GLADE_FILE = "glade3/rapid.glade" @@ -56,3 +56,5 @@ STATUS_DOWNLOAD_AND_BACKUP_FAILED = 5 # tried to download but failed, and STATUS_DOWNLOAD_FAILED = 6 # tried to download but failed STATUS_WARNING = 7 # warning (shown in pre-download preview) STATUS_CANNOT_DOWNLOAD = 8 # cannot be downloaded + +TINY_SCREEN_HEIGHT = 650 diff --git a/rapid/glade3/rapid.glade b/rapid/glade3/rapid.glade index 0954b5c..2b65c8b 100644 --- a/rapid/glade3/rapid.glade +++ b/rapid/glade3/rapid.glade @@ -2850,6 +2850,7 @@ Balazs Oveges <ovegesb@freemail.hu> Daniel Paessler <daniel@paessler.org> Miloš Popović <gpopac@gmail.com> Michal Predotka <mpredotka@googlemail.com> +Ye Qing <allen19920930@gmail.com> Luca Reverberi <thereve@gmail.com> Mikko Ruohola <polarfox@polarfox.net> Sergiy Gavrylov <sergiovana@bigmir.net> @@ -2857,7 +2858,9 @@ Sergei Sedov <sedov@webmail.perm.ru> Marco Solari <marcosolari@gmail.com> Toni Lähdekorpi <toni@lygon.net> Ulf Urdén <ulf.urden@purplescout.com> -Julien Valroff <julien@kirya.net> +Julien Valroff <julien@kirya.net> +Aron Xu <happyaron.xu@gmail.com> +梁其学 <yalongbay@gmail.com> rapid-photo-downloader.svg True diff --git a/rapid/rapid.py b/rapid/rapid.py index 6f5490d..4a1c821 100755 --- a/rapid/rapid.py +++ b/rapid/rapid.py @@ -53,7 +53,6 @@ except ImportError: import gnomevfs using_gio = False - import prefs import paths import gnomeglade @@ -4275,6 +4274,8 @@ class SelectionVBox(gtk.VBox): gtk.VBox.__init__(self) self.parentApp = parentApp + tiny_screen = gtk.gdk.screen_height() <= config.TINY_SCREEN_HEIGHT + selection_scrolledwindow = gtk.ScrolledWindow() selection_scrolledwindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) selection_viewport = gtk.Viewport() @@ -4320,7 +4321,8 @@ class SelectionVBox(gtk.VBox): self.preview_original_name_label.set_alignment(0, 0.5) self.preview_original_name_label.set_ellipsize(pango.ELLIPSIZE_END) - #Device (where it will be downloaded to) + + #Device (where it will be downloaded from) self.preview_device_expander = gtk.Expander() self.preview_device_label = gtk.Label() self.preview_device_label.set_alignment(0, 0.5) @@ -4338,7 +4340,7 @@ class SelectionVBox(gtk.VBox): self.preview_device_expander.set_label_widget(device_hbox) - #Filename that has been generated (path in tooltip) + #Filename that has been generated self.preview_name_label = gtk.Label() self.preview_name_label.set_alignment(0, 0.5) self.preview_name_label.set_ellipsize(pango.ELLIPSIZE_END) @@ -4398,29 +4400,44 @@ class SelectionVBox(gtk.VBox): spacer2 = gtk.Label('') + #left and right spacers self.preview_table.attach(left_spacer, 0, 1, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) self.preview_table.attach(right_spacer, 3, 4, 1, 2, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) - - self.preview_table.attach(self.preview_title_label, 0, 3, 0, 1, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_image, 1, 3, 1, 2, yoptions=gtk.SHRINK) - - self.preview_table.attach(self.preview_original_name_label, 1, 3, 2, 3, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_device_expander, 1, 3, 3, 4, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) - - self.preview_table.attach(self.preview_name_label, 1, 3, 5, 6, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_destination_expander, 1, 3, 6, 7, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) - - self.preview_table.attach(spacer2, 0, 7, 7, 8, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_status_icon, 1, 2, 8, 9, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_status_label, 2, 3, 8, 9, yoptions=gtk.SHRINK) - - self.preview_table.attach(self.preview_problem_title_label, 2, 3, 9, 10, yoptions=gtk.SHRINK) - self.preview_table.attach(self.preview_problem_label, 2, 4, 10, 11, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.EXPAND|gtk.FILL) + row = 0 + if not tiny_screen: + self.preview_table.attach(self.preview_title_label, 0, 3, row, row+1, yoptions=gtk.SHRINK) + row += 1 + self.preview_table.attach(self.preview_image, 1, 3, row, row+1, yoptions=gtk.SHRINK) + row += 1 + + self.preview_table.attach(self.preview_original_name_label, 1, 3, row, row+1, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + row += 1 + if not tiny_screen: + self.preview_table.attach(self.preview_device_expander, 1, 3, row, row+1, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + row += 1 + + self.preview_table.attach(self.preview_name_label, 1, 3, row, row+1, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + row += 1 + if not tiny_screen: + self.preview_table.attach(self.preview_destination_expander, 1, 3, row, row+1, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.SHRINK) + row += 1 + + if not tiny_screen: + self.preview_table.attach(spacer2, 0, 7, row, row+1, yoptions=gtk.SHRINK) + row += 1 + + self.preview_table.attach(self.preview_status_icon, 1, 2, row, row+1, xoptions=gtk.SHRINK, yoptions=gtk.SHRINK) + self.preview_table.attach(self.preview_status_label, 2, 3, row, row+1, yoptions=gtk.SHRINK) + row += 1 + + self.preview_table.attach(self.preview_problem_title_label, 2, 3, row, row+1, yoptions=gtk.SHRINK) + row += 1 + self.preview_table.attach(self.preview_problem_label, 2, 4, row, row+1, xoptions=gtk.EXPAND|gtk.FILL, yoptions=gtk.EXPAND|gtk.FILL) + row += 1 self.file_hpaned = gtk.HPaned() self.file_hpaned.pack1(left_pane_vbox, shrink=False) - #self.file_hpaned.pack2(self.preview_vbox, shrink=False) self.file_hpaned.pack2(self.preview_table, resize=True, shrink=False) self.pack_start(self.file_hpaned, True, True) if self.parentApp.prefs.hpaned_pos > 0: @@ -4641,6 +4658,10 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # set a default size self.rapidapp.set_default_size(650, 650) + if gtk.gdk.screen_height() <= config.TINY_SCREEN_HEIGHT: + self.prefs.display_preview_folders = False + self.menu_preview_folders.set_sensitive(False) + self.widget.show() self._setupIcons() @@ -4793,7 +4814,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): displayPreferences = displayPreferences or displayPreferences_2 #setup download and backup mediums, initiating scans - self.setupAvailableImageAndBackupMedia(onStartup=True, onPreferenceChange=False, doNotAllowAutoStart = displayPreferences) + self.setupAvailableImageAndBackupMedia(onStartup=True, onPreferenceChange=False, doNotAllowAutoStart = displayPreferences) #adjust viewport size for displaying media #this is important because the code in MediaTreeView.addCard() is inaccurate at program startup @@ -4811,7 +4832,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if displayPreferences: PreferencesDialog(self) - + @dbus.service.method (config.DBUS_NAME, @@ -4854,6 +4875,32 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): icon_list = [(icon, paths.share_dir('glade3/%s.svg' % icon)) for icon in icons] common.register_iconsets(icon_list) + def displayFreeSpace(self): + """ + Displays the amount of space free on the filesystem the files will be downloaded to. + Also displays backup volumes / path being used. + """ + if using_gio: + folder = gio.File(self.prefs.download_folder) + fileInfo = folder.query_filesystem_info(gio.FILE_ATTRIBUTE_FILESYSTEM_FREE) + free = common.formatSizeForUser(fileInfo.get_attribute_uint64(gio.FILE_ATTRIBUTE_FILESYSTEM_FREE)) + msg = " " + _("%(free)s available") % {'free': free} + else: + msg = '' + + if self.prefs.backup_images: + if not self.prefs.backup_device_autodetection: + # user manually specified backup location + msg2 = _('Backing up to %(path)s') % {'path':self.prefs.backup_location} + else: + msg2 = self.displayBackupVolumes() + + if msg: + msg = _("%(freespace)s. %(backuppaths)s.") % {'freespace': msg, 'backuppaths': msg2} + else: + msg = msg2 + + self.rapid_statusbar.push(self.statusbar_context_id, msg) def checkImageDevicePathOnStartup(self): msg = None @@ -5270,7 +5317,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): if isBackupVolume: if path not in self.backupVolumes: self.backupVolumes[path] = volume - self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) + self.displayFreeSpace() elif self.prefs.device_autodetection and (media.is_DCIM_Media(path) or self.searchForPsd()): if self.isCamera(volume.volume): @@ -5334,7 +5381,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # remove backup volumes if path in self.backupVolumes: del self.backupVolumes[path] - self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) + self.displayFreeSpace() # may need to disable download button self.setDownloadButtonSensitivity() @@ -5447,13 +5494,8 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # user manually specified backup location # will backup to this path, but don't need any volume info associated with it self.backupVolumes[self.prefs.backup_location] = None - self.rapid_statusbar.push(self.statusbar_context_id, _('Backing up to %(path)s') % {'path':self.prefs.backup_location}) - else: - self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) - - else: - self.rapid_statusbar.push(self.statusbar_context_id, '') + self.displayFreeSpace() # add each memory card / other device to the list of threads if doNotAllowAutoStart: @@ -5489,7 +5531,6 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # user manually specified backup location # will backup to this path, but don't need any volume info associated with it self.backupVolumes[self.prefs.backup_location] = None - self.rapid_statusbar.push(self.statusbar_context_id, _('Backing up to %(path)s') % {'path':self.prefs.backup_location}) else: for v in self.volumeMonitor.get_mounts(): volume = Volume(v) @@ -5517,8 +5558,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): self.backupVolumes[path] = volume - self.rapid_statusbar.push(self.statusbar_context_id, self.displayBackupVolumes()) - + self.displayFreeSpace() def _setupDownloadbuttons(self): self.download_hbutton_box = gtk.HButtonBox() @@ -5658,6 +5698,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # of time the download has remainging, e.g. 'About 5:36 minutes remaining' message = _("About %(minutes)i:%(seconds)02i minutes remaining") % {'minutes': secs / 60, 'seconds': secs % 60} + self.rapid_statusbar.pop(self.statusbar_context_id) self.rapid_statusbar.push(self.statusbar_context_id, message) @@ -5666,7 +5707,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): sequences.reset(self.prefs.getDownloadsToday(), self.prefs.stored_sequence_no) def notifyUserAllDownloadsComplete(self): - """ Possibly notify the user all downloads are complete using libnotify + """ If all downloads are complete, if needed notify the user using libnotify Reset progress bar info""" @@ -5713,6 +5754,7 @@ class RapidApp(gnomeglade.GnomeApp, dbus.service.Object): # download statistics are cleared in exitOnDownloadComplete() self._resetDownloadInfo() self.speed_label.set_text(' ') + self.displayFreeSpace() def exitOnDownloadComplete(self): -- cgit v1.2.3