diff -Nru photofilmstrip-1.9.92+dfsg/CHANGES photofilmstrip-2.0.0/CHANGES --- photofilmstrip-1.9.92+dfsg/CHANGES 2012-01-13 13:26:43.000000000 +0000 +++ photofilmstrip-2.0.0/CHANGES 2013-11-20 13:10:47.000000000 +0000 @@ -1,3 +1,35 @@ + * 2013/11/20 (Version 2.0.0) + added: + - thumbnails are stored in project database + - lazy loading of pictures + - acceleration algorithm for dynamic path movement + - tool button to swap the motion rectangles + - movement (linear, accelerated) can be adjusted for each picture + - new option to centralize motion rectangles path for still image animation + - new movement type 'delayed' + - toolbutton to unlock the image dimension restrictions + - multiselect of images + - russian translation + - greek translation + changed: + - long running tasks implemented as jobs + - a lot of internal refactoring + bugfix: + - application icon not only for GNOME;XFCE (enabled for all) + - MANIFEST.in updated to create valid source dist + - default value for videonorm in settings file is PAL + - fixed #29: film strip scrambled with >185 slides loaded + - GUI freeze while loading a project + - unexpected error occured when removing an image which is hovered + - automatic path calculation after inserting images fixed + - videonorm must be one of PAL or NTSC + + + * 2011/11/28 (Version 1.5.0) + added: + - rendering uses affine transformation for speed up and smoother image movement + + * 2010/12/20 (Version 1.4.0) added: - italian translation @@ -301,4 +333,4 @@ * 2008/10/11 - initial release \ No newline at end of file + initial release diff -Nru photofilmstrip-1.9.92+dfsg/PKG-INFO photofilmstrip-2.0.0/PKG-INFO --- photofilmstrip-1.9.92+dfsg/PKG-INFO 2012-12-05 23:06:24.000000000 +0000 +++ photofilmstrip-2.0.0/PKG-INFO 2013-11-20 13:11:11.000000000 +0000 @@ -1,6 +1,6 @@ Metadata-Version: 1.0 Name: photofilmstrip -Version: 1.9.92 +Version: 2.0.0 Summary: PhotoFilmStrip - Creates movies out of your pictures. Home-page: http://www.photofilmstrip.org Author: Jens Göpfert diff -Nru photofilmstrip-1.9.92+dfsg/debian/README.Debian photofilmstrip-2.0.0/debian/README.Debian --- photofilmstrip-1.9.92+dfsg/debian/README.Debian 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/README.Debian 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,6 @@ +photofilmstrip for Debian +------------------------- + + + + -- Dariusz Duma Mon, 02 May 2011 16:28:28 +0200 diff -Nru photofilmstrip-1.9.92+dfsg/debian/README.source photofilmstrip-2.0.0/debian/README.source --- photofilmstrip-1.9.92+dfsg/debian/README.source 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/README.source 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,9 @@ +photofilmstrip for Debian +------------------------- + + + + + + diff -Nru photofilmstrip-1.9.92+dfsg/debian/changelog photofilmstrip-2.0.0/debian/changelog --- photofilmstrip-1.9.92+dfsg/debian/changelog 2013-07-18 11:31:13.000000000 +0000 +++ photofilmstrip-2.0.0/debian/changelog 2013-12-11 15:44:51.000000000 +0000 @@ -1,29 +1,50 @@ -photofilmstrip (1.9.92+dfsg-1) unstable; urgency=low +photofilmstrip (2.0.0-1dhor~all) all; urgency=low - * New upstream release (Closes: #695062) - * Updated standards version: 3.9.4 (no changes needed) - * Updated debian/copyright - * Corrected debian/watch + * thumbnails are stored in project database + * lazy loading of pictures + * acceleration algorithm for dynamic path movement + * tool button to swap the motion rectangles + * movement (linear, accelerated) can be adjusted for each picture + * new option to centralize motion rectangles path for still image animation + * new movement type 'delayed' + * toolbutton to unlock the image dimension restrictions + * multiselect of images + * russian translation + * greek translation + * long running tasks implemented as jobs + * a lot of internal refactoring + * application icon not only for GNOME;XFCE (enabled for all) + * MANIFEST.in updated to create valid source dist + * default value for videonorm in settings file is PAL + * fixed #29: film strip scrambled with >185 slides loaded + * GUI freeze while loading a project + * unexpected error occured when removing an image which is hovered + * automatic path calculation after inserting images fixed + * videonorm must be one of PAL or NTSC - -- Philipp Huebner Thu, 18 Jul 2013 13:30:51 +0200 + -- Dariusz Duma Wed, 11 Dec 2013 16:43:35 +0100 -photofilmstrip (1.9.91+dfsg-1) unstable; urgency=low +photofilmstrip (1.5.0-1dhor~all) all; urgency=low - [ Gürkan Sengün ] - * Repackaged (remove windows/) - * New upstream version (Closes: #668857) - * Bumped up standards version to 3.9.3. + * The image processing is now done by affine transformation which speeds up the rendering process. - [ Philipp Huebner ] - * Fixed double installation of html documentation - * Added doc-base registration - * Added myself as uploader - * Updated debian/copyright + -- Dariusz Duma Tue, 20 Dec 2011 07:05:21 +0100 - -- Philipp Huebner Tue, 22 May 2012 14:45:58 +0200 +photofilmstrip (1.4.4-1dhor~all) all; urgency=low -photofilmstrip (1.4.0-1) unstable; urgency=low + * Renders slideshows with AC3 audio. - * Initial release. (Closes: #586268) + -- Dariusz Duma Sat, 30 Jul 2011 08:43:41 +0200 - -- Gürkan Sengün Thu, 27 Jan 2011 10:26:08 +0100 +photofilmstrip (1.4.3-1dhor~all) all; urgency=low + + * Project files and images are loading faster + * Bugfixes + + -- Dariusz Duma Wed, 08 Jun 2011 12:23:36 +0200 + +photofilmstrip (1.4.1-3dhor~all) all; urgency=low + + * 1.4.1 + + -- Dariusz Duma Mon, 02 May 2011 16:28:28 +0200 diff -Nru photofilmstrip-1.9.92+dfsg/debian/control photofilmstrip-2.0.0/debian/control --- photofilmstrip-1.9.92+dfsg/debian/control 2013-06-05 09:21:13.000000000 +0000 +++ photofilmstrip-2.0.0/debian/control 2013-12-11 17:00:48.000000000 +0000 @@ -1,22 +1,15 @@ Source: photofilmstrip -Section: video -Priority: optional -Maintainer: Gürkan Sengün -Uploaders: Jens Göpfert , Philipp Huebner -Build-Depends: debhelper (>= 7.0.50~), python (>= 2.6.6-3~) -X-Python-Version: >= 2.5 -Standards-Version: 3.9.4 -Homepage: http://www.photofilmstrip.org/ +Section: graphics +Priority: extra +Maintainer: Dariusz Duma +Build-Depends: debhelper (>= 7.0.50~), python-minimal, python +Standards-Version: 3.8.4 +Homepage: http://www.photofilmstrip.org +X-Python-Version: >=2.7 +#Vcs-Git: git://git.debian.org/collab-maint/photofilmstrip.git +#Vcs-Browser: http://git.debian.org/?p=collab-maint/photofilmstrip.git;a=summary Package: photofilmstrip -Architecture: all -Depends: ${misc:Depends}, mencoder, python-wxgtk2.8, python-imaging, ${python:Depends} -Description: Slideshow creator with Ken Burns effect - This creates movies out of your pictures in just three steps. - First select your photos, customize the motion path and render the - video. There are several output possibilities for VCD, SVCD, DVD up to - FULL-HD. - . - The effect of the slideshow is known as "Ken Burns". Comments of the - pictures are generated into a subtitle file. Furthermore an audio file - can be specified to setup the background music for the slide show. +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, python-wxversion, mencoder, python-imaging, libwxbase2.8-0 +Description: DVD slideshow creator. diff -Nru photofilmstrip-1.9.92+dfsg/debian/copyright photofilmstrip-2.0.0/debian/copyright --- photofilmstrip-1.9.92+dfsg/debian/copyright 2013-06-05 09:21:01.000000000 +0000 +++ photofilmstrip-2.0.0/debian/copyright 2011-05-02 14:28:32.000000000 +0000 @@ -1,44 +1,37 @@ -This package was debianized by: +This work was packaged for Debian by: - Jens Göpfert on Sun, 05 Oct 2008 17:31:35 +0200 and - Gürkan Sengün on Sat, 11 Dec 2010 11:11:11 +0200. + Dariusz Duma on Mon, 02 May 2011 16:28:28 +0200 It was downloaded from: - http://www.photofilmstrip.org/ + -Upstream Author: +Upstream Author(s): - Jens Göpfert + + Copyright: - © 2008-2013 Jens Göpfert + + License: - This package 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. - - This package is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this package; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL-2'. + The Debian packaging is: - © 2008 Jens Göpfert and - © 2010-2012 Gürkan Sengün - © 2012-2013 Philipp Huebner + Copyright (C) 2011 Dariusz Duma + +# Please chose a license for your packaging work. If the program you package +# uses a mainstream license, using the same license is the safest choice. +# Please avoid to pick license terms that are more restrictive than the +# packaged work, as it may make Debian's contributions unacceptable upstream. +# If you just want it to be GPL version 3, leave the following lines in. and is licensed under the GPL version 3, -see `/usr/share/common-licenses/GPL-3'. +see "/usr/share/common-licenses/GPL-3". + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff -Nru photofilmstrip-1.9.92+dfsg/debian/docs photofilmstrip-2.0.0/debian/docs --- photofilmstrip-1.9.92+dfsg/debian/docs 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/docs 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,2 @@ +README +TODO diff -Nru photofilmstrip-1.9.92+dfsg/debian/emacsen-install.ex photofilmstrip-2.0.0/debian/emacsen-install.ex --- photofilmstrip-1.9.92+dfsg/debian/emacsen-install.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/emacsen-install.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,45 @@ +#! /bin/sh -e +# /usr/lib/emacsen-common/packages/install/photofilmstrip + +# Written by Jim Van Zandt , borrowing heavily +# from the install scripts for gettext by Santiago Vila +# and octave by Dirk Eddelbuettel . + +FLAVOR=$1 +PACKAGE=photofilmstrip + +if [ ${FLAVOR} = emacs ]; then exit 0; fi + +echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} + +#FLAVORTEST=`echo $FLAVOR | cut -c-6` +#if [ ${FLAVORTEST} = xemacs ] ; then +# SITEFLAG="-no-site-file" +#else +# SITEFLAG="--no-site-file" +#fi +FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" + +ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} +ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} + +# Install-info-altdir does not actually exist. +# Maybe somebody will write it. +if test -x /usr/sbin/install-info-altdir; then + echo install/${PACKAGE}: install Info links for ${FLAVOR} + install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz +fi + +install -m 755 -d ${ELCDIR} +cd ${ELDIR} +FILES=`echo *.el` +cp ${FILES} ${ELCDIR} +cd ${ELCDIR} + +cat << EOF > path.el +(setq load-path (cons "." load-path) byte-compile-warnings nil) +EOF +${FLAVOR} ${FLAGS} ${FILES} +rm -f *.el path.el + +exit 0 diff -Nru photofilmstrip-1.9.92+dfsg/debian/emacsen-remove.ex photofilmstrip-2.0.0/debian/emacsen-remove.ex --- photofilmstrip-1.9.92+dfsg/debian/emacsen-remove.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/emacsen-remove.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,15 @@ +#!/bin/sh -e +# /usr/lib/emacsen-common/packages/remove/photofilmstrip + +FLAVOR=$1 +PACKAGE=photofilmstrip + +if [ ${FLAVOR} != emacs ]; then + if test -x /usr/sbin/install-info-altdir; then + echo remove/${PACKAGE}: removing Info links for ${FLAVOR} + install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/photofilmstrip.info.gz + fi + + echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} + rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} +fi diff -Nru photofilmstrip-1.9.92+dfsg/debian/emacsen-startup.ex photofilmstrip-2.0.0/debian/emacsen-startup.ex --- photofilmstrip-1.9.92+dfsg/debian/emacsen-startup.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/emacsen-startup.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,25 @@ +;; -*-emacs-lisp-*- +;; +;; Emacs startup file, e.g. /etc/emacs/site-start.d/50photofilmstrip.el +;; for the Debian photofilmstrip package +;; +;; Originally contributed by Nils Naumann +;; Modified by Dirk Eddelbuettel +;; Adapted for dh-make by Jim Van Zandt + +;; The photofilmstrip package follows the Debian/GNU Linux 'emacsen' policy and +;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, +;; xemacs19, emacs20, xemacs20...). The compiled code is then +;; installed in a subdirectory of the respective site-lisp directory. +;; We have to add this to the load-path: +(let ((package-dir (concat "/usr/share/" + (symbol-name flavor) + "/site-lisp/photofilmstrip"))) +;; If package-dir does not exist, the photofilmstrip package must have +;; removed but not purged, and we should skip the setup. + (when (file-directory-p package-dir) + (setq load-path (cons package-dir load-path)) + (autoload 'photofilmstrip-mode "photofilmstrip-mode" + "Major mode for editing photofilmstrip files." t) + (add-to-list 'auto-mode-alist '("\\.photofilmstrip$" . photofilmstrip-mode)))) + diff -Nru photofilmstrip-1.9.92+dfsg/debian/init.d.ex photofilmstrip-2.0.0/debian/init.d.ex --- photofilmstrip-1.9.92+dfsg/debian/init.d.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/init.d.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,154 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: photofilmstrip +# Required-Start: $network $local_fs +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: +# Description: +# <...> +# <...> +### END INIT INFO + +# Author: Dariusz Duma + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC=photofilmstrip # Introduce a short description here +NAME=photofilmstrip # Introduce the short server's name here +DAEMON=/usr/sbin/photofilmstrip # Introduce the server's location here +DAEMON_ARGS="" # Arguments to run the daemon with +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x $DAEMON ] || exit 0 + +# Read configuration variable file if it is present +[ -r /etc/default/$NAME ] && . /etc/default/$NAME + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ + $DAEMON_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + # If the above conditions are not satisfied then add some other code + # that waits for the process to drop all resources that could be + # needed by services started subsequently. A last resort is to + # sleep for some time. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON + [ "$?" = 2 ] && return 2 + # Many daemons don't delete their pidfiles when they exit. + rm -f $PIDFILE + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME + return 0 +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC " "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + status) + status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? + ;; + #reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + #log_daemon_msg "Reloading $DESC" "$NAME" + #do_reload + #log_end_msg $? + #;; + restart|force-reload) + # + # If the "reload" option is implemented then remove the + # 'force-reload' alias + # + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + +: diff -Nru photofilmstrip-1.9.92+dfsg/debian/manpage.1.ex photofilmstrip-2.0.0/debian/manpage.1.ex --- photofilmstrip-1.9.92+dfsg/debian/manpage.1.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/manpage.1.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,59 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH PHOTOFILMSTRIP SECTION "May 2, 2011" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +photofilmstrip \- program to do something +.SH SYNOPSIS +.B photofilmstrip +.RI [ options ] " files" ... +.br +.B bar +.RI [ options ] " files" ... +.SH DESCRIPTION +This manual page documents briefly the +.B photofilmstrip +and +.B bar +commands. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBphotofilmstrip\fP is a program that... +.SH OPTIONS +These programs follow the usual GNU command line syntax, with long +options starting with two dashes (`-'). +A summary of options is included below. +For a complete description, see the Info files. +.TP +.B \-h, \-\-help +Show summary of options. +.TP +.B \-v, \-\-version +Show version of program. +.SH SEE ALSO +.BR bar (1), +.BR baz (1). +.br +The programs are documented fully by +.IR "The Rise and Fall of a Fooish Bar" , +available via the Info system. +.SH AUTHOR +photofilmstrip was written by . +.PP +This manual page was written by Dariusz Duma , +for the Debian project (and may be used by others). diff -Nru photofilmstrip-1.9.92+dfsg/debian/manpage.sgml.ex photofilmstrip-2.0.0/debian/manpage.sgml.ex --- photofilmstrip-1.9.92+dfsg/debian/manpage.sgml.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/manpage.sgml.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,154 @@ + manpage.1'. You may view + the manual page with: `docbook-to-man manpage.sgml | nroff -man | + less'. A typical entry in a Makefile or Makefile.am is: + +manpage.1: manpage.sgml + docbook-to-man $< > $@ + + + The docbook-to-man binary is found in the docbook-to-man package. + Please remember that if you create the nroff version in one of the + debian/rules file targets (such as build), you will need to include + docbook-to-man in your Build-Depends control field. + + --> + + + FIRSTNAME"> + SURNAME"> + + May 2, 2011"> + + SECTION"> + dhor@unknown"> + + PHOTOFILMSTRIP"> + + + Debian"> + GNU"> + GPL"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2003 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + program to do something + + + + &dhpackage; + + + + + + + + DESCRIPTION + + This manual page documents briefly the + &dhpackage; and bar + commands. + + This manual page was written for the &debian; distribution + because the original program does not have a manual page. + Instead, it has documentation in the &gnu; + Info format; see below. + + &dhpackage; is a program that... + + + + OPTIONS + + These programs follow the usual &gnu; command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + Info files. + + + + + + + + Show summary of options. + + + + + + + + Show version of program. + + + + + + SEE ALSO + + bar (1), baz (1). + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + Info system. + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (and may be used by others). Permission is + granted to copy, distribute and/or modify this document under + the terms of the &gnu; General Public License, Version 2 any + later version published by the Free Software Foundation. + + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL. + + + +
+ + diff -Nru photofilmstrip-1.9.92+dfsg/debian/manpage.xml.ex photofilmstrip-2.0.0/debian/manpage.xml.ex --- photofilmstrip-1.9.92+dfsg/debian/manpage.xml.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/manpage.xml.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,291 @@ + +.
will be generated. You may view the +manual page with: nroff -man .
| less'. A typical entry +in a Makefile or Makefile.am is: + +DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/docbook-xsl/manpages/docbook.xsl +XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" + +manpage.1: manpage.xml + $(XP) $(DB2MAN) $< + +The xsltproc binary is found in the xsltproc package. The XSL files are in +docbook-xsl. A description of the parameters you can use can be found in the +docbook-xsl-doc-* packages. Please remember that if you create the nroff +version in one of the debian/rules file targets (such as build), you will need +to include xsltproc and docbook-xsl in your Build-Depends control field. +Alternatively use the xmlto command/package. That will also automatically +pull in xsltproc and docbook-xsl. + +Notes for using docbook2x: docbook2x-man does not automatically create the +AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as + ... . + +To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections +read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be +found in the docbook-xsl-doc-html package. + +Validation can be done using: `xmllint -''-noout -''-valid manpage.xml` + +General documentation about man-pages and man-page-formatting: +man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ + +--> + + + + + + + + + + + + + +]> + + + + &dhtitle; + &dhpackage; + + + &dhfirstname; + &dhsurname; + Wrote this manpage for the Debian system. +
+ &dhemail; +
+
+
+ + 2007 + &dhusername; + + + This manual page was written for the Debian system + (and may be used by others). + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU General Public License, + Version 2 or (at your option) any later version published by + the Free Software Foundation. + On Debian systems, the complete text of the GNU General Public + License can be found in + /usr/share/common-licenses/GPL. + +
+ + &dhucpackage; + &dhsection; + + + &dhpackage; + program to do something + + + + &dhpackage; + + + + + + + + + this + + + + + + + + this + that + + + + + &dhpackage; + + + + + + + + + + + + + + + + + + + DESCRIPTION + This manual page documents briefly the + &dhpackage; and bar + commands. + This manual page was written for the Debian distribution + because the original program does not have a manual page. + Instead, it has documentation in the GNU + info + 1 + format; see below. + &dhpackage; is a program that... + + + OPTIONS + The program follows the usual GNU command line syntax, + with long options starting with two dashes (`-'). A summary of + options is included below. For a complete description, see the + + info + 1 + files. + + + + + + + Does this and that. + + + + + + + Show summary of options. + + + + + + + Show version of program. + + + + + + FILES + + + /etc/foo.conf + + The system-wide configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + ${HOME}/.foo.conf + + The per-user configuration file to control the + behaviour of &dhpackage;. See + + foo.conf + 5 + for further details. + + + + + + ENVIONMENT + + + FOO_CONF + + If used, the defined file is used as configuration + file (see also ). + + + + + + DIAGNOSTICS + The following diagnostics may be issued + on stderr: + + + Bad configuration file. Exiting. + + The configuration file seems to contain a broken configuration + line. Use the option, to get more info. + + + + + &dhpackage; provides some return codes, that can + be used in scripts: + + Code + Diagnostic + + 0 + Program exited successfully. + + + 1 + The configuration file seems to be broken. + + + + + + BUGS + The program is currently limited to only work + with the foobar library. + The upstreams BTS can be found + at . + + + SEE ALSO + + + bar + 1 + , + baz + 1 + , + foo.conf + 5 + + The programs are documented fully by The Rise and + Fall of a Fooish Bar available via the + info + 1 + system. + +
+ diff -Nru photofilmstrip-1.9.92+dfsg/debian/menu.ex photofilmstrip-2.0.0/debian/menu.ex --- photofilmstrip-1.9.92+dfsg/debian/menu.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/menu.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,2 @@ +?package(photofilmstrip):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\ + title="photofilmstrip" command="/usr/bin/photofilmstrip" diff -Nru photofilmstrip-1.9.92+dfsg/debian/patches/series photofilmstrip-2.0.0/debian/patches/series --- photofilmstrip-1.9.92+dfsg/debian/patches/series 2012-04-15 06:23:03.000000000 +0000 +++ photofilmstrip-2.0.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -strip-encoding diff -Nru photofilmstrip-1.9.92+dfsg/debian/patches/strip-encoding photofilmstrip-2.0.0/debian/patches/strip-encoding --- photofilmstrip-1.9.92+dfsg/debian/patches/strip-encoding 2012-04-15 06:23:05.000000000 +0000 +++ photofilmstrip-2.0.0/debian/patches/strip-encoding 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -Description: - TODO: Put a short summary on the line above and replace this paragraph - with a longer explanation of this change. Complete the meta-information - with other relevant fields (see below for details). To make it easier, the - information below has been extracted from the changelog. Adjust it or drop - it. - . - photofilmstrip (1.9.91+dfsg-1) unstable; urgency=low - . - * Repackaged (remove windows/) - * New upstream version. - * Bump standards version to 3.9.3. -Author: Gürkan Sengün - ---- -The information above should follow the Patch Tagging Guidelines, please -checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here -are templates for supplementary fields that you might want to add: - -Origin: , -Bug: -Bug-Debian: http://bugs.debian.org/ -Bug-Ubuntu: https://launchpad.net/bugs/ -Forwarded: -Reviewed-By: -Last-Update: - ---- photofilmstrip-1.9.91+dfsg.orig/data/photofilmstrip.desktop -+++ photofilmstrip-1.9.91+dfsg/data/photofilmstrip.desktop -@@ -1,6 +1,5 @@ - [Desktop Entry] - Version=1.9.0 --Encoding=UTF-8 - Name=PhotoFilmStrip - GenericName=Slideshow Creator - Comment=Create animated slideshows diff -Nru photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.cron.d.ex photofilmstrip-2.0.0/debian/photofilmstrip.cron.d.ex --- photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.cron.d.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/photofilmstrip.cron.d.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,4 @@ +# +# Regular cron jobs for the photofilmstrip package +# +0 4 * * * root [ -x /usr/bin/photofilmstrip_maintenance ] && /usr/bin/photofilmstrip_maintenance diff -Nru photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.default.ex photofilmstrip-2.0.0/debian/photofilmstrip.default.ex --- photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.default.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/photofilmstrip.default.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,10 @@ +# Defaults for photofilmstrip initscript +# sourced by /etc/init.d/photofilmstrip +# installed at /etc/default/photofilmstrip by the maintainer scripts + +# +# This is a POSIX shell fragment +# + +# Additional options that are passed to the Daemon. +DAEMON_OPTS="" diff -Nru photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.doc-base photofilmstrip-2.0.0/debian/photofilmstrip.doc-base --- photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.doc-base 2012-05-22 13:17:44.000000000 +0000 +++ photofilmstrip-2.0.0/debian/photofilmstrip.doc-base 2012-01-13 13:26:36.000000000 +0000 @@ -1,8 +1,10 @@ Document: photofilmstrip -Title: Debian PhotoFilmStrip Manual -Author: Jens Göpfert -Abstract: How to create and render a PhotoFilmStrip and more -Section: Video +Title: PhotoFilmStrip Manual +Author: Jens Goepfert +Abstract: This manual describes what photofilmstrip is + and how it can be used to + manage online manuals on Debian systems. +Section: graphics Format: HTML Index: /usr/share/doc/photofilmstrip/html/index.html diff -Nru photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.doc-base.EX photofilmstrip-2.0.0/debian/photofilmstrip.doc-base.EX --- photofilmstrip-1.9.92+dfsg/debian/photofilmstrip.doc-base.EX 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/photofilmstrip.doc-base.EX 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,20 @@ +Document: photofilmstrip +Title: Debian photofilmstrip Manual +Author: +Abstract: This manual describes what photofilmstrip is + and how it can be used to + manage online manuals on Debian systems. +Section: unknown + +Format: debiandoc-sgml +Files: /usr/share/doc/photofilmstrip/photofilmstrip.sgml.gz + +Format: postscript +Files: /usr/share/doc/photofilmstrip/photofilmstrip.ps.gz + +Format: text +Files: /usr/share/doc/photofilmstrip/photofilmstrip.text.gz + +Format: HTML +Index: /usr/share/doc/photofilmstrip/html/index.html +Files: /usr/share/doc/photofilmstrip/html/*.html diff -Nru photofilmstrip-1.9.92+dfsg/debian/postinst.ex photofilmstrip-2.0.0/debian/postinst.ex --- photofilmstrip-1.9.92+dfsg/debian/postinst.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/postinst.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,39 @@ +#!/bin/sh +# postinst script for photofilmstrip +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-remove' +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + configure) + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru photofilmstrip-1.9.92+dfsg/debian/postrm.ex photofilmstrip-2.0.0/debian/postrm.ex --- photofilmstrip-1.9.92+dfsg/debian/postrm.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/postrm.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,37 @@ +#!/bin/sh +# postrm script for photofilmstrip +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `purge' +# * `upgrade' +# * `failed-upgrade' +# * `abort-install' +# * `abort-install' +# * `abort-upgrade' +# * `disappear' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru photofilmstrip-1.9.92+dfsg/debian/preinst.ex photofilmstrip-2.0.0/debian/preinst.ex --- photofilmstrip-1.9.92+dfsg/debian/preinst.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/preinst.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,35 @@ +#!/bin/sh +# preinst script for photofilmstrip +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru photofilmstrip-1.9.92+dfsg/debian/prerm.ex photofilmstrip-2.0.0/debian/prerm.ex --- photofilmstrip-1.9.92+dfsg/debian/prerm.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/prerm.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,38 @@ +#!/bin/sh +# prerm script for photofilmstrip +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `remove' +# * `upgrade' +# * `failed-upgrade' +# * `remove' `in-favour' +# * `deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + remove|upgrade|deconfigure) + ;; + + failed-upgrade) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff -Nru photofilmstrip-1.9.92+dfsg/debian/pycompat photofilmstrip-2.0.0/debian/pycompat --- photofilmstrip-1.9.92+dfsg/debian/pycompat 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/pycompat 2012-01-13 13:26:36.000000000 +0000 @@ -0,0 +1 @@ +2 diff -Nru photofilmstrip-1.9.92+dfsg/debian/rules photofilmstrip-2.0.0/debian/rules --- photofilmstrip-1.9.92+dfsg/debian/rules 2011-02-11 08:53:26.000000000 +0000 +++ photofilmstrip-2.0.0/debian/rules 2013-12-11 16:38:51.000000000 +0000 @@ -1,6 +1,13 @@ #!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 %: - dh $@ --with python2 + dh $@ --with-python diff -Nru photofilmstrip-1.9.92+dfsg/debian/watch photofilmstrip-2.0.0/debian/watch --- photofilmstrip-1.9.92+dfsg/debian/watch 2013-06-05 09:43:08.000000000 +0000 +++ photofilmstrip-2.0.0/debian/watch 2012-01-13 13:26:36.000000000 +0000 @@ -1,3 +1,16 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file version=3 -opts=dversionmangle=s/\+dfsg// \ + +# Uncomment to examine a Webserver directory http://www.photofilmstrip.org/builds/photofilmstrip-(.*)\.tar\.gz + +# Uncomment to find new files on sourceforge, for devscripts >= 2.9 +# http://sf.net/photofilmstrip/photofilmstrip-(.*)\.tar\.gz + +# Uncomment to find new files on GooglePages +# http://example.googlepages.com/foo.html photofilmstrip-(.*)\.tar\.gz diff -Nru photofilmstrip-1.9.92+dfsg/debian/watch.ex photofilmstrip-2.0.0/debian/watch.ex --- photofilmstrip-1.9.92+dfsg/debian/watch.ex 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/debian/watch.ex 2011-05-02 14:28:32.000000000 +0000 @@ -0,0 +1,23 @@ +# Example watch control file for uscan +# Rename this file to "watch" and then you can run the "uscan" command +# to check for upstream updates and more. +# See uscan(1) for format + +# Compulsory line, this is a version 3 file +version=3 + +# Uncomment to examine a Webpage +# +#http://www.example.com/downloads.php photofilmstrip-(.*)\.tar\.gz + +# Uncomment to examine a Webserver directory +#http://www.example.com/pub/photofilmstrip-(.*)\.tar\.gz + +# Uncommment to examine a FTP server +#ftp://ftp.example.com/pub/photofilmstrip-(.*)\.tar\.gz debian uupdate + +# Uncomment to find new files on sourceforge, for devscripts >= 2.9 +# http://sf.net/photofilmstrip/photofilmstrip-(.*)\.tar\.gz + +# Uncomment to find new files on GooglePages +# http://example.googlepages.com/foo.html photofilmstrip-(.*)\.tar\.gz diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/Constants.py photofilmstrip-2.0.0/photofilmstrip/Constants.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/Constants.py 2012-02-28 20:57:32.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/Constants.py 2013-11-20 13:10:46.000000000 +0000 @@ -31,7 +31,7 @@ APP_DIR = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "..") APP_NAME = "PhotoFilmStrip" -APP_VERSION = "1.9.92" +APP_VERSION = "2.0.0" APP_VERSION_EX = "%s-%s" % (APP_VERSION, SVN_REV) APP_SLOGAN = "PhotoFilmStrip - Creates movies out of your pictures." APP_DESCRIPTION = """\ @@ -40,4 +40,4 @@ APP_URL = "http://www.photofilmstrip.org" DEVELOPERS = [u"Jens Göpfert", u"Markus Wintermann"] -TRANSLATORS = ["Teza Lprod - http://lprod.org"] +TRANSLATORS = ["Teza Lprod - http://lprod.org", "geogeo - http://www.geogeo.gr"] diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/action/ActionAutoPath.py photofilmstrip-2.0.0/photofilmstrip/action/ActionAutoPath.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/action/ActionAutoPath.py 2012-01-13 13:26:36.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/action/ActionAutoPath.py 2013-11-12 14:20:45.000000000 +0000 @@ -57,12 +57,12 @@ elif d == 1: targetRect = (0, height - (scaledWidth / ratio), scaledWidth, scaledWidth / ratio) elif d == 2: - targetRect = (width - (scaledWidth / ratio), 0, scaledWidth, scaledWidth / ratio) + targetRect = (width - scaledWidth, 0, scaledWidth, scaledWidth / ratio) elif d == 3: - targetRect = (width - (scaledWidth / ratio), height - (scaledWidth / ratio), scaledWidth, scaledWidth / ratio) + targetRect = (width - scaledWidth, height - (scaledWidth / ratio), scaledWidth, scaledWidth / ratio) if random.randint(0, 1): targetRect, startRect = startRect, targetRect - + self.__picture.SetStartRect(startRect) self.__picture.SetTargetRect(targetRect) diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/action/ActionCenterPath.py photofilmstrip-2.0.0/photofilmstrip/action/ActionCenterPath.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/action/ActionCenterPath.py 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/action/ActionCenterPath.py 2013-11-12 19:30:46.000000000 +0000 @@ -0,0 +1,53 @@ +# encoding: UTF-8 +# +# PhotoFilmStrip - Creates movies out of your pictures. +# +# Copyright (C) 2013 Jens Goepfert +# +# This program 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. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +from photofilmstrip.action.IAction import IAction + +from photofilmstrip.core.Aspect import Aspect +from photofilmstrip.core import PILBackend + + +class ActionCenterPath(IAction): + + def __init__(self, picture, aspect): + self.__picture = picture + self.__aspect = aspect + + def GetName(self): + return _(u'Centralize motion') + + def Execute(self): + ratio = Aspect.ToFloat(self.__aspect) + width, height = PILBackend.GetImageSize(self.__picture.GetFilename()) + + picRatio = width / float(height) + if picRatio > ratio: + scaledWidth = height * ratio + scaledHeight = height + else: + scaledWidth = width + scaledHeight = width / ratio + + centerRect = (int(round((width - scaledWidth) /2.0)), + int(round((height - scaledHeight) / 2.0)), + int(round(scaledWidth)), int(round(scaledHeight))) + self.__picture.SetStartRect(centerRect) + self.__picture.SetTargetRect(centerRect) diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/core/Picture.py photofilmstrip-2.0.0/photofilmstrip/core/Picture.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/core/Picture.py 2012-02-27 19:27:38.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/core/Picture.py 2013-11-12 20:10:45.000000000 +0000 @@ -34,6 +34,10 @@ TRANS_FADE = 1 TRANS_ROLL = 2 + MOVE_LINEAR = 0 + MOVE_ACCEL = 1 + MOVE_DELAYED = 2 + def __init__(self, filename): Observable.__init__(self) self._filename = filename @@ -42,6 +46,7 @@ self._isDummy = False self._duration = 7.0 + self._movement = Picture.MOVE_ACCEL self._rotation = 0 self._comment = u"" self._effect = Picture.EFFECT_NONE @@ -98,6 +103,14 @@ def GetDuration(self): return self._duration + def SetMovement(self, movement): + if movement == self._movement: + return + self._movement = movement + self.Notify("movement") + def GetMovement(self): + return self._movement + def SetComment(self, comment): if comment == self._comment: return diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/core/ProjectFile.py photofilmstrip-2.0.0/photofilmstrip/core/ProjectFile.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/core/ProjectFile.py 2012-02-27 19:27:38.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/core/ProjectFile.py 2013-11-12 12:50:45.000000000 +0000 @@ -15,8 +15,10 @@ from photofilmstrip.core.Project import Project -SCHEMA_REV = 3 +SCHEMA_REV = 4 """ +4: +- added column movement to table picture 3: - added thumbnail table 2: @@ -42,6 +44,7 @@ target_height INTEGER, rotation INTEGER, duration DOUBLE, + movement INTEGER, comment TEXT, effect INTEGER, transition INTEGER, @@ -73,6 +76,7 @@ self.__conn = None self.__altPaths = {} + self.__fileRev = 1 def __del__(self): if self.__conn is not None: @@ -86,6 +90,16 @@ if self.__conn is None: self.__conn = sqlite3.connect(Encode(self._filename), detect_types=sqlite3.PARSE_DECLTYPES | sqlite3.PARSE_COLNAMES) + cur = self.__GetCursor() + + try: + # at the beginning we had no property table + cur.execute("SELECT value FROM `property` WHERE name=?", ("rev", )) + result = cur.fetchone() + if result: + self.__fileRev = int(result[0]) + except sqlite3.DatabaseError: + pass def __Close(self, commit=False): if self.__conn is None: @@ -164,16 +178,17 @@ "filename, width, height, " \ "start_left, start_top, start_width, start_height, " \ "target_left, target_top, target_width, target_height, " \ - "rotation, duration, comment, effect, " \ + "rotation, duration, movement, comment, effect, " \ "transition, transition_duration, data" \ ") VALUES (" \ - "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" \ + "?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?" \ ");" values = (pic.GetFilename(), pic.GetWidth(), pic.GetHeight(), pic.GetStartRect()[0], pic.GetStartRect()[1], pic.GetStartRect()[2], pic.GetStartRect()[3], pic.GetTargetRect()[0], pic.GetTargetRect()[1], pic.GetTargetRect()[2], pic.GetTargetRect()[3], - pic.GetRotation(), pic.GetDuration(), pic.GetComment(), pic.GetEffect(), + pic.GetRotation(), pic.GetDuration(), pic.GetMovement(), + pic.GetComment(), pic.GetEffect(), pic.GetTransition(), pic.GetTransitionDuration(rawValue=True), picData) return query, values @@ -290,6 +305,7 @@ rect = (row["target_left"], row["target_top"], row["target_width"], row["target_height"]) pic.SetTargetRect(rect) pic.SetDuration(row["duration"]) + pic.SetMovement(self.__LoadSafe(row, "movement", Picture.MOVE_LINEAR)) pic.SetComment(row["comment"]) pic.SetRotation(row['rotation']) pic.SetEffect(self.__LoadSafe(row, 'effect', Picture.EFFECT_NONE)) @@ -297,7 +313,7 @@ pic.SetTransition(self.__LoadSafe(row, 'transition', Picture.TRANS_FADE)) pic.SetTransitionDuration(self.__LoadSafe(row, 'transition_duration', 1.0)) - self.__LoadThumbnail(fileRev, pic, row["picture_id"]) + self.__LoadThumbnail(pic, row["picture_id"]) picList.append(pic) @@ -313,11 +329,11 @@ self._project = project return True - def __LoadThumbnail(self, fileRev, pic, picId): + def __LoadThumbnail(self, pic, picId): ImageCache().RegisterPicture(pic) return thumbNail = None - if fileRev >= 3: + if self.__fileRev >= 3: cur = self.__GetCursor() cur.execute("SELECT * FROM `thumbnail` WHERE picture_id=?", (picId, )) row = cur.fetchone() diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/core/RenderEngine.py photofilmstrip-2.0.0/photofilmstrip/core/RenderEngine.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/core/RenderEngine.py 2012-01-13 13:26:36.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/core/RenderEngine.py 2013-11-12 20:10:45.000000000 +0000 @@ -21,6 +21,7 @@ from photofilmstrip.core.tasks import TaskCropResize, TaskTrans, TaskSubtitle from photofilmstrip.core.RenderJob import RenderJob +from photofilmstrip.core.Picture import Picture class RenderEngine(object): @@ -47,18 +48,24 @@ cx2 = (w2 / 2.0) + px2 cy2 = (h2 / 2.0) + py2 - dx = (cx2 - cx1) / float(picCount - 1) - dy = (cy2 - cy1) / float(picCount - 1) - dw = (w2 - w1) / float(picCount - 1) - dh = (h2 - h1) / float(picCount - 1) - + if pic.GetMovement() == Picture.MOVE_LINEAR: + clazz = LinearMovement + elif pic.GetMovement() == Picture.MOVE_DELAYED: + clazz = DelayedMovement + else: + clazz = AccelMovement + mX = clazz(cx2 - cx1, picCount, cx1) + mY = clazz(cy2 - cy1, picCount, cy1) + mW = clazz(w2 - w1, picCount, w1) + mH = clazz(h2 - h1, picCount, h1) + pathRects = [] for step in xrange(picCount): - px = cx1 + step * dx - py = cy1 + step * dy - width = w1 + step * dw - height = h1 + step * dh - + px = mX.Get(step) + py = mY.Get(step) + width = mW.Get(step) + height = mH.Get(step) + rect = (px - width / 2.0, py - height / 2.0, width, @@ -171,3 +178,59 @@ rjc = RenderJob(self.__name, self.__aRenderer, self.__tasks) return rjc + + + +class LinearMovement(object): + + def __init__(self, s, t, s0): + self._s = float(s) + self._t = float(t) + self._s0 = float(s0) + + self._v = self._s / (self._t - 1) + + def Get(self, t): + # s = v *t + s0 + t = float(t) + return self._v * t + self._s0 + + +class AccelMovement(object): + + def __init__(self, s, t, s0): + self._s = float(s) + self._t = float(t) + self._s0 = float(s0) + + # gesucht: Polynom 3ten Grades + # s = a*t^3 + b*t^2 + c*t + d + # RB 1: f'(t) = 0 + # RB 2: f'(0) = 0 --> c = 0 + # RB 3: f''(t/2) = 0 --> b = -3 * a * t + # RB 4: f(t) = s --> a = (s - b*t^2) / t^3 + + self._a = -2.0 * self._s / (self._t**3) + self._b = -3 * self._a * (self._t / 2.0) + self._c = 0 + self._d = float(s0) + + def Get(self, t): + return self._a*t**3 + self._b*t**2 + self._c*t + self._d + + +class DelayedMovement(AccelMovement): + + def __init__(self, s, t, s0): + AccelMovement.__init__(self, s, t / 2, s0) + self._t4th = t / 4 + self._sAccel = None + + def Get(self, t): + if t < self._t4th: + self._sAccel = self._s0 + elif t < (self._t * 2) - self._t4th: + self._sAccel = AccelMovement.Get(self, t - self._t4th) + return self._sAccel + + \ No newline at end of file diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/ActionManager.py photofilmstrip-2.0.0/photofilmstrip/gui/ActionManager.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/ActionManager.py 2012-12-05 22:42:28.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/ActionManager.py 2013-11-20 10:50:45.000000000 +0000 @@ -29,8 +29,11 @@ ID_PIC_REMOVE = wx.NewId() ID_PIC_ROTATE_CW = wx.NewId() ID_PIC_ROTATE_CCW = wx.NewId() + ID_PIC_MOTION_RANDOM = wx.NewId() + ID_PIC_MOTION_CENTER = wx.NewId() ID_PIC_IMPORT = wx.NewId() ID_RENDER_FILMSTRIP = wx.NewId() + ID_JOB_QUEUE = wx.NewId() ID_PROJECT_IMPORT = wx.NewId() ID_PROJECT_EXPORT = wx.NewId() ID_PROJECT_PROPS = wx.NewId() @@ -46,6 +49,7 @@ ID_LANG_RU = wx.NewId() ID_LANG_TA = wx.NewId() ID_LANG_UK = wx.NewId() + ID_LANG_EL = wx.NewId() LANG_MAP = {ID_LANG_EN: "en", ID_LANG_FR: "fr", @@ -57,7 +61,8 @@ ID_LANG_RU: "ru", ID_LANG_PT_BR: "pt_BR", ID_LANG_TA: "ta", - ID_LANG_UK: "uk"} + ID_LANG_UK: "uk", + ID_LANG_EL: "el"} def __init__(self): self.__menuBar = None @@ -107,6 +112,10 @@ toolBar.AddSimpleTool(self.ID_RENDER_FILMSTRIP, wx.ArtProvider.GetBitmap(wx.ART_TICK_MARK, wx.ART_TOOLBAR, wx.DefaultSize), _(u'Render filmstrip'), _(u'Render filmstrip')) + toolBar.AddSeparator() + toolBar.AddSimpleTool(self.ID_JOB_QUEUE, + wx.ArtProvider.GetBitmap(wx.ART_EXECUTABLE_FILE, wx.ART_TOOLBAR, wx.DefaultSize), + _(u'Show job queue'), _(u'Show job queue')) toolBar.Realize() @@ -175,7 +184,7 @@ menu.AppendSeparator() self.__CreateMenuItem(menu, self.ID_PIC_REMOVE, - _(u'&Remove Picture') + '\tCtrl+Del', + _(u'R&emove Picture') + '\tCtrl+Del', wx.ArtProvider.GetBitmap(wx.ART_DELETE, wx.ART_MENU)) menu.AppendSeparator() self.__CreateMenuItem(menu, @@ -186,6 +195,14 @@ self.ID_PIC_ROTATE_CCW, _(u'Rotate counter clock&wise') + '\tCtrl+l', wx.ArtProvider.GetBitmap(wx.ART_UNDO, wx.ART_MENU)) + menu.AppendSeparator() + self.__CreateMenuItem(menu, + self.ID_PIC_MOTION_RANDOM, + _(u'Random &motion' + '\tCtrl+d')) + self.__CreateMenuItem(menu, + self.ID_PIC_MOTION_CENTER, + _(u'Centralize m&otion') + '\tCtrl+f') + return menu def __MakeMenuTools(self): @@ -199,6 +216,11 @@ self.ID_RENDER_FILMSTRIP, _(u'&Render filmstrip') + '\tF9', wx.ArtProvider.GetBitmap(wx.ART_TICK_MARK, wx.ART_MENU)) + menu.AppendSeparator() + self.__CreateMenuItem(menu, + self.ID_JOB_QUEUE, + _(u'&Show job queue') + '\tF12', + wx.ArtProvider.GetBitmap(wx.ART_TICK_MARK, wx.ART_MENU)) return menu def __MakeMenuHelp(self): @@ -220,6 +242,7 @@ langMenu.AppendRadioItem(self.ID_LANG_RU, u"русский") langMenu.AppendRadioItem(self.ID_LANG_TA, u"தமிழ்") langMenu.AppendRadioItem(self.ID_LANG_UK, u"Український") + langMenu.AppendRadioItem(self.ID_LANG_EL, u"ελληνικά") menu.AppendMenu(wx.NewId(), _("Language"), langMenu) menu.AppendSeparator() self.__CreateMenuItem(menu, diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/DlgRender.py photofilmstrip-2.0.0/photofilmstrip/gui/DlgRender.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/DlgRender.py 2012-01-13 13:26:36.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/DlgRender.py 2013-11-12 22:20:45.000000000 +0000 @@ -207,6 +207,7 @@ self.choiceType.Append("PAL", OutputProfile.PAL) self.choiceType.Append("NTSC", OutputProfile.NTSC) + self.choiceType.SetSelection(0) audioFile = self.__photoFilmStrip.GetAudioFile() if audioFile and not os.path.exists(audioFile): diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/FrmMain.py photofilmstrip-2.0.0/photofilmstrip/gui/FrmMain.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/FrmMain.py 2012-10-16 21:17:29.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/FrmMain.py 2013-11-20 10:50:45.000000000 +0000 @@ -94,9 +94,6 @@ style=wx.DEFAULT_FRAME_STYLE | wx.STAY_ON_TOP) self.frmJobManager.Bind(wx.EVT_CLOSE, self.OnCloseFrameJobManager) pnlJobManager = PnlJobManager(self.frmJobManager, pnlJobClass=PnlRenderJobVisual) - - self.pnlJobManager = PnlJobManager(self, pnlJobClass=PnlRenderJobVisual) - self.notebook.AddPage(self.pnlJobManager, _(u"Job queue")) self.Bind(wx.EVT_MENU, self.OnProjectNew, id=wx.ID_NEW) self.Bind(wx.EVT_MENU, self.OnProjectLoad, id=wx.ID_OPEN) @@ -114,6 +111,8 @@ self.Bind(wx.EVT_MENU, self.OnCmdRotateLeftButton, id=ActionManager.ID_PIC_ROTATE_CCW) self.Bind(wx.EVT_MENU, self.OnCmdRotateRightButton, id=ActionManager.ID_PIC_ROTATE_CW) + self.Bind(wx.EVT_MENU, self.OnCmdMotionRandom, id=ActionManager.ID_PIC_MOTION_RANDOM) + self.Bind(wx.EVT_MENU, self.OnCmdMotionCenter, id=ActionManager.ID_PIC_MOTION_CENTER) self.Bind(wx.EVT_MENU, self.OnImportPics, id=ActionManager.ID_PIC_IMPORT) @@ -123,6 +122,7 @@ self.Bind(wx.EVT_MENU, self.OnChangeLanguage, id=wxId) self.Bind(wx.EVT_MENU, self.OnRenderFilmstrip, id=ActionManager.ID_RENDER_FILMSTRIP) + self.Bind(wx.EVT_MENU, self.OnShowFrameJobManager, id=ActionManager.ID_JOB_QUEUE) self.Bind(wx.EVT_UPDATE_UI, self.OnCheckProjectChanged, id=wx.ID_SAVE) self.Bind(wx.EVT_UPDATE_UI, self.OnCheckProjectActive, id=wx.ID_SAVEAS) @@ -136,6 +136,8 @@ self.Bind(wx.EVT_UPDATE_UI, self.OnCheckImageSelected, id=ActionManager.ID_PIC_ROTATE_CW) self.Bind(wx.EVT_UPDATE_UI, self.OnCheckImageSelected, id=ActionManager.ID_PIC_MOVE_LEFT) self.Bind(wx.EVT_UPDATE_UI, self.OnCheckImageSelected, id=ActionManager.ID_PIC_MOVE_RIGHT) + self.Bind(wx.EVT_UPDATE_UI, self.OnCheckImageSelected, id=ActionManager.ID_PIC_MOTION_RANDOM) + self.Bind(wx.EVT_UPDATE_UI, self.OnCheckImageSelected, id=ActionManager.ID_PIC_MOTION_CENTER) self.SetInitialSize((720, 680)) @@ -227,7 +229,7 @@ def OnPageChanged(self, event): sel = event.GetSelection() - if sel in (0, 1): + if sel == 0: self.notebook.SetWindowStyleFlag(0) self.SetTitle(Constants.APP_NAME) else: @@ -263,10 +265,13 @@ def OnCloseFrameJobManager(self, event): self.frmJobManager.Show(False) + + def OnShowFrameJobManager(self, event): + self.frmJobManager.Show() def OnClose(self, event): - while self.notebook.GetPageCount() > 2: - idx = 2 + while self.notebook.GetPageCount() > 1: + idx = 1 self.notebook.SetSelection(idx) if self.ClosePage(idx): self.notebook.DeletePage(idx) @@ -283,7 +288,7 @@ info = wx.AboutDialogInfo() info.Name = Constants.APP_NAME info.Version = Constants.APP_VERSION_EX - info.Copyright = u"(C) 2010 %s" % Constants.DEVELOPERS[0] + info.Copyright = u"(C) 2013 %s" % Constants.DEVELOPERS[0] info.Description = wordwrap(_("PhotoFilmStrip creates movies out of your pictures in just 3 steps. First select your photos, customize the motion path and render the video. There are several output possibilities for VCD, SVCD, DVD up to FULL-HD."), 350, wx.ClientDC(self)) @@ -415,6 +420,16 @@ if sel > 0: page = self.notebook.GetPage(sel) page.pnlEditPicture.OnCmdRotateRightButton(event) + def OnCmdMotionRandom(self, event): + sel = self.notebook.GetSelection() + if sel > 0: + page = self.notebook.GetPage(sel) + page.OnMotionRandom() + def OnCmdMotionCenter(self, event): + sel = self.notebook.GetSelection() + if sel > 0: + page = self.notebook.GetPage(sel) + page.OnMotionCenter() def OnImportPics(self, event): sel = self.notebook.GetSelection() if sel > 0: @@ -488,7 +503,7 @@ return pnl def LoadProject(self, filepath, skipHistory=False): - for idx in range(2, self.notebook.GetPageCount()): + for idx in range(1, self.notebook.GetPageCount()): page = self.notebook.GetPage(idx) if page.GetProject().GetFilename() == filepath: self.notebook.SetSelection(idx) diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/ImageSectionEditor.py photofilmstrip-2.0.0/photofilmstrip/gui/ImageSectionEditor.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/ImageSectionEditor.py 2012-02-26 20:37:35.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/ImageSectionEditor.py 2013-11-13 14:00:45.000000000 +0000 @@ -85,6 +85,8 @@ self._startY = None self._startRect = None + self._lock = True + self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_MOTION, self.OnMotion) self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown) @@ -525,22 +527,23 @@ width = self._sectRect.GetWidth() height = self._sectRect.GetHeight() - if width > self._imgProxy.GetWidth(): - width = self._imgProxy.GetWidth() - height = int(round(width / self.RATIO)) - if height > self._imgProxy.GetHeight(): - height = self._imgProxy.GetHeight() - width = int(round(height * self.RATIO)) - - if left < 0: - left = 0 - if left + width > self._imgProxy.GetWidth(): - left = self._imgProxy.GetWidth() - width - - if top < 0: - top = 0 - if top + height > self._imgProxy.GetHeight(): - top = self._imgProxy.GetHeight() - height + if self._lock: + if width > self._imgProxy.GetWidth(): + width = self._imgProxy.GetWidth() + height = int(round(width / self.RATIO)) + if height > self._imgProxy.GetHeight(): + height = self._imgProxy.GetHeight() + width = int(round(height * self.RATIO)) + + if left < 0: + left = 0 + if left + width > self._imgProxy.GetWidth(): + left = self._imgProxy.GetWidth() - width + + if top < 0: + top = 0 + if top + height > self._imgProxy.GetHeight(): + top = self._imgProxy.GetHeight() - height self._sectRect = wx.Rect(left, top, width, height) @@ -582,6 +585,9 @@ def SetSection(self, rect): self._sectRect = wx.RectPS(rect.GetPosition(), rect.GetSize()) self.Refresh() + + def SetLock(self, lock): + self._lock = lock class ScaleThread(threading.Thread): diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PhotoFilmStripList.py photofilmstrip-2.0.0/photofilmstrip/gui/PhotoFilmStripList.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PhotoFilmStripList.py 2012-12-05 22:42:28.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/PhotoFilmStripList.py 2013-11-10 16:50:45.000000000 +0000 @@ -366,6 +366,9 @@ if len(self.__pictures) == 0: self.__selIdxs = [] + if self.__hvrIdx >= len(self.__pictures): + self.__hvrIdx = -1 + self.__UpdateVirtualSize() self._SendChangedEvent() diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PnlEditPicture.py photofilmstrip-2.0.0/photofilmstrip/gui/PnlEditPicture.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PnlEditPicture.py 2012-02-27 19:27:35.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/PnlEditPicture.py 2013-11-12 20:10:45.000000000 +0000 @@ -30,16 +30,16 @@ [wxID_PNLEDITPICTURE, wxID_PNLEDITPICTURECHOICEEFFECT, - wxID_PNLEDITPICTURECHOICETRANS, wxID_PNLEDITPICTURECMDROTATELEFT, - wxID_PNLEDITPICTURECMDROTATERIGHT, wxID_PNLEDITPICTUREPNLIMGDURATION, - wxID_PNLEDITPICTUREPNLTRANSDURATION, wxID_PNLEDITPICTURESTATICLINE1, - wxID_PNLEDITPICTURESTATICLINE2, wxID_PNLEDITPICTURESTDURATION, + wxID_PNLEDITPICTURECHOICEMOVEMENT, wxID_PNLEDITPICTURECHOICETRANS, + wxID_PNLEDITPICTURECMDROTATELEFT, wxID_PNLEDITPICTURECMDROTATERIGHT, + wxID_PNLEDITPICTUREPNLIMGDURATION, wxID_PNLEDITPICTUREPNLTRANSDURATION, + wxID_PNLEDITPICTURESTATICLINE1, wxID_PNLEDITPICTURESTATICLINE2, wxID_PNLEDITPICTURESTDURATIONUNIT, wxID_PNLEDITPICTURESTEFFECT, - wxID_PNLEDITPICTURESTPROCESS, wxID_PNLEDITPICTURESTROTATION, - wxID_PNLEDITPICTURESTSETTINGS, wxID_PNLEDITPICTURESTSUBTITLE, - wxID_PNLEDITPICTURESTTRANS, wxID_PNLEDITPICTURESTTRANSUNIT, - wxID_PNLEDITPICTURETCCOMMENT, -] = [wx.NewId() for _init_ctrls in range(19)] + wxID_PNLEDITPICTURESTMOVEMENT, wxID_PNLEDITPICTURESTPROCESS, + wxID_PNLEDITPICTURESTROTATION, wxID_PNLEDITPICTURESTSETTINGS, + wxID_PNLEDITPICTURESTSUBTITLE, wxID_PNLEDITPICTURESTTRANS, + wxID_PNLEDITPICTURESTTRANSUNIT, wxID_PNLEDITPICTURETCCOMMENT, +] = [wx.NewId() for _init_ctrls in range(20)] class PnlEditPicture(wx.Panel): @@ -74,9 +74,10 @@ def _init_coll_sizerTimesCtrls_Items(self, parent): # generated method, don't edit - parent.AddWindow(self.stDuration, 0, border=0, + parent.AddWindow(self.stMovement, 0, border=0, + flag=wx.ALIGN_CENTER_VERTICAL) + parent.AddWindow(self.choiceMovement, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL) - parent.AddSpacer(wx.Size(8, 8), border=0, flag=0) parent.AddWindow(self.pnlImgDuration, 0, border=0, flag=wx.ALIGN_CENTER_VERTICAL) parent.AddWindow(self.stDurationUnit, 0, border=0, @@ -194,6 +195,22 @@ label=_(u'Process'), name=u'stProcess', parent=self, pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) + self.stMovement = wx.StaticText(id=wxID_PNLEDITPICTURESTMOVEMENT, + label=_(u'Movement:'), name=u'stMovement', parent=self, + pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) + + self.choiceMovement = wx.Choice(choices=[], + id=wxID_PNLEDITPICTURECHOICEMOVEMENT, name=u'choiceMovement', + parent=self, pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) + + self.pnlImgDuration = PnlFloatSpinCtrl(id=wxID_PNLEDITPICTUREPNLIMGDURATION, + name=u'pnlImgDuration', parent=self, pos=wx.Point(-1, -1), + size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL) + + self.stDurationUnit = wx.StaticText(id=wxID_PNLEDITPICTURESTDURATIONUNIT, + label=_(u'sec'), name=u'stDurationUnit', parent=self, + pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) + self.stTrans = wx.StaticText(id=wxID_PNLEDITPICTURESTTRANS, label=_(u'Transition:'), name=u'stTrans', parent=self, pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) @@ -210,18 +227,6 @@ label=_(u'sec'), name=u'stTransUnit', parent=self, pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) - self.stDuration = wx.StaticText(id=wxID_PNLEDITPICTURESTDURATION, - label=_(u'Duration:'), name=u'stDuration', parent=self, - pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) - - self.pnlImgDuration = PnlFloatSpinCtrl(id=wxID_PNLEDITPICTUREPNLIMGDURATION, - name=u'pnlImgDuration', parent=self, pos=wx.Point(-1, -1), - size=wx.Size(-1, -1), style=wx.TAB_TRAVERSAL) - - self.stDurationUnit = wx.StaticText(id=wxID_PNLEDITPICTURESTDURATIONUNIT, - label=_(u'sec'), name=u'stDurationUnit', parent=self, - pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=0) - self.staticLine2 = wx.StaticLine(id=wxID_PNLEDITPICTURESTATICLINE2, name='staticLine2', parent=self, pos=wx.Point(-1, -1), size=wx.Size(-1, -1), style=wx.LI_VERTICAL) @@ -247,6 +252,12 @@ self.stProcess.SetFont(font) self.stSubtitle.SetFont(font) + self.choiceMovement.Append(_(u"Linear"), Picture.MOVE_LINEAR) + self.choiceMovement.Append(_(u"Accelerated"), Picture.MOVE_ACCEL) + self.choiceMovement.Append(_(u"Delayed"), Picture.MOVE_DELAYED) + self.choiceMovement.SetSelection(1) + self.choiceMovement.Bind(wx.EVT_CHOICE, self.OnChoiceMvmntChoice) + self.pnlImgDuration.SetRange(1, 6000) self.pnlImgDuration.SetValue(7) self.pnlImgDuration.Bind(EVT_VALUE_CHANGED, self.OnImgDurationChanged) @@ -289,6 +300,12 @@ pic.SetEffect(event.GetClientData()) event.Skip() + def OnChoiceMvmntChoice(self, event): + mvmnt = event.GetClientData() + for pic in self._pictures: + pic.SetMovement(mvmnt) + event.Skip() + def OnChoiceTransChoice(self, event): trans = event.GetClientData() for pic in self._pictures: @@ -320,9 +337,9 @@ if self._pictures: pic = self._pictures[0] - duration = pic.GetDuration() - self.pnlImgDuration.SetValue(duration) self.tcComment.SetValue(pic.GetComment()) + self.pnlImgDuration.SetValue(pic.GetDuration()) + self.__SetChoiceSelectionByData(self.choiceMovement, pic.GetMovement()) self.__SetChoiceSelectionByData(self.choiceEffect, pic.GetEffect()) self.__SetChoiceSelectionByData(self.choiceTrans, pic.GetTransition()) diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PnlPfsProject.py photofilmstrip-2.0.0/photofilmstrip/gui/PnlPfsProject.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/gui/PnlPfsProject.py 2012-12-05 22:42:28.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/gui/PnlPfsProject.py 2013-11-13 14:00:45.000000000 +0000 @@ -40,7 +40,9 @@ from photofilmstrip.gui.PnlEditPicture import PnlEditPicture from photofilmstrip.gui.PnlAddPics import PnlAddPics from photofilmstrip.gui.DlgPositionInput import DlgPositionInput + from photofilmstrip.action.ActionAutoPath import ActionAutoPath +from photofilmstrip.action.ActionCenterPath import ActionCenterPath [wxID_PNLPFSPROJECT, wxID_PNLPFSPROJECTBITMAPLEFT, @@ -52,11 +54,12 @@ ] = [wx.NewId() for _init_ctrls in range(11)] -[wxID_PNLPFSPROJECTTOOLBARIMGSECTFTTORIGHT, +[wxID_PNLPFSPROJECTTOOLBARIMGSECTADJUST, + wxID_PNLPFSPROJECTTOOLBARIMGSECTFTTORIGHT, wxID_PNLPFSPROJECTTOOLBARIMGSECTGHTTOLEFT, - wxID_PNLPFSPROJECTTOOLBARIMGSECTADJUST, + wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK, wxID_PNLPFSPROJECTTOOLBARIMGSECTSWAP, wxID_PNLPFSPROJECTTOOLBARIMGSECTTOPATH, -] = [wx.NewId() for _init_coll_toolBarImgSect_Tools in range(4)] +] = [wx.NewId() for _init_coll_toolBarImgSect_Tools in range(6)] class PnlPfsProject(wx.Panel, Observer): @@ -112,12 +115,20 @@ wx.ART_TOOLBAR, wx.DefaultSize), bmpDisabled=wx.NullBitmap, id=wxID_PNLPFSPROJECTTOOLBARIMGSECTGHTTOLEFT, kind=wx.ITEM_NORMAL, label=u'', longHelp=u'', shortHelp=_(u'Set motion start to end')) + parent.DoAddTool(bitmap=wx.ArtProvider.GetBitmap('PFS_MOTION_SWAP', + wx.ART_TOOLBAR, wx.DefaultSize), bmpDisabled=wx.NullBitmap, + id=wxID_PNLPFSPROJECTTOOLBARIMGSECTSWAP, kind=wx.ITEM_NORMAL, + label='', longHelp='', shortHelp=_(u'Swap motion')) parent.AddSeparator() parent.DoAddTool(bitmap=wx.ArtProvider.GetBitmap('PFS_MOTION_INPUT', wx.ART_TOOLBAR, wx.DefaultSize), bmpDisabled=wx.NullBitmap, id=wxID_PNLPFSPROJECTTOOLBARIMGSECTADJUST, kind=wx.ITEM_NORMAL, - label='', longHelp='', - shortHelp=_(u'Adjust motion manual')) + label='', longHelp='', shortHelp=_(u'Adjust motion manual')) + parent.AddSeparator() + parent.DoAddTool(bitmap=wx.ArtProvider.GetBitmap('PFS_LOCK', + wx.ART_TOOLBAR, wx.DefaultSize), bmpDisabled=wx.NullBitmap, + id=wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK, kind=wx.ITEM_CHECK, + label='', longHelp='', shortHelp=_(u'Preserve image dimension')) self.Bind(wx.EVT_TOOL, self.OnToolBarImgSectToolAutoPath, id=wxID_PNLPFSPROJECTTOOLBARIMGSECTTOPATH) self.Bind(wx.EVT_TOOL, self.OnToolBarImgSectToolLeftToRight, @@ -126,6 +137,10 @@ id=wxID_PNLPFSPROJECTTOOLBARIMGSECTGHTTOLEFT) self.Bind(wx.EVT_TOOL, self.OnToolBarImgSectToolAdjust, id=wxID_PNLPFSPROJECTTOOLBARIMGSECTADJUST) + self.Bind(wx.EVT_TOOL, self.OnToolBarImgSectSwap, + id=wxID_PNLPFSPROJECTTOOLBARIMGSECTSWAP) + self.Bind(wx.EVT_TOOL, self.OnToolBarImgSectUnlockTool, + id=wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK) parent.Realize() @@ -301,6 +316,7 @@ if selPics: self.imgProxy.SetPicture(selPics[0]) + self.__CheckAndSetLock(selPics[0]) self.bitmapLeft.SetSection(wx.Rect(*selPics[0].GetStartRect())) self.bitmapRight.SetSection(wx.Rect(*selPics[0].GetTargetRect())) @@ -308,6 +324,7 @@ self.bitmapRight.Enable(len(selPics) == 1) self.bitmapLeft.Enable(len(selPics) == 1) + event.Skip() def OnRectChanged(self, event): @@ -362,12 +379,7 @@ self.SetChanged(True) def OnToolBarImgSectToolAutoPath(self, event): - selItem = self.lvPics.GetSelected() - pic = self.lvPics.GetPicture(selItem) - if pic is None: - return - actAp = ActionAutoPath(pic, self.__project.GetAspect()) - actAp.Execute() + self.OnMotionRandom() def OnToolBarImgSectToolLeftToRight(self, event): selItem = self.lvPics.GetSelected() @@ -383,6 +395,15 @@ return pic.SetStartRect(pic.GetTargetRect()) + def OnToolBarImgSectSwap(self, event): + selItem = self.lvPics.GetSelected() + pic = self.lvPics.GetPicture(selItem) + if pic is None: + return + target = pic.GetTargetRect() + pic.SetTargetRect(pic.GetStartRect()) + pic.SetStartRect(target) + def OnToolBarImgSectToolAdjust(self, event): selItem = self.lvPics.GetSelected() selPic = self.lvPics.GetPicture(selItem) @@ -391,6 +412,15 @@ dlg.ShowModal() dlg.Destroy() + def OnMotionRandom(self): + for pic in self.lvPics.GetSelectedPictures(): + actAp = ActionAutoPath(pic, self.__project.GetAspect()) + actAp.Execute() + def OnMotionCenter(self): + for pic in self.lvPics.GetSelectedPictures(): + actCp = ActionCenterPath(pic, self.__project.GetAspect()) + actCp.Execute() + def Close(self): self.imgProxy.RemoveObserver(self.bitmapLeft) self.imgProxy.RemoveObserver(self.bitmapRight) @@ -408,7 +438,11 @@ for idx, pic in enumerate(pics): if autopath: actAp = ActionAutoPath(pic, self.__project.GetAspect()) - actAp.Execute() + try: + actAp.Execute() + except: + # if it is an invalid image file + pass self.lvPics.InsertPicture(position, pic) position += 1 @@ -458,9 +492,39 @@ self.__hasChanged = changed def HasChanged(self): return self.__hasChanged - - - + + def __CheckAndSetLock(self, pic): + unlocked = False + for rect in (pic.GetStartRect(), pic.GetTargetRect()): + if rect[0] < 0 or rect[1] < 0 \ + or rect[2] > pic.GetWidth() or rect[3] > pic.GetHeight(): + unlocked = True + break + self.toolBarImgSect.ToggleTool(wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK, + unlocked) + if unlocked: + resName = 'PFS_UNLOCK' + else: + resName = 'PFS_LOCK' + self.toolBarImgSect.SetToolNormalBitmap( + wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK, + wx.ArtProvider.GetBitmap(resName, wx.ART_TOOLBAR, wx.DefaultSize)) + self.bitmapLeft.SetLock(not unlocked) + self.bitmapRight.SetLock(not unlocked) + + def OnToolBarImgSectUnlockTool(self, event): + if event.IsChecked(): + resName = 'PFS_UNLOCK' + else: + resName = 'PFS_LOCK' + self.toolBarImgSect.SetToolNormalBitmap( + wxID_PNLPFSPROJECTTOOLBARIMGSECTUNLOCK, + wx.ArtProvider.GetBitmap(resName, wx.ART_TOOLBAR, wx.DefaultSize)) + + self.bitmapLeft.SetLock(not event.IsChecked()) + self.bitmapRight.SetLock(not event.IsChecked()) + + class ImageDropTarget(wx.FileDropTarget): def __init__(self, pnlPfs): diff -Nru photofilmstrip-1.9.92+dfsg/photofilmstrip/res/images.py photofilmstrip-2.0.0/photofilmstrip/res/images.py --- photofilmstrip-1.9.92+dfsg/photofilmstrip/res/images.py 2012-01-13 13:26:36.000000000 +0000 +++ photofilmstrip-2.0.0/photofilmstrip/res/images.py 2013-11-13 14:00:45.000000000 +0000 @@ -80,6 +80,39 @@ getMOTION_LEFTIcon = MOTION_LEFT.GetIcon #---------------------------------------------------------------------- +MOTION_SWAP = PyEmbeddedImage( + "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QA/wD/AP+gvaeTAAAA" + "CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QsMCCMDdsFcmwAAABl0RVh0Q29tbWVudABD" + "cmVhdGVkIHdpdGggR0lNUFeBDhcAAARwSURBVEjHlZVZbFRlGIaf//z/ma5sU2agtIXO2Ha2" + "sioqaKwSEhMLNxJiQQvEiDEmxkRvuCHGmKgs3mgiRNyQrVxw45VINBpZTIgssQRom5ZSobRQ" + "LMy0dJae34tzZjobRr9kLs75z5z3e9/3e78jyCtXfWs9QmzAmjQpUh/tcL+/7Z3rO5GlE8JQ" + "k/xL6fjfx0QBgK/1rU1t6z6tq6kGNFqDQIDQWBZM9x4CoOvck3iqF6BME+chhBZoNEIIBm4M" + "8u3Xe75SBbCWpRr98wkFGhAatABhQ4HWdA/CyuZ1wDGMaD0L/H6UctlNAFpoBILSEhOdiC7J" + "AHzS8bKeQvmG7psPpx5PjvNo4AX+uNrBjf4N1PsDmC5XFltQ0gBtlecwaPa1pNu1u8G+zNwT" + "thrxxDgAEX8Ll3qPMHBtI/7GEC7lsh8TGlPZjFR+ZwUvJQ8s76yxdjndfx1moK8df0MAl8sF" + "2kAa0gbITI0DUHwcclmk79n+aOZ7I1wfPkB/XzsNTSGUcqFkmoFg7aa2Fz+En2zqAsdS+wGh" + "c3qfYpAFPHS3j0O7e3l8xS/U1NThrvIgMwDO1ABMOAxy/z8FUASK0dgQ+z++SmNTmJbnVuOe" + "NRNTGbbJtgdapC/uxYb4L1VWMg3QPIjH+G5HF02BMOvbNhMIRTBddj6VMqZMNqVgdsXbHDu8" + "jwsXzjPbPZ2ZMypzhB8cOUdVZYQ1W6uYSI6jrUkO7OwiEAzz0sYtBIIR22CnpjwAlJR4PV7a" + "XnmdCs/PPLGkieaQz5lLOH52O7CUO1f9wG20NcnBXV0Eg2E2tG8hGFw49XInnWkAA0BKQXlZ" + "KfNqapnl9jKvphaf7xH8fj9n+3ewZtVm3N5Khm/Z6fvtaIJwuJn2za+ysHkRFRWlmMqwf1Ji" + "KgMpsySS0j602RgoJSkxJQdPbOWxYCuJ1AOEEDy9XjE6Mk6ytA9PaC6dt/dw5ZQs8GhV+D20" + "NZktkcA0bQBpCKQ0OHhiKxF/C/HEmJ1aXwtCQLIuRcQ/TuW0cpSpCsLX2fcrX+z9jBXPtmYB" + "KIEpBSAwpODyrV001i4n4ayE/PVRPk1hkSCRTGTOskf4z87LzKgOZTNwJBICT/0PzPdGiCfH" + "0AiELgxW0UBk1ckzv8dOX+y7o8eHe/IkEqxs2M7png+Y4/YVrIb8/aGFk/bMJnSOkrEu617s" + "KHAtw0BJiRDg9XpoHH6N7rtfMrNyTtGVlAHIfAUK8AeBH4HezBS5nCkyK8tYumwpJZ1v0Hln" + "L2UlduAexKP8j0oC94H7OWOa7sksK2XR4sXIzje5OPQ5wlm9R3Z3M9vjyUlsuu6ORjl56sx9" + "UmOXgRsOiG3ypSu9WKlUgRjJpIEx8jxW1XF7hF2lPLN6LR7P3ALfe/pvcvpcz7AVHesAjgND" + "AMKsXhFG621WMrYIbZUXWKktQWqiZNe+p+rebf8+apR7RzBcyWK6WNGBK6Ri+4ETjkQIwAQW" + "AMuAiodoqoBaIAycAUaLzRUwBpwH+oEEwD/ITowXmkYrlwAAAABJRU5ErkJggg==") +index.append('MOTION_SWAP') +catalog['MOTION_SWAP'] = MOTION_SWAP +getMOTION_SWAPData = MOTION_SWAP.GetData +getMOTION_SWAPImage = MOTION_SWAP.GetImage +getMOTION_SWAPBitmap = MOTION_SWAP.GetBitmap +getMOTION_SWAPIcon = MOTION_SWAP.GetIcon + +#---------------------------------------------------------------------- MOTION_INPUT = PyEmbeddedImage( "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAAZiS0dE" "AKYAvwBHIJ68VwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9oHExIxLGTarccAAAAZ" @@ -146,6 +179,62 @@ getMOTION_RANDOMIcon = MOTION_RANDOM.GetIcon #---------------------------------------------------------------------- +LOCK = PyEmbeddedImage( + "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QAfgCJAJ5G8nudAAAA" + "CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QsNDSovK6wuvwAAABl0RVh0Q29tbWVudABD" + "cmVhdGVkIHdpdGggR0lNUFeBDhcAAAM4SURBVEjH1ZVPbFRFHMc/v/nT3Yot/yopiFG5ICEi" + "JrLxwkFjYmJiUg94MeFkTDw38cLBU4F42UhMUIg0gQRDi1oxMRpJD8VollpXUywhRbHQNHUJ" + "rAHTbvvezHjYfdvd7isqPfEu782b38xnvvP7zm/gQX/kXp0HDh7PRYsLHd77ljgXR/P5g70X" + "gRgI/xtwoO94Lrv2ZsHHmdr45lClK4yO/Pb6ucETXwFzK0F02s933+vPZTtKBRe34SobCC5L" + "cO2EuPZ27YiK2bpt7T4jXZO/T/46WVPy74BD75/KtT1cKhAyhLgLAXRbGTEVlKmgzHwdKCri" + "ie1dPfeCNAHyH57J6fY/CxKyKLcJJYLK3kaZBQb7Px+6Mn6luPPZbU+Liqtq4gSyscfII6kQ" + "09jwznfYzBrwXXjrcaqEJ6L/yODZifGxIvDDho2bRl549bmjZP/CVdbjFtYBZcq3Ss8DBeAq" + "EKUCtEK0USgxRMwCi/Tnz5ydGB/7CRgGLg9/89lYWyazsPflZ04oVSaaXw8IcRyvAdoB1WSG" + "xoa1BmM01hiM1pz+aGjo0i+jxdrkl4C7wN2vz30y8OOFybeNrsZqJUCQNFc2KTDWYrTBKIPz" + "GmvtPPA9MLHMinNP7dg1pY1GrCYYjVIq1e5NAKsVWmusGFys0Vr52qoXl/k8dHSui4yeIxiL" + "0xql5D8ArEFpjVWGCIOIrHgordEYoyEYlKysoD5oZOzG7j9uzBZXU3fOf3nqzZMfHxkA/k4U" + "C8Dwxand0zOlIsCTjz8KCJJy9qurCYSU/mtT0wB8d/7TN459cPiLJGcCcHJoNAA8tnVLS9kR" + "pDplSKKTLIAs2/br0zMA7O/Zs6fmuko9B5s3d+NcICSA2gQheOomXOpCUmhburuZmZ0F2Atc" + "bwLEcQD80rJC895UdVRJItVVBBqhvlFiZ1KG6gDnPSEIgm8pziFRBFT3CoKE5HNJVUrK6oAQ" + "kgS2CkgaobEj0BIbUq6EunnLt2+u+npcNkeoA65dnXhxtZBkbL6vdwC4A7jGg5bd/9Y7r730" + "yr7Tq1GQ7+sdKI6O/Ax8m9hUGhLyELCjZrHO+2TcAS4Al5OD9g/91lPG7Vrj2gAAAABJRU5E" + "rkJggg==") +index.append('LOCK') +catalog['LOCK'] = LOCK +getLOCKData = LOCK.GetData +getLOCKImage = LOCK.GetImage +getLOCKBitmap = LOCK.GetBitmap +getLOCKIcon = LOCK.GetIcon + +#---------------------------------------------------------------------- +UNLOCK = PyEmbeddedImage( + "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABmJLR0QAfgCJAJ5G8nudAAAA" + "CXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QsNDS0NsY35nAAAABl0RVh0Q29tbWVudABD" + "cmVhdGVkIHdpdGggR0lNUFeBDhcAAANmSURBVEjHpZXfaxxVFMc/59472Y01qW1jSGtFzYuI" + "iBXs4oMFf4EgCOlDfRH6JP4DAX3wwadE8cHFIlosNtqCpUnVGEFaLBFSUZKQrpKYUlNt04aw" + "brFbqjS7mZl7fZiZze5mNgVzYZhf957P/Z7zPTPCBuOtwSM5f7XaYa2V5ndh4K/kB/ungABw" + "rWJIy+ADR3LZrdcnbZCJ1zdOVbrC9MQfr4yNHP0OuN0KotMevv3eUC7bUZoMgzbCynZcmMWF" + "7bggPoftiArY3bv1gJGuhT8XfluIldwZ8M4Hx3Ntd5cmcRlc0IUAuq2MmArKVFBmpQYU5fPg" + "w119G0EaAPnDJ3O6/a9JcVlU2I0SQWVvoEyVkaGvRy/OXiw8+kTvY6KCSE2QQHb0Gbk3FWLq" + "b2xoO7zMFrBdWM8SqhIWn6FDI6fmZ2cKwM/bd3RPPPvykx+TvUlY2UZYvQcoU/679BQwCVwC" + "/FSAVog2CiUGnyKwylD+5Kn52ZnzwDhwYfzMVzNtmUx134uPH1WqjL+yDRCCINgCtAOqpQLP" + "Mxij0WJwTvPZR6Ojc79OF+Lgc7FbOD12Yvj02Ik54GmgM15+E6gAtiXAeB5GG4wyhFbjed4K" + "8BMw32TF28AssFgXIwRubVgDTyu01nhiCAON1soC/wCrTT538W6rTaZZ1wvrUqS0xlMGH4OI" + "cIfhNmrWlBQZxGg8bTBOoZRqufDw52PPWFX6QcJufIpc+b28//3BN8/EympKGiJ4JiqyZwza" + "mGaA1B+BXzXamMgYWnN+6tzzQG/zpmvyJmau7blyrVhgE+Pst8dfO/bpoWHg30SFAIxPLe5Z" + "Wi4VAB564D5AkJSKSZx2l/L+8uISAD+e/fLVTz5895vEdQJwbHTaAdy/e9e6sgkShXTJ7LXy" + "Nnvg6tIyAAf79u6N+6ZSy9fOnT2EocMlgDiAcza6lTUVDpAU2q6eHpaLRYB9wNUGQBC4qAmT" + "bbnG3EQ6IpJItAtHPdTWS+xMPqQ1QGgtzgmCXWdulygColyBE5dcrqlKKVkN4FxSwJSWdHWn" + "ugnNc13KT61m9PKN62x2NMVwNcDlS/PPbRaSrM0P9A/HH72wvtGyB19/Y/8LLx34YjMK8gP9" + "w4XpiV+A7xObSl1B7gIeiS3W+T8Zt4BzwIWk0f4DcXNt5u3KdCcAAAAASUVORK5CYII=") +index.append('UNLOCK') +catalog['UNLOCK'] = UNLOCK +getUNLOCKData = UNLOCK.GetData +getUNLOCKImage = UNLOCK.GetImage +getUNLOCKBitmap = UNLOCK.GetBitmap +getUNLOCKIcon = UNLOCK.GetIcon + +#---------------------------------------------------------------------- ICON_32 = PyEmbeddedImage( "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAAlwSFlz" "AAALEwAACxMBAJqcGAAAAAd0SU1FB9gKBhAyELGDlPoAAAZQSURBVEhL3ZZLj1tJGYa/S1Wd" diff -Nru photofilmstrip-1.9.92+dfsg/po/de.po photofilmstrip-2.0.0/po/de.po --- photofilmstrip-1.9.92+dfsg/po/de.po 2012-01-13 13:26:43.000000000 +0000 +++ photofilmstrip-2.0.0/po/de.po 2013-11-12 22:30:45.000000000 +0000 @@ -5,654 +5,618 @@ msgid "" msgstr "" "Project-Id-Version: PhotoFilmStrip\n" -"POT-Creation-Date: 2011-07-10 13:28+CEST\n" -"PO-Revision-Date: 2011-07-10 13:30+0100\n" -"Last-Translator: Jens Göpfert \n" +"POT-Creation-Date: 2013-11-12 23:18+CET\n" +"PO-Revision-Date: 2013-11-12 23:26+0100\n" +"Last-Translator: Jens Göpfert \n" "Language-Team: Jens \n" -"Language: \n" +"Language: de_DE\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Poedit-Language: German\n" -"X-Poedit-Country: GERMANY\n" "X-Poedit-SourceCharset: utf-8\n" +"X-Generator: Poedit 1.5.4\n" -#: src/cli/Main.py:65 -#: src/cli/Main.py:221 -#: src/gui/DlgRender.py:374 +#: photofilmstrip/action/ActionAutoPath.py:37 +#: photofilmstrip/gui/PnlPfsProject.py:107 +msgid "Random motion" +msgstr "Zufällige Bewegung" + +#: photofilmstrip/action/ActionCenterPath.py:35 +msgid "Centralize motion" +msgstr "Auswahl zentrieren" + +#: photofilmstrip/action/ActionI18N.py:38 +#: photofilmstrip/gui/ActionManager.py:243 +msgid "Language" +msgstr "Sprache" + +#: photofilmstrip/action/ActionOpenFolder.py:34 +#: photofilmstrip/action/ActionPlayVideo.py:35 +#: photofilmstrip/gui/PnlRenderJobVisual.py:18 +msgid "Play video" +msgstr "Video abspielen" + +#: photofilmstrip/action/ActionRender.py:50 +msgid "Start" +msgstr "Start" + +#: photofilmstrip/cli/Main.py:67 photofilmstrip/cli/Main.py:212 +#: photofilmstrip/core/ProgressHandler.py:71 msgid "all done" msgstr "Fertig" -#: src/cli/Main.py:78 +#: photofilmstrip/cli/Main.py:80 msgid "processing project" msgstr "Verarbeite Projekt" -#: src/cli/Main.py:79 +#: photofilmstrip/cli/Main.py:81 msgid "using renderer" msgstr "Verwende Renderer" -#: src/cli/Main.py:80 +#: photofilmstrip/cli/Main.py:82 msgid "output format" msgstr "Ausgabeformat" -#: src/cli/Main.py:81 +#: photofilmstrip/cli/Main.py:83 msgid "framerate" msgstr "Bildrate" -#: src/cli/Main.py:109 +#: photofilmstrip/cli/Main.py:111 msgid "specifies the project file" msgstr "Angabe der Projektdatei" -#: src/cli/Main.py:110 +#: photofilmstrip/cli/Main.py:112 msgid "The path where to save the output files. Use - for stdout." msgstr "Pfad, in dem die Ausgabe gespeichert wird. Verwende - für stdout." -#: src/cli/Main.py:114 +#: photofilmstrip/cli/Main.py:116 msgid "enable draft mode" msgstr "Entwurfsmodus aktivieren" -#: src/cli/Main.py:114 -#: src/gui/DlgRender.py:233 -msgid "Activate this option to generate a preview of your PhotoFilmStrip. The rendering process will speed up dramatically, but results in lower quality." -msgstr "Aktivieren Sie diese Option, um eine Vorschau zu erstellen. Die Erstellung geht zu Lasten der Bildqualität wesentlich schneller." +#: photofilmstrip/cli/Main.py:116 photofilmstrip/gui/DlgRender.py:200 +msgid "" +"Activate this option to generate a preview of your PhotoFilmStrip. The " +"rendering process will speed up dramatically, but results in lower quality." +msgstr "" +"Aktivieren Sie diese Option, um eine Vorschau zu erstellen. Die Erstellung " +"geht zu Lasten der Bildqualität wesentlich schneller." -#: src/cli/Main.py:122 +#: photofilmstrip/cli/Main.py:124 msgid "project file does not exist: %s" msgstr "Projektdatei nicht vorhanden: %s" -#: src/cli/Main.py:126 +#: photofilmstrip/cli/Main.py:128 msgid "no project file specified!" msgstr "Keine Projektdatei angegeben!" -#: src/cli/Main.py:132 +#: photofilmstrip/cli/Main.py:134 msgid "invalid profile specified: %s" msgstr "Ungültiges Profil: %s" -#: src/cli/Main.py:143 +#: photofilmstrip/cli/Main.py:145 msgid "invalid videonorm specified: %s" msgstr "Videonorm ungültig: %s" -#: src/cli/Main.py:149 +#: photofilmstrip/cli/Main.py:151 msgid "invalid format specified: %s" msgstr "Ungültiges Format: %s" -#: src/cli/Main.py:156 +#: photofilmstrip/cli/Main.py:158 msgid "cannot load photofilmstrip" msgstr "PhotoFilmStrip kann nicht geladen werden" -#: src/cli/Main.py:175 +#: photofilmstrip/cli/Main.py:172 msgid "cannot create output path: %s" msgstr "Ausgabe-Verzeichnis kann nicht erstellt werden: %s" -#: src/cli/Main.py:194 -#: src/gui/DlgProjectProps.py:388 -#: src/gui/DlgProjectProps.py:391 -#: src/gui/DlgProjectProps.py:431 -#: src/gui/DlgRender.py:247 +#: photofilmstrip/cli/Main.py:183 photofilmstrip/gui/DlgProjectProps.py:389 +#: photofilmstrip/gui/DlgProjectProps.py:392 +#: photofilmstrip/gui/DlgProjectProps.py:432 +#: photofilmstrip/gui/DlgRender.py:214 msgid "Audio file '%s' does not exist!" msgstr "Audio-Datei '%s' nicht vorhanden!" -#: src/cli/Main.py:217 -#: src/gui/DlgRender.py:372 +#: photofilmstrip/cli/Main.py:206 photofilmstrip/core/ProgressHandler.py:68 msgid "...aborted!" msgstr "...abgebrochen!" -#: src/cli/Main.py:223 -msgid "Error: %s" -msgstr "Fehler: %s" - -#: src/core/BaseRenderer.py:66 +#: photofilmstrip/core/BaseRenderer.py:64 msgid "Unknown property: %s" msgstr "Unbekannte Eigenschaft: %s" -#: src/core/BaseRenderer.py:74 +#: photofilmstrip/core/BaseRenderer.py:72 msgid "" msgstr "" -#: src/core/PhotoFilmStrip.py:154 -msgid "Loading '%s' ..." -msgstr "Lade '%s' ..." - -#: src/core/ProgressHandler.py:32 +#: photofilmstrip/core/ProgressHandler.py:32 msgid "Please wait..." msgstr "Bitte warten" -#: src/core/ProgressHandler.py:70 +#: photofilmstrip/core/ProgressHandler.py:78 msgid "aborting..." msgstr "abbrechen..." -#: src/core/RenderEngine.py:150 -msgid "initialize renderer" -msgstr "Initialisiere" +#: photofilmstrip/core/ProjectFile.py:225 +msgid "Saving '%s' ..." +msgstr "Speicher '%s' ..." + +#: photofilmstrip/core/ProjectFile.py:276 +msgid "Loading '%s' ..." +msgstr "Lade '%s' ..." -#: src/core/RenderEngine.py:171 +#: photofilmstrip/core/RenderEngine.py:129 msgid "processing transition %d/%d" msgstr "Berechne Bildübergang %d/%d" -#: src/core/RenderEngine.py:182 +#: photofilmstrip/core/RenderEngine.py:140 msgid "processing image %d/%d" msgstr "Verarbeite Bild %d/%d" -#: src/core/RenderEngine.py:196 -msgid "creating output..." -msgstr "Ausgabe erstellen..." - -#: src/core/RenderEngine.py:226 -msgid "generating subtitle" -msgstr "generiere Untertitel" - -#: src/core/renderer/MovieRenderer.py:55 +#: photofilmstrip/core/renderer/MovieRenderer.py:79 msgid "mencoder (mencoder) required!" msgstr "mencoder (mencoder) nicht gefunden!" -#: src/core/renderer/MovieRenderer.py:90 -#: src/core/renderer/MovieRenderer.py:100 +#: photofilmstrip/core/renderer/MovieRenderer.py:131 +#: photofilmstrip/core/renderer/MovieRenderer.py:141 msgid "no" msgstr "nein" -#: src/core/renderer/MovieRenderer.py:128 +#: photofilmstrip/core/renderer/MovieRenderer.py:169 msgid "Bitrate must be a number!" msgstr "Bitrate muss eine Zahl sein!" -#: src/core/renderer/MovieRenderer.py:139 +#: photofilmstrip/core/renderer/MovieRenderer.py:180 msgid "MPEG(1/2)-Video (MPG)" msgstr "MPEG(1/2)-Video (MPG)" -#: src/core/renderer/MovieRenderer.py:174 +#: photofilmstrip/core/renderer/MovieRenderer.py:216 msgid "MPEG format supports only VCD, SVCD and DVD profile!" msgstr "MPEG-Format unterstützt nur die Profile VCD, SVCD und DVD!" -#: src/core/renderer/MovieRenderer.py:199 +#: photofilmstrip/core/renderer/MovieRenderer.py:241 msgid "MPEG4-XVid/AC3 (AVI)" msgstr "MPEG4-XVid/AC3 (AVI)" -#: src/core/renderer/MovieRenderer.py:245 +#: photofilmstrip/core/renderer/MovieRenderer.py:286 msgid "mencoder with MP3 support (mp3lame) required!" msgstr "mencoder mit MP3-Unterstützung (mp3lame) erforderlich!" -#: src/core/renderer/MovieRenderer.py:255 +#: photofilmstrip/core/renderer/MovieRenderer.py:296 msgid "MPEG4-XVid/MP3 (AVI)" msgstr "MPEG4-XVid/MP3 (AVI)" -#: src/core/renderer/MovieRenderer.py:288 +#: photofilmstrip/core/renderer/MovieRenderer.py:329 msgid "Flash-Video (FLV)" msgstr "Flash-Video (FLV)" -#: src/core/renderer/MovieRenderer.py:319 +#: photofilmstrip/core/renderer/MovieRenderer.py:360 msgid "Motion-JPEG (AVI)" msgstr "Motion-JPEG (AVI)" -#: src/core/renderer/SingleFileRenderer.py:37 +#: photofilmstrip/core/renderer/SingleFileRenderer.py:35 msgid "Single pictures" msgstr "Einzelbilder" -#: src/gui/ActionManager.py:70 +#: photofilmstrip/core/tasks.py:38 +msgid "generating subtitle" +msgstr "generiere Untertitel" + +#: photofilmstrip/gui/ActionManager.py:79 msgid "&File" msgstr "&Datei" -#: src/gui/ActionManager.py:71 +#: photofilmstrip/gui/ActionManager.py:80 msgid "&Edit" msgstr "&Bearbeiten" -#: src/gui/ActionManager.py:72 +#: photofilmstrip/gui/ActionManager.py:81 msgid "&Tools" msgstr "&Extras" -#: src/gui/ActionManager.py:73 -#: src/gui/ActionManager.py:202 -#: src/gui/DlgRender.py:188 -#: src/gui/DlgRendererProps.py:101 +#: photofilmstrip/gui/ActionManager.py:82 +#: photofilmstrip/gui/ActionManager.py:228 photofilmstrip/gui/DlgRender.py:173 +#: photofilmstrip/gui/DlgRendererProps.py:101 msgid "&Help" msgstr "&Hilfe" -#: src/gui/ActionManager.py:87 +#: photofilmstrip/gui/ActionManager.py:96 msgid "New Project" msgstr "Neues Projekt" -#: src/gui/ActionManager.py:90 +#: photofilmstrip/gui/ActionManager.py:99 msgid "Load Project" msgstr "Projekt laden" -#: src/gui/ActionManager.py:93 +#: photofilmstrip/gui/ActionManager.py:102 msgid "Save Project" msgstr "Projekt speichern" -#: src/gui/ActionManager.py:100 +#: photofilmstrip/gui/ActionManager.py:109 msgid "Import Pictures" msgstr "Bilder importieren" -#: src/gui/ActionManager.py:103 -#: src/gui/DlgRender.py:133 +#: photofilmstrip/gui/ActionManager.py:112 photofilmstrip/gui/DlgRender.py:117 msgid "Render filmstrip" msgstr "Filmstreifen erstellen" -#: src/gui/ActionManager.py:124 +#: photofilmstrip/gui/ActionManager.py:116 +msgid "Show job queue" +msgstr "Auftragsliste zeigen" + +#: photofilmstrip/gui/ActionManager.py:137 msgid "&New Project" msgstr "&Neues Projekt" -#: src/gui/ActionManager.py:128 +#: photofilmstrip/gui/ActionManager.py:141 msgid "&Open Project" msgstr "Pr&ojekt öffnen" -#: src/gui/ActionManager.py:134 +#: photofilmstrip/gui/ActionManager.py:147 msgid "&Save Project" msgstr "Projekt &speichern" -#: src/gui/ActionManager.py:138 +#: photofilmstrip/gui/ActionManager.py:151 msgid "&Close Project" msgstr "Projekt s&chließen" -#: src/gui/ActionManager.py:150 +#: photofilmstrip/gui/ActionManager.py:163 msgid "&Properties" msgstr "&Eigenschaften" -#: src/gui/ActionManager.py:155 +#: photofilmstrip/gui/ActionManager.py:168 msgid "E&xit" msgstr "B&eenden" -#: src/gui/ActionManager.py:163 +#: photofilmstrip/gui/ActionManager.py:176 msgid "Move picture &left" msgstr "Bild nach &links" -#: src/gui/ActionManager.py:167 +#: photofilmstrip/gui/ActionManager.py:180 msgid "Move picture &right" msgstr "Bild nach re&chts" -#: src/gui/ActionManager.py:172 -msgid "&Remove Picture" +#: photofilmstrip/gui/ActionManager.py:185 +msgid "R&emove Picture" msgstr "Bild &entfernen" -#: src/gui/ActionManager.py:177 +#: photofilmstrip/gui/ActionManager.py:190 msgid "Rotate &clockwise" msgstr "Im Uhrzeigersinn d&rehen" -#: src/gui/ActionManager.py:181 +#: photofilmstrip/gui/ActionManager.py:194 msgid "Rotate counter clock&wise" msgstr "&Gegen Uhrzeigersinn drehen" -#: src/gui/ActionManager.py:189 +#: photofilmstrip/gui/ActionManager.py:202 +msgid "Centralize m&otion" +msgstr "Auswahl &zentrieren" + +#: photofilmstrip/gui/ActionManager.py:210 msgid "&Import Pictures" msgstr "Bilder &importieren" -#: src/gui/ActionManager.py:194 +#: photofilmstrip/gui/ActionManager.py:215 msgid "&Render filmstrip" msgstr "&Filmstreifen erstellen" -#: src/gui/ActionManager.py:214 -msgid "Language" -msgstr "Sprache" +#: photofilmstrip/gui/ActionManager.py:220 +msgid "&Show job queue" +msgstr "Auftragsliste &zeigen" -#: src/gui/ActionManager.py:218 +#: photofilmstrip/gui/ActionManager.py:247 msgid "&About" msgstr "&Info" -#: src/gui/DlgBugReport.py:52 +#: photofilmstrip/gui/DlgBugReport.py:55 msgid "An unexpected error occured" msgstr "Ein unerwarteter Fehler ist aufgetretetn" -#: src/gui/DlgBugReport.py:55 -msgid "An unexpected error occured. Do you want to send this bug report to the developers of %s?" -msgstr "Ein unerwarteter Fehler ist aufgetreten. Wollen Sie einen Fehlerbericht an die Entwickler von %s senden?" +#: photofilmstrip/gui/DlgBugReport.py:58 +msgid "" +"An unexpected error occured. Do you want to send this bug report to the " +"developers of %s?" +msgstr "" +"Ein unerwarteter Fehler ist aufgetreten. Wollen Sie einen Fehlerbericht an " +"die Entwickler von %s senden?" -#: src/gui/DlgBugReport.py:101 +#: photofilmstrip/gui/DlgBugReport.py:104 msgid "Bug-Report send. Thank you for your support." msgstr "Fehlerbericht gesendet. Vielen Dank für die Unterstützung." -#: src/gui/DlgBugReport.py:102 -#: src/gui/FrmMain.py:177 +#: photofilmstrip/gui/DlgBugReport.py:105 photofilmstrip/gui/FrmMain.py:225 msgid "Information" msgstr "Information" -#: src/gui/DlgBugReport.py:108 +#: photofilmstrip/gui/DlgBugReport.py:111 msgid "Sorry, this function is temporary not available.." msgstr "Entschuldigung, diese Funktion ist zur Zeit nicht verfügbar." -#: src/gui/DlgBugReport.py:109 -#: src/gui/DlgProjectProps.py:392 -#: src/gui/DlgProjectProps.py:421 -#: src/gui/DlgProjectProps.py:432 -#: src/gui/DlgProjectProps.py:479 -#: src/gui/DlgProjectProps.py:490 -#: src/gui/DlgRender.py:381 -#: src/gui/DlgRender.py:420 -#: src/gui/FrmMain.py:457 +#: photofilmstrip/gui/DlgBugReport.py:112 +#: photofilmstrip/gui/DlgProjectProps.py:393 +#: photofilmstrip/gui/DlgProjectProps.py:422 +#: photofilmstrip/gui/DlgProjectProps.py:433 +#: photofilmstrip/gui/DlgProjectProps.py:480 +#: photofilmstrip/gui/DlgProjectProps.py:491 photofilmstrip/gui/FrmMain.py:518 +#: photofilmstrip/lib/jobimpl/PnlJobManager.py:153 msgid "Error" msgstr "Fehler" -#: src/gui/DlgFinalize.py:78 -msgid "Finalizing" -msgstr "Abschließen" - -#: src/gui/DlgFinalize.py:87 -msgid "Choose your next action:" -msgstr "Was möchten Sie tun:" - -#: src/gui/DlgFinalize.py:91 -msgid "Play video" -msgstr "Video abspielen" - -#: src/gui/DlgFinalize.py:96 -msgid "Open folder" -msgstr "Ordner öffnen" - -#: src/gui/DlgFinalize.py:100 -msgid "Delete unfinished result" -msgstr "Unfertige Dateien löschen" - -#: src/gui/DlgFinalize.py:104 -msgid "Do nothing" -msgstr "Nichts" - -#: src/gui/DlgFinalize.py:108 -#: src/gui/DlgRender.py:193 -#: src/gui/DlgRender.py:386 -msgid "&Close" -msgstr "S&chließen" - -#: src/gui/DlgFinalize.py:114 -msgid "Show error again and send to developer." -msgstr "Fehler erneut zeigen und zum Entwickler senden." - -#: src/gui/DlgFinalize.py:128 -msgid "The rendering process was aborted." -msgstr "Der Erstellungsprozess wurde abgebrochen." - -#: src/gui/DlgFinalize.py:134 -msgid "The rendering process was interrupted." -msgstr "Der Erstellungsprozess wurde unterbrochen." - -#: src/gui/DlgFinalize.py:144 -msgid "The rendering process has been finished." -msgstr "Der Erstellungsprozess wurde abgeschlossen." - -#: src/gui/DlgPositionInput.py:155 +#: photofilmstrip/gui/DlgPositionInput.py:155 msgid "Motion positions" msgstr "Bewegungspfad" -#: src/gui/DlgPositionInput.py:162 +#: photofilmstrip/gui/DlgPositionInput.py:162 msgid "Start position" msgstr "Startposition" -#: src/gui/DlgPositionInput.py:170 -#: src/gui/DlgPositionInput.py:214 +#: photofilmstrip/gui/DlgPositionInput.py:170 +#: photofilmstrip/gui/DlgPositionInput.py:214 msgid "Location:" msgstr "Position:" -#: src/gui/DlgPositionInput.py:188 -#: src/gui/DlgPositionInput.py:230 +#: photofilmstrip/gui/DlgPositionInput.py:188 +#: photofilmstrip/gui/DlgPositionInput.py:230 msgid "Size:" msgstr "Größe:" -#: src/gui/DlgPositionInput.py:206 +#: photofilmstrip/gui/DlgPositionInput.py:206 msgid "End position" msgstr "Zielposition" -#: src/gui/DlgPositionInput.py:248 +#: photofilmstrip/gui/DlgPositionInput.py:248 msgid "Reset" msgstr "Zurücksetzen" -#: src/gui/DlgPositionInput.py:253 -#: src/gui/DlgProjectProps.py:222 -#: src/gui/DlgRender.py:305 -#: src/gui/DlgRendererProps.py:107 +#: photofilmstrip/gui/DlgPositionInput.py:253 +#: photofilmstrip/gui/DlgProjectProps.py:223 +#: photofilmstrip/gui/DlgRender.py:179 +#: photofilmstrip/gui/DlgRendererProps.py:107 +#: photofilmstrip/lib/jobimpl/DlgJobVisual.py:94 msgid "&Cancel" msgstr "&Abbrechen" -#: src/gui/DlgPositionInput.py:259 -#: src/gui/DlgProjectProps.py:228 -#: src/gui/DlgRendererProps.py:112 +#: photofilmstrip/gui/DlgPositionInput.py:259 +#: photofilmstrip/gui/DlgProjectProps.py:229 +#: photofilmstrip/gui/DlgRendererProps.py:112 msgid "&Ok" msgstr "&Ok" -#: src/gui/DlgPositionInput.py:267 +#: photofilmstrip/gui/DlgPositionInput.py:267 msgid "Adjust motion positions directly" msgstr "Bewegungspfad manuell anpassen" -#: src/gui/DlgProjectProps.py:124 +#: photofilmstrip/gui/DlgProjectProps.py:125 msgid "Project properties" msgstr "Projekteigenschaften" -#: src/gui/DlgProjectProps.py:133 +#: photofilmstrip/gui/DlgProjectProps.py:134 msgid "Project name:" msgstr "Projektname:" -#: src/gui/DlgProjectProps.py:145 +#: photofilmstrip/gui/DlgProjectProps.py:146 msgid "Folder:" msgstr "Ordner:" -#: src/gui/DlgProjectProps.py:160 +#: photofilmstrip/gui/DlgProjectProps.py:161 msgid "Aspect ratio:" msgstr "Seitenverhältnis:" -#: src/gui/DlgProjectProps.py:168 +#: photofilmstrip/gui/DlgProjectProps.py:169 msgid "Total length:" msgstr "Gesamtlänge:" -#: src/gui/DlgProjectProps.py:171 -msgid "Overrides the duration of single pictures and gives the project this total length." +#: photofilmstrip/gui/DlgProjectProps.py:172 +msgid "" +"Overrides the duration of single pictures and gives the project this total " +"length." msgstr "Dauer der Einzelbilder durch diese Gesamtlänge überschreiben." -#: src/gui/DlgProjectProps.py:177 +#: photofilmstrip/gui/DlgProjectProps.py:178 msgid "User defined:" msgstr "Manuell:" -#: src/gui/DlgProjectProps.py:191 +#: photofilmstrip/gui/DlgProjectProps.py:192 msgid "Audio file:" msgstr "Audiodatei:" -#: src/gui/DlgProjectProps.py:237 +#: photofilmstrip/gui/DlgProjectProps.py:238 msgid "PhotoFilmStrip project" msgstr "PhotoFilmStrip-Projekt" -#: src/gui/DlgProjectProps.py:268 +#: photofilmstrip/gui/DlgProjectProps.py:269 msgid "Unnamed PhotoFilmStrip" msgstr "Unbenannter PhotoFilmStrip" -#: src/gui/DlgProjectProps.py:275 +#: photofilmstrip/gui/DlgProjectProps.py:276 msgid "My PhotoFilmStrips" msgstr "Eigene PhotoFilmStrips" -#: src/gui/DlgProjectProps.py:319 +#: photofilmstrip/gui/DlgProjectProps.py:320 msgid "Browse for folder" msgstr "Ordner auswählen" -#: src/gui/DlgProjectProps.py:333 +#: photofilmstrip/gui/DlgProjectProps.py:334 msgid "Select music" msgstr "Audiodatei auswählen" -#: src/gui/DlgProjectProps.py:335 +#: photofilmstrip/gui/DlgProjectProps.py:336 msgid "Audio files" msgstr "Audiodateien" -#: src/gui/DlgProjectProps.py:417 -#: src/gui/DlgProjectProps.py:420 +#: photofilmstrip/gui/DlgProjectProps.py:418 +#: photofilmstrip/gui/DlgProjectProps.py:421 msgid "Audio file not supported!" -msgstr "Audio-Datei '%s' nicht unterstützt!" +msgstr "Audio-Datei nicht unterstützt!" -#: src/gui/DlgProjectProps.py:468 +#: photofilmstrip/gui/DlgProjectProps.py:469 msgid "Folder does not exists! Do you want %s to create it?" msgstr "Ordner existiert nicht. Soll %s ihn erstellen?" -#: src/gui/DlgProjectProps.py:469 -#: src/gui/DlgRender.py:335 -#: src/gui/FrmMain.py:287 -#: src/gui/FrmMain.py:403 -#: src/gui/FrmMain.py:482 -#: src/gui/PnlPfsProject.py:449 +#: photofilmstrip/gui/DlgProjectProps.py:470 photofilmstrip/gui/FrmMain.py:343 +#: photofilmstrip/gui/FrmMain.py:469 photofilmstrip/gui/FrmMain.py:547 +#: photofilmstrip/gui/WxProjectFile.py:89 +#: photofilmstrip/lib/jobimpl/PnlJobVisual.py:229 msgid "Question" msgstr "Frage" -#: src/gui/DlgProjectProps.py:478 +#: photofilmstrip/gui/DlgProjectProps.py:479 msgid "Cannot create folder: %s" msgstr "Ordner kann nicht erstellt werden: %s" -#: src/gui/DlgProjectProps.py:489 +#: photofilmstrip/gui/DlgProjectProps.py:490 msgid "Cannot write into folder!" msgstr "Ordner nicht beschreibbar!" -#: src/gui/DlgProjectProps.py:503 +#: photofilmstrip/gui/DlgProjectProps.py:504 msgid "The project name must be filled." msgstr "Bitte einen Projektnamen angeben." -#: src/gui/DlgProjectProps.py:509 +#: photofilmstrip/gui/DlgProjectProps.py:510 msgid "The project name contains invalid characters." msgstr "Der Projektname enthält ungültige Zeichen." -#: src/gui/DlgRender.py:144 +#: photofilmstrip/gui/DlgRender.py:129 msgid "Profile:" msgstr "Profil:" -#: src/gui/DlgRender.py:153 +#: photofilmstrip/gui/DlgRender.py:138 msgid "Type:" msgstr "Typ:" -#: src/gui/DlgRender.py:163 +#: photofilmstrip/gui/DlgRender.py:148 msgid "Format:" msgstr "Format:" -#: src/gui/DlgRender.py:179 +#: photofilmstrip/gui/DlgRender.py:164 msgid "Properties" msgstr "Eigenschaften" -#: src/gui/DlgRender.py:183 +#: photofilmstrip/gui/DlgRender.py:168 msgid "Draft" msgstr "Entwurf" -#: src/gui/DlgRender.py:200 -msgid "&Batch Job" -msgstr "&Batch Auftrag" - -#: src/gui/DlgRender.py:205 +#: photofilmstrip/gui/DlgRender.py:184 msgid "&Start" msgstr "&Start" -#: src/gui/DlgRender.py:229 +#: photofilmstrip/gui/DlgRender.py:196 msgid "Configure output and start render process" msgstr "Ausgabe konfigurieren und erzeugen" -#: src/gui/DlgRender.py:281 +#: photofilmstrip/gui/DlgRender.py:262 msgid "Audio file '%s' does not exist! Continue anyway?" msgstr "Audio-Datei '%s' nicht vorhanden! Dennoch fortsetzen?" -#: src/gui/DlgRender.py:282 +#: photofilmstrip/gui/DlgRender.py:263 msgid "Warning" msgstr "Warnung" -#: src/gui/DlgRender.py:334 -msgid "Abort current process?" -msgstr "Aktuellen Vorgang abbrechen?" - -#: src/gui/DlgRender.py:419 -msgid "Project not saved yet. Please save the project first to create a batch job!" -msgstr "Projekt wurde noch nicht gespeichert. Zum Erstellen von Batch-Aufträgen bitte erst das Projekt speichern." - -#: src/gui/DlgRender.py:431 -msgid "Batch file" -msgstr "Stapel-Datei" - -#: src/gui/DlgRender.py:438 -msgid "Shell script" -msgstr "Shell-Script" - -#: src/gui/DlgRender.py:444 -msgid "Select batch file" -msgstr "Stapelverarbeitungsdatei wählen" - -#: src/gui/DlgRendererProps.py:65 +#: photofilmstrip/gui/DlgRendererProps.py:65 msgid "Property" msgstr "Eigenschaft" -#: src/gui/DlgRendererProps.py:67 +#: photofilmstrip/gui/DlgRendererProps.py:67 msgid "Value" msgstr "Wert" -#: src/gui/DlgRendererProps.py:86 +#: photofilmstrip/gui/DlgRendererProps.py:86 msgid "Output properties" msgstr "Videoeigenschaften" -#: src/gui/DlgRendererProps.py:128 +#: photofilmstrip/gui/DlgRendererProps.py:128 msgid "Edit extended output properties" msgstr "Erweiterte Videoeigenschaften bearbeiten" -#: src/gui/DlgRendererProps.py:164 +#: photofilmstrip/gui/DlgRendererProps.py:164 msgid "Edit property" msgstr "Eigenschaft bearbeiten" -#: src/gui/FrmMain.py:77 +#: photofilmstrip/gui/FrmMain.py:90 msgid "Welcome" msgstr "Willkommen" -#: src/gui/FrmMain.py:176 +#: photofilmstrip/gui/FrmMain.py:92 +msgid "Job queue" +msgstr "Aufträge" + +#: photofilmstrip/gui/FrmMain.py:167 +msgid "Rendering in progress..." +msgstr "Wird erstellt..." + +#: photofilmstrip/gui/FrmMain.py:224 msgid "You must restart %s for your new language setting to take effect." -msgstr "Starten Sie %s neu, damit die neuen Spracheinstellungen wirksam werden." +msgstr "" +"Starten Sie %s neu, damit die neuen Spracheinstellungen wirksam werden." -#: src/gui/FrmMain.py:236 -msgid "PhotoFilmStrip creates movies out of your pictures in just 3 steps. First select your photos, customize the motion path and render the video. There are several output possibilities for VCD, SVCD, DVD up to FULL-HD." -msgstr "PhotoFilmStrip erstellt Videoclips aus Digitalfotos in nur 3 Schritten. Fotos auswählen, Bewegung anpassen und Video erstellen lassen. Verfügbar sind Formate für VCD, SVCD, DVD bis hin zu FULL-HD." +#: photofilmstrip/gui/FrmMain.py:292 +msgid "" +"PhotoFilmStrip creates movies out of your pictures in just 3 steps. First " +"select your photos, customize the motion path and render the video. There " +"are several output possibilities for VCD, SVCD, DVD up to FULL-HD." +msgstr "" +"PhotoFilmStrip erstellt Videoclips aus Digitalfotos in nur 3 Schritten. " +"Fotos auswählen, Bewegung anpassen und Video erstellen lassen. Verfügbar " +"sind Formate für VCD, SVCD, DVD bis hin zu FULL-HD." -#: src/gui/FrmMain.py:239 +#: photofilmstrip/gui/FrmMain.py:295 msgid "online" msgstr "Online" -#: src/gui/FrmMain.py:255 +#: photofilmstrip/gui/FrmMain.py:311 msgid "Select %s-Project" msgstr "%s-Projekt auswählen" -#: src/gui/FrmMain.py:257 -#: src/gui/FrmMain.py:277 -#: src/gui/FrmMain.py:308 -#: src/gui/FrmMain.py:319 +#: photofilmstrip/gui/FrmMain.py:313 photofilmstrip/gui/FrmMain.py:333 +#: photofilmstrip/gui/FrmMain.py:364 photofilmstrip/gui/FrmMain.py:375 msgid "Project" msgstr "Projekt" -#: src/gui/FrmMain.py:274 +#: photofilmstrip/gui/FrmMain.py:330 msgid "Save %s-Project" msgstr "%s-Projekt speichern" -#: src/gui/FrmMain.py:286 +#: photofilmstrip/gui/FrmMain.py:342 msgid "Overwrite existing file '%s'?" msgstr "Bestehende Datei '%s' überschreiben?" -#: src/gui/FrmMain.py:305 +#: photofilmstrip/gui/FrmMain.py:361 msgid "Export %s-Project" msgstr "%s-Projekt exportieren" -#: src/gui/FrmMain.py:308 -#: src/gui/FrmMain.py:319 +#: photofilmstrip/gui/FrmMain.py:364 photofilmstrip/gui/FrmMain.py:375 msgid "Portable" msgstr "Mitnehm" -#: src/gui/FrmMain.py:317 +#: photofilmstrip/gui/FrmMain.py:373 msgid "Import %s-Project" msgstr "%s-Projekt importieren" -#: src/gui/FrmMain.py:402 +#: photofilmstrip/gui/FrmMain.py:468 msgid "'%s' has been modified. Save changes?" msgstr "'%s' wurde geändert. Änderungen speichern?" -#: src/gui/FrmMain.py:425 +#: photofilmstrip/gui/FrmMain.py:489 msgid "Images" msgstr "Bilder" -#: src/gui/FrmMain.py:430 +#: photofilmstrip/gui/FrmMain.py:494 msgid "Duration" msgstr "Dauer" -#: src/gui/FrmMain.py:455 +#: photofilmstrip/gui/FrmMain.py:516 msgid "Invalid %(app)s-Project: %(file)s" msgstr "Kein gültiges %(app)s-Projekt: %(file)s" -#: src/gui/FrmMain.py:479 +#: photofilmstrip/gui/FrmMain.py:544 msgid "Could not save the file '%(file)s': %(errMsg)s" msgstr "Konnte Datei '%(file)s' nicht speichern: %(errMsg)s" -#: src/gui/PnlAddPics.py:91 -#: src/gui/PnlWelcome.py:43 +#: photofilmstrip/gui/PnlAddPics.py:91 photofilmstrip/gui/PnlWelcome.py:44 msgid "Welcome to PhotoFilmStrip" msgstr "Willkommen zu PhotoFilmStrip" -#: src/gui/PnlAddPics.py:92 +#: photofilmstrip/gui/PnlAddPics.py:92 msgid "" "Drag some pictures onto this text or\n" "click the button below\n" @@ -662,137 +626,266 @@ "benutzen Sie die Schaltfläche unten, um\n" "Bilder zu Ihrem neuen PhotoFilmStrip hinzuzufügen." -#: src/gui/PnlEditPicture.py:154 +#: photofilmstrip/gui/PnlEditPicture.py:157 msgid "Settings" msgstr "Einstellungen" -#: src/gui/PnlEditPicture.py:158 +#: photofilmstrip/gui/PnlEditPicture.py:161 msgid "Rotation:" msgstr "Drehung:" -#: src/gui/PnlEditPicture.py:178 +#: photofilmstrip/gui/PnlEditPicture.py:181 msgid "Effect:" msgstr "Effekt:" -#: src/gui/PnlEditPicture.py:192 +#: photofilmstrip/gui/PnlEditPicture.py:195 msgid "Process" msgstr "Bildablauf" -#: src/gui/PnlEditPicture.py:196 -msgid "Transition:" -msgstr "Bildübergang:" +#: photofilmstrip/gui/PnlEditPicture.py:199 +msgid "Movement:" +msgstr "Bewegung:" -#: src/gui/PnlEditPicture.py:208 -#: src/gui/PnlEditPicture.py:220 +#: photofilmstrip/gui/PnlEditPicture.py:211 +#: photofilmstrip/gui/PnlEditPicture.py:227 msgid "sec" msgstr "Sek." -#: src/gui/PnlEditPicture.py:212 -msgid "Duration:" -msgstr "Dauer:" +#: photofilmstrip/gui/PnlEditPicture.py:215 +msgid "Transition:" +msgstr "Bildübergang:" -#: src/gui/PnlEditPicture.py:228 +#: photofilmstrip/gui/PnlEditPicture.py:235 msgid "Subtitle" msgstr "Untertitel:" -#: src/gui/PnlEditPicture.py:252 +#: photofilmstrip/gui/PnlEditPicture.py:255 +msgid "Linear" +msgstr "Gleichförmig" + +#: photofilmstrip/gui/PnlEditPicture.py:256 +msgid "Accelerated" +msgstr "Beschleunigen" + +#: photofilmstrip/gui/PnlEditPicture.py:257 +msgid "Delayed" +msgstr "Verzögern" + +#: photofilmstrip/gui/PnlEditPicture.py:265 msgid "No effect" msgstr "Kein Effekt" -#: src/gui/PnlEditPicture.py:253 +#: photofilmstrip/gui/PnlEditPicture.py:266 msgid "Black and White" msgstr "Schwarz-Weiss" -#: src/gui/PnlEditPicture.py:254 +#: photofilmstrip/gui/PnlEditPicture.py:267 msgid "Sepia tone" msgstr "Sephia-Effekt" -#: src/gui/PnlEditPicture.py:260 +#: photofilmstrip/gui/PnlEditPicture.py:273 msgid "None" msgstr "Keiner" -#: src/gui/PnlEditPicture.py:261 +#: photofilmstrip/gui/PnlEditPicture.py:274 msgid "Fade" msgstr "Überblenden" -#: src/gui/PnlEditPicture.py:262 +#: photofilmstrip/gui/PnlEditPicture.py:275 msgid "Roll" msgstr "Rollen" -#: src/gui/PnlPfsProject.py:104 -msgid "Random motion" -msgstr "Zufällige Bewegung" - -#: src/gui/PnlPfsProject.py:109 +#: photofilmstrip/gui/PnlPfsProject.py:112 msgid "Set motion end to start" msgstr "Endauswahl zu Startauswahl" -#: src/gui/PnlPfsProject.py:113 +#: photofilmstrip/gui/PnlPfsProject.py:116 msgid "Set motion start to end" msgstr "Startauswahl zu Endauswahl" -#: src/gui/PnlPfsProject.py:119 +#: photofilmstrip/gui/PnlPfsProject.py:120 +msgid "Swap motion" +msgstr "Start- und Zielauswahl tauschen" + +#: photofilmstrip/gui/PnlPfsProject.py:125 msgid "Adjust motion manual" msgstr "Bewegung manuell eingeben" -#: src/gui/PnlPfsProject.py:264 +#: photofilmstrip/gui/PnlPfsProject.py:276 msgid "Import images" msgstr "Bilder importieren" -#: src/gui/PnlPfsProject.py:266 -#: src/gui/PnlPfsProject.py:326 +#: photofilmstrip/gui/PnlPfsProject.py:278 msgid "Imagefiles" msgstr "Bilddateien" -#: src/gui/PnlPfsProject.py:315 -msgid "Browse" -msgstr "Durchsuchen" - -#: src/gui/PnlPfsProject.py:324 -msgid "Import image" -msgstr "Bild importieren" - -#: src/gui/PnlPfsProject.py:448 -msgid "Some images does not exist in the folder '%s' anymore. If the files has moved you can select the new path. Do you want to select a new path?" -msgstr "Einige Bilder aus dem Ordner '%s' existieren nicht mehr. Falls die Dateien verschoben wurden, kann jetzt der neue Pfad ausgewählt werden. Soll ein neuer Pfad gewählt werden?" - -#: src/gui/PnlPfsProject.py:472 -msgid "Please wait" -msgstr "Bitte warten" - -#: src/gui/PnlPfsProject.py:473 -msgid "Loading pictures..." -msgstr "Bilder laden..." +#: photofilmstrip/gui/PnlRenderJobVisual.py:28 +msgid "Open folder" +msgstr "Ordner öffnen" -#: src/gui/PnlWelcome.py:50 -#: src/gui/PnlWelcome.py:105 +#: photofilmstrip/gui/PnlWelcome.py:51 photofilmstrip/gui/PnlWelcome.py:106 msgid "Recent projects" msgstr "Letzte Projekte" -#: src/gui/PnlWelcome.py:62 +#: photofilmstrip/gui/PnlWelcome.py:63 msgid "Create new project" msgstr "Ein neues Projekt erstellen" -#: src/gui/PnlWelcome.py:67 +#: photofilmstrip/gui/PnlWelcome.py:68 msgid "Open existing project" msgstr "Ein bestehendes Projekt laden" -#: src/gui/PnlWelcome.py:108 +#: photofilmstrip/gui/PnlWelcome.py:109 msgid "How to start..." msgstr "Der Anfang..." -#: src/gui/PnlWelcome.py:109 +#: photofilmstrip/gui/PnlWelcome.py:110 msgid "Create a new project or load an existing one." -msgstr "Erstellen Sie ein neues Projekt oder laden Sie ein bereits existierendes." +msgstr "" +"Erstellen Sie ein neues Projekt oder laden Sie ein bereits existierendes." -#: src/gui/PnlWelcome.py:140 +#: photofilmstrip/gui/PnlWelcome.py:141 msgid "Update available" msgstr "Neue Version verfügbar" -#: src/gui/PnlWelcome.py:143 +#: photofilmstrip/gui/PnlWelcome.py:144 msgid "The following changes has been made:" msgstr "Die folgenden Änderungen wurden vorgenommen:" +#: photofilmstrip/gui/WxProjectFile.py:53 +msgid "Loading project %s" +msgstr "Projekt %s laden" + +#: photofilmstrip/gui/WxProjectFile.py:66 +msgid "Saving project %s" +msgstr "Projekt %s speichern" + +#: photofilmstrip/gui/WxProjectFile.py:88 +msgid "" +"Some images does not exist in the folder '%s' anymore. If the files has " +"moved you can select the new path. Do you want to select a new path?" +msgstr "" +"Einige Bilder aus dem Ordner '%s' existieren nicht mehr. Falls die Dateien " +"verschoben wurden, kann jetzt der neue Pfad ausgewählt werden. Soll ein " +"neuer Pfad gewählt werden?" + +#: photofilmstrip/lib/jobimpl/DlgJobVisual.py:70 +msgid "Elapsed time" +msgstr "Verstrichene Zeit" + +#: photofilmstrip/lib/jobimpl/DlgJobVisual.py:82 +msgid "Remaining time" +msgstr "Verbleibende Zeit" + +#: photofilmstrip/lib/jobimpl/DlgJobVisual.py:200 +msgid "Unknown" +msgstr "Unbekannt" + +#: photofilmstrip/lib/jobimpl/PnlJobManager.py:66 +msgid "&Clear list" +msgstr "Liste &leeren" + +#: photofilmstrip/lib/jobimpl/PnlJobVisual.py:121 +msgid "Abort" +msgstr "Abbrechen" + +#: photofilmstrip/lib/jobimpl/PnlJobVisual.py:131 +msgid "Remove from list" +msgstr "Von Liste entfernen" + +#: photofilmstrip/lib/jobimpl/PnlJobVisual.py:228 +msgid "Abort selected process?" +msgstr "Aktuellen Vorgang abbrechen?" + +#: photofilmstrip/lib/jobimpl/VisualJob.py:25 +#: photofilmstrip/lib/jobimpl/VisualJobMixin.py:21 +msgid "Waiting..." +msgstr "warten..." + +#: photofilmstrip/lib/jobimpl/VisualJob.py:64 +#: photofilmstrip/lib/jobimpl/VisualJob.py:78 +#: photofilmstrip/lib/jobimpl/VisualJobMixin.py:56 +msgid "Aborted" +msgstr "Abgebrochen" + +#: photofilmstrip/lib/jobimpl/VisualJob.py:66 +msgid "Done" +msgstr "Fertig" + +#: photofilmstrip/lib/jobimpl/VisualJob.py:74 +msgid "Aborting..." +msgstr "abbrechen..." + +#~ msgid "Error: %s" +#~ msgstr "Fehler: %s" + +#~ msgid "initialize renderer" +#~ msgstr "Initialisiere" + +#~ msgid "creating output..." +#~ msgstr "Ausgabe erstellen..." + +#~ msgid "Finalizing" +#~ msgstr "Abschließen" + +#~ msgid "Choose your next action:" +#~ msgstr "Was möchten Sie tun:" + +#~ msgid "Delete unfinished result" +#~ msgstr "Unfertige Dateien löschen" + +#~ msgid "Do nothing" +#~ msgstr "Nichts" + +#~ msgid "&Close" +#~ msgstr "S&chließen" + +#~ msgid "Show error again and send to developer." +#~ msgstr "Fehler erneut zeigen und zum Entwickler senden." + +#~ msgid "The rendering process was aborted." +#~ msgstr "Der Erstellungsprozess wurde abgebrochen." + +#~ msgid "The rendering process was interrupted." +#~ msgstr "Der Erstellungsprozess wurde unterbrochen." + +#~ msgid "The rendering process has been finished." +#~ msgstr "Der Erstellungsprozess wurde abgeschlossen." + +#~ msgid "&Batch Job" +#~ msgstr "&Batch Auftrag" + +#~ msgid "" +#~ "Project not saved yet. Please save the project first to create a batch " +#~ "job!" +#~ msgstr "" +#~ "Projekt wurde noch nicht gespeichert. Zum Erstellen von Batch-Aufträgen " +#~ "bitte erst das Projekt speichern." + +#~ msgid "Batch file" +#~ msgstr "Stapel-Datei" + +#~ msgid "Shell script" +#~ msgstr "Shell-Script" + +#~ msgid "Select batch file" +#~ msgstr "Stapelverarbeitungsdatei wählen" + +#~ msgid "Duration:" +#~ msgstr "Dauer:" + +#~ msgid "Browse" +#~ msgstr "Durchsuchen" + +#~ msgid "Import image" +#~ msgstr "Bild importieren" + +#~ msgid "Please wait" +#~ msgstr "Bitte warten" + +#~ msgid "Loading pictures..." +#~ msgstr "Bilder laden..." + #~ msgid "Invalid audio file!" #~ msgstr "Ungültige Audio-Datei" @@ -878,9 +971,6 @@ #~ msgid "Czech" #~ msgstr "Český" -#~ msgid "Save Project as" -#~ msgstr "Projekt speichern unter" - #~ msgid "Open &recent" #~ msgstr "Zuletzt &verwendet" @@ -932,10 +1022,6 @@ #~ msgid "Help will be available soon." #~ msgstr "Hilfe bald verfügbar." -#, fuzzy -#~ msgid "aborted" -#~ msgstr "...abgebrochen!" - #~ msgid "one of: VCD, SVCD, DVD, Medium, HD, FULL-HD" #~ msgstr "VCD, SVCD, DVD, Medium, HD oder FULL-HD" Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icon/lock.xcf and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icon/lock.xcf differ Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icon/motion_swap.xcf and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icon/motion_swap.xcf differ Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icon/unlock.xcf and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icon/unlock.xcf differ Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icons/lock_24.png and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icons/lock_24.png differ Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icons/motion_swap_24.png and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icons/motion_swap_24.png differ Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/res/icons/unlock_24.png and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/res/icons/unlock_24.png differ diff -Nru photofilmstrip-1.9.92+dfsg/setup.py photofilmstrip-2.0.0/setup.py --- photofilmstrip-1.9.92+dfsg/setup.py 2012-12-05 23:01:58.000000000 +0000 +++ photofilmstrip-2.0.0/setup.py 2013-11-13 14:00:45.000000000 +0000 @@ -83,7 +83,10 @@ def _make_svn_info(self): # FIXME: SVN1.7 if os.path.isfile(".svn/entries"): - svnRev = open(".svn/entries", "r").readlines()[3].strip() + try: + svnRev = open(".svn/entries", "r").readlines()[3].strip() + except: + svnRev = 0 else: svnRev = 0 @@ -120,8 +123,11 @@ ("PLAY_PAUSE", "play_pause_16.png"), ("MOTION_RIGHT", "motion_right_24.png"), ("MOTION_LEFT", "motion_left_24.png"), + ("MOTION_SWAP", "motion_swap_24.png"), ("MOTION_INPUT", "motion_input_24.png"), ("MOTION_RANDOM", "motion_random_24.png"), + ("LOCK", "lock_24.png"), + ("UNLOCK", "unlock_24.png"), ("ICON_32", "photofilmstrip_32.png"), ("ICON_48", "photofilmstrip_48.png") ) Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/windows/MPlayer-mingw32-1.0rc2.zip and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/windows/MPlayer-mingw32-1.0rc2.zip differ diff -Nru photofilmstrip-1.9.92+dfsg/windows/photofilmstrip-cli.bat photofilmstrip-2.0.0/windows/photofilmstrip-cli.bat --- photofilmstrip-1.9.92+dfsg/windows/photofilmstrip-cli.bat 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/windows/photofilmstrip-cli.bat 2012-01-20 21:26:50.000000000 +0000 @@ -0,0 +1,2 @@ +@"%~dp0..\python" "%~dp0photofilmstrip-cli" %* + diff -Nru photofilmstrip-1.9.92+dfsg/windows/photofilmstrip.bat photofilmstrip-2.0.0/windows/photofilmstrip.bat --- photofilmstrip-1.9.92+dfsg/windows/photofilmstrip.bat 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/windows/photofilmstrip.bat 2012-01-20 21:26:50.000000000 +0000 @@ -0,0 +1 @@ +@"%~dp0..\python" "%~dp0photofilmstrip" %* diff -Nru photofilmstrip-1.9.92+dfsg/windows/photofilmstrip.iss photofilmstrip-2.0.0/windows/photofilmstrip.iss --- photofilmstrip-1.9.92+dfsg/windows/photofilmstrip.iss 1970-01-01 00:00:00.000000000 +0000 +++ photofilmstrip-2.0.0/windows/photofilmstrip.iss 2012-01-13 13:26:43.000000000 +0000 @@ -0,0 +1,90 @@ + +[Setup] +AppName = PhotoFilmStrip +AppPublisher = Jens G�pfert +AppPublisherURL = http://www.photofilmstrip.org +AppCopyright = Copyright (C) 2008 Jens G�pfert +AppVerName = {code:getAppVerName} +AppVersion = {code:getAppVer} +;VersionInfoVersion= {code:getVerInfo} +DefaultDirName = {code:getInstallDir} +DefaultGroupName = PhotoFilmStrip +UninstallDisplayIcon={app}\bin\PhotoFilmStrip.exe +OutputDir=..\dist +OutputBaseFilename = setup_photofilmstrip +LicenseFile = ..\copying +WizardSmallImageFile=..\res\icon\photofilmstrip.bmp +WizardImageFile=compiler:WizModernImage-IS.bmp +PrivilegesRequired=none +;compression=none + +[Files] +Source: "..\build\dist\*"; DestDir: "{app}"; Flags: recursesubdirs; +Source: "..\version.info"; Flags: dontcopy; +Source: "..\windows\vcredist_x86.exe"; DestDir: "{tmp}"; + +[Icons] +Name: "{group}\PhotoFilmStrip"; Filename: "{app}\bin\PhotoFilmStrip.exe" +Name: "{group}\Help"; Filename: "{app}\share\doc\photofilmstrip\photofilmstrip.chm" +Name: "{group}\Uninstall"; Filename: "{app}\unins000.exe"; WorkingDir: "{app}"; + +[Run] +Filename: "{tmp}\vcredist_x86.exe"; WorkingDir: {tmp}; Parameters: "/q /l {tmp}\vcredist.log"; StatusMsg: Microsoft Visual C++ 2008 Redistributable Setup...; Flags: waituntilterminated; Tasks: vcredist; +Filename: "{app}\bin\PhotoFilmStrip.exe"; Description: "Run PhotoFilmStrip"; Flags: postinstall skipifsilent nowait; + +[Tasks] +Name: associate; Description: "Associate with PFS Files"; Check: IsAdminLoggedOn; +Name: vcredist; Description: "Microsoft Visual C++ 2008 Redistributable"; Check: VCRedistCheck and IsAdminLoggedOn; + +[Registry] +Root: HKCR; Subkey: ".pfs"; ValueType: string; ValueName: ""; ValueData: "pfsfile"; Flags: uninsdeletevalue; Check: IsAdminLoggedOn; Tasks: associate +Root: HKCR; Subkey: "pfsfile"; ValueType: string; ValueName: ""; ValueData: "PhotoFilmStrip-Projekt"; Flags: uninsdeletekey; Check: IsAdminLoggedOn; Tasks: associate +Root: HKCR; Subkey: "pfsfile\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\bin\PhotoFilmStrip.EXE,0"; Check: IsAdminLoggedOn; Tasks: associate +Root: HKCR; Subkey: "pfsfile\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\bin\PhotoFilmStrip.EXE"" ""%1"""; Check: IsAdminLoggedOn; Tasks: associate + +[Code] +function getAppVer(Default: String) :String; +var tmp, s: String; +begin + ExtractTemporaryFile('version.info'); + tmp := ExpandConstant('{tmp}\version.info'); + if LoadStringFromFile(tmp, s) then + result := s + else + result := '' +end; + +function getAppVerName(Default: String) :String; +begin + result := ExpandConstant('PhotoFilmStrip ' + getAppVer('')) +end; + +function getInstallDir(Default: String) :String; +begin + if IsAdminLoggedOn() then + result := ExpandConstant('{pf}\PhotoFilmStrip') + else + result := ExpandConstant('{userappdata}\PhotoFilmStrip') +end; + +function VCRedistCheck(): Boolean; +begin + if RegValueExists(HKEY_LOCAL_MACHINE, + 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}', + 'Version') then + result := False + else + result := True +end; + +function ShouldSkipPage(PageID: Integer): Boolean; +begin + if PageID=wpSelectTasks then + begin + if not VCRedistCheck() and not IsAdminLoggedOn() then + MsgBox('Microsoft Visual C++ 2008 Redistributable package is needed, but administrative privileges are required to install it. Please make sure to install it yourself before running the application.', mbInformation, MB_OK) + result := not IsAdminLoggedOn(); + end else + result := False; +end; + Binary files /tmp/HfQzlNFLDY/photofilmstrip-1.9.92+dfsg/windows/vcredist_x86.exe and /tmp/MMFHm9LALp/photofilmstrip-2.0.0/windows/vcredist_x86.exe differ