diff options
Diffstat (limited to 'rapid')
-rw-r--r-- | rapid/ChangeLog | 17 | ||||
-rw-r--r-- | rapid/config.py | 2 | ||||
-rw-r--r-- | rapid/glade3/photo_small.png | bin | 0 -> 924 bytes | |||
-rw-r--r-- | rapid/glade3/rapid.glade | 5 | ||||
-rw-r--r-- | rapid/glade3/video_small.png | bin | 0 -> 1629 bytes | |||
-rwxr-xr-x | rapid/rapid.py | 79 |
6 files changed, 73 insertions, 30 deletions
diff --git a/rapid/ChangeLog b/rapid/ChangeLog index 46a1f3b..a1b7070 100644 --- a/rapid/ChangeLog +++ b/rapid/ChangeLog @@ -1,3 +1,20 @@ +Version 0.3.5 +------------- + +2011-03-23 + +The primary purpose of this release is update translations and fix bug #714039, +where under certain circumstances the program could crash while downloading +files. + +This is intended to be the last release in the 0.3.x series. In the upcoming +version 0.4.0, Rapid Photo Downloader is much faster and sports a new user +interface. + +Added Romanian translation. Updated Brazilian, Chinese, Croatian, Czech, Dutch, +Finnish, German, Italian, Polish and Russian translations. + + Version 0.3.4 ------------- diff --git a/rapid/config.py b/rapid/config.py index 73deb87..626ae33 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.4' +version = '0.3.5' GCONF_KEY="/apps/rapid-photo-downloader" GLADE_FILE = "glade3/rapid.glade" diff --git a/rapid/glade3/photo_small.png b/rapid/glade3/photo_small.png Binary files differnew file mode 100644 index 0000000..f44d380 --- /dev/null +++ b/rapid/glade3/photo_small.png diff --git a/rapid/glade3/rapid.glade b/rapid/glade3/rapid.glade index 7975593..163174b 100644 --- a/rapid/glade3/rapid.glade +++ b/rapid/glade3/rapid.glade @@ -2827,7 +2827,7 @@ You can download photos from multiple devices simultaneously, or you can specify <property name="icon">rapid-photo-downloader.svg</property> <property name="type_hint">normal</property> <property name="program_name">Rapid Photo Downloader</property> - <property name="copyright" translatable="yes">Copyright Damon Lynch 2007-10</property> + <property name="copyright" translatable="yes">Copyright Damon Lynch 2007-11</property> <property name="comments" translatable="yes">Import your photos and videos efficiently and reliably</property> <property name="website">http://www.damonlynch.net/rapid</property> <property name="license" translatable="yes">Rapid Photo Downloader is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. @@ -2840,6 +2840,7 @@ You should have received a copy of the GNU General Public License along with Rap Lőrincz András <level.andrasnak@gmail.com> Michel Ange <michelange@wanadoo.fr> Alain J. Baudrez <a.baudrez@gmail.com> +Bert <crinbert@yahoo.com> Martin Dahl Moe Martin Egger <martin.egger@gmx.net> Miroslav Matejaš <silverspace@ubuntu-hr.org> @@ -3112,8 +3113,8 @@ Aron Xu <happyaron.xu@gmail.com> <property name="use_underline">True</property> <property name="use_stock">True</property> <signal name="activate" handler="on_menu_zoom_in_activate"/> - <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/> <accelerator key="plus" signal="activate" modifiers="GDK_CONTROL_MASK"/> + <accelerator key="equal" signal="activate" modifiers="GDK_CONTROL_MASK"/> </widget> </child> <child> diff --git a/rapid/glade3/video_small.png b/rapid/glade3/video_small.png Binary files differnew file mode 100644 index 0000000..74e7c0f --- /dev/null +++ b/rapid/glade3/video_small.png diff --git a/rapid/rapid.py b/rapid/rapid.py index a69b80a..f41c79f 100755 --- a/rapid/rapid.py +++ b/rapid/rapid.py @@ -115,6 +115,9 @@ try: DROP_SHADOW = True except: DROP_SHADOW = False + + +#~ DROP_SHADOW = False # for testing from common import Configi18n global _ @@ -1621,6 +1624,11 @@ def generateSubfolderAndName(mediaFile, problem, subfolderPrefsFactory, else: mediaFile.status = STATUS_NOT_DOWNLOADED +def getGenericPhotoImage(): + return gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo.png')) + +def getGenericVideoImage(): + return gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video.png')) class NeedAJobCode(): """ @@ -1850,8 +1858,8 @@ class CopyPhotos(Thread): # load images to display for when a thumbnail cannot be extracted or created - self.photoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo.png')) - self.videoThumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video.png')) + self.photoThumbnail = getGenericPhotoImage() + self.videoThumbnail = getGenericVideoImage() imageRenameUsesJobCode = rn.usesJobCode(self.prefs.image_rename) imageSubfolderUsesJobCode = rn.usesJobCode(self.prefs.subfolder) @@ -1893,11 +1901,19 @@ class CopyPhotos(Thread): mediaFile.generateThumbnail(self.videoTempWorkingDir) if mediaFile.thumbnail is None: - mediaFile.genericThumbnail = True - if mediaFile.isImage: - mediaFile.thumbnail = self.photoThumbnail - else: - mediaFile.thumbnail = self.videoThumbnail + addGenericThumbnail(mediaFile) + + + def addGenericThumbnail(mediaFile): + """ + Adds a generic thumbnail to the mediafile, which + can be very useful when previews are disabled + """ + mediaFile.genericThumbnail = True + if mediaFile.isImage: + mediaFile.thumbnail = self.photoThumbnail + else: + mediaFile.thumbnail = self.videoThumbnail def downloadable(name): isImage = media.isImage(name) @@ -1907,9 +1923,10 @@ class CopyPhotos(Thread): return (download, isImage, isVideo) def addFile(name, path, size, modificationTime, device, volume, isImage): - #~ if debug_info: - #~ cmd_line("Scanning %s" % name) - + """ + Add an image or video to the list of scanned files to be shown to the user for potential downloading + """ + if isImage: downloadFolder = self.prefs.download_folder else: @@ -2336,7 +2353,8 @@ class CopyPhotos(Thread): with self.fileSequenceLock: for possibleName in renameFactory.generateNameSequencePossibilities( mediaFile.metadata, - mediaFile.name, self.stripCharacters, mediaFile.downloadSubfolder): + mediaFile.name, self.stripCharacters, mediaFile.downloadSubfolder, + fallback_date = mediaFile.modificationTime): if possibleName: # no need to check for any problems here, it's just a temporary name possibleFile = os.path.join(mediaFile.downloadPath, possibleName) @@ -3601,12 +3619,14 @@ class SelectionTreeView(gtk.TreeView): self.icon_photo = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo24.png')) self.icon_video = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video24.png')) #with shadows - self.generic_photo_with_shadow = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo_small_shadow.png')) - self.generic_video_with_shadow = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video_small_shadow.png')) - if DROP_SHADOW: + self.generic_photo_thumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo_small_shadow.png')) + self.generic_video_thumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video_small_shadow.png')) self.iconDropShadow = DropShadow(offset=(3,3), shadow = (0x34, 0x34, 0x34, 0xff), border=6) - + else: + self.generic_photo_thumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/photo_small.png')) + self.generic_video_thumbnail = gtk.gdk.pixbuf_new_from_file(paths.share_dir('glade3/video_small.png')) + self.previewed_file_treerowref = None self.icontheme = gtk.icon_theme_get_default() @@ -3719,11 +3739,14 @@ class SelectionTreeView(gtk.TreeView): def add_file(self, mediaFile): if debug_info: cmd_line('Adding file %s' % mediaFile.fullFileName) + + # metadata is loaded when previews are generated before downloading if mediaFile.metadata: date = mediaFile.dateTime() timestamp = mediaFile.metadata.timeStamp(missing=None) if timestamp is None: timestamp = mediaFile.modificationTime + # if metadata has not been loaded, substitute other values else: timestamp = mediaFile.modificationTime date = datetime.datetime.fromtimestamp(timestamp) @@ -3734,18 +3757,20 @@ class SelectionTreeView(gtk.TreeView): name = mediaFile.name size = mediaFile.size thumbnail = mediaFile.thumbnail - thumbnail_icon = common.scale2pixbuf(60, 36, thumbnail) - #thumbnail_icon = common.scale2pixbuf(80, 48, mediaFile.thumbnail) - if DROP_SHADOW: - if not mediaFile.genericThumbnail: - pil_image = pixbuf_to_image(thumbnail_icon) - pil_image = self.iconDropShadow.dropShadow(pil_image) - thumbnail_icon = image_to_pixbuf(pil_image) + + if mediaFile.genericThumbnail: + if mediaFile.isImage: + thumbnail_icon = self.generic_photo_thumbnail else: - if mediaFile.isImage: - thumbnail_icon = self.generic_photo_with_shadow - else: - thumbnail_icon = self.generic_video_with_shadow + thumbnail_icon = self.generic_video_thumbnail + else: + thumbnail_icon = common.scale2pixbuf(60, 36, thumbnail) + + if DROP_SHADOW and not mediaFile.genericThumbnail: + pil_image = pixbuf_to_image(thumbnail_icon) + pil_image = self.iconDropShadow.dropShadow(pil_image) + thumbnail_icon = image_to_pixbuf(pil_image) + if mediaFile.isImage: type_icon = self.icon_photo @@ -3754,7 +3779,7 @@ class SelectionTreeView(gtk.TreeView): status_icon = self.get_status_icon(mediaFile.status) - if debug_info: + if debug_info and False: cmd_line('Thumbnail icon: %s' % thumbnail_icon) cmd_line('Name: %s' % name) cmd_line('Timestamp: %s' % timestamp) |