summaryrefslogtreecommitdiff
path: root/rapid
diff options
context:
space:
mode:
Diffstat (limited to 'rapid')
-rw-r--r--rapid/ChangeLog17
-rw-r--r--rapid/config.py2
-rw-r--r--rapid/glade3/photo_small.pngbin0 -> 924 bytes
-rw-r--r--rapid/glade3/rapid.glade5
-rw-r--r--rapid/glade3/video_small.pngbin0 -> 1629 bytes
-rwxr-xr-xrapid/rapid.py79
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
new file mode 100644
index 0000000..f44d380
--- /dev/null
+++ b/rapid/glade3/photo_small.png
Binary files differ
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 &lt;level.andrasnak@gmail.com&gt;
Michel Ange &lt;michelange@wanadoo.fr&gt;
Alain J. Baudrez &lt;a.baudrez@gmail.com&gt;
+Bert &lt;crinbert@yahoo.com&gt;
Martin Dahl Moe
Martin Egger &lt;martin.egger@gmx.net&gt;
Miroslav Matejaš &lt;silverspace@ubuntu-hr.org&gt;
@@ -3112,8 +3113,8 @@ Aron Xu &lt;happyaron.xu@gmail.com&gt;
<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
new file mode 100644
index 0000000..74e7c0f
--- /dev/null
+++ b/rapid/glade3/video_small.png
Binary files differ
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)