+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.
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':
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')
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)
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'):
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
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):
-dcpomatic (1.72.0-1) UNRELEASED; urgency=low
+dcpomatic (1.74.3-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.
+ * 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
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:
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
Hello, and welcome to DCP-o-matic!
</para>
+<!-- ============================================================== -->
<section>
<title>What is DCP-o-matic?</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Licence</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Acknowledgements</title>
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Installation</title>
+
+<!-- ============================================================== -->
<section>
<title>Windows</title>
</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
<para>
You can install DCP-o-matic on Ubuntu 12.04 (‘Precise
-Pangolin’), 12.10 (‘Quantal Quetzal’), 13.10 (‘Saucy
-Salamander’) or 14.04 (‘Trusty Tahr’) using <code>.deb</code> packages: download the
+Pangolin’) or 14.04 (‘Trusty Tahr’) 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
</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>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Other Linux distributions</title>
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>
</section>
</chapter>
+
+<!-- ============================================================== -->
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Creating a video DCP</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Adding content</title>
+
+<!-- ============================================================== -->
<section>
<title>Making the DCP</title>
</section>
</chapter>
+
+<!-- ============================================================== -->
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Creating a still-image DCP</title>
</chapter>
+
+<!-- ============================================================== -->
<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Content settings</title>
</para>
</section>
+
+
+<!-- ============================================================== -->
<section>
<title>Content Properties</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Video</title>
</mediaobject>
</figure>
+
+<!-- ============================================================== -->
<section>
<title>Image type</title>
</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>
</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>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Video description</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Audio</title>
</mediaobject>
</figure>
+
+<!-- ============================================================== -->
<section>
<title>Show audio</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>The audio map</title>
<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>
<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">
</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">
</section>
+
+<!-- ============================================================== -->
<section>
<title>Other controls</title>
</section>
+<!-- ============================================================== -->
<section>
<title>Subtitles</title>
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>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Timing</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Video processing pipeline</title>
<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>
DCP-o-matic can create encrypted DCPs and KDMs for them.
</para>
+
+<!-- ============================================================== -->
<section>
<title>Basics</title>
delivery message (KDM) can play the DCP.
</para>
+
+<!-- ============================================================== -->
<section>
<title>How it works (in a nutshell)</title>
</section>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Encryption using DCP-o-matic</title>
</chapter>
+
+<!-- ============================================================== -->
<chapter xml:id="ch-preferences" xmlns="http://docbook.org/ns/docbook" version="5.0" xml:lang="en">
<title>Preferences</title>
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>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Threads</title>
</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 ‘from’ 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 ‘released’ 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>
</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>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>KDM email</title>
<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
-‘magic’ string <code>$CPL_NAME</code> will be replaced by
-DCP's title.
+cinemas. You can change it to say whatever you like. A few
+‘magic’ strings will be replaced by information from the
+KDM that is being sent:
+</para>
+
+<table>
+<title>‘Magic’ 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>
however, always possible.
</para>
+
+<!-- ============================================================== -->
<section>
<title>DCP frame rate limitations</title>
even refuse to ingest.
</para>
+
+<!-- ============================================================== -->
<section>
<title>Guaranteed rates</title>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Other often-supported rates</title>
<para>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Adapting content to fit the DCP rate</title>
</section>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Setting up</title>
can mix Windows PCs, Macs and Linux machines as you wish.
</para>
+
+<!-- ============================================================== -->
<section>
<title>Running the servers</title>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Setting up DCP-o-matic</title>
</para>
</section>
+
+<!-- ============================================================== -->
<section>
<title>Some notes about encode servers</title>
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>
--- /dev/null
+#!/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'"
--- /dev/null
+#!/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
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
%{_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
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'])
#
# 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"`
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
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
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"
-
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"
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"
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"
# 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
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
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
return _("Analyse audio");
}
-string
-AnalyseAudioJob::json_name () const
-{
- return N_("analyse_audio");
-}
-
void
AnalyseAudioJob::run ()
{
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;
}
AnalyseAudioJob (boost::shared_ptr<const Film>, boost::shared_ptr<AudioContent>);
std::string name () const;
- std::string json_name () const;
void run ();
private:
#include <cmath>
#include <cassert>
#include <cstdio>
+#include <iostream>
#include <boost/filesystem.hpp>
#include "audio_analysis.h"
#include "cross.h"
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;
+ }
}
}
{
FILE* f = fopen_boost (filename, "r");
- int channels;
+ int channels = 0;
fscanf (f, "%d", &channels);
_data.resize (channels);
*/
+#include <iostream>
#include "audio_decoder.h"
#include "audio_buffers.h"
#include "exceptions.h"
#include "i18n.h"
-using std::stringstream;
using std::list;
using std::pair;
using std::cout;
using std::list;
using std::string;
-using std::stringstream;
using std::cout;
using std::vector;
using boost::shared_ptr;
#ifndef STRING_COMPOSE_H
#define STRING_COMPOSE_H
-#include <sstream>
#include <string>
#include <list>
#include <map> // for multimap
+#include "safe_stringstream.h"
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
*/
-#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;
, _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)
_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 ());
_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 {
_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);
_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
} 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);
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"));
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");
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 ());
}
"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 ();
+}
#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;
return _default_still_length;
}
+ VideoContentScale default_scale () const {
+ return _default_scale;
+ }
+
Ratio const * default_container () const {
return _default_container;
}
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 {
return _mail_password;
}
+ std::string kdm_subject () const {
+ return _kdm_subject;
+ }
+
std::string kdm_from () const {
return _kdm_from;
}
std::string kdm_cc () const {
return _kdm_cc;
}
+
+ std::string kdm_bcc () const {
+ return _kdm_bcc;
+ }
std::string kdm_email () const {
return _kdm_email;
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;
changed ();
}
+ void set_default_scale (VideoContentScale s) {
+ _default_scale = s;
+ changed ();
+ }
+
void set_default_container (Ratio const * c) {
_default_container = c;
changed ();
changed ();
}
- void set_dcp_metadata (libdcp::XMLMetadata m) {
- _dcp_metadata = m;
+ void set_dcp_issuer (std::string i) {
+ _dcp_issuer = i;
changed ();
}
changed ();
}
+ void set_kdm_subject (std::string s) {
+ _kdm_subject = s;
+ changed ();
+ }
+
void set_kdm_from (std::string f) {
_kdm_from = f;
changed ();
_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;
_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;
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;
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;
/** 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;
};
#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;
string
Content::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << Content::digest()
<< "_" << position()
Waker::nudge ()
{
#ifdef DCPOMATIC_WINDOWS
- SetThreadExecutionState (ES_CONTINUOUS);
+ SetThreadExecutionState (ES_SYSTEM_REQUIRED);
#endif
}
#include <stdexcept>
#include <cstdio>
#include <iomanip>
-#include <sstream>
#include <iostream>
#include <fstream>
#include <unistd.h>
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::cout;
using boost::shared_ptr;
using libdcp::Size;
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);
using std::pair;
using std::string;
-using std::stringstream;
using std::vector;
using std::list;
using std::cout;
return _("Examine content");
}
-string
-ExamineContentJob::json_name () const
-{
- return N_("examine_content");
-}
-
void
ExamineContentJob::run ()
{
~ExamineContentJob ();
std::string name () const;
- std::string json_name () const;
void run ();
private:
using std::string;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
using libdcp::raw_convert;
#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;
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 ();
string
FFmpegContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << VideoContent::identifier();
#include <stdexcept>
#include <vector>
-#include <sstream>
#include <iomanip>
#include <iostream>
#include <stdint.h>
using std::cout;
using std::string;
using std::vector;
-using std::stringstream;
using std::list;
using std::min;
using std::pair;
}
/* 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);
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)) {
/* 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) {
}
#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;
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);
string
FFmpegExaminer::subtitle_stream_name (AVStream* s) const
{
- stringstream n;
+ SafeStringStream n;
n << stream_name (s);
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);
#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;
* 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.
*
{
assert (container ());
- stringstream s;
+ SafeStringStream s;
s.imbue (std::locale::classic ());
s << container()->id()
string
Film::isdcf_name (bool if_created_now) const
{
- stringstream d;
+ SafeStringStream d;
string raw_name = name ();
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;
}
}
boost::filesystem::path p;
p /= info_dir ();
- stringstream s;
+ SafeStringStream s;
s.width (8);
s << setfill('0') << f;
p /= "j2c";
p /= video_identifier ();
- stringstream s;
+ SafeStringStream s;
s.width (8);
s << setfill('0') << f;
#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;
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:"
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."));
}
#include "i18n.h"
+using std::string;
+
static bool
about_equal (float a, float b)
{
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 {
description += String::compose (_("DCP will run at %1%% of the content speed.\n"), pc);
}
}
+
+ return description;
}
*/
float speed_up;
- std::string description;
+ std::string description () const;
};
#endif
using std::min;
using std::cout;
using std::cerr;
-using std::stringstream;
using boost::shared_ptr;
using libdcp::Size;
#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)
string
ImageContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << VideoContent::identifier ();
s << "_" << video_length();
return s.str ();
using std::cout;
using std::string;
-using std::stringstream;
using boost::shared_ptr;
ImageProxy::ImageProxy (shared_ptr<Log> log)
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 ());
{
public:
ImageProxy (boost::shared_ptr<Log> log);
+ virtual ~ImageProxy () {}
/** @return Image (which must be aligned) */
virtual boost::shared_ptr<Image> image () const = 0;
#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;
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);
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;
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 != "..") {
#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)
pc = 99;
}
- stringstream s;
+ SafeStringStream s;
if (!finished ()) {
s << pc << N_("%");
if (p >= 0 && t > 10 && r > 0) {
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
/** @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;
int elapsed_time () const;
virtual std::string status () const;
- std::string json_status () const;
std::string sub_name () const {
return _sub_name;
}
+++ /dev/null
-/*
- 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()));
-}
+++ /dev/null
-/*
- 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);
-};
-
-
#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;
/* 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 << ", ";
}
#include "log.h"
#include "cross.h"
#include "config.h"
+#include "safe_stringstream.h"
#include "i18n.h"
time (&t);
string a = ctime (&t);
- stringstream s;
+ SafeStringStream s;
s << a.substr (0, a.length() - 1) << N_(": ");
if (type & TYPE_ERROR) {
struct timeval tv;
gettimeofday (&tv, 0);
- stringstream s;
+ SafeStringStream s;
s << tv.tv_sec << N_(":") << tv.tv_usec << N_(" ") << m;
do_log (s.str ());
}
*/
#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;
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]);
}
} 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) {
using std::min;
using std::max;
using std::string;
-using std::stringstream;
using std::pair;
using boost::optional;
using boost::shared_ptr;
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 ());
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"
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"
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"
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"
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"
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"
msgid "De-interlacing"
msgstr "De-Interlacer"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
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"
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"
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"
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"
msgid "Gradient debander"
msgstr "Gradient Glätter"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "HI"
"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"
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)"
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"
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"
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!"
"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 "
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"
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."
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..."
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!"
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"
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)"
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."
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"
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"
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"
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"
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"
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"
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"
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"
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"
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."
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"
msgid "De-interlacing"
msgstr "Desentrelazado"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
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"
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)"
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"
msgid "Gradient debander"
msgstr "Gradient debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "Sordos"
"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"
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)"
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"
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"
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!"
"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 "
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 ""
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)"
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"
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."
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"
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)"
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"
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"
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"
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"
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"
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]"
#: 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"
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"
#: src/lib/scaler.cc:64
msgid "Area"
-msgstr "Area"
+msgstr "Surface"
#: src/lib/scaler.cc:62
msgid "Bicubic"
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"
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"
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"
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 ""
msgid "De-interlacing"
msgstr "Désentrelacement"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
"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"
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"
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"
#: 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"
"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"
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"
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"
#: 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"
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"
"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!"
"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
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"
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"
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"
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"
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)"
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"
"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"
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"
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"
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"
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"
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"
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"
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 ""
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"
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 ""
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"
msgid "De-interlacing"
msgstr "De-interlacciamento"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
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 ""
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) "
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"
msgid "Gradient debander"
msgstr "Gradiente debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
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"
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)"
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"
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"
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 "
"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 "
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 ""
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)"
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"
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"
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"
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 ""
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"
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"
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"
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"
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"
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
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"
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"
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"
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"
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."
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"
msgid "De-interlacing"
msgstr "De-interlacing"
-#: src/lib/config.cc:417
-#, fuzzy
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
"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"
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"
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)"
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"
msgid "Gradient debander"
msgstr "Gradient debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "Slechthorenden"
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"
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)"
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"
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"
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!"
"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 "
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)"
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"
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"
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"
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)"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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."
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"
msgstr "Avflätning"
# svåröversatt
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
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"
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)"
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"
msgid "Gradient debander"
msgstr "Gradientutjämnare"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
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"
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)"
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"
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"
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 "
"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 "
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 ""
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)"
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"
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"
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"
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)"
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"
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"
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"
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"
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"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::vector;
vector<Ratio const *> Ratio::_ratios;
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;
+}
+
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;
}
--- /dev/null
+/*
+ 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;
--- /dev/null
+/*
+ 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
#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;
return _("Copy DCP to TMS");
}
-string
-SCPDCPJob::json_name () const
-{
- return N_("scp_dcp");
-}
-
void
SCPDCPJob::run ()
{
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
SCPDCPJob (boost::shared_ptr<const Film>);
std::string name () const;
- std::string json_name () const;
void run ();
std::string status () const;
return String::compose (_("Email KDMs for %1"), _film->name());
}
-string
-SendKDMEmailJob::json_name () const
-{
- return N_("send_kdm_email");
-}
-
void
SendKDMEmailJob::run ()
{
);
std::string name () const;
- std::string json_name () const;
void run ();
private:
#include <string>
#include <vector>
-#include <sstream>
#include <iostream>
#include <boost/algorithm/string.hpp>
#include <boost/scoped_array.hpp>
#include "config.h"
#include "cross.h"
#include "player_video_frame.h"
+#include "safe_stringstream.h"
#include "i18n.h"
#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;
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");
struct timeval end;
gettimeofday (&end, 0);
- stringstream message;
+ SafeStringStream message;
message.precision (2);
message << fixed
<< "Encoded frame " << frame << " from " << ip << ": "
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 (...) {
}
#include "ui_signaller.h"
using std::string;
-using std::stringstream;
using std::list;
using std::vector;
using std::cout;
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);
#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;
return "";
}
- stringstream s;
+ SafeStringStream s;
s << String::compose (
_("%1 channels, %2kHz, %3 samples"),
#include <iomanip>
#include <ostream>
#include <stdexcept>
-#include <sstream>
#include "stack.hpp"
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:
*
* 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,
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)
{
}
: 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");
} 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)
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
{
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
}
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);
}
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
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);
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:
* +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
#include "film.h"
#include "transcoder.h"
#include "log.h"
+#include "safe_stringstream.h"
#include "i18n.h"
#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;
return String::compose (_("Transcode %1"), _film->name());
}
-string
-TranscodeJob::json_name () const
-{
- return N_("transcode");
-}
-
void
TranscodeJob::run ()
{
return Job::status ();
}
- stringstream s;
+ SafeStringStream s;
s << Job::status ();
TranscodeJob (boost::shared_ptr<const Film> f);
std::string name () const;
- std::string json_name () const;
void run ();
std::string status () const;
}
}
+ /* 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 ();
}
*/
#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;
}
_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);
* @brief Some utility functions and classes.
*/
-#include <sstream>
#include <iomanip>
#include <iostream>
#include <fstream>
#include "cross.h"
#include "video_content.h"
#include "md5_digester.h"
+#include "safe_stringstream.h"
#ifdef DCPOMATIC_WINDOWS
#include "stack.hpp"
#endif
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::setfill;
using std::ostream;
using std::endl;
int h = m / 60;
m -= (h * 60);
- stringstream hms;
+ SafeStringStream hms;
hms << h << N_(":");
hms.width (2);
hms << std::setfill ('0') << m << N_(":");
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 ();
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 ();
}
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_(", ")
}
#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
}
_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;
/** 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;
#include "film.h"
#include "exceptions.h"
#include "frame_rate_change.h"
+#include "safe_stringstream.h"
#include "i18n.h"
int const VideoContentProperty::COLOUR_CONVERSION = 5;
using std::string;
-using std::stringstream;
using std::setprecision;
using std::cout;
using std::vector;
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 ();
}
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 ();
}
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 ();
}
_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");
}
_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 ();
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"));
boost::mutex::scoped_lock lm (_mutex);
_video_size = vs;
_video_frame_rate = vfr;
+ _original_video_frame_rate = vfr;
}
signal_changed (VideoContentProperty::VIDEO_SIZE);
return "";
}
- stringstream s;
+ SafeStringStream s;
s << String::compose (
_("%1x%2 pixels (%3:1)"),
string
VideoContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << Content::identifier()
<< "_" << crop().left
<< "_" << crop().right
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());
-}
#include "content.h"
#include "colour_conversion.h"
+#include "video_content_scale.h"
class VideoExaminer;
class Ratio;
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:
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);
void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
VideoContent::Frame _video_length;
+ float _original_video_frame_rate;
float _video_frame_rate;
private:
--- /dev/null
+/*
+ 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());
+}
--- /dev/null
+/*
+ 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
#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
using std::string;
using std::list;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
using boost::weak_ptr;
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 */
_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> ());
job.cc
job_manager.cc
kdm.cc
- json_server.cc
log.cc
md5_digester.cc
piece.cc
playlist.cc
ratio.cc
resampler.cc
+ safe_stringstream.cc
scp_dcp_job.cc
scaler.cc
send_kdm_email_job.cc
update.cc
util.cc
video_content.cc
+ video_content_scale.cc
video_decoder.cc
writer.cc
"""
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:
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'
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;
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
);
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
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,
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:
, _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();
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);
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);
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 ()
}
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 ();
}
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 ();
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 ()
{
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;
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) {
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)"));
}
void tools_hints ()
{
if (!_hints_dialog) {
- _hints_dialog = new HintsDialog (this, film);
+ _hints_dialog = new HintsDialog (this, _film);
}
_hints_dialog->Show ();
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 ();
}
++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;
}
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[] = {
*/
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));
_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 ();
{
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)."));
Frame* _frame;
shared_ptr<wxTimer> _timer;
+ string _film_to_load;
+ string _film_to_create;
+ string _content_to_add;
};
IMPLEMENT_APP (App)
/*
- 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
#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"
public:
Frame (wxString const & title)
: wxFrame (NULL, -1, title)
+ , _sizer (new wxBoxSizer (wxVERTICAL))
{
wxMenuBar* bar = new wxMenuBar;
setup_menu (bar);
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 ()) {
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 ()
}
boost::optional<boost::filesystem::path> _last_parent;
+ wxSizer* _sizer;
};
static const wxCmdLineEntryDesc command_line_description[] = {
#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;
<< " -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";
string film_dir;
bool progress = true;
bool no_remote = false;
- int json_port = 0;
bool keep_going = false;
int option_index = 0;
{ "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;
case 'r':
no_remote = true;
break;
- case 'j':
- json_port = atoi (optarg);
- break;
case 'k':
keep_going = true;
break;
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) {
}
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 ();
#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;
static boost::posix_time::time_duration
duration_from_string (string d)
{
- stringstream s (d);
+ SafeStringStream s (d);
int N;
string unit;
s >> N >> unit;
#include "lib/server.h"
#include <iostream>
#include <stdexcept>
-#include <sstream>
#include <cstring>
#include <vector>
#include <unistd.h>
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"
"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"
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)."
"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 "
"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?"
"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."
"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."
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"
"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"
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 "
"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."
"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."
"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"
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"
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."
"ê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."
"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"
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"
"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"
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 "
"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."
"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"
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 "
"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."
"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."
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"
"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"
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 "
"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?"
"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."
"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"
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;
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"));
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;
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);
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);
}
}
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);
}
}
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;
#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;
_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);
{}
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;
};
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);
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);
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);
_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);
_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));
_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;
}
{
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 ()
{
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;
#else
wxDirPickerCtrl* _directory;
#endif
+ wxChoice* _scale;
wxChoice* _container;
wxChoice* _dcp_content_type;
wxTextCtrl* _issuer;
- wxTextCtrl* _creator;
};
class EncodingServersPage : public wxPreferencesPage, public Page
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")));
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));
#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")));
300
);
- s->Add (list, 1, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (list, 1, wxEXPAND | wxALL, _border);
return panel;
}
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);
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);
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);
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 ()));
_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;
{
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 ()
{
{
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 ()
{
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;
};
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);
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 ();
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);
#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;
_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) {
_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) {
_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);
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 (
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;
#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"
}
_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 (
void download ();
void set_sensitivity ();
+ void finish_download (std::string serial);
+
wxTextCtrl* _serial;
};
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"));
}
_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));
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);
boost::function<std::string (T, int)> _column;
wxButton* _add;
+ wxButton* _copy;
wxButton* _edit;
wxButton* _remove;
wxListCtrl* _list;
#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"
using std::string;
using std::cout;
-using std::stringstream;
using std::pair;
using std::fixed;
using std::setprecision;
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)
make_dcp_panel ();
_main_notebook->AddPage (_dcp_panel, _("DCP"), false);
- set_film (f);
connect_to_widgets ();
JobManager::instance()->ActiveJobsChanged.connect (
);
Config::instance()->Changed.connect (boost::bind (&FilmEditor::config_changed, this));
-
+
+ set_film (shared_ptr<Film> ());
SetSizerAndFit (s);
}
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;
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);
_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));
_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 */
return;
}
- stringstream s;
+ SafeStringStream s;
for (list<FilmEditorPanel*>::iterator i = _panels.begin(); i != _panels.end(); ++i) {
(*i)->film_changed (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 ();
setup_content ();
} else if (property == ContentProperty::POSITION) {
setup_content ();
+ } else if (property == VideoContentProperty::VIDEO_SCALE) {
+ setup_dcp_name ();
}
}
_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 ()
{
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 ();
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);
}
if (s < int (_film->content().size ())) {
- sel.push_back (_film->content()[s]);
+ sel.push_back (content[s]);
}
}
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);
}
}
}
_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])));
+ }
+}
class wxNotebook;
class wxListCtrl;
class wxListEvent;
+class wxGridBagSizer;
class Film;
class TimelineDialog;
class Ratio;
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>);
AudioContentList selected_audio_content ();
SubtitleContentList selected_subtitle_content ();
FFmpegContentList selected_ffmpeg_content ();
+
+ void content_add_file_clicked ();
private:
void make_dcp_panel ();
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 ();
/* 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 ();
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))
_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)
);
class FilmViewer : public wxPanel
{
public:
- FilmViewer (boost::shared_ptr<Film>, wxWindow *);
+ FilmViewer (wxWindow *);
void set_film (boost::shared_ptr<Film>);
#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)
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 ();
_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_")) {
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;
_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)
{
private:
void job_added (boost::weak_ptr<Job>);
void periodic ();
+ void sized (wxSizeEvent &);
wxPanel* _panel;
wxFlexGridSizer* _table;
*/
-#include <sstream>
#include "lib/film.h"
#include "lib/exceptions.h"
#include "job_wrapper.h"
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);
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
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"
"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 "%"
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)"
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..."
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"
"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)"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
msgid "CC address"
msgstr "CC: Adresse"
msgid "Calculate..."
msgstr "Berechne..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
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"
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."
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"
msgid "Cinema"
msgstr "Kino"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
msgstr "Farbumwandlungen"
msgid "Colour conversion"
msgstr "Farbumwandlung"
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
msgid "Config|Timing"
msgstr "Timing"
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"
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"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "DCP Name"
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"
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..."
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"
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..."
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"
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..."
msgid "From"
msgstr "Von"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
msgid "From address"
msgstr "Absenderadresse"
msgid "Full"
msgstr "Voll"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Gesamtlänge"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr "Allgemein"
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Tipps"
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"
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"
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"
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"
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"
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"
msgid "Play"
msgstr "Abspielen"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
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"
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"
msgid "Resolution"
msgstr "Auflösung"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Weiter"
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
#: 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"
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"
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"
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)"
msgid "Subtitles"
msgstr "Untertitel"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
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"
msgid "Test version "
msgstr "Test Version"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Getestet von"
"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!"
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"
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"
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"
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"
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"
msgid "Until"
msgstr "Bis"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
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"
msgid "Use preset"
msgstr "Preset benutzen"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Benutzer Name"
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"
msgid "With Subtitles"
msgstr "Mit Untertitelung"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Speichern nach"
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 "
"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) "
"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."
"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."
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"
#: 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"
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"
"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 "%"
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)"
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..."
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"
"%.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)"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "Dirección IP"
msgid "Calculate..."
msgstr "Calcular..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
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"
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"
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"
msgid "Cinema"
msgstr "Cine"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
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"
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."
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"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nombre DCP"
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"
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..."
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"
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"
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..."
msgid "Encrypted"
msgstr "Encriptado"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
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..."
msgid "From"
msgstr "De"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
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"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Pistas"
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"
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"
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"
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"
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"
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"
msgid "Play"
msgstr "Reproducir"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
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"
msgid "Repeat..."
msgstr "Repetir..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr ""
msgid "Resolution"
msgstr "Resolución"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Continuar"
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"
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"
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"
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"
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"
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)"
msgid "Subtitles"
msgstr "SubtÃtulos"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Soportado por"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
msgstr "Ruta"
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"
"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!"
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 ""
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"
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"
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"
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"
msgid "Until"
msgstr "Hasta"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
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"
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"
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 ""
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"
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 "
"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) "
"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."
"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."
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"
msgid "video"
msgstr "vÃdeo"
+#~ msgid "Default creator"
+#~ msgstr "Creador por defecto"
+
#~ msgid "Audio Gain"
#~ msgstr "Ganancia del audio"
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 "%"
"(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)"
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..."
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"
"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..."
#: 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"
msgid "Calculate..."
msgstr "Calcul..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
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é"
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."
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"
msgid "Cinema"
msgstr "Cinéma"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
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"
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"
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"
#: 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"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nom du DCP"
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..."
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"
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"
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..."
msgid "Encrypted"
msgstr "Crypté"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
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..."
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"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
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"
#: 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"
#: 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"
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"
#: 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"
#: 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"
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"
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"
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"
msgid "Play"
msgstr "Lecture"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
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"
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"
#: 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"
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"
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"
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"
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"
#: src/wx/timeline_dialog.cc:38
msgid "Snap"
-msgstr "Echnager"
+msgstr "Magnetisme"
#: src/wx/update_dialog.cc:43
msgid "Stable 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 "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)"
msgid "Subtitles"
msgstr "Sous-titres"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
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)"
#: 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"
"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!"
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"
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"
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 "
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"
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"
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"
msgid "With Subtitles"
msgstr "Avec sous-titres"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Ecrire à "
#: 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 "
"%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) "
"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."
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"
msgid "video"
msgstr "vidéo"
+#~ msgid "Default creator"
+#~ msgstr "Créateur par défaut"
+
#~ msgid "Audio Gain"
#~ msgstr "Gain audio"
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"
"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 "%"
"(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)"
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"
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 ""
"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)"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "Indirizzo IP"
msgid "Calculate..."
msgstr "Calcola..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
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"
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"
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"
msgid "Cinema"
msgstr "Aggiungi Cinema"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
#, fuzzy
msgid "Colour Conversions"
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 ""
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."
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"
msgid "DCP"
msgstr ""
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nome del DCP"
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"
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"
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 ""
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 ""
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..."
msgid "Encrypted"
msgstr "Criptato"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
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..."
msgid "From"
msgstr "Da"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
msgstr "Indirizzo IP"
msgid "Full"
msgstr ""
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr ""
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Suggerimenti"
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"
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"
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"
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 ""
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"
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"
msgid "Play"
msgstr "Riproduci"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
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"
msgid "Repeat..."
msgstr ""
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr ""
msgid "Resolution"
msgstr "Risoluzione"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr ""
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"
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"
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"
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"
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"
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)"
msgid "Subtitles"
msgstr "Sottotitoli"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
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"
msgid "Test version "
msgstr "Versione di test"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
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!"
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 ""
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"
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 ""
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"
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"
msgid "Until"
msgstr "Fino a"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
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"
msgid "Use preset"
msgstr "Usa predefinito"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Nome utente"
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 ""
msgid "With Subtitles"
msgstr "Con sottotitoli"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
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 "
"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) "
"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."
"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."
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"
msgid "video"
msgstr "Video"
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Contenitore predefinito"
+
#~ msgid "Audio Gain"
#~ msgstr "Guadagno dell'audio"
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 "%"
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 / "
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"
#: 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"
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..."
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"
"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)"
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"
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"
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"
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"
msgid "Cinema"
msgstr "Bioscoop"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
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"
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"
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"
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"
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..."
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"
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"
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..."
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..."
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"
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"
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"
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"
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"
#: 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"
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"
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"
msgid "Play"
msgstr "Afspelen"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
#: 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"
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"
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"
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"
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"
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)"
msgid "Subtitles"
msgstr "Ondertitels"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
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)"
msgid "Test version "
msgstr "Test Versie"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Getest door"
"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!"
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"
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"
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"
msgid "Until"
msgstr "Totdat"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
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"
msgid "Use preset"
msgstr "Gebruik preset"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Gebruikersnaam"
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"
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 "
"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) "
"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."
"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."
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"
msgid "video"
msgstr "video"
+#~ msgid "Default creator"
+#~ msgstr "Standaard maker"
+
#~ msgid "Audio Gain"
#~ msgstr "Audio Gain"
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"
"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 "%"
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)"
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..."
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 ""
"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)"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "IP-adress"
msgid "Calculate..."
msgstr "Beräkna..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
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"
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"
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"
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"
msgstr "Färgkonvertering"
# Svengelska
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
#, fuzzy
msgid "Config|Timing"
msgstr "Tajming"
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."
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"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "DCP-namn"
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"
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..."
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"
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 ""
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..."
msgid "Encrypted"
msgstr "Krypterad"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
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..."
msgid "From"
msgstr "Avsändare"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
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"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "RÃ¥d"
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"
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
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"
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"
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 ""
msgid "Other"
msgstr ""
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Utgående mejlserver"
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"
msgid "Play"
msgstr "Spela"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
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"
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"
msgid "Repeat..."
msgstr "Upprepa..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
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"
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"
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"
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"
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"
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"
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)"
msgid "Subtitles"
msgstr "Undertexter"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
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"
msgid "Test version "
msgstr "Testversion"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
#, fuzzy
msgid "Tested by"
msgstr "Översatt av"
"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!"
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 ""
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"
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"
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"
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"
msgid "Until"
msgstr "Tills"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
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"
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"
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 ""
msgid "With Subtitles"
msgstr "Med Undertexter"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Skriv till"
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 "
"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) "
"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."
"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."
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"
msgid "video"
msgstr "video"
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Förvald innehållstyp"
+
#~ msgid "Audio Gain"
#~ msgstr "Audio Förstärkning"
#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;
_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 ()));
string
PropertiesDialog::frames_already_encoded () const
{
- stringstream u;
+ SafeStringStream u;
try {
u << _film->encoded_frames ();
} catch (boost::thread_interrupted &) {
}
{
- add_label_to_sizer (grid, this, _("Scale"), true);
+ add_label_to_sizer (grid, this, _("X 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));
}
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);
}
}
_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);
}
}
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);
}
}
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);
}
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 ();
wxCheckBox* _with_subtitles;
wxSpinCtrl* _x_offset;
wxSpinCtrl* _y_offset;
- wxSpinCtrl* _scale;
+ wxSpinCtrl* _x_scale;
+ wxSpinCtrl* _y_scale;
wxChoice* _stream;
};
return t;
}
+void
+Timecode::clear ()
+{
+ checked_set (_hours, "");
+ checked_set (_minutes, "");
+ checked_set (_seconds, "");
+ checked_set (_frames, "");
+ _fixed->SetLabel ("");
+}
+
void
Timecode::changed ()
{
void set (Time, int);
Time get (int) const;
+ void clear ();
void set_editable (bool);
using std::cout;
using std::string;
+using std::set;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
using libdcp::raw_convert;
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);
}
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 ()));
}
}
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));
}
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 ()));
}
}
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 ()));
}
}
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());
}
}
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 ())));
}
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);
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) {
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);
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()
/*
- 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
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);
}
}
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"));
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.
*/
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
*/
-#include <sstream>
#include <boost/test/unit_test.hpp>
#include <boost/filesystem.hpp>
#include <boost/date_time.hpp>
#include "test.h"
using std::string;
-using std::stringstream;
using std::list;
using boost::shared_ptr;
string name () const {
return "";
}
-
- string json_name () const {
- return "";
- }
};
BOOST_AUTO_TEST_CASE (job_manager_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");
+}
import sys
APPNAME = 'dcpomatic'
-VERSION = '1.72.0devel'
+VERSION = '1.74.3devel'
def options(opt):
opt.load('compiler_cxx')
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')
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)
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']
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):
# 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:
# 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'])
# 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')
#
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)
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)
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
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)
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: