Merge branch 'master' into 12bit
authorCarl Hetherington <cth@carlh.net>
Thu, 16 Oct 2014 15:30:11 +0000 (16:30 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 16 Oct 2014 15:30:11 +0000 (16:30 +0100)
148 files changed:
ChangeLog
cscript
debian/changelog
debian/rules
doc/manual/Makefile
doc/manual/dcpomatic.xml
doc/manual/screenshots/add-file.png
doc/manual/screenshots/audio-map-eg1.png
doc/manual/screenshots/audio-map-eg2.png
doc/manual/screenshots/audio-map-eg3.png
doc/manual/screenshots/audio-tab.png
doc/manual/screenshots/colour-conversion.png [new file with mode: 0644]
doc/manual/screenshots/filters.png
doc/manual/screenshots/prefs-colour-conversions.png
doc/manual/screenshots/prefs-defaults.png [new file with mode: 0644]
doc/manual/screenshots/prefs-general.png [new file with mode: 0644]
doc/manual/screenshots/prefs-kdm-email.png
doc/manual/screenshots/prefs-misc.png [deleted file]
doc/manual/screenshots/prefs-servers.png [new file with mode: 0644]
doc/manual/screenshots/prefs-tms.png
doc/manual/screenshots/subtitles-tab.png
doc/manual/screenshots/video-tab.png
hacks/start_servers.sh [new file with mode: 0644]
hacks/stop_servers.sh [new file with mode: 0644]
platform/linux/dcpomatic.spec.in
platform/linux/wscript
platform/osx/make_dmg.sh
platform/osx/waf
platform/windows/wscript
run/dcpomatic
src/lib/analyse_audio_job.cc
src/lib/analyse_audio_job.h
src/lib/audio_analysis.cc
src/lib/audio_decoder.cc
src/lib/colour_conversion.cc
src/lib/compose.hpp
src/lib/config.cc
src/lib/config.h
src/lib/content.cc
src/lib/cross.cc
src/lib/dcp_video_frame.cc
src/lib/encoder.cc
src/lib/examine_content_job.cc
src/lib/examine_content_job.h
src/lib/ffmpeg.cc
src/lib/ffmpeg_content.cc
src/lib/ffmpeg_decoder.cc
src/lib/ffmpeg_examiner.cc
src/lib/film.cc
src/lib/filter_graph.cc
src/lib/frame_rate_change.cc
src/lib/frame_rate_change.h
src/lib/image.cc
src/lib/image_content.cc
src/lib/image_proxy.cc
src/lib/image_proxy.h
src/lib/internet.cc
src/lib/job.cc
src/lib/job.h
src/lib/json_server.cc [deleted file]
src/lib/json_server.h [deleted file]
src/lib/kdm.cc
src/lib/log.cc
src/lib/md5_digester.cc
src/lib/player.cc
src/lib/playlist.cc
src/lib/po/de_DE.po
src/lib/po/es_ES.po
src/lib/po/fr_FR.po
src/lib/po/it_IT.po
src/lib/po/nl_NL.po
src/lib/po/sv_SE.po
src/lib/ratio.cc
src/lib/ratio.h
src/lib/safe_stringstream.cc [new file with mode: 0644]
src/lib/safe_stringstream.h [new file with mode: 0644]
src/lib/scp_dcp_job.cc
src/lib/scp_dcp_job.h
src/lib/send_kdm_email_job.cc
src/lib/send_kdm_email_job.h
src/lib/server.cc
src/lib/server_finder.cc
src/lib/sndfile_content.cc
src/lib/stack.cpp
src/lib/subtitle.cc
src/lib/subtitle_content.cc
src/lib/subtitle_content.h
src/lib/transcode_job.cc
src/lib/transcode_job.h
src/lib/ui_signaller.h
src/lib/update.cc
src/lib/util.cc
src/lib/util.h
src/lib/video_content.cc
src/lib/video_content.h
src/lib/video_content_scale.cc [new file with mode: 0644]
src/lib/video_content_scale.h [new file with mode: 0644]
src/lib/writer.cc
src/lib/wscript
src/tools/dcpomatic.cc
src/tools/dcpomatic_batch.cc
src/tools/dcpomatic_cli.cc
src/tools/dcpomatic_kdm.cc
src/tools/dcpomatic_server_cli.cc
src/tools/po/de_DE.po
src/tools/po/es_ES.po
src/tools/po/fr_FR.po
src/tools/po/it_IT.po
src/tools/po/nl_NL.po
src/tools/po/sv_SE.po
src/wx/about_dialog.cc
src/wx/audio_plot.cc
src/wx/colour_conversion_editor.cc
src/wx/config_dialog.cc
src/wx/dolby_certificate_dialog.cc
src/wx/dolby_certificate_dialog.h
src/wx/doremi_certificate_dialog.cc
src/wx/doremi_certificate_dialog.h
src/wx/editable_list.h
src/wx/film_editor.cc
src/wx/film_editor.h
src/wx/film_viewer.cc
src/wx/film_viewer.h
src/wx/hints_dialog.cc
src/wx/job_manager_view.cc
src/wx/job_manager_view.h
src/wx/job_wrapper.cc
src/wx/kdm_dialog.cc
src/wx/po/de_DE.po
src/wx/po/es_ES.po
src/wx/po/fr_FR.po
src/wx/po/it_IT.po
src/wx/po/nl_NL.po
src/wx/po/sv_SE.po
src/wx/properties_dialog.cc
src/wx/subtitle_panel.cc
src/wx/subtitle_panel.h
src/wx/timecode.cc
src/wx/timecode.h
src/wx/timing_panel.cc
src/wx/video_panel.cc
src/wx/wscript
src/wx/wx_util.cc
src/wx/wx_util.h
test/film_metadata_test.cc
test/job_test.cc
test/util_test.cc
wscript

index c4e689b64cec4494aa47339e32dc7a0edd416980..82ee2675e5288050400adcd05e3ba41c3e91c2d0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,230 @@
+2014-10-14  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.74.3 released.
+
+2014-10-08  c.hetherington  <cth@carlh.net>
+
+       * Make server finding more reliable when
+       there are more than a few servers.
+
+2014-10-08  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.74.2 released.
+
+2014-10-08  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.74.1 released.
+
+2014-10-05  Carl Hetherington  <cth@carlh.net>
+
+       * Bump ffmpeg version.
+
+2014-10-06  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.74.0 released.
+
+2014-10-06  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.9 released.
+
+2014-09-28  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.8 released.
+
+2014-09-28  Carl Hetherington  <cth@carlh.net>
+
+       * Add a few key shortcuts.
+
+2014-09-16  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.7 released.
+
+2014-09-16  Carl Hetherington  <cth@carlh.net>
+
+       * Fix non-update of audio gain when changing selected content.
+
+2014-09-14  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.6 released.
+
+2014-09-14  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.5 released.
+
+2014-09-14  Carl Hetherington  <cth@carlh.net>
+
+       * Update to nl_NL translation from Cherif Ben Brahim.
+
+2014-09-12  Carl Hetherington  <cth@carlh.net>
+
+       * Allow separate X and Y scale for subtitles (#337).
+
+2014-09-10  Carl Hetherington  <cth@carlh.net>
+
+       * Allow DCP names to be created using the ISDCF template and then
+       edited afterwards (#401).
+
+       * Fix hidden advanced preferences button in some locales.
+
+2014-09-08  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.4 released.
+
+2014-09-08  Carl Hetherington  <cth@carlh.net>
+
+       * Fix failure to load Targa files.
+
+2014-09-07  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.3 released.
+
+2014-09-07  Carl Hetherington  <cth@carlh.net>
+
+       * Put no stretch / no scale in the set of choices for default
+       scale to.
+
+       * Fix a few bad fuzzy translations from the preferences dialog.
+
+2014-09-03  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.2 released.
+
+2014-09-03  Carl Hetherington  <cth@carlh.net>
+
+       * Fix server certificate downloads on OS X (#376).
+
+2014-09-02  Carl Hetherington  <cth@carlh.net>
+
+       * Improve behaviour of batch converter window when it is shrunk (#338).
+
+2014-09-01  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.1 released.
+
+2014-08-31  Carl Hetherington  <cth@carlh.net>
+
+       * Remove configurable CPL <Creator> and use "DCP-o-matic (version) (git)"
+       instead.
+
+       * Fix lack of i18n of strings from src/lib/po on OS X.
+
+       * Give a hint when content and container aspect ratios are not
+       the same (#392).
+
+       * Add "copy" button to colour conversion presets editor (#399).
+
+       * Allow drag-and-drop of files onto the content list (#395).
+
+2014-08-29  Carl Hetherington  <cth@carlh.net>
+
+       * Some improvements to the manual.
+
+2014-08-26  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.73.0 released.
+
+2014-08-25  Carl Hetherington  <cth@carlh.net>
+
+       * Basic recent files list in the File menu.
+
+2014-08-23  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.12 released.
+
+2014-08-23  Carl Hetherington  <cth@carlh.net>
+
+       * Revert previous use of AVFormatContext::start_time when
+       computing the length of video.  I think this is wrong, and
+       causes bits to be missed off the end of videos (and other
+       problems).
+
+2014-08-20  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.11 released.
+
+2014-08-19  Carl Hetherington  <cth@carlh.net>
+
+       * Attempt to fix random crashes on OS X (especially during encodes)
+       thought to be caused by multiple threads using (different) stringstreams
+       at the same time; see src/lib/safe_stringstream.
+
+2014-08-09  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.10 released.
+
+2014-08-09  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.8 released.
+
+2014-08-08  Carl Hetherington  <cth@carlh.net>
+
+       * Approximate support for changing timing details of multiple
+       bits of content at the same time.
+
+       * Allow removal of multiple bits of content at the same time.
+
+       * Version 1.72.7 released.
+
+2014-08-04  Carl Hetherington  <cth@carlh.net>
+
+       * Add BCC option for KDM emails.
+
+2014-07-29  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.5 released.
+
+2014-07-17  Carl Hetherington  <cth@carlh.net>
+
+       * Fix corrupted text in job descriptions in some cases.
+
+       * Speculative fix for failure to keep Windows
+       machines awake during encodes.
+
+2014-07-16  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.4 released.
+
+2014-07-16  Carl Hetherington  <cth@carlh.net>
+
+       * Add default scaling setting to preferences (#384).
+
+       * Version 1.72.3 released.
+
+2014-07-16  Carl Hetherington  <cth@carlh.net>
+
+       * Improve approximate time reports a bit.
+
+       * Make KDM email subject configurable.
+
+       * Updates to de_DE from Carsten Kurz.
+
+       * Limit allowed KDM types based on Interop/SMPTE setting
+       of DCP (#385).
+
+       * Updates to fr_FR from Grégoire Ausina.
+
+2014-07-14  Carl Hetherington  <cth@carlh.net>
+
+       * Bump libdcp to get a new version which writes
+       <Hash> values to CPLs.
+
+2014-07-10  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.72.2 released.
+
+2014-07-10  Carl Hetherington  <cth@carlh.net>
+
+       * Try to fix corruption of KDM email setting in
+       some cases.
+
+       * Version 1.72.1 released.
+
+2014-07-08  Carl Hetherington  <cth@carlh.net>
+
+       * Fix various problems with seek and content
+       being trimmed when its video frame rate is
+       overridden.
+
 2014-07-02  Carl Hetherington  <cth@carlh.net>
 
        * Updated de_DE translation from Carsten Kurz.
diff --git a/cscript b/cscript
index af3921e2f742535f192b12e805649de1c51e27a2..665d391085977272d917336fb0c6836e62da74b7 100644 (file)
--- a/cscript
+++ b/cscript
@@ -156,11 +156,11 @@ def make_control(debian_version, bits, filename, debug):
         print >>f,''
 
 def dependencies(target):
-    return (('ffmpeg-cdist', '67dc770'),
-            ('libdcp', '7103135'))
+    return (('ffmpeg-cdist', '2dffa11'),
+            ('libdcp', '2001bef5b3a6256eedf1cada4977a3ba8a3732cd'))
 
 def build(target, options):
-    cmd = './waf configure --prefix=%s' % target.work_dir_cscript()
+    cmd = './waf configure --prefix=%s' % target.directory
     if target.platform == 'windows':
         cmd += ' --target-windows'
     elif target.platform == 'linux':
@@ -169,7 +169,10 @@ def build(target, options):
             if target.version == 'unstable':
                 cmd += ' --debian-unstable'
         elif target.distro == 'centos':
-            cmd += ' --target-centos'
+            if target.version == '6.5':
+                cmd += ' --target-centos-6 --disable-tests'
+            elif target.version == '7':
+                cmd += ' --target-centos-7 --disable-tests'
 
     target.command(cmd)
     target.command('./waf')
@@ -181,7 +184,7 @@ def package_windows(target):
     shutil.copyfile('build/platform/windows/installer.%s.nsi' % target.bits, 'build/platform/windows/installer2.%s.nsi' % target.bits)
     target.command('sed -i "s~%%resources%%~%s/platform/windows~g" build/platform/windows/installer2.%s.nsi' % (os.getcwd(), target.bits))
     target.command('sed -i "s~%%static_deps%%~%s~g" build/platform/windows/installer2.%s.nsi' % (target.windows_prefix, target.bits))
-    target.command('sed -i "s~%%cdist_deps%%~%s~g" build/platform/windows/installer2.%s.nsi' % (target.work_dir_cscript(), target.bits))
+    target.command('sed -i "s~%%cdist_deps%%~%s~g" build/platform/windows/installer2.%s.nsi' % (target.directory, target.bits))
     target.command('sed -i "s~%%binaries%%~%s/build~g" build/platform/windows/installer2.%s.nsi' % (os.getcwd(), target.bits))
     target.command('sed -i "s~%%bits%%~32~g" build/platform/windows/installer2.%s.nsi' % target.bits)
     target.command('makensis build/platform/windows/installer2.%s.nsi' % target.bits)
@@ -205,7 +208,7 @@ def package_debian(target, cpu, version):
     target.set('CDIST_PKG_CONFIG_PATH', target.get('PKG_CONFIG_PATH'))
     if target.version == 'unstable':
         target.set('CDIST_EXTRA_CONFIGURE', '--debian-unstable')
-    target.command('dpkg-buildpackage')
+    target.command('dpkg-buildpackage -uc -us')
     
     debs = []
     for p in glob.glob('../*.deb'):
@@ -214,29 +217,26 @@ def package_debian(target, cpu, version):
     return debs
 
 def package_centos(target, cpu, version):
-    os.makedirs('%s/rpmbuild/BUILD' % target.work_dir_cdist())
-    os.makedirs('%s/rpmbuild/RPMS' % target.work_dir_cdist())
-    os.makedirs('%s/rpmbuild/SOURCES' % target.work_dir_cdist())
-    os.makedirs('%s/rpmbuild/SPECS' % target.work_dir_cdist())
-    os.makedirs('%s/rpmbuild/SRPMS' % target.work_dir_cdist())
-
-    f = open('%s/.rpmmacros' % target.dir_in_chroot, 'w')
-    print >>f,"%%_topdir %srpmbuild" % target.dir_in_chroot
-    f.close()
+    topdir = os.path.realpath('build/rpmbuild')
+    os.makedirs('%s/BUILD' % topdir)
+    os.makedirs('%s/RPMS' % topdir)
+    os.makedirs('%s/SOURCES' % topdir)
+    os.makedirs('%s/SPECS' % topdir)
+    os.makedirs('%s/SRPMS' % topdir)
 
     target.command('./waf dist')
     shutil.copyfile(
-        "%s/src/dcpomatic/dcpomatic-%s.tar.bz2" % (target.work_dir_cdist(), version),
-        "%s/rpmbuild/SOURCES/dcpomatic-%s.tar.bz2" % (target.work_dir_cdist(), version)
+        "%s/src/dcpomatic/dcpomatic-%s.tar.bz2" % (target.directory, version),
+        "%s/SOURCES/dcpomatic-%s.tar.bz2" % (topdir, version)
         )
 
-    target.command('rpmbuild -bb build/platform/linux/dcpomatic.spec')
+    target.command('rpmbuild --define \'_topdir %s\' -bb build/platform/linux/dcpomatic.spec' % topdir)
     rpms = []
 
     if cpu == "amd64":
         cpu = "x86_64"
 
-    for p in glob.glob('%s/rpmbuild/RPMS/%s/*.rpm' % (target.work_dir_cdist(), cpu)):
+    for p in glob.glob('%s/RPMS/%s/*.rpm' % (topdir, cpu)):
         rpms.append(os.path.abspath(p))
 
     return rpms
@@ -255,7 +255,7 @@ def package(target, version):
         elif target.distro == 'centos':
             return package_centos(target, cpu, version)
     elif target.platform == 'osx':
-        target.command('bash platform/osx/make_dmg.sh %s' % target.work_dir_cscript())
+        target.command('bash platform/osx/make_dmg.sh %s' % target.directory)
         return os.path.abspath(glob.glob('build/platform/osx/DCP-o-matic*.dmg')[0])
 
 def make_pot(target):
index 69508cb1036f9a412dbefbc172bd687c6d64c705..efd8fd73d4432fd303580e0b94bbfc7df631578b 100644 (file)
@@ -1,4 +1,4 @@
-dcpomatic (1.72.0-1) UNRELEASED; urgency=low
+dcpomatic (1.74.3-1) UNRELEASED; urgency=low
 
   * New upstream release.
   * New upstream release.
@@ -165,8 +165,32 @@ dcpomatic (1.72.0-1) UNRELEASED; urgency=low
   * New upstream release.
   * New upstream release.
   * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
+  * New upstream release.
 
- -- Carl Hetherington <carl@d1stkfactory>  Mon, 30 Jun 2014 10:43:16 +0100
+ -- Carl Hetherington <carl@d1stkfactory>  Tue, 14 Oct 2014 18:38:17 +0100
 
 dcpomatic (0.87-1) UNRELEASED; urgency=low
 
index 619dfff5ea6d4afce35cebadf39e0993cd9901d1..dd27a7552479569ce627b0c8886aa87aadedf0c0 100755 (executable)
@@ -21,6 +21,18 @@ override_dh_auto_build:
 
 override_dh_auto_install:
        ./waf --nocache install --destdir=debian/dcpomatic
+       mkdir -p debian/dcpomatic/usr/share/locale/de/LC_MESSAGES/
+       cp -a /usr/local/share/locale/de/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/de/LC_MESSAGES/dcpomatic-wxstd.mo
+       mkdir -p debian/dcpomatic/usr/share/locale/es/LC_MESSAGES/
+       cp -a /usr/local/share/locale/es/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/es/LC_MESSAGES/dcpomatic-wxstd.mo
+       mkdir -p debian/dcpomatic/usr/share/locale/fr/LC_MESSAGES/
+       cp -a /usr/local/share/locale/fr/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/fr/LC_MESSAGES/dcpomatic-wxstd.mo
+       mkdir -p debian/dcpomatic/usr/share/locale/it/LC_MESSAGES/
+       cp -a /usr/local/share/locale/it/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/it/LC_MESSAGES/dcpomatic-wxstd.mo
+       mkdir -p debian/dcpomatic/usr/share/locale/sv/LC_MESSAGES/
+       cp -a /usr/local/share/locale/sv/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/sv/LC_MESSAGES/dcpomatic-wxstd.mo
+       mkdir -p debian/dcpomatic/usr/share/locale/nl/LC_MESSAGES/
+       cp -a /usr/local/share/locale/nl/LC_MESSAGES/wxstd.mo debian/dcpomatic/usr/share/locale/nl/LC_MESSAGES/dcpomatic-wxstd.mo
 
 .PHONY: override_dh_strip
 override_dh_strip:
index 408f874f67dc68c2099022f2b9b4e429b80afb7b..55d888b2e3ba2d66f06e21cec0572cd359794aad 100644 (file)
@@ -7,9 +7,9 @@ DIAGRAMS := file-structure.svg 3d-left-right.svg 3d-top-bottom.svg timecode.svg
 
 SCREENSHOTS := file-new.png video-new-film.png still-new-film.png video-select-content-file.png \
                still-select-content-file.png examine-thumbs.png examine-content.png timing-tab.png \
-               calculate-audio-gain.png add-file.png dcp-tab.png \
-               prefs-kdm-email.png prefs-colour-conversions.png prefs-metadata.png prefs-misc.png prefs-tms.png \
-               prefs-advanced.png \
+               calculate-audio-gain.png add-file.png dcp-tab.png colour-conversion.png \
+               prefs-kdm-email.png prefs-colour-conversions.png prefs-metadata.png prefs-general.png prefs-tms.png \
+               prefs-advanced.png prefs-defaults.png prefs-servers.png \
                making-dcp.png filters.png video-tab.png audio-tab.png subtitles-tab.png timing-tab.png \
                audio-plot.png audio-map-eg1.png audio-map-eg2.png audio-map-eg3.png kdm.png
 
index dee7fe052893b1c023eb383063e96609fdcee725..cd27bef726f816e4e104ce2d7dfca74308ea9527 100644 (file)
@@ -27,6 +27,7 @@
 Hello, and welcome to DCP-o-matic!
 </para>
 
+<!-- ============================================================== -->
 <section>
 <title>What is DCP-o-matic?</title>
 
@@ -46,6 +47,8 @@ your cinema.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Licence</title>
 
@@ -55,6 +58,8 @@ DCP-o-matic is licensed under the <ulink url="http://www.gnu.org/licenses/old-li
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Acknowledgements</title>
 
@@ -68,6 +73,8 @@ This manual uses icons from the <ulink url="http://tango.freedesktop.org/">Tango
 <chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Installation</title>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Windows</title>
 
@@ -89,12 +96,14 @@ version.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Mac OS X</title>
 
 <para>
 DCP-o-matic will run on Mac OS X version 10.6 (Snow Leopard) and
-higher.  To install it, download the <code>DMG</code> from <ulink
+higher.  To install it, download the <code>.dmg</code> from <ulink
 url="http://dcpomatic.com/">http://dcpomatic.com/</ulink> and double
 click to open it.  Then drag the DCP-o-matic icon to your
 <guilabel>Applications</guilabel> folder or wherever else you would
@@ -108,8 +117,7 @@ like to install it.
 
 <para>
 You can install DCP-o-matic on Ubuntu 12.04 (&lsquo;Precise
-Pangolin&rsquo;), 12.10 (&lsquo;Quantal Quetzal&rsquo;), 13.10 (&lsquo;Saucy
-Salamander&rsquo;) or 14.04 (&lsquo;Trusty Tahr&rsquo;) using <code>.deb</code> packages: download the
+Pangolin&rsquo;) or 14.04 (&lsquo;Trusty Tahr&rsquo;) using <code>.deb</code> packages: download the
 appropriate package from <ulink
 url="http://dcpomatic.com/">http://dcpomatic.com/</ulink> and
 double-click it.  Ubuntu will install the necessary bits and pieces
@@ -118,22 +126,28 @@ and set DCP-o-matic up for you.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Debian Linux</title>
 <para>
-Packages are available for Debian 7 (squeeze) from <ulink
+Packages are available for Debian 7 (squeeze) and unstable (sid) from <ulink
 url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>.
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Centos Linux</title>
 <para>
-Packages are available for Centos 6.5 from <ulink
+Packages are available for Centos 6.5 and 7 from <ulink
 url="http://dcpomatic.com/">http://dcpomatic.com/</ulink>.
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Arch Linux</title>
 <para>
@@ -143,6 +157,8 @@ thanks to Stefan Karner.
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Other Linux distributions</title>
 
@@ -150,8 +166,7 @@ thanks to Stefan Karner.
 Installation on non-Ubuntu Linux is currently a little involved, as
 there are no packages available (yet); you will have to compile it
 from source.  If you are using a non-Ubuntu distribution, do let me
-know via the <ulink url="mailto:carl@dcpomatic.com">mailing
-list</ulink> and I will see about building some packages.
+know by <ulink url="mailto:carl@dcpomatic.com">email</ulink> and I will see about building some packages.
 </para>
 
 <para>
@@ -205,6 +220,8 @@ in a shell.
 </section>
 </chapter>
 
+
+<!-- ============================================================== -->
 <chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Creating a video DCP</title>
 
@@ -270,6 +287,8 @@ will write its working files.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Adding content</title>
 
@@ -339,6 +358,8 @@ url="http://www.mplayerhq.hu/design7/news.html">mplayer</ulink> or
 
 
 
+
+<!-- ============================================================== -->
 <section>
 <title>Making the DCP</title>
 
@@ -381,6 +402,8 @@ DCP-o-matic.  See the <xref linkend="sec-prefs-tms" endterm="sec-prefs-tms-short
 </section>
 </chapter>
 
+
+<!-- ============================================================== -->
 <chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Creating a still-image DCP</title>
 
@@ -454,6 +477,8 @@ to encode a single frame which it can then repeat.
 
 </chapter>
 
+
+<!-- ============================================================== -->
 <chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Content settings</title>
 
@@ -504,6 +529,9 @@ clicking the <guilabel>Remove</guilabel> button.
 </para>
 
 </section>
+
+
+<!-- ============================================================== -->
 <section>
 <title>Content Properties</title>
 
@@ -524,6 +552,8 @@ in each section are described below.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Video</title>
 
@@ -540,6 +570,8 @@ The <guilabel>Video</guilabel> tab controls properties of the image, as shown in
   </mediaobject>
 </figure>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Image type</title>
 
@@ -576,6 +608,18 @@ linkend="fig-3d-top-bottom"/>.
   </mediaobject>
 </figure>
 
+<para>
+Another option is <guilabel>3D alternate</guilabel> which takes the
+first frame of the content as for the left eye, the second for the
+right eye, the third for the left, and so on.  Finally, you can
+specify <guilabel>3D left only</guilabel> or <guilabel>3D right
+only</guilabel> if this content contains only the the left or right
+eye images.  This is useful when you have the left and right eye image
+sets in different files; you can specify one content as <guilabel>3D
+left only</guilabel> and another as <guilabel>3D right only</guilabel>
+and DCP-o-matic will pick up the appropriate frames from each.
+</para>
+
 </section>
 
 
@@ -610,6 +654,52 @@ image is much smaller and of lower resolution than a projected image!
 </section>
 
 
+
+<!-- ============================================================== -->
+<section>
+<title>Colour conversion</title>
+
+<para>
+The <guilabel>Colour conversion</guilabel> setting specifies what
+colour transforms and gamma correction DCP-o-matic will use when
+converting the selected content into the XYZ colourspace for the DCP.
+</para>
+
+<para>
+Clicking <guilabel>Edit...</guilabel> will open the colour conversion
+dialogue box, as shown in <xref linkend="fig-colour-conversion"/>.
+</para>
+
+<figure id="fig-colour-conversion">
+  <title>Dialogue box for setting colour conversion</title> 
+  <mediaobject>
+    <imageobject> 
+      <imagedata fileref="screenshots/colour-conversion&scs;"/>
+    </imageobject> 
+  </mediaobject>
+</figure>
+
+<para>
+In most cases, it is only necessary to select one of DCP-o-matic's
+presets.  DCP-o-matic knows how to convert from two common
+colourspaces: sRGB and Rec. 709, so if your content was graded using
+one of those you can select the appropriate preset.
+</para>
+
+<para>
+For other colour spaces you can edit the values in the lower half of
+the dialogue box as you wish.  Alternatively, create a new colour
+conversion preset using the preferences dialog, as described in <xref
+linkend="sec-prefs-colour"/>.
+</para>
+
+<para>
+Colour conversion is discussed in more detail in a separate document
+<ulink url="http://dcpomatic.com/manual/colour.pdf">colour.pdf</ulink>.
+</para>
+
+</section>
+
 <!-- ============================================================== -->
 <section>
 <title>Other settings</title>
@@ -629,6 +719,8 @@ ratio that your content should be presented in.
 </para>
 
 </section>
+
+<!-- ============================================================== -->
 <section>
 <title>Video description</title>
 
@@ -652,6 +744,8 @@ will happen to it when it is played at the DCP's frame rate.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Audio</title>
 
@@ -668,6 +762,8 @@ The <guilabel>Audio</guilabel> tab controls properties of the image, as shown in
   </mediaobject>
 </figure>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Show audio</title>
 
@@ -717,6 +813,8 @@ auditorium, but it can be useful to get levels in the right rough area.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>The audio map</title>
 
@@ -729,10 +827,35 @@ in the DCP.
 <para>
 Down the left-hand side of the map is the list of audio channels in
 the currently-selected piece of content.  Along the top is each
-channel in the DCP.  A checked box means that the corresponding
+channel in the DCP.  A green box means that the corresponding
 content channel will be copied into the corresponding DCP channel.
 </para>
 
+<para>
+When content channels are copied into DCP channels they can be done
+with variable gain.  If, for example, you want to copy a channel
+as-is, you can set a gain of 0dB.  Alternatively, if you want to mix
+two channels into one, you may want to use a gain of -6dB on each one
+to prevent clipping when the two channels are added.
+</para>
+
+<para>
+The green boxes of the audio mapping view tell you (very roughly) how
+much gain is applied to each channel.  A full-height box means 0dB
+(i.e. unity) gain.  Any less height indicates lower gain.
+</para>
+
+<para>
+To map one channel to another with 0dB gain, click in the empty box
+and it will turn green to reflect the mapping.  A second click will
+turn the mapping back off.  To set some other gain, right-click on the
+box to open the gain menu.  This allows you to set
+<guilabel>Off</guilabel> (no mapping or negative infinity gain),
+<guilabel>Full</guilabel> (0dB gain), -6dB gain or
+<guilabel>Edit</guilabel> which allows you to set the required gain
+precisely.
+</para>
+
 <para>
 Consider, for example, the case in <xref linkend="fig-audio-map-eg1"/>.
 </para>
@@ -748,8 +871,9 @@ Consider, for example, the case in <xref linkend="fig-audio-map-eg1"/>.
 
 <para>
 Here, we have two channels in the source which are mapped to left and
-right, respectively, in the DCP.  If we modify that as in <xref
-linkend="fig-audio-map-eg2"/>
+right, respectively, in the DCP.  The full green boxes show that the
+mapping is at unity gain (0dB) in each case.  Imagine that we modify
+the settings to those shown in <xref linkend="fig-audio-map-eg2"/>
 </para>
 
 <figure id="fig-audio-map-eg2">
@@ -762,8 +886,13 @@ linkend="fig-audio-map-eg2"/>
 </figure>
 
 <para>
-we now have the content's streams mapped to left and right and also
-mixed together and placed in the DCP's centre channel.
+We now have the content's streams mapped to left and right and also
+mixed together and placed in the DCP's centre channel.  The smaller
+green boxes on the centre mappings show that those channels are added
+with some non-unity gain; you can see by hovering the mouse pointer
+over those boxes that the gain for content channels 1 and 2 is -6dB
+when being sent to the centre channel and 0dB when being sent to left
+and right.
 </para>
 
 <figure id="fig-audio-map-eg3">
@@ -782,6 +911,8 @@ shows the mapping of a 5.1 source into a 5.1 DCP.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Other controls</title>
 
@@ -842,6 +973,7 @@ might be different soundtrack languages, for example.
 </section>
 
 
+<!-- ============================================================== -->
 <section>
 <title>Subtitles</title>
 
@@ -866,9 +998,11 @@ included in the image and not overlaid by the projector).  Note that
 DVD and Blu-Ray subtitles are stored as bitmaps, so it is not possible
 (automatically) to use non-burnt-in subtitles with these sources.
 Select the <guilabel>With Subtitles</guilabel> check-box to enable
-subtitles.  The <guilabel>offset</guilabel> control moves the
-subtitles up and down the image, and the <guilabel>scale</guilabel>
-control changes their size.
+subtitles.  The <guilabel>X Offset</guilabel> and <guilabel>Y
+Offset</guilabel> controls move the subtitles around within the image,
+and the <guilabel>scale</guilabel> control changes their size.  The
+<guilabel>Stream</guilabel> control changes the subtitle stream that
+is used when the content has more than one.
 </para>
 
 <para>
@@ -879,6 +1013,8 @@ DCPs).
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Timing</title>
 
@@ -953,6 +1089,8 @@ any changes to the corresponding timecode.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Video processing pipeline</title>
 
@@ -1195,7 +1333,7 @@ more modern of the two).
 
 <para>
 Finally, the <guilabel>Scaler</guilabel> is the method that will be used to scale up
-your content to the required size for the DCP, if required.  Bicubic is a fine choice in
+your content for the DCP, if required.  Bicubic is a fine choice in
 most situations.
 </para>
 
@@ -1210,6 +1348,8 @@ chapter discusses the basic principles of DCP encryption, and how
 DCP-o-matic can create encrypted DCPs and KDMs for them.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Basics</title>
 
@@ -1223,6 +1363,8 @@ way that he can play it.  Only those cinemas who receive a correct key
 delivery message (KDM) can play the DCP.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>How it works (in a nutshell)</title>
 
@@ -1298,6 +1440,8 @@ does not).
 </section>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Encryption using DCP-o-matic</title>
 
@@ -1387,6 +1531,8 @@ generate the KDMs.
 </chapter>
 
 
+
+<!-- ============================================================== -->
 <chapter xml:id="ch-preferences" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
 <title>Preferences</title>
 
@@ -1395,31 +1541,36 @@ DCP-o-matic provides a few preferences which can be used to modify its
 behaviour.  This chapter explains those options.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>The preferences dialogue</title>
 
 <para>
 The preferences dialogue is opened by choosing
 <guilabel>Preferences...</guilabel> from the <guilabel>Edit</guilabel>
-menu.  The dialogue is split into five tabs.
+menu.  The dialogue is split into seven tabs.
 </para>
 
+<!-- ============================================================== -->
 <section>
-<title>Miscellaneous</title>
+<title>General</title>
 
 <para>
-The miscellaneous tab is shown in <xref linkend="fig-prefs-misc"/>.
+The general tab is shown in <xref linkend="fig-prefs-general"/>.
 </para>
 
-<figure id="fig-prefs-misc"> 
-  <title>Miscellaneous preferences</title> 
+<figure id="fig-prefs-general"> 
+  <title>General preferences</title> 
   <mediaobject>
     <imageobject> 
-      <imagedata fileref="screenshots/prefs-misc&scs;"/>
+      <imagedata fileref="screenshots/prefs-general&scs;"/>
     </imageobject> 
   </mediaobject>
 </figure>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Language</title>
 
@@ -1437,6 +1588,8 @@ read about how to contribute a translation.
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Threads</title>
 
@@ -1450,30 +1603,57 @@ to set this up correctly when you run it for the first time.
 
 </section>
 
+<!-- ============================================================== -->
 <section>
-<title>KDM emails</title>
+<title>Updates</title>
+
+<para>
+The <guilabel>Check for updates on startup</guilabel> option, if
+enabled, will tell DCP-o-matic to check on <ulink
+url="http://dcpomatic.com/">dcpomatic.com</ulink> to see if there any
+newer versions of DCP-o-matic then the one you are running.  If so, a
+dialogue box will open with a link to download the new version.
+available
+</para>
 
 <para>
-DCP-o-matic can send KDMs (see <xref linkend="ch-encryption"/>) to
-cinemas (or anywhere else) via email.  To make this work, enter a
-suitable outgoing mail (SMTP) server and &lsquo;from&rsquo; address
-for these emails.
+The <guilabel>Check for testing updates as well as stable
+ones</guilabel> option will also check for test updates as well as
+those that are formally &lsquo;released&rsquo; This is useful if you
+like to live on the bleeding edge!
 </para>
+</section>
 
 </section>
 
+<!-- ============================================================== -->
 <section>
 <title>Defaults</title>
 
 <para>
-The next few options allow you to set up default values for several
-properties of new films that you create.
+The defaults tab is shown in <xref linkend="fig-prefs-defaults"/>.
+</para>
+
+<figure id="fig-prefs-defaults">
+  <title>Defaults preferences</title> 
+  <mediaobject>
+    <imageobject> 
+      <imagedata fileref="screenshots/prefs-defaults&scs;"/>
+    </imageobject> 
+  </mediaobject>
+</figure>
+
+<para>
+The options in this tab simply allow you to set up default values for
+various properties of new films.
 </para>
 
-</section>
 </section>
 
-<section>
+<!-- XXX: servers -->
+
+<!-- ============================================================== -->
+<section xml:id="sec-prefs-colour">
 <title>Colour conversions</title>
 
 <para>
@@ -1507,29 +1687,8 @@ converting from common input colour spaces to XYZ.
 
 </section>
 
-<section>
-<title>Metadata</title>
-
-<para>
-The metadata tab is shown in <xref linkend="fig-prefs-metadata"/>.
-</para>
-
-<figure id="fig-prefs-metadata"> 
-  <title>Metadata preferences</title> 
-  <mediaobject>
-    <imageobject> 
-      <imagedata fileref="screenshots/prefs-metadata&scs;"/>
-    </imageobject> 
-  </mediaobject>
-</figure>
-
-<para>
-This allows you to set up a couple of identifiers that are written
-into the DCP.  The default values should cause no problems.
-</para>
-
-</section>
 
+<!-- ============================================================== -->
 <section xml:id="sec-prefs-tms">
 <title>TMS</title>
 <titleabbrev xml:id="sec-prefs-tms-short">TMS preferences</titleabbrev>
@@ -1561,6 +1720,8 @@ credentials required to log into the TMS via SSH.
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>KDM email</title>
 
@@ -1579,13 +1740,42 @@ The KDM email is shown in <xref linkend="fig-prefs-kdm-email"/>.
 
 <para>
 This is a template for the email that is used to send KDMs out to
-cinemas.  You can change it to say whatever you like.  The
-&lsquo;magic&rsquo; string <code>$CPL_NAME</code> will be replaced by
-DCP's title.
+cinemas.  You can change it to say whatever you like.  A few
+&lsquo;magic&rsquo; strings will be replaced by information from the
+KDM that is being sent:
+</para>
+
+<table>
+<title>&lsquo;Magic&rsquo; KDM strings</title>
+<tgroup cols='2' align='left' colsep='1' rowsep='1'>
+<tbody>
+<row>
+<entry><code>$CPL_NAME</code></entry><entry>DCP title</entry>
+</row>
+<row>
+<entry><code>$CINEMA_NAME</code></entry><entry>Cinema name</entry>
+</row>
+<row>
+<entry><code>$SCREENS</code></entry><entry>Name of screen or screens that KDMs are being generated for</entry>
+</row>
+<row>
+<entry><code>$START_TIME</code></entry><entry>The time from which the KDMs are valid</entry>
+</row>
+<row>
+<entry><code>$END_TIME</code></entry><entry>The time until which the KDMs are valid</entry>
+</row>
+</tbody>
+</tgroup>
+</table>
+
+<para>
+The <guilabel>Reset to default text</guilabel> will replace the current KDM email with DCP-o-matic's default.
 </para>
 
 </section>
 
+
+<!-- ============================================================== -->
 <section xml:id="sec-prefs-advanced">
 <title>Advanced</title>
 <titleabbrev xml:id="sec-prefs-advanced-short">Advanced preferences</titleabbrev>
@@ -1646,6 +1836,8 @@ video frame and audio sampling rates as the DCP.  This is not,
 however, always possible.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>DCP frame rate limitations</title>
 
@@ -1657,6 +1849,8 @@ play fine, but another (of a different type) will refuse to play, or
 even refuse to ingest.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Guaranteed rates</title>
 
@@ -1669,6 +1863,8 @@ consider using these rates if at all possible.
 
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Other often-supported rates</title>
 <para>
@@ -1677,6 +1873,8 @@ Many projectors now in the wild support additional video frame rates:
 </para>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Adapting content to fit the DCP rate</title>
 
@@ -1719,6 +1917,8 @@ For very low or high frame rates, DCP-o-matic can also skip or duplicate frames.
 </section>
 </section>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Setting up</title>
 
@@ -1768,6 +1968,8 @@ The master and server machines do not need to be the same type, so you
 can mix Windows PCs, Macs and Linux machines as you wish.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Running the servers</title>
 
@@ -1822,6 +2024,8 @@ without touching your standard operating system install.
 </para>
 
 </section>
+
+<!-- ============================================================== -->
 <section>
 <title>Setting up DCP-o-matic</title>
 
@@ -1834,6 +2038,8 @@ servers that DCP-o-matic has found.
 </para>
 
 </section>
+
+<!-- ============================================================== -->
 <section>
 <title>Some notes about encode servers</title>
 
@@ -1916,6 +2122,8 @@ to the cinema which is showing your DCP.
 This chapter collects a few notes on bits of DCP-o-matic that do not fit elsewhere in the manual.
 </para>
 
+
+<!-- ============================================================== -->
 <section>
 <title>Resuming encodes</title>
 
index 86901de1b1c37d73669a8c16e33f10e26e0871f0..22234dc6f4d5473bebdb5c9a80db041258374043 100644 (file)
Binary files a/doc/manual/screenshots/add-file.png and b/doc/manual/screenshots/add-file.png differ
index 246c2e2d1daba4f8e265a6d5759ae3fbc534f47b..edef76e2d667c60d0b6911956a24932dc189b4f6 100644 (file)
Binary files a/doc/manual/screenshots/audio-map-eg1.png and b/doc/manual/screenshots/audio-map-eg1.png differ
index e2a9e1bb3a243ae1267874085b5922755b8b0e73..0e047cf38e3dfe65bb8c34aa351535ad3f90eacd 100644 (file)
Binary files a/doc/manual/screenshots/audio-map-eg2.png and b/doc/manual/screenshots/audio-map-eg2.png differ
index a1ebe3848539799cb67961b6e0d52ee400cb964b..b43fb29685f05908a7ebcb068d32f8c9e8837c70 100644 (file)
Binary files a/doc/manual/screenshots/audio-map-eg3.png and b/doc/manual/screenshots/audio-map-eg3.png differ
index 78b216793c20f2b5672930f6f3e10dd75f423218..e12f2379768602411258938ed9eda133d013a26e 100644 (file)
Binary files a/doc/manual/screenshots/audio-tab.png and b/doc/manual/screenshots/audio-tab.png differ
diff --git a/doc/manual/screenshots/colour-conversion.png b/doc/manual/screenshots/colour-conversion.png
new file mode 100644 (file)
index 0000000..c5013ea
Binary files /dev/null and b/doc/manual/screenshots/colour-conversion.png differ
index 3f3c1e6c08a7bb691fb5112d71683a6c5479ad3d..1a21c9d2402ba555fa5d21db598d6127d9b93ec3 100644 (file)
Binary files a/doc/manual/screenshots/filters.png and b/doc/manual/screenshots/filters.png differ
index 4ac4dc1d1d0619852619857f1c0b526e7acfb278..93b0dcf766d7c90df2ed45f563cfa33f163a8e5b 100644 (file)
Binary files a/doc/manual/screenshots/prefs-colour-conversions.png and b/doc/manual/screenshots/prefs-colour-conversions.png differ
diff --git a/doc/manual/screenshots/prefs-defaults.png b/doc/manual/screenshots/prefs-defaults.png
new file mode 100644 (file)
index 0000000..b116c31
Binary files /dev/null and b/doc/manual/screenshots/prefs-defaults.png differ
diff --git a/doc/manual/screenshots/prefs-general.png b/doc/manual/screenshots/prefs-general.png
new file mode 100644 (file)
index 0000000..2a360e0
Binary files /dev/null and b/doc/manual/screenshots/prefs-general.png differ
index 26ab5c04460cbb6d8ecd91773f8f5ba6964024f0..5f30a1331496bc623ef00fa0a91b469261ac49b2 100644 (file)
Binary files a/doc/manual/screenshots/prefs-kdm-email.png and b/doc/manual/screenshots/prefs-kdm-email.png differ
diff --git a/doc/manual/screenshots/prefs-misc.png b/doc/manual/screenshots/prefs-misc.png
deleted file mode 100644 (file)
index 7e3a45a..0000000
Binary files a/doc/manual/screenshots/prefs-misc.png and /dev/null differ
diff --git a/doc/manual/screenshots/prefs-servers.png b/doc/manual/screenshots/prefs-servers.png
new file mode 100644 (file)
index 0000000..11a0c27
Binary files /dev/null and b/doc/manual/screenshots/prefs-servers.png differ
index effc3ad7170d4dce760c8422748dd1472b5a69bd..62b0cadac5a78c9c02b973b37453934b5e0d8183 100644 (file)
Binary files a/doc/manual/screenshots/prefs-tms.png and b/doc/manual/screenshots/prefs-tms.png differ
index 4880d8391ad3813fc19688134de6700abf6e3e6a..c2a01126e585e3159a9d1bc1dfb5b12bcc229d40 100644 (file)
Binary files a/doc/manual/screenshots/subtitles-tab.png and b/doc/manual/screenshots/subtitles-tab.png differ
index 31b120a52336d09bcd983a85a1a03943e657590e..80ae513f43c7d95edbdbd1cfddf34a8dc715ba76 100644 (file)
Binary files a/doc/manual/screenshots/video-tab.png and b/doc/manual/screenshots/video-tab.png differ
diff --git a/hacks/start_servers.sh b/hacks/start_servers.sh
new file mode 100644 (file)
index 0000000..23b5b02
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+dsh -m cs2-1  -m cs2-2  -m cs2-3  -m cs2-4  -m cs2-5  -m cs2-6  -m cs2-7  -m cs2-8 \
+    -m cs2-9  -m cs2-10 -m cs2-11 -m cs2-12 -m cs2-13 -m cs2-14 -m cs2-15 -m cs2-16 \
+    -m cs2-17 -m cs2-18 -m cs2-19 -m cs2-20                               -m cs2-24 \
+    -m cs2-25 \
+    "screen -dmS dcpomatic bash -c 'cd src/dcpomatic; LD_LIBRARY_PATH=$HOME/ubuntu/lib run/dcpomatic_server_cli --verbose'"
diff --git a/hacks/stop_servers.sh b/hacks/stop_servers.sh
new file mode 100644 (file)
index 0000000..7ea031f
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+dsh -m cs2-1  -m cs2-2  -m cs2-3  -m cs2-4  -m cs2-5  -m cs2-6  -m cs2-7  -m cs2-8 \
+    -m cs2-9  -m cs2-10 -m cs2-11 -m cs2-12 -m cs2-13 -m cs2-14 -m cs2-15 -m cs2-16 \
+    -m cs2-17 -m cs2-18 -m cs2-19 -m cs2-20                               -m cs2-24 \
+    -m cs2-25 \
+    killall dcpomatic_server_cli
index 46a0d1ce4fd89d86767e63c93e0f142173af60bc..da179628c76d0e12125fdc0d10c93d457369d195 100644 (file)
@@ -1,6 +1,6 @@
 Summary:A program that generates Digital Cinema Packages (DCPs) from video and audio files
 Name:dcpomatic
-Version:@version@
+Version:@VERSION@
 Release:1%{?dist}
 License:GPL
 Group:Applications/Multimedia
@@ -49,15 +49,15 @@ digital projectors.
 %{_datadir}/locale/nl_NL/LC_MESSAGES/libdcpomatic.mo
 
 %prep
-rm -rf $RPM_BUILD_DIR/dcpomatic-@version@
-tar xjf $RPM_SOURCE_DIR/dcpomatic-@version@.tar.bz2
+rm -rf $RPM_BUILD_DIR/dcpomatic-@VERSION@
+tar xjf $RPM_SOURCE_DIR/dcpomatic-@VERSION@.tar.bz2
 %build
-cd dcpomatic-@version@
-export PKG_CONFIG_PATH=/home/carl/lib/pkgconfig:/usr/local/lib/pkgconfig
-CXXFLAGS="-I/home/carl/include" LDFLAGS="-L/home/carl/lib" ./waf configure --prefix=%{buildroot}/usr --install-prefix=/usr --target-centos
+cd dcpomatic-@VERSION@
+export PKG_CONFIG_PATH=@INSTALL_PREFIX@/lib/pkgconfig:/usr/local/lib/pkgconfig
+CXXFLAGS="-I@INSTALL_PREFIX@/include" LDFLAGS="-L@INSTALL_PREFIX@/lib" ./waf configure --prefix=%{buildroot}/usr --install-prefix=/usr --target-centos-@CENTOS_VERSION@ --disable-tests
 ./waf
 %install
-cd dcpomatic-@version@
+cd dcpomatic-@VERSION@
 ./waf install
 
 %post
index fe6f4e2db10a9a77aa16e4bb3d95463479097790..3aab4f7fb349120fb85f96ec2f27f6b35581a941 100644 (file)
@@ -1,25 +1,30 @@
 def build(bld):
-    d = { 'INSTALL_PREFIX' : bld.env.INSTALL_PREFIX }
-    d = { 'VERSION' : bld.env.VERSION }
-
     obj = bld(features='subst')
     obj.source = 'dcpomatic.desktop.in'
     obj.target = 'dcpomatic.desktop'
-    obj.dict = d
+    obj.INSTALL_PREFIX = bld.env.INSTALL_PREFIX
+    obj.VERSION = bld.env.VERSION
 
     obj = bld(features='subst')
     obj.source = 'dcpomatic_batch.desktop.in'
     obj.target = 'dcpomatic_batch.desktop'
-    obj.dict = d
+    obj.INSTALL_PREFIX = bld.env.INSTALL_PREFIX
+    obj.VERSION = bld.env.VERSION
 
     obj = bld(features='subst')
     obj.source = 'dcpomatic_server.desktop.in'
     obj.target = 'dcpomatic_server.desktop'
-    obj.dict = d
+    obj.INSTALL_PREFIX = bld.env.INSTALL_PREFIX
+    obj.VERSION = bld.env.VERSION
 
     obj = bld(features='subst')
     obj.source = 'dcpomatic.spec.in'
     obj.target = 'dcpomatic.spec'
-    obj.dict = d
+    obj.INSTALL_PREFIX = bld.env.INSTALL_PREFIX
+    obj.VERSION = bld.env.VERSION
+    if bld.env.TARGET_CENTOS_6:
+        obj.CENTOS_VERSION = '6'
+    elif bld.env.TARGET_CENTOS_7:
+        obj.CENTOS_VERSION = '7'
 
     bld.install_files('${PREFIX}/share/applications', ['dcpomatic.desktop', 'dcpomatic_batch.desktop', 'dcpomatic_server.desktop'])
index 92c6dc96b25e209bc78e6fe1d31c47e45c0911c7..52bff13494af84aef430ae3ef40a63d5b952239b 100644 (file)
@@ -4,7 +4,8 @@
 #
 # e.g. make_dmg.sh /Users/carl/cdist
 
-set -e
+# Don't set -e here as egrep (used a few times) returns 1 if no matches
+# were found.
 
 version=`cat wscript | egrep ^VERSION | awk '{print $3}' | sed -e "s/'//g"`
 
@@ -15,107 +16,132 @@ ENV=/Users/carl/Environments/osx/10.6
 ROOT=$1
 
 appdir="DCP-o-matic.app"
-approot=$appdir/Contents
-libs=$approot/lib
-macos=$approot/MacOS
-resources=$approot/Resources
+approot="$appdir/Contents"
+libs="$approot/lib"
+macos="$approot/MacOS"
+resources="$approot/Resources"
 
-rm -rf $WORK/$appdir
-mkdir -p $WORK/$macos
-mkdir -p $WORK/$libs
-mkdir -p $WORK/$resources
+rm -rf "$WORK/$appdir"
+mkdir -p "$WORK/$macos"
+mkdir -p "$WORK/$libs"
+mkdir -p "$WORK/$resources"
+
+relink="dcpomatic"
 
 function universal_copy {
-    echo $2
     for f in $1/32/$2; do
         if [ -h $f ]; then
-           ln -s $(readlink $f) $3/`basename $f`
+           ln -s $(readlink $f) "$3/`basename $f`"
+        else
+            g=`echo $f | sed -e "s/\/32\//\/64\//g"`
+           mkdir -p "$3"
+            lipo -create $f $g -output "$3/`basename $f`"
+        fi
+    done
+}
+
+function universal_copy_lib {
+    for f in $1/32/lib/$2*.dylib; do
+        if [ -h $f ]; then
+           ln -s $(readlink $f) "$3/`basename $f`"
         else
-          g=`echo $f | sed -e "s/\/32\//\/64\//g"`
-         mkdir -p $3
-          lipo -create $f $g -output $3/`basename $f`
+            g=`echo $f | sed -e "s/\/32\//\/64\//g"`
+           mkdir -p "$3"
+            lipo -create $f $g -output "$3/`basename $f`"
         fi
     done
+    relink="$relink|$2"
 }
 
-universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic $WORK/$macos
-universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_cli $WORK/$macos
-universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_server_cli $WORK/$macos
-universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_batch $WORK/$macos
-universal_copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic.dylib $WORK/$libs
-universal_copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic-wx.dylib $WORK/$libs
-universal_copy $ROOT lib/libcxml.dylib $WORK/$libs
-universal_copy $ROOT lib/libdcp.dylib $WORK/$libs
-universal_copy $ROOT lib/libasdcp-libdcp.dylib $WORK/$libs
-universal_copy $ROOT lib/libkumu-libdcp.dylib $WORK/$libs
-universal_copy $ROOT lib/libopenjpeg*.dylib $WORK/$libs
-universal_copy $ROOT lib/libavdevice*.dylib $WORK/$libs
-universal_copy $ROOT lib/libavformat*.dylib $WORK/$libs
-universal_copy $ROOT lib/libavfilter*.dylib $WORK/$libs
-universal_copy $ROOT lib/libavutil*.dylib $WORK/$libs
-universal_copy $ROOT lib/libavcodec*.dylib $WORK/$libs
-universal_copy $ROOT lib/libswscale*.dylib $WORK/$libs
-universal_copy $ROOT lib/libswresample*.dylib $WORK/$libs
-universal_copy $ROOT lib/libpostproc*.dylib $WORK/$libs
-universal_copy $ROOT bin/ffprobe $WORK/$macos
-universal_copy $ENV lib/libboost_system.dylib $WORK/$libs
-universal_copy $ENV lib/libboost_filesystem.dylib $WORK/$libs
-universal_copy $ENV lib/libboost_thread.dylib $WORK/$libs
-universal_copy $ENV lib/libboost_date_time.dylib $WORK/$libs
-universal_copy $ENV lib/libxml++-2.6*.dylib $WORK/$libs
-universal_copy $ENV lib/libxml2*.dylib $WORK/$libs
-universal_copy $ENV lib/libglibmm-2.4*.dylib $WORK/$libs
-universal_copy $ENV lib/libgobject*.dylib $WORK/$libs
-universal_copy $ENV lib/libgthread*.dylib $WORK/$libs
-universal_copy $ENV lib/libgmodule*.dylib $WORK/$libs
-universal_copy $ENV lib/libsigc*.dylib $WORK/$libs
-universal_copy $ENV lib/libglib-2*.dylib $WORK/$libs
-universal_copy $ENV lib/libintl*.dylib $WORK/$libs
-universal_copy $ENV lib/libsndfile*.dylib $WORK/$libs
-universal_copy $ENV lib/libMagick++*.dylib $WORK/$libs
-universal_copy $ENV lib/libMagickCore*.dylib $WORK/$libs
-universal_copy $ENV lib/libMagickWand*.dylib $WORK/$libs
-universal_copy $ENV lib/libssh*.dylib $WORK/$libs
-universal_copy $ENV lib/libwx*.dylib $WORK/$libs
-universal_copy $ENV lib/libfontconfig*.dylib $WORK/$libs
-universal_copy $ENV lib/libfreetype*.dylib $WORK/$libs
-universal_copy $ENV lib/libexpat*.dylib $WORK/$libs
-universal_copy $ENV lib/libltdl*.dylib $WORK/$libs
-universal_copy $ENV lib/libxmlsec1*.dylib $WORK/$libs
-universal_copy $ENV lib/libzip*.dylib $WORK/$libs
-universal_copy $ENV lib/libquickmail*.dylib $WORK/$libs
-universal_copy $ENV lib/libcurl*.dylib $WORK/$libs
-universal_copy $ENV lib/libffi*.dylib $WORK/$libs
-universal_copy $ENV lib/libiconv*.dylib $WORK/$libs
-
-for obj in $WORK/$macos/dcpomatic $WORK/$macos/dcpomatic_batch $WORK/$macos/dcpomatic_cli $WORK/$macos/dcpomatic_server_cli $WORK/$macos/ffprobe $WORK/$libs/*.dylib; do
-  deps=`otool -L $obj | awk '{print $1}' | egrep "(/Users/carl|libboost|libssh|libltdl|libxmlsec)"`
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic "$WORK/$macos"
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_cli "$WORK/$macos"
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_server_cli "$WORK/$macos"
+universal_copy $ROOT src/dcpomatic/build/src/tools/dcpomatic_batch "$WORK/$macos"
+universal_copy $ROOT src/dcpomatic/build/src/lib/libdcpomatic.dylib "$WORK/$libs"
+universal_copy $ROOT src/dcpomatic/build/src/wx/libdcpomatic-wx.dylib "$WORK/$libs"
+universal_copy_lib $ROOT libcxml "$WORK/$libs"
+universal_copy_lib $ROOT libdcp "$WORK/$libs"
+universal_copy_lib $ROOT libasdcp-libdcp "$WORK/$libs"
+universal_copy_lib $ROOT libkumu-libdcp "$WORK/$libs"
+universal_copy_lib $ROOT libopenjpeg "$WORK/$libs"
+universal_copy_lib $ROOT libavdevice "$WORK/$libs"
+universal_copy_lib $ROOT libavformat "$WORK/$libs"
+universal_copy_lib $ROOT libavfilter "$WORK/$libs"
+universal_copy_lib $ROOT libavutil "$WORK/$libs"
+universal_copy_lib $ROOT libavcodec "$WORK/$libs"
+universal_copy_lib $ROOT libswscale "$WORK/$libs"
+universal_copy_lib $ROOT libswresample "$WORK/$libs"
+universal_copy_lib $ROOT libpostproc "$WORK/$libs"
+universal_copy $ROOT bin/ffprobe "$WORK/$macos"
+universal_copy_lib $ENV libboost_system "$WORK/$libs"
+universal_copy_lib $ENV libboost_filesystem "$WORK/$libs"
+universal_copy_lib $ENV libboost_thread "$WORK/$libs"
+universal_copy_lib $ENV libboost_date_time "$WORK/$libs"
+universal_copy_lib $ENV libxml++ "$WORK/$libs"
+universal_copy_lib $ENV libxslt "$WORK/$libs"
+universal_copy_lib $ENV libxml2 "$WORK/$libs"
+universal_copy_lib $ENV libglibmm-2.4 "$WORK/$libs"
+universal_copy_lib $ENV libgobject "$WORK/$libs"
+universal_copy_lib $ENV libgthread "$WORK/$libs"
+universal_copy_lib $ENV libgmodule "$WORK/$libs"
+universal_copy_lib $ENV libsigc "$WORK/$libs"
+universal_copy_lib $ENV libglib-2 "$WORK/$libs"
+universal_copy_lib $ENV libintl "$WORK/$libs"
+universal_copy_lib $ENV libsndfile "$WORK/$libs"
+universal_copy_lib $ENV libMagick++ "$WORK/$libs"
+universal_copy_lib $ENV libMagickCore "$WORK/$libs"
+universal_copy_lib $ENV libMagickWand "$WORK/$libs"
+universal_copy_lib $ENV libssh "$WORK/$libs"
+universal_copy_lib $ENV libwx "$WORK/$libs"
+universal_copy_lib $ENV libfontconfig "$WORK/$libs"
+universal_copy_lib $ENV libfreetype "$WORK/$libs"
+universal_copy_lib $ENV libexpat "$WORK/$libs"
+universal_copy_lib $ENV libltdl "$WORK/$libs"
+universal_copy_lib $ENV libxmlsec1 "$WORK/$libs"
+universal_copy_lib $ENV libzip "$WORK/$libs"
+universal_copy_lib $ENV libquickmail "$WORK/$libs"
+universal_copy_lib $ENV libcurl "$WORK/$libs"
+universal_copy_lib $ENV libffi "$WORK/$libs"
+universal_copy_lib $ENV libiconv "$WORK/$libs"
+universal_copy_lib $ENV libpango "$WORK/$libs"
+universal_copy_lib $ENV libcairo "$WORK/$libs"
+
+relink=`echo $relink | sed -e "s/\+//g"`
+
+for obj in "$WORK/$macos/dcpomatic" "$WORK/$macos/dcpomatic_batch" "$WORK/$macos/dcpomatic_cli" "$WORK/$macos/dcpomatic_server_cli" "$WORK/$macos/ffprobe" "$WORK/$libs/"*.dylib; do
+  deps=`otool -L "$obj" | awk '{print $1}' | egrep "($relink)" | egrep "($ENV|$ROOT|boost)"`
   changes=""
   for dep in $deps; do
-    base=`basename $dep`
-    # $dep will be a path within 64/; make a 32/ path too
-    dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
-    changes="$changes -change $dep @executable_path/../lib/$base -change $dep32 @executable_path/../lib/$base"
+      base=`basename $dep`
+      # $dep will be a path within 64/; make a 32/ path too
+      dep32=`echo $dep | sed -e "s/\/64\//\/32\//g"`
+      changes="$changes -change $dep @executable_path/../lib/$base -change $dep32 @executable_path/../lib/$base"
   done
   if test "x$changes" != "x"; then
-    install_name_tool $changes $obj
+    install_name_tool $changes "$obj"
   fi
 done
 
-cp build/platform/osx/Info.plist $WORK/$approot
-cp icons/dcpomatic.icns $WORK/$resources/DCP-o-matic.icns
-cp icons/colour_conversions.png $WORK/$resources
-cp icons/defaults.png $WORK/$resources
-cp icons/kdm_email.png $WORK/$resources
-cp icons/servers.png $WORK/$resources
-cp icons/tms.png $WORK/$resources
+cp build/platform/osx/Info.plist "$WORK/$approot"
+cp icons/dcpomatic.icns "$WORK/$resources/DCP-o-matic.icns"
+cp icons/colour_conversions.png "$WORK/$resources"
+cp icons/defaults.png "$WORK/$resources"
+cp icons/kdm_email.png "$WORK/$resources"
+cp icons/servers.png "$WORK/$resources"
+cp icons/tms.png "$WORK/$resources"
 
-# i18n: .mo files
+# i18n: DCP-o-matic .mo files
 for lang in de_DE es_ES fr_FR it_IT sv_SE nl_NL; do
-  mkdir $WORK/$resources/$lang
-  cp build/src/lib/mo/$lang/*.mo $WORK/$resources/$lang
-  cp build/src/wx/mo/$lang/*.mo $WORK/$resources/$lang
-  cp build/src/tools/mo/$lang/*.mo $WORK/$resources/$lang
+  mkdir -p "$WORK/$resources/$lang/LC_MESSAGES"
+  cp build/src/lib/mo/$lang/*.mo "$WORK/$resources/$lang/LC_MESSAGES"
+  cp build/src/wx/mo/$lang/*.mo "$WORK/$resources/$lang/LC_MESSAGES"
+  cp build/src/tools/mo/$lang/*.mo "$WORK/$resources/$lang/LC_MESSAGES"
+done
+
+# i18n: wxWidgets .mo files
+for lang in de es fr it sv nl; do
+  mkdir "$WORK/$resources/$lang"
+  cp $ENV/64/share/locale/$lang/LC_MESSAGES/wxstd.mo "$WORK/$resources/$lang"
 done
 
 tmp_dmg=$WORK/dcpomatic_tmp.dmg
@@ -123,8 +149,8 @@ dmg="$WORK/DCP-o-matic $version.dmg"
 vol_name=DCP-o-matic-$version
 
 mkdir -p $WORK/$vol_name
-cp -r $WORK/$appdir $WORK/$vol_name
-ln -s /Applications $WORK/$vol_name/Applications
+cp -a "$WORK/$appdir" $WORK/$vol_name
+ln -s /Applications "$WORK/$vol_name/Applications"
 
 rm -f $tmp_dmg "$dmg"
 hdiutil create -srcfolder $WORK/$vol_name -volname $vol_name -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size $DMG_SIZE $tmp_dmg
@@ -153,13 +179,12 @@ echo '
    end tell
 ' | osascript
 
-chmod -Rf go-w /Volumes/"$vol_name"/$appdir
+chmod -Rf go-w /Volumes/"$vol_name"/"$appdir"
 sync
 
 hdiutil eject $device
 hdiutil convert -format UDZO $tmp_dmg -imagekey zlib-level=9 -o "$dmg"
-sips -i $WORK/$resources/DCP-o-matic.icns
-DeRez -only icns $WORK/$resources/DCP-o-matic.icns > $WORK/$resources/DCP-o-matic.rsrc
-Rez -append $WORK/$resources/DCP-o-matic.rsrc -o "$dmg"
+sips -i "$WORK/$resources/DCP-o-matic.icns"
+DeRez -only icns "$WORK/$resources/DCP-o-matic.icns" > "$WORK/$resources/DCP-o-matic.rsrc"
+Rez -append "$WORK/$resources/DCP-o-matic.rsrc" -o "$dmg"
 SetFile -a C "$dmg"
-
index 851f96d45c1376edfb0886556e59a309e20579fc..0cb146cff60c9f9cbef23040f908d7b0a31c19ad 100755 (executable)
@@ -2,8 +2,8 @@
 
 set -e
 
-ENV=/Users/carl/Environments/osx/64
-DEPS=/Users/carl/cdist/64
+ENV=/Users/carl/Environments/osx/10.6/64
+DEPS=/Users/carl/dcpomatic-deps
 
 export PKG_CONFIG_PATH=$DEPS/lib/pkgconfig:$ENV/lib/pkgconfig:/usr/lib/pkgconfig
 export LINKFLAGS="-L$ENV/lib"
index 5b9bd63f22dfefb997499713861f0e7fb226d5c6..24b6ed099a057ddcddd04a09d4870cd372b94de2 100644 (file)
@@ -105,17 +105,17 @@ File "%static_deps%/bin/libzip-2.dll"
 
 File "%cdist_deps%/bin/asdcp-libdcp.dll"
 File "%cdist_deps%/bin/kumu-libdcp.dll"
-File "%cdist_deps%/bin/avcodec-55.dll"
-File "%cdist_deps%/bin/avfilter-4.dll"
-File "%cdist_deps%/bin/avformat-55.dll"
-File "%cdist_deps%/bin/avutil-52.dll"
-File "%cdist_deps%/bin/avdevice-55.dll"
-File "%cdist_deps%/bin/postproc-52.dll"
+File "%cdist_deps%/bin/avcodec-56.dll"
+File "%cdist_deps%/bin/avfilter-5.dll"
+File "%cdist_deps%/bin/avformat-56.dll"
+File "%cdist_deps%/bin/avutil-54.dll"
+File "%cdist_deps%/bin/avdevice-56.dll"
+File "%cdist_deps%/bin/postproc-53.dll"
 File "%cdist_deps%/bin/dcp.dll"
 File "%cdist_deps%/bin/libopenjpeg-1.dll"
-File "%cdist_deps%/bin/swresample-0.dll"
-File "%cdist_deps%/bin/swscale-2.dll"
-File "%cdist_deps%/bin/cxml.dll"
+File "%cdist_deps%/bin/swresample-1.dll"
+File "%cdist_deps%/bin/swscale-3.dll"
+File "%cdist_deps%/bin/cxml-0.dll"
 File "%cdist_deps%/bin/ffprobe.exe"
 
 File "%binaries%/src/wx/dcpomatic-wx.dll"
@@ -132,26 +132,32 @@ SetOutPath "$INSTDIR\\locale\\fr\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/fr_FR/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/fr_FR/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/fr_FR/dcpomatic.mo"
+File "%static_deps%/share/locale/fr/LC_MESSAGES/wxstd.mo"
 SetOutPath "$INSTDIR\\locale\\it\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/it_IT/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/it_IT/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/it_IT/dcpomatic.mo"
+File "%static_deps%/share/locale/it/LC_MESSAGES/wxstd.mo"
 SetOutPath "$INSTDIR\\locale\\es\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/es_ES/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/es_ES/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/es_ES/dcpomatic.mo"
+File "%static_deps%/share/locale/es/LC_MESSAGES/wxstd.mo"
 SetOutPath "$INSTDIR\\locale\\sv\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/sv_SE/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/sv_SE/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/sv_SE/dcpomatic.mo"
+File "%static_deps%/share/locale/sv/LC_MESSAGES/wxstd.mo"
 SetOutPath "$INSTDIR\\locale\\de\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/de_DE/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/de_DE/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/de_DE/dcpomatic.mo"
+File "%static_deps%/share/locale/de/LC_MESSAGES/wxstd.mo"
 SetOutPath "$INSTDIR\\locale\\nl\\LC_MESSAGES"
 File "%binaries%/src/lib/mo/nl_NL/libdcpomatic.mo"
 File "%binaries%/src/wx/mo/nl_NL/libdcpomatic-wx.mo"
 File "%binaries%/src/tools/mo/nl_NL/dcpomatic.mo"
+File "%static_deps%/share/locale/nl/LC_MESSAGES/wxstd.mo"
 
 WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "DisplayName" "DCP-o-matic (remove only)"
 WriteRegStr HKLM "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\DCP-o-matic" "UninstallString" "$INSTDIR\\Uninstall.exe"
index f7af918144af0bdfc0ea3e9eb435cb1d9954254e..278ee8c5f80e1b5d91afbaaa48727f1a5b1e8ad3 100755 (executable)
@@ -4,8 +4,8 @@ if [ `uname -s` == "Darwin" ]; then
   # Some time ago we could start DCP-o-matic on OS X just by running the executable, in
   # the same way as Linux.  This doesn't work any more.
   
-  ENV=$HOME/Environments/osx/64/lib
-  DEP=$HOME/cdist/64/lib
+  ENV=$HOME/Environments/osx/10.6/64/lib
+  DEP=$HOME/dcpomatic-deps/lib
  
   app=build/platform/osx/DCP-o-matic.app
   macos=$app/Contents/MacOS
@@ -56,11 +56,19 @@ if [ `uname -s` == "Darwin" ]; then
   cp $ENV/libquickmail*.dylib $lib
   cp $ENV/libcurl*.dylib $lib
   cp $ENV/libffi*.dylib $lib
+  cp $ENV/libiconv*.dylib $lib
   cp icons/defaults.png $resources
   cp icons/servers.png $resources
   cp icons/tms.png $resources
   cp icons/colour_conversions.png $resources
   cp icons/kdm_email.png $resources
+
+  for lang in de_DE es_ES fr_FR it_IT sv_SE nl_NL; do
+    mkdir -p "$resources/$lang/LC_MESSAGES"
+    cp build/src/lib/mo/$lang/*.mo "$resources/$lang/LC_MESSAGES"
+    cp build/src/wx/mo/$lang/*.mo "$resources/$lang/LC_MESSAGES"
+    cp build/src/tools/mo/$lang/*.mo "$resources/$lang/LC_MESSAGES"
+  done
  
   sed -e "s/@VERSION@/test/g" platform/osx/Info.plist.in > $app/Contents/Info.plist
 
@@ -76,8 +84,7 @@ if [ `uname -s` == "Darwin" ]; then
     fi
   done  
   
-  cd build/platform/osx/DCP-o-matic.app/Contents/MacOS
-  ./dcpomatic $*
+  open build/platform/osx/DCP-o-matic.app
 
 else
   export LD_LIBRARY_PATH=build/src/lib:build/src/wx:build/src/asdcplib/src:$LD_LIBRARY_PATH
index bfe0ed61f281816a71e20b66f17c18e429d46ac9..ab985bdf75468ee557a81f0307d09a919df390e0 100644 (file)
@@ -48,12 +48,6 @@ AnalyseAudioJob::name () const
        return _("Analyse audio");
 }
 
-string
-AnalyseAudioJob::json_name () const
-{
-       return N_("analyse_audio");
-}
-
 void
 AnalyseAudioJob::run ()
 {
@@ -93,7 +87,7 @@ AnalyseAudioJob::audio (shared_ptr<const AudioBuffers> b, Time)
                for (int j = 0; j < b->channels(); ++j) {
                        float s = b->data(j)[i];
                        if (fabsf (s) < 10e-7) {
-                               /* stringstream can't serialise and recover inf or -inf, so prevent such
+                               /* SafeStringStream can't serialise and recover inf or -inf, so prevent such
                                   values by replacing with this (140dB down) */
                                s = 10e-7;
                        }
index 3e376634cd0d9be375fc825ae60c6285db16588a..3d4881983b5234572ce40a47455c5b849a620328 100644 (file)
@@ -30,7 +30,6 @@ public:
        AnalyseAudioJob (boost::shared_ptr<const Film>, boost::shared_ptr<AudioContent>);
 
        std::string name () const;
-       std::string json_name () const;
        void run ();
 
 private:
index 98d092726c9487f8152a97b6965bd4ff3219df4e..9f92bdb503be802bcdee6aa400d0a1738b0defc3 100644 (file)
@@ -21,6 +21,7 @@
 #include <cmath>
 #include <cassert>
 #include <cstdio>
+#include <iostream>
 #include <boost/filesystem.hpp>
 #include "audio_analysis.h"
 #include "cross.h"
@@ -43,7 +44,10 @@ AudioPoint::AudioPoint ()
 AudioPoint::AudioPoint (FILE* f)
 {
        for (int i = 0; i < COUNT; ++i) {
-               fscanf (f, "%f", &_data[i]);
+               int n = fscanf (f, "%f", &_data[i]);
+               if (n != 1) {
+                       _data[i] = 0;
+               }
        }
 }
 
@@ -86,7 +90,7 @@ AudioAnalysis::AudioAnalysis (boost::filesystem::path filename)
 {
        FILE* f = fopen_boost (filename, "r");
 
-       int channels;
+       int channels = 0;
        fscanf (f, "%d", &channels);
        _data.resize (channels);
 
index c0ef02f65d5ab5518dcb7e53aa145b1ff3f9a598..30bd2540a01ac361523fabc792dafe9ac1e27caa 100644 (file)
@@ -17,6 +17,7 @@
 
 */
 
+#include <iostream>
 #include "audio_decoder.h"
 #include "audio_buffers.h"
 #include "exceptions.h"
@@ -25,7 +26,6 @@
 
 #include "i18n.h"
 
-using std::stringstream;
 using std::list;
 using std::pair;
 using std::cout;
index f8675900ef2d59019b6e79ad4f862a5ef145b00f..e5b1104ff9427525dcd374c76d146eedccfb1775 100644 (file)
@@ -30,7 +30,6 @@
 
 using std::list;
 using std::string;
-using std::stringstream;
 using std::cout;
 using std::vector;
 using boost::shared_ptr;
index b3f410c8ea52345112dc911671fe6756cbde9554..aa67b5a1fd8bc9f1027ab272b20c93ff744d8732 100644 (file)
 #ifndef STRING_COMPOSE_H
 #define STRING_COMPOSE_H
 
-#include <sstream>
 #include <string>
 #include <list>
 #include <map>                 // for multimap
+#include "safe_stringstream.h"
 
 namespace StringPrivate
 {
@@ -56,7 +56,7 @@ namespace StringPrivate
     std::string str() const;
 
   private:
-    std::ostringstream os;
+    SafeStringStream os;
     int arg_no;
 
     // we store the output as a list - when the output string is requested, the
index 8e6dffee73f51d08a42098bd47adecd539922529..878fedaa4c31ed394bad0c43819ea7f961c1fdcb 100644 (file)
@@ -17,7 +17,6 @@
 
 */
 
-#include <sstream>
 #include <cstdlib>
 #include <fstream>
 #include <glib.h>
 #include "i18n.h"
 
 using std::vector;
+using std::cout;
 using std::ifstream;
 using std::string;
 using std::list;
 using std::max;
+using std::remove;
 using std::exception;
 using std::cerr;
 using boost::shared_ptr;
@@ -63,6 +64,7 @@ Config::Config ()
        , _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
        , _allow_any_dcp_frame_rate (false)
        , _default_still_length (10)
+       , _default_scale (VideoContentScale (Ratio::from_id ("185")))
        , _default_container (Ratio::from_id ("185"))
        , _default_dcp_content_type (DCPContentType::from_isdcf_name ("TST"))
        , _default_j2k_bandwidth (100000000)
@@ -133,6 +135,11 @@ Config::read ()
 
        _language = f.optional_string_child ("Language");
 
+       c = f.optional_string_child ("DefaultScale");
+       if (c) {
+               _default_scale = VideoContentScale::from_id (c.get ());
+       }
+
        c = f.optional_string_child ("DefaultContainer");
        if (c) {
                _default_container = Ratio::from_id (c.get ());
@@ -143,9 +150,12 @@ Config::read ()
                _default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ());
        }
 
-       _dcp_metadata.issuer = f.optional_string_child ("DCPMetadataIssuer").get_value_or ("");
-       _dcp_metadata.creator = f.optional_string_child ("DCPMetadataCreator").get_value_or ("");
-
+       if (f.optional_string_child ("DCPMetadataIssuer")) {
+               _dcp_issuer = f.string_child ("DCPMetadataIssuer");
+       } else if (f.optional_string_child ("DCPIssuer")) {
+               _dcp_issuer = f.string_child ("DCPIssuer");
+       }
+       
        if (version && version.get() >= 2) {
                _default_isdcf_metadata = ISDCFMetadata (f.node_child ("ISDCFMetadata"));
        } else {
@@ -186,8 +196,10 @@ Config::read ()
        _mail_server = f.string_child ("MailServer");
        _mail_user = f.optional_string_child("MailUser").get_value_or ("");
        _mail_password = f.optional_string_child("MailPassword").get_value_or ("");
+       _kdm_subject = f.optional_string_child ("KDMSubject").get_value_or (_("KDM delivery: $CPL_NAME"));
        _kdm_from = f.string_child ("KDMFrom");
        _kdm_cc = f.optional_string_child ("KDMCC").get_value_or ("");
+       _kdm_bcc = f.optional_string_child ("KDMBCC").get_value_or ("");
        _kdm_email = f.string_child ("KDMEmail");
 
        _check_for_updates = f.optional_bool_child("CheckForUpdates").get_value_or (false);
@@ -197,6 +209,11 @@ Config::read ()
        _allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate");
 
        _log_types = f.optional_number_child<int> ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR);
+
+       list<cxml::NodePtr> his = f.node_children ("History");
+       for (list<cxml::NodePtr>::const_iterator i = his.begin(); i != his.end(); ++i) {
+               _history.push_back ((*i)->content ());
+       }
 }
 
 void
@@ -252,11 +269,7 @@ Config::read_old_metadata ()
                } else if (k == "default_dcp_content_type") {
                        _default_dcp_content_type = DCPContentType::from_isdcf_name (v);
                } else if (k == "dcp_metadata_issuer") {
-                       _dcp_metadata.issuer = v;
-               } else if (k == "dcp_metadata_creator") {
-                       _dcp_metadata.creator = v;
-               } else if (k == "dcp_metadata_issue_date") {
-                       _dcp_metadata.issue_date = v;
+                       _dcp_issuer = v;
                }
 
                _default_isdcf_metadata.read_old_metadata (k, v);
@@ -340,14 +353,14 @@ Config::write () const
        if (_language) {
                root->add_child("Language")->add_child_text (_language.get());
        }
+       root->add_child("DefaultScale")->add_child_text (_default_scale.id ());
        if (_default_container) {
                root->add_child("DefaultContainer")->add_child_text (_default_container->id ());
        }
        if (_default_dcp_content_type) {
                root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ());
        }
-       root->add_child("DCPMetadataIssuer")->add_child_text (_dcp_metadata.issuer);
-       root->add_child("DCPMetadataCreator")->add_child_text (_dcp_metadata.creator);
+       root->add_child("DCPIssuer")->add_child_text (_dcp_issuer);
 
        _default_isdcf_metadata.as_xml (root->add_child ("ISDCFMetadata"));
 
@@ -366,8 +379,10 @@ Config::write () const
        root->add_child("MailServer")->add_child_text (_mail_server);
        root->add_child("MailUser")->add_child_text (_mail_user);
        root->add_child("MailPassword")->add_child_text (_mail_password);
+       root->add_child("KDMSubject")->add_child_text (_kdm_subject);
        root->add_child("KDMFrom")->add_child_text (_kdm_from);
        root->add_child("KDMCC")->add_child_text (_kdm_cc);
+       root->add_child("KDMBCC")->add_child_text (_kdm_bcc);
        root->add_child("KDMEmail")->add_child_text (_kdm_email);
 
        root->add_child("CheckForUpdates")->add_child_text (_check_for_updates ? "1" : "0");
@@ -376,6 +391,10 @@ Config::write () const
        root->add_child("MaximumJ2KBandwidth")->add_child_text (raw_convert<string> (_maximum_j2k_bandwidth));
        root->add_child("AllowAnyDCPFrameRate")->add_child_text (_allow_any_dcp_frame_rate ? "1" : "0");
        root->add_child("LogTypes")->add_child_text (raw_convert<string> (_log_types));
+
+       for (vector<boost::filesystem::path>::const_iterator i = _history.begin(); i != _history.end(); ++i) {
+               root->add_child("History")->add_child_text (i->string ());
+       }
        
        doc.write_to_file_formatted (file(false).string ());
 }
@@ -422,3 +441,17 @@ Config::reset_kdm_email ()
                "Best regards,\nDCP-o-matic"
                );
 }
+
+void
+Config::add_to_history (boost::filesystem::path p)
+{
+       /* Remove existing instances of this path in the history */
+       _history.erase (remove (_history.begin(), _history.end(), p), _history.end ());
+       
+       _history.insert (_history.begin (), p);
+       if (_history.size() > HISTORY_SIZE) {
+               _history.pop_back ();
+       }
+
+       changed ();
+}
index ebcf7e83dd98fa524f839c341e2e4873094c4eac..0639382a05040abc85e7e4fc1a9075a591dd974c 100644 (file)
 #include <boost/shared_ptr.hpp>
 #include <boost/signals2.hpp>
 #include <boost/filesystem.hpp>
-#include <libdcp/metadata.h>
 #include "isdcf_metadata.h"
 #include "colour_conversion.h"
 #include "server.h"
+#include "video_content.h"
 
 class ServerDescription;
 class Scaler;
@@ -133,6 +133,10 @@ public:
                return _default_still_length;
        }
 
+       VideoContentScale default_scale () const {
+               return _default_scale;
+       }
+
        Ratio const * default_container () const {
                return _default_container;
        }
@@ -141,8 +145,8 @@ public:
                return _default_dcp_content_type;
        }
 
-       libdcp::XMLMetadata dcp_metadata () const {
-               return _dcp_metadata;
+       std::string dcp_issuer () const {
+               return _dcp_issuer;
        }
 
        int default_j2k_bandwidth () const {
@@ -169,6 +173,10 @@ public:
                return _mail_password;
        }
 
+       std::string kdm_subject () const {
+               return _kdm_subject;
+       }
+
        std::string kdm_from () const {
                return _kdm_from;
        }
@@ -176,6 +184,10 @@ public:
        std::string kdm_cc () const {
                return _kdm_cc;
        }
+
+       std::string kdm_bcc () const {
+               return _kdm_bcc;
+       }
        
        std::string kdm_email () const {
                return _kdm_email;
@@ -196,7 +208,11 @@ public:
        int log_types () const {
                return _log_types;
        }
-       
+
+       std::vector<boost::filesystem::path> history () const {
+               return _history;
+       }
+
        /** @param n New number of local encoding threads */
        void set_num_local_encoding_threads (int n) {
                _num_local_encoding_threads = n;
@@ -278,6 +294,11 @@ public:
                changed ();
        }
 
+       void set_default_scale (VideoContentScale s) {
+               _default_scale = s;
+               changed ();
+       }
+
        void set_default_container (Ratio const * c) {
                _default_container = c;
                changed ();
@@ -288,8 +309,8 @@ public:
                changed ();
        }
 
-       void set_dcp_metadata (libdcp::XMLMetadata m) {
-               _dcp_metadata = m;
+       void set_dcp_issuer (std::string i) {
+               _dcp_issuer = i;
                changed ();
        }
 
@@ -323,6 +344,11 @@ public:
                changed ();
        }
 
+       void set_kdm_subject (std::string s) {
+               _kdm_subject = s;
+               changed ();
+       }
+
        void set_kdm_from (std::string f) {
                _kdm_from = f;
                changed ();
@@ -332,6 +358,11 @@ public:
                _kdm_cc = f;
                changed ();
        }
+
+       void set_kdm_bcc (std::string f) {
+               _kdm_bcc = f;
+               changed ();
+       }
        
        void set_kdm_email (std::string e) {
                _kdm_email = e;
@@ -359,6 +390,13 @@ public:
                _log_types = t;
                changed ();
        }
+
+       void clear_history () {
+               _history.clear ();
+               changed ();
+       }
+
+       void add_to_history (boost::filesystem::path p);
        
        boost::filesystem::path signer_chain_directory () const;
 
@@ -404,9 +442,10 @@ private:
        ISDCFMetadata _default_isdcf_metadata;
        boost::optional<std::string> _language;
        int _default_still_length;
+       VideoContentScale _default_scale;
        Ratio const * _default_container;
        DCPContentType const * _default_dcp_content_type;
-       libdcp::XMLMetadata _dcp_metadata;
+       std::string _dcp_issuer;
        int _default_j2k_bandwidth;
        int _default_audio_delay;
        std::vector<PresetColourConversion> _colour_conversions;
@@ -414,8 +453,10 @@ private:
        std::string _mail_server;
        std::string _mail_user;
        std::string _mail_password;
+       std::string _kdm_subject;
        std::string _kdm_from;
        std::string _kdm_cc;
+       std::string _kdm_bcc;
        std::string _kdm_email;
        /** true to check for updates on startup */
        bool _check_for_updates;
@@ -423,7 +464,8 @@ private:
        /** maximum allowed J2K bandwidth in bits per second */
        int _maximum_j2k_bandwidth;
        int _log_types;
-
+       std::vector<boost::filesystem::path> _history;
+       
        /** Singleton instance, or 0 */
        static Config* _instance;
 };
index 7966219ff60a4bf186a3af6ce58a6b52aa0a97e5..11a4b21cca3026706911cb0c51ea9230eabc8797 100644 (file)
 #include "ui_signaller.h"
 #include "exceptions.h"
 #include "film.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::set;
 using std::list;
 using std::cout;
@@ -230,7 +230,7 @@ Content::trimmed (Time t) const
 string
 Content::identifier () const
 {
-       stringstream s;
+       SafeStringStream s;
        
        s << Content::digest()
          << "_" << position()
index e30cf64598f57e717745cc22291022ebbb0eccac..9b7d5594f392ecde245ff6646ccce4766133a1f2 100644 (file)
@@ -310,7 +310,7 @@ void
 Waker::nudge ()
 {
 #ifdef DCPOMATIC_WINDOWS
-       SetThreadExecutionState (ES_CONTINUOUS);
+       SetThreadExecutionState (ES_SYSTEM_REQUIRED);
 #endif 
 }
 
index c8f8c3cc5a019e607172bcb0aaccb2475d914cf2..057ed0faed64973be6d6c20b22408cdb50247ae7 100644 (file)
@@ -34,7 +34,6 @@
 #include <stdexcept>
 #include <cstdio>
 #include <iomanip>
-#include <sstream>
 #include <iostream>
 #include <fstream>
 #include <unistd.h>
@@ -67,7 +66,6 @@
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::cout;
 using boost::shared_ptr;
 using libdcp::Size;
@@ -282,10 +280,9 @@ DCPVideoFrame::encode_remotely (ServerDescription serv)
        LOG_GENERAL (N_("Sending frame %1 to remote"), _index);
        
        /* Send XML metadata */
-       stringstream xml;
-       doc.write_to_stream (xml, "UTF-8");
-       socket->write (xml.str().length() + 1);
-       socket->write ((uint8_t *) xml.str().c_str(), xml.str().length() + 1);
+       string xml = doc.write_to_string ("UTF-8");
+       socket->write (xml.length() + 1);
+       socket->write ((uint8_t *) xml.c_str(), xml.length() + 1);
 
        /* Send binary data */
        _frame->send_binary (socket);
index 02a2710290f5c8ef6656fd3a49497dc65dbc45bc..693fd587e8bab1c8a6b2ba94253cfacc5caf6f96 100644 (file)
@@ -45,7 +45,6 @@
 
 using std::pair;
 using std::string;
-using std::stringstream;
 using std::vector;
 using std::list;
 using std::cout;
index 8f16e2e5c0c069e2ab601c4bf91cec39c1e3cebc..cbf180ffcb3bf451379e410039d5d28dfed75d80 100644 (file)
@@ -46,12 +46,6 @@ ExamineContentJob::name () const
        return _("Examine content");
 }
 
-string
-ExamineContentJob::json_name () const
-{
-       return N_("examine_content");
-}
-
 void
 ExamineContentJob::run ()
 {
index c8037224faa708737e6739d5c29bc544ee74ad0f..b6903b86bebf0ed9e80970a7382c0f07628301cc 100644 (file)
@@ -30,7 +30,6 @@ public:
        ~ExamineContentJob ();
 
        std::string name () const;
-       std::string json_name () const;
        void run ();
 
 private:
index 7ecc811be879a5af330402829377c7697a7204c2..ebe62b51fbd412cb73956b2ae86db2c6058257ab 100644 (file)
@@ -32,7 +32,6 @@ extern "C" {
 
 using std::string;
 using std::cout;
-using std::stringstream;
 using boost::shared_ptr;
 using libdcp::raw_convert;
 
index 4d886a6ddf224ceabc38d15369d9da1bb4261806..a4209f5b648306e734861c56ea96329b79a25a4a 100644 (file)
@@ -32,13 +32,13 @@ extern "C" {
 #include "log.h"
 #include "exceptions.h"
 #include "frame_rate_change.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 #define LOG_GENERAL(...) film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
 
 using std::string;
-using std::stringstream;
 using std::vector;
 using std::list;
 using std::cout;
@@ -241,7 +241,7 @@ FFmpegContent::information () const
                return "";
        }
        
-       stringstream s;
+       SafeStringStream s;
        
        s << String::compose (_("%1 frames; %2 frames per second"), video_length_after_3d_combine(), video_frame_rate()) << "\n";
        s << VideoContent::information ();
@@ -445,7 +445,7 @@ FFmpegContent::set_audio_mapping (AudioMapping m)
 string
 FFmpegContent::identifier () const
 {
-       stringstream s;
+       SafeStringStream s;
 
        s << VideoContent::identifier();
 
index 07f988e2baeaac6d5702e0238781bbce2d651367..d40b798baafb77058f019e2bc6cf71817b5bd2f8 100644 (file)
@@ -23,7 +23,6 @@
 
 #include <stdexcept>
 #include <vector>
-#include <sstream>
 #include <iomanip>
 #include <iostream>
 #include <stdint.h>
@@ -53,7 +52,6 @@ extern "C" {
 using std::cout;
 using std::string;
 using std::vector;
-using std::stringstream;
 using std::list;
 using std::min;
 using std::pair;
@@ -334,7 +332,7 @@ FFmpegDecoder::seek (VideoContent::Frame frame, bool accurate)
        }
 
        /* Initial seek time in the stream's timebase */
-       int64_t const initial_vt = ((initial / _ffmpeg_content->video_frame_rate()) - _pts_offset) / time_base;
+       int64_t const initial_vt = ((initial / _ffmpeg_content->original_video_frame_rate()) - _pts_offset) / time_base;
 
        av_seek_frame (_format_context, _video_stream, initial_vt, AVSEEK_FLAG_BACKWARD);
 
@@ -375,7 +373,7 @@ FFmpegDecoder::seek (VideoContent::Frame frame, bool accurate)
                r = avcodec_decode_video2 (video_codec_context(), _frame, &finished, &_packet);
                if (r >= 0 && finished) {
                        _video_position = rint (
-                               (av_frame_get_best_effort_timestamp (_frame) * time_base + _pts_offset) * _ffmpeg_content->video_frame_rate()
+                               (av_frame_get_best_effort_timestamp (_frame) * time_base + _pts_offset) * _ffmpeg_content->original_video_frame_rate()
                                );
 
                        if (_video_position >= (frame - 1)) {
@@ -495,12 +493,12 @@ FFmpegDecoder::decode_video_packet ()
                                /* We just did a seek, so disable any attempts to correct for where we
                                   are / should be.
                                */
-                               _video_position = rint (pts * _ffmpeg_content->video_frame_rate ());
+                               _video_position = rint (pts * _ffmpeg_content->original_video_frame_rate ());
                                _just_sought = false;
                        }
 
-                       double const next = _video_position / _ffmpeg_content->video_frame_rate();
-                       double const one_frame = 1 / _ffmpeg_content->video_frame_rate ();
+                       double const next = _video_position / _ffmpeg_content->original_video_frame_rate();
+                       double const one_frame = 1 / _ffmpeg_content->original_video_frame_rate ();
                        double delta = pts - next;
 
                        while (delta > one_frame) {
index bc82a9700f8c3b254ea287c43483919299a37de7..5ccc8028b6ebae14dfbf6f1434b94e0c49a7e681 100644 (file)
@@ -23,13 +23,13 @@ extern "C" {
 }
 #include "ffmpeg_examiner.h"
 #include "ffmpeg_content.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
 using std::cout;
 using std::max;
-using std::stringstream;
 using boost::shared_ptr;
 using boost::optional;
 
@@ -137,14 +137,14 @@ FFmpegExaminer::video_size () const
 VideoContent::Frame
 FFmpegExaminer::video_length () const
 {
-       VideoContent::Frame const length = (double (_format_context->duration - _format_context->start_time) / AV_TIME_BASE) * video_frame_rate();
+       VideoContent::Frame const length = (double (_format_context->duration) / AV_TIME_BASE) * video_frame_rate();
        return max (1, length);
 }
 
 string
 FFmpegExaminer::audio_stream_name (AVStream* s) const
 {
-       stringstream n;
+       SafeStringStream n;
 
        n << stream_name (s);
 
@@ -160,7 +160,7 @@ FFmpegExaminer::audio_stream_name (AVStream* s) const
 string
 FFmpegExaminer::subtitle_stream_name (AVStream* s) const
 {
-       stringstream n;
+       SafeStringStream n;
 
        n << stream_name (s);
 
@@ -174,7 +174,7 @@ FFmpegExaminer::subtitle_stream_name (AVStream* s) const
 string
 FFmpegExaminer::stream_name (AVStream* s) const
 {
-       stringstream n;
+       SafeStringStream n;
 
        if (s->metadata) {
                AVDictionaryEntry const * lang = av_dict_get (s->metadata, "language", 0, 0);
index 0a77caf502cc4405695a84c6db8aec6fa9f23387..54503ef72c6c7bf5b8c21184fd736d5ba7d949cf 100644 (file)
@@ -22,7 +22,6 @@
 #include <algorithm>
 #include <fstream>
 #include <cstdlib>
-#include <sstream>
 #include <iomanip>
 #include <unistd.h>
 #include <boost/filesystem.hpp>
 #include "ratio.h"
 #include "cross.h"
 #include "cinema.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::multimap;
 using std::pair;
 using std::map;
@@ -92,9 +91,11 @@ using libdcp::raw_convert;
  * 7 -> 8
  * Use <Scale> tag in <VideoContent> rather than <Ratio>.
  * 8 -> 9
- * DCI -> ISDCF
+ * DCI -> ISDCF.
+ * 9 -> 10
+ * Subtitle X and Y scale.
  */
-int const Film::current_state_version = 9;
+int const Film::current_state_version = 10;
 
 /** Construct a Film object in a given directory.
  *
@@ -159,7 +160,7 @@ Film::video_identifier () const
 {
        assert (container ());
 
-       stringstream s;
+       SafeStringStream s;
        s.imbue (std::locale::classic ());
        
        s << container()->id()
@@ -493,7 +494,7 @@ Film::file (boost::filesystem::path f) const
 string
 Film::isdcf_name (bool if_created_now) const
 {
-       stringstream d;
+       SafeStringStream d;
 
        string raw_name = name ();
 
@@ -581,18 +582,22 @@ Film::isdcf_name (bool if_created_now) const
                d << "_" << container()->isdcf_name();
        }
 
-       /* XXX: this only works for content which has been scaled to a given ratio,
-          and uses the first bit of content only.
-       */
+       /* XXX: this uses the first bit of content only */
 
        /* The standard says we don't do this for trailers, for some strange reason */
        if (dcp_content_type() && dcp_content_type()->libdcp_kind() != libdcp::TRAILER) {
-               ContentList cl = content ();
                Ratio const * content_ratio = 0;
-               for (ContentList::const_iterator i = cl.begin(); i != cl.end(); ++i) {
+               ContentList cl = content ();
+               for (ContentList::iterator i = cl.begin(); i != cl.end(); ++i) {
                        shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
-                       if (vc && (content_ratio == 0 || vc->scale().ratio() != content_ratio)) {
-                               content_ratio = vc->scale().ratio();
+                       if (vc) {
+                               /* Here's the first piece of video content */
+                               if (vc->scale().ratio ()) {
+                                       content_ratio = vc->scale().ratio ();
+                               } else {
+                                       content_ratio = Ratio::from_ratio (vc->video_size().ratio ());
+                               }
+                               break;
                        }
                }
                
@@ -817,7 +822,7 @@ Film::info_path (int f, Eyes e) const
        boost::filesystem::path p;
        p /= info_dir ();
 
-       stringstream s;
+       SafeStringStream s;
        s.width (8);
        s << setfill('0') << f;
 
@@ -844,7 +849,7 @@ Film::j2c_path (int f, Eyes e, bool t) const
        p /= "j2c";
        p /= video_identifier ();
 
-       stringstream s;
+       SafeStringStream s;
        s.width (8);
        s << setfill('0') << f;
 
index c11ee633185aabac54837744b99604fa1f3b359a..639992d70747a37d1a5d89091c6cdb8bb0c566b4 100644 (file)
@@ -34,10 +34,10 @@ extern "C" {
 #include "exceptions.h"
 #include "image.h"
 #include "ffmpeg_content.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
-using std::stringstream;
 using std::string;
 using std::list;
 using std::pair;
@@ -80,7 +80,7 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
                throw DecodeError (N_("Could not create buffer sink filter"));
        }
 
-       stringstream a;
+       SafeStringStream a;
        a << "video_size=" << _size.width << "x" << _size.height << ":"
          << "pix_fmt=" << _pixel_format << ":"
          << "time_base=1/1:"
@@ -114,7 +114,7 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
        inputs->pad_idx = 0;
        inputs->next = 0;
 
-       if (avfilter_graph_parse (graph, filters.c_str(), &inputs, &outputs, 0) < 0) {
+       if (avfilter_graph_parse (graph, filters.c_str(), inputs, outputs, 0) < 0) {
                throw DecodeError (N_("could not set up filter graph."));
        }
        
index 454938ada3d5043de1e983b28b40be7c2a057dd5..31fce6b6d71182625ebc0a43bc4609d1e7f5ab8c 100644 (file)
@@ -23,6 +23,8 @@
 
 #include "i18n.h"
 
+using std::string;
+
 static bool
 about_equal (float a, float b)
 {
@@ -73,7 +75,13 @@ FrameRateChange::FrameRateChange (float source_, int dcp_)
 
        speed_up = dcp / (source * factor());
        change_speed = !about_equal (speed_up, 1.0);
+}
 
+string
+FrameRateChange::description () const
+{
+       string description;
+       
        if (!skip && repeat == 1 && !change_speed) {
                description = _("Content and DCP have the same rate.\n");
        } else {
@@ -90,4 +98,6 @@ FrameRateChange::FrameRateChange (float source_, int dcp_)
                        description += String::compose (_("DCP will run at %1%% of the content speed.\n"), pc);
                }
        }
+
+       return description;
 }
index f53adc05925c1dea9fa461a491c54f2c111b6f23..f5244fea2b5d68491039b5c52db71d4ca81dd35f 100644 (file)
@@ -60,7 +60,7 @@ struct FrameRateChange
         */
        float speed_up;
 
-       std::string description;
+       std::string description () const;
 };
 
 #endif
index 1c6c02979ca122d0034baf192db6b501ba99878a..3b8c1a28ef48aa1d9b96638b708fb8a19a8f944b 100644 (file)
@@ -38,7 +38,6 @@ using std::string;
 using std::min;
 using std::cout;
 using std::cerr;
-using std::stringstream;
 using boost::shared_ptr;
 using libdcp::Size;
 
index 6acf0bab924001eaa5b51e1d1349ce134e5e719c..915da7beba33b70687e0536d751d4e8e6e96a65f 100644 (file)
 #include "film.h"
 #include "job.h"
 #include "frame_rate_change.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
 using std::cout;
-using std::stringstream;
 using boost::shared_ptr;
 
 ImageContent::ImageContent (shared_ptr<const Film> f, boost::filesystem::path p)
@@ -138,7 +138,7 @@ ImageContent::full_length () const
 string
 ImageContent::identifier () const
 {
-       stringstream s;
+       SafeStringStream s;
        s << VideoContent::identifier ();
        s << "_" << video_length();
        return s.str ();
index ba572c72733e9c636a37575ca5cc04d6c609891b..3aba6cf7c93fffd8fbb6c61cba85ad7e408c1988 100644 (file)
@@ -32,7 +32,6 @@
 
 using std::cout;
 using std::string;
-using std::stringstream;
 using boost::shared_ptr;
 
 ImageProxy::ImageProxy (shared_ptr<Log> log)
@@ -122,10 +121,30 @@ MagickImageProxy::image () const
        LOG_TIMING ("[%1] MagickImageProxy begins decode and convert of %2 bytes", boost::this_thread::get_id(), _blob.length());
 
        Magick::Image* magick_image = 0;
+       string error;
        try {
                magick_image = new Magick::Image (_blob);
-       } catch (...) {
-               throw DecodeError (_("Could not decode image file"));
+       } catch (Magick::Exception& e) {
+               error = e.what ();
+       }
+
+       if (!magick_image) {
+               /* ImageMagick cannot auto-detect Targa files, it seems, so try here with an
+                  explicit format.  I can't find it documented that passing a (0, 0) geometry
+                  is allowed, but it seems to work.
+               */
+               try {
+                       magick_image = new Magick::Image (_blob, Magick::Geometry (0, 0), "TGA");
+               } catch (...) {
+
+               }
+       }
+
+       if (!magick_image) {
+               /* If we failed both an auto-detect and a forced-Targa we give the error from
+                  the auto-detect.
+               */
+               throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
        }
 
        LOG_TIMING ("[%1] MagickImageProxy decode finished", boost::this_thread::get_id ());
index f6212e54f59bc11a5c679b4551bfc8d8d57cd72f..c0ccd912551782007bd83beaa85536e564e6f18d 100644 (file)
@@ -49,6 +49,7 @@ class ImageProxy : public boost::noncopyable
 {
 public:
        ImageProxy (boost::shared_ptr<Log> log);
+       virtual ~ImageProxy () {}
 
        /** @return Image (which must be aligned) */
        virtual boost::shared_ptr<Image> image () const = 0;
index 99ae5c2142ed255d3731e1a667591e811bc63bb9..1c61e96e3bebe3eeced3e1a9a3717ff737675fde 100644 (file)
 #include <curl/curl.h>
 #include <zip.h>
 #include "util.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::list;
 using boost::optional;
 using boost::function;
@@ -56,6 +56,8 @@ get_from_zip_url (string url, string file, function<void (boost::filesystem::pat
        curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, get_from_zip_url_data);
        curl_easy_setopt (curl, CURLOPT_WRITEDATA, f);
        curl_easy_setopt (curl, CURLOPT_FTP_USE_EPSV, 0);
+       /* Maximum time is 20s */
+       curl_easy_setopt (curl, CURLOPT_TIMEOUT, 20);
 
        CURLcode const cr = curl_easy_perform (curl);
 
@@ -117,6 +119,8 @@ ftp_ls (string url)
                url += "/";
        }
        curl_easy_setopt (curl, CURLOPT_URL, url.c_str ());
+       /* 20s timeout */
+       curl_easy_setopt (curl, CURLOPT_TIMEOUT, 20);
 
        string ls_raw;
        struct curl_slist* commands = 0;
@@ -130,11 +134,10 @@ ftp_ls (string url)
                return list<string> ();
        }
 
-       stringstream s (ls_raw);
-       string line;
+       SafeStringStream s (ls_raw);
        list<string> ls;
        while (s.good ()) {
-               getline (s, line);
+               string const line = s.getline ();
                if (line.length() > 55) {
                        string const file = line.substr (55);
                        if (file != "." && file != "..") {
index 96aedac65bf4fb8718d8749712db3ae28d9ae627..52ec1426c0bd0300a6658293471ef795e2e995ae 100644 (file)
 #include "cross.h"
 #include "ui_signaller.h"
 #include "exceptions.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
 using std::list;
 using std::cout;
-using std::stringstream;
 using boost::shared_ptr;
 
 Job::Job (shared_ptr<const Film> f)
@@ -306,7 +306,7 @@ Job::status () const
                pc = 99;
        }
 
-       stringstream s;
+       SafeStringStream s;
        if (!finished ()) {
                s << pc << N_("%");
                if (p >= 0 && t > 10 && r > 0) {
@@ -325,29 +325,6 @@ Job::status () const
        return s.str ();
 }
 
-string
-Job::json_status () const
-{
-       boost::mutex::scoped_lock lm (_state_mutex);
-
-       switch (_state) {
-       case NEW:
-               return N_("new");
-       case RUNNING:
-               return N_("running");
-       case PAUSED:
-               return N_("paused");
-       case FINISHED_OK:
-               return N_("finished_ok");
-       case FINISHED_ERROR:
-               return N_("finished_error");
-       case FINISHED_CANCELLED:
-               return N_("finished_cancelled");
-       }
-
-       return "";
-}
-
 /** @return An estimate of the remaining time for this sub-job, in seconds */
 int
 Job::remaining_time () const
index 5e3127dc158a432522590ffec566e5cfa1e21bbf..97e3fc29637d292597d943f4c9e70a77cdd8dfad 100644 (file)
@@ -43,7 +43,6 @@ public:
 
        /** @return user-readable name of this job */
        virtual std::string name () const = 0;
-       virtual std::string json_name () const = 0;
        /** Run this job in the current thread. */
        virtual void run () = 0;
        
@@ -65,7 +64,6 @@ public:
 
        int elapsed_time () const;
        virtual std::string status () const;
-       std::string json_status () const;
        std::string sub_name () const {
                return _sub_name;
        }
diff --git a/src/lib/json_server.cc b/src/lib/json_server.cc
deleted file mode 100644 (file)
index 1be3c7d..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
-
-    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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#include <boost/asio.hpp>
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-#include "json_server.h"
-#include "job_manager.h"
-#include "job.h"
-#include "util.h"
-#include "film.h"
-#include "transcode_job.h"
-
-using std::string;
-using std::stringstream;
-using std::cout;
-using std::map;
-using std::list;
-using boost::thread;
-using boost::shared_ptr;
-using boost::dynamic_pointer_cast;
-using boost::asio::ip::tcp;
-
-#define MAX_LENGTH 512
-
-enum State {
-       AWAITING_G,
-       AWAITING_E,
-       AWAITING_T,
-       AWAITING_SPACE,
-       READING_URL,
-};
-
-JSONServer::JSONServer (int port)
-{
-       new thread (boost::bind (&JSONServer::run, this, port));
-}
-
-void
-JSONServer::run (int port)
-try
-{
-       boost::asio::io_service io_service;
-       tcp::acceptor a (io_service, tcp::endpoint (tcp::v4 (), port));
-       while (true) {
-               try {
-                       shared_ptr<tcp::socket> s (new tcp::socket (io_service));
-                       a.accept (*s);
-                       handle (s);
-               }
-               catch (...) {
-
-               }
-       }
-}
-catch (...)
-{
-
-}
-
-void
-JSONServer::handle (shared_ptr<tcp::socket> socket)
-{
-       string url;
-       State state = AWAITING_G;
-
-       while (true) {
-               char data[MAX_LENGTH];
-               boost::system::error_code error;
-               size_t len = socket->read_some (boost::asio::buffer (data), error);
-               if (error) {
-                       cout << "error.\n";
-                       break;
-               }
-
-               char* p = data;
-               char* e = data + len;
-               while (p != e) {
-
-                       State old_state = state;
-                       switch (state) {
-                       case AWAITING_G:
-                               if (*p == 'G') {
-                                       state = AWAITING_E;
-                               }
-                               break;
-                       case AWAITING_E:
-                               if (*p == 'E') {
-                                       state = AWAITING_T;
-                               }
-                               break;
-                       case AWAITING_T:
-                               if (*p == 'T') {
-                                       state = AWAITING_SPACE;
-                               }
-                               break;
-                       case AWAITING_SPACE:
-                               if (*p == ' ') {
-                                       state = READING_URL;
-                               }
-                               break;
-                       case READING_URL:
-                               if (*p == ' ') {
-                                       request (url, socket);
-                                       state = AWAITING_G;
-                                       url = "";
-                               } else {
-                                       url += *p;
-                               }
-                               break;
-                       }
-
-                       if (state == old_state && state != READING_URL) {
-                               state = AWAITING_G;
-                       }
-
-                       ++p;
-               }
-       }
-}
-
-void
-JSONServer::request (string url, shared_ptr<tcp::socket> socket)
-{
-       cout << "request: " << url << "\n";
-       
-       map<string, string> r = split_get_request (url);
-       for (map<string, string>::iterator i = r.begin(); i != r.end(); ++i) {
-               cout << i->first << " => " << i->second << "\n";
-       }
-       
-       string action;
-       if (r.find ("action") != r.end ()) {
-               action = r["action"];
-       }
-       
-       stringstream json;
-       if (action == "status") {
-               
-               list<shared_ptr<Job> > jobs = JobManager::instance()->get ();
-               
-               json << "{ \"jobs\": [";
-               for (list<shared_ptr<Job> >::iterator i = jobs.begin(); i != jobs.end(); ++i) {
-
-                       json << "{ ";
-
-                       if ((*i)->film()) {
-                               json << "\"dcp\": \"" << (*i)->film()->dcp_name() << "\", ";
-                       }
-                       
-                       json << "\"name\": \""   << (*i)->json_name() << "\", "
-                            << "\"progress\": " << (*i)->progress () << ", "
-                            << "\"status\": \"" << (*i)->json_status() << "\"";
-                       json << " }";
-                       
-                       list<shared_ptr<Job> >::iterator j = i;
-                       ++j;
-                       if (j != jobs.end ()) {
-                               json << ", ";
-                       }
-               }
-               json << "] }";
-               
-               if (json.str().empty ()) {
-                       json << "{ }";
-               }
-       }
-       
-       stringstream reply;
-       reply << "HTTP/1.1 200 OK\r\n"
-             << "Content-Length: " << json.str().length() << "\r\n"
-             << "Content-Type: application/json\r\n"
-                             << "\r\n"
-             << json.str () << "\r\n";
-       cout << "reply: " << json.str() << "\n";
-       boost::asio::write (*socket, boost::asio::buffer (reply.str().c_str(), reply.str().length()));
-}
diff --git a/src/lib/json_server.h b/src/lib/json_server.h
deleted file mode 100644 (file)
index 6230675..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
-
-    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., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-class JSONServer
-{
-public:
-       JSONServer (int port);
-
-private:
-       void run (int port);
-       void handle (boost::shared_ptr<boost::asio::ip::tcp::socket> socket);
-       void request (std::string url, boost::shared_ptr<boost::asio::ip::tcp::socket> socket);
-};
-
-       
index 49bfae20ad727c36d62d057582c943c2edc9ac8c..f5054b8ed0c11d4d0522b14ba420348da90284a0 100644 (file)
 #include "util.h"
 #include "film.h"
 #include "config.h"
+#include "safe_stringstream.h"
 
 using std::list;
 using std::string;
-using std::stringstream;
 using std::cout;
 using boost::shared_ptr;
 
@@ -232,21 +232,34 @@ email_kdms (
                /* Send email */
                
                quickmail_initialize ();
-               quickmail mail = quickmail_create (Config::instance()->kdm_from().c_str(), "KDM delivery");
+
+               SafeStringStream start;
+               start << from.date() << " " << from.time_of_day();
+               SafeStringStream end;
+               end << to.date() << " " << to.time_of_day();
+               
+               string subject = Config::instance()->kdm_subject();
+               boost::algorithm::replace_all (subject, "$CPL_NAME", film->dcp_name ());
+               boost::algorithm::replace_all (subject, "$START_TIME", start.str ());
+               boost::algorithm::replace_all (subject, "$END_TIME", end.str ());
+               boost::algorithm::replace_all (subject, "$CINEMA_NAME", i->cinema->name);
+               quickmail mail = quickmail_create (Config::instance()->kdm_from().c_str(), subject.c_str ());
+               
                quickmail_add_to (mail, i->cinema->email.c_str ());
                if (!Config::instance()->kdm_cc().empty ()) {
                        quickmail_add_cc (mail, Config::instance()->kdm_cc().c_str ());
                }
+               if (!Config::instance()->kdm_bcc().empty ()) {
+                       quickmail_add_bcc (mail, Config::instance()->kdm_bcc().c_str ());
+               }
+               
                string body = Config::instance()->kdm_email().c_str();
                boost::algorithm::replace_all (body, "$CPL_NAME", film->dcp_name ());
-               stringstream start;
-               start << from.date() << " " << from.time_of_day();
                boost::algorithm::replace_all (body, "$START_TIME", start.str ());
-               stringstream end;
-               end << to.date() << " " << to.time_of_day();
                boost::algorithm::replace_all (body, "$END_TIME", end.str ());
                boost::algorithm::replace_all (body, "$CINEMA_NAME", i->cinema->name);
-               stringstream screens;
+               
+               SafeStringStream screens;
                for (list<ScreenKDM>::const_iterator j = i->screen_kdms.begin(); j != i->screen_kdms.end(); ++j) {
                        screens << j->screen->name << ", ";
                }
index 4de6bd874e94c4c97feed165a210de7b10169936..5e8277a23c5da6a023212defe579f9c5270212a7 100644 (file)
@@ -26,6 +26,7 @@
 #include "log.h"
 #include "cross.h"
 #include "config.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
@@ -63,7 +64,7 @@ Log::log (string message, int type)
        time (&t);
        string a = ctime (&t);
 
-       stringstream s;
+       SafeStringStream s;
        s << a.substr (0, a.length() - 1) << N_(": ");
 
        if (type & TYPE_ERROR) {
@@ -90,7 +91,7 @@ Log::microsecond_log (string m, int t)
        struct timeval tv;
        gettimeofday (&tv, 0);
 
-       stringstream s;
+       SafeStringStream s;
        s << tv.tv_sec << N_(":") << tv.tv_usec << N_(" ") << m;
        do_log (s.str ());
 }      
index 1244209bd62fc149aea62d4f1f41025ce400d916..1d4d1974ad88fc1295307948d443a5dd5373e3ba 100644 (file)
 */
 
 #include <iomanip>
-#include <sstream>
 #include <openssl/md5.h>
 #include "md5_digester.h"
+#include "safe_stringstream.h"
 
 using std::string;
-using std::stringstream;
 using std::hex;
 using std::setfill;
 using std::setw;
@@ -51,7 +50,7 @@ MD5Digester::get () const
                unsigned char digest[MD5_DIGEST_LENGTH];
                MD5_Final (digest, &_context);
                
-               stringstream s;
+               SafeStringStream s;
                for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
                        s << hex << setfill('0') << setw(2) << ((int) digest[i]);
                }
index 2d2977606786097f6b827ec07a8048dd7c90da59..8063d1212971afe2e9bf682a84d253361b902bac 100644 (file)
@@ -497,7 +497,8 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent)
        } else if (
                property == SubtitleContentProperty::SUBTITLE_X_OFFSET ||
                property == SubtitleContentProperty::SUBTITLE_Y_OFFSET ||
-               property == SubtitleContentProperty::SUBTITLE_SCALE
+               property == SubtitleContentProperty::SUBTITLE_X_SCALE ||
+               property == SubtitleContentProperty::SUBTITLE_Y_SCALE
                ) {
 
                for (list<Subtitle>::iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) {
index df3e633036f174fe609f192f3f3eba370eed062f..c3e430082ecacd2a51db12edb1e5ee536b577fc6 100644 (file)
@@ -40,7 +40,6 @@ using std::vector;
 using std::min;
 using std::max;
 using std::string;
-using std::stringstream;
 using std::pair;
 using boost::optional;
 using boost::shared_ptr;
@@ -389,7 +388,6 @@ Playlist::move_later (shared_ptr<Content> c)
                return;
        }
 
-       Time const p = (*next)->position ();
        (*next)->set_position (c->position ());
        c->set_position (c->position() + c->length_after_trim ());
        sort (_content.begin(), _content.end(), ContentSorter ());
index 8137b24c10f1c4a45b71cdf143b71e7cd64a00ea..db084cb3e117c0098cf00b6ff899456dfbcf73ea 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:01+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 02:32+0100\n"
 "Last-Translator: Carsten Kurz\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -34,23 +34,23 @@ msgstr "%1 Kanäle, %2kHz, %3 samples"
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 Bilder; %2 Bilder pro Sekunde"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr "%1x%2 pixel (%3:1)"
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1.375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1.66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -58,11 +58,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "3D Rauschunterdrückung"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academy"
 
@@ -98,15 +98,15 @@ msgstr "Abgebrochen"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Kann dieses Pixelformat %1 während %2 nicht bearbeiten"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Center"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr "Ãœberprüfe bestehende Bilddateien"
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr "Tonübersicht berechnen"
 
@@ -114,11 +114,11 @@ msgstr "Tonübersicht berechnen"
 msgid "Computing digest"
 msgstr "Zusammenfassung berechnen"
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr "Bildübersicht berechnen"
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 msgid "Content and DCP have the same rate.\n"
 msgstr "Quelle und DCP haben dieselbe Bildrate. Gut ;-)\n"
 
@@ -131,95 +131,103 @@ msgid "Content to be joined must have the same audio gain."
 msgstr ""
 "Zu verbindende Inhalte müssen die gleichen Tonpegeleinstellungen verwenden."
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr "Zu verbindende Inhalte müssen die gleiche Farbumwandlung verwenden."
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
 msgstr "Zu verbindende Inhalte müssen gleichen Beschnitt verwenden."
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr "Zu verbindende Inhalte müssen die gleiche Bildgröße haben."
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 msgid "Content to be joined must have the same scale setting."
 msgstr "Zu verbindende Inhalte müssen die gleiche Skalierung verwenden."
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr ""
 "Zu verbindende Inhalte müssen den gleichen horizontalen Untertitelversatz "
 "verwenden."
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelgröße verwenden."
+
+#: src/lib/subtitle_content.cc:85
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr ""
 "Zu verbindende Inhalte müssen den gleichen vertikalen Untertitelversatz "
 "verwenden."
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelgröße verwenden."
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr "Zu verbindende Inhalte müssen die gleiche Bildrate haben."
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
-msgstr "Zu verbindende Inhalte müssen die gleiche Bildart (z.B. 2D) haben."
+msgstr "Zu verbindende Inhalte müssen den gleichen Bildtyp (z.B. 2D) haben."
 
 #: src/lib/ffmpeg_content.cc:116
 msgid "Content to be joined must use the same audio stream."
-msgstr "Zu verbindende Inhalte müssen die gleiche Tonspurart verwenden."
+msgstr ""
+"Zu verbindende Inhalte müssen die gleiche Tonspurkonfiguration verwenden."
 
 #: src/lib/ffmpeg_content.cc:112
 msgid "Content to be joined must use the same subtitle stream."
 msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelspur verwenden."
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "DCP zu TMS Ã¼bertragen"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "Keine Verbindung zu Server %1 (%2)"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "Konnte entfernten Ordner %1 (%2) nicht erstellen."
 
-#: src/lib/image_proxy.cc:128
-msgid "Could not decode image file"
+#: src/lib/image_proxy.cc:147
+#, fuzzy
+msgid "Could not decode image file (%1)"
 msgstr "Bilddatei konnte nicht dekodiert werden"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "%1 konnte nicht geöffnet werden."
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "%1 konnte nicht zum Senden geöffnet werden"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 msgid "Could not open downloaded ZIP file"
 msgstr "Heruntergeladene ZIP Datei kann nicht geöffnet werden."
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "SCP Session (%1) konnte nicht gestartet werden"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "Entfernte Datei (%1) konnte nicht gespeichert werden"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "DCP läuft mit %1% der Original Geschwindigkeit der Quelle.\n"
 
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
 msgid "DCP will use every other frame of the content.\n"
 msgstr "DCP verwendet nur jedes zweite Bild des Quelle.\n"
 
@@ -241,7 +249,7 @@ msgstr ""
 msgid "De-interlacing"
 msgstr "De-Interlacer"
 
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
 msgid ""
 "Dear Projectionist\n"
 "\n"
@@ -257,7 +265,7 @@ msgid ""
 msgstr ""
 "Sehr geehrter Vorfuehrer,\n"
 "\n"
-"Im Anhang finden Sie die KDM für den Film $CPL_NAME.\n"
+"Im Anhang finden Sie die KDM fuer den Film $CPL_NAME.\n"
 "\n"
 "Der Schluessel ist vom $START_TIME bis zum $END_TIME gueltig fuer:\n"
 "\n"
@@ -271,23 +279,23 @@ msgstr ""
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 und CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr "Herunterladen fehlgeschlagen (%1/%2 Fehler %3)"
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Jedes Bild der Quelle wird im DCP verdoppelt.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Jedes Bild der Quelle wird %1 mal im DCP wiederholt.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr "Email KDMs für %1"
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr "Kodiere Bilddaten"
 
@@ -299,7 +307,7 @@ msgstr "Fehler (%1)"
 msgid "Examine content"
 msgstr "Inhalt wird Ã¼berprüft"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "Authentifizierung mit Server (%1) fehlgeschlagen"
 
@@ -311,11 +319,11 @@ msgstr "Schneller Bilinearer Filter"
 msgid "Feature"
 msgstr "Hauptfilm"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Flat"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
 msgstr "Ganzes Bild"
 
@@ -327,7 +335,7 @@ msgstr "Gauss Filter"
 msgid "Gradient debander"
 msgstr "Gradient Glätter"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr "HI"
 
@@ -343,6 +351,10 @@ msgstr ""
 "Ein unbekannter Fehler ist aufgetreten. Bitte schicken Sie eine Nachricht an "
 "den DCP-o-matic Autor (carl@dcpomatic.com)."
 
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr "KDM Zustellung: $CPL_NAME"
+
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
 msgstr "Kernel De-Interlacer"
@@ -351,23 +363,23 @@ msgstr "Kernel De-Interlacer"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Links"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr "Center links"
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 msgid "Left rear surround"
 msgstr "Surround hinten links"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "Surround links"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "LFE (Subwoofer)"
 
@@ -379,11 +391,11 @@ msgstr "Verschiedenes"
 msgid "Motion compensating deinterlacer"
 msgstr "Bewegungskompensierender De-Interlacer"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr "Unskaliert"
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 msgid "No stretch"
 msgstr "Nicht verzerrt"
 
@@ -431,31 +443,31 @@ msgstr "Hinweis"
 msgid "Rating"
 msgstr "Freigabehinweis"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Rechts"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr "Center rechts"
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 msgid "Right rear surround"
 msgstr "Surround hinten rechts"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Surround rechts"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "SSH Fehler (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Scope"
 
@@ -495,7 +507,7 @@ msgstr ""
 msgid "There was not enough memory to do this."
 msgstr "Zu wenig Speicher für diese Operation."
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
 "loaded into this version.  Sorry!"
@@ -504,7 +516,7 @@ msgstr ""
 "kann leider nicht mit dieser Ã¤lteren Version geladen werden. Sie müssen den "
 "Film neu erstellen. Sorry!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
@@ -526,11 +538,11 @@ msgstr "Wandle %1 um"
 msgid "Transitional"
 msgstr "Ãœberleitung"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr "Ungültiger ZIP Inhalt"
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
 msgstr "Ungültiges Bildformat vom Server erhalten"
 
@@ -538,7 +550,7 @@ msgstr "Ungültiges Bildformat vom Server erhalten"
 msgid "Unknown error"
 msgstr "Unbekannter Fehler"
 
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Ton Sample Format (%1) nicht erkannt."
 
@@ -546,15 +558,15 @@ msgstr "Ton Sample Format (%1) nicht erkannt."
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Unscharf Maskieren mit Gaußschem Unschärfefilter"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Unbenannt"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr "VI"
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "Warte..."
 
@@ -566,7 +578,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Und ein weiterer De-Interlacer..."
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "Sie müssen erst Inhalte hinzufügen bevor Sie ein DCP erstellen können!"
 
@@ -578,27 +590,27 @@ msgstr "[Bewegte Bilder]"
 msgid "[still]"
 msgstr "[Standbild]"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "Darf keine Schrägstriche enthalten"
 
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
-msgstr "Zeit zur Verbindung abgelaufen"
+msgstr "Zeit für Verbindung abgelaufen"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "verbinde..."
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "Containerformat"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "Inhaltsbeschreibung"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "kopiere %1"
 
@@ -606,19 +618,19 @@ msgstr "kopiere %1"
 msgid "could not create file %1"
 msgstr "Datei %1 konnte nicht erstellt werden."
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "Ton Dekoder nicht gefunden."
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "Keine Spur-Information gefunden"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "Bild-Dekoder nicht gefunden"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr "Ton MXF kann nicht in das DCP verschoben werden (%1)"
 
@@ -630,11 +642,11 @@ msgstr "Tondatei kann nicht zum Lesen geöffnet werden."
 msgid "could not open file %1"
 msgstr "Datei %1 konnte nicht geöffnet werden."
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "Datei konnte nicht zum Lesen geöffnet werden."
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 msgid "could not read encoded data"
 msgstr "Kodierte Daten nicht gefunden."
 
@@ -650,11 +662,11 @@ msgstr "Sample-Rate konnte nicht gewandelt werden"
 msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
 msgstr "Sample-Rate für %1 samples konnte nicht gewandelt werden (%2)(%3)"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "SCP Session konnte nicht gestartet werden (%1)"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "SSH Session konnte nicht gestartet werden"
 
@@ -662,43 +674,43 @@ msgstr "SSH Session konnte nicht gestartet werden"
 msgid "could not write to file %1 (%2)"
 msgstr "Datei %1 konnte nicht geschrieben werden (%2)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr "error during async_accept (%1)"
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr "error during async_connect (%1)"
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr "error during async_read (%1)"
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr "error during async_write (%1)"
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "Bilder pro Sekunde"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "Stunde"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "Stunden"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "Minute"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "Minuten"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
 msgstr "Key %1 in Key-value set fehlt"
 
@@ -710,15 +722,15 @@ msgstr "Benötigte Einstellung %1 fehlt"
 msgid "moving"
 msgstr "wird verschoben"
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "Mehr-Segment Untertitel werden noch nicht unterstützt"
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "Name"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "Nur Bitmap Untertitel werden unterstützt"
 
@@ -728,15 +740,20 @@ msgstr "Nur Bitmap Untertitel werden unterstützt"
 msgid "remaining"
 msgstr "verbleibend"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB nicht linearisiert"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "Sekunden"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "Sekunden"
 
index 813600fe5a21a302c9c6ca11f451557485967258..fe5615e1e113eaf790d91d2bbc1cbb2296f0ec65 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LIBDCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-04-20 10:12-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -33,23 +33,23 @@ msgstr "%1 canales, %2kHz, %3 muestras"
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 imágenes; %2 imágenes per second"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr "%1x%2 pixels (%3:1)"
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1.375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1.66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -57,11 +57,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "reducción de ruido 3D"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academy"
 
@@ -97,15 +97,15 @@ msgstr "Cancelado"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "No se puede usar el formato de pixel %1 para %2"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Centro"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr "Comprobando las imágenes existentes"
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr "Calculando la firma resumen del audio"
 
@@ -113,11 +113,11 @@ msgstr "Calculando la firma resumen del audio"
 msgid "Computing digest"
 msgstr "Calculando la firma resumen"
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr "Calculando la firma resumen de imagen"
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 msgid "Content and DCP have the same rate.\n"
 msgstr "La fuente y el DCP tienen la misma velocidad.\n"
 
@@ -129,41 +129,47 @@ msgstr "Para unir contenido debe tener el mismo retardo de audio."
 msgid "Content to be joined must have the same audio gain."
 msgstr "Para unir contenido debe tener la misma ganancia de audio."
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr "Para unir contenido debe tener la misma conversión de color."
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
 msgstr "Para unir contenido debe tener el mismo recorte."
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr "Para unir contenido debe tener el mismo tamaño de imagen."
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 msgid "Content to be joined must have the same scale setting."
 msgstr "Para unir contenido debe tener la misma redimensión."
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr ""
 "Para unir contenido debe tener el mismo desplazamiento de subtítulo en X."
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Para unir contenido debe tener el mismo tamaño de subtítulo."
+
+#: src/lib/subtitle_content.cc:85
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr ""
 "Para unir contenido debe tener el mismo desplazamiento de subtítulo en Y."
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr "Para unir contenido debe tener el mismo tamaño de subtítulo."
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr "Para unir contenido debe tener la misma velocidad de imagen."
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
 msgstr "Para unir contenido debe tener el mismo tamaño de imagen."
 
@@ -175,48 +181,48 @@ msgstr "Para unir contenido debe usar el mismo tipo de audio."
 msgid "Content to be joined must use the same subtitle stream."
 msgstr "Para unir contenido debe tener el mismo tipo de subtítulos."
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "Copiar DCP al TMS"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "No se pudo conectar al servidor %1 (%2)"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "No se pudo crear la carpeta remota %1 (%2)"
 
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
 #, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
 msgstr "No se pudo crear el fichero (%1)"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "No se pudo abrir %1"
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "No se pudo abrir %1 para enviar"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 msgid "Could not open downloaded ZIP file"
 msgstr "No se puedo abrir el fichero ZIP descargado"
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "No se pudo iniciar la sesión SCP (%1)"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "No se pudo escribir el fichero remoto (%1)"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "El DCP se reproducirá al %1%% de la velocidad de la fuente.\n"
 
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
 msgid "DCP will use every other frame of the content.\n"
 msgstr "El DCP usará imágenes alternas de la fuente.\n"
 
@@ -237,7 +243,7 @@ msgstr "DCP-o-matic ya no ofrece el filtro `%1', así que ha sido desactivado."
 msgid "De-interlacing"
 msgstr "Desentrelazado"
 
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
 #, fuzzy
 msgid ""
 "Dear Projectionist\n"
@@ -265,23 +271,23 @@ msgstr ""
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 and CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr "Descarga fallida (%1/%2 error %3)"
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Se doblará cada imagen en el DCP.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Cada imagen será repetida otras %1 veces en el DCP.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr "Enviar por email las KDM para %1"
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr "Codificando imagen"
 
@@ -293,7 +299,7 @@ msgstr "Error (%1)"
 msgid "Examine content"
 msgstr "Examinar contenido"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "Fallo al identificarse con el servidor (%1)"
 
@@ -305,11 +311,11 @@ msgstr "Bilineal rápido"
 msgid "Feature"
 msgstr "Película"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Flat"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
 msgstr "Frame completo"
 
@@ -321,7 +327,7 @@ msgstr "Gaussiano"
 msgid "Gradient debander"
 msgstr "Gradient debander"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr "Sordos"
 
@@ -338,6 +344,10 @@ msgstr ""
 "Error desconocido. La mejor idea es informar del problema a la lista de "
 "correo de DCP-o-matic (carl@dcpomatic.com)"
 
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
 msgstr "Kernel deinterlacer"
@@ -346,23 +356,23 @@ msgstr "Kernel deinterlacer"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Izquierda"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr "Centro izquierda"
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 msgid "Left rear surround"
 msgstr "Surround trasero izquierda"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "Surround izquierda"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "Lfe (bajos)"
 
@@ -374,11 +384,11 @@ msgstr "Miscelánea"
 msgid "Motion compensating deinterlacer"
 msgstr "Motion compensating deinterlacer"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr "No redimensionar"
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 msgid "No stretch"
 msgstr "Sin deformación"
 
@@ -423,31 +433,31 @@ msgstr "Anuncio de servicio público"
 msgid "Rating"
 msgstr "Clasificación"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Derecha"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr "Centro derecha"
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 msgid "Right rear surround"
 msgstr "Surround trasero derecha"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Surround derecha"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "error SSH (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Scope"
 
@@ -487,7 +497,7 @@ msgstr ""
 msgid "There was not enough memory to do this."
 msgstr "No hubo suficiente memoria para hacer esto."
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
 "loaded into this version.  Sorry!"
@@ -496,7 +506,7 @@ msgstr ""
 "desgraciadamente no s puede cargar. Necesitas crear una nueva película, "
 "volver a añadir y configurar ton contenido. Â¡Lo siento!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
@@ -518,11 +528,11 @@ msgstr "Codificar %1"
 msgid "Transitional"
 msgstr "Transitional"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr "Contenidos inesperados del fichero ZIP"
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
 msgstr ""
 
@@ -530,7 +540,7 @@ msgstr ""
 msgid "Unknown error"
 msgstr "Error desconocido"
 
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Formato de audio desconocido (%1)"
 
@@ -538,15 +548,15 @@ msgstr "Formato de audio desconocido (%1)"
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Máscara de desenfoque Gaussiano"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Sin título"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr "Ciegos"
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "Esperando"
 
@@ -558,7 +568,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "Tienes que añadir contenido al DCP antes de crearlo."
 
@@ -570,27 +580,27 @@ msgstr "[imágenes en movimiento]"
 msgid "[still]"
 msgstr "[imagen fija]"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "no puede contener barras"
 
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
 msgstr "tiempo de conexión agotado"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "conectando"
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "continente"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "tipo de contenido"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "copiando %1"
 
@@ -598,19 +608,19 @@ msgstr "copiando %1"
 msgid "could not create file %1"
 msgstr "No se pudo crear el fichero (%1)"
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "no se encontró el decodificador de audio"
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "no se pudo encontrar información del flujo"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "no se pudo encontrar decodificador de vídeo"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr "no s puedo mover el audio MXF en el DCP (%1)"
 
@@ -622,11 +632,11 @@ msgstr "no se pudo abrir el fichero de audio para lectura"
 msgid "could not open file %1"
 msgstr "no se pudo abrir el fichero %1"
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "no se pudo abrir el fichero para lectura"
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 msgid "could not read encoded data"
 msgstr "no se pudo leer la información codificada"
 
@@ -642,11 +652,11 @@ msgstr "no se pudo ejecutar el conversor de velocidad"
 msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
 msgstr "no se pudo ejecutar el conversor de velocidad"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "no se pudo abrir la sesión SCP (%1)"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "no se pudo abrir la sesión SSH"
 
@@ -654,43 +664,43 @@ msgstr "no se pudo abrir la sesión SSH"
 msgid "could not write to file %1 (%2)"
 msgstr "No se pudo escribir en el fichero (%1)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr "error durante async_accept (%1)"
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr "error durante async_connect (%1)"
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr "error durante async_read (%1)"
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr "error durante async_write (%1)"
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "imágenes por segundo"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "hora"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "horas"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "minuto"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "minutos"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
 msgstr "falta la clave %1 en el par clave-valor"
 
@@ -702,15 +712,15 @@ msgstr "falta una configuración obligatoria %1"
 msgid "moving"
 msgstr "moviendo"
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "todavía no se soportan subtítulos en múltiples partes"
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "nombre"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
 
@@ -720,15 +730,20 @@ msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
 msgid "remaining"
 msgstr "pendiente"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB no-lineal"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "segundos"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "segundos"
 
index 6cef1b3dc9044d8b45e0d3445afb2dd6846d6769..8f26f336aacd60cc51e90a9b1beb347667348cb0 100644 (file)
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 15:53+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 12:04+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
 "Language-Team: \n"
 "Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
 
 #: src/lib/sndfile_content.cc:61
 msgid "%1 [audio]"
@@ -27,29 +27,29 @@ msgstr "%1 [vidéo]"
 
 #: src/lib/sndfile_content.cc:82
 msgid "%1 channels, %2kHz, %3 samples"
-msgstr "%1 canaux, %2kHz, %3 samples"
+msgstr "%1 canaux, %2kHz, %3 Ã©chantillons"
 
 #: src/lib/ffmpeg_content.cc:246
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 images ; %2 images par seconde"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr "%1x%2 pixels (%3:1)"
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1.375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1.66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -57,11 +57,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "Débruitage 3D"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academy"
 
@@ -79,7 +79,7 @@ msgstr "Analyse audio"
 
 #: src/lib/scaler.cc:64
 msgid "Area"
-msgstr "Area"
+msgstr "Surface"
 
 #: src/lib/scaler.cc:62
 msgid "Bicubic"
@@ -97,15 +97,15 @@ msgstr "Annulé"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Format du pixel %1 non géré par %2"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Centre"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr "Recherche de données images existantes"
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr "Fabrication rendu audio"
 
@@ -113,11 +113,11 @@ msgstr "Fabrication rendu audio"
 msgid "Computing digest"
 msgstr "fabrication rendu"
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr "Fabrication rendu image"
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 msgid "Content and DCP have the same rate.\n"
 msgstr "Le DCP et la source ont la même cadence image.\n"
 
@@ -129,45 +129,50 @@ msgstr "Le contenu Ã  ajouter doit présenter le même délais audio"
 msgid "Content to be joined must have the same audio gain."
 msgstr "Le contenu Ã  ajouter doit avoir le même gain audio"
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr "Le contenu Ã  ajouter doit avoir le même type de conversion couleur"
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
-msgstr ""
-"le contenu Ã  ajouter doit avoir les mêmes valeurs de \"crop\" ou découpage"
+msgstr "le contenu Ã  ajouter doit avoir les mêmes valeurs de rognage"
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr "Le contenu Ã  ajouter doit avoir la même taille d'image"
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 msgid "Content to be joined must have the same scale setting."
 msgstr ""
 "Le contenu Ã  ajouter doit avoir les mêmes paramètres de mise Ã  l'échelle"
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr ""
 "Le contenu Ã  ajouter doit avoir le même positionnement horizontal des sous-"
 "titres"
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "le contenu Ã  ajouter doit avoir le même positionnement de sous-titre"
+
+#: src/lib/subtitle_content.cc:85
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr ""
 "Le contenu Ã  ajouter doit avoir le même positionnement vertical des sous-"
 "titres"
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr "le contenu Ã  ajouter doit avoir le même positionnement de sous-titre"
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr "Le contenu Ã  ajouter doit avoir la même cadence d'images"
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
 msgstr "Le contenu Ã  ajouter doit avoir le même type de trame vidéo"
 
@@ -179,57 +184,58 @@ msgstr "Le contenu Ã  ajouter doit avoir le même flux audio"
 msgid "Content to be joined must use the same subtitle stream."
 msgstr "Le contenu Ã  ajouter doit avoir le même flux sous titre"
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "Copier le DCP dans le TMS"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "Connexion au serveur %1 (%2) impossible"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "Création du dossier distant %1 (%2) impossible"
 
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
 #, fuzzy
-msgid "Could not decode image file"
-msgstr "Écriture vers fichier distant (%1) impossible"
+msgid "Could not decode image file (%1)"
+msgstr "Impossible de décoder le ficher image"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "lecture du fichier %1 impossible"
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "Ouverture de %1 pour envoi impossible"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 msgid "Could not open downloaded ZIP file"
-msgstr "Ouverture du fichier Zip impossible"
+msgstr "Ouverture du fichier Zip téléchargé impossible"
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "Démarrage de session SCP (%1) impossible"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "Écriture vers fichier distant (%1) impossible"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "Le DCP sera lu Ã  %1%% de la vitesse du contenu source.\n"
 
-#: src/lib/frame_rate_change.cc:81
-#, fuzzy
+#: src/lib/frame_rate_change.cc:89
 msgid "DCP will use every other frame of the content.\n"
-msgstr "Le DCP utilisera une image sur deux de la source.\n"
+msgstr "Le DCP utilisera les autres images de la source.\n"
 
 #: src/lib/job.cc:91
 msgid ""
 "DCP-o-matic could not open the file %1.  Perhaps it does not exist or is in "
 "an unexpected format."
-msgstr "DCP-o-matic ne peut pas ouvrir le fichier %1"
+msgstr ""
+"DCP-o-matic ne peut pas ouvrir le fichier %1. Soit il n'existe pas, soit il "
+"n'est pas au bon format."
 
 #: src/lib/ffmpeg_content.cc:93
 msgid ""
@@ -240,7 +246,7 @@ msgstr "DCP-o-matic ne gère plus le filtre `%1'. Celui-ci a Ã©té désactivé."
 msgid "De-interlacing"
 msgstr "Désentrelacement"
 
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
 msgid ""
 "Dear Projectionist\n"
 "\n"
@@ -254,28 +260,39 @@ msgid ""
 "Best regards,\n"
 "DCP-o-matic"
 msgstr ""
+"Cher projectionniste\n"
+"\n"
+"Veuillez trouver les fichiers KDMs attachés pour $CPL_NAME.\n"
+"\n"
+"Cinema: $CINEMA_NAME\n"
+"Ecran(s): $SCREENS\n"
+"\n"
+"Les KDMs sont valides du $START_TIME au $END_TIME.\n"
+"\n"
+"Cordialement,\n"
+"DCP-o-matic"
 
 #: src/lib/dolby_cp750.cc:27
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 et CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr "Echec de téléchargement (%1/%2 erreur %3)"
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Chaque image source sera doublée dans le DCP.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Chaque image source sera répetée %1 fois dans le DCP.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr "Envoyer KDM par email pour %1"
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr "encodage des données image"
 
@@ -287,7 +304,7 @@ msgstr "Erreur (%1)"
 msgid "Examine content"
 msgstr "Examen du contenu"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "L'authentification du serveur (%1) a Ã©chouée"
 
@@ -299,13 +316,13 @@ msgstr "Bilinéaire rapide"
 msgid "Feature"
 msgstr "Feature"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Flat"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
-msgstr "Pleine matrice"
+msgstr "Full frame"
 
 #: src/lib/scaler.cc:65
 msgid "Gaussian"
@@ -313,9 +330,9 @@ msgstr "Gaussien"
 
 #: src/lib/filter.cc:68
 msgid "Gradient debander"
-msgstr "Corrections des bandes du dégradé"
+msgstr "Corrections des bandes par dégradé"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr "Déficients Auditifs"
 
@@ -331,6 +348,10 @@ msgstr ""
 "Erreur indéterminée. Merci de rapporter le problème Ã  l'auteur de DCP-o-"
 "matic (carl@dcpomatic.com)"
 
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
 msgstr "Désentrelaceur noyau"
@@ -339,23 +360,23 @@ msgstr "Désentrelaceur noyau"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Gauche"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr "Centre Gauche"
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 msgid "Left rear surround"
 msgstr "Surround arrière gauche"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "Arrière gauche"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "Basses fréquences"
 
@@ -367,17 +388,17 @@ msgstr "Divers"
 msgid "Motion compensating deinterlacer"
 msgstr "Désentrelaceur par compensation de mouvement"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr "Pas de mise Ã  l'échelle"
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 msgid "No stretch"
 msgstr "Sans déformation"
 
 #: src/lib/image_content.cc:50
 msgid "No valid image files were found in the folder."
-msgstr ""
+msgstr "Aucun fichier image valide dans ce dossier."
 
 #: src/lib/filter.cc:70 src/lib/filter.cc:71 src/lib/filter.cc:73
 msgid "Noise reduction"
@@ -389,11 +410,11 @@ msgstr "OK (processus %1)"
 
 #: src/lib/content.cc:102
 msgid "Only the first piece of content to be joined can have a start trim."
-msgstr "Seul le premier contenu Ã  ajouter peut avoir un coupure de début."
+msgstr "Seul le premier contenu Ã  ajouter peut Ãªtre rogné au point d'entrée."
 
 #: src/lib/content.cc:106
 msgid "Only the last piece of content to be joined can have an end trim."
-msgstr "Seul le dernier contenu Ã  ajouter peut avoir une coupure en fin."
+msgstr "Seul le dernier contenu Ã  ajouter peut Ãªtre rogné au point de sortie."
 
 #: src/lib/job.cc:103
 msgid "Out of memory"
@@ -415,31 +436,31 @@ msgstr "Public Service Announcement"
 msgid "Rating"
 msgstr "Classification"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Droite"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr "Centre Droit"
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 msgid "Right rear surround"
 msgstr "Surround arrière droite"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Arrière droite"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "Erreur SSH (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Scope"
 
@@ -472,14 +493,14 @@ msgid ""
 "The drive that the film is stored on is low in disc space.  Free some more "
 "space and try again."
 msgstr ""
-"Le disque contenant le film est plein. Libérez de l'espace et essayez Ã  "
-"nouveau."
+"Le disque contenant le film est presque plein. Libérez de l'espace et "
+"essayez Ã  nouveau."
 
 #: src/lib/job.cc:103
 msgid "There was not enough memory to do this."
 msgstr "Il n'y avait pas assez de mémoire pour faire cela."
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
 "loaded into this version.  Sorry!"
@@ -487,14 +508,14 @@ msgstr ""
 "Ce film a Ã©té créé avec une nouvelle version de DCP-o-matic et il ne peut "
 "être ouvert dans cette version du programme. Désolé!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
 "create a new Film, re-add your content and set it up again.  Sorry!"
 msgstr ""
 "Ce projet a Ã©té créé avec une ancienne version de DCP-o-matic, chargement "
-"impossible. Créez un nouveau projet, ajoutez du contenu et  reparamétrez. "
+"impossible. Créez un nouveau projet, ajoutez du contenu et reparamétrez. "
 "Désolé !"
 
 #: src/lib/dcp_content_type.cc:46
@@ -509,19 +530,19 @@ msgstr "Transcodage %1"
 msgid "Transitional"
 msgstr "Transitional"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr "Contenu de fichier ZIP non géré."
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
-msgstr ""
+msgstr "Type d'image non conforme reçu par le serveur"
 
 #: src/lib/job.cc:120
 msgid "Unknown error"
 msgstr "Erreur inconnue"
 
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Échantillonnage audio (%1) inconnu"
 
@@ -529,15 +550,15 @@ msgstr "Échantillonnage audio (%1) inconnu"
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Adoucissement et flou Gaussien"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Sans titre"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr "Déficients Visuels"
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "En cours"
 
@@ -549,7 +570,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Un autre filtre de désentrelacement"
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "Ajoutez un contenu pour créer le DCP"
 
@@ -561,27 +582,27 @@ msgstr "[Déplacement d'images]"
 msgid "[still]"
 msgstr "[restant]"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "slash interdit"
 
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
 msgstr "temps de connexion expiré"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "connexion"
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "conteneur"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "type de contenu"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "copie de %1"
 
@@ -589,19 +610,19 @@ msgstr "copie de %1"
 msgid "could not create file %1"
 msgstr "Écriture vers fichier distant (%1) impossible"
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "décodeur audio introuvable"
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "information du flux introuvable"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "décodeur vidéo introuvable"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr "ne peut déplacer un MXF son dans le DCP (%1)"
 
@@ -613,11 +634,11 @@ msgstr "lecture du fichier audio impossible"
 msgid "could not open file %1"
 msgstr "lecture du fichier (%1) impossible"
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "lecture du fichier impossible"
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 msgid "could not read encoded data"
 msgstr "lecture des données encodées impossible"
 
@@ -635,11 +656,11 @@ msgstr ""
 "n'a pas pu convertir la fréquence d'échantillonnage pour %1 Ã©chantillons "
 "(%2) (%3)"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "démarrage de session SCP (%1) impossible"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "démarrage de session SSH impossible"
 
@@ -647,45 +668,45 @@ msgstr "démarrage de session SSH impossible"
 msgid "could not write to file %1 (%2)"
 msgstr "Écriture vers fichier distant (%1) impossible (%2)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr "erreur pendant async_accept (%1)"
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr "erreur pendant async_connect (%1)"
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr "erreur pendant async_read (%1)"
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr "erreur pendant async_write (%1)"
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "images par seconde"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "heure"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "heures"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "minute"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "minutes"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
-msgstr "clé %1 non sélectionnée"
+msgstr "clé %1 manquante dans le réglage"
 
 #: src/lib/exceptions.cc:54
 msgid "missing required setting %1"
@@ -695,15 +716,15 @@ msgstr "paramètre %1 manquant"
 msgid "moving"
 msgstr "déplacement"
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "sous-titres en plusieurs parties non supportés"
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "nom"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "sous-titres non-bitmap non supportés actuellement"
 
@@ -713,15 +734,20 @@ msgstr "sous-titres non-bitmap non supportés actuellement"
 msgid "remaining"
 msgstr "restant"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB non linéarisé"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "secondes"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "secondes"
 
index e2bce6f87b7cba5fe7adf678f3241a1056c3a364..d4760b9d5a95c9a9972674a7b67f55ccf58b0221 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-02-03 10:48+0100\n"
 "Last-Translator: William Fanelli <william.f@impronte.com>\n"
 "Language-Team: \n"
@@ -33,23 +33,23 @@ msgstr ""
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 fotogrammi; %2 fotogrammi al secondo"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr ""
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1.375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1.66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -57,11 +57,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "Riduttore di rumore 3D"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academy"
 
@@ -98,15 +98,15 @@ msgstr "Cancellato"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Non posso gestire il formato di pixel %1 durante %2"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Centro"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr ""
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr ""
 
@@ -114,11 +114,11 @@ msgstr ""
 msgid "Computing digest"
 msgstr ""
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr ""
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 #, fuzzy
 msgid "Content and DCP have the same rate.\n"
 msgstr "Il DCP e il sorgente hanno la stessa frequenza.\n"
@@ -131,43 +131,51 @@ msgstr ""
 msgid "Content to be joined must have the same audio gain."
 msgstr ""
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr ""
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
 msgstr ""
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr ""
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 #, fuzzy
 msgid "Content to be joined must have the same scale setting."
 msgstr ""
 "Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr ""
 "Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
+
+#: src/lib/subtitle_content.cc:85
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr ""
 "Il contenuto da unire deve avere lo stesso spostamento Y dei sottotitoli."
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento Y dei sottotitoli."
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr ""
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
 msgstr ""
 
@@ -179,50 +187,50 @@ msgstr ""
 msgid "Content to be joined must use the same subtitle stream."
 msgstr ""
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "Copia del DCP al TMS"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "Non posso connetermi al server %1 (%2)"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "Non posso creare la directory remota %1 (%2)"
 
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
 #, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
 msgstr "Non posso scrivere il file remoto (%1)"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "Non riesco ad aprire %1"
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "Non posso aprire %1 da inviare"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 #, fuzzy
 msgid "Could not open downloaded ZIP file"
 msgstr "non riesco ad aprire %1"
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "Non posso avviare la sessione SCP (%1)"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "Non posso scrivere il file remoto (%1)"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 #, fuzzy
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "Il DCP andrà al %1%% della velocità del sorgente.\n"
 
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
 #, fuzzy
 msgid "DCP will use every other frame of the content.\n"
 msgstr "Il DCP userà ogni altro fotogramma del sorgente.\n"
@@ -244,7 +252,7 @@ msgstr ""
 msgid "De-interlacing"
 msgstr "De-interlacciamento"
 
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
 #, fuzzy
 msgid ""
 "Dear Projectionist\n"
@@ -273,23 +281,23 @@ msgstr ""
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr ""
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Ogni fotogramma del sorgente sarà duplicato nel DCP.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Ogni fotogramma del sorgente sarà ripetuto %1 volte nel DCP.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr ""
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr ""
 
@@ -301,7 +309,7 @@ msgstr "Errore (%1)"
 msgid "Examine content"
 msgstr "Esamino il contenuto"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "Autenticazione col server fallita (%1) "
 
@@ -313,11 +321,11 @@ msgstr "Bilineare rapida"
 msgid "Feature"
 msgstr "Caratteristica"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Flat"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
 msgstr "Schermo intero"
 
@@ -329,7 +337,7 @@ msgstr "Gaussiana"
 msgid "Gradient debander"
 msgstr "Gradiente debander"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr ""
 
@@ -346,6 +354,10 @@ msgstr ""
 "Non sappiamo cosa ha causato questo errore. La cosa migliore Ã¨ inviare un "
 "report del problema alla mailing list di DCP-o-matic (carl@dcpomatic.com)"
 
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
 msgstr "Deinterlacciatore Kernel"
@@ -354,24 +366,24 @@ msgstr "Deinterlacciatore Kernel"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Sinistro"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr ""
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 #, fuzzy
 msgid "Left rear surround"
 msgstr "Surround sinistro"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "Surround sinistro"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "Lfe(sub)"
 
@@ -383,11 +395,11 @@ msgstr "Varie"
 msgid "Motion compensating deinterlacer"
 msgstr "Dinterlacciatore con compensazione di movimento"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr ""
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 #, fuzzy
 msgid "No stretch"
 msgstr "Flat senza stiramento"
@@ -432,33 +444,33 @@ msgstr "Annuncio di pubblico servizio"
 msgid "Rating"
 msgstr "Punteggio"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 #, fuzzy
 msgid "Rec. 709"
 msgstr "Rec 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Destro"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr ""
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 #, fuzzy
 msgid "Right rear surround"
 msgstr "Surround destro"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Surround destro"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "Errore SSH (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Scope"
 
@@ -498,7 +510,7 @@ msgstr ""
 msgid "There was not enough memory to do this."
 msgstr ""
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 #, fuzzy
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
@@ -509,7 +521,7 @@ msgstr ""
 "un nuovo film, ri-aggiungere i tuoi contenuti e configurarlo di nuovo. Ci "
 "dispiace!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
@@ -532,11 +544,11 @@ msgstr "Transcodifica %1"
 msgid "Transitional"
 msgstr "Di transizione"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr ""
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
 msgstr ""
 
@@ -544,7 +556,7 @@ msgstr ""
 msgid "Unknown error"
 msgstr "Errore sconosciuto"
 
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Formato di campionamento audio non riconosciuto (%1)"
 
@@ -552,15 +564,15 @@ msgstr "Formato di campionamento audio non riconosciuto (%1)"
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Maschera unsharp e sfocatura Gaussiana"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Senza titolo"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr ""
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "Aspetta"
 
@@ -572,7 +584,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Altro filtro di deinterlacciamento"
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "Devi aggiungere dei contenuti al DCP prima di crearlo"
 
@@ -585,27 +597,27 @@ msgstr ""
 msgid "[still]"
 msgstr "ancora"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "non può contenere barre"
 
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
 msgstr "connessione scaduta"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "mi sto connettendo"
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "contenitore"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "tipo di contenuto"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "copia %1"
 
@@ -613,19 +625,19 @@ msgstr "copia %1"
 msgid "could not create file %1"
 msgstr "Non posso scrivere il file remoto (%1)"
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "non riesco a trovare il decoder audio"
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "non riesco a trovare informazioni sullo streaming"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "non riesco a trovare il decoder video"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr ""
 
@@ -637,11 +649,11 @@ msgstr "non riesco ad aprire il file in lettura"
 msgid "could not open file %1"
 msgstr "non riesco ad aprire %1"
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "non riesco ad aprire il file per leggerlo"
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 #, fuzzy
 msgid "could not read encoded data"
 msgstr "non riesco a trovare il decoder audio"
@@ -659,11 +671,11 @@ msgstr "non riesco a eseguire il convertitore della frequenza di campionamento"
 msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
 msgstr "non riesco a eseguire il convertitore della frequenza di campionamento"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "non posso avviare la sessione SCP (%1)"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "non posso avviare la sessione SSH"
 
@@ -671,43 +683,43 @@ msgstr "non posso avviare la sessione SSH"
 msgid "could not write to file %1 (%2)"
 msgstr "non posso scrivere il file (%1)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr ""
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr ""
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr ""
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr ""
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "fotogrammi al secondo"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "ora"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "ore"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "minuto"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "minuti"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
 msgstr "persa la chiave %1 tra i valori chiave"
 
@@ -719,15 +731,15 @@ msgstr "persa la regolazione richiesta %1"
 msgid "moving"
 msgstr ""
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "sottotitoli multi-part non ancora supportati"
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "nome"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "sottotitoli non-bitmap non ancora supportati"
 
@@ -737,15 +749,20 @@ msgstr "sottotitoli non-bitmap non ancora supportati"
 msgid "remaining"
 msgstr "restano"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB non linearizzato"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "secondi"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "secondi"
 
index f471ce8af1268ea85e1e787c84d0e7ad288d97de..09f14e1ac939a01ae12981a83b28d3facffa504c 100644 (file)
@@ -7,15 +7,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:39+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:34+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
 "Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n"
 "Language: nl_NL\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: src/lib/sndfile_content.cc:61
@@ -34,23 +34,23 @@ msgstr "%1 kanalen, %2kHz, %3 samples"
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 frames; %2 frames per seconde"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr "%1x%2 pixels (%3:1)"
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1.19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1.375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1.66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -58,11 +58,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "3D ruisonderdrukking"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academie"
 
@@ -98,15 +98,15 @@ msgstr "Afgebroken"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Fout met pixel formaat %1 tijdens %2"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Midden"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr "Controleer bestaande videodata"
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr "Verwerk audio data"
 
@@ -114,11 +114,11 @@ msgstr "Verwerk audio data"
 msgid "Computing digest"
 msgstr "Verwerken..."
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr "Verwerk video data"
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 msgid "Content and DCP have the same rate.\n"
 msgstr "Inhoud en DCP hebben dezelfde framerate .\n"
 
@@ -130,39 +130,45 @@ msgstr "Toegevoegde bestanden moeten dezelfde audio vertraging hebben."
 msgid "Content to be joined must have the same audio gain."
 msgstr "Toegevoegde bestanden moeten dezelfde audio gain hebben."
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr "Toegevoegde bestanden moeten dezelfde kleurindeling hebben."
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
 msgstr "Toegevoegde bestanden moeten dezelfde crop hebben."
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr "Toegevoegde bestanden moeten dezelfde grootte hebben."
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 msgid "Content to be joined must have the same scale setting."
 msgstr "Toegevoegde bestanden moeten dezelfde schaal hebben."
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr "Toegevoegde bestanden moeten dezelfde ondertitel X offset hebben."
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Toegevoegde bestanden moeten dezelfde ondertitel grootte hebben."
+
+#: src/lib/subtitle_content.cc:85
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr "Toegevoegde bestanden moeten dezelfde ondertitel Y offset hebben."
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr "Toegevoegde bestanden moeten dezelfde ondertitel grootte hebben."
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr "Toegevoegde bestanden moeten dezelfde video frame rate hebben."
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
 msgstr "Toegevoegde bestanden moeten dezelfde video formaat hebben."
 
@@ -174,48 +180,48 @@ msgstr "Toegevoegde bestanden moeten dezelfde audio stream gebruiken."
 msgid "Content to be joined must use the same subtitle stream."
 msgstr "Toegevoegde bestanden moeten dezelfde ondertitel stream gebruiken."
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "Kopieer DCP to TMS"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "Kan niet verbinden met server %1 (%2)"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "Kan geen remote map maken %1 (%2)"
 
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
 #, fuzzy
-msgid "Could not decode image file"
-msgstr "kan geen bestand maken %1"
+msgid "Could not decode image file (%1)"
+msgstr "Kan beeldbestand niet decoderen"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "Kan niet openen %1"
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "Kan niet openen %1 om te verzenden"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 msgid "Could not open downloaded ZIP file"
 msgstr "Kan gedownloade ZIP bestand niet openen"
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "Kan SCP sessie niet starten (%1)"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "Kan niet schrijven naar bestand op FTP server"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "DCP renderd met %1%% van de content framerate.\n"
 
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
 msgid "DCP will use every other frame of the content.\n"
 msgstr "DCP zal alleen elk ander frame van de content gebruiken.\n"
 
@@ -238,8 +244,7 @@ msgstr ""
 msgid "De-interlacing"
 msgstr "De-interlacing"
 
-#: src/lib/config.cc:417
-#, fuzzy
+#: src/lib/config.cc:436
 msgid ""
 "Dear Projectionist\n"
 "\n"
@@ -256,6 +261,8 @@ msgstr ""
 "Geachte operator\n"
 "\n"
 "Bijgevoegd zijn KDMs voor $CPL_NAME.\n"
+"Bioscoop: $CINEMA_NAME\n"
+"Zaal/Zalen: $SCREENS\n"
 "\n"
 "De KDMs zijn geldig van $START_TIME tot $END_TIME.\n"
 "\n"
@@ -266,23 +273,23 @@ msgstr ""
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 and CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr "Fout met download(%1/%2 error %3)"
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Elk content frame zal verdubbeld worden de DCP.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Elk content frame zal %1  herhaald worden in de DCP.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr "Email KDMs voor %1"
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr "Encoding bestandsdata"
 
@@ -294,7 +301,7 @@ msgstr "Fout (%1)"
 msgid "Examine content"
 msgstr "Controleer content"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "Inlog fout met server (%1)"
 
@@ -306,11 +313,11 @@ msgstr "Fast Bilinear"
 msgid "Feature"
 msgstr "Kenmerken"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Onbewerkt"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
 msgstr "Full frame"
 
@@ -322,7 +329,7 @@ msgstr "Gaussian"
 msgid "Gradient debander"
 msgstr "Gradient debander"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr "Slechthorenden"
 
@@ -331,13 +338,16 @@ msgid "High quality 3D denoiser"
 msgstr "High quality 3D denoiser"
 
 #: src/lib/job.cc:111 src/lib/job.cc:121
-#, fuzzy
 msgid ""
 "It is not known what caused this error.  Please report the problem to the "
 "DCP-o-matic author (carl@dcpomatic.com)."
 msgstr ""
 "Dit is een onbekende fout. U kunt deze het beste melden bij de DCP-o-matic "
-"mailing lijst (carl@dcpomatic.com)"
+"maker (carl@dcpomatic.com)"
+
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr "KDM levering: $CPL_NAME"
 
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
@@ -347,23 +357,23 @@ msgstr "Kernel deinterlacer"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Links"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr "Links midden"
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 msgid "Left rear surround"
 msgstr "Links achter surround"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "links surround"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "Lfe (sub)"
 
@@ -375,17 +385,17 @@ msgstr "Diverse"
 msgid "Motion compensating deinterlacer"
 msgstr "Motion compensating deinterlacer"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr "Niet vergroten of verkleinen"
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 msgid "No stretch"
 msgstr "Niet uitvullen"
 
 #: src/lib/image_content.cc:50
 msgid "No valid image files were found in the folder."
-msgstr ""
+msgstr "Geen geldige beeldbestanden gevonden in deze map."
 
 #: src/lib/filter.cc:70 src/lib/filter.cc:71 src/lib/filter.cc:73
 msgid "Noise reduction"
@@ -427,31 +437,31 @@ msgstr "Publieke Service aankondiging"
 msgid "Rating"
 msgstr "Beoordeling"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Rechts"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr "Rechts midden"
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 msgid "Right rear surround"
 msgstr "Rechtsachter surround"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Rechts surround"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "SSH fout (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Gebied"
 
@@ -491,7 +501,7 @@ msgstr ""
 msgid "There was not enough memory to do this."
 msgstr "Er was niet genoeg geheugen om dit uit te voeren."
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
 "loaded into this version.  Sorry!"
@@ -499,7 +509,7 @@ msgstr ""
 "Deze film is gemaakt met een nieuwere versie van DCP-o-matic en kan niet "
 "geopend worden. Sorry!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
@@ -521,19 +531,19 @@ msgstr "Omzetten %1"
 msgid "Transitional"
 msgstr "Bumper"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr "Onverwachte ZIP file inhoud"
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
-msgstr ""
+msgstr "Onverwacht beeldtype ontvangen door server"
 
 #: src/lib/job.cc:120
 msgid "Unknown error"
 msgstr "Onbekende fout"
 
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Niet herkenbaar audio sample formaat (%1)"
 
@@ -541,15 +551,15 @@ msgstr "Niet herkenbaar audio sample formaat (%1)"
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Unsharp mask and Gaussian blur"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Niet benoemd"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr "Slechtzienden"
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "Wachten"
 
@@ -561,7 +571,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "U moet wat content toevoegen voor het maken van de DCP"
 
@@ -573,27 +583,27 @@ msgstr "[bewegend beeld]"
 msgid "[still]"
 msgstr "[still]"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "er mag geen '\" gebruikt worden"
 
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
 msgstr "verbinding timeout"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "verbinden"
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "container"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "content type"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "kopieeren %1"
 
@@ -601,19 +611,19 @@ msgstr "kopieeren %1"
 msgid "could not create file %1"
 msgstr "kan geen bestand maken %1"
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "kan geen audio decoder vinden"
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "kan geen stream informatie vinden"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "kan geen videodecoder vinden"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr "kan MXF audio niet plaatsen in DCP (%1)"
 
@@ -625,11 +635,11 @@ msgstr "kan audio bestand niet openen om te lezen"
 msgid "could not open file %1"
 msgstr "kan bestand niet openen %1"
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "kan bestand niet openen om te lezen"
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 msgid "could not read encoded data"
 msgstr "kan encoded data niet lezen"
 
@@ -645,11 +655,11 @@ msgstr "kan sample-rate converter niet starten"
 msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
 msgstr "kan sample-rate converter niet starten gedurende %1 samples (%2) (%3)"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "kan SCP sessie niet starten (%1)"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "kan SSH sessie niet starten"
 
@@ -657,43 +667,43 @@ msgstr "kan SSH sessie niet starten"
 msgid "could not write to file %1 (%2)"
 msgstr "kan niet schrijven naar bestand %1 (%2)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr "fout met async_accepteren (FTP) (%1)"
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr "fout met async_verbinden (FTP) (%1)"
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr "fout met async_lezen (FTP) (%1)"
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr "fout met async_schrijven (FTP) (%1)"
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "frames per seconde"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "uur"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "uren"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "minuut"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "minuten"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
 msgstr "ontbrekende key %1 in key-value set"
 
@@ -705,15 +715,15 @@ msgstr "ontbrekende verplichte setting %1"
 msgid "moving"
 msgstr "bewegend"
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "ondertitels met meerdere delen worden nog niet ondersteund."
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "naam"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "non-bitmap ondertitels worden nog niet ondersteund"
 
@@ -723,15 +733,19 @@ msgstr "non-bitmap ondertitels worden nog niet ondersteund"
 msgid "remaining"
 msgstr "resterend"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB non-linearised"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+msgid "second"
+msgstr "secondes"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "secondes"
 
index 98d76e3bd88f7bf6cc4fa353342d37291a754da3..32843da7a618b979f39d5c1d5e0412c32edc0a42 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-01-19 08:59+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -33,23 +33,23 @@ msgstr "%1 kanaler, %2kHz, %3 sampel"
 msgid "%1 frames; %2 frames per second"
 msgstr "%1 bilder; %2 bilder per sekund"
 
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
 msgid "%1x%2 pixels (%3:1)"
 msgstr "%1x%2 pixlar (%3:1)"
 
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
 msgid "1.19"
 msgstr "1,19"
 
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
 msgid "1.375"
 msgstr "1,375"
 
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
 msgid "1.66"
 msgstr "1,66"
 
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
 msgid "16:9"
 msgstr "16:9"
 
@@ -57,11 +57,11 @@ msgstr "16:9"
 msgid "3D denoiser"
 msgstr "3D brusreducering"
 
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
 msgid "4:3"
 msgstr "4:3"
 
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
 msgid "Academy"
 msgstr "Academy"
 
@@ -97,15 +97,15 @@ msgstr "Avbruten"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Kan inte hantera pixelformat %1 under %2"
 
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
 msgid "Centre"
 msgstr "Center"
 
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
 msgid "Checking existing image data"
 msgstr "Kontrollerar befintligt bilddata"
 
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
 msgid "Computing audio digest"
 msgstr "Beräknar audiosammanfattning"
 
@@ -113,11 +113,11 @@ msgstr "Beräknar audiosammanfattning"
 msgid "Computing digest"
 msgstr "Beräknar sammanfattning"
 
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
 msgid "Computing image digest"
 msgstr "Beräknar bildsammanfattning"
 
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
 msgid "Content and DCP have the same rate.\n"
 msgstr "Källa och DCP har samma bildfrekvens.\n"
 
@@ -129,44 +129,50 @@ msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma audiofördröjning."
 msgid "Content to be joined must have the same audio gain."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma audioförstärkning."
 
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
 msgid "Content to be joined must have the same colour conversion."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma färgkonvertering."
 
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
 msgid "Content to be joined must have the same crop."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma beskärning."
 
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
 msgid "Content to be joined must have the same picture size."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma bildstorlek."
 
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
 #, fuzzy
 msgid "Content to be joined must have the same scale setting."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma bildförhÃ¥llande."
 
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
 #, fuzzy
 msgid "Content to be joined must have the same subtitle X offset."
 msgstr ""
 "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma förskjutning pÃ¥ undertexten."
 
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma skala pÃ¥ undertexten."
+
+#: src/lib/subtitle_content.cc:85
 #, fuzzy
 msgid "Content to be joined must have the same subtitle Y offset."
 msgstr ""
 "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma förskjutning pÃ¥ undertexten."
 
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma skala pÃ¥ undertexten."
 
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
 msgid "Content to be joined must have the same video frame rate."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma videobildhastighet."
 
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
 msgid "Content to be joined must have the same video frame type."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma videobildtyp."
 
@@ -178,49 +184,49 @@ msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma audioström."
 msgid "Content to be joined must use the same subtitle stream."
 msgstr "InnehÃ¥ll som ska sammanfogas mÃ¥ste använda samma undertextström."
 
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
 msgid "Copy DCP to TMS"
 msgstr "Kopiera DCP till TMS"
 
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
 msgid "Could not connect to server %1 (%2)"
 msgstr "Kunde inte ansluta till server %1 (%2)"
 
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
 msgid "Could not create remote directory %1 (%2)"
 msgstr "Kunde inte skapa fjärrkatalog %1 (%2)"
 
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
 #, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
 msgstr "kunde inte skapa fil %1"
 
 #: src/lib/job.cc:90
 msgid "Could not open %1"
 msgstr "Kunde inte Ã¶ppna %1"
 
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
 msgid "Could not open %1 to send"
 msgstr "Kunde inte Ã¶ppna %1 för att skicka"
 
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
 #, fuzzy
 msgid "Could not open downloaded ZIP file"
 msgstr "kunde inte Ã¶ppna fil %1"
 
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
 msgid "Could not start SCP session (%1)"
 msgstr "Kunde inte starta SCP-session (%1)"
 
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
 msgid "Could not write to remote file (%1)"
 msgstr "Kunde inte skriva till fjärrfil (%1)"
 
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "DCP kommer att köras pÃ¥ %1%% av källans hastighet.\n"
 
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
 msgid "DCP will use every other frame of the content.\n"
 msgstr "DCP kommer att använda varannan bild frÃ¥n källan.\n"
 
@@ -242,7 +248,7 @@ msgid "De-interlacing"
 msgstr "Avflätning"
 
 # svÃ¥röversatt
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
 #, fuzzy
 msgid ""
 "Dear Projectionist\n"
@@ -268,24 +274,24 @@ msgstr ""
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 och CP750"
 
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
 msgid "Download failed (%1/%2 error %3)"
 msgstr ""
 
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Varje bild frÃ¥n källan kommer att användas tvÃ¥ gÃ¥nger i DCPn.\n"
 
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr ""
 "Varje bild frÃ¥n källan kommer att användas ytterligare %1 gÃ¥ng(er) i DCPn.\n"
 
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
 msgid "Email KDMs for %1"
 msgstr "E-posta KDM:er för %1"
 
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
 msgid "Encoding image data"
 msgstr "Kodar bild-data"
 
@@ -297,7 +303,7 @@ msgstr "Fel (%1)"
 msgid "Examine content"
 msgstr "Undersök innehÃ¥llet"
 
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
 msgid "Failed to authenticate with server (%1)"
 msgstr "Misslyckades att autentisera med server (%1)"
 
@@ -309,11 +315,11 @@ msgstr "Snabb bilinjär"
 msgid "Feature"
 msgstr "Feature"
 
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
 msgid "Flat"
 msgstr "Flat"
 
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
 msgid "Full frame"
 msgstr "Full frame"
 
@@ -325,7 +331,7 @@ msgstr "Gaussisk"
 msgid "Gradient debander"
 msgstr "Gradientutjämnare"
 
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
 msgid "Hearing impaired"
 msgstr ""
 
@@ -342,6 +348,10 @@ msgstr ""
 "Det Ã¤r inte känt vad som orsakade detta fel. Bästa sättet att rapportera "
 "problemet Ã¤r till DCP-o-matics mejl-lista (carl@dcpomatic.com)"
 
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
 #: src/lib/filter.cc:66
 msgid "Kernel deinterlacer"
 msgstr "Kernel-avflätare"
@@ -350,24 +360,24 @@ msgstr "Kernel-avflätare"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
 msgid "Left"
 msgstr "Vänster"
 
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
 msgid "Left centre"
 msgstr ""
 
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
 #, fuzzy
 msgid "Left rear surround"
 msgstr "Vänster surround"
 
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
 msgid "Left surround"
 msgstr "Vänster surround"
 
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
 msgid "Lfe (sub)"
 msgstr "Lfe (sub)"
 
@@ -379,11 +389,11 @@ msgstr "Diverse"
 msgid "Motion compensating deinterlacer"
 msgstr "Rörelsekompenserande avflätare"
 
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
 msgid "No scale"
 msgstr ""
 
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
 #, fuzzy
 msgid "No stretch"
 msgstr "Flat utan utsträckning"
@@ -429,32 +439,32 @@ msgstr "Public Service Announcement"
 msgid "Rating"
 msgstr "Rating"
 
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
 msgid "Right"
 msgstr "Höger"
 
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
 msgid "Right centre"
 msgstr ""
 
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
 #, fuzzy
 msgid "Right rear surround"
 msgstr "Höger surround"
 
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
 msgid "Right surround"
 msgstr "Höger surround"
 
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
 msgid "SSH error (%1)"
 msgstr "SSH fel (%1)"
 
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
 msgid "Scope"
 msgstr "Scope"
 
@@ -494,7 +504,7 @@ msgstr ""
 msgid "There was not enough memory to do this."
 msgstr ""
 
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
 #, fuzzy
 msgid ""
 "This film was created with a newer version of DCP-o-matic, and it cannot be "
@@ -504,7 +514,7 @@ msgstr ""
 "inte Ã¶ppnas i denna version. Du mÃ¥ste skapa en ny Film, lägga till ditt "
 "innehÃ¥ll och konfigurera allt igen. Ursäkta!"
 
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
 msgid ""
 "This film was created with an older version of DCP-o-matic, and "
 "unfortunately it cannot be loaded into this version.  You will need to "
@@ -526,11 +536,11 @@ msgstr "Konvertera %1"
 msgid "Transitional"
 msgstr "Transitional"
 
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
 msgid "Unexpected ZIP file contents"
 msgstr ""
 
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
 msgid "Unexpected image type received by server"
 msgstr ""
 
@@ -539,7 +549,7 @@ msgid "Unknown error"
 msgstr "Okänt fel"
 
 # Svengelska
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
 msgid "Unrecognised audio sample format (%1)"
 msgstr "Okänt audio-sampelformat (%1)"
 
@@ -547,15 +557,15 @@ msgstr "Okänt audio-sampelformat (%1)"
 msgid "Unsharp mask and Gaussian blur"
 msgstr "Oskärpemask och Gaussisk suddighet"
 
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
 msgid "Untitled"
 msgstr "Utan titel"
 
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
 msgid "Visually impaired"
 msgstr ""
 
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
 msgid "Waiting"
 msgstr "Väntar"
 
@@ -568,7 +578,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
 msgid "You must add some content to the DCP before creating it"
 msgstr "Du mÃ¥ste lägga till nÃ¥got innehÃ¥ll till DCP:n innan du skapar den"
 
@@ -580,28 +590,28 @@ msgstr "[rörliga bilder]"
 msgid "[still]"
 msgstr "[stillbild]"
 
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
 msgid "cannot contain slashes"
 msgstr "fÃ¥r inte innehÃ¥lla snedstreck"
 
 # Svengelska
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
 msgid "connect timed out"
 msgstr "uppkopplingen tajmade ur"
 
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
 msgid "connecting"
 msgstr "kopplar upp"
 
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
 msgid "container"
 msgstr "behÃ¥llare"
 
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
 msgid "content type"
 msgstr "innehÃ¥llstyp"
 
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
 msgid "copying %1"
 msgstr "kopierar %1"
 
@@ -609,19 +619,19 @@ msgstr "kopierar %1"
 msgid "could not create file %1"
 msgstr "kunde inte skapa fil %1"
 
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
 msgid "could not find audio decoder"
 msgstr "kunde inte hitta audio-avkodare"
 
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
 msgid "could not find stream information"
 msgstr "kunde inte hitta information om strömmen"
 
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
 msgid "could not find video decoder"
 msgstr "kunde inte hitta video-avkodare"
 
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
 msgid "could not move audio MXF into the DCP (%1)"
 msgstr "kunde inte flytta audio-MXF in i DCP:n (%1)"
 
@@ -633,11 +643,11 @@ msgstr "kunde inte Ã¶ppna audio-fil för läsning"
 msgid "could not open file %1"
 msgstr "kunde inte Ã¶ppna fil %1"
 
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
 msgid "could not open file for reading"
 msgstr "kunde inte Ã¶ppna fil för läsning"
 
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
 msgid "could not read encoded data"
 msgstr "kunde inte läsa kodat data"
 
@@ -654,11 +664,11 @@ msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
 msgstr ""
 "kunde inte köra sampelhastighetskonverteraren under %1 sampel (%2) (%3)"
 
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
 msgid "could not start SCP session (%1)"
 msgstr "kunde inte starta SCP-session (%1)"
 
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
 msgid "could not start SSH session"
 msgstr "kunde inte starta SSH-session"
 
@@ -666,43 +676,43 @@ msgstr "kunde inte starta SSH-session"
 msgid "could not write to file %1 (%2)"
 msgstr "kunde inte skriva till fil %1 (%2)"
 
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
 msgid "error during async_accept (%1)"
 msgstr "fel vid async_accept (%1)"
 
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
 msgid "error during async_connect (%1)"
 msgstr "fel vid async_connect (%1)"
 
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
 msgid "error during async_read (%1)"
 msgstr "fel vid async_read (%1)"
 
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
 msgid "error during async_write (%1)"
 msgstr "fel vid async_write (%1)"
 
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
 msgid "frames per second"
 msgstr "bilder per sekund"
 
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
 msgid "hour"
 msgstr "timme"
 
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
 msgid "hours"
 msgstr "timmar"
 
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
 msgid "minute"
 msgstr "minut"
 
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
 msgid "minutes"
 msgstr "minuter"
 
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
 msgid "missing key %1 in key-value set"
 msgstr "saknad nyckel %1 i nyckel-värde grupp"
 
@@ -715,15 +725,15 @@ msgstr "saknad nödvändig inställning %1"
 msgid "moving"
 msgstr "rörlig"
 
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
 msgid "multi-part subtitles not yet supported"
 msgstr "undertexter i flera delar stöds inte Ã¤nnu"
 
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
 msgid "name"
 msgstr "namn"
 
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
 msgid "non-bitmap subtitles not yet supported"
 msgstr "icke-rastergrafiska undertexter stöds inte Ã¤nnu"
 
@@ -733,15 +743,20 @@ msgstr "icke-rastergrafiska undertexter stöds inte Ã¤nnu"
 msgid "remaining"
 msgstr "Ã¥terstÃ¥ende tid"
 
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
 msgid "sRGB non-linearised"
 msgstr "sRGB icke-linjär"
 
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "sekunder"
+
+#: src/lib/util.cc:191
 msgid "seconds"
 msgstr "sekunder"
 
index 52577d3bbc5158f7ccdfea8a561caa0f055107c1..554d3c36c6c551f93e30b0d1305de5f94b9cdde4 100644 (file)
@@ -24,7 +24,6 @@
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::vector;
 
 vector<Ratio const *> Ratio::_ratios;
@@ -57,3 +56,20 @@ Ratio::from_id (string i)
 
        return *j;
 }
+
+/** @return Ratio corresponding to a given fractional ratio (+/- 0.01), or 0 */
+Ratio const *
+Ratio::from_ratio (float r)
+{
+       vector<Ratio const *>::iterator j = _ratios.begin ();
+       while (j != _ratios.end() && fabs ((*j)->ratio() - r) > 0.01) {
+               ++j;
+       }
+
+       if (j == _ratios.end ()) {
+               return 0;
+       }
+
+       return *j;
+}
+   
index 8b1a1fc716dc61d9175c6144e30f34ea27bdf39f..ab157a9bcb4a65404d1531973d02fbd61d39ec76 100644 (file)
@@ -52,6 +52,7 @@ public:
 
        static void setup_ratios ();
        static Ratio const * from_id (std::string i);
+       static Ratio const * from_ratio (float r);
        static std::vector<Ratio const *> all () {
                return _ratios;
        }
diff --git a/src/lib/safe_stringstream.cc b/src/lib/safe_stringstream.cc
new file mode 100644 (file)
index 0000000..01d5450
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <boost/thread/mutex.hpp>
+#include "safe_stringstream.h"
+
+boost::mutex SafeStringStream::_mutex;
diff --git a/src/lib/safe_stringstream.h b/src/lib/safe_stringstream.h
new file mode 100644 (file)
index 0000000..e455de9
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+    Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef DCPOMATIC_SAFE_STRINGSTREAM_H
+#define DCPOMATIC_SAFE_STRINGSTREAM_H
+
+#include <boost/thread/mutex.hpp>
+
+/* I've not been able to reproduce it, but there have been reports that DCP-o-matic crashes
+ * on OS X with two simultaneous backtraces that look like this:
+ *
+ * 0 libSystem.B.dylib  0x00007fff84ebe264 __numeric_load_locale + 125
+ * 1 libSystem.B.dylib  0x00007fff84e2aac4 loadlocale + 323
+ * 2 libstdc++.6.dylib  0x00007fff8976ba69 std::__convert_from_v(int* const&, char*, int, char const*, ...) + 199
+ * 3 libstdc++.6.dylib  0x00007fff8974e99b std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char,
+std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const + 199
+ * 4 libstdc++.6.dylib  0x00007fff8974ebc0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >
+>::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const + 28
+ * 5 libstdc++.6.dylib  0x00007fff897566a2 std::ostream& std::ostream::_M_insert<double>(double) + 178
+ * 6 libdcpomatic.dylib 0x0000000100331e21 StringPrivate::Composition& StringPrivate::Composition::arg<float>(float const&) + 33
+ *
+ * in two different threads.  I'm assuming that for some bizarre reason it is unsafe to use two separate stringstream
+ * objects in different threads on OS X.  This is a hack to work around it.
+ */
+
+class SafeStringStream
+{
+public:
+       SafeStringStream ()
+       {}
+       
+       SafeStringStream (std::string s)
+               : _stream (s)
+       {}
+       
+       template <class T>
+       std::ostream& operator<< (T val)
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               _stream << val;
+               return _stream;
+       }
+
+       template <class T>
+       std::istream& operator>> (T& val)
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               _stream >> val;
+               return _stream;
+       }
+
+       std::string str () const {
+               return _stream.str ();
+       }
+
+       void str (std::string const & s) {
+               _stream.str (s);
+       }
+
+       void imbue (std::locale const & loc)
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               _stream.imbue (loc);
+       }
+
+       void width (int w)
+       {
+               _stream.width (w);
+       }
+
+       void precision (int p)
+       {
+               _stream.precision (p);
+       }
+
+       bool good () const
+       {
+               return _stream.good ();
+       }
+
+       std::string getline ()
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               std::string s;
+               std::getline (_stream, s);
+               return s;
+       }
+
+       void setf (std::ios_base::fmtflags flags, std::ios_base::fmtflags mask)
+       {
+               _stream.setf (flags, mask);
+       }
+
+private:
+       static boost::mutex _mutex;
+       std::stringstream _stream;
+};
+
+#endif
index 63784081356e9eb0fc4d81ea97d551a7078e224d..67a1fb8026a68325b768a86fa1808dd258345490 100644 (file)
@@ -40,7 +40,6 @@
 #define LOG_GENERAL_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_GENERAL);
 
 using std::string;
-using std::stringstream;
 using std::min;
 using boost::shared_ptr;
 
@@ -112,12 +111,6 @@ SCPDCPJob::name () const
        return _("Copy DCP to TMS");
 }
 
-string
-SCPDCPJob::json_name () const
-{
-       return N_("scp_dcp");
-}
-
 void
 SCPDCPJob::run ()
 {
@@ -217,12 +210,11 @@ string
 SCPDCPJob::status () const
 {
        boost::mutex::scoped_lock lm (_status_mutex);
-       stringstream s;
-       s << Job::status ();
+       string s = Job::status ();
        if (!_status.empty ()) {
-               s << N_("; ") << _status;
+               s += N_("; ") + _status;
        }
-       return s.str ();
+       return s;
 }
 
 void
index e3960d73b512dac54d25124be28740d15dfd67cf..bdc83af187f85a0091d31e107d554ee9dd07ef4c 100644 (file)
@@ -29,7 +29,6 @@ public:
        SCPDCPJob (boost::shared_ptr<const Film>);
 
        std::string name () const;
-       std::string json_name () const;
        void run ();
        std::string status () const;
 
index 1dec2ffb001dc7ce77fdfd4d1c595e8646bb90c9..164dfe9875e4ec35a5578e8ff41f9132fe7eea7c 100644 (file)
@@ -52,12 +52,6 @@ SendKDMEmailJob::name () const
        return String::compose (_("Email KDMs for %1"), _film->name());
 }
 
-string
-SendKDMEmailJob::json_name () const
-{
-       return N_("send_kdm_email");
-}
-
 void
 SendKDMEmailJob::run ()
 {
index 8a8903040c06b573815fe2d3be9b999fa90c47b1..778d3927ac01d7a741c88804065dab4f5df00c21 100644 (file)
@@ -36,7 +36,6 @@ public:
                );
 
        std::string name () const;
-       std::string json_name () const;
        void run ();
 
 private:
index f1c6d6c44afd0e34d6eb3436a1a493042a6a52c8..9428ba611d70d2a96de10ef3793b348bce778aff 100644 (file)
@@ -24,7 +24,6 @@
 
 #include <string>
 #include <vector>
-#include <sstream>
 #include <iostream>
 #include <boost/algorithm/string.hpp>
 #include <boost/scoped_array.hpp>
@@ -38,6 +37,7 @@
 #include "config.h"
 #include "cross.h"
 #include "player_video_frame.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
@@ -47,7 +47,6 @@
 #define LOG_ERROR_NC(...)   _log->log (__VA_ARGS__, Log::TYPE_ERROR);
 
 using std::string;
-using std::stringstream;
 using std::multimap;
 using std::vector;
 using std::list;
@@ -82,9 +81,9 @@ Server::process (shared_ptr<Socket> socket, struct timeval& after_read, struct t
        scoped_array<char> buffer (new char[length]);
        socket->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
 
-       stringstream s (buffer.get());
+       string s (buffer.get());
        shared_ptr<cxml::Document> xml (new cxml::Document ("EncodingRequest"));
-       xml->read_stream (s);
+       xml->read_string (s);
        if (xml->number_child<int> ("Version") != SERVER_LINK_VERSION) {
                cerr << "Mismatched server/client versions\n";
                LOG_ERROR_NC ("Mismatched server/client versions");
@@ -154,7 +153,7 @@ Server::worker_thread ()
                        struct timeval end;
                        gettimeofday (&end, 0);
 
-                       stringstream message;
+                       SafeStringStream message;
                        message.precision (2);
                        message << fixed
                                << "Encoded frame " << frame << " from " << ip << ": "
@@ -246,14 +245,16 @@ Server::broadcast_received ()
                xmlpp::Document doc;
                xmlpp::Element* root = doc.create_root_node ("ServerAvailable");
                root->add_child("Threads")->add_child_text (raw_convert<string> (_worker_threads.size ()));
-               stringstream xml;
-               doc.write_to_stream (xml, "UTF-8");
+               string xml = doc.write_to_string ("UTF-8");
 
+               if (_verbose) {
+                       cout << "Offering services to master " << _broadcast.send_endpoint.address().to_string () << "\n";
+               }
                shared_ptr<Socket> socket (new Socket);
                try {
                        socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), Config::instance()->server_port_base() + 1));
-                       socket->write (xml.str().length() + 1);
-                       socket->write ((uint8_t *) xml.str().c_str(), xml.str().length() + 1);
+                       socket->write (xml.length() + 1);
+                       socket->write ((uint8_t *) xml.c_str(), xml.length() + 1);
                } catch (...) {
 
                }
index 65e0940a0a11aab9469f32247a0a58ba36e11ba3..a082f3babf939d6a0e240433d97db1bf43e0feb4 100644 (file)
@@ -27,7 +27,6 @@
 #include "ui_signaller.h"
 
 using std::string;
-using std::stringstream;
 using std::list;
 using std::vector;
 using std::cout;
@@ -103,24 +102,31 @@ void
 ServerFinder::listen_thread ()
 try
 {
+       using namespace boost::asio::ip;
+
+       boost::asio::io_service io_service;
+       tcp::acceptor acceptor (io_service, tcp::endpoint (tcp::v4(), Config::instance()->server_port_base() + 1));
+
        while (true) {
-               shared_ptr<Socket> sock (new Socket (60));
+               tcp::socket socket (io_service);
+               acceptor.accept (socket);
 
-               try {
-                       sock->accept (Config::instance()->server_port_base() + 1);
-               } catch (std::exception& e) {
-                       continue;
-               }
+               /* XXX: these reads should have timeouts, otherwise we will stop finding servers
+                  if one dies during this conversation
+               */
+
+               uint32_t length = 0;
+               boost::asio::read (socket, boost::asio::buffer (&length, sizeof (uint32_t)));
+               length = ntohl (length);
 
-               uint32_t length = sock->read_uint32 ();
                scoped_array<char> buffer (new char[length]);
-               sock->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
+               boost::asio::read (socket, boost::asio::buffer (reinterpret_cast<uint8_t*> (buffer.get ()), length));
                
-               stringstream s (buffer.get());
+               string s (buffer.get());
                shared_ptr<cxml::Document> xml (new cxml::Document ("ServerAvailable"));
-               xml->read_stream (s);
-
-               string const ip = sock->socket().remote_endpoint().address().to_string ();
+               xml->read_string (s);
+               
+               string const ip = socket.remote_endpoint().address().to_string ();
                if (!server_found (ip)) {
                        ServerDescription sd (ip, xml->number_child<int> ("Threads"));
                        _servers.push_back (sd);
index 3efba6fd5db219c38e6f93249d28155786020934..ba3bd0a772d489714a01bebd7c90d56ab1b063e6 100644 (file)
 #include "compose.hpp"
 #include "job.h"
 #include "util.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::cout;
 using boost::shared_ptr;
 using libdcp::raw_convert;
@@ -76,7 +76,7 @@ SndfileContent::information () const
                return "";
        }
        
-       stringstream s;
+       SafeStringStream s;
 
        s << String::compose (
                _("%1 channels, %2kHz, %3 samples"),
index a8183d3444c7c426f47fcbcc3d60b70548039f47..167524017a0a2232eca56ff880d0b943e9091dde 100644 (file)
@@ -9,7 +9,6 @@
 #include <iomanip>
 #include <ostream>
 #include <stdexcept>
-#include <sstream>
 
 #include "stack.hpp"
 
index 0d18861c455f69f2d2649730f93d898d0ed66463..03d4ccf2fa5ea57e07311975aa5309ef0dc5751f 100644 (file)
@@ -60,9 +60,9 @@ Subtitle::update (shared_ptr<const Film> film, libdcp::Size video_container_size
        in_rect.x += sc->subtitle_x_offset ();
        in_rect.y += sc->subtitle_y_offset ();
 
-       /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle_scale */
-       scaled_size.width = in_rect.width * video_container_size.width * sc->subtitle_scale ();
-       scaled_size.height = in_rect.height * video_container_size.height * sc->subtitle_scale ();
+       /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle scale */
+       scaled_size.width = in_rect.width * video_container_size.width * sc->subtitle_x_scale ();
+       scaled_size.height = in_rect.height * video_container_size.height * sc->subtitle_y_scale ();
 
        /* Then we need a corrective translation, consisting of two parts:
         *
@@ -70,14 +70,14 @@ Subtitle::update (shared_ptr<const Film> film, libdcp::Size video_container_size
         *     rect.x * _video_container_size.width and rect.y * _video_container_size.height.
         *
         * 2.  that to shift the origin of the scale by subtitle_scale to the centre of the subtitle; this will be
-        *     (width_before_subtitle_scale * (1 - subtitle_scale) / 2) and
-        *     (height_before_subtitle_scale * (1 - subtitle_scale) / 2).
+        *     (width_before_subtitle_scale * (1 - subtitle_x_scale) / 2) and
+        *     (height_before_subtitle_scale * (1 - subtitle_y_scale) / 2).
         *
         * Combining these two translations gives these expressions.
         */
        
-       _out_position.x = rint (video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_scale ()) / 2)));
-       _out_position.y = rint (video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_scale ()) / 2)));
+       _out_position.x = rint (video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_x_scale ()) / 2)));
+       _out_position.y = rint (video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_y_scale ()) / 2)));
        
        _out_image = _in_image->scale (
                scaled_size,
index 0abb7d491ec57ffff13e2d483fc67e282fd473fb..3702eef4152c484ee3b044804ebdc86aabdaae91 100644 (file)
@@ -33,13 +33,15 @@ using libdcp::raw_convert;
 
 int const SubtitleContentProperty::SUBTITLE_X_OFFSET = 500;
 int const SubtitleContentProperty::SUBTITLE_Y_OFFSET = 501;
-int const SubtitleContentProperty::SUBTITLE_SCALE = 502;
+int const SubtitleContentProperty::SUBTITLE_X_SCALE = 502;
+int const SubtitleContentProperty::SUBTITLE_Y_SCALE = 503;
 
 SubtitleContent::SubtitleContent (shared_ptr<const Film> f, boost::filesystem::path p)
        : Content (f, p)
        , _subtitle_x_offset (0)
        , _subtitle_y_offset (0)
-       , _subtitle_scale (1)
+       , _subtitle_x_scale (1)
+       , _subtitle_y_scale (1)
 {
 
 }
@@ -48,7 +50,8 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
        : Content (f, node)
        , _subtitle_x_offset (0)
        , _subtitle_y_offset (0)
-       , _subtitle_scale (1)
+       , _subtitle_x_scale (1)
+       , _subtitle_y_scale (1)
 {
        if (version >= 7) {
                _subtitle_x_offset = node->number_child<float> ("SubtitleXOffset");
@@ -56,8 +59,13 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
        } else {
                _subtitle_y_offset = node->number_child<float> ("SubtitleOffset");
        }
-       
-       _subtitle_scale = node->number_child<float> ("SubtitleScale");
+
+       if (version >= 10) {
+               _subtitle_x_scale = node->number_child<float> ("SubtitleXScale");
+               _subtitle_y_scale = node->number_child<float> ("SubtitleYScale");
+       } else {
+               _subtitle_x_scale = _subtitle_y_scale = node->number_child<float> ("SubtitleScale");
+       }
 }
 
 SubtitleContent::SubtitleContent (shared_ptr<const Film> f, vector<shared_ptr<Content> > c)
@@ -77,14 +85,19 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, vector<shared_ptr<Co
                        throw JoinError (_("Content to be joined must have the same subtitle Y offset."));
                }
 
-               if (sc->subtitle_scale() != ref->subtitle_scale()) {
-                       throw JoinError (_("Content to be joined must have the same subtitle scale."));
+               if (sc->subtitle_x_scale() != ref->subtitle_x_scale()) {
+                       throw JoinError (_("Content to be joined must have the same subtitle X scale."));
+               }
+
+               if (sc->subtitle_y_scale() != ref->subtitle_y_scale()) {
+                       throw JoinError (_("Content to be joined must have the same subtitle Y scale."));
                }
        }
 
        _subtitle_x_offset = ref->subtitle_x_offset ();
        _subtitle_y_offset = ref->subtitle_y_offset ();
-       _subtitle_scale = ref->subtitle_scale ();
+       _subtitle_x_scale = ref->subtitle_x_scale ();
+       _subtitle_y_scale = ref->subtitle_y_scale ();
 }
 
 void
@@ -92,7 +105,8 @@ SubtitleContent::as_xml (xmlpp::Node* root) const
 {
        root->add_child("SubtitleXOffset")->add_child_text (raw_convert<string> (_subtitle_x_offset));
        root->add_child("SubtitleYOffset")->add_child_text (raw_convert<string> (_subtitle_y_offset));
-       root->add_child("SubtitleScale")->add_child_text (raw_convert<string> (_subtitle_scale));
+       root->add_child("SubtitleXScale")->add_child_text (raw_convert<string> (_subtitle_x_scale));
+       root->add_child("SubtitleYScale")->add_child_text (raw_convert<string> (_subtitle_y_scale));
 }
 
 void
@@ -116,11 +130,21 @@ SubtitleContent::set_subtitle_y_offset (double o)
 }
 
 void
-SubtitleContent::set_subtitle_scale (double s)
+SubtitleContent::set_subtitle_x_scale (double s)
+{
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               _subtitle_x_scale = s;
+       }
+       signal_changed (SubtitleContentProperty::SUBTITLE_X_SCALE);
+}
+
+void
+SubtitleContent::set_subtitle_y_scale (double s)
 {
        {
                boost::mutex::scoped_lock lm (_mutex);
-               _subtitle_scale = s;
+               _subtitle_y_scale = s;
        }
-       signal_changed (SubtitleContentProperty::SUBTITLE_SCALE);
+       signal_changed (SubtitleContentProperty::SUBTITLE_Y_SCALE);
 }
index 38863768889adb1cbea41dd019afc6fad1517ea0..329368e4432f92ddd698e4f294d8128474bbbbf2 100644 (file)
@@ -27,7 +27,8 @@ class SubtitleContentProperty
 public:
        static int const SUBTITLE_X_OFFSET;
        static int const SUBTITLE_Y_OFFSET;
-       static int const SUBTITLE_SCALE;
+       static int const SUBTITLE_X_SCALE;
+       static int const SUBTITLE_Y_SCALE;
 };
 
 class SubtitleContent : public virtual Content
@@ -41,7 +42,8 @@ public:
 
        void set_subtitle_x_offset (double);
        void set_subtitle_y_offset (double);
-       void set_subtitle_scale (double);
+       void set_subtitle_x_scale (double);
+       void set_subtitle_y_scale (double);
 
        double subtitle_x_offset () const {
                boost::mutex::scoped_lock lm (_mutex);
@@ -53,9 +55,14 @@ public:
                return _subtitle_y_offset;
        }
 
-       double subtitle_scale () const {
+       double subtitle_x_scale () const {
                boost::mutex::scoped_lock lm (_mutex);
-               return _subtitle_scale;
+               return _subtitle_x_scale;
+       }
+
+       double subtitle_y_scale () const {
+               boost::mutex::scoped_lock lm (_mutex);
+               return _subtitle_y_scale;
        }
        
 private:
@@ -69,8 +76,10 @@ private:
         *  +ve is further down the frame, -ve is further up.
         */
        double _subtitle_y_offset;
-       /** scale factor to apply to subtitles */
-       double _subtitle_scale;
+       /** x scale factor to apply to subtitles */
+       double _subtitle_x_scale;
+       /** y scale factor to apply to subtitles */
+       double _subtitle_y_scale;
 };
 
 #endif
index ef15f9f5e9865968ecee6f6b87e0437e672d1e66..831c74b3b244d9a78b4369eb3d089852c74c9174 100644 (file)
@@ -27,6 +27,7 @@
 #include "film.h"
 #include "transcoder.h"
 #include "log.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
@@ -34,7 +35,6 @@
 #define LOG_ERROR_NC(...)   _film->log()->log (__VA_ARGS__, Log::TYPE_ERROR);
 
 using std::string;
-using std::stringstream;
 using std::fixed;
 using std::setprecision;
 using boost::shared_ptr;
@@ -53,12 +53,6 @@ TranscodeJob::name () const
        return String::compose (_("Transcode %1"), _film->name());
 }
 
-string
-TranscodeJob::json_name () const
-{
-       return N_("transcode");
-}
-
 void
 TranscodeJob::run ()
 {
@@ -95,7 +89,7 @@ TranscodeJob::status () const
                return Job::status ();
        }
 
-       stringstream s;
+       SafeStringStream s;
 
        s << Job::status ();
 
index 6e3c1ead9314cc5af7bb2877f208c38ae4358fa3..9128206d29dc9c9e42460cafecfa4748f0a1c0db 100644 (file)
@@ -35,7 +35,6 @@ public:
        TranscodeJob (boost::shared_ptr<const Film> f);
        
        std::string name () const;
-       std::string json_name () const;
        void run ();
        std::string status () const;
 
index 1d62547f61f79f5019f506b3a5b81712bc49167b..ee4d230d407e566114ae57b491700196c19d21c5 100644 (file)
@@ -54,8 +54,15 @@ public:
                }
        }
 
+       /* Do something next time the UI is idle */
+       template <typename T>
+       void when_idle (T f) {
+               _service.post (f);
+       }
+
        /** Call this in the UI when it is idle */
        size_t ui_idle () {
+               /* This executes any functors that have been post()ed to _service */
                return _service.poll ();
        }
 
index af3e46f0e7d14ea1abb8d64c4c4e467143588547..7bec061e9292e15d044c360e8c13d60dc6a0faab 100644 (file)
@@ -18,7 +18,6 @@
 */
 
 #include <string>
-#include <sstream>
 #include <boost/algorithm/string.hpp>
 #include <curl/curl.h>
 #include <libcxml/cxml.h>
 #include "update.h"
 #include "version.h"
 #include "ui_signaller.h"
+#include "safe_stringstream.h"
 
 #define BUFFER_SIZE 1024
 
 using std::cout;
 using std::min;
 using std::string;
-using std::stringstream;
 using libdcp::raw_convert;
 
 UpdateChecker* UpdateChecker::_instance = 0;
@@ -103,10 +102,9 @@ UpdateChecker::thread ()
                        }
                        
                        _buffer[_offset] = '\0';
-                       stringstream s;
-                       s << _buffer;
+                       string s (_buffer);
                        cxml::Document doc ("Update");
-                       doc.read_stream (s);
+                       doc.read_string (s);
                        
                        {
                                boost::mutex::scoped_lock lm (_data_mutex);
index 86046bcf8cf8a7ff1a2657b87ec07584bb850d17..290dd20ef1f7d186f7844caa9222c175058a14e4 100644 (file)
@@ -22,7 +22,6 @@
  *  @brief Some utility functions and classes.
  */
 
-#include <sstream>
 #include <iomanip>
 #include <iostream>
 #include <fstream>
@@ -70,6 +69,7 @@ extern "C" {
 #include "cross.h"
 #include "video_content.h"
 #include "md5_digester.h"
+#include "safe_stringstream.h"
 #ifdef DCPOMATIC_WINDOWS
 #include "stack.hpp"
 #endif
@@ -77,7 +77,6 @@ extern "C" {
 #include "i18n.h"
 
 using std::string;
-using std::stringstream;
 using std::setfill;
 using std::ostream;
 using std::endl;
@@ -121,7 +120,7 @@ seconds_to_hms (int s)
        int h = m / 60;
        m -= (h * 60);
 
-       stringstream hms;
+       SafeStringStream hms;
        hms << h << N_(":");
        hms.width (2);
        hms << std::setfill ('0') << m << N_(":");
@@ -142,26 +141,55 @@ seconds_to_approximate_hms (int s)
        int h = m / 60;
        m -= (h * 60);
 
-       stringstream ap;
-       
-       if (h > 0) {
-               if (m > 30) {
+       SafeStringStream ap;
+
+       bool const hours = h > 0;
+       bool const minutes = h < 10 && m > 0;
+       bool const seconds = m < 10 && s > 0;
+
+       if (hours) {
+               if (m > 30 && !minutes) {
                        ap << (h + 1) << N_(" ") << _("hours");
                } else {
+                       ap << h << N_(" ");
                        if (h == 1) {
-                               ap << N_("1 ") << _("hour");
+                               ap << _("hour");
                        } else {
-                               ap << h << N_(" ") << _("hours");
+                               ap << _("hours");
                        }
                }
-       } else if (m > 0) {
-               if (m == 1) {
-                       ap << N_("1 ") << _("minute");
+
+               if (minutes | seconds) {
+                       ap << N_(" ");
+               }
+       }
+
+       if (minutes) {
+               /* Minutes */
+               if (s > 30 && !seconds) {
+                       ap << (m + 1) << N_(" ") << _("minutes");
                } else {
-                       ap << m << N_(" ") << _("minutes");
+                       ap << m << N_(" ");
+                       if (m == 1) {
+                               ap << _("minute");
+                       } else {
+                               ap << _("minutes");
+                       }
+               }
+
+               if (seconds) {
+                       ap << N_(" ");
+               }
+       }
+
+       if (seconds) {
+               /* Seconds */
+               ap << s << N_(" ");
+               if (s == 1) {
+                       ap << _("second");
+               } else {
+                       ap << _("seconds");
                }
-       } else {
-               ap << s << N_(" ") << _("seconds");
        }
 
        return ap.str ();
@@ -232,7 +260,7 @@ stacktrace (ostream& out, int levels)
 static string
 ffmpeg_version_to_string (int v)
 {
-       stringstream s;
+       SafeStringStream s;
        s << ((v & 0xff0000) >> 16) << N_(".") << ((v & 0xff00) >> 8) << N_(".") << (v & 0xff);
        return s.str ();
 }
@@ -241,7 +269,7 @@ ffmpeg_version_to_string (int v)
 string
 dependency_version_summary ()
 {
-       stringstream s;
+       SafeStringStream s;
        s << N_("libopenjpeg ") << opj_version () << N_(", ")
          << N_("libavcodec ") << ffmpeg_version_to_string (avcodec_version()) << N_(", ")
          << N_("libavfilter ") << ffmpeg_version_to_string (avfilter_version()) << N_(", ")
@@ -369,35 +397,42 @@ mo_path ()
 }
 #endif
 
+#ifdef DCPOMATIC_OSX
+boost::filesystem::path
+mo_path ()
+{
+       return "DCP-o-matic.app/Contents/Resources";
+}
+#endif
+
 void
 dcpomatic_setup_gettext_i18n (string lang)
 {
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
        lang += ".UTF8";
 #endif
 
        if (!lang.empty ()) {
-               /* Override our environment language; this is essential on
-                  Windows.
+               /* Override our environment language.  Note that the caller must not
+                  free the string passed into putenv().
                */
-               char cmd[64];
-               snprintf (cmd, sizeof(cmd), "LANGUAGE=%s", lang.c_str ());
-               putenv (cmd);
-               snprintf (cmd, sizeof(cmd), "LANG=%s", lang.c_str ());
-               putenv (cmd);
-               snprintf (cmd, sizeof(cmd), "LC_ALL=%s", lang.c_str ());
-               putenv (cmd);
+               string s = String::compose ("LANGUAGE=%1", lang);
+               putenv (strdup (s.c_str ()));
+               s = String::compose ("LANG=%1", lang);
+               putenv (strdup (s.c_str ()));
+               s = String::compose ("LC_ALL=%1", lang);
+               putenv (strdup (s.c_str ()));
        }
 
        setlocale (LC_ALL, "");
        textdomain ("libdcpomatic");
 
-#ifdef DCPOMATIC_WINDOWS
+#if defined(DCPOMATIC_WINDOWS) || defined(DCPOMATIC_OSX)
        bindtextdomain ("libdcpomatic", mo_path().string().c_str());
        bind_textdomain_codeset ("libdcpomatic", "UTF8");
 #endif 
 
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
        bindtextdomain ("libdcpomatic", POSIX_LOCALE_PREFIX);
 #endif
 }
@@ -541,7 +576,7 @@ Socket::accept (int port)
        _acceptor->async_accept (_socket, boost::lambda::var(ec) = boost::lambda::_1);
        do {
                _io_service.run_one ();
-       } while (ec == boost::asio::error::would_block );
+       } while (ec == boost::asio::error::would_block);
 
        delete _acceptor;
        _acceptor = 0;
index 70bf495c682c42332ea22bf5294497c243ad5276..675c8d03e6304a42a56f4911e88eb4bdeeaa352d 100644 (file)
@@ -44,8 +44,8 @@ extern "C" {
 
 /** The maximum number of audio channels that we can have in a DCP */
 #define MAX_DCP_AUDIO_CHANNELS 12
-
 #define DCPOMATIC_HELLO "Boys, you gotta learn not to talk to nuns that way"
+#define HISTORY_SIZE 10
 
 namespace libdcp {
        class Signer;
index 676a694da6412bc1ba4625d23e4d533e76e88d33..13f2cf51676a9d10bb3b6acce245457d1dd2db66 100644 (file)
@@ -31,6 +31,7 @@
 #include "film.h"
 #include "exceptions.h"
 #include "frame_rate_change.h"
+#include "safe_stringstream.h"
 
 #include "i18n.h"
 
@@ -42,7 +43,6 @@ int const VideoContentProperty::VIDEO_SCALE     = 4;
 int const VideoContentProperty::COLOUR_CONVERSION = 5;
 
 using std::string;
-using std::stringstream;
 using std::setprecision;
 using std::cout;
 using std::vector;
@@ -53,14 +53,13 @@ using boost::optional;
 using boost::dynamic_pointer_cast;
 using libdcp::raw_convert;
 
-vector<VideoContentScale> VideoContentScale::_scales;
-
 VideoContent::VideoContent (shared_ptr<const Film> f)
        : Content (f)
        , _video_length (0)
+       , _original_video_frame_rate (0)
        , _video_frame_rate (0)
        , _video_frame_type (VIDEO_FRAME_TYPE_2D)
-       , _scale (Ratio::from_id ("185"))
+       , _scale (Config::instance()->default_scale ())
 {
        setup_default_colour_conversion ();
 }
@@ -68,9 +67,10 @@ VideoContent::VideoContent (shared_ptr<const Film> f)
 VideoContent::VideoContent (shared_ptr<const Film> f, Time s, VideoContent::Frame len)
        : Content (f, s)
        , _video_length (len)
+       , _original_video_frame_rate (0)
        , _video_frame_rate (0)
        , _video_frame_type (VIDEO_FRAME_TYPE_2D)
-       , _scale (Ratio::from_id ("185"))
+       , _scale (Config::instance()->default_scale ())
 {
        setup_default_colour_conversion ();
 }
@@ -78,9 +78,10 @@ VideoContent::VideoContent (shared_ptr<const Film> f, Time s, VideoContent::Fram
 VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
        : Content (f, p)
        , _video_length (0)
+       , _original_video_frame_rate (0)
        , _video_frame_rate (0)
        , _video_frame_type (VIDEO_FRAME_TYPE_2D)
-       , _scale (Ratio::from_id ("185"))
+       , _scale (Config::instance()->default_scale ())
 {
        setup_default_colour_conversion ();
 }
@@ -92,6 +93,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, shared_ptr<const cxml::Nod
        _video_size.width = node->number_child<int> ("VideoWidth");
        _video_size.height = node->number_child<int> ("VideoHeight");
        _video_frame_rate = node->number_child<float> ("VideoFrameRate");
+       _original_video_frame_rate = node->optional_number_child<float> ("OriginalVideoFrameRate").get_value_or (_video_frame_rate);
        _video_frame_type = static_cast<VideoFrameType> (node->number_child<int> ("VideoFrameType"));
        _crop.left = node->number_child<int> ("LeftCrop");
        _crop.right = node->number_child<int> ("RightCrop");
@@ -148,6 +150,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, vector<shared_ptr<Content>
        }
 
        _video_size = ref->video_size ();
+       _original_video_frame_rate = ref->original_video_frame_rate ();
        _video_frame_rate = ref->video_frame_rate ();
        _video_frame_type = ref->video_frame_type ();
        _crop = ref->crop ();
@@ -163,6 +166,7 @@ VideoContent::as_xml (xmlpp::Node* node) const
        node->add_child("VideoWidth")->add_child_text (raw_convert<string> (_video_size.width));
        node->add_child("VideoHeight")->add_child_text (raw_convert<string> (_video_size.height));
        node->add_child("VideoFrameRate")->add_child_text (raw_convert<string> (_video_frame_rate));
+       node->add_child("OriginalVideoFrameRate")->add_child_text (raw_convert<string> (_original_video_frame_rate));
        node->add_child("VideoFrameType")->add_child_text (raw_convert<string> (static_cast<int> (_video_frame_type)));
        _crop.as_xml (node);
        _scale.as_xml (node->add_child("Scale"));
@@ -186,6 +190,7 @@ VideoContent::take_from_video_examiner (shared_ptr<VideoExaminer> d)
                boost::mutex::scoped_lock lm (_mutex);
                _video_size = vs;
                _video_frame_rate = vfr;
+               _original_video_frame_rate = vfr;
        }
        
        signal_changed (VideoContentProperty::VIDEO_SIZE);
@@ -200,7 +205,7 @@ VideoContent::information () const
                return "";
        }
        
-       stringstream s;
+       SafeStringStream s;
 
        s << String::compose (
                _("%1x%2 pixels (%3:1)"),
@@ -292,7 +297,7 @@ VideoContent::set_scale (VideoContentScale s)
 string
 VideoContent::identifier () const
 {
-       stringstream s;
+       SafeStringStream s;
        s << Content::identifier()
          << "_" << crop().left
          << "_" << crop().right
@@ -420,123 +425,3 @@ VideoContent::set_video_frame_rate (float r)
        signal_changed (VideoContentProperty::VIDEO_FRAME_RATE);
 }
 
-VideoContentScale::VideoContentScale (Ratio const * r)
-       : _ratio (r)
-       , _scale (true)
-{
-
-}
-
-VideoContentScale::VideoContentScale ()
-       : _ratio (0)
-       , _scale (false)
-{
-
-}
-
-VideoContentScale::VideoContentScale (bool scale)
-       : _ratio (0)
-       , _scale (scale)
-{
-
-}
-
-VideoContentScale::VideoContentScale (shared_ptr<cxml::Node> node)
-       : _ratio (0)
-       , _scale (true)
-{
-       optional<string> r = node->optional_string_child ("Ratio");
-       if (r) {
-               _ratio = Ratio::from_id (r.get ());
-       } else {
-               _scale = node->bool_child ("Scale");
-       }
-}
-
-void
-VideoContentScale::as_xml (xmlpp::Node* node) const
-{
-       if (_ratio) {
-               node->add_child("Ratio")->add_child_text (_ratio->id ());
-       } else {
-               node->add_child("Scale")->add_child_text (_scale ? "1" : "0");
-       }
-}
-
-string
-VideoContentScale::id () const
-{
-       stringstream s;
-       
-       if (_ratio) {
-               s << _ratio->id () << "_";
-       } else {
-               s << (_scale ? "S1" : "S0");
-       }
-       
-       return s.str ();
-}
-
-string
-VideoContentScale::name () const
-{
-       if (_ratio) {
-               return _ratio->nickname ();
-       }
-
-       if (_scale) {
-               return _("No stretch");
-       }
-
-       return _("No scale");
-}
-
-/** @param display_container Size of the container that we are displaying this content in.
- *  @param film_container The size of the film's image.
- */
-libdcp::Size
-VideoContentScale::size (shared_ptr<const VideoContent> c, libdcp::Size display_container, libdcp::Size film_container) const
-{
-       if (_ratio) {
-               return fit_ratio_within (_ratio->ratio (), display_container);
-       }
-
-       libdcp::Size const ac = c->video_size_after_crop ();
-
-       /* Force scale if the film_container is smaller than the content's image */
-       if (_scale || film_container.width < ac.width || film_container.height < ac.height) {
-               return fit_ratio_within (ac.ratio (), display_container);
-       }
-
-       /* Scale the image so that it will be in the right place in film_container, even if display_container is a
-          different size.
-       */
-       return libdcp::Size (
-               c->video_size().width  * float(display_container.width)  / film_container.width,
-               c->video_size().height * float(display_container.height) / film_container.height
-               );
-}
-
-void
-VideoContentScale::setup_scales ()
-{
-       vector<Ratio const *> ratios = Ratio::all ();
-       for (vector<Ratio const *>::const_iterator i = ratios.begin(); i != ratios.end(); ++i) {
-               _scales.push_back (VideoContentScale (*i));
-       }
-
-       _scales.push_back (VideoContentScale (true));
-       _scales.push_back (VideoContentScale (false));
-}
-
-bool
-operator== (VideoContentScale const & a, VideoContentScale const & b)
-{
-       return (a.ratio() == b.ratio() && a.scale() == b.scale());
-}
-
-bool
-operator!= (VideoContentScale const & a, VideoContentScale const & b)
-{
-       return (a.ratio() != b.ratio() || a.scale() != b.scale());
-}
index d0b907cb8bceb036ffbc02cf0a83190ce7cf4c1b..3a7b44306ca80890b10deca55c496127860ff352 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "content.h"
 #include "colour_conversion.h"
+#include "video_content_scale.h"
 
 class VideoExaminer;
 class Ratio;
@@ -37,44 +38,6 @@ public:
        static int const COLOUR_CONVERSION;
 };
 
-class VideoContentScale
-{
-public:
-       VideoContentScale ();
-       VideoContentScale (Ratio const *);
-       VideoContentScale (bool);
-       VideoContentScale (boost::shared_ptr<cxml::Node>);
-
-       libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size, libdcp::Size) const;
-       std::string id () const;
-       std::string name () const;
-       void as_xml (xmlpp::Node *) const;
-
-       Ratio const * ratio () const {
-               return _ratio;
-       }
-
-       bool scale () const {
-               return _scale;
-       }
-
-       static void setup_scales ();
-       static std::vector<VideoContentScale> all () {
-               return _scales;
-       }
-
-private:
-       /** a ratio to stretch the content to, or 0 for no stretch */
-       Ratio const * _ratio;
-       /** true if we want to scale the content */
-       bool _scale;
-
-       static std::vector<VideoContentScale> _scales;
-};
-
-bool operator== (VideoContentScale const & a, VideoContentScale const & b);
-bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
-
 class VideoContent : public virtual Content
 {
 public:
@@ -115,6 +78,11 @@ public:
                return _video_frame_rate;
        }
 
+       float original_video_frame_rate () const {
+               boost::mutex::scoped_lock lm (_mutex);
+               return _original_video_frame_rate;
+       }
+       
        void set_video_frame_type (VideoFrameType);
        void set_video_frame_rate (float);
 
@@ -179,6 +147,7 @@ protected:
        void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
 
        VideoContent::Frame _video_length;
+       float _original_video_frame_rate;
        float _video_frame_rate;
 
 private:
diff --git a/src/lib/video_content_scale.cc b/src/lib/video_content_scale.cc
new file mode 100644 (file)
index 0000000..e603582
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <boost/optional.hpp>
+#include <libxml++/libxml++.h>
+#include <libcxml/cxml.h>
+#include "video_content_scale.h"
+#include "ratio.h"
+#include "safe_stringstream.h"
+#include "util.h"
+
+#include "i18n.h"
+
+using std::vector;
+using std::string;
+using boost::shared_ptr;
+using boost::optional;
+
+vector<VideoContentScale> VideoContentScale::_scales;
+
+VideoContentScale::VideoContentScale (Ratio const * r)
+       : _ratio (r)
+       , _scale (true)
+{
+
+}
+
+VideoContentScale::VideoContentScale ()
+       : _ratio (0)
+       , _scale (false)
+{
+
+}
+
+VideoContentScale::VideoContentScale (bool scale)
+       : _ratio (0)
+       , _scale (scale)
+{
+
+}
+
+VideoContentScale::VideoContentScale (shared_ptr<cxml::Node> node)
+       : _ratio (0)
+       , _scale (true)
+{
+       optional<string> r = node->optional_string_child ("Ratio");
+       if (r) {
+               _ratio = Ratio::from_id (r.get ());
+       } else {
+               _scale = node->bool_child ("Scale");
+       }
+}
+
+void
+VideoContentScale::as_xml (xmlpp::Node* node) const
+{
+       if (_ratio) {
+               node->add_child("Ratio")->add_child_text (_ratio->id ());
+       } else {
+               node->add_child("Scale")->add_child_text (_scale ? "1" : "0");
+       }
+}
+
+string
+VideoContentScale::id () const
+{
+       SafeStringStream s;
+       
+       if (_ratio) {
+               s << _ratio->id ();
+       } else {
+               s << (_scale ? "S1" : "S0");
+       }
+       
+       return s.str ();
+}
+
+string
+VideoContentScale::name () const
+{
+       if (_ratio) {
+               return _ratio->nickname ();
+       }
+
+       if (_scale) {
+               return _("No stretch");
+       }
+
+       return _("No scale");
+}
+
+VideoContentScale
+VideoContentScale::from_id (string id)
+{
+       Ratio const * r = Ratio::from_id (id);
+       if (r) {
+               return VideoContentScale (r);
+       }
+
+       if (id == "S0") {
+               return VideoContentScale (false);
+       }
+
+       return VideoContentScale (true);
+}
+               
+/** @param display_container Size of the container that we are displaying this content in.
+ *  @param film_container The size of the film's image.
+ */
+libdcp::Size
+VideoContentScale::size (shared_ptr<const VideoContent> c, libdcp::Size display_container, libdcp::Size film_container) const
+{
+       if (_ratio) {
+               return fit_ratio_within (_ratio->ratio (), display_container);
+       }
+
+       libdcp::Size const ac = c->video_size_after_crop ();
+
+       /* Force scale if the film_container is smaller than the content's image */
+       if (_scale || film_container.width < ac.width || film_container.height < ac.height) {
+               return fit_ratio_within (ac.ratio (), display_container);
+       }
+
+       /* Scale the image so that it will be in the right place in film_container, even if display_container is a
+          different size.
+       */
+       return libdcp::Size (
+               c->video_size().width  * float(display_container.width)  / film_container.width,
+               c->video_size().height * float(display_container.height) / film_container.height
+               );
+}
+
+void
+VideoContentScale::setup_scales ()
+{
+       vector<Ratio const *> ratios = Ratio::all ();
+       for (vector<Ratio const *>::const_iterator i = ratios.begin(); i != ratios.end(); ++i) {
+               _scales.push_back (VideoContentScale (*i));
+       }
+
+       _scales.push_back (VideoContentScale (true));
+       _scales.push_back (VideoContentScale (false));
+}
+
+bool
+operator== (VideoContentScale const & a, VideoContentScale const & b)
+{
+       return (a.ratio() == b.ratio() && a.scale() == b.scale());
+}
+
+bool
+operator!= (VideoContentScale const & a, VideoContentScale const & b)
+{
+       return (a.ratio() != b.ratio() || a.scale() != b.scale());
+}
diff --git a/src/lib/video_content_scale.h b/src/lib/video_content_scale.h
new file mode 100644 (file)
index 0000000..87dd2f1
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef DCPOMATIC_VIDEO_CONTENT_SCALE_H
+#define DCPOMATIC_VIDEO_CONTENT_SCALE_H
+
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <libdcp/util.h>
+
+namespace cxml {
+       class Node;
+}
+
+namespace xmlpp {
+       class Node;
+}
+
+class Ratio;
+class VideoContent;
+
+class VideoContentScale
+{
+public:
+       VideoContentScale ();
+       VideoContentScale (Ratio const *);
+       VideoContentScale (bool);
+       VideoContentScale (boost::shared_ptr<cxml::Node>);
+
+       libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size, libdcp::Size) const;
+       std::string id () const;
+       std::string name () const;
+       void as_xml (xmlpp::Node *) const;
+
+       Ratio const * ratio () const {
+               return _ratio;
+       }
+
+       bool scale () const {
+               return _scale;
+       }
+
+       static void setup_scales ();
+       static std::vector<VideoContentScale> all () {
+               return _scales;
+       }
+       static VideoContentScale from_id (std::string id);
+
+private:
+       /** a ratio to stretch the content to, or 0 for no stretch */
+       Ratio const * _ratio;
+       /** true if we want to scale the content */
+       bool _scale;
+
+       static std::vector<VideoContentScale> _scales;
+};
+
+bool operator== (VideoContentScale const & a, VideoContentScale const & b);
+bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
+
+#endif
index 66ddb58f7e901e0c32a14aa3f5414739cc8c1c68..5af1aea1e1d8f15ea25c27017f60e9817cb55c9e 100644 (file)
 #include "job.h"
 #include "cross.h"
 #include "md5_digester.h"
+#include "version.h"
 
 #include "i18n.h"
 
 #define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
 #define LOG_TIMING(...) _film->log()->microsecond_log (String::compose (__VA_ARGS__), Log::TYPE_TIMING);
 #define LOG_WARNING_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_WARNING);
+#define LOG_ERROR(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_ERROR);
 
 /* OS X strikes again */
 #undef set_key
@@ -53,7 +55,6 @@ using std::pair;
 using std::string;
 using std::list;
 using std::cout;
-using std::stringstream;
 using boost::shared_ptr;
 using boost::weak_ptr;
 
@@ -412,9 +413,12 @@ Writer::finish ()
        boost::system::error_code ec;
        boost::filesystem::create_hard_link (video_from, video_to, ec);
        if (ec) {
-               /* hard link failed; copy instead */
-               boost::filesystem::copy_file (video_from, video_to);
-               LOG_WARNING_NC ("Hard-link failed; fell back to copying");
+               LOG_WARNING_NC ("Hard-link failed; copying instead");
+               boost::filesystem::copy_file (video_from, video_to, ec);
+               if (ec) {
+                       LOG_ERROR ("Failed to copy video file from %1 to %2 (%3)", video_from.string(), video_to.string(), ec.message ());
+                       throw FileError (ec.message(), video_from);
+               }
        }
 
        /* And update the asset */
@@ -472,7 +476,9 @@ Writer::finish ()
                _sound_asset->compute_digest (boost::bind (&Job::set_progress, job.get(), _1, false));
        }
 
-       libdcp::XMLMetadata meta = Config::instance()->dcp_metadata ();
+       libdcp::XMLMetadata meta;
+       meta.issuer = Config::instance()->dcp_issuer ();
+       meta.creator = String::compose ("DCP-o-matic %1 %2", dcpomatic_version, dcpomatic_git_commit);
        meta.set_issue_date_now ();
        dcp.write_xml (_film->interop (), meta, _film->is_signed() ? make_signer () : shared_ptr<const libdcp::Signer> ());
 
index 9333687769fe1acd1ade6bbffd4e3adf4318092d..6c1da1772e696276161de2d0f9d7385bd68bf50d 100644 (file)
@@ -40,7 +40,6 @@ sources = """
           job.cc
           job_manager.cc
           kdm.cc
-          json_server.cc
           log.cc
           md5_digester.cc
           piece.cc
@@ -49,6 +48,7 @@ sources = """
           playlist.cc
           ratio.cc
           resampler.cc
+          safe_stringstream.cc
           scp_dcp_job.cc
           scaler.cc
           send_kdm_email_job.cc
@@ -68,6 +68,7 @@ sources = """
           update.cc
           util.cc
           video_content.cc
+          video_content_scale.cc
           video_decoder.cc
           writer.cc
           """
@@ -83,8 +84,8 @@ def build(bld):
     obj.uselib = """
                  AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE 
                  BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2
-                 SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XML++
-                 CURL ZIP QUICKMAIL
+                 SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XMLPP
+                 CURL ZIP QUICKMAIL XMLSEC
                  """
 
     if bld.env.TARGET_OSX:
@@ -96,7 +97,7 @@ def build(bld):
         obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY SHLWAPI MSWSOCK BOOST_LOCALE'
         obj.source += ' stack.cpp'
     if bld.env.BUILD_STATIC:
-        obj.uselib += ' XML++'
+        obj.uselib += ' XMLPP'
 
     obj.target = 'dcpomatic'
 
index aeb62a44e5f2cfd2b7cf5c92511fd2bec83b69a8..fa89a4871e77d071940bacb8494b29dda26311d4 100644 (file)
@@ -63,8 +63,8 @@
 
 using std::cout;
 using std::string;
+using std::vector;
 using std::wstring;
-using std::stringstream;
 using std::map;
 using std::make_pair;
 using std::list;
@@ -72,22 +72,16 @@ using std::exception;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
 
-static shared_ptr<Film> film;
-static std::string film_to_load;
-static std::string film_to_create;
-static std::string content_to_add;
-static wxMenu* jobs_menu = 0;
-
 // #define DCPOMATIC_WINDOWS_CONSOLE 1
 
 class FilmChangedDialog
 {
 public:
-       FilmChangedDialog ()
+       FilmChangedDialog (string name)
        {
                _dialog = new wxMessageDialog (
                        0,
-                       wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (film->name ()).data()),
+                       wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (name).data()),
                        _("Film changed"),
                        wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
                        );
@@ -110,51 +104,6 @@ private:
        wxMessageDialog* _dialog;
 };
 
-
-static void
-maybe_save_then_delete_film ()
-{
-       if (!film) {
-               return;
-       }
-                       
-       if (film->dirty ()) {
-               FilmChangedDialog d;
-               switch (d.run ()) {
-               case wxID_NO:
-                       break;
-               case wxID_YES:
-                       film->write_metadata ();
-                       break;
-               }
-       }
-       
-       film.reset ();
-}
-
-static void
-check_film_state_version (int v)
-{
-       if (v == 4) {
-               error_dialog (
-                       0,
-                       _("This film was created with an old version of DVD-o-matic and may not load correctly "
-                         "in this version.  Please check the film's settings carefully.")
-                       );
-       }
-}
-
-static void
-load_film (boost::filesystem::path file)
-{
-       film.reset (new Film (file));
-       list<string> const notes = film->read_metadata ();
-       check_film_state_version (film->state_version ());
-       for (list<string>::const_iterator i = notes.begin(); i != notes.end(); ++i) {
-               error_dialog (0, std_to_wx (*i));
-       }
-}
-
 #define ALWAYS                       0x0
 #define NEEDS_FILM                   0x1
 #define NOT_DURING_DCP_CREATION      0x2
@@ -163,19 +112,14 @@ load_film (boost::filesystem::path file)
 
 map<wxMenuItem*, int> menu_items;
        
-static void
-add_item (wxMenu* menu, wxString text, int id, int sens)
-{
-       wxMenuItem* item = menu->Append (id, text);
-       menu_items.insert (make_pair (item, sens));
-}
-
 enum {
        ID_file_new = 1,
        ID_file_open,
        ID_file_save,
        ID_file_properties,
-       ID_content_scale_to_fit_width,
+       ID_file_history,
+       /* Allow spare IDs after _history for the recent files list */
+       ID_content_scale_to_fit_width = 100,
        ID_content_scale_to_fit_height,
        ID_jobs_make_dcp,
        ID_jobs_make_kdms,
@@ -183,69 +127,11 @@ enum {
        ID_jobs_show_dcp,
        ID_tools_hints,
        ID_tools_encoding_servers,
-       ID_tools_check_for_updates
+       ID_tools_check_for_updates,
+       /* IDs for shortcuts (with no associated menu item) */
+       ID_add_file
 };
 
-static void
-setup_menu (wxMenuBar* m)
-{
-       wxMenu* file = new wxMenu;
-       add_item (file, _("New..."), ID_file_new, ALWAYS);
-       add_item (file, _("&Open..."), ID_file_open, ALWAYS);
-       file->AppendSeparator ();
-       add_item (file, _("&Save"), ID_file_save, NEEDS_FILM);
-       file->AppendSeparator ();
-       add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM);
-#ifndef __WXOSX__      
-       file->AppendSeparator ();
-#endif
-
-#ifdef __WXOSX__       
-       add_item (file, _("&Exit"), wxID_EXIT, ALWAYS);
-#else
-       add_item (file, _("&Quit"), wxID_EXIT, ALWAYS);
-#endif 
-       
-
-#ifdef __WXOSX__       
-       add_item (file, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
-#else
-       wxMenu* edit = new wxMenu;
-       add_item (edit, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
-#endif
-
-       wxMenu* content = new wxMenu;
-       add_item (content, _("Scale to fit &width"), ID_content_scale_to_fit_width, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
-       add_item (content, _("Scale to fit &height"), ID_content_scale_to_fit_height, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
-
-       jobs_menu = new wxMenu;
-       add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION);
-       add_item (jobs_menu, _("Make &KDMs..."), ID_jobs_make_kdms, NEEDS_FILM);
-       add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
-       add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
-
-       wxMenu* tools = new wxMenu;
-       add_item (tools, _("Hints..."), ID_tools_hints, 0);
-       add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0);
-       add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0);
-
-       wxMenu* help = new wxMenu;
-#ifdef __WXOSX__       
-       add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
-#else  
-       add_item (help, _("About"), wxID_ABOUT, ALWAYS);
-#endif 
-
-       m->Append (file, _("&File"));
-#ifndef __WXOSX__      
-       m->Append (edit, _("&Edit"));
-#endif
-       m->Append (content, _("&Content"));
-       m->Append (jobs_menu, _("&Jobs"));
-       m->Append (tools, _("&Tools"));
-       m->Append (help, _("&Help"));
-}
-
 class Frame : public wxFrame
 {
 public:
@@ -254,6 +140,10 @@ public:
                , _hints_dialog (0)
                , _servers_list_dialog (0)
                , _config_dialog (0)
+               , _file_menu (0)
+               , _history_items (0)
+               , _history_position (0)
+               , _history_separator (0)
        {
 #if defined(DCPOMATIC_WINDOWS) && defined(DCPOMATIC_WINDOWS_CONSOLE)
                 AllocConsole();
@@ -275,10 +165,14 @@ public:
                setup_menu (bar);
                SetMenuBar (bar);
 
+               _config_changed_connection = Config::instance()->Changed.connect (boost::bind (&Frame::config_changed, this));
+               config_changed ();
+
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_new, this),                ID_file_new);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_open, this),               ID_file_open);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_save, this),               ID_file_save);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_properties, this),         ID_file_properties);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_history, this, _1),        ID_file_history, ID_file_history + HISTORY_SIZE);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_exit, this),               wxID_EXIT);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::edit_preferences, this),        wxID_PREFERENCES);
                Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::content_scale_to_fit_width, this), ID_content_scale_to_fit_width);
@@ -294,13 +188,19 @@ public:
 
                Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
 
+               wxAcceleratorEntry accel[1];
+               accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file);
+               Bind (wxEVT_MENU, boost::bind (&FilmEditor::content_add_file_clicked, _film_editor), ID_add_file);
+               wxAcceleratorTable accel_table (1, accel);
+               SetAcceleratorTable (accel_table);
+
                /* Use a panel as the only child of the Frame so that we avoid
                   the dark-grey background on Windows.
                */
                wxPanel* overall_panel = new wxPanel (this, wxID_ANY);
 
-               _film_editor = new FilmEditor (film, overall_panel);
-               _film_viewer = new FilmViewer (film, overall_panel);
+               _film_editor = new FilmEditor (overall_panel);
+               _film_viewer = new FilmViewer (overall_panel);
                JobManagerView* job_manager_view = new JobManagerView (overall_panel, static_cast<JobManagerView::Buttons> (0));
 
                wxBoxSizer* right_sizer = new wxBoxSizer (wxVERTICAL);
@@ -314,36 +214,72 @@ public:
                set_menu_sensitivity ();
 
                _film_editor->FileChanged.connect (bind (&Frame::file_changed, this, _1));
-               if (film) {
-                       file_changed (film->directory ());
-               } else {
-                       file_changed ("");
-               }
+               file_changed ("");
 
                JobManager::instance()->ActiveJobsChanged.connect (boost::bind (&Frame::set_menu_sensitivity, this));
 
-               set_film ();
                overall_panel->SetSizer (main_sizer);
        }
 
-private:
+       void new_film (boost::filesystem::path path)
+       {
+               shared_ptr<Film> film (new Film (path));
+               film->write_metadata ();
+               film->set_name (path.filename().generic_string());
+               set_film (film);
+       }
+
+       void load_film (boost::filesystem::path file)
+       try
+       {
+               maybe_save_then_delete_film ();
+               
+               shared_ptr<Film> film (new Film (file));
+               list<string> const notes = film->read_metadata ();
+
+               if (film->state_version() == 4) {
+                       error_dialog (
+                               0,
+                               _("This film was created with an old version of DVD-o-matic and may not load correctly "
+                                 "in this version.  Please check the film's settings carefully.")
+                               );
+               }
+               
+               for (list<string>::const_iterator i = notes.begin(); i != notes.end(); ++i) {
+                       error_dialog (0, std_to_wx (*i));
+               }
+               
+               set_film (film);
+       }
+       catch (std::exception& e) {
+               wxString p = std_to_wx (file.string ());
+               wxCharBuffer b = p.ToUTF8 ();
+               error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data()));
+       }
 
-       void set_film ()
+       void set_film (shared_ptr<Film> film)
        {
-               _film_viewer->set_film (film);
-               _film_editor->set_film (film);
+               _film = film;
+               _film_viewer->set_film (_film);
+               _film_editor->set_film (_film);
                set_menu_sensitivity ();
+               Config::instance()->add_to_history (_film->directory ());
        }
 
+       shared_ptr<Film> film () const {
+               return _film;
+       }
+       
+private:
+
        void file_changed (boost::filesystem::path f)
        {
-               stringstream s;
-               s << wx_to_std (_("DCP-o-matic"));
+               string s = wx_to_std (_("DCP-o-matic"));
                if (!f.empty ()) {
-                       s << " - " << f.string ();
+                       s += " - " + f.string ();
                }
                
-               SetTitle (std_to_wx (s.str()));
+               SetTitle (std_to_wx (s));
        }
        
        void file_new ()
@@ -373,10 +309,7 @@ private:
                        }
                        
                        maybe_save_then_delete_film ();
-                       film.reset (new Film (d->get_path ()));
-                       film->write_metadata ();
-                       film->set_name (boost::filesystem::path (d->get_path()).filename().generic_string());
-                       set_film ();
+                       new_film (d->get_path ());
                }
                
                d->Destroy ();
@@ -402,15 +335,7 @@ private:
                }
                        
                if (r == wxID_OK) {
-                       maybe_save_then_delete_film ();
-                       try {
-                               load_film (wx_to_std (c->GetPath ()));
-                               set_film ();
-                       } catch (std::exception& e) {
-                               wxString p = c->GetPath ();
-                               wxCharBuffer b = p.ToUTF8 ();
-                               error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data()));
-                       }
+                       load_film (wx_to_std (c->GetPath ()));
                }
 
                c->Destroy ();
@@ -418,15 +343,24 @@ private:
 
        void file_save ()
        {
-               film->write_metadata ();
+               _film->write_metadata ();
        }
 
        void file_properties ()
        {
-               PropertiesDialog* d = new PropertiesDialog (this, film);
+               PropertiesDialog* d = new PropertiesDialog (this, _film);
                d->ShowModal ();
                d->Destroy ();
        }
+
+       void file_history (wxCommandEvent& event)
+       {
+               vector<boost::filesystem::path> history = Config::instance()->history ();
+               int n = event.GetId() - ID_file_history;
+               if (n >= 0 && n < static_cast<int> (history.size ())) {
+                       load_film (history[n]);
+               }
+       }
        
        void file_exit ()
        {
@@ -447,22 +381,22 @@ private:
                double required;
                double available;
 
-               if (!film->should_be_enough_disk_space (required, available)) {
+               if (!_film->should_be_enough_disk_space (required, available)) {
                        if (!confirm_dialog (this, wxString::Format (_("The DCP for this film will take up about %.1f Gb, and the disk that you are using only has %.1f Gb available.  Do you want to continue anyway?"), required, available))) {
                                return;
                        }
                }
                
-               JobWrapper::make_dcp (this, film);
+               JobWrapper::make_dcp (this, _film);
        }
 
        void jobs_make_kdms ()
        {
-               if (!film) {
+               if (!_film) {
                        return;
                }
                
-               KDMDialog* d = new KDMDialog (this, film);
+               KDMDialog* d = new KDMDialog (this, _film);
                if (d->ShowModal () != wxID_OK) {
                        d->Destroy ();
                        return;
@@ -470,10 +404,10 @@ private:
 
                try {
                        if (d->write_to ()) {
-                               write_kdm_files (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation (), d->directory ());
+                               write_kdm_files (_film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation (), d->directory ());
                        } else {
                                JobManager::instance()->add (
-                                       shared_ptr<Job> (new SendKDMEmailJob (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation ()))
+                                       shared_ptr<Job> (new SendKDMEmailJob (_film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation ()))
                                        );
                        }
                } catch (libdcp::NotEncryptedError& e) {
@@ -505,27 +439,27 @@ private:
        
        void jobs_send_dcp_to_tms ()
        {
-               film->send_dcp_to_tms ();
+               _film->send_dcp_to_tms ();
        }
 
        void jobs_show_dcp ()
        {
 #ifdef __WXMSW__
-               string d = film->directory().string ();
+               string d = _film->directory().string ();
                wstring w;
                w.assign (d.begin(), d.end());
                ShellExecute (0, L"open", w.c_str(), 0, 0, SW_SHOWDEFAULT);
 #else
                int r = system ("which nautilus");
                if (WEXITSTATUS (r) == 0) {
-                       r = system (string ("nautilus " + film->directory().string()).c_str ());
+                       r = system (string ("nautilus " + _film->directory().string()).c_str ());
                        if (WEXITSTATUS (r)) {
                                error_dialog (this, _("Could not show DCP (could not run nautilus)"));
                        }
                } else {
                        int r = system ("which konqueror");
                        if (WEXITSTATUS (r) == 0) {
-                               r = system (string ("konqueror " + film->directory().string()).c_str ());
+                               r = system (string ("konqueror " + _film->directory().string()).c_str ());
                                if (WEXITSTATUS (r)) {
                                        error_dialog (this, _("Could not show DCP (could not run konqueror)"));
                                }
@@ -537,7 +471,7 @@ private:
        void tools_hints ()
        {
                if (!_hints_dialog) {
-                       _hints_dialog = new HintsDialog (this, film);
+                       _hints_dialog = new HintsDialog (this, _film);
                }
 
                _hints_dialog->Show ();
@@ -589,8 +523,13 @@ private:
                        return;
                }
 
+               /* We don't want to hear about any more configuration changes, since they
+                  cause the File menu to be altered, which itself will be deleted around
+                  now (without, as far as I can see, any way for us to find out).
+               */
+               _config_changed_connection.disconnect ();
+               
                maybe_save_then_delete_film ();
-
                ev.Skip ();
        }
 
@@ -602,14 +541,14 @@ private:
                        ++i;
                }
                bool const dcp_creation = (i != jobs.end ()) && !(*i)->finished ();
-               bool const have_cpl = film && !film->cpls().empty ();
+               bool const have_cpl = _film && !_film->cpls().empty ();
                bool const have_selected_video_content = !_film_editor->selected_video_content().empty();
                
                for (map<wxMenuItem*, int>::iterator j = menu_items.begin(); j != menu_items.end(); ++j) {
                        
                        bool enabled = true;
                        
-                       if ((j->second & NEEDS_FILM) && film == 0) {
+                       if ((j->second & NEEDS_FILM) && !_film) {
                                enabled = false;
                        }
                        
@@ -628,12 +567,137 @@ private:
                        j->first->Enable (enabled);
                }
        }
+
+       void maybe_save_then_delete_film ()
+       {
+               if (!_film) {
+                       return;
+               }
+               
+               if (_film->dirty ()) {
+                       FilmChangedDialog d (_film->name ());
+                       switch (d.run ()) {
+                       case wxID_NO:
+                               break;
+                       case wxID_YES:
+                               _film->write_metadata ();
+                               break;
+                       }
+               }
+               
+               _film.reset ();
+       }
+
+       void add_item (wxMenu* menu, wxString text, int id, int sens)
+       {
+               wxMenuItem* item = menu->Append (id, text);
+               menu_items.insert (make_pair (item, sens));
+       }
+       
+       void setup_menu (wxMenuBar* m)
+       {
+               _file_menu = new wxMenu;
+               add_item (_file_menu, _("New...\tCtrl-N"), ID_file_new, ALWAYS);
+               add_item (_file_menu, _("&Open...\tCtrl-O"), ID_file_open, ALWAYS);
+               _file_menu->AppendSeparator ();
+               add_item (_file_menu, _("&Save\tCtrl-S"), ID_file_save, NEEDS_FILM);
+               _file_menu->AppendSeparator ();
+               add_item (_file_menu, _("&Properties..."), ID_file_properties, NEEDS_FILM);
+
+               _history_position = _file_menu->GetMenuItems().GetCount();
+
+#ifndef __WXOSX__      
+               _file_menu->AppendSeparator ();
+#endif
+       
+#ifdef __WXOSX__       
+               add_item (_file_menu, _("&Exit"), wxID_EXIT, ALWAYS);
+#else
+               add_item (_file_menu, _("&Quit"), wxID_EXIT, ALWAYS);
+#endif 
+       
+#ifdef __WXOSX__       
+               add_item (_file_menu, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS);
+#else
+               wxMenu* edit = new wxMenu;
+               add_item (edit, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS);
+#endif
+
+               wxMenu* content = new wxMenu;
+               add_item (content, _("Scale to fit &width"), ID_content_scale_to_fit_width, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
+               add_item (content, _("Scale to fit &height"), ID_content_scale_to_fit_height, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
+               
+               wxMenu* jobs_menu = new wxMenu;
+               add_item (jobs_menu, _("&Make DCP\tCtrl-M"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION);
+               add_item (jobs_menu, _("Make &KDMs...\tCtrl-K"), ID_jobs_make_kdms, NEEDS_FILM);
+               add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
+               add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
+
+               wxMenu* tools = new wxMenu;
+               add_item (tools, _("Hints...\tCtrl-H"), ID_tools_hints, 0);
+               add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0);
+               add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0);
+               
+               wxMenu* help = new wxMenu;
+#ifdef __WXOSX__       
+               add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
+#else  
+               add_item (help, _("About"), wxID_ABOUT, ALWAYS);
+#endif 
+               
+               m->Append (_file_menu, _("&File"));
+#ifndef __WXOSX__      
+               m->Append (edit, _("&Edit"));
+#endif
+               m->Append (content, _("&Content"));
+               m->Append (jobs_menu, _("&Jobs"));
+               m->Append (tools, _("&Tools"));
+               m->Append (help, _("&Help"));
+       }
+
+       void config_changed ()
+       {
+               for (int i = 0; i < _history_items; ++i) {
+                       delete _file_menu->Remove (ID_file_history + i);
+               }
+
+               if (_history_separator) {
+                       _file_menu->Remove (_history_separator);
+               }
+               delete _history_separator;
+               _history_separator = 0;
+               
+               int pos = _history_position;
+               
+               vector<boost::filesystem::path> history = Config::instance()->history ();
+               
+               if (!history.empty ()) {
+                       _history_separator = _file_menu->InsertSeparator (pos++);
+               }
+               
+               for (size_t i = 0; i < history.size(); ++i) {
+                       SafeStringStream s;
+                       if (i < 9) {
+                               s << "&" << (i + 1) << " ";
+                       }
+                       s << history[i].string();
+                       _file_menu->Insert (pos++, ID_file_history + i, std_to_wx (s.str ()));
+               }
+
+               _history_items = history.size ();
+       }
        
        FilmEditor* _film_editor;
        FilmViewer* _film_viewer;
        HintsDialog* _hints_dialog;
        ServersListDialog* _servers_list_dialog;
        wxPreferencesEditor* _config_dialog;
+       wxMenu* _file_menu;
+       shared_ptr<Film> _film;
+       int _history_items;
+       int _history_position;
+       wxMenuItem* _history_separator;
+       boost::signals2::scoped_connection _config_changed_connection;
 };
 
 static const wxCmdLineEntryDesc command_line_description[] = {
@@ -684,29 +748,26 @@ class App : public wxApp
                */
                Config::drop ();
 
-               if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) {
+               _frame = new Frame (_("DCP-o-matic"));
+               SetTopWindow (_frame);
+               _frame->Maximize ();
+               _frame->Show ();
+
+               if (!_film_to_load.empty() && boost::filesystem::is_directory (_film_to_load)) {
                        try {
-                               load_film (film_to_load);
+                               _frame->load_film (_film_to_load);
                        } catch (exception& e) {
-                               error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), film_to_load, e.what())));
+                               error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), _film_to_load, e.what())));
                        }
                }
 
-               if (!film_to_create.empty ()) {
-                       film.reset (new Film (film_to_create));
-                       film->write_metadata ();
-                       film->set_name (boost::filesystem::path (film_to_create).filename().generic_string ());
-               }
-
-               if (!content_to_add.empty ()) {
-                       film->examine_and_add_content (content_factory (film, content_to_add));
+               if (!_film_to_create.empty ()) {
+                       _frame->new_film (_film_to_create);
+                       if (!_content_to_add.empty ()) {
+                               _frame->film()->examine_and_add_content (content_factory (_frame->film(), _content_to_add));
+                       }
                }
 
-               _frame = new Frame (_("DCP-o-matic"));
-               SetTopWindow (_frame);
-               _frame->Maximize ();
-               _frame->Show ();
-
                ui_signaller = new wxUISignaller (this);
                Bind (wxEVT_IDLE, boost::bind (&App::idle, this));
 
@@ -714,10 +775,6 @@ class App : public wxApp
                _timer.reset (new wxTimer (this));
                _timer->Start (1000);
 
-               if (film) {
-                       check_film_state_version (film->state_version ());
-               }
-
                UpdateChecker::instance()->StateChanged.connect (boost::bind (&App::update_checker_state_changed, this));
                if (Config::instance()->check_for_updates ()) {
                        UpdateChecker::instance()->run ();
@@ -741,26 +798,35 @@ class App : public wxApp
        {
                if (parser.GetParamCount() > 0) {
                        if (parser.Found (wxT ("new"))) {
-                               film_to_create = wx_to_std (parser.GetParam (0));
+                               _film_to_create = wx_to_std (parser.GetParam (0));
                        } else {
-                               film_to_load = wx_to_std (parser.GetParam (0));
+                               _film_to_load = wx_to_std (parser.GetParam (0));
                        }
                }
 
                wxString content;
                if (parser.Found (wxT ("content"), &content)) {
-                       content_to_add = wx_to_std (content);
+                       _content_to_add = wx_to_std (content);
                }
 
                return true;
        }
 
+       /* An unhandled exception has occurred inside the main event loop */
        bool OnExceptionInMainLoop ()
        {
-               error_dialog (0, _("An unknown exception occurred.  Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+               try {
+                       throw;
+               } catch (exception& e) {
+                       error_dialog (0, wxString::Format (_("An exception occurred (%s).  Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."), e.what ()));
+               } catch (...) {
+                       error_dialog (0, _("An unknown exception occurred.  Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+               }
+
+               /* This will terminate the program */
                return false;
        }
-               
+       
        void OnUnhandledException ()
        {
                error_dialog (0, _("An unknown exception occurred.  Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
@@ -810,6 +876,9 @@ class App : public wxApp
 
        Frame* _frame;
        shared_ptr<wxTimer> _timer;
+       string _film_to_load;
+       string _film_to_create;
+       string _content_to_add;
 };
 
 IMPLEMENT_APP (App)
index 49b341443e4bebaeae755563deae93299efd1d74..de255e65edaeab43959800f8639232f87b5272ea 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
 
     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
@@ -28,6 +28,7 @@
 #include "lib/film.h"
 #include "lib/job_manager.h"
 #include "wx/wx_util.h"
+#include "wx/about_dialog.h"
 #include "wx/wx_ui_signaller.h"
 #include "wx/job_manager_view.h"
 
@@ -61,6 +62,7 @@ class Frame : public wxFrame
 public:
        Frame (wxString const & title)
                : wxFrame (NULL, -1, title)
+               , _sizer (new wxBoxSizer (wxVERTICAL))
        {
                wxMenuBar* bar = new wxMenuBar;
                setup_menu (bar);
@@ -75,24 +77,29 @@ public:
                s->Add (panel, 1, wxEXPAND);
                SetSizer (s);
 
-               wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
-
                JobManagerView* job_manager_view = new JobManagerView (panel, JobManagerView::PAUSE);
-               sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
+               _sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
 
                wxSizer* buttons = new wxBoxSizer (wxHORIZONTAL);
                wxButton* add = new wxButton (panel, wxID_ANY, _("Add Film..."));
                add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&Frame::add_film, this));
                buttons->Add (add, 1, wxALL, 6);
 
-               sizer->Add (buttons, 0, wxALL, 6);
+               _sizer->Add (buttons, 0, wxALL, 6);
 
-               panel->SetSizer (sizer);
+               panel->SetSizer (_sizer);
 
                Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
+               Bind (wxEVT_SIZE, boost::bind (&Frame::sized, this, _1));
        }
 
 private:
+       void sized (wxSizeEvent& ev)
+       {
+               _sizer->Layout ();
+               ev.Skip ();
+       }
+       
        bool should_close ()
        {
                if (!JobManager::instance()->work_to_do ()) {
@@ -135,34 +142,9 @@ private:
 
        void help_about ()
        {
-               wxAboutDialogInfo info;
-               info.SetName (_("DCP-o-matic Batch Converter"));
-               if (strcmp (dcpomatic_git_commit, "release") == 0) {
-                       info.SetVersion (std_to_wx (String::compose ("version %1", dcpomatic_version)));
-               } else {
-                       info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
-               }
-               info.SetDescription (_("Free, open-source DCP generation from almost anything."));
-               info.SetCopyright (_("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"));
-
-               wxArrayString authors;
-               authors.Add (wxT ("Carl Hetherington"));
-               authors.Add (wxT ("Terrence Meiczinger"));
-               authors.Add (wxT ("Paul Davis"));
-               authors.Add (wxT ("Ole Laursen"));
-               info.SetDevelopers (authors);
-
-               wxArrayString translators;
-               translators.Add (wxT ("Olivier Perriere"));
-               translators.Add (wxT ("Lilian Lefranc"));
-               translators.Add (wxT ("Thierry Journet"));
-               translators.Add (wxT ("Massimiliano Broggi"));
-               translators.Add (wxT ("Manuel AC"));
-               translators.Add (wxT ("Adam Klotblixt"));
-               info.SetTranslators (translators);
-               
-               info.SetWebSite (wxT ("http://carlh.net/software/dcpomatic"));
-               wxAboutBox (info);
+               AboutDialog* d = new AboutDialog (this);
+               d->ShowModal ();
+               d->Destroy ();
        }
 
        void add_film ()
@@ -200,6 +182,7 @@ private:
        }
 
        boost::optional<boost::filesystem::path> _last_parent;
+       wxSizer* _sizer;
 };
 
 static const wxCmdLineEntryDesc command_line_description[] = {
index ff948e9fbbae1472089acfc10594c0c914c03f0e..5cb05e11d5ce23721d5acff9c1ab530550022325 100644 (file)
@@ -33,7 +33,6 @@
 #include "lib/log.h"
 #include "lib/ui_signaller.h"
 #include "lib/server_finder.h"
-#include "lib/json_server.h"
 
 using std::string;
 using std::cerr;
@@ -53,7 +52,6 @@ help (string n)
             << "  -f, --flags        show flags passed to C++ compiler on build\n"
             << "  -n, --no-progress  do not print progress to stdout\n"
             << "  -r, --no-remote    do not use any remote servers\n"
-            << "  -j, --json <port>  run a JSON server on the specified port\n"
             << "  -k, --keep-going   keep running even when the job is complete\n"
             << "\n"
             << "<FILM> is the film directory.\n";
@@ -65,7 +63,6 @@ main (int argc, char* argv[])
        string film_dir;
        bool progress = true;
        bool no_remote = false;
-       int json_port = 0;
        bool keep_going = false;
 
        int option_index = 0;
@@ -77,12 +74,11 @@ main (int argc, char* argv[])
                        { "flags", no_argument, 0, 'f'},
                        { "no-progress", no_argument, 0, 'n'},
                        { "no-remote", no_argument, 0, 'r'},
-                       { "json", required_argument, 0, 'j' },
                        { "keep-going", no_argument, 0, 'k' },
                        { 0, 0, 0, 0 }
                };
 
-               int c = getopt_long (argc, argv, "vhdfnrj:k", long_options, &option_index);
+               int c = getopt_long (argc, argv, "vhdfnrk", long_options, &option_index);
 
                if (c == -1) {
                        break;
@@ -107,9 +103,6 @@ main (int argc, char* argv[])
                case 'r':
                        no_remote = true;
                        break;
-               case 'j':
-                       json_port = atoi (optarg);
-                       break;
                case 'k':
                        keep_going = true;
                        break;
@@ -130,10 +123,6 @@ main (int argc, char* argv[])
                ServerFinder::instance()->disable ();
        }
 
-       if (json_port) {
-               new JSONServer (json_port);
-       }
-
        cout << "DCP-o-matic " << dcpomatic_version << " git " << dcpomatic_git_commit;
        char buf[256];
        if (gethostname (buf, 256) == 0) {
@@ -151,9 +140,6 @@ main (int argc, char* argv[])
        }
 
        cout << "\nMaking DCP for " << film->name() << "\n";
-//     cout << "Content: " << film->content() << "\n";
-//     pair<string, string> const f = Filter::ffmpeg_strings (film->filters ());
-//     cout << "Filters: " << f.first << " " << f.second << "\n";
 
        film->make_dcp ();
 
index 092a1ca1b0725027a5026491ea1efb54b93a7866..758060a08e7aea7e49ce27594c03ece111926d64 100644 (file)
@@ -24,9 +24,9 @@
 #include "lib/kdm.h"
 #include "lib/config.h"
 #include "lib/exceptions.h"
+#include "lib/safe_stringstream.h"
 
 using std::string;
-using std::stringstream;
 using std::cout;
 using std::cerr;
 using std::list;
@@ -76,7 +76,7 @@ time_from_string (string t)
 static boost::posix_time::time_duration
 duration_from_string (string d)
 {
-       stringstream s (d);
+       SafeStringStream s (d);
        int N;
        string unit;
        s >> N >> unit;
index e4ac85f4cb6d48f47f19786238ec1a5c221fddc6..f35797954ae907ff237146c2480ecc3289574bff 100644 (file)
@@ -20,7 +20,6 @@
 #include "lib/server.h"
 #include <iostream>
 #include <stdexcept>
-#include <sstream>
 #include <cstring>
 #include <vector>
 #include <unistd.h>
index ba259fd65ce6a26edec0a97c2616d2b9a5191751..24ed468a8a46ff4d7034042ba50d5a86c6d9add3 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:02+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 03:04+0100\n"
 "Last-Translator: Carsten Kurz\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -18,83 +18,80 @@ msgstr ""
 "X-Generator: Poedit 1.6.5\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr ""
 "%1 existiert bereits als Datei, kann also nicht für einen neuen Film benutzt "
 "werden."
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr "&Projekt hinzufügen"
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
-msgstr "&Quelle"
+msgstr "&Quelle..."
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Bearbeiten"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Ende"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&Datei"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Hilfe"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Aufgaben"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&DCP erstellen"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&DCP erstellen\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Öffnen..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Öffnen...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Einstellungen..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Einstellungen...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Eigenschaften..."
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Beenden"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Speichern"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
 msgstr "&DCP an TMS senden"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Werkzeuge"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
 msgstr "Ãœber"
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "Ãœber DCP-o-matic"
 
@@ -102,7 +99,16 @@ msgstr "Ãœber DCP-o-matic"
 msgid "Add Film..."
 msgstr "Projekt hinzufügen..."
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+"Ein unbekannter Fehler ist aufgetreten. Bitte melden Sie dieses Problem an "
+"den Autor von DCP-o-matic (carl@dcpomatic.com)!"
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
@@ -110,93 +116,87 @@ msgstr ""
 "Ein unbekannter Fehler ist aufgetreten. Bitte melden Sie dieses Problem an "
 "den Autor von DCP-o-matic (carl@dcpomatic.com)!"
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
 msgstr "Ein unbekannter Fehler ist aufgetreten."
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
 msgstr "Medien der CPL sind nicht verschlüsselt worden."
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Auf Updates Ã¼berprüfen..."
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "Film %1 (%2) konnte nicht geladen werden"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Der Film konnte nicht bei %s (%s) geöffnet werden"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr ""
 "DCP kann nicht angezeigt werden (Konqueror konnte nicht gestartet werden)"
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "DCP kann nicht angezeigt werden (Nautilus konnte nicht geladen werden)"
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
 msgstr "DCP-o-matic Batch Converter"
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr "Encoding Server..."
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Projekt gewechselt"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Kostenlose Open-Source-Software zur DCP-Erstellung aus nahezu allen "
-"Quellformaten."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Tipps..."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Tipps...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "&KDM erstellen..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "&KDM erstellen...\tCtrl-K"
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Neu..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Neu...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "Z&eige DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Änderungen des Projekts \"%s\" vor dem Schließen speichern ?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
-msgstr "Skalieren auf &Höhe DCI-Container"
+msgstr "...skalieren auf &Höhe DCI-Container"
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
-msgstr "Skalieren auf &Breite DCI-Container"
+msgstr "...skalieren auf &Breite DCI-Container"
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Zu Ã¶ffnendes Projekt auswählen"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -205,11 +205,11 @@ msgstr ""
 "Das DCP für diesen Film wird etwa %.1f Gbyte groß. Auf dem ausgewählten "
 "Laufwerk sind aber nur %.1f Gbyte frei. Möchten Sie trotzdem weitermachen ?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "Der DCP-o-matic Download Server ist nicht erreichbar."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
@@ -217,17 +217,17 @@ msgstr ""
 "Der Ordner %1 existiert bereits und ist nicht leer. Wollen Sie ihn trotzdem "
 "benutzen ?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "Es ist keine neue Version von DCP-o-matic verfügbar."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr ""
 "Manche Aufgaben sind nicht erledigt - sind Sie sicher, dass Sie Beenden "
 "wollen ?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
@@ -236,12 +236,27 @@ msgstr ""
 "worden und wird in dieser Programmversion möglicherweise nicht korrekt "
 "umgesetzt. Bitte prüfen Sie alle Projekteinstellungen sorgfältig!"
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Unerledigte Aufgaben"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
 msgstr "Kein Ordner ausgewählt. Wählen Sie vor dem Ã–ffnen einen Ordner aus."
+
+#~ msgid "&Save"
+#~ msgstr "&Speichern"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Kostenlose Open-Source-Software zur DCP-Erstellung aus nahezu allen "
+#~ "Quellformaten."
index 374877caf1479e6363016df0d4be681ca357315b..f6d2e4439130396ead3c803cb0dc17a0297d8de3 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-04-20 10:21-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -17,81 +17,78 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.6.4\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr "%1 ya existe como fichero, no puedes usarlo para una nueva película."
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr "&Añadir película..."
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Editar"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Salir"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&Archivo"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Ayuda"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Tareas"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Crear DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Crear DCP\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Abrir..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Abrir...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Preferencias..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Preferencias...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Propiedades..."
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Salir"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Guardar"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
 msgstr "&Enviar DCP al TMS"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Herramientas"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
 msgstr "Acerca de"
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "Acerca de DVD-o-matic"
 
@@ -99,98 +96,102 @@ msgstr "Acerca de DVD-o-matic"
 msgid "Add Film..."
 msgstr "Añadir película..."
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
 msgstr "Ha ocurrido un error desconocido."
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Buscar actualizaciones"
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "No se pudo cargar la película %s (%s)"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "No se pudo cargar la película en %s (%s)"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "No se pudo mostrar el DCP (no se pudo ejecutar konqueror)"
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "No se pudo mostrar el DCP (no se pudo ejecutar nautilos)"
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
 msgstr "Convertidor por lotes DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr "Servidores de codificación..."
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Película cambiada"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Generación libre y de código abierto de DCP a partir de casi cualquier "
-"fuente."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Pistas..."
+#: src/tools/dcpomatic.cc:637
+#, fuzzy
+msgid "Hints...\tCtrl-H"
+msgstr "Pistas...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Crear &KDMs..."
+#: src/tools/dcpomatic.cc:632
+#, fuzzy
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Crear &KDMs...\tCtrl-K"
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nuevo..."
+#: src/tools/dcpomatic.cc:600
+#, fuzzy
+msgid "New...\tCtrl-N"
+msgstr "Nuevo...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "&Mostrar DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Guardar cambios de la película \"%s\" antes de cerrar?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Selecciona la película a abrir"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -200,26 +201,26 @@ msgstr ""
 "seleccionado solo tiene %.1f Gb disponibles.  Quieres continuar de todas "
 "formas?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "Imposible conectar con el servidor de descarga de DCP-o-matic."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr ""
 "El directorio %1 ya existe y no está vacío. Â¿Estás seguro de querer usarlo?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "No hay disponibles nuevas versiones de DCP-o-matic."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr "Hay trabajos sin finalizar; Â¿estás seguro de querer cerrar?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
@@ -228,11 +229,11 @@ msgstr ""
 "cargue correctamente en esta versión. Por favor revisa cuidadosamente las "
 "opciones."
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Trabajos sin finalizar"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
@@ -240,6 +241,21 @@ msgstr ""
 "No has seleccionado una carpeta. Asegúrate de seleccionar una antes de "
 "pinchar sobre Abrir."
 
+#~ msgid "&Save"
+#~ msgstr "&Guardar"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Generación libre y de código abierto de DCP a partir de casi cualquier "
+#~ "fuente."
+
 #~ msgid "&Analyse audio"
 #~ msgstr "&Analizar audio"
 
index fca31b0b5d3ec64c9b9275d28fdd5e7515945a4f..86994dc717147f658f6d838a36a4bf467a92ee6a 100644 (file)
@@ -7,92 +7,89 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 15:57+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 10:43+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
 "Language-Team: \n"
 "Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr ""
 "Le fichier %1 existe déjà, vous ne pouvez l'utiliser pour un nouveau projet."
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr "&Ajouter Film..."
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
-msgstr "&Adaptation"
+msgstr "&Contenu"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Edition"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Quitter"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&Fichier"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Aide"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Travaux"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Créer le DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Créer le DCP\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Ouvrir..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Ouvrir...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Préférences..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Préférences...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Propriétés..."
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Quitter"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Enregistrer"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
-msgstr "&Envoyer le DCP dans le TMS"
+msgstr "&Envoyer le DCP au TMS"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Outils"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
-msgstr "A Propos"
+msgstr "A propos"
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "À propos de DCP-o-matic"
 
@@ -100,126 +97,132 @@ msgstr "À propos de DCP-o-matic"
 msgid "Add Film..."
 msgstr "Ajouter Film..."
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+"Erreur indéterminée. Merci de rapporter le problème Ã  l'auteur de DCP-o-"
+"matic (carl@dcpomatic.com)."
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
 msgstr ""
-"Erreur indeterminée. Merci de rapporter le problème Ã  l'auteur de DCP-o-"
+"Erreur indéterminée. Merci de rapporter le problème Ã  l'auteur de DCP-o-"
 "matic (carl@dcpomatic.com)."
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
-msgstr "Une exception inconnue est arrivée"
+msgstr "Exception inconnue"
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
-msgstr "Le contenu du DCP n'est pas crypté."
+msgstr "Le contenu du CPL n'est pas crypté."
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Recherche mises Ã  jour"
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "Impossible de charger le film %1 (%2)"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Impossible d'ouvrir le film Ã  %s (%s)"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "Ouverture du DCP impossible (konqueror est introuvable)"
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "Ouverture du DCP impossible (nautilus est introuvable)"
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
-msgstr "DCP-o-matic - Convertisseur Batch"
+msgstr "DCP-o-matic - Convertisseur par lots"
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr "Serveurs d'encodage"
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Film changé"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr "Création de DCP libre et open-source Ã  partir de presque tout."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Avertissements..."
+#: src/tools/dcpomatic.cc:637
+#, fuzzy
+msgid "Hints...\tCtrl-H"
+msgstr "Conseils...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Générer &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Générer &KDMs...\tCtrl-K"
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nouveau..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nouveau...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "Voir le DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Enregistrer les changements du film \"%s\" avant de fermer ?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
 msgstr "Adapter pour remplir la &hauteur"
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
 msgstr "Adapter pour remplir la largeur"
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Sélectionner le film Ã  ouvrir"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
 "using only has %.1f Gb available.  Do you want to continue anyway?"
 msgstr ""
-"Le DCP de ce film prendra environ %.1f Go d'espace. Le disque que vous "
-"utilisez n'a que %.1f Go disponible(s). Souhaitez-vous continuer?"
+"Le DCP de ce film pèsera environ %.1f Go. Le disque que vous utilisez n'a "
+"que %.1f Go disponible(s). Souhaitez-vous continuer?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "Le serveur de téléchargement de DCP-o-matic ne peut Ãªtre contacté."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr ""
 "Le dossier %1 existe et n'est pas vide. Etes-vous sûr de vouloir l'utiliser ?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "Aucune mise Ã  jour disponible pour DCP-o-matic."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr "Il y a des tâches inachevées ; voulez-vous vraiment quitter ?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
@@ -228,11 +231,11 @@ msgstr ""
 "être ouvert correctement dans cette version. Veuillez vérifier les "
 "paramètres de réglages très attentivement."
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Travaux incomplets"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
@@ -240,6 +243,19 @@ msgstr ""
 "Aucun dossier sélectionné. Selectionnez un dossier avant de cliquer sur "
 "Ouvrir"
 
+#~ msgid "&Save"
+#~ msgstr "&Enregistrer"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Création de DCP libre et open-source Ã  partir de presque tout."
+
 #~ msgid "&Analyse audio"
 #~ msgstr "&Analyser le son"
 
index c3baa96d199aeb0b0d76d91ee3453680fc2d03c4..56b050df0838225806e6a4005b7ca173603c49cd 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-02-03 09:36+0100\n"
 "Last-Translator: William Fanelli <william.f@impronte.com>\n"
 "Language-Team: \n"
@@ -17,81 +17,75 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.6.3\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr "%1 esiste già il file, non Ã¨ possibile usarlo per un nuovo film"
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Modifica"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Esci"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&File"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Aiuto"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Lavori"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Crea DCP"
+#: src/tools/dcpomatic.cc:631
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Crea DCP\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Apri..."
+#: src/tools/dcpomatic.cc:601
+msgid "&Open...\tCtrl-O"
+msgstr "&Apri...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Preferenze..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Preferenze...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Proprieta'..."
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Esci"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Salva"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
 msgstr "&Invia DCP a TMS"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Strumenti"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
 msgstr "Informazioni"
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "Su DVD-o-matic"
 
@@ -99,96 +93,99 @@ msgstr "Su DVD-o-matic"
 msgid "Add Film..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Controlla aggiornamenti"
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "Non posso caricare il film %s (%s)"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Non posso aprire il film in %s (%s)"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Film modificato"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr "Genera DCP da quasi tutto, free e open-source."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Suggerimenti...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Suggerimenti..."
-
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nuovo"
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nuovo...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "&Mostra DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Salvare i cambiamenti del film \"%s\" prima di chiudere?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Seleziona il film da aprire"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -197,35 +194,35 @@ msgstr ""
 "Il DCP di questo film occupa %.1f Gb, ma il disco che stai usando dispone di "
 "%.1f Gb liberi.  Vuoi continuare ugualmente?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "Il download server di DCP-o-matic non può essere contattato."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr "La cartella %1 esiste già e non Ã¨ vuota.  Sei sicuro di volerla usare?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "Non ci sono nuove versioni di DCP-o-matic disponibili."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr "C'è un processo in corso: sei sicuro di voler uscire?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Processo in corso"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
@@ -233,6 +230,19 @@ msgstr ""
 "Non hai selezionato una cartella. Assicurati di selezionare una cartella "
 "prima di cliccare Apri."
 
+#~ msgid "&Save"
+#~ msgstr "&Salva"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Genera DCP da quasi tutto, free e open-source."
+
 #~ msgid "&Analyse audio"
 #~ msgstr "&Analizza audio"
 
index fe0bf7ef8dfbcba958943ac97767e6b1d9e23811..f6d076d694a0bc00b4fbe0241372a7e626326376 100644 (file)
@@ -7,190 +7,192 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:38+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:29+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
 "Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n"
 "Language: nl_NL\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr ""
 "%1 Dit bestand bestaat al, hierdoor kunt u het niet gebruiken voor een "
 "nieuwe film"
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr "Open een DCP map"
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
-msgstr ""
+msgstr "&Content"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Edit"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Afsluiten"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&Bestand"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Help"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Projecten"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Maak een DCP"
+#: src/tools/dcpomatic.cc:
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Maak een DCP\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Openen..."
+#: src/tools/dcpomatic.cc:601
+msgid "&Open...\tCtrl-O"
+msgstr "&Openen...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Voorkeuren..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Voorkeuren...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Instellingen..."
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Afsluiten"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Opslaan"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
 msgstr "&Verstuur DCP naar TMS"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Gereedschappen"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
 msgstr "Over.."
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "Over DCP-o-matic"
 
 #: src/tools/dcpomatic_batch.cc:84
 msgid "Add Film..."
+msgstr "Voeg Film Toe"
+
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
 msgstr ""
+"Een ongekende fout is opgetreden. AUB meld deze aan de maker van DCP-o-matic "
+"(carl@dcpomatic.com)."
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
 msgstr ""
+"Een ongekende fout is opgetreden. AUB meld deze aan de maker van DCP-o-matic "
+"(carl@dcpomatic.com)."
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
 msgstr "Er is een onbekende fout opgetreden."
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
-msgstr ""
+msgstr "De inhoud van de CPL is niet geëncrypteerd."
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Controleer op updates"
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "Kan film niet openen %1 (%2)"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Kan film niet openen in  %s (%s)"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "Kan DCP niet vertonen (Kan Konqueror niet starten)"
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "Kan DCP niet vertonen (Kan Nautilus niet starten)"
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
-msgstr ""
+msgstr "DCP-o-matic Bulk Omzetter"
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr "Render servers..."
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Film is veranderd"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Tips"
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Tips...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Maak &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Maak &KDMs...\tCtrl-K"
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nieuw..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nieuw...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "S&hoe DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Bewaar veranderingen naar film \"%s\" voor afsluiten?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
-msgstr ""
+msgstr "Scaal naar &height"
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
-msgstr ""
+msgstr "Schaal naar &width"
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Kies een film om te openen"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -199,26 +201,26 @@ msgstr ""
 "De DCP voor deze film neemt ongeveer %.1f Gb in beslag, er is echter maar "
 "%.1f Gb beschikbaar.  Wilt u toch doorgaan?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "De verbinding met de DCP-o-matic download server is niet beschikbaar."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr "De map %1 bestaat al en is niet leeg. Wilt u deze toch gebruiken?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "Er is geen nieuwere versie van DCP-o-matic beschikbaar."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr ""
 "Er zijn nog niet afgeronde projecten, weet u zeker dat u wilt afsluiten?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
@@ -226,14 +228,27 @@ msgstr ""
 "Deze film is gemaakt met een oude versie van DCP-o-matic en opent mogelijk "
 "niet goed in de huidige versie.  Controleer alle instellingen zorgvuldig."
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Niet afgemaakte projecten"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
 msgstr ""
 "U hebt geen map geselecteerd. Zorg ervoor dat er een map geselecteerd is "
 "voordat u op Openen klikt."
+
+#~ msgid "&Save"
+#~ msgstr "&Opslaan"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Vrij, open-bron DCP creatie van zowat om het even wat."
index be2a243c5c6276737de9421998b85ea9665fdb41..50bf29c9fbb7658651be9c3d252039ddef27b0e1 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-01-19 08:59+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -17,81 +17,78 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.6.3\n"
 
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr "%1 finns redan som fil, sÃ¥ du kan inte använda den för en ny film."
 
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
 msgid "&Add Film..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
 msgid "&Content"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
 msgid "&Edit"
 msgstr "&Redigera"
 
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
 msgid "&Exit"
 msgstr "&Avsluta"
 
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
 msgid "&File"
 msgstr "&Fil"
 
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
 msgid "&Help"
 msgstr "&Hjälp"
 
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
 msgid "&Jobs"
 msgstr "&Jobb"
 
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Skapa DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Skapa DCP\tCtrl-M"
 
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Öppna"
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Öppna...\tCtrl-O"
 
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Inställningar"
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Inställningar...\tCtrl-P"
 
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
 msgid "&Properties..."
 msgstr "&Egenskaper"
 
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
 msgid "&Quit"
 msgstr "&Avsluta"
 
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Spara"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
 
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
 msgid "&Send DCP to TMS"
 msgstr "&Skicka DCP till TMS"
 
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
 msgid "&Tools"
 msgstr "&Verktyg"
 
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
 msgid "About"
 msgstr "Om"
 
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
 msgid "About DCP-o-matic"
 msgstr "Om DCP-o-matic"
 
@@ -99,97 +96,99 @@ msgstr "Om DCP-o-matic"
 msgid "Add Film..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s).  Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
 msgid ""
 "An unknown exception occurred.  Please report this problem to the DCP-o-"
 "matic author (carl@dcpomatic.com)."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
 msgid "An unknown exeception occurred."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
 msgid "CPL's content is not encrypted."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
 msgid "Check for updates"
 msgstr "Leta efter uppdateringar"
 
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
 msgid "Could not load film %1 (%2)"
 msgstr "Kunde inte Ã¶ppna filmen %1 (%2)"
 
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Kunde inte Ã¶ppna filmen vid %s (%s)"
 
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "Kunde inte visa DCP (kunde inte köra konqueror)"
 
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "Kunde inte visa DCP (kunde inte köra nautilus)"
 
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
 msgid "DCP-o-matic Batch Converter"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
 msgid "Encoding servers..."
 msgstr "Kodningsservrar..."
 
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
 msgid "Film changed"
 msgstr "Film Ã¤ndrad"
 
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Fri, Ã¶ppen-källkodsprogramvara för DCP-generering frÃ¥n nästan vad som helst."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "RÃ¥d..."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "RÃ¥d...\tCtrl-H"
 
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Skapa &KDM:er..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Skapa &KDM:er...\tCtrl-K"
 
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Ny..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Ny...\tCtrl-N"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
 msgid "S&how DCP"
 msgstr "&Visa DCP"
 
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Spara Ã¤ndringarna till filmen \"%s\" före avslut?"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
 msgid "Scale to fit &height"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
 msgid "Scale to fit &width"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
 msgid "Select film to open"
 msgstr "Välj film att Ã¶ppna"
 
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
 #, c-format
 msgid ""
 "The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -198,11 +197,11 @@ msgstr ""
 "DCP:n för denna film kommer att uppta ungefär %.1f Gb, och disken du "
 "använder har bara %.1f Gb ledigt. Vill du fortsätta Ã¤ndÃ¥?"
 
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
 msgid "The DCP-o-matic download server could not be contacted."
 msgstr "DCP-o-matics nedladdningsserver kunde inte kontaktas."
 
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
@@ -210,25 +209,25 @@ msgstr ""
 "Foldern %1 finns redan och Ã¤r inte tom. Ã„r du säker pÃ¥ att du vill använda "
 "den?"
 
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
 msgid "There are no new versions of DCP-o-matic available."
 msgstr "Det finns inga nya versioner av DCP-o-matic tillgängligt."
 
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr "Det finns oasvlutade jobb; Ã¤r du säker pÃ¥ att du vill avsluta?"
 
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
 msgid ""
 "This film was created with an old version of DVD-o-matic and may not load "
 "correctly in this version.  Please check the film's settings carefully."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
 msgid "Unfinished jobs"
 msgstr "Oavslutade jobb"
 
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
@@ -236,6 +235,21 @@ msgstr ""
 "Du har inte valt en folder. Se till att välja en folder innan du klickar pÃ¥ "
 "Öppna."
 
+#~ msgid "&Save"
+#~ msgstr "&Spara"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Fri, Ã¶ppen-källkodsprogramvara för DCP-generering frÃ¥n nästan vad som "
+#~ "helst."
+
 #~ msgid "&Analyse audio"
 #~ msgstr "&Analysera audio"
 
index 090f109a2f3b3a675304f92d3b01df69575bf857..49e24531842564167377b85da5c48fd0055f7c85 100644 (file)
@@ -102,6 +102,8 @@ AboutDialog::AboutDialog (wxWindow* parent)
        translated_by.Add (wxT ("Theo Kooijmans"));
        translated_by.Add (wxT ("Max Aeschlimann"));
        translated_by.Add (wxT ("Carsten Kurz"));
+       translated_by.Add (wxT ("Grégoire Ausina"));
+       translated_by.Add (wxT ("Cherif Ben Brahim"));
        add_section (_("Translated by"), translated_by);
 
        wxArrayString artwork_by;
@@ -111,22 +113,29 @@ AboutDialog::AboutDialog (wxWindow* parent)
        wxArrayString supported_by;
        supported_by.Add (wxT ("Manual AC"));
        supported_by.Add (wxT ("Kambiz Afshar"));
+       supported_by.Add (wxT ("Alex Asp"));
        supported_by.Add (wxT ("Louis Belloisy"));
        supported_by.Add (wxT ("Mike Blakesley"));
        supported_by.Add (wxT ("Jeff Boot"));
        supported_by.Add (wxT ("Kieran Carroll"));
+       supported_by.Add (wxT ("Matt Carter"));
        supported_by.Add (wxT ("Frank Cianciolo"));
        supported_by.Add (wxT ("Cinema Clarici"));
        supported_by.Add (wxT ("Adam Colt"));
        supported_by.Add (wxT ("Matthias Damm"));
+       supported_by.Add (wxT ("Alexey Derevyanko"));
+       supported_by.Add (wxT ("Unwana Essien"));
        supported_by.Add (wxT ("Andres Fink"));
        supported_by.Add (wxT ("Evan Freeze"));
        supported_by.Add (wxT ("Silvio Giuliano"));
+       supported_by.Add (wxT ("Alan Gouger"));
        supported_by.Add (wxT ("Flor Guillaume"));
+       supported_by.Add (wxT ("Antonio Ruiz Hernandez"));
        supported_by.Add (wxT ("Jonathan Jensen"));
        supported_by.Add (wxT ("Chris Kay"));
        supported_by.Add (wxT ("Adam Klotblixt"));
        supported_by.Add (wxT ("Filip Kovcin"));
+       supported_by.Add (wxT ("Cihan Kulaber"));
        supported_by.Add (wxT ("Carsten Kurz"));
        supported_by.Add (wxT ("Lilian Lefranc"));
        supported_by.Add (wxT ("Sean Leigh"));
@@ -141,15 +150,18 @@ AboutDialog::AboutDialog (wxWindow* parent)
        supported_by.Add (wxT ("Tim O'Brien"));
        supported_by.Add (wxT ("Ivan Pullman"));
        supported_by.Add (wxT ("Mark Rolfe"));
+       supported_by.Add (wxT ("David Rozenthal"));
        supported_by.Add (wxT ("Andrä Steiner"));
        supported_by.Add (wxT ("Jussi Siponen"));
        supported_by.Add (wxT ("Lasse Salling"));
        supported_by.Add (wxT ("Mike Stiebing"));
        supported_by.Add (wxT ("Randy Stankey"));
+       supported_by.Add (wxT ("Bruce Taylor"));
        supported_by.Add (wxT ("Wolfgang Woehl"));
        supported_by.Add (wxT ("Wolfram Weber"));
        supported_by.Add (wxT ("Frank de Wulf"));
        supported_by.Add (wxT ("Pavel Zhdanko"));
+       supported_by.Add (wxT ("Daniel Å½idek"));
        add_section (_("Supported by"), supported_by);
 
        wxArrayString tested_by;
index c4e5d992fe2c11a3dbc107b287a1462e8437ca54..641ddd503aa7fc781167f616d5489059dde8bcb7 100644 (file)
@@ -159,7 +159,7 @@ AudioPlot::paint ()
                gc->DrawText (std_to_wx (String::compose ("%1dB", i)), 0, y - (db_label_height / 2));
        }
 
-       gc->SetPen (*wxLIGHT_GREY_PEN);
+       gc->SetPen (wxPen (wxColour (200, 200, 200)));
        gc->StrokePath (grid);
 
        gc->DrawText (_("Time"), data_width, metrics.height - metrics.y_origin + db_label_height / 2);
@@ -171,7 +171,7 @@ AudioPlot::paint ()
                                plot_peak (p, c, metrics);
                        }
                        wxColour const col = _colours[c];
-                       gc->SetPen (*wxThePenList->FindOrCreatePen (wxColour (col.Red(), col.Green(), col.Blue(), col.Alpha() / 2), 1, wxPENSTYLE_SOLID));
+                       gc->SetPen (wxPen (wxColour (col.Red(), col.Green(), col.Blue(), col.Alpha() / 2), 1, wxPENSTYLE_SOLID));
                        gc->StrokePath (p);
                }
        }
@@ -183,7 +183,7 @@ AudioPlot::paint ()
                                plot_rms (p, c, metrics);
                        }
                        wxColour const col = _colours[c];
-                       gc->SetPen (*wxThePenList->FindOrCreatePen (col, 1, wxPENSTYLE_SOLID));
+                       gc->SetPen (wxPen (col, 1, wxPENSTYLE_SOLID));
                        gc->StrokePath (p);
                }
        }
@@ -192,7 +192,7 @@ AudioPlot::paint ()
        axes.MoveToPoint (metrics.db_label_width, 0);
        axes.AddLineToPoint (metrics.db_label_width, metrics.height - metrics.y_origin);
        axes.AddLineToPoint (metrics.db_label_width + data_width, metrics.height - metrics.y_origin);
-       gc->SetPen (*wxBLACK_PEN);
+       gc->SetPen (wxPen (wxColour (0, 0, 0)));
        gc->StrokePath (axes);
 
        delete gc;
index 6617b66d6ca44dbae258041628898663dda3c979..4a1e5074fa625073be95def3dcbc5b34fb39b5a6 100644 (file)
 #include <wx/spinctrl.h>
 #include <wx/gbsizer.h>
 #include "lib/colour_conversion.h"
+#include "lib/safe_stringstream.h"
 #include "wx_util.h"
 #include "colour_conversion_editor.h"
 
 using std::string;
 using std::cout;
-using std::stringstream;
 using boost::shared_ptr;
 using boost::lexical_cast;
 
@@ -110,7 +110,7 @@ ColourConversionEditor::set (ColourConversion conversion)
        _input_gamma_linearised->SetValue (conversion.input_gamma_linearised);
        for (int i = 0; i < 3; ++i) {
                for (int j = 0; j < 3; ++j) {
-                       stringstream s;
+                       SafeStringStream s;
                        s.setf (std::ios::fixed, std::ios::floatfield);
                        s.precision (7);
                        s << conversion.matrix (i, j);
index 086e1be4ec7e85ab8ef8f0888780cea4aec0f6f6..816602355f8c26efed3bd0eb1631385bda4776b2 100644 (file)
@@ -61,6 +61,14 @@ public:
        {}
 
 protected:
+       wxPanel* make_panel (wxWindow* parent)
+       {
+               wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
+               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
+               panel->SetSizer (s);
+               return panel;
+       }
+       
        wxSize _panel_size;
        int _border;
 };
@@ -75,13 +83,11 @@ public:
 
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent);
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
 
                wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                table->AddGrowableCol (1, 1);
-               s->Add (table, 1, wxALL | wxEXPAND, _border);
+               panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
                
                _set_language = new wxCheckBox (panel, wxID_ANY, _("Set language"));
                table->Add (_set_language, 1);
@@ -238,13 +244,11 @@ public:
 
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent);
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
 
                wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                table->AddGrowableCol (1, 1);
-               s->Add (table, 1, wxALL | wxEXPAND, _border);
+               panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
                
                {
                        add_label_to_sizer (table, panel, _("Default duration of still images"), true);
@@ -266,6 +270,10 @@ public:
                add_label_to_sizer (table, panel, _("Default ISDCF name details"), true);
                _isdcf_metadata_button = new wxButton (panel, wxID_ANY, _("Edit..."));
                table->Add (_isdcf_metadata_button);
+
+               add_label_to_sizer (table, panel, _("Default scale to"), true);
+               _scale = new wxChoice (panel, wxID_ANY);
+               table->Add (_scale);
                
                add_label_to_sizer (table, panel, _("Default container"), true);
                _container = new wxChoice (panel, wxID_ANY);
@@ -297,10 +305,6 @@ public:
                _issuer = new wxTextCtrl (panel, wxID_ANY);
                table->Add (_issuer, 1, wxEXPAND);
 
-               add_label_to_sizer (table, panel, _("Default creator"), true);
-               _creator = new wxTextCtrl (panel, wxID_ANY);
-               table->Add (_creator, 1, wxEXPAND);
-               
                Config* config = Config::instance ();
                
                _still_length->SetRange (1, 3600);
@@ -312,26 +316,31 @@ public:
                
                _isdcf_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DefaultsPage::edit_isdcf_metadata_clicked, this, parent));
                
-               vector<Ratio const *> ratio = Ratio::all ();
-               int n = 0;
-               for (vector<Ratio const *>::iterator i = ratio.begin(); i != ratio.end(); ++i) {
-                       _container->Append (std_to_wx ((*i)->nickname ()));
-                       if (*i == config->default_container ()) {
-                               _container->SetSelection (n);
+               vector<VideoContentScale> scales = VideoContentScale::all ();
+               for (size_t i = 0; i < scales.size(); ++i) {
+                       _scale->Append (std_to_wx (scales[i].name ()));
+                       if (scales[i] == config->default_scale ()) {
+                               _scale->SetSelection (i);
+                       }
+               }
+
+               vector<Ratio const *> ratios = Ratio::all ();
+               for (size_t i = 0; i < ratios.size(); ++i) {
+                       _container->Append (std_to_wx (ratios[i]->nickname ()));
+                       if (ratios[i] == config->default_container ()) {
+                               _container->SetSelection (i);
                        }
-                       ++n;
                }
                
+               _scale->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::scale_changed, this));
                _container->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::container_changed, this));
                
                vector<DCPContentType const *> const ct = DCPContentType::all ();
-               n = 0;
-               for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) {
-                       _dcp_content_type->Append (std_to_wx ((*i)->pretty_name ()));
-                       if (*i == config->default_dcp_content_type ()) {
-                               _dcp_content_type->SetSelection (n);
+               for (size_t i = 0; i < ct.size(); ++i) {
+                       _dcp_content_type->Append (std_to_wx (ct[i]->pretty_name ()));
+                       if (ct[i] == config->default_dcp_content_type ()) {
+                               _dcp_content_type->SetSelection (i);
                        }
-                       ++n;
                }
                
                _dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::dcp_content_type_changed, this));
@@ -344,10 +353,8 @@ public:
                _audio_delay->SetValue (config->default_audio_delay ());
                _audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::audio_delay_changed, this));
 
-               _issuer->SetValue (std_to_wx (config->dcp_metadata().issuer));
+               _issuer->SetValue (std_to_wx (config->dcp_issuer ()));
                _issuer->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DefaultsPage::issuer_changed, this));
-               _creator->SetValue (std_to_wx (config->dcp_metadata().creator));
-               _creator->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DefaultsPage::creator_changed, this));
 
                return panel;
        }
@@ -380,6 +387,12 @@ private:
        {
                Config::instance()->set_default_still_length (_still_length->GetValue ());
        }
+
+       void scale_changed ()
+       {
+               vector<VideoContentScale> scale = VideoContentScale::all ();
+               Config::instance()->set_default_scale (scale[_scale->GetSelection()]);
+       }
        
        void container_changed ()
        {
@@ -395,16 +408,7 @@ private:
 
        void issuer_changed ()
        {
-               libdcp::XMLMetadata m = Config::instance()->dcp_metadata ();
-               m.issuer = wx_to_std (_issuer->GetValue ());
-               Config::instance()->set_dcp_metadata (m);
-       }
-       
-       void creator_changed ()
-       {
-               libdcp::XMLMetadata m = Config::instance()->dcp_metadata ();
-               m.creator = wx_to_std (_creator->GetValue ());
-               Config::instance()->set_dcp_metadata (m);
+               Config::instance()->set_dcp_issuer (wx_to_std (_issuer->GetValue ()));
        }
        
        wxSpinCtrl* _j2k_bandwidth;
@@ -416,10 +420,10 @@ private:
 #else
        wxDirPickerCtrl* _directory;
 #endif
+       wxChoice* _scale;
        wxChoice* _container;
        wxChoice* _dcp_content_type;
        wxTextCtrl* _issuer;
-       wxTextCtrl* _creator;
 };
 
 class EncodingServersPage : public wxPreferencesPage, public Page
@@ -443,12 +447,10 @@ public:
 
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
                
                _use_any_servers = new wxCheckBox (panel, wxID_ANY, _("Use all servers"));
-               s->Add (_use_any_servers, 0, wxALL, _border);
+               panel->GetSizer()->Add (_use_any_servers, 0, wxALL, _border);
                
                vector<string> columns;
                columns.push_back (wx_to_std (_("IP address / host name")));
@@ -460,7 +462,7 @@ public:
                        boost::bind (&EncodingServersPage::server_column, this, _1)
                        );
                
-               s->Add (_servers_list, 1, wxEXPAND | wxALL, _border);
+               panel->GetSizer()->Add (_servers_list, 1, wxEXPAND | wxALL, _border);
                
                _use_any_servers->SetValue (Config::instance()->use_any_servers ());
                _use_any_servers->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&EncodingServersPage::use_any_servers_changed, this));
@@ -504,9 +506,7 @@ public:
 #endif 
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
 
                vector<string> columns;
                columns.push_back (wx_to_std (_("Name")));
@@ -519,7 +519,7 @@ public:
                        300
                        );
 
-               s->Add (list, 1, wxEXPAND | wxALL, _border);
+               panel->GetSizer()->Add (list, 1, wxEXPAND | wxALL, _border);
                return panel;
        }
 
@@ -551,13 +551,11 @@ public:
 
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
 
                wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                table->AddGrowableCol (1, 1);
-               s->Add (table, 1, wxALL | wxEXPAND, _border);
+               panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
                
                add_label_to_sizer (table, panel, _("IP address"), true);
                _tms_ip = new wxTextCtrl (panel, wxID_ANY);
@@ -638,18 +636,18 @@ public:
 
        wxWindow* CreateWindow (wxWindow* parent)
        {
+#ifdef DCPOMATIC_OSX           
                /* We have to force both width and height of this one */
-#ifdef DCPOMATIC_OSX
                wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, wxSize (480, 128));
-#else          
+#else
                wxPanel* panel = new wxPanel (parent);
-#endif         
+#endif
                wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
                panel->SetSizer (s);
 
                wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                table->AddGrowableCol (1, 1);
-               s->Add (table, 1, wxEXPAND | wxALL, _border);
+               panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border);
 
                add_label_to_sizer (table, panel, _("Outgoing mail server"), true);
                _mail_server = new wxTextCtrl (panel, wxID_ANY);
@@ -669,6 +667,10 @@ public:
                font.SetPointSize (font.GetPointSize() - 1);
                plain->SetFont (font);
                table->AddSpacer (0);
+
+               add_label_to_sizer (table, panel, _("Subject"), true);
+               _kdm_subject = new wxTextCtrl (panel, wxID_ANY);
+               table->Add (_kdm_subject, 1, wxEXPAND | wxALL);
                
                add_label_to_sizer (table, panel, _("From address"), true);
                _kdm_from = new wxTextCtrl (panel, wxID_ANY);
@@ -677,12 +679,16 @@ public:
                add_label_to_sizer (table, panel, _("CC address"), true);
                _kdm_cc = new wxTextCtrl (panel, wxID_ANY);
                table->Add (_kdm_cc, 1, wxEXPAND | wxALL);
+
+               add_label_to_sizer (table, panel, _("BCC address"), true);
+               _kdm_bcc = new wxTextCtrl (panel, wxID_ANY);
+               table->Add (_kdm_bcc, 1, wxEXPAND | wxALL);
                
                _kdm_email = new wxTextCtrl (panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (480, 128), wxTE_MULTILINE);
-               s->Add (_kdm_email, 1.5, wxEXPAND | wxALL, _border);
+               panel->GetSizer()->Add (_kdm_email, 1, wxEXPAND | wxALL, _border);
 
                _reset_kdm_email = new wxButton (panel, wxID_ANY, _("Reset to default text"));
-               s->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
+               panel->GetSizer()->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
 
                Config* config = Config::instance ();
                _mail_server->SetValue (std_to_wx (config->mail_server ()));
@@ -691,12 +697,16 @@ public:
                _mail_user->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_user_changed, this));
                _mail_password->SetValue (std_to_wx (config->mail_password ()));
                _mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_password_changed, this));
+               _kdm_subject->SetValue (std_to_wx (config->kdm_subject ()));
+               _kdm_subject->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_subject_changed, this));
                _kdm_from->SetValue (std_to_wx (config->kdm_from ()));
                _kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_from_changed, this));
                _kdm_cc->SetValue (std_to_wx (config->kdm_cc ()));
                _kdm_cc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_cc_changed, this));
+               _kdm_bcc->SetValue (std_to_wx (config->kdm_bcc ()));
+               _kdm_bcc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_bcc_changed, this));
                _kdm_email->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_email_changed, this));
-               _kdm_email->SetValue (wx_to_std (Config::instance()->kdm_email ()));
+               _kdm_email->SetValue (std_to_wx (Config::instance()->kdm_email ()));
                _reset_kdm_email->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMEmailPage::reset_kdm_email, this));
 
                return panel;
@@ -717,6 +727,11 @@ private:
        {
                Config::instance()->set_mail_password (wx_to_std (_mail_password->GetValue ()));
        }
+
+       void kdm_subject_changed ()
+       {
+               Config::instance()->set_kdm_subject (wx_to_std (_kdm_subject->GetValue ()));
+       }
        
        void kdm_from_changed ()
        {
@@ -727,6 +742,11 @@ private:
        {
                Config::instance()->set_kdm_cc (wx_to_std (_kdm_cc->GetValue ()));
        }
+
+       void kdm_bcc_changed ()
+       {
+               Config::instance()->set_kdm_bcc (wx_to_std (_kdm_bcc->GetValue ()));
+       }
        
        void kdm_email_changed ()
        {
@@ -742,8 +762,10 @@ private:
        wxTextCtrl* _mail_server;
        wxTextCtrl* _mail_user;
        wxTextCtrl* _mail_password;
+       wxTextCtrl* _kdm_subject;
        wxTextCtrl* _kdm_from;
        wxTextCtrl* _kdm_cc;
+       wxTextCtrl* _kdm_bcc;
        wxTextCtrl* _kdm_email;
        wxButton* _reset_kdm_email;
 };
@@ -759,14 +781,11 @@ public:
        
        wxWindow* CreateWindow (wxWindow* parent)
        {
-               wxPanel* panel = new wxPanel (parent);
-
-               wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
-               panel->SetSizer (s);
+               wxPanel* panel = make_panel (parent);
 
                wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
                table->AddGrowableCol (1, 1);
-               s->Add (table, 1, wxALL | wxEXPAND, _border);
+               panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
 
                {
                        add_label_to_sizer (table, panel, _("Maximum JPEG2000 bandwidth"), true);
@@ -781,18 +800,26 @@ public:
                table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL);
                table->AddSpacer (0);
 
-               add_label_to_sizer (table, panel, _("Log"), true);
-               _log_general = new wxCheckBox (panel, wxID_ANY, _("General"));
-               table->Add (_log_general, 1, wxEXPAND | wxALL);
-               _log_warning = new wxCheckBox (panel, wxID_ANY, _("Warnings"));
-               table->AddSpacer (0);
-               table->Add (_log_warning, 1, wxEXPAND | wxALL);
-               _log_error = new wxCheckBox (panel, wxID_ANY, _("Errors"));
-               table->AddSpacer (0);
-               table->Add (_log_error, 1, wxEXPAND | wxALL);
-               _log_timing = new wxCheckBox (panel, wxID_ANY, S_("Config|Timing"));
-               table->AddSpacer (0);
-               table->Add (_log_timing, 1, wxEXPAND | wxALL);
+#ifdef __WXOSX__
+               wxStaticText* m = new wxStaticText (panel, wxID_ANY, _("Log:"));
+               table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL | wxALIGN_RIGHT, 6);
+#else          
+               wxStaticText* m = new wxStaticText (panel, wxID_ANY, _("Log"));
+               table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL, 6);
+#endif         
+               
+               {
+                       wxBoxSizer* t = new wxBoxSizer (wxVERTICAL);
+                       _log_general = new wxCheckBox (panel, wxID_ANY, _("General"));
+                       t->Add (_log_general, 1, wxEXPAND | wxALL);
+                       _log_warning = new wxCheckBox (panel, wxID_ANY, _("Warnings"));
+                       t->Add (_log_warning, 1, wxEXPAND | wxALL);
+                       _log_error = new wxCheckBox (panel, wxID_ANY, _("Errors"));
+                       t->Add (_log_error, 1, wxEXPAND | wxALL);
+                       _log_timing = new wxCheckBox (panel, wxID_ANY, S_("Config|Timing"));
+                       t->Add (_log_timing, 1, wxEXPAND | wxALL);
+                       table->Add (t, 0, wxALL, 6);
+               }
 
                Config* config = Config::instance ();
                
@@ -861,7 +888,7 @@ create_config_dialog ()
           the containing window doesn't shrink too much when we select those panels.
           This is obviously an unpleasant hack.
        */
-       wxSize ps = wxSize (480, -1);
+       wxSize ps = wxSize (520, -1);
        int const border = 16;
 #else
        wxSize ps = wxSize (-1, -1);
index e5bb1896207fe396464624e7ca730093b8d217ab..5e094844de59697771c0af68827733ceddebf983 100644 (file)
 #include <curl/curl.h>
 #include "lib/compose.hpp"
 #include "lib/internet.h"
+#include "lib/ui_signaller.h"
 #include "dolby_certificate_dialog.h"
 #include "wx_util.h"
 
 using std::list;
 using std::string;
 using std::vector;
-using std::stringstream;
 using std::cout;
 using boost::optional;
 using boost::algorithm::split;
@@ -75,8 +75,17 @@ DolbyCertificateDialog::setup_countries ()
        
        _country->Append (_("Fetching..."));
        _country->SetSelection (0);
-       run_gui_loop ();
-       
+
+#ifdef DCPOMATIC_OSX
+       /* See DoremiCertificateDialog for discussion about this daft delay */
+       wxMilliSleep (200);
+#endif
+       ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_setup_countries, this));
+}
+
+void
+DolbyCertificateDialog::finish_setup_countries ()
+{
        list<string> const countries = get_dir ("");
        _country->Clear ();
        for (list<string>::const_iterator i = countries.begin(); i != countries.end(); ++i) {
@@ -90,8 +99,16 @@ DolbyCertificateDialog::country_selected ()
        _cinema->Clear ();
        _cinema->Append (_("Fetching..."));
        _cinema->SetSelection (0);
-       run_gui_loop ();
-       
+
+#ifdef DCPOMATIC_OSX
+       wxMilliSleep (200);
+#endif 
+       ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_country_selected, this));
+}
+
+void
+DolbyCertificateDialog::finish_country_selected ()
+{
        list<string> const cinemas = get_dir (wx_to_std (_country->GetStringSelection()));
        _cinema->Clear ();
        for (list<string>::const_iterator i = cinemas.begin(); i != cinemas.end(); ++i) {
@@ -105,8 +122,16 @@ DolbyCertificateDialog::cinema_selected ()
        _serial->Clear ();
        _serial->Append (_("Fetching..."));
        _serial->SetSelection (0);
-       run_gui_loop ();
 
+#ifdef DCPOMATIC_OSX
+       wxMilliSleep (200);
+#endif
+       ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_cinema_selected, this));
+}
+
+void
+DolbyCertificateDialog::finish_cinema_selected ()
+{
        string const dir = String::compose ("%1/%2", wx_to_std (_country->GetStringSelection()), wx_to_std (_cinema->GetStringSelection()));
        list<string> const zips = get_dir (dir);
 
@@ -130,8 +155,17 @@ void
 DolbyCertificateDialog::download ()
 {
        _message->SetLabel (_("Downloading certificate"));
-       run_gui_loop ();
 
+#ifdef DCPOMATIC_OSX
+       wxMilliSleep (200);
+#endif
+
+       ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_download, this));
+}
+
+void
+DolbyCertificateDialog::finish_download ()
+{
        string const zip = string_client_data (_serial->GetClientObject (_serial->GetSelection ()));
 
        string const file = String::compose (
index 194150363cb11e8504c464ab8a6f187678f1dee4..e9bbffda0ccadb8105d669dd6c56397478f16dba 100644 (file)
@@ -27,9 +27,13 @@ public:
 
 private:
        void download ();
+       void finish_download ();
        void setup_countries ();
+       void finish_setup_countries ();
        void country_selected ();
+       void finish_country_selected ();
        void cinema_selected ();
+       void finish_cinema_selected ();
        void serial_selected ();
        std::list<std::string> get_dir (std::string) const;
 
index b4cd14eaf200af95b740816e4a0c1db182a8b4e8..4b5d58b375536c475a26c6612e03bd0ae4c26351 100644 (file)
@@ -21,6 +21,7 @@
 #include <zip.h>
 #include "lib/compose.hpp"
 #include "lib/util.h"
+#include "lib/ui_signaller.h"
 #include "lib/internet.h"
 #include "doremi_certificate_dialog.h"
 #include "wx_util.h"
@@ -51,8 +52,18 @@ DoremiCertificateDialog::download ()
        }
 
        _message->SetLabel (_("Downloading certificate"));
-       run_gui_loop ();
 
+#ifdef DCPOMATIC_OSX   
+       /* This is necessary on OS X, otherwise the SetLabel() above has no visible effect */
+       wxMilliSleep (200);
+#endif 
+
+       ui_signaller->when_idle (boost::bind (&DoremiCertificateDialog::finish_download, this, serial));
+}
+
+void
+DoremiCertificateDialog::finish_download (string serial)
+{
        /* Try dcp2000, imb and ims prefixes (see mantis #375) */
 
        optional<string> error = get_from_zip_url (
index 28118472692e663a4172b46323f5b6afa96863d6..b249736eca9a39f64a725a362d4514c48a26ed82 100644 (file)
@@ -28,5 +28,7 @@ private:
        void download ();
         void set_sensitivity ();
 
+       void finish_download (std::string serial);
+
        wxTextCtrl* _serial;
 };
index 470be2d09186faff35e62c2b47597c882d63b7fc..5772f6391e7cc94dc9d898799ecdab2ab4f66edf 100644 (file)
@@ -61,6 +61,8 @@ public:
                        wxSizer* s = new wxBoxSizer (wxVERTICAL);
                        _add = new wxButton (this, wxID_ANY, _("Add..."));
                        s->Add (_add, 0, wxTOP | wxBOTTOM, 2);
+                       _copy = new wxButton (this, wxID_ANY, _("Copy..."));
+                       s->Add (_copy, 0, wxTOP | wxBOTTOM, 2);
                        _edit = new wxButton (this, wxID_ANY, _("Edit..."));
                        s->Add (_edit, 0, wxTOP | wxBOTTOM, 2);
                        _remove = new wxButton (this, wxID_ANY, _("Remove"));
@@ -74,6 +76,7 @@ public:
                }
 
                _add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::add_clicked, this));
+               _copy->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::copy_clicked, this));
                _edit->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::edit_clicked, this));
                _remove->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::remove_clicked, this));
 
@@ -121,6 +124,23 @@ private:
                dialog->Destroy ();
        }
 
+       void copy_clicked ()
+       {
+               int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+               if (item == -1) {
+                       return;
+               }
+
+               std::vector<T> all = _get ();
+               assert (item >= 0 && item < int (all.size ()));
+
+               T copy (all[item]);
+               add_to_control (copy);
+               
+               all.push_back (copy);
+               _set (all);
+       }
+
        void edit_clicked ()
        {
                int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
@@ -174,6 +194,7 @@ private:
        boost::function<std::string (T, int)> _column;
 
        wxButton* _add;
+       wxButton* _copy;
        wxButton* _edit;
        wxButton* _remove;
        wxListCtrl* _list;
index 854877ecec86d1e063b982a95dc6fc9222facac6..e73b272674ff802399817fd6dd7e803b68e53b53 100644 (file)
@@ -45,6 +45,7 @@
 #include "lib/playlist.h"
 #include "lib/content.h"
 #include "lib/content_factory.h"
+#include "lib/safe_stringstream.h"
 #include "timecode.h"
 #include "wx_util.h"
 #include "film_editor.h"
@@ -57,7 +58,6 @@
 
 using std::string;
 using std::cout;
-using std::stringstream;
 using std::pair;
 using std::fixed;
 using std::setprecision;
@@ -70,7 +70,7 @@ using boost::dynamic_pointer_cast;
 using boost::lexical_cast;
 
 /** @param f Film to edit */
-FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
+FilmEditor::FilmEditor (wxWindow* parent)
        : wxPanel (parent)
        , _menu (this)
        , _generally_sensitive (true)
@@ -86,7 +86,6 @@ FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
        make_dcp_panel ();
        _main_notebook->AddPage (_dcp_panel, _("DCP"), false);
        
-       set_film (f);
        connect_to_widgets ();
 
        JobManager::instance()->ActiveJobsChanged.connect (
@@ -94,7 +93,8 @@ FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
                );
 
        Config::instance()->Changed.connect (boost::bind (&FilmEditor::config_changed, this));
-       
+
+       set_film (shared_ptr<Film> ());
        SetSizerAndFit (s);
 }
 
@@ -115,11 +115,6 @@ FilmEditor::make_dcp_panel ()
        grid->Add (_name, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND | wxLEFT | wxRIGHT);
        ++r;
        
-       add_label_to_grid_bag_sizer (grid, _dcp_panel, _("DCP Name"), true, wxGBPosition (r, 0));
-       _dcp_name = new wxStaticText (_dcp_panel, wxID_ANY, wxT (""));
-       grid->Add (_dcp_name, wxGBPosition(r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
-       ++r;
-
        int flags = wxALIGN_CENTER_VERTICAL;
 #ifdef __WXOSX__
        flags |= wxALIGN_RIGHT;
@@ -131,6 +126,11 @@ FilmEditor::make_dcp_panel ()
        grid->Add (_edit_isdcf_button, wxGBPosition (r, 1), wxDefaultSpan);
        ++r;
 
+       add_label_to_grid_bag_sizer (grid, _dcp_panel, _("DCP Name"), true, wxGBPosition (r, 0));
+       _dcp_name = new wxStaticText (_dcp_panel, wxID_ANY, wxT (""));
+       grid->Add (_dcp_name, wxGBPosition(r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
+       ++r;
+
        add_label_to_grid_bag_sizer (grid, _dcp_panel, _("Container"), true, wxGBPosition (r, 0));
        _container = new wxChoice (_dcp_panel, wxID_ANY);
        grid->Add (_container, wxGBPosition (r, 1), wxDefaultSpan, wxEXPAND);
@@ -238,6 +238,7 @@ FilmEditor::connect_to_widgets ()
        _content->Bind          (wxEVT_COMMAND_LIST_ITEM_SELECTED,    boost::bind (&FilmEditor::content_selection_changed, this));
        _content->Bind          (wxEVT_COMMAND_LIST_ITEM_DESELECTED,  boost::bind (&FilmEditor::content_selection_changed, this));
        _content->Bind          (wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, boost::bind (&FilmEditor::content_right_click, this, _1));
+       _content->Bind          (wxEVT_DROP_FILES,                    boost::bind (&FilmEditor::content_files_dropped, this, _1));
        _content_add_file->Bind (wxEVT_COMMAND_BUTTON_CLICKED,        boost::bind (&FilmEditor::content_add_file_clicked, this));
        _content_add_folder->Bind (wxEVT_COMMAND_BUTTON_CLICKED,      boost::bind (&FilmEditor::content_add_folder_clicked, this));
        _content_remove->Bind   (wxEVT_COMMAND_BUTTON_CLICKED,        boost::bind (&FilmEditor::content_remove_clicked, this));
@@ -308,6 +309,8 @@ FilmEditor::make_content_panel ()
        _panels.push_back (_subtitle_panel);
        _timing_panel = new TimingPanel (this);
        _panels.push_back (_timing_panel);
+
+       _content->DragAcceptFiles (true);
 }
 
 /** Called when the name widget has been changed */
@@ -420,7 +423,7 @@ FilmEditor::film_changed (Film::Property p)
                return;
        }
 
-       stringstream s;
+       SafeStringStream s;
 
        for (list<FilmEditorPanel*>::iterator i = _panels.begin(); i != _panels.end(); ++i) {
                (*i)->film_changed (p);
@@ -471,6 +474,7 @@ FilmEditor::film_changed (Film::Property p)
        case Film::USE_ISDCF_NAME:
                checked_set (_use_isdcf_name, _film->use_isdcf_name ());
                setup_dcp_name ();
+               use_isdcf_name_changed ();
                break;
        case Film::ISDCF_METADATA:
                setup_dcp_name ();
@@ -534,6 +538,8 @@ FilmEditor::film_content_changed (int property)
                setup_content ();
        } else if (property == ContentProperty::POSITION) {
                setup_content ();
+       } else if (property == VideoContentProperty::VIDEO_SCALE) {
+               setup_dcp_name ();
        }
 }
 
@@ -702,6 +708,18 @@ FilmEditor::use_isdcf_name_toggled ()
        _film->set_use_isdcf_name (_use_isdcf_name->GetValue ());
 }
 
+void
+FilmEditor::use_isdcf_name_changed ()
+{
+       bool const i = _film->use_isdcf_name ();
+
+       if (!i) {
+               _film->set_name (_film->isdcf_name (true));
+       }
+
+       _edit_isdcf_button->Enable (i);
+}
+
 void
 FilmEditor::edit_isdcf_button_clicked ()
 {
@@ -836,8 +854,8 @@ void
 FilmEditor::content_remove_clicked ()
 {
        ContentList c = selected_content ();
-       if (c.size() == 1) {
-               _film->remove_content (c.front ());
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               _film->remove_content (*i);
        }
 
        content_selection_changed ();
@@ -864,21 +882,32 @@ FilmEditor::setup_content_sensitivity ()
        VideoContentList video_selection = selected_video_content ();
        AudioContentList audio_selection = selected_audio_content ();
 
-       _content_remove->Enable   (selection.size() == 1 && _generally_sensitive);
+       _content_remove->Enable   (!selection.empty() && _generally_sensitive);
        _content_earlier->Enable  (selection.size() == 1 && _generally_sensitive);
        _content_later->Enable    (selection.size() == 1 && _generally_sensitive);
        _content_timeline->Enable (!_film->content().empty() && _generally_sensitive);
 
-       _video_panel->Enable    (video_selection.size() > 0 && _generally_sensitive);
-       _audio_panel->Enable    (audio_selection.size() > 0 && _generally_sensitive);
+       _video_panel->Enable    (!video_selection.empty() && _generally_sensitive);
+       _audio_panel->Enable    (!audio_selection.empty() && _generally_sensitive);
        _subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast<FFmpegContent> (selection.front()) && _generally_sensitive);
-       _timing_panel->Enable   (selection.size() == 1 && _generally_sensitive);
+       _timing_panel->Enable   (!selection.empty() && _generally_sensitive);
 }
 
 ContentList
 FilmEditor::selected_content ()
 {
        ContentList sel;
+
+       if (!_film) {
+               return sel;
+       }
+
+       /* The list was populated using a sorted content list, so we must sort it here too
+          so that we can look up by index and get the right thing.
+       */
+       ContentList content = _film->content ();
+       sort (content.begin(), content.end(), ContentSorter ());
+       
        long int s = -1;
        while (true) {
                s = _content->GetNextItem (s, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
@@ -887,7 +916,7 @@ FilmEditor::selected_content ()
                }
 
                if (s < int (_film->content().size ())) {
-                       sel.push_back (_film->content()[s]);
+                       sel.push_back (content[s]);
                }
        }
 
@@ -978,7 +1007,7 @@ FilmEditor::set_selection (weak_ptr<Content> wc)
                if (content[i] == wc.lock ()) {
                        _content->SetItemState (i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
                } else {
-                       _content->SetItemState (i, 0, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
+                       _content->SetItemState (i, 0, wxLIST_STATE_SELECTED);
                }
        }
 }
@@ -1049,3 +1078,16 @@ FilmEditor::setup_frame_rate_widget ()
 
        _frame_rate_sizer->Layout ();
 }
+
+void
+FilmEditor::content_files_dropped (wxDropFilesEvent& event)
+{
+       if (!_film) {
+               return;
+       }
+       
+       wxString* paths = event.GetFiles ();
+       for (int i = 0; i < event.GetNumberOfFiles(); i++) {
+               _film->examine_and_add_content (content_factory (_film, wx_to_std (paths[i])));
+       }
+}
index 96cae3900d66d1b9aea29a4043e285f28dc81f2a..ba9ff6fa0cad78924f0b062fb7ab258135f5a9e5 100644 (file)
@@ -32,6 +32,7 @@
 class wxNotebook;
 class wxListCtrl;
 class wxListEvent;
+class wxGridBagSizer;
 class Film;
 class TimelineDialog;
 class Ratio;
@@ -45,7 +46,7 @@ class SubtitleContent;
 class FilmEditor : public wxPanel
 {
 public:
-       FilmEditor (boost::shared_ptr<Film>, wxWindow *);
+       FilmEditor (wxWindow *);
 
        void set_film (boost::shared_ptr<Film>);
        void set_selection (boost::weak_ptr<Content>);
@@ -67,6 +68,8 @@ public:
        AudioContentList selected_audio_content ();
        SubtitleContentList selected_subtitle_content ();
        FFmpegContentList selected_ffmpeg_content ();
+
+       void content_add_file_clicked ();
        
 private:
        void make_dcp_panel ();
@@ -78,11 +81,11 @@ private:
        void use_isdcf_name_toggled ();
        void edit_isdcf_button_clicked ();
        void content_selection_changed ();
-       void content_add_file_clicked ();
        void content_add_folder_clicked ();
        void content_remove_clicked ();
        void content_earlier_clicked ();
        void content_later_clicked ();
+       void content_files_dropped (wxDropFilesEvent& event);
        void container_changed ();
        void dcp_content_type_changed ();
        void scaler_changed ();
@@ -103,6 +106,7 @@ private:
        /* Handle changes to the model */
        void film_changed (Film::Property);
        void film_content_changed (int);
+       void use_isdcf_name_changed ();
 
        void set_general_sensitivity (bool);
        void setup_dcp_name ();
index 112736b679867252e08b7c1b9db8ccd404b43e67..54cd3e77dc30014816f35b90457d0014ea045f16 100644 (file)
@@ -53,7 +53,7 @@ using boost::dynamic_pointer_cast;
 using boost::weak_ptr;
 using libdcp::Size;
 
-FilmViewer::FilmViewer (shared_ptr<Film> f, wxWindow* p)
+FilmViewer::FilmViewer (wxWindow* p)
        : wxPanel (p)
        , _panel (new wxPanel (this))
        , _slider (new wxSlider (this, wxID_ANY, 0, 0, 4096))
@@ -103,8 +103,8 @@ FilmViewer::FilmViewer (shared_ptr<Film> f, wxWindow* p)
        _back_button->Bind    (wxEVT_COMMAND_BUTTON_CLICKED,       boost::bind (&FilmViewer::back_clicked,    this));
        _forward_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED,       boost::bind (&FilmViewer::forward_clicked, this));
 
-       set_film (f);
-
+       set_film (shared_ptr<Film> ());
+       
        JobManager::instance()->ActiveJobsChanged.connect (
                bind (&FilmViewer::active_jobs_changed, this, _1)
                );
index 1e5b6d34d119f2c3a160ea5cbd2822756453fb19..337b68446cf64bbd2b935ea6bcbda5cc11a12d77 100644 (file)
@@ -49,7 +49,7 @@ class PlayerVideoFrame;
 class FilmViewer : public wxPanel
 {
 public:
-       FilmViewer (boost::shared_ptr<Film>, wxWindow *);
+       FilmViewer (wxWindow *);
 
        void set_film (boost::shared_ptr<Film>);
 
index 668d713216e8ad49b1a40a8a9acd41b0ab7e62fd..74ac055082461c7897b58a0248e35785f9451858 100644 (file)
 #include <boost/algorithm/string.hpp>
 #include <wx/richtext/richtextctrl.h>
 #include "lib/film.h"
+#include "lib/ratio.h"
 #include "hints_dialog.h"
 
+using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
+
 HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> f)
        : wxDialog (parent, wxID_ANY, _("Hints"))
        , _film (f)
@@ -44,6 +48,7 @@ HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> f)
        boost::shared_ptr<Film> film = _film.lock ();
        if (film) {
                film->Changed.connect (boost::bind (&HintsDialog::film_changed, this));
+               film->ContentChanged.connect (boost::bind (&HintsDialog::film_changed, this));
        }
 
        film_changed ();
@@ -71,13 +76,39 @@ HintsDialog::film_changed ()
                _text->Newline ();
        }
 
+       ContentList content = film->content ();
+       int flat_or_narrower = 0;
+       int scope = 0;
+       for (ContentList::const_iterator i = content.begin(); i != content.end(); ++i) {
+               shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
+               if (vc) {
+                       Ratio const * r = vc->scale().ratio ();
+                       if (r && r->id() == "239") {
+                               ++scope;
+                       } else if (r && r->id() != "239" && r->id() != "full-frame") {
+                               ++flat_or_narrower;
+                       }
+               }
+       }
+
+       if (scope && !flat_or_narrower && film->container()->id() == "185") {
+               hint = true;
+               _text->WriteText (_("All of your content is in Scope (2.39:1) but your DCP's container is Flat (1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" tab."));
+               _text->Newline ();
+       }
+
+       if (!scope && flat_or_narrower && film->container()->id() == "239") {
+               hint = true;
+               _text->WriteText (_("All of your content is at 1.85:1 or narrower but your DCP's container is Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the \"DCP\" tab."));
+               _text->Newline ();
+       }
+       
        if (film->video_frame_rate() != 24 && film->video_frame_rate() != 48) {
                hint = true;
                _text->WriteText (wxString::Format (_("Your DCP frame rate (%d fps) may cause problems in a few (mostly older) projectors.  Use 24 or 48 frames per second to be on the safe side."), film->video_frame_rate()));
                _text->Newline ();
        }
 
-       ContentList content = film->content ();
        int vob = 0;
        for (ContentList::const_iterator i = content.begin(); i != content.end(); ++i) {
                if (boost::algorithm::starts_with ((*i)->path(0).filename().string(), "VTS_")) {
index 1b9e281a749c2ab58c9c7cf77b526072654c5ae5..5146243b412b0ede27ed94a132475d1a7fbcbbc4 100644 (file)
@@ -49,7 +49,8 @@ public:
                int n = 0;
                
                _name = new wxStaticText (panel, wxID_ANY, "");
-               _name->SetLabelMarkup ("<b>" + _job->name () + "</b>");
+               string const jn = "<b>" + _job->name () + "</b>";
+               _name->SetLabelMarkup (std_to_wx (jn));
                table->Insert (n, _name, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
                ++n;
        
@@ -201,14 +202,24 @@ JobManagerView::JobManagerView (wxWindow* parent, Buttons buttons)
        _panel->SetSizer (_table);
 
        SetScrollRate (0, 32);
+       EnableScrolling (false, true);
 
        Bind (wxEVT_TIMER, boost::bind (&JobManagerView::periodic, this));
        _timer.reset (new wxTimer (this));
        _timer->Start (1000);
-       
+
+       Bind (wxEVT_SIZE, boost::bind (&JobManagerView::sized, this, _1));
        JobManager::instance()->JobAdded.connect (bind (&JobManagerView::job_added, this, _1));
 }
 
+void
+JobManagerView::sized (wxSizeEvent& ev)
+{
+       _table->FitInside (_panel);
+       _table->Layout ();
+       ev.Skip ();
+}
+
 void
 JobManagerView::job_added (weak_ptr<Job> j)
 {
index c4bb1e2189b6e32850a0694c52e65121c957a316..83ce4ee5abb9d837eee80cd90df3800bb9892c80 100644 (file)
@@ -43,6 +43,7 @@ public:
 private:
        void job_added (boost::weak_ptr<Job>);
        void periodic ();
+       void sized (wxSizeEvent &);
 
        wxPanel* _panel;
        wxFlexGridSizer* _table;
index df4aa7d2e78a740c786caffb1250a798c065a864..4c4ef049b8156ceda036ce3600235a0dc2ac2b5b 100644 (file)
@@ -17,7 +17,6 @@
 
 */
 
-#include <sstream>
 #include "lib/film.h"
 #include "lib/exceptions.h"
 #include "job_wrapper.h"
index 8df94de9c5f06a986213d479d56e5463d83df51d..ebecd234c871894320c657edc996046eeabc8701 100644 (file)
@@ -161,9 +161,11 @@ KDMDialog::KDMDialog (wxWindow* parent, boost::shared_ptr<const Film> film)
 
        add_label_to_sizer (table, this, _("KDM type"), true);
        _type = new wxChoice (this, wxID_ANY);
-       _type->Append ("Modified Transitional 1");
-       _type->Append ("DCI Any");
-       _type->Append ("DCI Specific");
+       _type->Append ("Modified Transitional 1", ((void *) libdcp::KDM::MODIFIED_TRANSITIONAL_1));
+       if (!film->interop ()) {
+               _type->Append ("DCI Any", ((void *) libdcp::KDM::DCI_ANY));
+               _type->Append ("DCI Specific", ((void *) libdcp::KDM::DCI_SPECIFIC));
+       }
        table->Add (_type, 1, wxEXPAND);
        _type->SetSelection (0);
 
@@ -491,16 +493,7 @@ KDMDialog::write_to () const
 libdcp::KDM::Formulation
 KDMDialog::formulation () const
 {
-       switch (_type->GetSelection()) {
-       case 0:
-               return libdcp::KDM::MODIFIED_TRANSITIONAL_1;
-       case 1:
-               return libdcp::KDM::DCI_ANY;
-       case 2:
-               return libdcp::KDM::DCI_SPECIFIC;
-       default:
-               assert (false);
-       }
+       return (libdcp::KDM::Formulation) reinterpret_cast<intptr_t> (_type->GetClientData (_type->GetSelection()));
 }
 
 void
index 943da177d7dab8361bf596fb3528f320e8f755ef..324f266ccc51536c6e406c44b8fe0817b82c3126 100644 (file)
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:06+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 03:08+0100\n"
 "Last-Translator: Carsten Kurz\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: de\n"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -29,11 +29,11 @@ msgid ""
 msgstr ""
 "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr "(Passwort wird im Klartext gespeichert!)"
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(Programm zum Ã„ndern der Sprache neu starten)"
 
@@ -105,11 +105,11 @@ msgstr "Kino hinzufügen..."
 msgid "Add Screen..."
 msgstr "Saal hinzufügen..."
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Datei(en) hinzufügen..."
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Ordner hinzufügen..."
 
@@ -117,11 +117,27 @@ msgstr "Ordner hinzufügen..."
 msgid "Add..."
 msgstr "Hinzufügen..."
 
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
 msgid "Allow any DCP frame rate"
 msgstr "Auch Nicht-Standard-Bildraten erlauben (Vorsicht!)"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr "Grafik von"
 
@@ -153,7 +169,11 @@ msgstr ""
 "Der Ton von Kanal %d wird wird an den DCP Kanal %d mit %.1fdB Pegel "
 "weitergegeben."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+msgid "BCC address"
+msgstr "BCC: Adresse"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
 msgstr "Falsche Einstellung für %s (%s)"
@@ -182,7 +202,7 @@ msgstr "Aber ich nutze gegenwärtig Faderstellung"
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
 msgid "CC address"
 msgstr "CC: Adresse"
 
@@ -202,7 +222,7 @@ msgstr "CPL annotation text"
 msgid "Calculate..."
 msgstr "Berechne..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -210,8 +230,8 @@ msgstr "Abbrechen"
 msgid "Certificate"
 msgstr "Zertifikat"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 msgid "Certificate downloaded"
 msgstr "Zertifikat heruntergeladen"
 
@@ -227,11 +247,11 @@ msgstr "Kanal Verstärkung (+/-)"
 msgid "Channels"
 msgstr "Kanäle"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "Zeige bei Updateprüfung auch Test-Versionen an"
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Beim Start auf Updates Ã¼berprüfen."
 
@@ -239,11 +259,11 @@ msgstr "Beim Start auf Updates Ã¼berprüfen."
 msgid "Choose a file"
 msgstr "Datei auswählen"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Eine oder mehrere Dateien auswählen"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Ordner wählen"
 
@@ -251,7 +271,7 @@ msgstr "Ordner wählen"
 msgid "Cinema"
 msgstr "Kino"
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 msgid "Colour Conversions"
 msgstr "Farbumwandlungen"
 
@@ -260,7 +280,7 @@ msgstr "Farbumwandlungen"
 msgid "Colour conversion"
 msgstr "Farbumwandlung"
 
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
 msgid "Config|Timing"
 msgstr "Timing"
 
@@ -290,6 +310,10 @@ msgstr "Inhalt Version"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "Inhalt Video ist %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "Ton konnte nicht analysiert werden"
@@ -299,7 +323,7 @@ msgstr "Ton konnte nicht analysiert werden"
 msgid "Could not decode video for view (%s)"
 msgstr "Bild konnte nicht zur Vorschau dekodiert werden (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "DCP konnte nicht erstellt werden: %s"
@@ -330,7 +354,7 @@ msgstr "Eigene"
 msgid "DCP"
 msgstr "DCP"
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "DCP Name"
 
@@ -347,43 +371,43 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "DCP-o-matic Ton - %s"
 
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
 msgid "Default ISDCF name details"
 msgstr "Standard ISDCF Name Details"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 msgid "Default JPEG2000 bandwidth"
 msgstr "Standard JPEG2000 Datenrate"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
-msgstr "Standard Ton Verzögerung"
+msgstr "Standard Ton Verzögerung (+/-)"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Standard Container"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Standard Inhalt Typ"
 
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Standard 'creator' (DCI)"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Standard Ordner für neue Projekte"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Standard Länge für Standbilder"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 msgid "Default issuer"
 msgstr "Standard 'issuer' (DCI)"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Vorgaben"
 
@@ -391,7 +415,7 @@ msgstr "Vorgaben"
 msgid "Delay"
 msgstr "Verzögerung (+/-)"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Details..."
 
@@ -409,11 +433,11 @@ msgstr "Dolby"
 msgid "Doremi"
 msgstr "Doremi"
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr "Doremi Seriennummern müssen aus 6 Zahlen bestehen!"
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr "Nach unten"
 
@@ -425,8 +449,8 @@ msgstr "Download"
 msgid "Download certificate"
 msgstr "Lade Zertifikat"
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr "Zertifikat wird heruntergeladen..."
 
@@ -438,25 +462,25 @@ msgstr "Kino bearbeiten..."
 msgid "Edit Screen..."
 msgstr "Saal bearbeiten..."
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Bearbeiten..."
 
 #: src/wx/cinema_dialog.cc:31
 msgid "Email address for KDM delivery"
-msgstr "Absender Email Adresse"
+msgstr "KDM Empfänger Email Adresse"
 
 #: src/wx/servers_list_dialog.cc:30
 msgid "Encoding Servers"
-msgstr "Enkodier Server"
+msgstr "Encoding Server"
 
 #: src/wx/film_editor.cc:162
 msgid "Encrypted"
-msgstr "Verschlüsselt (-> KDM Erstellung)"
+msgstr "Verschlüsselt (->für KDM Erstellung)"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
 msgstr "Fehler"
 
@@ -464,8 +488,9 @@ msgstr "Fehler"
 msgid "Facility (e.g. DLA)"
 msgstr "Hersteller (z.B. DXL)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 msgid "Fetching..."
 msgstr "Zugriff..."
 
@@ -507,7 +532,7 @@ msgstr ""
 msgid "From"
 msgstr "Von"
 
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
 msgid "From address"
 msgstr "Absenderadresse"
 
@@ -515,7 +540,7 @@ msgstr "Absenderadresse"
 msgid "Full"
 msgstr "Voll"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr "Gesamtlänge"
 
@@ -536,7 +561,7 @@ msgstr "Abschwächung des Kanals %d im DCP Kanal %d"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
 msgstr "Allgemein"
 
@@ -544,7 +569,7 @@ msgstr "Allgemein"
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
 msgstr "Tipps"
 
@@ -564,11 +589,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Ich möchte bei dieser Faderstellung spielen"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "IP Adresse"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 msgid "IP address / host name"
 msgstr "IP Adresse / Host Name"
 
@@ -592,17 +617,21 @@ msgstr "JPEG2000 Datenrate"
 msgid "Join"
 msgstr "Verbinden"
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 msgid "KDM Email"
 msgstr "KDM Email"
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
 #: src/wx/kdm_dialog.cc:99
 msgid "KDM|Timing"
 msgstr "Zeitfenster"
 
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
-msgstr "Lücken automatisch schließen"
+msgstr "Lücken in Zeitleiste automatisch schließen"
 
 #: src/wx/audio_mapping_view.cc:277
 msgid "L"
@@ -628,23 +657,27 @@ msgstr "Linearisiere Eingangs Gamma für niedrige Werte"
 msgid "Load from file..."
 msgstr "Lade aus Datei..."
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
 msgstr "Log"
 
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "SL"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "FEHLT:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 msgid "Mail password"
 msgstr "Mail Passwort"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 msgid "Mail user name"
 msgstr "Mail/SMTP Server Benutzername/Login"
 
@@ -660,11 +693,11 @@ msgstr "Zielhelligkeit (z.B. '4fL' für 3D)"
 msgid "Matrix"
 msgstr "Matrix"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 msgid "Maximum JPEG2000 bandwidth"
-msgstr "Maximale JPEG2000 Datenrate(Vorsicht!)"
+msgstr "Maximale JPEG2000 Datenrate (Vorsicht!)"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr "Mbit/s"
@@ -708,7 +741,7 @@ msgstr "Aus"
 msgid "Other"
 msgstr "Andere"
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
 msgstr "Ausgehender/SMTP Mail Server"
 
@@ -729,11 +762,11 @@ msgstr "DCP Paket Typ (z.B. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Mit Schwarz gefüllt auf %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 msgid "Password"
 msgstr "Passwort"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pause"
 
@@ -745,7 +778,7 @@ msgstr "Spitze"
 msgid "Play"
 msgstr "Abspielen"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr "Abspiellänge"
 
@@ -753,7 +786,7 @@ msgstr "Abspiellänge"
 msgid "Please wait; audio is being analysed..."
 msgstr "Bitte warten; Ton wird analysiert..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Startposition"
 
@@ -781,8 +814,8 @@ msgstr "Rc"
 msgid "Red band"
 msgstr "Red band (USA, für explizite Inhalte)"
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Entfernen"
 
@@ -806,7 +839,7 @@ msgstr "Inhalt wiederholen"
 msgid "Repeat..."
 msgstr "Wiederhole..."
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
 msgstr "Auf Standardtext zurücksetzen"
 
@@ -814,7 +847,7 @@ msgstr "Auf Standardtext zurücksetzen"
 msgid "Resolution"
 msgstr "Auflösung"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr "Weiter"
 
@@ -834,13 +867,9 @@ msgstr "SR"
 msgid "SMPTE"
 msgstr "SMPTE"
 
-#: src/wx/subtitle_panel.cc:62
-msgid "Scale"
-msgstr "Skalierer"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
-msgstr "Skaliere zu"
+msgstr "Skaliere auf"
 
 #: src/wx/video_panel.cc:316
 #, c-format
@@ -849,13 +878,13 @@ msgstr "Skaliert auf %dx%d (%.2f:1)\n"
 
 #: src/wx/film_editor.cc:195
 msgid "Scaler"
-msgstr "Skalierer"
+msgstr "Skalierverfahren"
 
 #: src/wx/kdm_dialog.cc:60
 msgid "Screens"
 msgstr "Saal"
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 msgid "Select CPL XML file"
 msgstr "CPL XML Datei auswählen"
 
@@ -863,7 +892,7 @@ msgstr "CPL XML Datei auswählen"
 msgid "Select Certificate File"
 msgstr "Zertifikat Datei auswählen"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Per Email senden"
 
@@ -879,19 +908,19 @@ msgstr "Server"
 msgid "Server manufacturer"
 msgstr "Server Hersteller"
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr "Server Seriennummer"
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 msgid "Servers"
-msgstr "Server"
+msgstr "Encoding Server"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr "Setzen"
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
 msgstr "Sprache setzen"
 
@@ -919,14 +948,18 @@ msgstr "Stabile Version"
 msgid "Standard"
 msgstr "Standard"
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 msgid "Stream"
-msgstr "Tonspur"
+msgstr "Spur"
 
 #: src/wx/isdcf_metadata_dialog.cc:47
 msgid "Studio (e.g. TCF)"
 msgstr "Studio (z.B. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Untertitel Sprache (z.B. EN)"
@@ -935,7 +968,7 @@ msgstr "Untertitel Sprache (z.B. EN)"
 msgid "Subtitles"
 msgstr "Untertitel"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr "Unterstützt durch"
 
@@ -943,7 +976,7 @@ msgstr "Unterstützt durch"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 msgid "Target path"
 msgstr "Zielpfad"
 
@@ -959,7 +992,7 @@ msgstr "Gebiet (z.B. UK)"
 msgid "Test version "
 msgstr "Test Version"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 msgid "Tested by"
 msgstr "Getestet von"
 
@@ -973,7 +1006,7 @@ msgstr ""
 "Entweder nochmals mit den richtigen Inhaltsdateien probieren oder Fehlende "
 "löschen."
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "Keine Warnungen: Alles sieht gut aus!"
 
@@ -981,7 +1014,7 @@ msgstr "Keine Warnungen: Alles sieht gut aus!"
 msgid "There is not enough free memory to do that."
 msgstr "Für diese Operation ist nicht genug freier Speicher verfügbar."
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
 msgstr "Dies ist keine gültige CPL Datei"
 
@@ -989,7 +1022,7 @@ msgstr "Dies ist keine gültige CPL Datei"
 msgid "Threads"
 msgstr "Threads"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "Auf diesem Rechner zu benutzende CPU-Threads"
 
@@ -1001,11 +1034,11 @@ msgstr "Zeit"
 msgid "Timeline"
 msgstr "Zeitleiste"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr "Zeitleiste..."
 
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
 msgid "Timing|Timing"
 msgstr "Trimmen"
 
@@ -1013,15 +1046,15 @@ msgstr "Trimmen"
 msgid "Top crop"
 msgstr "Oben beschneiden"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr "Ãœbersetzt von"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
 msgstr "Schnitt vom Ende"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
 msgstr "Schnitt vom Anfang"
 
@@ -1029,7 +1062,7 @@ msgstr "Schnitt vom Anfang"
 msgid "Type"
 msgstr "Typ"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 msgid "Unexpected certificate filename form"
 msgstr "Ungültige Zertifikats-Datei"
 
@@ -1041,7 +1074,7 @@ msgstr "Unbekannt"
 msgid "Until"
 msgstr "Bis"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Nach oben"
 
@@ -1049,11 +1082,11 @@ msgstr "Nach oben"
 msgid "Update"
 msgstr "Update"
 
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
 msgid "Use ISDCF name"
 msgstr "ISDCF Name benutzen"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
 msgstr "Alle verfügbaren Server im Subnetz benutzen"
 
@@ -1065,7 +1098,7 @@ msgstr "Beste benutzen"
 msgid "Use preset"
 msgstr "Preset benutzen"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Benutzer Name"
 
@@ -1077,11 +1110,11 @@ msgstr "VI"
 msgid "Video"
 msgstr "Bild"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "Bildwiederholrate"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
 msgstr "Warnungen"
 
@@ -1089,7 +1122,7 @@ msgstr "Warnungen"
 msgid "With Subtitles"
 msgstr "Mit Untertitelung"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr "Speichern nach"
 
@@ -1101,11 +1134,21 @@ msgstr "Geschrieben von"
 msgid "X Offset"
 msgstr "Horizontale Verschiebung"
 
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Größe"
+
 #: src/wx/subtitle_panel.cc:53
 msgid "Y Offset"
 msgstr "Vertikale Verschiebung"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Größe"
+
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1114,7 +1157,7 @@ msgstr ""
 "Sie haben %d Dateien die wie VOB Dateien einer DVD aussehen. Sie sollten sie "
 "verbinden um einen sanften Ãœbergang zwischen den Dateien zu haben."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1124,7 +1167,7 @@ msgstr ""
 "Probleme verursachen. Um auf der sicheren Seite zu sein sollten Sie 24 oder "
 "48 Bilder/s benutzen."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
@@ -1132,7 +1175,7 @@ msgstr ""
 "Ihr DCP hat eine ungerade Anzahl an Tonkanälen. Das wird wahrscheinlich zu "
 "Abspielproblemen führen."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1157,11 +1200,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1171,12 +1214,15 @@ msgstr "Standbild"
 
 #: src/wx/repeat_dialog.cc:28
 msgid "times"
-msgstr "Zeiten"
+msgstr "mal"
 
 #: src/wx/timeline.cc:241
 msgid "video"
 msgstr "Bild"
 
+#~ msgid "Default creator"
+#~ msgstr "Standard 'creator' (DCI)"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Verstärkung"
 
index d84e5355c09821e12e57c37366de44c21c6107bd..3d99cd3da27ca13e58acc4e991a9013ca26685a6 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libdcpomatic-wx\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-04-20 12:06-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -18,7 +18,7 @@ msgstr ""
 "X-Generator: Poedit 1.6.4\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -28,11 +28,11 @@ msgid ""
 msgstr ""
 "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr "(claves guardadas como texto plano en el disco)"
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(reinicia DCP-o-matic para ver el cambio de idioma)"
 
@@ -106,11 +106,11 @@ msgstr "Añadir cine..."
 msgid "Add Screen..."
 msgstr "Añadir pantalla..."
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Añadir fichero(s)..."
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Añadir carpeta..."
 
@@ -118,12 +118,28 @@ msgstr "Añadir carpeta..."
 msgid "Add..."
 msgstr "Añadir..."
 
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
 #, fuzzy
 msgid "Allow any DCP frame rate"
 msgstr "Velocidad de imagen"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr "Grafismo de"
 
@@ -152,7 +168,12 @@ msgid ""
 "%.1fdB."
 msgstr "El audio del canal %d pasará al canal %d del DCP con ganancia %.1fdB."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Dirección IP"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
 msgstr "Configuración erronea para %s (%s)"
@@ -181,7 +202,7 @@ msgstr "pero tengo que usar el fader a"
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
 #, fuzzy
 msgid "CC address"
 msgstr "Dirección IP"
@@ -203,7 +224,7 @@ msgstr ""
 msgid "Calculate..."
 msgstr "Calcular..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -211,8 +232,8 @@ msgstr "Cancelar"
 msgid "Certificate"
 msgstr "Certificado"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 msgid "Certificate downloaded"
 msgstr "Certificado descargado"
 
@@ -228,11 +249,11 @@ msgstr "Ganancia del canal"
 msgid "Channels"
 msgstr "Canales"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "Buscar actualizaciones de prueba y estables"
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Buscar actualizaciones al iniciar"
 
@@ -240,11 +261,11 @@ msgstr "Buscar actualizaciones al iniciar"
 msgid "Choose a file"
 msgstr "Elige un fichero"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Elegir un fichero o ficheros"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Elige una carpeta"
 
@@ -252,7 +273,7 @@ msgstr "Elige una carpeta"
 msgid "Cinema"
 msgstr "Cine"
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 msgid "Colour Conversions"
 msgstr "Conversiones de color"
 
@@ -261,7 +282,7 @@ msgstr "Conversiones de color"
 msgid "Colour conversion"
 msgstr "Conversión de color"
 
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
 #, fuzzy
 msgid "Config|Timing"
 msgstr "Tiempo"
@@ -292,6 +313,10 @@ msgstr "Versión del contenido"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "El video es %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "No se pudo analizar el audio."
@@ -301,7 +326,7 @@ msgstr "No se pudo analizar el audio."
 msgid "Could not decode video for view (%s)"
 msgstr "No se pudo decodificar el vídeo para mostrarlo (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "No se pudo crear el DCP: %s"
@@ -332,7 +357,7 @@ msgstr "Personalizado"
 msgid "DCP"
 msgstr "DCP"
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "Nombre DCP"
 
@@ -349,44 +374,44 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Audio DCP-o-matic - %s"
 
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
 #, fuzzy
 msgid "Default ISDCF name details"
 msgstr "Detalles por defecto del nombre DCI"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 msgid "Default JPEG2000 bandwidth"
 msgstr "Ancho de banda JPEG2000 por defecto"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
 msgstr "Retardo de audio por defecto"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Contenedor por defecto"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Tipo de contenido por defecto"
 
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Creador por defecto"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Carpeta por defecto para nuevas películas"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Duración por defecto de las imágenes fijas"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 msgid "Default issuer"
 msgstr "Emisor por defecto"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Por defecto"
 
@@ -395,7 +420,7 @@ msgstr "Por defecto"
 msgid "Delay"
 msgstr "Retardo del audio"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Detalles..."
 
@@ -413,11 +438,11 @@ msgstr "Dolby"
 msgid "Doremi"
 msgstr "Doremi"
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr "Los números de serie de Doremi deben tener 6 cifras"
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr "Bajar"
 
@@ -429,8 +454,8 @@ msgstr "Descargar"
 msgid "Download certificate"
 msgstr "Descargar certificado"
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr "Descargando certificado"
 
@@ -442,9 +467,9 @@ msgstr "Editar cine..."
 msgid "Edit Screen..."
 msgstr "Editar pantalla..."
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Editar..."
 
@@ -460,7 +485,7 @@ msgstr "Servidores de codificación"
 msgid "Encrypted"
 msgstr "Encriptado"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
 msgstr ""
 
@@ -468,8 +493,9 @@ msgstr ""
 msgid "Facility (e.g. DLA)"
 msgstr "Compañía (ej. DLA)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 msgid "Fetching..."
 msgstr "Recuperando..."
 
@@ -510,7 +536,7 @@ msgstr ""
 msgid "From"
 msgstr "De"
 
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
 #, fuzzy
 msgid "From address"
 msgstr "Dirección IP"
@@ -519,7 +545,7 @@ msgstr "Dirección IP"
 msgid "Full"
 msgstr "Completo"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr "Duración completa"
 
@@ -540,7 +566,7 @@ msgstr "Ganancia del canal %d en el canal %d del DCP"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
 msgstr ""
 
@@ -548,7 +574,7 @@ msgstr ""
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
 msgstr "Pistas"
 
@@ -568,11 +594,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Quiero reproducir con el fader a"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "Dirección IP"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 msgid "IP address / host name"
 msgstr "Dirección IP / nombre"
 
@@ -597,16 +623,20 @@ msgstr "Ancho de banda JPEG2000"
 msgid "Join"
 msgstr "Unir"
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 msgid "KDM Email"
 msgstr "Email KDM"
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
 #: src/wx/kdm_dialog.cc:99
 #, fuzzy
 msgid "KDM|Timing"
 msgstr "Tiempo"
 
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
 msgstr "Mantener el video secuencia"
 
@@ -634,23 +664,27 @@ msgstr "Hacer lineal la curva de gamma de entrada para valores bajos"
 msgid "Load from file..."
 msgstr "Cargar de fichero..."
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
 msgstr ""
 
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "Ls"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "FALTA:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 msgid "Mail password"
 msgstr "Clave del correo"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 msgid "Mail user name"
 msgstr "Usuario del correo"
 
@@ -666,11 +700,11 @@ msgstr ""
 msgid "Matrix"
 msgstr "Matriz"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 msgid "Maximum JPEG2000 bandwidth"
 msgstr "Ancho de banda JPEG2000 máximo"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr "Mbit/s"
@@ -714,7 +748,7 @@ msgstr "Off"
 msgid "Other"
 msgstr "Otros"
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
 msgstr "Servidor de salida de correo"
 
@@ -736,11 +770,11 @@ msgstr "Tipo de paquete (ej. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Completado con negro hasta %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 msgid "Password"
 msgstr "Clave"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pausa"
 
@@ -752,7 +786,7 @@ msgstr "Pico"
 msgid "Play"
 msgstr "Reproducir"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr "Duración"
 
@@ -760,7 +794,7 @@ msgstr "Duración"
 msgid "Please wait; audio is being analysed..."
 msgstr "Por favor espere, el audio está siendo analizado..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Posición"
 
@@ -788,8 +822,8 @@ msgstr "Rc"
 msgid "Red band"
 msgstr ""
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Quitar"
 
@@ -813,7 +847,7 @@ msgstr "Repetir contenido"
 msgid "Repeat..."
 msgstr "Repetir..."
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
 msgstr ""
 
@@ -821,7 +855,7 @@ msgstr ""
 msgid "Resolution"
 msgstr "Resolución"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr "Continuar"
 
@@ -841,11 +875,6 @@ msgstr "Rs"
 msgid "SMPTE"
 msgstr "SMPTE"
 
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Escalador"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
 msgstr "Redimensionar a"
@@ -864,7 +893,7 @@ msgstr "Escalador"
 msgid "Screens"
 msgstr "Añadir pantalla..."
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 #, fuzzy
 msgid "Select CPL XML file"
 msgstr "Seleccionar fichero de audio"
@@ -873,7 +902,7 @@ msgstr "Seleccionar fichero de audio"
 msgid "Select Certificate File"
 msgstr "Seleccionar fichero de certificado"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Enviar por email"
 
@@ -890,19 +919,19 @@ msgstr "Servidor"
 msgid "Server manufacturer"
 msgstr "Número de serie del servidor"
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr "Número de serie del servidor"
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 msgid "Servers"
 msgstr "Servidores"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr "Seleccionar"
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
 msgstr "Seleccionar idioma"
 
@@ -930,7 +959,7 @@ msgstr "Versión estable"
 msgid "Standard"
 msgstr "Estandard"
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 #, fuzzy
 msgid "Stream"
 msgstr "Flujo"
@@ -939,6 +968,10 @@ msgstr "Flujo"
 msgid "Studio (e.g. TCF)"
 msgstr "Estudio (ej. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Idioma del subtítulo (ej. EN)"
@@ -947,7 +980,7 @@ msgstr "Idioma del subtítulo (ej. EN)"
 msgid "Subtitles"
 msgstr "Subtítulos"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr "Soportado por"
 
@@ -955,7 +988,7 @@ msgstr "Soportado por"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 msgid "Target path"
 msgstr "Ruta"
 
@@ -972,7 +1005,7 @@ msgstr "Territorio (ej. ES)"
 msgid "Test version "
 msgstr "Versión en prueba"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 msgid "Tested by"
 msgstr "Comprobado por"
 
@@ -985,7 +1018,7 @@ msgstr ""
 "El fichero(s) especificados no es el mismo que el ausente. Puedes probar de "
 "nuevo con el fichero correcto o eliminar el contenido ausente."
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "No hay recomendaciones: Â¡todo parece bien!"
 
@@ -993,7 +1026,7 @@ msgstr "No hay recomendaciones: Â¡todo parece bien!"
 msgid "There is not enough free memory to do that."
 msgstr "No hay suficiente memoria para hacer eso."
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
 msgstr ""
 
@@ -1001,7 +1034,7 @@ msgstr ""
 msgid "Threads"
 msgstr "Hilos"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "Hilos a utilizar para la codificación en esta máquina"
 
@@ -1013,11 +1046,11 @@ msgstr "Tiempo"
 msgid "Timeline"
 msgstr "Línea de tiempo"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr "Linea de tiempo..."
 
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
 #, fuzzy
 msgid "Timing|Timing"
 msgstr "Tiempo"
@@ -1026,15 +1059,15 @@ msgstr "Tiempo"
 msgid "Top crop"
 msgstr "Recortar arriba"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr "Traducido por"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
 msgstr "Recortar del final"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
 msgstr "Recortar del inicio"
 
@@ -1042,7 +1075,7 @@ msgstr "Recortar del inicio"
 msgid "Type"
 msgstr "Tipo"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 msgid "Unexpected certificate filename form"
 msgstr "Nombre inesperado del fichero de certificado"
 
@@ -1054,7 +1087,7 @@ msgstr "Desconocido"
 msgid "Until"
 msgstr "Hasta"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Subir"
 
@@ -1062,12 +1095,12 @@ msgstr "Subir"
 msgid "Update"
 msgstr "Actualizar"
 
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
 #, fuzzy
 msgid "Use ISDCF name"
 msgstr "Usar el nombre DCI"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
 msgstr "Usar todos los servidores"
 
@@ -1079,7 +1112,7 @@ msgstr "Usar la mejor"
 msgid "Use preset"
 msgstr "Usar por defecto"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Nombre de usuario"
 
@@ -1091,11 +1124,11 @@ msgstr "VI"
 msgid "Video"
 msgstr "Vídeo"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "Velocidad de imagen"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
 msgstr ""
 
@@ -1103,7 +1136,7 @@ msgstr ""
 msgid "With Subtitles"
 msgstr "Con subtítulos"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr "Escribe a"
 
@@ -1116,12 +1149,22 @@ msgstr "Escrito por"
 msgid "X Offset"
 msgstr "Desplazamiento en X"
 
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Escalador"
+
 #: src/wx/subtitle_panel.cc:53
 #, fuzzy
 msgid "Y Offset"
 msgstr "Desplazamiento en Y"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Escalador"
+
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1130,7 +1173,7 @@ msgstr ""
 "Hay %d ficheros que parecen VOBs en el DVD. Deberías unirlos para asegurarte "
 "transiciones suaves."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1140,7 +1183,7 @@ msgstr ""
 "proyectores (sobre todo antiguos).  Utiliza 24 o 48 imágenes por segundo "
 "para asegurarte."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
@@ -1148,7 +1191,7 @@ msgstr ""
 "Tu DCP tiene un número impar de canales de audio. Es muy probable que cause "
 "problemas de reproducción."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1173,11 +1216,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1193,6 +1236,9 @@ msgstr "veces"
 msgid "video"
 msgstr "vídeo"
 
+#~ msgid "Default creator"
+#~ msgstr "Creador por defecto"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Ganancia del audio"
 
index 766bd3ad3f56cef828d66bc1db7553e26ac464da..79c18feb2b3ad97b8ecbc6143c88ce426f127d7c 100644 (file)
@@ -7,18 +7,18 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 16:08+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 11:27+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
 "Language-Team: \n"
 "Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -29,11 +29,11 @@ msgstr ""
 "(C) 2012-2014 par Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
 "Laursen"
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr "(le mot de passe sera enregistré sur le disque dur au format texte)"
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(redémarrez DCP-o-matic pour appliquer le changement de langue)"
 
@@ -105,11 +105,11 @@ msgstr "Ajout cinéma"
 msgid "Add Screen..."
 msgstr "Ajout une salle"
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Ajout fichier(s)..."
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Ajout dossier..."
 
@@ -117,11 +117,27 @@ msgstr "Ajout dossier..."
 msgid "Add..."
 msgstr "Ajouter..."
 
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
 msgid "Allow any DCP frame rate"
 msgstr "Autoriser toutes cadences"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr "Thème par"
 
@@ -153,14 +169,19 @@ msgstr ""
 "Le son du canal audio %d sera transféré au canal %d du DCP avec un gain de "
 "%.1fdB."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Adresse CC"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
-msgstr "Mauvais paramètre pour %s (%s)"
+msgstr "Mauvais réglage pour %s (%s)"
 
 #: src/wx/video_panel.cc:121
 msgid "Bottom crop"
-msgstr "Découpe bas"
+msgstr "Rogner en bas"
 
 #: src/wx/dir_picker_ctrl.cc:37 src/wx/kdm_dialog.cc:134
 msgid "Browse..."
@@ -176,16 +197,15 @@ msgstr "Ar.D"
 
 #: src/wx/gain_calculator_dialog.cc:32
 msgid "But I have to use fader"
-msgstr "Je souhaite utiliser ce volume"
+msgstr "Mais je dois mixer"
 
 #: src/wx/audio_mapping_view.cc:285
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
-#, fuzzy
+#: src/wx/config_dialog.cc:679
 msgid "CC address"
-msgstr "Adresse IP"
+msgstr "Adresse CC"
 
 #: src/wx/kdm_dialog.cc:125 src/wx/kdm_dialog.cc:131
 msgid "CPL"
@@ -203,7 +223,7 @@ msgstr "Commentaire CPL"
 msgid "Calculate..."
 msgstr "Calcul..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Annuler"
 
@@ -211,8 +231,8 @@ msgstr "Annuler"
 msgid "Certificate"
 msgstr "Certificat"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 msgid "Certificate downloaded"
 msgstr "Certificat téléchargé"
 
@@ -228,11 +248,11 @@ msgstr "Gain Canal"
 msgid "Channels"
 msgstr "Canaux"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "Recherche toutes mises Ã  jour : test et stables."
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Recherche de mises Ã  jour au démarrage."
 
@@ -240,11 +260,11 @@ msgstr "Recherche de mises Ã  jour au démarrage."
 msgid "Choose a file"
 msgstr "Choisissez un fichier"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Choisissez un ou plusieurs fichiers"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Choisissez un dossier"
 
@@ -252,7 +272,7 @@ msgstr "Choisissez un dossier"
 msgid "Cinema"
 msgstr "Cinéma"
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 msgid "Colour Conversions"
 msgstr "Conversions Couleurs"
 
@@ -261,10 +281,9 @@ msgstr "Conversions Couleurs"
 msgid "Colour conversion"
 msgstr "Espace Couleurs"
 
-#: src/wx/config_dialog.cc:793
-#, fuzzy
+#: src/wx/config_dialog.cc:819
 msgid "Config|Timing"
-msgstr "Durée"
+msgstr "Temps"
 
 #: src/wx/film_editor.cc:134
 msgid "Container"
@@ -292,6 +311,10 @@ msgstr "Version du contenu"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "Le contenu vidéo est %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "Analyse du son impossible"
@@ -301,15 +324,15 @@ msgstr "Analyse du son impossible"
 msgid "Could not decode video for view (%s)"
 msgstr "Décodage de la vidéo pour visualisation impossible (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "Impossible de créer le DCP : %s"
 
 #: src/wx/screen_dialog.cc:95
-#, fuzzy, c-format
+#, c-format
 msgid "Could not read certificate file (%s)"
-msgstr "Ouverture du contenu impossible (%s)"
+msgstr "Lecture du ficher de certificat (%s) impossible"
 
 #: src/wx/dolby_certificate_dialog.cc:39
 msgid "Country"
@@ -322,7 +345,7 @@ msgstr "Créer dans le dossier"
 #: src/wx/video_panel.cc:304
 #, c-format
 msgid "Cropped to %dx%d (%.2f:1)\n"
-msgstr "Découpe de %dx%d (%.2f:1)\n"
+msgstr "Rognage de %dx%d (%.2f:1)\n"
 
 #: src/wx/video_panel.cc:244
 msgid "Custom"
@@ -332,7 +355,7 @@ msgstr "Personnalisé"
 msgid "DCP"
 msgstr "DCP"
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "Nom du DCP"
 
@@ -349,52 +372,51 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Son DCP-o-matic  - %s"
 
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
 msgid "Default ISDCF name details"
 msgstr "Nom ISDCF par défaut"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 msgid "Default JPEG2000 bandwidth"
 msgstr "Qualité JPEG2000 par défaut"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
-msgstr "Délais audio par défaut"
+msgstr "Délai audio par défaut"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Format par défaut"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Catégorie par défaut"
 
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Créateur par défaut"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Dossier par défaut pour les DCP"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Durée par défaut des images fixes"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 msgid "Default issuer"
 msgstr "Labo par défaut"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Par défaut"
 
 #: src/wx/audio_panel.cc:67
-#, fuzzy
 msgid "Delay"
-msgstr "Délai audio"
+msgstr "Délai"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Détails..."
 
@@ -412,11 +434,11 @@ msgstr "Dolby"
 msgid "Doremi"
 msgstr "Doremi"
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr "Les numéros de série Doremi doivent Ãªtre composés de 6 chiffres"
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr "Descendre"
 
@@ -428,8 +450,8 @@ msgstr "Télécharger"
 msgid "Download certificate"
 msgstr "Téléchargement Certificat"
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr "Téléchargement Certificat en cours"
 
@@ -441,9 +463,9 @@ msgstr "Éditer le cinéma"
 msgid "Edit Screen..."
 msgstr "Éditer la salle"
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Éditer..."
 
@@ -459,7 +481,7 @@ msgstr "Serveurs Encodage"
 msgid "Encrypted"
 msgstr "Crypté"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
 msgstr "Erreurs"
 
@@ -467,8 +489,9 @@ msgstr "Erreurs"
 msgid "Facility (e.g. DLA)"
 msgstr "Laboratoire (ex. DLA)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 msgid "Fetching..."
 msgstr "Obtention..."
 
@@ -508,22 +531,21 @@ msgstr "Création de DCP libre et gratuit depuis presque tout."
 msgid "From"
 msgstr "À partir du"
 
-#: src/wx/config_dialog.cc:673
-#, fuzzy
+#: src/wx/config_dialog.cc:675
 msgid "From address"
-msgstr "Adresse IP"
+msgstr "Adresse source"
 
 #: src/wx/audio_mapping_view.cc:133
 msgid "Full"
 msgstr "Plein"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr "Durée totale"
 
 #: src/wx/audio_panel.cc:52
 msgid "Gain"
-msgstr ""
+msgstr "Gain"
 
 #: src/wx/gain_calculator_dialog.cc:27
 msgid "Gain Calculator"
@@ -538,7 +560,7 @@ msgstr "Gain pour le canal audio %d dans le canal du DCP %d"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
 msgstr "Général"
 
@@ -546,9 +568,9 @@ msgstr "Général"
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
-msgstr "Avertissements"
+msgstr "Conseils"
 
 #: src/wx/servers_list_dialog.cc:40
 msgid "Host"
@@ -564,13 +586,13 @@ msgstr "Hz"
 
 #: src/wx/gain_calculator_dialog.cc:29
 msgid "I want to play this back at fader"
-msgstr "Je veux le jouer Ã  ce volume"
+msgstr "Je veux lire avec une table de mixage"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "Adresse IP"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 msgid "IP address / host name"
 msgstr "Adresse IP / Nom d'Hôte"
 
@@ -580,7 +602,7 @@ msgstr "Nom ISDCF"
 
 #: src/wx/colour_conversion_editor.cc:44
 msgid "Input gamma"
-msgstr "Gamma entrée"
+msgstr "gamma source"
 
 #: src/wx/film_editor.cc:228
 msgid "Interop"
@@ -594,18 +616,21 @@ msgstr "Qualité JPEG2000"
 msgid "Join"
 msgstr "Ajouter"
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 msgid "KDM Email"
 msgstr "e-mail KDM"
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
 #: src/wx/kdm_dialog.cc:99
-#, fuzzy
 msgid "KDM|Timing"
-msgstr "Durée"
+msgstr "Temps"
 
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
-msgstr "Garder la vidéo"
+msgstr "Conserver la vidéo dans la séquence"
 
 #: src/wx/audio_mapping_view.cc:277
 msgid "L"
@@ -617,7 +642,7 @@ msgstr "CG"
 
 #: src/wx/video_panel.cc:88
 msgid "Left crop"
-msgstr "Découpe gauche"
+msgstr "Rogner Ã  gauche"
 
 #: src/wx/audio_mapping_view.cc:289
 msgid "Lfe"
@@ -625,29 +650,33 @@ msgstr "BF"
 
 #: src/wx/colour_conversion_editor.cc:49
 msgid "Linearise input gamma curve for low values"
-msgstr "Lisser la courbe gamma d'entrée pour les bas niveaux"
+msgstr "Courbe gamma d'entrée linéaire pour les bas niveaux"
 
 #: src/wx/screen_dialog.cc:46
 msgid "Load from file..."
 msgstr "Chargement depuis fichier..."
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
 msgstr "Rapport"
 
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "Sr.G"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "MANQUANT:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 msgid "Mail password"
 msgstr "Mot de passe Mail"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 msgid "Mail user name"
 msgstr "Nom Utilisateur Mail"
 
@@ -663,11 +692,11 @@ msgstr "Luminance masterisée (ex: 4fl)"
 msgid "Matrix"
 msgstr "Matrice"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 msgid "Maximum JPEG2000 bandwidth"
 msgstr "Qualité JPEG2000 Maxi"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr "Mbit/s"
@@ -711,9 +740,9 @@ msgstr "Eteint"
 msgid "Other"
 msgstr "Autre"
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
-msgstr "Serveurs de messagerie sortante"
+msgstr "Serveurs de messagerie sortant"
 
 #: src/wx/kdm_dialog.cc:156
 msgid "Output"
@@ -732,11 +761,11 @@ msgstr "Type de paquet (ex. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Enveloppe noire de %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 msgid "Password"
 msgstr "Mot de passe"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pause"
 
@@ -748,7 +777,7 @@ msgstr "Crête"
 msgid "Play"
 msgstr "Lecture"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr "Durée de lecture"
 
@@ -756,7 +785,7 @@ msgstr "Durée de lecture"
 msgid "Please wait; audio is being analysed..."
 msgstr "Merci de patienter ; analyse de la piste son..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Position"
 
@@ -784,8 +813,8 @@ msgstr "CD"
 msgid "Red band"
 msgstr "Red Band"
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Supprimer"
 
@@ -809,15 +838,15 @@ msgstr "Répéter le contenu"
 msgid "Repeat..."
 msgstr "Répéter..."
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
-msgstr ""
+msgstr "texte par défaut"
 
 #: src/wx/film_editor.cc:175
 msgid "Resolution"
 msgstr "Résolution"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr "Reprendre"
 
@@ -827,7 +856,7 @@ msgstr "Cliquez droit pour modifier le gain."
 
 #: src/wx/video_panel.cc:99
 msgid "Right crop"
-msgstr "Découpe droite"
+msgstr "Rogner Ã  droite"
 
 #: src/wx/audio_mapping_view.cc:297
 msgid "Rs"
@@ -837,10 +866,6 @@ msgstr "Sr.D"
 msgid "SMPTE"
 msgstr "SMPTE"
 
-#: src/wx/subtitle_panel.cc:62
-msgid "Scale"
-msgstr "Mise Ã  l'échelle"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
 msgstr "Mise Ã  l'échelle"
@@ -858,7 +883,7 @@ msgstr "Mise Ã  l'échelle"
 msgid "Screens"
 msgstr "Ecrans"
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 msgid "Select CPL XML file"
 msgstr "Sélectionner le fichier CPL.xml"
 
@@ -866,7 +891,7 @@ msgstr "Sélectionner le fichier CPL.xml"
 msgid "Select Certificate File"
 msgstr "Sélectionner le certificat"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Envoyé par e-mail"
 
@@ -879,29 +904,28 @@ msgid "Server"
 msgstr "Serveur"
 
 #: src/wx/screen_dialog.cc:41
-#, fuzzy
 msgid "Server manufacturer"
-msgstr "Numéro de Série du Serveur"
+msgstr "Constructeur du serveur"
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr "Numéro de Série du Serveur"
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 msgid "Servers"
 msgstr "Serveurs"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr "Sélection"
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
-msgstr "Selectionnez la langue"
+msgstr "Sélectionnez la langue"
 
 #: src/wx/audio_panel.cc:48
 msgid "Show Audio..."
-msgstr "Analyser le son..."
+msgstr "Afficher le son..."
 
 #: src/wx/film_editor.cc:158
 msgid "Signed"
@@ -913,7 +937,7 @@ msgstr "Lissage"
 
 #: src/wx/timeline_dialog.cc:38
 msgid "Snap"
-msgstr "Echnager"
+msgstr "Magnetisme"
 
 #: src/wx/update_dialog.cc:43
 msgid "Stable version "
@@ -923,7 +947,7 @@ msgstr "Version Stable"
 msgid "Standard"
 msgstr "Standard"
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 msgid "Stream"
 msgstr "Flux"
 
@@ -931,6 +955,10 @@ msgstr "Flux"
 msgid "Studio (e.g. TCF)"
 msgstr "Studio (ex. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Langue de sous-titres (ex. FR)"
@@ -939,7 +967,7 @@ msgstr "Langue de sous-titres (ex. FR)"
 msgid "Subtitles"
 msgstr "Sous-titres"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr "Soutenu par"
 
@@ -947,13 +975,13 @@ msgstr "Soutenu par"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 msgid "Target path"
-msgstr "Chemin d'accès"
+msgstr "Chemin cible"
 
 #: src/wx/isdcf_metadata_dialog.cc:56
 msgid "Temp version"
-msgstr "Version Temp"
+msgstr "Version temporaire"
 
 #: src/wx/isdcf_metadata_dialog.cc:41
 msgid "Territory (e.g. UK)"
@@ -961,9 +989,9 @@ msgstr "Territoire (ex. FR)"
 
 #: src/wx/update_dialog.cc:48
 msgid "Test version "
-msgstr "Version Test"
+msgstr "Version test"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 msgid "Tested by"
 msgstr "Testé par"
 
@@ -974,10 +1002,10 @@ msgid ""
 "missing content."
 msgstr ""
 "Les fichiers de contenu que vous avez spécifiés ne sont pas les mêmes que "
-"ceux detectés comme manquants. Vous pouvez réessayer avec les contenus "
+"ceux détectés comme manquants. Vous pouvez réessayer avec les contenus "
 "corrects ou supprimer les contenus manquants."
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "Il n'y a aucun avertissement: tout semble correct!"
 
@@ -985,7 +1013,7 @@ msgstr "Il n'y a aucun avertissement: tout semble correct!"
 msgid "There is not enough free memory to do that."
 msgstr "Il n'y a pas assez de mémoire pour faire cela."
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
 msgstr "Ceci n'est pas un fichier CPL valide"
 
@@ -993,7 +1021,7 @@ msgstr "Ceci n'est pas un fichier CPL valide"
 msgid "Threads"
 msgstr "Processus"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "Nombre de processus Ã  utiliser sur cet hôte"
 
@@ -1005,36 +1033,35 @@ msgstr "Durée"
 msgid "Timeline"
 msgstr "Timeline"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr "Timeline..."
 
-#: src/wx/timing_panel.cc:35
-#, fuzzy
+#: src/wx/timing_panel.cc:37
 msgid "Timing|Timing"
-msgstr "Durée"
+msgstr "Temps"
 
 #: src/wx/video_panel.cc:110
 msgid "Top crop"
-msgstr "Découpe haut"
+msgstr "Rogner en haut"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr "Traduit par"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
-msgstr "Exclure Ã  la fin"
+msgstr "Rogner par la fin"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
-msgstr "Exclure au début"
+msgstr "Rogner au début"
 
 #: src/wx/audio_dialog.cc:55 src/wx/video_panel.cc:75
 msgid "Type"
 msgstr "Type"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 msgid "Unexpected certificate filename form"
 msgstr "Nom de fichier certificat non conforme "
 
@@ -1046,21 +1073,21 @@ msgstr "inconnu."
 msgid "Until"
 msgstr "Jusqu'au"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Monter"
 
 #: src/wx/update_dialog.cc:27
 msgid "Update"
-msgstr "Mise Ã  jour."
+msgstr "Mise Ã  jour"
 
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
 msgid "Use ISDCF name"
 msgstr "Utiliser le nom ISDCF"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
-msgstr "Utiliser tous les serveurs."
+msgstr "Utiliser tous les serveurs"
 
 #: src/wx/film_editor.cc:152
 msgid "Use best"
@@ -1070,7 +1097,7 @@ msgstr "Automatique"
 msgid "Use preset"
 msgstr "Utiliser le préréglage"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Nom d'utilisateur"
 
@@ -1082,11 +1109,11 @@ msgstr "VI"
 msgid "Video"
 msgstr "Vidéo"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "Cadence vidéo"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
 msgstr "Avertissements"
 
@@ -1094,7 +1121,7 @@ msgstr "Avertissements"
 msgid "With Subtitles"
 msgstr "Avec sous-titres"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr "Ecrire Ã "
 
@@ -1104,13 +1131,23 @@ msgstr "Développé par"
 
 #: src/wx/subtitle_panel.cc:44
 msgid "X Offset"
-msgstr "Position Horizontale"
+msgstr "Position horizontale"
+
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Mise Ã  l'échelle"
 
 #: src/wx/subtitle_panel.cc:53
 msgid "Y Offset"
-msgstr "Position Verticale"
+msgstr "Position verticale"
+
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Mise Ã  l'échelle"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1119,7 +1156,7 @@ msgstr ""
 "%d fichiers ressemblent Ã  des fichiers VOB de DVD. Vous devriez les ajouter "
 "afin de vous assurer d'une jonction correcte entre vos fichiers."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1129,15 +1166,15 @@ msgstr ""
 "quelques projecteurs (anciens).  Utilisez plutôt une cadence de 24 ou 48 "
 "images par seconde pour assurer une plus grande compatibilité."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
 msgstr ""
-"Votre DCP poss��de un nombre impair de canaux audio.  Cela peut créer des "
+"Votre DCP poss��de un nombre impair de canaux audio.  Cela peut créer des "
 "problèmes de lecture."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1162,11 +1199,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1182,6 +1219,9 @@ msgstr "fois"
 msgid "video"
 msgstr "vidéo"
 
+#~ msgid "Default creator"
+#~ msgstr "Créateur par défaut"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Gain audio"
 
index 7789601a76912011814177cd107798e6a547d507..569f499752c98f5fce17737508182ab49413610d 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-02-03 10:46+0100\n"
 "Last-Translator: William Fanelli <william.f@impronte.com>\n"
 "Language-Team: \n"
@@ -18,7 +18,7 @@ msgstr ""
 "X-Generator: Poedit 1.6.3\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -27,11 +27,11 @@ msgid ""
 "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
 msgstr ""
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr ""
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
 
@@ -104,11 +104,11 @@ msgstr "Aggiungi Cinema"
 msgid "Add Screen..."
 msgstr "Aggiungi Schermo"
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Aggiungi File"
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Aggiungi cartella"
 
@@ -116,12 +116,28 @@ msgstr "Aggiungi cartella"
 msgid "Add..."
 msgstr "Aggiungi..."
 
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
 #, fuzzy
 msgid "Allow any DCP frame rate"
 msgstr "Frequenza fotogrammi video"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr ""
 
@@ -153,7 +169,12 @@ msgstr ""
 "L' audio sarà trasferito dal canale %d sorgente al canale %d DCP con "
 "guadagno di %.1fdB."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Indirizzo IP"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
 msgstr "Valore sbagliato per %s (%s)"
@@ -182,7 +203,7 @@ msgstr "Ma dovrò riprodurre con il fader a"
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
 #, fuzzy
 msgid "CC address"
 msgstr "Indirizzo IP"
@@ -203,7 +224,7 @@ msgstr ""
 msgid "Calculate..."
 msgstr "Calcola..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Annulla"
 
@@ -212,8 +233,8 @@ msgstr "Annulla"
 msgid "Certificate"
 msgstr "Seleziona il file del Certificato"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 #, fuzzy
 msgid "Certificate downloaded"
 msgstr "Seleziona il file del Certificato"
@@ -230,11 +251,11 @@ msgstr "Guadagno audio"
 msgid "Channels"
 msgstr "Canali"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "Controlla per aggiornamenti test o stabili"
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Controlla gli aggiornamentio alla partenza"
 
@@ -242,11 +263,11 @@ msgstr "Controlla gli aggiornamentio alla partenza"
 msgid "Choose a file"
 msgstr "Scegli un file"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Scegli uno o più file"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Scegli una cartella"
 
@@ -255,7 +276,7 @@ msgstr "Scegli una cartella"
 msgid "Cinema"
 msgstr "Aggiungi Cinema"
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 #, fuzzy
 msgid "Colour Conversions"
 msgstr "Conversioni colore"
@@ -265,7 +286,7 @@ msgstr "Conversioni colore"
 msgid "Colour conversion"
 msgstr "Conversione colore"
 
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
 msgid "Config|Timing"
 msgstr ""
 
@@ -295,6 +316,10 @@ msgstr "Tipo di sorgente"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "Il video originale Ã¨ %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "Non posso analizzare l'audio."
@@ -304,7 +329,7 @@ msgstr "Non posso analizzare l'audio."
 msgid "Could not decode video for view (%s)"
 msgstr "Non posso decodificare il video per guardarlo (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "Non posso creare il DCP: %s"
@@ -335,7 +360,7 @@ msgstr ""
 msgid "DCP"
 msgstr ""
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "Nome del DCP"
 
@@ -352,47 +377,46 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Audio DCP-o-matic - %s"
 
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
 #, fuzzy
 msgid "Default ISDCF name details"
 msgstr "Dettagli del nome DCI predefinito"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 #, fuzzy
 msgid "Default JPEG2000 bandwidth"
 msgstr "Banda passante JPEG2000"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
 msgstr "Ritardo audio predefinito"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Contenitore predefinito"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Tipo sorgente predefinito"
 
-#: src/wx/config_dialog.cc:300
-#, fuzzy
-msgid "Default creator"
-msgstr "Contenitore predefinito"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Cartella predefinita per i nuovi films"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Durata predefinita immagini statiche"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 #, fuzzy
 msgid "Default issuer"
 msgstr "Predefiniti"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Predefiniti"
 
@@ -401,7 +425,7 @@ msgstr "Predefiniti"
 msgid "Delay"
 msgstr "Ritardo dell'audio"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Dettagli"
 
@@ -419,11 +443,11 @@ msgstr ""
 msgid "Doremi"
 msgstr ""
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr ""
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr ""
 
@@ -435,8 +459,8 @@ msgstr ""
 msgid "Download certificate"
 msgstr ""
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr ""
 
@@ -448,9 +472,9 @@ msgstr "Modifica Cinema..."
 msgid "Edit Screen..."
 msgstr "Modifica Schermo..."
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Modifica..."
 
@@ -467,7 +491,7 @@ msgstr "Servers di codifica"
 msgid "Encrypted"
 msgstr "Criptato"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
 msgstr ""
 
@@ -475,8 +499,9 @@ msgstr ""
 msgid "Facility (e.g. DLA)"
 msgstr "Facility (es. DLA)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 #, fuzzy
 msgid "Fetching..."
 msgstr "conteggio..."
@@ -517,7 +542,7 @@ msgstr ""
 msgid "From"
 msgstr "Da"
 
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
 #, fuzzy
 msgid "From address"
 msgstr "Indirizzo IP"
@@ -526,7 +551,7 @@ msgstr "Indirizzo IP"
 msgid "Full"
 msgstr ""
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr ""
 
@@ -547,7 +572,7 @@ msgstr "Guadagno per il canale sorgente %d nel canale DCP %d"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
 msgstr ""
 
@@ -555,7 +580,7 @@ msgstr ""
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
 msgstr "Suggerimenti"
 
@@ -575,11 +600,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Sto usando il fader a"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "Indirizzo IP"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 #, fuzzy
 msgid "IP address / host name"
 msgstr "Indirizzo IP"
@@ -605,15 +630,19 @@ msgstr "Banda passante JPEG2000"
 msgid "Join"
 msgstr ""
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 msgid "KDM Email"
 msgstr ""
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
 #: src/wx/kdm_dialog.cc:99
 msgid "KDM|Timing"
 msgstr ""
 
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
 msgstr "Tieni i video in sequenza"
 
@@ -641,24 +670,28 @@ msgstr "Linearizza la curva del gamma in ingresso per piccoli valori"
 msgid "Load from file..."
 msgstr ""
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
 msgstr ""
 
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "Ls"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "MANCANTE:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 #, fuzzy
 msgid "Mail password"
 msgstr "Password del TMS"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 #, fuzzy
 msgid "Mail user name"
 msgstr "Nome utente del TMS"
@@ -675,12 +708,12 @@ msgstr ""
 msgid "Matrix"
 msgstr "Matrice"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 #, fuzzy
 msgid "Maximum JPEG2000 bandwidth"
 msgstr "Banda passante JPEG2000"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr ""
@@ -724,7 +757,7 @@ msgstr ""
 msgid "Other"
 msgstr ""
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
 msgstr "Mail server posta in uscita"
 
@@ -746,12 +779,12 @@ msgstr "Tipo di Package (es. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Riempito con nero a %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 #, fuzzy
 msgid "Password"
 msgstr "Password del TMS"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pausa"
 
@@ -763,7 +796,7 @@ msgstr "Picco"
 msgid "Play"
 msgstr "Riproduci"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr ""
 
@@ -771,7 +804,7 @@ msgstr ""
 msgid "Please wait; audio is being analysed..."
 msgstr "Attendere prego; sto analizzando l'audio..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Posizione"
 
@@ -799,8 +832,8 @@ msgstr "Rc"
 msgid "Red band"
 msgstr ""
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Rimuovi"
 
@@ -824,7 +857,7 @@ msgstr "Ripeti il contenuto"
 msgid "Repeat..."
 msgstr ""
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
 msgstr ""
 
@@ -832,7 +865,7 @@ msgstr ""
 msgid "Resolution"
 msgstr "Risoluzione"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr ""
 
@@ -852,11 +885,6 @@ msgstr "Rs"
 msgid "SMPTE"
 msgstr ""
 
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Scaler"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
 msgstr "Scala a"
@@ -875,7 +903,7 @@ msgstr "Scaler"
 msgid "Screens"
 msgstr "Aggiungi Schermo"
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 #, fuzzy
 msgid "Select CPL XML file"
 msgstr "Seleziona file audio"
@@ -884,7 +912,7 @@ msgstr "Seleziona file audio"
 msgid "Select Certificate File"
 msgstr "Seleziona il file del Certificato"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Manda per email"
 
@@ -900,20 +928,20 @@ msgstr "Server"
 msgid "Server manufacturer"
 msgstr ""
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr ""
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 #, fuzzy
 msgid "Servers"
 msgstr "Server"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr ""
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
 msgstr "Seleziona la lingua"
 
@@ -941,7 +969,7 @@ msgstr "Versione stabile"
 msgid "Standard"
 msgstr ""
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 #, fuzzy
 msgid "Stream"
 msgstr "Traccia"
@@ -950,6 +978,10 @@ msgstr "Traccia"
 msgid "Studio (e.g. TCF)"
 msgstr "Studio (es. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Lingua dei Sottotitoli (es. FR)"
@@ -958,7 +990,7 @@ msgstr "Lingua dei Sottotitoli (es. FR)"
 msgid "Subtitles"
 msgstr "Sottotitoli"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr ""
 
@@ -966,7 +998,7 @@ msgstr ""
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 #, fuzzy
 msgid "Target path"
 msgstr "Percorso di destinazione del TMS"
@@ -984,7 +1016,7 @@ msgstr "Nazione (es. UK)"
 msgid "Test version "
 msgstr "Versione di test"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 msgid "Tested by"
 msgstr ""
 
@@ -997,7 +1029,7 @@ msgstr ""
 "Il/i file sorgenteo che hai specificato sono diversi da quelli mancanti. "
 "Riprova oppure rimuovi la sorgente mancante."
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "Non ci sono suggerimenti: sembra tutto a posto!"
 
@@ -1005,7 +1037,7 @@ msgstr "Non ci sono suggerimenti: sembra tutto a posto!"
 msgid "There is not enough free memory to do that."
 msgstr ""
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
 msgstr ""
 
@@ -1013,7 +1045,7 @@ msgstr ""
 msgid "Threads"
 msgstr "Threads"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "Threads da usare per codificare su questo host"
 
@@ -1025,11 +1057,11 @@ msgstr "Tempo"
 msgid "Timeline"
 msgstr "Timeline"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr ""
 
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
 msgid "Timing|Timing"
 msgstr ""
 
@@ -1037,15 +1069,15 @@ msgstr ""
 msgid "Top crop"
 msgstr "Taglio in alto"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr ""
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
 msgstr "Taglia dalla fine"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
 msgstr "Taglia dall'inizio"
 
@@ -1053,7 +1085,7 @@ msgstr "Taglia dall'inizio"
 msgid "Type"
 msgstr "Tipo"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 #, fuzzy
 msgid "Unexpected certificate filename form"
 msgstr "Seleziona il file del Certificato"
@@ -1067,7 +1099,7 @@ msgstr "sconosciuto"
 msgid "Until"
 msgstr "Fino a"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Su"
 
@@ -1075,12 +1107,12 @@ msgstr "Su"
 msgid "Update"
 msgstr "Aggiorna"
 
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
 #, fuzzy
 msgid "Use ISDCF name"
 msgstr "Usa nome DCI"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
 msgstr "Usa tutti i server"
 
@@ -1092,7 +1124,7 @@ msgstr "Usa la migliore"
 msgid "Use preset"
 msgstr "Usa predefinito"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Nome utente"
 
@@ -1104,11 +1136,11 @@ msgstr "VI"
 msgid "Video"
 msgstr "Video"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "Frequenza fotogrammi video"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
 msgstr ""
 
@@ -1116,7 +1148,7 @@ msgstr ""
 msgid "With Subtitles"
 msgstr "Con sottotitoli"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr ""
 
@@ -1128,11 +1160,21 @@ msgstr ""
 msgid "X Offset"
 msgstr "Spostamento X"
 
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Scaler"
+
 #: src/wx/subtitle_panel.cc:53
 msgid "Y Offset"
 msgstr "Spostamento Y"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Scaler"
+
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1141,7 +1183,7 @@ msgstr ""
 "Ci sono %d file che sembrano essere DVD VOB. Dovresti unirli per assicurare "
 "una giunta senza interruzioni tra i file."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1151,7 +1193,7 @@ msgstr ""
 "problemi in alcuni (per lo più vecchi) proiettori. Usa 24 o 48 frame al "
 "secondo se vuoi esssere sicuro."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
@@ -1159,7 +1201,7 @@ msgstr ""
 "Il vostro DCP ha un numero dispari di canali audio. Questo può causare "
 "problemi durante la riproduzione."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1185,11 +1227,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1206,6 +1248,10 @@ msgstr ""
 msgid "video"
 msgstr "Video"
 
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Contenitore predefinito"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Guadagno dell'audio"
 
index b33e4a748695c389399fc7c04be32d6cc74d6b33..3df5b839d1df8b0a04a2d5024b544def29c9c7bd 100644 (file)
@@ -7,19 +7,19 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:40+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:17+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
 "Language-Team: UniversalDV <TKooijmans@universaldv.nl>\n"
 "Language: nl_NL\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -29,17 +29,17 @@ msgid ""
 msgstr ""
 "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr "(wachtwoord wordt opgeslagen op disk in leesbare tekst)"
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(herstart DCP-o-matic voor taal wijziging)"
 
 #: src/wx/audio_mapping_view.cc:134
 msgid "-6dB"
-msgstr ""
+msgstr "-6dB"
 
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
@@ -54,9 +54,8 @@ msgid "2D"
 msgstr "2D"
 
 #: src/wx/isdcf_metadata_dialog.cc:68
-#, fuzzy
 msgid "2D version of content available in 3D"
-msgstr "Er zijn nieuwe versies van DCP -o- matic beschikbaar."
+msgstr "2D versie van 3D content beschikbaar"
 
 #: src/wx/film_editor.cc:224
 msgid "2K"
@@ -72,16 +71,15 @@ msgstr "3D alternate"
 
 #: src/wx/video_panel.cc:201
 msgid "3D left only"
-msgstr ""
+msgstr "3D enkel Links"
 
 #: src/wx/video_panel.cc:198
 msgid "3D left/right"
 msgstr "3D links/rechts"
 
 #: src/wx/video_panel.cc:202
-#, fuzzy
 msgid "3D right only"
-msgstr "3D links/rechts"
+msgstr "3D enkel rechts"
 
 #: src/wx/video_panel.cc:199
 msgid "3D top/bottom"
@@ -107,11 +105,11 @@ msgstr "Voeg Bioscoop toe..."
 msgid "Add Screen..."
 msgstr "Voeg Scherm toe..."
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Voeg bestande(n) toe..."
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Voeg map toe..."
 
@@ -119,12 +117,35 @@ msgstr "Voeg map toe..."
 msgid "Add..."
 msgstr "Toevoegen.."
 
-#: src/wx/config_dialog.cc:780
-#, fuzzy
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+"All uw bronbestanden zijn 1.85:1 of smaller maar Uw doel DCP's container is "
+"Scope (2.39:1). Dit heeft als gevolg dat er zwarte balken links en rechts "
+"van het beeld zullen komen. U kan best de DCP's container instellen in Flat "
+"(1.85:1) in de \"DCP\"tab."
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+"All uw bronbestanden zijn Scope (2.39:1) maar Uw doel DCP's container is "
+"Flat (1.85:1). Dit heeft als gevolg dat er zwarte balken onder en boven het "
+"beeld zullen komen. U kan best de DCP's container instellen in Scope "
+"(2.39:1) in de \"DCP\"tab."
+
+#: src/wx/config_dialog.cc:799
 msgid "Allow any DCP frame rate"
-msgstr "Video frame rate"
+msgstr "Sta om het welke frame rate toe in DCP"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr "Artwork door"
 
@@ -157,7 +178,11 @@ msgstr ""
 "Audio wordt doorgestuurd van content kanaal %d naar DCP kanaal %d met gain "
 "%1fdB."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+msgid "BCC address"
+msgstr "BCC adres"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
 msgstr "Verkeede instellingen voor %s (%s)"
@@ -186,29 +211,27 @@ msgstr "Maak ik gebruik een fader"
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
-#, fuzzy
+#: src/wx/config_dialog.cc:679
 msgid "CC address"
-msgstr "IP adres"
+msgstr "CC adres"
 
 #: src/wx/kdm_dialog.cc:125 src/wx/kdm_dialog.cc:131
-#, fuzzy
 msgid "CPL"
-msgstr "DCP"
+msgstr "CPL"
 
 #: src/wx/kdm_dialog.cc:143
 msgid "CPL ID"
-msgstr ""
+msgstr "CPL ID"
 
 #: src/wx/kdm_dialog.cc:146
 msgid "CPL annotation text"
-msgstr ""
+msgstr "CPL opmerkingen tekst"
 
 #: src/wx/audio_panel.cc:63
 msgid "Calculate..."
 msgstr "Bereken..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Afbreken"
 
@@ -216,15 +239,14 @@ msgstr "Afbreken"
 msgid "Certificate"
 msgstr "certificaat"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
-#, fuzzy
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 msgid "Certificate downloaded"
-msgstr "certificaat"
+msgstr "Certificaat gedownload"
 
 #: src/wx/isdcf_metadata_dialog.cc:65
 msgid "Chain"
-msgstr ""
+msgstr "Ketting"
 
 #: src/wx/audio_gain_dialog.cc:26
 msgid "Channel gain"
@@ -234,11 +256,11 @@ msgstr "Kanaal versterking"
 msgid "Channels"
 msgstr "Kanalen"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "Selecteer voor Test updates en Stabiele versies "
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Selecteer voor updates controle bij startup"
 
@@ -246,11 +268,11 @@ msgstr "Selecteer voor updates controle bij startup"
 msgid "Choose a file"
 msgstr "Kies een bestand"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Kies bestand(en)"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Kies map"
 
@@ -258,7 +280,7 @@ msgstr "Kies map"
 msgid "Cinema"
 msgstr "Bioscoop"
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 msgid "Colour Conversions"
 msgstr "Colour Conversions"
 
@@ -267,10 +289,9 @@ msgstr "Colour Conversions"
 msgid "Colour conversion"
 msgstr "Colour conversion"
 
-#: src/wx/config_dialog.cc:793
-#, fuzzy
+#: src/wx/config_dialog.cc:819
 msgid "Config|Timing"
-msgstr "Timing"
+msgstr "Configureer|Timing"
 
 #: src/wx/film_editor.cc:134
 msgid "Container"
@@ -298,6 +319,10 @@ msgstr "Content versie"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "Content video is %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr "Kopieer..."
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "Kan audio niet analyseren"
@@ -307,15 +332,15 @@ msgstr "Kan audio niet analyseren"
 msgid "Could not decode video for view (%s)"
 msgstr "Kan video niet decoderen voor preview (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "Kan geen DCP maken: %s"
 
 #: src/wx/screen_dialog.cc:95
-#, fuzzy, c-format
+#, c-format
 msgid "Could not read certificate file (%s)"
-msgstr "Kan video niet decoderen voor preview (%s)"
+msgstr "Onleesbaar certificaat (%s)"
 
 #: src/wx/dolby_certificate_dialog.cc:39
 msgid "Country"
@@ -338,13 +363,13 @@ msgstr "aangepast"
 msgid "DCP"
 msgstr "DCP"
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "DCP naam"
 
 #: src/wx/kdm_dialog.cc:140
 msgid "DCP directory"
-msgstr ""
+msgstr "DCP map"
 
 #: src/wx/about_dialog.cc:45 src/wx/wx_util.cc:87 src/wx/wx_util.cc:95
 msgid "DCP-o-matic"
@@ -355,53 +380,51 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "DCP-o-matic audio - %s"
 
-#: src/wx/config_dialog.cc:266
-#, fuzzy
+#: src/wx/config_dialog.cc:270
 msgid "Default ISDCF name details"
-msgstr "Standaard DCI naam details"
+msgstr "Standaard ISDCF naam details"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 msgid "Default JPEG2000 bandwidth"
 msgstr "Standaard JPEG2000 bandbreedte"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
 msgstr "Standaard audio delay"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Standaard container"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Standaard content type"
 
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Standaard maker"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Standaard map voor nieuwe films"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Standaard lengte van stills"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 msgid "Default issuer"
 msgstr "Standaard uitgever"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr "Standaard schaal naar"
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Standaard instellingen"
 
 #: src/wx/audio_panel.cc:67
-#, fuzzy
 msgid "Delay"
-msgstr "Audio Delay"
+msgstr "Vertraging"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Details..."
 
@@ -419,11 +442,11 @@ msgstr "Dolby"
 msgid "Doremi"
 msgstr "Doremi"
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr "Doremi serial numbers moeten bestaan uit 6 digits"
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr "Naar beneden"
 
@@ -435,8 +458,8 @@ msgstr "Download"
 msgid "Download certificate"
 msgstr "Download certificaat"
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr "Downloading certificaat"
 
@@ -448,9 +471,9 @@ msgstr "Edit Bioscoop"
 msgid "Edit Screen..."
 msgstr "Edit scherm"
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Edit..."
 
@@ -466,16 +489,17 @@ msgstr "Encoding Servers"
 msgid "Encrypted"
 msgstr "Encrypted"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
-msgstr ""
+msgstr "Fouten"
 
 #: src/wx/isdcf_metadata_dialog.cc:50
 msgid "Facility (e.g. DLA)"
 msgstr "faciliteit (e.g. DLA)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 msgid "Fetching..."
 msgstr "Ophalen..."
 
@@ -515,22 +539,21 @@ msgstr "Gratis, open-source DCP samensteller voor bijna alles."
 msgid "From"
 msgstr "Van"
 
-#: src/wx/config_dialog.cc:673
-#, fuzzy
+#: src/wx/config_dialog.cc:675
 msgid "From address"
-msgstr "IP adres"
+msgstr "Van adres"
 
 #: src/wx/audio_mapping_view.cc:133
 msgid "Full"
 msgstr "Volledig"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr "Volledige lengte"
 
 #: src/wx/audio_panel.cc:52
 msgid "Gain"
-msgstr ""
+msgstr "Versterking"
 
 #: src/wx/gain_calculator_dialog.cc:27
 msgid "Gain Calculator"
@@ -545,15 +568,15 @@ msgstr "Gain voor content kanaal %d in DCP kanaal %d"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
-msgstr ""
+msgstr "Algemeen"
 
 #: src/wx/audio_mapping_view.cc:301
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
 msgstr "Tips"
 
@@ -573,18 +596,17 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Ik wil dit afspelen met fader"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "IP adres"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 msgid "IP address / host name"
 msgstr "IP adres / host naam"
 
 #: src/wx/isdcf_metadata_dialog.cc:30
-#, fuzzy
 msgid "ISDCF name"
-msgstr "DCI naam"
+msgstr "ISDCF naam"
 
 #: src/wx/colour_conversion_editor.cc:44
 msgid "Input gamma"
@@ -602,16 +624,19 @@ msgstr "JPEG2000 bandbreedte"
 msgid "Join"
 msgstr "Samenvoegen"
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 msgid "KDM Email"
 msgstr "KDM Email"
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr "soort KDM"
+
 #: src/wx/kdm_dialog.cc:99
-#, fuzzy
 msgid "KDM|Timing"
-msgstr "Timing"
+msgstr "KDM|Timing"
 
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
 msgstr "Behoud video in tijdlijn"
 
@@ -639,23 +664,27 @@ msgstr "Linearise input gamma curve for low values"
 msgid "Load from file..."
 msgstr "Laad van bestand..."
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
+msgstr "Log"
+
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
 msgstr ""
 
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "Ls"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "ONTBREEKT:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 msgid "Mail password"
 msgstr "Mail wachtwoord"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 msgid "Mail user name"
 msgstr "Mail gebruikersnaam"
 
@@ -665,17 +694,17 @@ msgstr "Maak KDM's"
 
 #: src/wx/isdcf_metadata_dialog.cc:71
 msgid "Mastered luminance (e.g. 4fl)"
-msgstr ""
+msgstr "Gemasterde helderheid (bv. 4fl)"
 
 #: src/wx/colour_conversion_editor.cc:67
 msgid "Matrix"
 msgstr "Matrix"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 msgid "Maximum JPEG2000 bandwidth"
 msgstr "Maximum JPEG2000 bandbreedte"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr "Mbit/s"
@@ -721,14 +750,13 @@ msgstr "Uit"
 msgid "Other"
 msgstr "Andere"
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
 msgstr "Uitgaande mail server"
 
 #: src/wx/kdm_dialog.cc:156
-#, fuzzy
 msgid "Output"
-msgstr "Output gamma"
+msgstr "Output"
 
 #: src/wx/colour_conversion_editor.cc:78
 msgid "Output gamma"
@@ -743,11 +771,11 @@ msgstr "Package Type (e.g. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Opgevuld met zwart tot %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 msgid "Password"
 msgstr "Wachtwoord"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pauze"
 
@@ -759,7 +787,7 @@ msgstr "Piek"
 msgid "Play"
 msgstr "Afspelen"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr "Afspeellengte"
 
@@ -767,13 +795,13 @@ msgstr "Afspeellengte"
 msgid "Please wait; audio is being analysed..."
 msgstr "Een ogenblik geduld, het audio wordt geanalyseerd..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Positie"
 
 #: src/wx/isdcf_metadata_dialog.cc:59
 msgid "Pre-release"
-msgstr ""
+msgstr "Voor-uitgave"
 
 #: src/wx/audio_mapping_view.cc:281
 msgid "R"
@@ -793,10 +821,10 @@ msgstr "Rc"
 
 #: src/wx/isdcf_metadata_dialog.cc:62
 msgid "Red band"
-msgstr ""
+msgstr "Rode tape"
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Verwijder"
 
@@ -820,15 +848,15 @@ msgstr "Herhaal content"
 msgid "Repeat..."
 msgstr "Herhaal..."
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
-msgstr ""
+msgstr "Herinstellen oorspronkelijke tekst"
 
 #: src/wx/film_editor.cc:175
 msgid "Resolution"
 msgstr "Resolutie"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr "Vervolg"
 
@@ -848,11 +876,6 @@ msgstr "Rs"
 msgid "SMPTE"
 msgstr "SMPTE"
 
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Schaler"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
 msgstr "Schaal tot"
@@ -867,19 +890,18 @@ msgid "Scaler"
 msgstr "Schaler"
 
 #: src/wx/kdm_dialog.cc:60
-#, fuzzy
 msgid "Screens"
-msgstr "Voeg Scherm toe..."
+msgstr "Schermen"
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 msgid "Select CPL XML file"
-msgstr ""
+msgstr "Selekteer CPL XML bestand"
 
 #: src/wx/screen_dialog.cc:102
 msgid "Select Certificate File"
 msgstr "Selecteer Certificaat bestand"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Stuur per Email"
 
@@ -892,23 +914,22 @@ msgid "Server"
 msgstr "Server"
 
 #: src/wx/screen_dialog.cc:41
-#, fuzzy
 msgid "Server manufacturer"
-msgstr "Server serie nummer"
+msgstr "Server fabrikant"
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr "Server serie nummer"
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 msgid "Servers"
 msgstr "Servers"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr "Instellen"
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
 msgstr "Taal Instellen"
 
@@ -936,15 +957,18 @@ msgstr "Stabiele versie"
 msgid "Standard"
 msgstr "Standaard"
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
-#, fuzzy
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 msgid "Stream"
-msgstr "Audio Stream"
+msgstr "Stroom"
 
 #: src/wx/isdcf_metadata_dialog.cc:47
 msgid "Studio (e.g. TCF)"
 msgstr "Studio (e.g. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr "Onderwerp"
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "Ondertitel Taal (vb  NL)"
@@ -953,7 +977,7 @@ msgstr "Ondertitel Taal (vb  NL)"
 msgid "Subtitles"
 msgstr "Ondertitels"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr "Ondersteund door"
 
@@ -961,14 +985,13 @@ msgstr "Ondersteund door"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 msgid "Target path"
 msgstr "Doel pad"
 
 #: src/wx/isdcf_metadata_dialog.cc:56
-#, fuzzy
 msgid "Temp version"
-msgstr "Test Versie"
+msgstr "Tijdelijke Versie"
 
 #: src/wx/isdcf_metadata_dialog.cc:41
 msgid "Territory (e.g. UK)"
@@ -978,7 +1001,7 @@ msgstr "Grondgebied (vb NL)"
 msgid "Test version "
 msgstr "Test Versie"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 msgid "Tested by"
 msgstr "Getest door"
 
@@ -992,7 +1015,7 @@ msgstr ""
 "ontbrekende bestanden.  Probeer opnieuw met de goede content of verwijder de "
 "ontbrekende content. "
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "Er zijn geen tips, alles lijkt goed!"
 
@@ -1000,15 +1023,15 @@ msgstr "Er zijn geen tips, alles lijkt goed!"
 msgid "There is not enough free memory to do that."
 msgstr "Er is niet genoeg geheugen om dat te doen."
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
-msgstr ""
+msgstr "Dit is geen geldig CPL bestand"
 
 #: src/wx/servers_list_dialog.cc:48
 msgid "Threads"
 msgstr "CPU belasting"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "CPU cores beschikbaar voor encoding op deze host"
 
@@ -1020,28 +1043,27 @@ msgstr "Tijd"
 msgid "Timeline"
 msgstr "Tijdlijn"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr "Tijdlijn..."
 
-#: src/wx/timing_panel.cc:35
-#, fuzzy
+#: src/wx/timing_panel.cc:37
 msgid "Timing|Timing"
-msgstr "Timing"
+msgstr "Timing|Timing"
 
 #: src/wx/video_panel.cc:110
 msgid "Top crop"
 msgstr "Top crop"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr "Vertaald door"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
 msgstr "Trim vanaf einde"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
 msgstr "Trim vanaf begin"
 
@@ -1049,7 +1071,7 @@ msgstr "Trim vanaf begin"
 msgid "Type"
 msgstr "Type"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 msgid "Unexpected certificate filename form"
 msgstr "Onverwachte certificaat bestandsnaam vorm"
 
@@ -1061,7 +1083,7 @@ msgstr "Onbekend"
 msgid "Until"
 msgstr "Totdat"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Omhoog"
 
@@ -1069,12 +1091,11 @@ msgstr "Omhoog"
 msgid "Update"
 msgstr "Update"
 
-#: src/wx/film_editor.cc:128
-#, fuzzy
+#: src/wx/film_editor.cc:123
 msgid "Use ISDCF name"
-msgstr "Gebruik DCI naam"
+msgstr "Gebruik ISDCF naam"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
 msgstr "Gebruik alle servers"
 
@@ -1086,7 +1107,7 @@ msgstr "Gebruik de beste"
 msgid "Use preset"
 msgstr "Gebruik preset"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Gebruikersnaam"
 
@@ -1098,19 +1119,19 @@ msgstr "VI"
 msgid "Video"
 msgstr "Video"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "Video frame rate"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
-msgstr ""
+msgstr "Waarschuwingen"
 
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Met ondertiteling"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr "Schrijf naar"
 
@@ -1122,11 +1143,21 @@ msgstr "Geschreven door"
 msgid "X Offset"
 msgstr "X offset"
 
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Schaal"
+
 #: src/wx/subtitle_panel.cc:53
 msgid "Y Offset"
 msgstr "Y offset"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Schaal"
+
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1135,7 +1166,7 @@ msgstr ""
 "U hebt %d bestanden die lijken op VOB bestanden van DVD. U moet deze "
 "samenvoegen om soepele weergave mogelijk te maken."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1144,7 +1175,7 @@ msgstr ""
 "Uw DCP frame rate (%d fps) kan mogelijk problemen veroorzaken met oudere "
 "projectors. Gebruik 24 of 48 frames per seconde voor zekerheid."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
@@ -1152,7 +1183,7 @@ msgstr ""
 "Uw DCP heeft een oneven aantal audio kanalen. Dit geeft hoogstwaarschijnlijk "
 "problemen met weergave."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1177,11 +1208,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1197,6 +1228,9 @@ msgstr "tijden"
 msgid "video"
 msgstr "video"
 
+#~ msgid "Default creator"
+#~ msgstr "Standaard maker"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Audio Gain"
 
index 657fe847ad6b23da34dda51f31ff2c9d6467f27c..7a75403ab4280500aa4b80b89710f285db0db00f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
 "PO-Revision-Date: 2014-01-19 09:14+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -18,7 +18,7 @@ msgstr ""
 "X-Generator: Poedit 1.6.3\n"
 
 #: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
 msgid "%"
 msgstr "%"
 
@@ -28,11 +28,11 @@ msgid ""
 msgstr ""
 "(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
 
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
 msgid "(password will be stored on disk in plaintext)"
 msgstr "(lösenord sparas pÃ¥ disk i klartext)"
 
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(starta om DCP-o-matic för att se sprÃ¥kändringar)"
 
@@ -106,11 +106,11 @@ msgstr "Lägg till Cinema..."
 msgid "Add Screen..."
 msgstr "Lägg till Skärm..."
 
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
 msgid "Add file(s)..."
 msgstr "Lägg till fil(er)..."
 
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
 msgid "Add folder..."
 msgstr "Lägg till folder..."
 
@@ -118,12 +118,28 @@ msgstr "Lägg till folder..."
 msgid "Add..."
 msgstr "Lägg till..."
 
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1).  This will pillar-box your content inside a Flat (1.85:1) "
+"frame.  You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1).  This will letter-box your content inside a Flat (1.85:1) frame.  "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
 #, fuzzy
 msgid "Allow any DCP frame rate"
 msgstr "bildhastighet"
 
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
 msgid "Artwork by"
 msgstr ""
 
@@ -156,7 +172,12 @@ msgstr ""
 "Audio kommer att Ã¶verföras frÃ¥n innehÃ¥llskanal %d till DCP-kanal %d med "
 "förstärkning %.1fdB."
 
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "IP-adress"
+
+#: src/wx/job_wrapper.cc:37
 #, c-format
 msgid "Bad setting for %s (%s)"
 msgstr "Felaktig inställning för %s (%s)"
@@ -185,7 +206,7 @@ msgstr "Men jag mÃ¥ste använda mixervolym"
 msgid "C"
 msgstr "C"
 
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
 #, fuzzy
 msgid "CC address"
 msgstr "IP-adress"
@@ -207,7 +228,7 @@ msgstr ""
 msgid "Calculate..."
 msgstr "Beräkna..."
 
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
 msgid "Cancel"
 msgstr "Avbryt"
 
@@ -216,8 +237,8 @@ msgstr "Avbryt"
 msgid "Certificate"
 msgstr "Välj certifikatfil"
 
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
 #, fuzzy
 msgid "Certificate downloaded"
 msgstr "Välj certifikatfil"
@@ -234,11 +255,11 @@ msgstr "Kanalförstärkning"
 msgid "Channels"
 msgstr "Kanaler"
 
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
 msgid "Check for testing updates as well as stable ones"
 msgstr "sök efter bÃ¥de test- och stabila uppdateringar"
 
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
 msgid "Check for updates on startup"
 msgstr "Sök efter uppdateringar vid start"
 
@@ -246,11 +267,11 @@ msgstr "Sök efter uppdateringar vid start"
 msgid "Choose a file"
 msgstr "Välj en fil"
 
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
 msgid "Choose a file or files"
 msgstr "Välj en fil eller filer"
 
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
 msgid "Choose a folder"
 msgstr "Välj en folder"
 
@@ -259,7 +280,7 @@ msgstr "Välj en folder"
 msgid "Cinema"
 msgstr "Lägg till Cinema..."
 
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
 #, fuzzy
 msgid "Colour Conversions"
 msgstr "Färgkonverteringar"
@@ -270,7 +291,7 @@ msgid "Colour conversion"
 msgstr "Färgkonvertering"
 
 # Svengelska
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
 #, fuzzy
 msgid "Config|Timing"
 msgstr "Tajming"
@@ -301,6 +322,10 @@ msgstr "InnehÃ¥llsversion"
 msgid "Content video is %dx%d (%.2f:1)\n"
 msgstr "Original-videon Ã¤r %dx%d (%.2f:1)\n"
 
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
 #: src/wx/audio_dialog.cc:151
 msgid "Could not analyse audio."
 msgstr "Kunde inte analysera audio."
@@ -310,7 +335,7 @@ msgstr "Kunde inte analysera audio."
 msgid "Could not decode video for view (%s)"
 msgstr "Kunde inte avkoda video för visning (%s)"
 
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
 #, c-format
 msgid "Could not make DCP: %s"
 msgstr "Kunde inte skapa DCP: %s"
@@ -342,7 +367,7 @@ msgstr "Special"
 msgid "DCP"
 msgstr "DCP"
 
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
 msgid "DCP Name"
 msgstr "DCP-namn"
 
@@ -359,46 +384,45 @@ msgstr "DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "DCP-o-matic audio - %s"
 
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
 #, fuzzy
 msgid "Default ISDCF name details"
 msgstr "Detaljer om förvalda DCI-namn"
 
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
 msgid "Default JPEG2000 bandwidth"
 msgstr "Förvald JPEG2000-bandbredd"
 
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
 msgid "Default audio delay"
 msgstr "Förvald audiofördröjning"
 
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
 msgid "Default container"
 msgstr "Förvald innehÃ¥llstyp"
 
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
 msgid "Default content type"
 msgstr "Förvald innehÃ¥llstyp"
 
-#: src/wx/config_dialog.cc:300
-#, fuzzy
-msgid "Default creator"
-msgstr "Förvald innehÃ¥llstyp"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
 msgid "Default directory for new films"
 msgstr "Förvald katalog för nya filmer"
 
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
 msgid "Default duration of still images"
 msgstr "Förvald varaktighet pÃ¥ stillbilder"
 
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
 #, fuzzy
 msgid "Default issuer"
 msgstr "Standardval"
 
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
 msgid "Defaults"
 msgstr "Standardval"
 
@@ -407,7 +431,7 @@ msgstr "Standardval"
 msgid "Delay"
 msgstr "Audio Fördröjning"
 
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
 msgid "Details..."
 msgstr "Detaljer..."
 
@@ -425,11 +449,11 @@ msgstr ""
 msgid "Doremi"
 msgstr ""
 
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
 msgid "Doremi serial numbers must have 6 digits"
 msgstr ""
 
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
 msgid "Down"
 msgstr "Ner"
 
@@ -442,8 +466,8 @@ msgstr "Ner"
 msgid "Download certificate"
 msgstr ""
 
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
 msgid "Downloading certificate"
 msgstr ""
 
@@ -455,9 +479,9 @@ msgstr "Redigera Cinema..."
 msgid "Edit Screen..."
 msgstr "Redigera Skärm..."
 
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
 #: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
 msgid "Edit..."
 msgstr "Redigera..."
 
@@ -473,7 +497,7 @@ msgstr "Kodningsservrar"
 msgid "Encrypted"
 msgstr "Krypterad"
 
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
 msgid "Errors"
 msgstr ""
 
@@ -481,8 +505,9 @@ msgstr ""
 msgid "Facility (e.g. DLA)"
 msgstr "Företag (ex. DLA)"
 
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
 #, fuzzy
 msgid "Fetching..."
 msgstr "räknar..."
@@ -524,7 +549,7 @@ msgstr "Fri, Ã¶ppen-källkods DCP-generering frÃ¥n nästan vad som helst."
 msgid "From"
 msgstr "Avsändare"
 
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
 #, fuzzy
 msgid "From address"
 msgstr "IP-adress"
@@ -533,7 +558,7 @@ msgstr "IP-adress"
 msgid "Full"
 msgstr "Full"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Full length"
 msgstr "Full längd"
 
@@ -554,7 +579,7 @@ msgstr "Förstärkning för innehÃ¥llskanal %d i DCP-kanal %d"
 msgid "Gb"
 msgstr "Gb"
 
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
 msgid "General"
 msgstr ""
 
@@ -562,7 +587,7 @@ msgstr ""
 msgid "HI"
 msgstr "HI"
 
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
 msgid "Hints"
 msgstr "RÃ¥d"
 
@@ -582,11 +607,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Jag vill spela upp detta med mixervolym"
 
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
 msgid "IP address"
 msgstr "IP-adress"
 
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
 msgid "IP address / host name"
 msgstr "IP-adress / datornamn"
 
@@ -611,11 +636,15 @@ msgstr "JPEG2000-bandbredd"
 msgid "Join"
 msgstr "Anslut"
 
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
 #, fuzzy
 msgid "KDM Email"
 msgstr "KDM mejl"
 
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
 # Svengelska
 #: src/wx/kdm_dialog.cc:99
 #, fuzzy
@@ -623,7 +652,7 @@ msgid "KDM|Timing"
 msgstr "Tajming"
 
 # "sekvens" eller "ordning"?
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
 msgid "Keep video in sequence"
 msgstr "BehÃ¥ll video i sekvens"
 
@@ -651,23 +680,27 @@ msgstr "Linjärisera indatas gammakurva för lÃ¥ga värden"
 msgid "Load from file..."
 msgstr ""
 
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
 msgid "Log"
 msgstr ""
 
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
 #: src/wx/audio_mapping_view.cc:293
 msgid "Ls"
 msgstr "Vs"
 
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
 msgid "MISSING: "
 msgstr "SAKNAS:"
 
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
 msgid "Mail password"
 msgstr "Mejl-lösenord"
 
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
 msgid "Mail user name"
 msgstr "Mejl-användarnamn"
 
@@ -683,12 +716,12 @@ msgstr ""
 msgid "Matrix"
 msgstr "Matris"
 
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
 #, fuzzy
 msgid "Maximum JPEG2000 bandwidth"
 msgstr "JPEG2000-bandbredd"
 
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
 #: src/wx/film_editor.cc:185
 msgid "Mbit/s"
 msgstr ""
@@ -735,7 +768,7 @@ msgstr "Av"
 msgid "Other"
 msgstr ""
 
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
 msgid "Outgoing mail server"
 msgstr "UtgÃ¥ende mejlserver"
 
@@ -757,11 +790,11 @@ msgstr "Förpackningstyp (ex. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
 msgid "Password"
 msgstr "Lösenord"
 
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
 msgid "Pause"
 msgstr "Pausa"
 
@@ -773,7 +806,7 @@ msgstr "Topp"
 msgid "Play"
 msgstr "Spela"
 
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
 msgid "Play length"
 msgstr "Spellängd"
 
@@ -781,7 +814,7 @@ msgstr "Spellängd"
 msgid "Please wait; audio is being analysed..."
 msgstr "Vänligen vänta; audio analyseras..."
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
 msgid "Position"
 msgstr "Position"
 
@@ -809,8 +842,8 @@ msgstr "Hc"
 msgid "Red band"
 msgstr ""
 
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
 msgid "Remove"
 msgstr "Ta bort"
 
@@ -835,7 +868,7 @@ msgstr "Repetera InnehÃ¥ll"
 msgid "Repeat..."
 msgstr "Upprepa..."
 
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
 msgid "Reset to default text"
 msgstr ""
 
@@ -843,7 +876,7 @@ msgstr ""
 msgid "Resolution"
 msgstr "Upplösning"
 
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
 msgid "Resume"
 msgstr "Fortsätt"
 
@@ -863,11 +896,6 @@ msgstr "Hs"
 msgid "SMPTE"
 msgstr "SMPTE"
 
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Omskalare"
-
 #: src/wx/video_panel.cc:132
 msgid "Scale to"
 msgstr "Skala om till"
@@ -886,7 +914,7 @@ msgstr "Omskalare"
 msgid "Screens"
 msgstr "Lägg till Skärm..."
 
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
 #, fuzzy
 msgid "Select CPL XML file"
 msgstr "Välj audiofil"
@@ -895,7 +923,7 @@ msgstr "Välj audiofil"
 msgid "Select Certificate File"
 msgstr "Välj certifikatfil"
 
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
 msgid "Send by email"
 msgstr "Skicka med mejl"
 
@@ -911,20 +939,20 @@ msgstr "Server"
 msgid "Server manufacturer"
 msgstr ""
 
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
 msgid "Server serial number"
 msgstr ""
 
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
 #, fuzzy
 msgid "Servers"
 msgstr "Server"
 
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
 msgid "Set"
 msgstr "Sätt"
 
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
 msgid "Set language"
 msgstr "Välj sprÃ¥k"
 
@@ -953,7 +981,7 @@ msgstr "Stabil version"
 msgid "Standard"
 msgstr "Standard"
 
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
 #, fuzzy
 msgid "Stream"
 msgstr "Audioström"
@@ -962,6 +990,10 @@ msgstr "Audioström"
 msgid "Studio (e.g. TCF)"
 msgstr "Studio (ex. TCF)"
 
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
 #: src/wx/isdcf_metadata_dialog.cc:38
 msgid "Subtitle Language (e.g. FR)"
 msgstr "UndertextsprÃ¥k (ex. SV)"
@@ -970,7 +1002,7 @@ msgstr "UndertextsprÃ¥k (ex. SV)"
 msgid "Subtitles"
 msgstr "Undertexter"
 
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
 msgid "Supported by"
 msgstr "Stöd frÃ¥n"
 
@@ -978,7 +1010,7 @@ msgstr "Stöd frÃ¥n"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
 msgid "Target path"
 msgstr "MÃ¥lsökväg"
 
@@ -995,7 +1027,7 @@ msgstr "OmrÃ¥de (ex. SV)"
 msgid "Test version "
 msgstr "Testversion"
 
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
 #, fuzzy
 msgid "Tested by"
 msgstr "Översatt av"
@@ -1009,7 +1041,7 @@ msgstr ""
 "InnehÃ¥llsfilerna du angav Ã¤r inte samma som de som saknas. Försök igen med "
 "rätt innehÃ¥llsfiler eller ta bort det saknade innehÃ¥llet."
 
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
 msgid "There are no hints: everything looks good!"
 msgstr "Det finns inga rÃ¥d: allt verkar bra!"
 
@@ -1017,7 +1049,7 @@ msgstr "Det finns inga rÃ¥d: allt verkar bra!"
 msgid "There is not enough free memory to do that."
 msgstr ""
 
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
 msgid "This is not a valid CPL file"
 msgstr ""
 
@@ -1025,7 +1057,7 @@ msgstr ""
 msgid "Threads"
 msgstr "TrÃ¥dar"
 
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
 msgid "Threads to use for encoding on this host"
 msgstr "Antal trÃ¥dar att använda vid kodning pÃ¥ denna maskin"
 
@@ -1037,12 +1069,12 @@ msgstr "Tid"
 msgid "Timeline"
 msgstr "Tidslinje"
 
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
 msgid "Timeline..."
 msgstr "Tidslinje..."
 
 # Svengelska
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
 #, fuzzy
 msgid "Timing|Timing"
 msgstr "Tajming"
@@ -1051,15 +1083,15 @@ msgstr "Tajming"
 msgid "Top crop"
 msgstr "Övre beskärning"
 
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
 msgid "Translated by"
 msgstr "Översatt av"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Trim from end"
 msgstr "Trimma frÃ¥n slut"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from start"
 msgstr "Trimma frÃ¥n start"
 
@@ -1067,7 +1099,7 @@ msgstr "Trimma frÃ¥n start"
 msgid "Type"
 msgstr "Typ"
 
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
 #, fuzzy
 msgid "Unexpected certificate filename form"
 msgstr "Välj certifikatfil"
@@ -1082,7 +1114,7 @@ msgstr "okänt"
 msgid "Until"
 msgstr "Tills"
 
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
 msgid "Up"
 msgstr "Upp"
 
@@ -1090,12 +1122,12 @@ msgstr "Upp"
 msgid "Update"
 msgstr "Uppdatera"
 
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
 #, fuzzy
 msgid "Use ISDCF name"
 msgstr "Använd DCI-namnet"
 
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
 msgid "Use all servers"
 msgstr "Använd alla servrar"
 
@@ -1107,7 +1139,7 @@ msgstr "Använd bästa"
 msgid "Use preset"
 msgstr "Använd förhandsinställning"
 
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
 msgid "User name"
 msgstr "Användarnamn"
 
@@ -1119,11 +1151,11 @@ msgstr "VI"
 msgid "Video"
 msgstr "Video"
 
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
 msgid "Video frame rate"
 msgstr "bildhastighet"
 
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
 msgid "Warnings"
 msgstr ""
 
@@ -1131,7 +1163,7 @@ msgstr ""
 msgid "With Subtitles"
 msgstr "Med Undertexter"
 
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
 msgid "Write to"
 msgstr "Skriv till"
 
@@ -1144,12 +1176,22 @@ msgstr "Skriven av"
 msgid "X Offset"
 msgstr "Undertext Förskjutning"
 
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Omskalare"
+
 #: src/wx/subtitle_panel.cc:53
 #, fuzzy
 msgid "Y Offset"
 msgstr "Undertext Förskjutning"
 
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Omskalare"
+
+#: src/wx/hints_dialog.cc:121
 #, c-format
 msgid ""
 "You have %d files that look like they are VOB files from DVD. You should "
@@ -1158,7 +1200,7 @@ msgstr ""
 "Du har %d filer som verkar vara VOB-filer frÃ¥n DVD. Du borde sammanfoga dom "
 "för att säkerställa jämna Ã¶vergÃ¥ngar mellan filerna."
 
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
 #, c-format
 msgid ""
 "Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1167,7 +1209,7 @@ msgstr ""
 "Din DCP-bildhastighet (%d bps) kan orsaka problem i nÃ¥gra fÃ¥ (äldre) "
 "projektorer. Använd 24 eller 48 bilder per sekund för att vara säker."
 
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
 msgid ""
 "Your DCP has an odd number of audio channels.  This is very likely to cause "
 "problems on playback."
@@ -1175,7 +1217,7 @@ msgstr ""
 "Din DCP har udda antal audiokanaler. Detta kommer troligen att ge problem "
 "vid uppspelning."
 
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
 msgid ""
 "Your DCP has fewer than 6 audio channels.  This may cause problems on some "
 "projectors."
@@ -1200,11 +1242,11 @@ msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
 msgid "s"
 msgstr "s"
 
@@ -1221,6 +1263,10 @@ msgstr "tider"
 msgid "video"
 msgstr "video"
 
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Förvald innehÃ¥llstyp"
+
 #~ msgid "Audio Gain"
 #~ msgstr "Audio Förstärkning"
 
index 28247bc33eb3c62b9ef85a7dea83785be7b4fa54..53ca237555af31672f2dd2517038dc829ce270bf 100644 (file)
 #include <boost/bind.hpp>
 #include "lib/film.h"
 #include "lib/config.h"
+#include "lib/safe_stringstream.h"
 #include "properties_dialog.h"
 #include "wx_util.h"
 
 using std::string;
-using std::stringstream;
 using std::fixed;
 using std::setprecision;
 using boost::shared_ptr;
@@ -48,7 +48,7 @@ PropertiesDialog::PropertiesDialog (wxWindow* parent, shared_ptr<Film> film)
        
        _frames->SetLabel (std_to_wx (lexical_cast<string> (_film->time_to_video_frames (_film->length()))));
        double const disk = double (_film->required_disk_space()) / 1073741824.0f;
-       stringstream s;
+       SafeStringStream s;
        s << fixed << setprecision (1) << disk << wx_to_std (_("Gb"));
        _disk->SetLabel (std_to_wx (s.str ()));
 
@@ -58,7 +58,7 @@ PropertiesDialog::PropertiesDialog (wxWindow* parent, shared_ptr<Film> film)
 string
 PropertiesDialog::frames_already_encoded () const
 {
-       stringstream u;
+       SafeStringStream u;
        try {
                u << _film->encoded_frames ();
        } catch (boost::thread_interrupted &) {
index 6470f657d24477ef8e0ec5ef166f7498434defde..7953682fca6fd25f857062b31fee4885a241fdfd 100644 (file)
@@ -59,27 +59,37 @@ SubtitlePanel::SubtitlePanel (FilmEditor* e)
        }
        
        {
-               add_label_to_sizer (grid, this, _("Scale"), true);
+               add_label_to_sizer (grid, this, _("Scale"), true);
                wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
-               _scale = new wxSpinCtrl (this);
-               s->Add (_scale);
+               _x_scale = new wxSpinCtrl (this);
+               s->Add (_x_scale);
                add_label_to_sizer (s, this, _("%"), false);
                grid->Add (s);
        }
 
+       {
+               add_label_to_sizer (grid, this, _("Y Scale"), true);
+               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+               _y_scale = new wxSpinCtrl (this);
+               s->Add (_y_scale);
+               add_label_to_sizer (s, this, _("%"), false);
+               grid->Add (s);
+       }
+       
        add_label_to_sizer (grid, this, _("Stream"), true);
        _stream = new wxChoice (this, wxID_ANY);
        grid->Add (_stream, 1, wxEXPAND);
        
        _x_offset->SetRange (-100, 100);
        _y_offset->SetRange (-100, 100);
-       _scale->SetRange (1, 1000);
-       _scale->SetValue (100);
+       _x_scale->SetRange (10, 1000);
+       _y_scale->SetRange (10, 1000);
 
        _with_subtitles->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&SubtitlePanel::with_subtitles_toggled, this));
        _x_offset->Bind       (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::x_offset_changed, this));
        _y_offset->Bind       (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::y_offset_changed, this));
-       _scale->Bind          (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::scale_changed, this));
+       _x_scale->Bind        (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::x_scale_changed, this));
+       _y_scale->Bind        (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::y_scale_changed, this));
        _stream->Bind         (wxEVT_COMMAND_CHOICE_SELECTED,  boost::bind (&SubtitlePanel::stream_changed, this));
 }
 
@@ -134,8 +144,10 @@ SubtitlePanel::film_content_changed (int property)
                checked_set (_x_offset, scs ? (scs->subtitle_x_offset() * 100) : 0);
        } else if (property == SubtitleContentProperty::SUBTITLE_Y_OFFSET) {
                checked_set (_y_offset, scs ? (scs->subtitle_y_offset() * 100) : 0);
-       } else if (property == SubtitleContentProperty::SUBTITLE_SCALE) {
-               checked_set (_scale, scs ? (scs->subtitle_scale() * 100) : 100);
+       } else if (property == SubtitleContentProperty::SUBTITLE_X_SCALE) {
+               checked_set (_x_scale, scs ? int (rint (scs->subtitle_x_scale() * 100)) : 100);
+       } else if (property == SubtitleContentProperty::SUBTITLE_Y_SCALE) {
+               checked_set (_y_scale, scs ? int (rint (scs->subtitle_y_scale() * 100)) : 100);
        }
 }
 
@@ -162,7 +174,8 @@ SubtitlePanel::setup_sensitivity ()
        _with_subtitles->Enable (h);
        _x_offset->Enable (j);
        _y_offset->Enable (j);
-       _scale->Enable (j);
+       _x_scale->Enable (j);
+       _y_scale->Enable (j);
        _stream->Enable (j);
 }
 
@@ -207,11 +220,20 @@ SubtitlePanel::y_offset_changed ()
 }
 
 void
-SubtitlePanel::scale_changed ()
+SubtitlePanel::x_scale_changed ()
+{
+       SubtitleContentList c = _editor->selected_subtitle_content ();
+       if (c.size() == 1) {
+               c.front()->set_subtitle_x_scale (_x_scale->GetValue() / 100.0);
+       }
+}
+
+void
+SubtitlePanel::y_scale_changed ()
 {
        SubtitleContentList c = _editor->selected_subtitle_content ();
        if (c.size() == 1) {
-               c.front()->set_subtitle_scale (_scale->GetValue() / 100.0);
+               c.front()->set_subtitle_y_scale (_y_scale->GetValue() / 100.0);
        }
 }
 
@@ -221,5 +243,6 @@ SubtitlePanel::content_selection_changed ()
        film_content_changed (FFmpegContentProperty::SUBTITLE_STREAMS);
        film_content_changed (SubtitleContentProperty::SUBTITLE_X_OFFSET);
        film_content_changed (SubtitleContentProperty::SUBTITLE_Y_OFFSET);
-       film_content_changed (SubtitleContentProperty::SUBTITLE_SCALE);
+       film_content_changed (SubtitleContentProperty::SUBTITLE_X_SCALE);
+       film_content_changed (SubtitleContentProperty::SUBTITLE_Y_SCALE);
 }
index 20d7c40c2eb1d3eb1add4350a1b1482b3cbfc2a1..7f5d9239d1d477fbad194b2ab6a2a34618466633 100644 (file)
@@ -35,7 +35,8 @@ private:
        void with_subtitles_toggled ();
        void x_offset_changed ();
        void y_offset_changed ();
-       void scale_changed ();
+       void x_scale_changed ();
+       void y_scale_changed ();
        void stream_changed ();
 
        void setup_sensitivity ();
@@ -43,6 +44,7 @@ private:
        wxCheckBox* _with_subtitles;
        wxSpinCtrl* _x_offset;
        wxSpinCtrl* _y_offset;
-       wxSpinCtrl* _scale;
+       wxSpinCtrl* _x_scale;
+       wxSpinCtrl* _y_scale;
        wxChoice* _stream;
 };
index ee5b5604bef4189e95329a360525be0e0bfbaf7b..166446d8c76140eb1e5fa01c27731abdb003111a 100644 (file)
@@ -121,6 +121,16 @@ Timecode::get (int fps) const
        return t;
 }
 
+void
+Timecode::clear ()
+{
+       checked_set (_hours, "");
+       checked_set (_minutes, "");
+       checked_set (_seconds, "");
+       checked_set (_frames, "");
+       _fixed->SetLabel ("");
+}
+
 void
 Timecode::changed ()
 {
index 880b44a31be8754ca54634e542d9e739e328b745..d0e8176f2d12a5e1cd51fce3675850c7a661c666 100644 (file)
@@ -28,6 +28,7 @@ public:
 
        void set (Time, int);
        Time get (int) const;
+       void clear ();
 
        void set_editable (bool);
 
index ef963bbfcce89751a70b5f979e3d83dcccec0aa0..aa4f70a81b476c715c8e068a27764eaa30636abc 100644 (file)
@@ -27,6 +27,7 @@
 
 using std::cout;
 using std::string;
+using std::set;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
 using libdcp::raw_convert;
@@ -78,67 +79,118 @@ void
 TimingPanel::film_content_changed (int property)
 {
        ContentList cl = _editor->selected_content ();
-       shared_ptr<Content> content;
-       if (cl.size() == 1) {
-               content = cl.front ();
-       }
-
        int const film_video_frame_rate = _editor->film()->video_frame_rate ();
+
+       /* Here we check to see if we have exactly one different value of various
+          properties, and fill the controls with that value if so.
+       */
        
        if (property == ContentProperty::POSITION) {
-               if (content) {
-                       _position->set (content->position (), film_video_frame_rate);
+
+               set<Time> check;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       check.insert ((*i)->position ());
+               }
+
+               if (check.size() == 1) {
+                       _position->set (cl.front()->position(), film_video_frame_rate);
                } else {
-                       _position->set (0, 24);
+                       _position->clear ();
                }
+               
        } else if (
                property == ContentProperty::LENGTH ||
                property == VideoContentProperty::VIDEO_FRAME_RATE ||
                property == VideoContentProperty::VIDEO_FRAME_TYPE
                ) {
-               if (content) {
-                       _full_length->set (content->full_length (), film_video_frame_rate);
-                       _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+               set<Time> check;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       check.insert ((*i)->full_length ());
+               }
+               
+               if (check.size() == 1) {
+                       _full_length->set (cl.front()->full_length (), film_video_frame_rate);
                } else {
-                       _full_length->set (0, 24);
-                       _play_length->set (0, 24);
+                       _full_length->clear ();
                }
+
        } else if (property == ContentProperty::TRIM_START) {
-               if (content) {
-                       _trim_start->set (content->trim_start (), film_video_frame_rate);
-                       _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+               set<Time> check;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       check.insert ((*i)->trim_start ());
+               }
+               
+               if (check.size() == 1) {
+                       _trim_start->set (cl.front()->trim_start (), film_video_frame_rate);
                } else {
-                       _trim_start->set (0, 24);
-                       _play_length->set (0, 24);
+                       _trim_start->clear ();
                }
+               
        } else if (property == ContentProperty::TRIM_END) {
-               if (content) {
-                       _trim_end->set (content->trim_end (), film_video_frame_rate);
-                       _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+               set<Time> check;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       check.insert ((*i)->trim_end ());
+               }
+               
+               if (check.size() == 1) {
+                       _trim_end->set (cl.front()->trim_end (), film_video_frame_rate);
                } else {
                        _trim_end->set (0, 24);
-                       _play_length->set (0, 24);
+               }
+       }
+
+       if (
+               property == ContentProperty::LENGTH ||
+               property == ContentProperty::TRIM_START ||
+               property == ContentProperty::TRIM_END ||
+               property == VideoContentProperty::VIDEO_FRAME_RATE ||
+               property == VideoContentProperty::VIDEO_FRAME_TYPE
+               ) {
+
+               set<Time> check;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       check.insert ((*i)->length_after_trim ());
+               }
+               
+               if (check.size() == 1) {
+                       _play_length->set (cl.front()->length_after_trim (), film_video_frame_rate);
+               } else {
+                       _play_length->clear ();
                }
        }
 
        if (property == VideoContentProperty::VIDEO_FRAME_RATE) {
-               if (content) {
-                       shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content);
-                       if (vc) {
-                               _video_frame_rate->SetValue (std_to_wx (raw_convert<string> (vc->video_frame_rate (), 5)));
-                       } else {
-                               _video_frame_rate->SetValue ("24");
+               set<float> check;
+               shared_ptr<VideoContent> vc;
+               for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+                       shared_ptr<VideoContent> t = dynamic_pointer_cast<VideoContent> (*i);
+                       if (t) {
+                               check.insert (t->video_frame_rate ());
+                               vc = t;
                        }
+               }
+               if (check.size() == 1) {
+                       _video_frame_rate->SetValue (std_to_wx (raw_convert<string> (vc->video_frame_rate (), 5)));
+                       _video_frame_rate->Enable (true);
                } else {
-                       _video_frame_rate->SetValue ("24");
+                       _video_frame_rate->SetValue ("");
+                       _video_frame_rate->Enable (false);
                }
        }
 
-       shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content);
-       shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (content);
-       _full_length->set_editable (ic && ic->still ());
-       _play_length->set_editable (!ic || !ic->still ());
-       _video_frame_rate->Enable (vc);
+       bool have_still = false;
+       for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+               shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (*i);
+               if (ic && ic->still ()) {
+                       have_still = true;
+               }
+       }
+
+       _full_length->set_editable (have_still);
+       _play_length->set_editable (!have_still);
        _set_video_frame_rate->Enable (false);
 }
 
@@ -146,8 +198,8 @@ void
 TimingPanel::position_changed ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               c.front()->set_position (_position->get (_editor->film()->video_frame_rate ()));
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               (*i)->set_position (_position->get (_editor->film()->video_frame_rate ()));
        }
 }
 
@@ -155,8 +207,8 @@ void
 TimingPanel::full_length_changed ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (c.front ());
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (*i);
                if (ic && ic->still ()) {
                        ic->set_video_length (rint (_full_length->get (_editor->film()->video_frame_rate()) * ic->video_frame_rate() / TIME_HZ));
                }
@@ -167,8 +219,8 @@ void
 TimingPanel::trim_start_changed ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               c.front()->set_trim_start (_trim_start->get (_editor->film()->video_frame_rate ()));
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               (*i)->set_trim_start (_trim_start->get (_editor->film()->video_frame_rate ()));
        }
 }
 
@@ -177,8 +229,8 @@ void
 TimingPanel::trim_end_changed ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               c.front()->set_trim_end (_trim_end->get (_editor->film()->video_frame_rate ()));
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               (*i)->set_trim_end (_trim_end->get (_editor->film()->video_frame_rate ()));
        }
 }
 
@@ -186,8 +238,8 @@ void
 TimingPanel::play_length_changed ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               c.front()->set_trim_end (c.front()->full_length() - _play_length->get (_editor->film()->video_frame_rate()) - c.front()->trim_start());
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               (*i)->set_trim_end ((*i)->full_length() - _play_length->get (_editor->film()->video_frame_rate()) - (*i)->trim_start());
        }
 }
 
@@ -201,8 +253,8 @@ void
 TimingPanel::set_video_frame_rate ()
 {
        ContentList c = _editor->selected_content ();
-       if (c.size() == 1) {
-               shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (c.front ());
+       for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+               shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
                if (vc) {
                        vc->set_video_frame_rate (raw_convert<float> (wx_to_std (_video_frame_rate->GetValue ())));
                }
@@ -213,16 +265,14 @@ TimingPanel::set_video_frame_rate ()
 void
 TimingPanel::content_selection_changed ()
 {
-       ContentList sel = _editor->selected_content ();
-       bool const single = sel.size() == 1;
-
-       /* Things that are only allowed with single selections */
-       _position->Enable (single);
-       _full_length->Enable (single);
-       _trim_start->Enable (single);
-       _trim_end->Enable (single);
-       _play_length->Enable (single);
-       _video_frame_rate->Enable (single);
+       bool const e = !_editor->selected_content().empty ();
+
+       _position->Enable (e);
+       _full_length->Enable (e);
+       _trim_start->Enable (e);
+       _trim_end->Enable (e);
+       _play_length->Enable (e);
+       _video_frame_rate->Enable (e);
        
        film_content_changed (ContentProperty::POSITION);
        film_content_changed (ContentProperty::LENGTH);
index 2d874b9594e8997571516d805d3d396df253b366..b33a97591c6617e45fe3a2da2a04bd1fca0fbe24 100644 (file)
@@ -332,7 +332,7 @@ VideoPanel::setup_description ()
        d << wxString::Format (_("Content frame rate %.4f\n"), vcs->video_frame_rate ());
        ++lines;
        FrameRateChange frc (vcs->video_frame_rate(), _editor->film()->video_frame_rate ());
-       d << std_to_wx (frc.description) << "\n";
+       d << std_to_wx (frc.description ()) << "\n";
        ++lines;
 
        for (int i = lines; i < 6; ++i) {
@@ -363,18 +363,19 @@ VideoPanel::edit_colour_conversion_clicked ()
 void
 VideoPanel::content_selection_changed ()
 {
-       VideoContentList sel = _editor->selected_video_content ();
-       bool const single = sel.size() == 1;
-
-       _left_crop->set_content (sel);
-       _right_crop->set_content (sel);
-       _top_crop->set_content (sel);
-       _bottom_crop->set_content (sel);
-       _frame_type->set_content (sel);
-       _scale->set_content (sel);
-
-       /* Things that are only allowed with single selections */
-       _filters_button->Enable (single);
+       VideoContentList video_sel = _editor->selected_video_content ();
+       FFmpegContentList ffmpeg_sel = _editor->selected_ffmpeg_content ();
+       
+       bool const single = video_sel.size() == 1;
+
+       _left_crop->set_content (video_sel);
+       _right_crop->set_content (video_sel);
+       _top_crop->set_content (video_sel);
+       _bottom_crop->set_content (video_sel);
+       _frame_type->set_content (video_sel);
+       _scale->set_content (video_sel);
+
+       _filters_button->Enable (single && !ffmpeg_sel.empty ());
        _colour_conversion_button->Enable (single);
 
        film_content_changed (VideoContentProperty::VIDEO_CROP);
index f26a91cbc5d30dfb16636417841157043f6b8f61..8bf2451c22cba584271a648c7037a7d2b909a0ca 100644 (file)
@@ -67,6 +67,9 @@ def configure(conf):
             conf.env.LIB_WXWIDGETS.append('Xxf86vm')
             conf.env.LIB_WXWIDGETS.append('Xext')
             conf.env.LIB_WXWIDGETS.append('X11')
+
+        if conf.env.TARGET_CENTOS_7:
+            conf.env.LIB_WXWIDGETS.append('Xxf86vm')
  
     conf.in_msg = 1
     wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip()
index 218a786b2a8f52dd57237416fb5406867e0726ad..7f15217f14a65490345aacf3a4b81551de8f892c 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
 
     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
@@ -193,7 +193,7 @@ void
 checked_set (wxSpinCtrlDouble* widget, double value)
 {
        /* XXX: completely arbitrary epsilon */
-       if (fabs (widget->GetValue() - value) < 1e-16) {
+       if (fabs (widget->GetValue() - value) > 1e-16) {
                widget->SetValue (value);
        }
 }
@@ -280,6 +280,14 @@ dcpomatic_setup_i18n ()
                locale->AddCatalogLookupPathPrefix (POSIX_LOCALE_PREFIX);
 #endif
 
+#ifdef DCPOMATIC_LINUX
+               /* We have to include the wxWidgets .mo in our distribution,
+                  so we rename it to avoid clashes with any other installation
+                  of wxWidgets.
+               */
+               locale->AddCatalog (wxT ("dcpomatic-wxstd"));
+#endif         
+               
                locale->AddCatalog (wxT ("libdcpomatic-wx"));
                locale->AddCatalog (wxT ("dcpomatic"));
                
@@ -312,14 +320,6 @@ wx_get (wxSpinCtrlDouble* w)
        return w->GetValue ();
 }
 
-void
-run_gui_loop ()
-{
-       while (wxTheApp->Pending ()) {
-               wxTheApp->Dispatch ();
-       }
-}
-
 /** @param s String of the form Context|String
  *  @return translation, or String if no translation is available.
  */
index 6dfc0bf5c5bbb9b4dcf3ef017f8d9af9ed45b5e9..f0e20be9598b015cb13fb8700220d0dfc3308d18 100644 (file)
@@ -63,7 +63,6 @@ extern wxStaticText* add_label_to_grid_bag_sizer (wxGridBagSizer *, wxWindow *,
 extern std::string wx_to_std (wxString);
 extern wxString std_to_wx (std::string);
 extern void dcpomatic_setup_i18n ();
-extern void run_gui_loop ();
 extern wxString context_translation (wxString);
 
 /** @class ThreadedStaticText
index 7440e43381e27dcb82530391f470607c13939332..c9f4a2c38faaab5b4d82bbb0ece8a550b0fc3537 100644 (file)
@@ -17,7 +17,6 @@
 
 */
 
-#include <sstream>
 #include <boost/test/unit_test.hpp>
 #include <boost/filesystem.hpp>
 #include <boost/date_time.hpp>
@@ -27,7 +26,6 @@
 #include "test.h"
 
 using std::string;
-using std::stringstream;
 using std::list;
 using boost::shared_ptr;
 
index a77bc949ce123e7e851ea23d038315039476b1a9..7d2911c4e756259f917a2fcf1e6f368c0fca67ce 100644 (file)
@@ -54,10 +54,6 @@ public:
        string name () const {
                return "";
        }
-
-       string json_name () const {
-               return "";
-       }
 };
 
 BOOST_AUTO_TEST_CASE (job_manager_test)
index 750023d9f1a689bb4414706b66c352a4b6cda2d8..40a2835f1515f68a47ba5b9981a812778ad10295 100644 (file)
@@ -66,3 +66,16 @@ BOOST_AUTO_TEST_CASE (divide_with_round_test)
 
        BOOST_CHECK_EQUAL (divide_with_round (1000, 500), 2);
 }
+
+BOOST_AUTO_TEST_CASE (seconds_to_approximate_hms_test)
+{
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (1), "1 second");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (2), "2 seconds");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (60), "1 minute");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (1.5 * 60), "1 minute 30 seconds");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (2 * 60), "2 minutes");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (17 * 60 + 20), "17 minutes");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (1 * 3600), "1 hour");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (3600 + 40 * 60), "1 hour 40 minutes");
+       BOOST_CHECK_EQUAL (seconds_to_approximate_hms (13 * 3600 + 40 * 60), "14 hours");
+}
diff --git a/wscript b/wscript
index 404782b3c5f066e1ee6631eae791bc2658f2a0c7..897517b4f724a47badec7bca4e77f35954e8a8ae 100644 (file)
--- a/wscript
+++ b/wscript
@@ -3,7 +3,7 @@ import os
 import sys
 
 APPNAME = 'dcpomatic'
-VERSION = '1.72.0devel'
+VERSION = '1.74.3devel'
 
 def options(opt):
     opt.load('compiler_cxx')
@@ -11,10 +11,12 @@ def options(opt):
 
     opt.add_option('--enable-debug',      action='store_true', default=False, help='build with debugging information and without optimisation')
     opt.add_option('--disable-gui',       action='store_true', default=False, help='disable building of GUI tools')
+    opt.add_option('--disable-tests',     action='store_true', default=False, help='disable building of tests')
     opt.add_option('--target-windows',    action='store_true', default=False, help='set up to do a cross-compile to make a Windows package')
     opt.add_option('--target-debian',     action='store_true', default=False, help='set up to compile for a Debian/Ubuntu package')
     opt.add_option('--debian-unstable',   action='store_true', default=False, help='add extra libraries to static-build correctly on Debian unstable')
-    opt.add_option('--target-centos',     action='store_true', default=False, help='set up to compile for a Centos package')
+    opt.add_option('--target-centos-6',   action='store_true', default=False, help='set up to compile for a Centos 6.5 package')
+    opt.add_option('--target-centos-7',   action='store_true', default=False, help='set up to compile for a Centos 7 package')
     opt.add_option('--magickpp-config',   action='store',      default='Magick++-config', help='path to Magick++-config')
     opt.add_option('--wx-config',         action='store',      default='wx-config', help='path to wx-config')
     opt.add_option('--address-sanitizer', action='store_true', default=False, help='build with address sanitizer')
@@ -26,8 +28,9 @@ def static_ffmpeg(conf):
     conf.check_cfg(package='libavfilter', args='--cflags', uselib_store='AVFILTER', mandatory=True)
     conf.env.STLIB_AVFILTER = ['avfilter', 'swresample']
     conf.check_cfg(package='libavcodec', args='--cflags', uselib_store='AVCODEC', mandatory=True)
+    # lzma link is needed by Centos 7, at least
     conf.env.STLIB_AVCODEC = ['avcodec']
-    conf.env.LIB_AVCODEC = ['z']
+    conf.env.LIB_AVCODEC = ['z', 'lzma']
     conf.check_cfg(package='libavutil', args='--cflags', uselib_store='AVUTIL', mandatory=True)
     conf.env.STLIB_AVUTIL = ['avutil']
     conf.check_cfg(package='libswscale', args='--cflags', uselib_store='SWSCALE', mandatory=True)
@@ -56,7 +59,7 @@ def dynamic_openjpeg(conf):
     conf.check_cfg(package='libopenjpeg', args='--cflags --libs', max_version='1.5.2', mandatory=True)
 
 def static_dcp(conf, static_boost, static_xmlpp, static_xmlsec, static_ssh):
-    conf.check_cfg(package='libdcp', atleast_version='0.95', args='--cflags', uselib_store='DCP', mandatory=True)
+    conf.check_cfg(package='libdcp', atleast_version='0.96', args='--cflags', uselib_store='DCP', mandatory=True)
     conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
     conf.env.STLIB_DCP = ['dcp', 'asdcp-libdcp', 'kumu-libdcp']
     conf.env.LIB_DCP = ['glibmm-2.4', 'ssl', 'crypto', 'bz2', 'xslt']
@@ -82,7 +85,7 @@ def static_dcp(conf, static_boost, static_xmlpp, static_xmlsec, static_ssh):
         conf.env.LIB_DCP.append('ssh')
 
 def dynamic_dcp(conf):
-    conf.check_cfg(package='libdcp', atleast_version='0.95.0', args='--cflags --libs', uselib_store='DCP', mandatory=True)
+    conf.check_cfg(package='libdcp', atleast_version='0.97.0', args='--cflags --libs', uselib_store='DCP', mandatory=True)
     conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP]
 
 def dynamic_ssh(conf):
@@ -163,14 +166,16 @@ def configure(conf):
     # conf.options -> conf.env
     conf.env.TARGET_WINDOWS = conf.options.target_windows
     conf.env.DISABLE_GUI = conf.options.disable_gui
+    conf.env.DISABLE_TESTS = conf.options.disable_tests
     conf.env.TARGET_DEBIAN = conf.options.target_debian
     conf.env.DEBIAN_UNSTABLE = conf.options.debian_unstable
-    conf.env.TARGET_CENTOS = conf.options.target_centos
+    conf.env.TARGET_CENTOS_6 = conf.options.target_centos_6
+    conf.env.TARGET_CENTOS_7 = conf.options.target_centos_7
     conf.env.VERSION = VERSION
     conf.env.TARGET_OSX = sys.platform == 'darwin'
     conf.env.TARGET_LINUX = not conf.env.TARGET_WINDOWS and not conf.env.TARGET_OSX
     # true if we should build dcpomatic/libdcpomatic/libdcpomatic-wx statically
-    conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos
+    conf.env.BUILD_STATIC = conf.options.target_debian or conf.options.target_centos_6 or conf.options.target_centos_7
     if conf.options.install_prefix is None:
         conf.env.INSTALL_PREFIX = conf.env.PREFIX
     else:
@@ -178,7 +183,7 @@ def configure(conf):
 
     # Common CXXFLAGS
     conf.env.append_value('CXXFLAGS', ['-D__STDC_CONSTANT_MACROS', '-D__STDC_LIMIT_MACROS', '-msse', '-ffast-math', '-fno-strict-aliasing',
-                                       '-Wall', '-Wno-attributes', '-Wextra', '-D_FILE_OFFSET_BITS=64'])
+                                       '-Wall', '-Wno-attributes', '-Wextra', '-Wno-unused-result', '-D_FILE_OFFSET_BITS=64'])
 
     if conf.options.enable_debug:
         conf.env.append_value('CXXFLAGS', ['-g', '-DDCPOMATIC_DEBUG'])
@@ -218,8 +223,8 @@ def configure(conf):
     # POSIX
     if conf.env.TARGET_LINUX or conf.env.TARGET_OSX:
         conf.env.append_value('CXXFLAGS', '-DDCPOMATIC_POSIX')
-        conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['PREFIX'])
-        conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['PREFIX'])
+        conf.env.append_value('CXXFLAGS', '-DPOSIX_LOCALE_PREFIX="%s/share/locale"' % conf.env['INSTALL_PREFIX'])
+        conf.env.append_value('CXXFLAGS', '-DPOSIX_ICON_PREFIX="%s/share/dcpomatic"' % conf.env['INSTALL_PREFIX'])
         boost_lib_suffix = ''
         boost_thread = 'boost_thread'
         conf.env.append_value('LINKFLAGS', '-pthread')
@@ -247,9 +252,9 @@ def configure(conf):
     #
 
     if conf.env.TARGET_DEBIAN:
-        conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True)
+        conf.check_cfg(package='libcxml', atleast_version='0.11', args='--cflags', uselib_store='CXML', mandatory=True)
         conf.env.STLIB_CXML = ['cxml']
-        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
         conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
         conf.env.STLIB_QUICKMAIL = ['quickmail']
         static_ffmpeg(conf)
@@ -257,7 +262,8 @@ def configure(conf):
         static_dcp(conf, False, False, False, False)
         dynamic_boost(conf, boost_lib_suffix, boost_thread)
 
-    if conf.env.TARGET_CENTOS:
+    if conf.env.TARGET_CENTOS_6:
+        # Centos 6.5's boost is too old, so we build a new version statically in the chroot
         conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs-only-L', uselib_store='CXML', mandatory=True)
         conf.env.STLIB_CXML = ['cxml', 'boost_filesystem']
         conf.check_cfg(package='libcurl', args='--cflags --libs-only-L', uselib_store='CURL', mandatory=True)
@@ -270,8 +276,22 @@ def configure(conf):
         static_dcp(conf, True, True, True, True)
         static_boost(conf, boost_lib_suffix)
 
+    if conf.env.TARGET_CENTOS_7:
+        # Centos 7's boost is ok so we link it dynamically
+        conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags', uselib_store='CXML', mandatory=True)
+        conf.env.STLIB_CXML = ['cxml']
+        conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
+        conf.env.STLIB_QUICKMAIL = ['quickmail']
+        conf.env.LIB_SSH = ['gssapi_krb5']
+        conf.env.LIB_XMLPP = ['xml2']
+        conf.env.LIB_XMLSEC = ['ltdl']
+        static_ffmpeg(conf)
+        static_openjpeg(conf)
+        static_dcp(conf, False, True, True, True)
+        dynamic_boost(conf, boost_lib_suffix, boost_thread)
+
     if conf.env.TARGET_WINDOWS:
-        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
         conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
         conf.check_cxx(fragment="""
                                #include <boost/locale.hpp>\n
@@ -288,9 +308,9 @@ def configure(conf):
         dynamic_ssh(conf)
 
     # Not packaging; just a straight build
-    if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS:
+    if not conf.env.TARGET_WINDOWS and not conf.env.TARGET_DEBIAN and not conf.env.TARGET_CENTOS_6 and not conf.env.TARGET_CENTOS_7:
         conf.check_cfg(package='libcxml', atleast_version='0.08', args='--cflags --libs', uselib_store='CXML', mandatory=True)
-        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XML++', mandatory=True)
+        conf.check_cfg(package='libxml++-2.6', args='--cflags --libs', uselib_store='XMLPP', mandatory=True)
         conf.check_cfg(package='libcurl', args='--cflags --libs', uselib_store='CURL', mandatory=True)
         dynamic_quickmail(conf)
         dynamic_boost(conf, boost_lib_suffix, boost_thread)
@@ -323,13 +343,15 @@ def configure(conf):
     conf.define('DATADIR', datadir)
 
     conf.recurse('src')
-    conf.recurse('test')
+    if not conf.env.DISABLE_TESTS:
+        conf.recurse('test')
 
 def build(bld):
     create_version_cc(VERSION, bld.env.CXXFLAGS)
 
     bld.recurse('src')
-    bld.recurse('test')
+    if not bld.env.DISABLE_TESTS:
+        bld.recurse('test')
     if bld.env.TARGET_WINDOWS:
         bld.recurse('platform/windows')
     if bld.env.TARGET_LINUX: