Merge master.
authorCarl Hetherington <cth@carlh.net>
Thu, 9 Jan 2014 22:18:42 +0000 (22:18 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 9 Jan 2014 22:18:42 +0000 (22:18 +0000)
64 files changed:
ChangeLog
cscript
debian/changelog
src/lib/audio_buffers.cc
src/lib/audio_buffers.h
src/lib/audio_mapping.cc
src/lib/audio_mapping.h
src/lib/config.cc
src/lib/config.h
src/lib/content.cc
src/lib/ffmpeg_content.cc
src/lib/ffmpeg_decoder.cc
src/lib/film.cc
src/lib/film.h
src/lib/image_content.cc
src/lib/image_content.h
src/lib/image_examiner.cc
src/lib/player.cc
src/lib/po/de_DE.po
src/lib/po/es_ES.po
src/lib/po/fr_FR.po
src/lib/po/it_IT.po
src/lib/po/sv_SE.po
src/lib/sndfile_content.cc
src/lib/update.cc [new file with mode: 0644]
src/lib/update.h [new file with mode: 0644]
src/lib/video_content.h
src/lib/writer.cc
src/lib/writer.h
src/lib/wscript
src/tools/dcpomatic.cc
src/tools/po/de_DE.po
src/tools/po/es_ES.po
src/tools/po/fr_FR.po
src/tools/po/it_IT.po
src/tools/po/sv_SE.po
src/tools/update_dialog.cc [new file with mode: 0644]
src/tools/update_dialog.h [new file with mode: 0644]
src/wx/about_dialog.cc
src/wx/audio_gain_dialog.cc [new file with mode: 0644]
src/wx/audio_gain_dialog.h [new file with mode: 0644]
src/wx/audio_mapping_view.cc
src/wx/audio_mapping_view.h
src/wx/audio_panel.cc
src/wx/cinema_dialog.cc
src/wx/config_dialog.cc
src/wx/config_dialog.h
src/wx/po/de_DE.po
src/wx/po/es_ES.po
src/wx/po/fr_FR.po
src/wx/po/it_IT.po
src/wx/po/sv_SE.po
src/wx/properties_dialog.cc
src/wx/timecode.cc
src/wx/timecode.h
src/wx/timing_panel.cc
src/wx/timing_panel.h
src/wx/update_dialog.cc [new file with mode: 0644]
src/wx/update_dialog.h [new file with mode: 0644]
src/wx/wscript
test/audio_mapping_test.cc [new file with mode: 0644]
test/stream_test.cc
test/wscript
wscript

index 8aa51761dea5ebc52fb22e7ddd06cd4ad8637a26..7b5a548b8a53310d88a19cd1a33bfafac187f5d4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,47 @@
+2014-01-09  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.61.1 released.
+
+2014-01-09  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.61.0 released.
+
+2014-01-09  Carl Hetherington  <cth@carlh.net>
+
+       * Hopefully fix somewhat inexplicable inability of Windows to open
+       new files on top of old ones in some circumstances (with audio
+       MXFs).
+
+       * Version 1.60 released.
+
+2014-01-09  Carl Hetherington  <cth@carlh.net>
+
+       * More fixes for slow-downs on fast computers.
+
+2014-01-08  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.59 released.
+
+2014-01-07  Carl Hetherington  <cth@carlh.net>
+
+       * Version 1.58 released.
+
+2014-01-07  Carl Hetherington  <cth@carlh.net>
+
+       * Fix Windows build of FFmpeg to link against zlib, which fixes parsing
+       of some .mov files.
+
+       * Very primitive check-for-updates feature added.
+
+       * Allow still-moving-image sources to have their frame rate specified.
+
 2014-01-06  Carl Hetherington  <cth@carlh.net>
 
+       * Basics of per-channel audio gain (#247).
+
+       * Give a warning on make DCP if it seems unlikely that the disk
+       will have enough space to store the finished DCP (#92).
+
        * Make sure forced languages override the environment for gettext()
        as well as wxWidgets' i18n code (#108).
 
diff --git a/cscript b/cscript
index 36cddc79e0b488c6dbe05f82de45d2a48c52424e..5f36d9622e454c77615c11ff3ba98788de41625c 100644 (file)
--- a/cscript
+++ b/cscript
@@ -114,10 +114,10 @@ def make_control(version, bits, filename):
     print >>f,'  digital projectors.'
 
 def dependencies(target):
-    return (('ffmpeg-cdist', 'a629ea68a20d990b4e61c16067e91563d8d08f50'),
-            ('libdcp', 'v0.92'))
+    return (('ffmpeg-cdist', '5ac3a6af077c10f07c31954c372a8f29e4e18e2a'),
+            ('libdcp', '8803a19c6901ab3c3ff85c964343f08458e0824e'))
 
-def build(target):
+def build(target, options):
     cmd = './waf configure --prefix=%s' % target.work_dir_cscript()
     if target.platform == 'windows':
         cmd += ' --target-windows'
index fe6a4bdfa8d50f2c4c500b8cdf946f058d034d1f..1dd6076b784c0a3def398835cc99dbb46565feb0 100644 (file)
@@ -1,4 +1,4 @@
-dcpomatic (1.57-1) UNRELEASED; urgency=low
+dcpomatic (1.61.1-1) UNRELEASED; urgency=low
 
   * New upstream release.
   * New upstream release.
@@ -61,8 +61,13 @@ dcpomatic (1.57-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.
 
- -- Carl Hetherington <carl@d1stkfactory>  Sun, 05 Jan 2014 22:41:00 +0000
+ -- Carl Hetherington <carl@d1stkfactory>  Thu, 09 Jan 2014 21:22:14 +0000
 
 dcpomatic (0.87-1) UNRELEASED; urgency=low
 
index e80142b8e518ad2efe66f5f1c1ee4b90f6dcafa6..a1c9b81ac099259bbe86e2f9f8dcea1340bbb9ae 100644 (file)
@@ -210,9 +210,11 @@ AudioBuffers::move (int from, int to, int frames)
        }
 }
 
-/** Add data from from `from', `from_channel' to our channel `to_channel' */
+/** Add data from from `from', `from_channel' to our channel `to_channel'.
+ *  @param gain Linear gain to apply to the data before it is added.
+ */
 void
-AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, int to_channel)
+AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, int to_channel, float gain)
 {
        int const N = frames ();
        assert (from->frames() == N);
@@ -222,7 +224,7 @@ AudioBuffers::accumulate_channel (AudioBuffers const * from, int from_channel, i
        float* d = _data[to_channel];
 
        for (int i = 0; i < N; ++i) {
-               *d++ += *s++;
+               *d++ += (*s++) * gain;
        }
 }
 
index 75bc686f83086df201ecd200510c04cbeb6b59e1..c9030dbfa9e84af247dd760f276c3ee33eaa5969 100644 (file)
@@ -61,7 +61,7 @@ public:
 
        void copy_from (AudioBuffers const * from, int frames_to_copy, int read_offset, int write_offset);
        void move (int from, int to, int frames);
-       void accumulate_channel (AudioBuffers const *, int, int);
+       void accumulate_channel (AudioBuffers const *, int, int, float gain = 1);
        void accumulate_frames (AudioBuffers const *, int read_offset, int write_offset, int frames);
 
 private:
index 3620001251ec688857c172c80c2883f1b8add42a..ae7702998498902717b43df546c069a3e07475e3 100644 (file)
@@ -21,6 +21,7 @@
 #include <libxml++/libxml++.h>
 #include <libcxml/cxml.h>
 #include "audio_mapping.h"
+#include "util.h"
 
 using std::list;
 using std::cout;
@@ -41,77 +42,86 @@ AudioMapping::AudioMapping ()
  *  @param c Number of channels.
  */
 AudioMapping::AudioMapping (int c)
-       : _content_channels (c)
 {
+       setup (c);
+}
 
+void
+AudioMapping::setup (int c)
+{
+       _content_channels = c;
+       
+       _gain.resize (_content_channels);
+       for (int i = 0; i < _content_channels; ++i) {
+               _gain[i].resize (MAX_AUDIO_CHANNELS);
+       }
 }
 
 void
 AudioMapping::make_default ()
 {
+       for (int i = 0; i < _content_channels; ++i) {
+               for (int j = 0; j < MAX_AUDIO_CHANNELS; ++j) {
+                       _gain[i][j] = 0;
+               }
+       }
+
        if (_content_channels == 1) {
                /* Mono -> Centre */
-               add (0, libdcp::CENTRE);
+               set (0, libdcp::CENTRE, 1);
        } else {
                /* 1:1 mapping */
                for (int i = 0; i < _content_channels; ++i) {
-                       add (i, static_cast<libdcp::Channel> (i));
+                       set (i, static_cast<libdcp::Channel> (i), 1);
                }
        }
 }
 
-AudioMapping::AudioMapping (shared_ptr<const cxml::Node> node)
+AudioMapping::AudioMapping (shared_ptr<const cxml::Node> node, int state_version)
 {
-       _content_channels = node->number_child<int> ("ContentChannels");
-       
-       list<cxml::NodePtr> const c = node->node_children ("Map");
-       for (list<cxml::NodePtr>::const_iterator i = c.begin(); i != c.end(); ++i) {
-               add ((*i)->number_child<int> ("ContentIndex"), static_cast<libdcp::Channel> ((*i)->number_child<int> ("DCP")));
+       setup (node->number_child<int> ("ContentChannels"));
+
+       if (state_version <= 5) {
+               /* Old-style: on/off mapping */
+               list<cxml::NodePtr> const c = node->node_children ("Map");
+               for (list<cxml::NodePtr>::const_iterator i = c.begin(); i != c.end(); ++i) {
+                       set ((*i)->number_child<int> ("ContentIndex"), static_cast<libdcp::Channel> ((*i)->number_child<int> ("DCP")), 1);
+               }
+       } else {
+               list<cxml::NodePtr> const c = node->node_children ("Gain");
+               for (list<cxml::NodePtr>::const_iterator i = c.begin(); i != c.end(); ++i) {
+                       set (
+                               (*i)->number_attribute<int> ("Content"),
+                               static_cast<libdcp::Channel> ((*i)->number_attribute<int> ("DCP")),
+                               lexical_cast<float> ((*i)->content ())
+                               );
+               }
        }
 }
 
 void
-AudioMapping::add (int c, libdcp::Channel d)
+AudioMapping::set (int c, libdcp::Channel d, float g)
 {
-       _content_to_dcp.push_back (make_pair (c, d));
+       _gain[c][d] = g;
 }
 
-list<int>
-AudioMapping::dcp_to_content (libdcp::Channel d) const
+float
+AudioMapping::get (int c, libdcp::Channel d) const
 {
-       list<int> c;
-       for (list<pair<int, libdcp::Channel> >::const_iterator i = _content_to_dcp.begin(); i != _content_to_dcp.end(); ++i) {
-               if (i->second == d) {
-                       c.push_back (i->first);
-               }
-       }
-
-       return c;
-}
-
-list<libdcp::Channel>
-AudioMapping::content_to_dcp (int c) const
-{
-       assert (c < _content_channels);
-       
-       list<libdcp::Channel> d;
-       for (list<pair<int, libdcp::Channel> >::const_iterator i = _content_to_dcp.begin(); i != _content_to_dcp.end(); ++i) {
-               if (i->first == c) {
-                       d.push_back (i->second);
-               }
-       }
-
-       return d;
+       return _gain[c][d];
 }
 
 void
 AudioMapping::as_xml (xmlpp::Node* node) const
 {
        node->add_child ("ContentChannels")->add_child_text (lexical_cast<string> (_content_channels));
-       
-       for (list<pair<int, libdcp::Channel> >::const_iterator i = _content_to_dcp.begin(); i != _content_to_dcp.end(); ++i) {
-               xmlpp::Node* t = node->add_child ("Map");
-               t->add_child ("ContentIndex")->add_child_text (lexical_cast<string> (i->first));
-               t->add_child ("DCP")->add_child_text (lexical_cast<string> (i->second));
+
+       for (int c = 0; c < _content_channels; ++c) {
+               for (int d = 0; d < MAX_AUDIO_CHANNELS; ++d) {
+                       xmlpp::Element* t = node->add_child ("Gain");
+                       t->set_attribute ("Content", lexical_cast<string> (c));
+                       t->set_attribute ("DCP", lexical_cast<string> (d));
+                       t->add_child_text (lexical_cast<string> (get (c, static_cast<libdcp::Channel> (d))));
+               }
        }
 }
index 9a507b550e958a8d0928adf2f1a9733eb79db708..26087bfffa8f9e04924170444eea908640b6bced 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef DCPOMATIC_AUDIO_MAPPING_H
 #define DCPOMATIC_AUDIO_MAPPING_H
 
-#include <list>
+#include <vector>
 #include <libdcp/types.h>
 #include <boost/shared_ptr.hpp>
 
@@ -34,37 +34,34 @@ namespace cxml {
 
 /** A many-to-many mapping from some content channels to DCP channels.
  *  The number of content channels is set on construction and fixed,
- *  and then each of those content channels can be mapped to zero or
- *  more DCP channels.
+ *  and then each of those content channels are mapped to each DCP channel
+ *  by a linear gain.
  */
 class AudioMapping
 {
 public:
        AudioMapping ();
        AudioMapping (int);
-       AudioMapping (boost::shared_ptr<const cxml::Node>);
+       AudioMapping (boost::shared_ptr<const cxml::Node>, int);
 
        /* Default copy constructor is fine */
        
        void as_xml (xmlpp::Node *) const;
 
-       void add (int, libdcp::Channel);
        void make_default ();
 
-       std::list<int> dcp_to_content (libdcp::Channel) const;
-       std::list<std::pair<int, libdcp::Channel> > content_to_dcp () const {
-               return _content_to_dcp;
-       }
+       void set (int, libdcp::Channel, float);
+       float get (int, libdcp::Channel) const;
 
        int content_channels () const {
                return _content_channels;
        }
        
-       std::list<libdcp::Channel> content_to_dcp (int) const;
-
 private:
+       void setup (int);
+       
        int _content_channels;
-       std::list<std::pair<int, libdcp::Channel> > _content_to_dcp;
+       std::vector<std::vector<float> > _gain;
 };
 
 #endif
index 454b03e3a9f849f0044a21892dde7b543017d365..5a9e1619a091efacf0ce2be7a5c89e1fd7b440a6 100644 (file)
@@ -68,6 +68,8 @@ Config::Config ()
        , _kdm_email (
                _("Dear Projectionist\n\nPlease find attached KDMs for $CPL_NAME.\n\nThe KDMs are valid from $START_TIME until $END_TIME.\n\nBest regards,\nDCP-o-matic")
                )
+       , _check_for_updates (false)
+       , _check_for_test_updates (false)
 {
        _allowed_dcp_frame_rates.push_back (24);
        _allowed_dcp_frame_rates.push_back (25);
@@ -180,6 +182,9 @@ Config::read ()
        _mail_password = f.optional_string_child("MailPassword").get_value_or ("");
        _kdm_from = f.string_child ("KDMFrom");
        _kdm_email = f.string_child ("KDMEmail");
+
+       _check_for_updates = f.optional_bool_child("CheckForUpdates").get_value_or (false);
+       _check_for_test_updates = f.optional_bool_child("CheckForTestUpdates").get_value_or (false);
 }
 
 void
@@ -354,6 +359,9 @@ Config::write () const
        root->add_child("KDMFrom")->add_child_text (_kdm_from);
        root->add_child("KDMEmail")->add_child_text (_kdm_email);
 
+       root->add_child("CheckForUpdates")->add_child_text (_check_for_updates ? "1" : "0");
+       root->add_child("CheckForTestUpdates")->add_child_text (_check_for_test_updates ? "1" : "0");
+
        doc.write_to_file_formatted (file(false).string ());
 }
 
index 67d29388461f4a688eb4ec982f2954efa2899da6..791e41e8f6f27a14b5626e492fc714c824da027f 100644 (file)
@@ -171,6 +171,14 @@ public:
                return _kdm_email;
        }
 
+       bool check_for_updates () const {
+               return _check_for_updates;
+       }
+
+       bool check_for_test_updates () const {
+               return _check_for_test_updates;
+       }
+       
        /** @param n New number of local encoding threads */
        void set_num_local_encoding_threads (int n) {
                _num_local_encoding_threads = n;
@@ -284,6 +292,14 @@ public:
        void set_kdm_email (std::string e) {
                _kdm_email = e;
        }
+
+       void set_check_for_updates (bool c) {
+               _check_for_updates = c;
+       }
+
+       void set_check_for_test_updates (bool c) {
+               _check_for_test_updates = c;
+       }
        
        void write () const;
 
@@ -341,6 +357,9 @@ private:
        std::string _mail_password;
        std::string _kdm_from;
        std::string _kdm_email;
+       /** true to check for updates on startup */
+       bool _check_for_updates;
+       bool _check_for_test_updates;
 
        /** Singleton instance, or 0 */
        static Config* _instance;
index ab666db3ce111409ad691f6be1b0404a3cf3e78e..ea1c19acdc1cc620cffeee582e85a35bd4d10acc 100644 (file)
@@ -150,6 +150,10 @@ Content::set_position (DCPTime p)
 {
        {
                boost::mutex::scoped_lock lm (_mutex);
+               if (p == _position) {
+                       return;
+               }
+               
                _position = p;
        }
 
index eb873fe653eefabfa9f869e62a79804bf4f6357e..394c16aa53568c4b55fe4e13be3bf0818bb28504 100644 (file)
@@ -373,7 +373,7 @@ FFmpegStream::as_xml (xmlpp::Node* root) const
 
 FFmpegAudioStream::FFmpegAudioStream (shared_ptr<const cxml::Node> node, int version)
        : FFmpegStream (node, version)
-       , mapping (node->node_child ("Mapping"))
+       , mapping (node->node_child ("Mapping"), version)
 {
        frame_rate = node->number_child<int> ("FrameRate");
        channels = node->number_child<int64_t> ("Channels");
index a2b3e5d3bfdead6a8fe07a44489c87440bc228ab..8742c48ecd6360021bcb309636ba376a300ccc28 100644 (file)
@@ -561,7 +561,7 @@ FFmpegDecoder::decode_subtitle_packet ()
        /* Subtitle PTS in seconds (within the source, not taking into account any of the
           source that we may have chopped off for the DCP)
        */
-       double const packet_time = (static_cast<double> (sub.pts ) / AV_TIME_BASE) + _video_pts_offset;
+       double const packet_time = (static_cast<double> (sub.pts ) / AV_TIME_BASE) + _pts_offset;
        
        /* hence start time for this sub */
        ContentTime const from = (packet_time + (double (sub.start_display_time) / 1e3)) * TIME_HZ;
index 932048d8b2997418bcb3b8902777c4631d8fdb60..57d23ec4eed51e3596e89f0abad5376c53f0b75f 100644 (file)
@@ -81,7 +81,10 @@ using boost::optional;
 using libdcp::Size;
 using libdcp::Signer;
 
-int const Film::state_version = 5;
+/* 5 -> 6
+ * AudioMapping XML changed.
+ */
+int const Film::state_version = 6;
 
 /** Construct a Film object in a given directory.
  *
@@ -980,3 +983,28 @@ Film::make_kdms (
 
        return kdms;
 }
+
+/** @return The approximate disk space required to encode a DCP of this film with the
+ *  current settings, in bytes.
+ */
+uint64_t
+Film::required_disk_space () const
+{
+       return uint64_t (j2k_bandwidth() / 8) * length() / TIME_HZ;
+}
+
+/** This method checks the disk that the Film is on and tries to decide whether or not
+ *  there will be enough space to make a DCP for it.  If so, true is returned; if not,
+ *  false is returned and required and availabe are filled in with the amount of disk space
+ *  required and available respectively (in Gb).
+ *
+ *  Note: the decision made by this method isn't, of course, 100% reliable.
+ */
+bool
+Film::should_be_enough_disk_space (double& required, double& available) const
+{
+       boost::filesystem::space_info s = boost::filesystem::space (internal_video_mxf_dir ());
+       required = double (required_disk_space ()) / 1073741824.0f;
+       available = double (s.available) / 1073741824.0f;
+       return (available - required) > 1;
+}
index 24ddad0bdc545ee8d55cae15ec9d390bbb8f03b7..5d83ec6edaa484c19192f1874448810711588741 100644 (file)
@@ -108,6 +108,9 @@ public:
        DCPTime video_frames_to_time (VideoFrame) const;
        DCPTime audio_frames_to_time (AudioFrame) const;
 
+       uint64_t required_disk_space () const;
+       bool should_be_enough_disk_space (double &, double &) const;
+       
        /* Proxies for some Playlist methods */
 
        ContentList content () const;
index 87276ce4dc92d6c5538139d8fb88988f1c22f8ea..a7f951beaca4e98f5213d397408c19f9a79e24ec 100644 (file)
@@ -144,3 +144,19 @@ ImageContent::still () const
 {
        return number_of_paths() == 1;
 }
+
+void
+ImageContent::set_video_frame_rate (float r)
+{
+       {
+               boost::mutex::scoped_lock lm (_mutex);
+               if (_video_frame_rate == r) {
+                       return;
+               }
+               
+               _video_frame_rate = r;
+       }
+       
+       signal_changed (VideoContentProperty::VIDEO_FRAME_RATE);
+}
+
index ef2bc0447c9262e13357154f5f3c313996bccfb3..f929e2b6f15b72105a6a97880e6bef647eb98175 100644 (file)
@@ -47,6 +47,7 @@ public:
        
        void set_video_length (VideoFrame);
        bool still () const;
+       void set_video_frame_rate (float);
 };
 
 #endif
index 17064fd45ce10b0827fdb5c6ffddce51c363ed4c..12fe2b8a61d757f4c561bb4bcd867782d13edfdf 100644 (file)
@@ -36,7 +36,7 @@ using boost::shared_ptr;
 using boost::lexical_cast;
 using boost::bad_lexical_cast;
 
-ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const ImageContent> content, shared_ptr<Job> job)
+ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const ImageContent> content, shared_ptr<Job>)
        : _film (film)
        , _image_content (content)
        , _video_length (0)
index 3db2fe6c9eb19074be6f265f7fd4ffe6918ca61d..260476242fcb91acacebb87a1cb50b61d90367bc 100644 (file)
@@ -334,10 +334,17 @@ Player::emit_audio (weak_ptr<Piece> weak_piece, shared_ptr<DecodedAudio> audio)
        /* Remap channels */
        shared_ptr<AudioBuffers> dcp_mapped (new AudioBuffers (_film->audio_channels(), audio->data->frames()));
        dcp_mapped->make_silent ();
-       list<pair<int, libdcp::Channel> > map = content->audio_mapping().content_to_dcp ();
-       for (list<pair<int, libdcp::Channel> >::iterator i = map.begin(); i != map.end(); ++i) {
-               if (i->first < audio->data->channels() && i->second < dcp_mapped->channels()) {
-                       dcp_mapped->accumulate_channel (audio->data.get(), i->first, i->second);
+       AudioMapping map = content->audio_mapping ();
+       for (int i = 0; i < map.content_channels(); ++i) {
+               for (int j = 0; j < _film->audio_channels(); ++j) {
+                       if (map.get (i, static_cast<libdcp::Channel> (j)) > 0) {
+                               dcp_mapped->accumulate_channel (
+                                       audio->data.get(),
+                                       i,
+                                       static_cast<libdcp::Channel> (j),
+                                       map.get (i, static_cast<libdcp::Channel> (j))
+                                       );
+                       }
                }
        }
 
@@ -528,7 +535,10 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent)
                update_subtitle ();
                Changed (frequent);
 
-       } else if (property == VideoContentProperty::VIDEO_CROP || property == VideoContentProperty::VIDEO_RATIO) {
+       } else if (
+               property == VideoContentProperty::VIDEO_CROP || property == VideoContentProperty::VIDEO_RATIO ||
+               property == VideoContentProperty::VIDEO_FRAME_RATE
+               ) {
                
                Changed (frequent);
 
@@ -599,7 +609,7 @@ Player::film_changed (Film::Property p)
           last time we were run.
        */
 
-       if (p == Film::SCALER || p == Film::WITH_SUBTITLES || p == Film::CONTAINER) {
+       if (p == Film::SCALER || p == Film::WITH_SUBTITLES || p == Film::CONTAINER || p == Film::VIDEO_FRAME_RATE) {
                Changed (false);
        }
 }
index 2eacedf577fcf27de3e1805f304dbef25998f18a..3d8a26f668acb9d47c430b056641f4647155561f 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2014-01-05 23:06+0100\n"
 "Last-Translator: \n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -102,7 +102,7 @@ msgstr "Abgebrochen"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Cannot handle pixel format %1 during %2"
 
-#: src/lib/util.cc:766
+#: src/lib/util.cc:768
 msgid "Centre"
 msgstr "Center"
 
@@ -110,7 +110,7 @@ msgstr "Center"
 msgid "Checking existing image data"
 msgstr "Ãœberprüfe bestehende Bilddateien"
 
-#: src/lib/writer.cc:401
+#: src/lib/writer.cc:420
 msgid "Computing audio digest"
 msgstr "Ton berechnen"
 
@@ -118,11 +118,11 @@ msgstr "Ton berechnen"
 msgid "Computing digest"
 msgstr "Teil berechnen"
 
-#: src/lib/writer.cc:398
+#: src/lib/writer.cc:417
 msgid "Computing image digest"
 msgstr "Bild berechnen"
 
-#: src/lib/util.cc:796
+#: src/lib/util.cc:798
 msgid "Content and DCP have the same rate.\n"
 msgstr "Inhalt und DCP haben die selbe Rate.\n"
 
@@ -194,7 +194,7 @@ msgstr "%1 konnte nicht geöffnet werden."
 msgid "Could not open %1 to send"
 msgstr "%1 konnte nicht zum senden geöffnet werden"
 
-#: src/lib/film.cc:949
+#: src/lib/film.cc:952
 msgid "Could not read DCP to make KDM for"
 msgstr "DCP konnte nicht zur Schlüsselerstellung geöffnet werden"
 
@@ -210,11 +210,11 @@ msgstr "Remote Datei (%1) kann nicht gespeichert werden"
 msgid "Cubic interpolating deinterlacer"
 msgstr "Kubisch interpolierender Deinterlacer"
 
-#: src/lib/util.cc:808
+#: src/lib/util.cc:810
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "DCP läuft mit %1% der Orginal Geschwindigkeit.\n"
 
-#: src/lib/util.cc:799
+#: src/lib/util.cc:801
 msgid "DCP will use every other frame of the content.\n"
 msgstr "DCP benutzt jedes ungerade Bild des Inhalts.\n"
 
@@ -265,11 +265,11 @@ msgstr "De-Ringer"
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP650 und CP750"
 
-#: src/lib/util.cc:801
+#: src/lib/util.cc:803
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Jedes Bild des Inhalts wird im DCP verdoppelt.\n"
 
-#: src/lib/util.cc:803
+#: src/lib/util.cc:805
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Jedes Bild des Inhalts wird %1 mal im DCP wiederholt.\n"
 
@@ -277,7 +277,7 @@ msgstr "Jedes Bild des Inhalts wird %1 mal im DCP wiederholt.\n"
 msgid "Email KDMs for %1"
 msgstr "Email KDMs für %1"
 
-#: src/lib/writer.cc:109
+#: src/lib/writer.cc:112
 msgid "Encoding image data"
 msgstr "Bilddaten bearbeiten"
 
@@ -365,15 +365,15 @@ msgstr "Kernel De-Interlacer"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:764
+#: src/lib/util.cc:766
 msgid "Left"
 msgstr "Links"
 
-#: src/lib/util.cc:768
+#: src/lib/util.cc:770
 msgid "Left surround"
 msgstr "Links Surround"
 
-#: src/lib/util.cc:767
+#: src/lib/util.cc:769
 msgid "Lfe (sub)"
 msgstr "LFE (Subwoofer)"
 
@@ -431,15 +431,15 @@ msgstr "Werbung"
 msgid "Rating"
 msgstr "Rating"
 
-#: src/lib/config.cc:81 src/lib/config.cc:165
+#: src/lib/config.cc:83 src/lib/config.cc:167
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:765
+#: src/lib/util.cc:767
 msgid "Right"
 msgstr "Rechts"
 
-#: src/lib/util.cc:769
+#: src/lib/util.cc:771
 msgid "Right surround"
 msgstr "Rechts Surround"
 
@@ -487,7 +487,7 @@ msgstr ""
 "Das Laufwer auf dem der Film gespeichert werden soll hat zu wenig Freien "
 "Speicher. Bitte Speicher freigeben und nochmals versuchen."
 
-#: src/lib/film.cc:372
+#: src/lib/film.cc:375
 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 "
@@ -545,7 +545,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Noch ein anderer De-Interlacer"
 
-#: src/lib/film.cc:276
+#: src/lib/film.cc:279
 msgid "You must add some content to the DCP before creating it"
 msgstr "Sie müssen einen Inhalt hinzufügen bevor Sie ein DCP erstellen können."
 
@@ -557,11 +557,11 @@ msgstr "[Bewegte Bilder]"
 msgid "[still]"
 msgstr "[Standbild]"
 
-#: src/lib/film.cc:237
+#: src/lib/film.cc:240
 msgid "cannot contain slashes"
 msgstr "Darf keine Schrägstriche enthalten"
 
-#: src/lib/util.cc:546
+#: src/lib/util.cc:548
 msgid "connect timed out"
 msgstr "Zeit zur Verbindung abgelaufen"
 
@@ -569,11 +569,11 @@ msgstr "Zeit zur Verbindung abgelaufen"
 msgid "connecting"
 msgstr "verbinde..."
 
-#: src/lib/film.cc:272
+#: src/lib/film.cc:275
 msgid "container"
 msgstr "Container"
 
-#: src/lib/film.cc:280
+#: src/lib/film.cc:283
 msgid "content type"
 msgstr "Inhalt Typ"
 
@@ -601,6 +601,10 @@ msgstr "Untertitel-Decoder nicht gefunden"
 msgid "could not find video decoder"
 msgstr "Bild-Decoder nicht gefunden"
 
+#: src/lib/writer.cc:387
+msgid "could not move audio MXF into the DCP (%1)"
+msgstr ""
+
 #: src/lib/sndfile_decoder.cc:45
 msgid "could not open audio file for reading"
 msgstr "Tondatei kann nicht zum lesen geöffnet werden."
@@ -641,26 +645,22 @@ msgstr "SSH Session kann nicht gestartet werden"
 msgid "could not write to file %1 (%2)"
 msgstr "Datei %1 kann nicht geschrieben werden (%2)"
 
-#: src/lib/util.cc:566
+#: src/lib/util.cc:568
 msgid "error during async_accept (%1)"
 msgstr "error during async_accept (%1)"
 
-#: src/lib/util.cc:542
+#: src/lib/util.cc:544
 msgid "error during async_connect (%1)"
 msgstr "error during async_connect (%1)"
 
-#: src/lib/util.cc:615
+#: src/lib/util.cc:617
 msgid "error during async_read (%1)"
 msgstr "error during async_read (%1)"
 
-#: src/lib/util.cc:587
+#: src/lib/util.cc:589
 msgid "error during async_write (%1)"
 msgstr "error during async_write (%1)"
 
-#: src/lib/image_examiner.cc:68
-msgid "first frame in moving image directory is number %1"
-msgstr "Erstes Bild im Bilderordner ist Nummer %1"
-
 #: src/lib/transcode_job.cc:94
 msgid "frames per second"
 msgstr "Bilder pro Sekunde"
@@ -681,7 +681,7 @@ msgstr "Minute"
 msgid "minutes"
 msgstr "Minuten"
 
-#: src/lib/util.cc:687
+#: src/lib/util.cc:689
 msgid "missing key %1 in key-value set"
 msgstr "Key %1 in Key-value set fehlt"
 
@@ -697,7 +697,7 @@ msgstr "wird verschoben"
 msgid "multi-part subtitles not yet supported"
 msgstr "Multi-Part Untertitel noch nicht unterstützt"
 
-#: src/lib/film.cc:237 src/lib/film.cc:284
+#: src/lib/film.cc:240 src/lib/film.cc:287
 msgid "name"
 msgstr "Name"
 
@@ -711,11 +711,11 @@ msgstr "Nur Bitmap Untertitel werden unterstützt"
 msgid "remaining"
 msgstr "verbleibend"
 
-#: src/lib/config.cc:79 src/lib/video_content.cc:169
+#: src/lib/config.cc:81 src/lib/video_content.cc:169
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:80
+#: src/lib/config.cc:82
 msgid "sRGB non-linearised"
 msgstr "sRGB nicht linearisiert"
 
@@ -727,10 +727,12 @@ msgstr "Sekunden"
 msgid "still"
 msgstr "Standbild"
 
-#: src/lib/image_examiner.cc:72
-msgid "there are %1 images in the directory but the last one is number %2"
-msgstr "Im Ordner sind %1 Bilder aber die letzte Nummer ist %2"
-
 #: src/lib/ffmpeg_examiner.cc:169
 msgid "unknown"
 msgstr "unbekannt"
+
+#~ msgid "first frame in moving image directory is number %1"
+#~ msgstr "Erstes Bild im Bilderordner ist Nummer %1"
+
+#~ msgid "there are %1 images in the directory but the last one is number %2"
+#~ msgstr "Im Ordner sind %1 Bilder aber die letzte Nummer ist %2"
index 42a5d9397f4069403222eef940bc3101fc05ba75..054fef2159a98110a43545bd9bd4e23172789458 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: LIBDCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-09 03:09-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -103,7 +103,7 @@ msgstr "Cancelado"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "No se puede usar el formato de pixel %1 para %2"
 
-#: src/lib/util.cc:766
+#: src/lib/util.cc:768
 msgid "Centre"
 msgstr "Centro"
 
@@ -111,7 +111,7 @@ msgstr "Centro"
 msgid "Checking existing image data"
 msgstr ""
 
-#: src/lib/writer.cc:401
+#: src/lib/writer.cc:420
 msgid "Computing audio digest"
 msgstr ""
 
@@ -119,11 +119,11 @@ msgstr ""
 msgid "Computing digest"
 msgstr ""
 
-#: src/lib/writer.cc:398
+#: src/lib/writer.cc:417
 msgid "Computing image digest"
 msgstr ""
 
-#: src/lib/util.cc:796
+#: src/lib/util.cc:798
 #, fuzzy
 msgid "Content and DCP have the same rate.\n"
 msgstr "La fuente y el DCP tienen la misma velocidad.\n"
@@ -153,7 +153,6 @@ msgid "Content to be joined must have the same ratio."
 msgstr ""
 
 #: src/lib/subtitle_content.cc:65
-#, fuzzy
 msgid "Content to be joined must have the same subtitle offset."
 msgstr ""
 
@@ -198,7 +197,7 @@ msgstr "no se pudo abrir el fichero para lectura"
 msgid "Could not open %1 to send"
 msgstr "No se pudo abrir %1 para enviar"
 
-#: src/lib/film.cc:949
+#: src/lib/film.cc:952
 msgid "Could not read DCP to make KDM for"
 msgstr "No se pudo leer el DCP para hacer el KDM"
 
@@ -214,12 +213,12 @@ msgstr "No se pudo escribir el fichero remoto (%1)"
 msgid "Cubic interpolating deinterlacer"
 msgstr "Desentrelazado por interpolación cúbica"
 
-#: src/lib/util.cc:808
+#: src/lib/util.cc:810
 #, fuzzy
 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/util.cc:799
+#: src/lib/util.cc:801
 #, fuzzy
 msgid "DCP will use every other frame of the content.\n"
 msgstr "El DCP usará fotogramas alternos de la fuente.\n"
@@ -264,12 +263,12 @@ msgstr "Deringing filter"
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP750"
 
-#: src/lib/util.cc:801
+#: src/lib/util.cc:803
 #, fuzzy
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Se doblará cada fotograma de la fuente en el DCP.\n"
 
-#: src/lib/util.cc:803
+#: src/lib/util.cc:805
 #, fuzzy
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Se doblará cada fotograma de la fuente en el DCP.\n"
@@ -278,7 +277,7 @@ msgstr "Se doblará cada fotograma de la fuente en el DCP.\n"
 msgid "Email KDMs for %1"
 msgstr ""
 
-#: src/lib/writer.cc:109
+#: src/lib/writer.cc:112
 msgid "Encoding image data"
 msgstr ""
 
@@ -366,15 +365,15 @@ msgstr "Kernel deinterlacer"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:764
+#: src/lib/util.cc:766
 msgid "Left"
 msgstr "Izquierda"
 
-#: src/lib/util.cc:768
+#: src/lib/util.cc:770
 msgid "Left surround"
 msgstr "Surround izquierda"
 
-#: src/lib/util.cc:767
+#: src/lib/util.cc:769
 msgid "Lfe (sub)"
 msgstr ""
 
@@ -432,16 +431,16 @@ msgstr "Anuncio de servicio público"
 msgid "Rating"
 msgstr "Clasificación"
 
-#: src/lib/config.cc:81 src/lib/config.cc:165
+#: src/lib/config.cc:83 src/lib/config.cc:167
 #, fuzzy
 msgid "Rec. 709"
 msgstr "Rec 709"
 
-#: src/lib/util.cc:765
+#: src/lib/util.cc:767
 msgid "Right"
 msgstr "Derecha"
 
-#: src/lib/util.cc:769
+#: src/lib/util.cc:771
 msgid "Right surround"
 msgstr "Surround derecha"
 
@@ -489,7 +488,7 @@ msgstr ""
 "En el dispositivo donde se encuentra la película queda poco espacio. Libere "
 "espacio en el disco y pruebe de nuevo."
 
-#: src/lib/film.cc:372
+#: src/lib/film.cc:375
 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 "
@@ -547,7 +546,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:276
+#: src/lib/film.cc:279
 msgid "You must add some content to the DCP before creating it"
 msgstr "Tienes que añadir contenido al DCP antes de crearlo."
 
@@ -560,11 +559,11 @@ msgstr ""
 msgid "[still]"
 msgstr "imagen fija"
 
-#: src/lib/film.cc:237
+#: src/lib/film.cc:240
 msgid "cannot contain slashes"
 msgstr "no puede contener barras"
 
-#: src/lib/util.cc:546
+#: src/lib/util.cc:548
 msgid "connect timed out"
 msgstr "tiempo de conexión agotado"
 
@@ -572,12 +571,12 @@ msgstr "tiempo de conexión agotado"
 msgid "connecting"
 msgstr "conectando"
 
-#: src/lib/film.cc:272
+#: src/lib/film.cc:275
 #, fuzzy
 msgid "container"
 msgstr "contenido"
 
-#: src/lib/film.cc:280
+#: src/lib/film.cc:283
 msgid "content type"
 msgstr "tipo de contenido"
 
@@ -606,6 +605,10 @@ msgstr "no se pudo encontrar decodificador de subtítutlos"
 msgid "could not find video decoder"
 msgstr "no se pudo encontrar decodificador de vídeo"
 
+#: src/lib/writer.cc:387
+msgid "could not move audio MXF into the DCP (%1)"
+msgstr ""
+
 #: src/lib/sndfile_decoder.cc:45
 #, fuzzy
 msgid "could not open audio file for reading"
@@ -652,27 +655,22 @@ msgstr "no se pudo abrir la sesión SSH"
 msgid "could not write to file %1 (%2)"
 msgstr "No se pudo escribir el fichero remoto (%1)"
 
-#: src/lib/util.cc:566
+#: src/lib/util.cc:568
 msgid "error during async_accept (%1)"
 msgstr ""
 
-#: src/lib/util.cc:542
+#: src/lib/util.cc:544
 msgid "error during async_connect (%1)"
 msgstr ""
 
-#: src/lib/util.cc:615
+#: src/lib/util.cc:617
 msgid "error during async_read (%1)"
 msgstr ""
 
-#: src/lib/util.cc:587
+#: src/lib/util.cc:589
 msgid "error during async_write (%1)"
 msgstr ""
 
-#: src/lib/image_examiner.cc:68
-msgid "first frame in moving image directory is number %1"
-msgstr ""
-"primera imagen en el directorio de imagen en movimiento es la número %1"
-
 #: src/lib/transcode_job.cc:94
 msgid "frames per second"
 msgstr "fotogramas por segundo"
@@ -693,7 +691,7 @@ msgstr "minuto"
 msgid "minutes"
 msgstr "minutos"
 
-#: src/lib/util.cc:687
+#: src/lib/util.cc:689
 msgid "missing key %1 in key-value set"
 msgstr "falta la clave %1 en el par clave-valor"
 
@@ -709,7 +707,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "todavía no se soportan subtítulos en múltiples partes"
 
-#: src/lib/film.cc:237 src/lib/film.cc:284
+#: src/lib/film.cc:240 src/lib/film.cc:287
 msgid "name"
 msgstr "nombre"
 
@@ -723,11 +721,11 @@ msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
 msgid "remaining"
 msgstr "pendiente"
 
-#: src/lib/config.cc:79 src/lib/video_content.cc:169
+#: src/lib/config.cc:81 src/lib/video_content.cc:169
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:80
+#: src/lib/config.cc:82
 msgid "sRGB non-linearised"
 msgstr "sRGB no-lineal"
 
@@ -740,15 +738,18 @@ msgstr "segundos"
 msgid "still"
 msgstr "imagen fija"
 
-#: src/lib/image_examiner.cc:72
-msgid "there are %1 images in the directory but the last one is number %2"
-msgstr "hay %1 imágenes en el directorio, la Ãºltima es la %2"
-
 #: src/lib/ffmpeg_examiner.cc:169
 #, fuzzy
 msgid "unknown"
 msgstr "Error desconocido"
 
+#~ msgid "first frame in moving image directory is number %1"
+#~ msgstr ""
+#~ "primera imagen en el directorio de imagen en movimiento es la número %1"
+
+#~ msgid "there are %1 images in the directory but the last one is number %2"
+#~ msgstr "hay %1 imágenes en el directorio, la Ãºltima es la %2"
+
 #, fuzzy
 #~ msgid "Examining content"
 #~ msgstr "Examinar contenido"
index 3e33e761a46abe6b18b05728be5d1065be195bf5..8789b873806f72269c4819bc4ba1b65885ff0967 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-25 19:37+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -102,7 +102,7 @@ msgstr "Annulé"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Format du pixel %1 non géré par %2"
 
-#: src/lib/util.cc:766
+#: src/lib/util.cc:768
 msgid "Centre"
 msgstr "Centre"
 
@@ -110,7 +110,7 @@ msgstr "Centre"
 msgid "Checking existing image data"
 msgstr ""
 
-#: src/lib/writer.cc:401
+#: src/lib/writer.cc:420
 msgid "Computing audio digest"
 msgstr ""
 
@@ -118,11 +118,11 @@ msgstr ""
 msgid "Computing digest"
 msgstr ""
 
-#: src/lib/writer.cc:398
+#: src/lib/writer.cc:417
 msgid "Computing image digest"
 msgstr ""
 
-#: src/lib/util.cc:796
+#: src/lib/util.cc:798
 #, fuzzy
 msgid "Content and DCP have the same rate.\n"
 msgstr "Le DCP et la source ont les mêmes cadences.\n"
@@ -195,7 +195,7 @@ msgstr "lecture du fichier %1 impossible"
 msgid "Could not open %1 to send"
 msgstr "Ouverture de %1 pour envoi impossible"
 
-#: src/lib/film.cc:949
+#: src/lib/film.cc:952
 msgid "Could not read DCP to make KDM for"
 msgstr "DCP illisible pour fabrication de KDM"
 
@@ -211,12 +211,12 @@ msgstr "Écriture vers fichier distant (%1) impossible"
 msgid "Cubic interpolating deinterlacer"
 msgstr "Désentrelacement cubique interpolé"
 
-#: src/lib/util.cc:808
+#: src/lib/util.cc:810
 #, fuzzy
 msgid "DCP will run at %1%% of the content speed.\n"
 msgstr "La cadence du DCP sera %1%% par rapport Ã  la source.\n"
 
-#: src/lib/util.cc:799
+#: src/lib/util.cc:801
 #, fuzzy
 msgid "DCP will use every other frame of the content.\n"
 msgstr "Le DCP utilisera une image sur deux de la source.\n"
@@ -259,12 +259,12 @@ msgstr "Filtre anti bourdonnement"
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP750"
 
-#: src/lib/util.cc:801
+#: src/lib/util.cc:803
 #, fuzzy
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Chaque image source sera dupliquée dans le DCP.\n"
 
-#: src/lib/util.cc:803
+#: src/lib/util.cc:805
 #, fuzzy
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Chaque image source sera dupliquée dans le DCP.\n"
@@ -273,7 +273,7 @@ msgstr "Chaque image source sera dupliquée dans le DCP.\n"
 msgid "Email KDMs for %1"
 msgstr ""
 
-#: src/lib/writer.cc:109
+#: src/lib/writer.cc:112
 msgid "Encoding image data"
 msgstr ""
 
@@ -361,15 +361,15 @@ msgstr "Désentrelaceur noyau"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:764
+#: src/lib/util.cc:766
 msgid "Left"
 msgstr "Gauche"
 
-#: src/lib/util.cc:768
+#: src/lib/util.cc:770
 msgid "Left surround"
 msgstr "Arrière gauche"
 
-#: src/lib/util.cc:767
+#: src/lib/util.cc:769
 msgid "Lfe (sub)"
 msgstr "Basses fréquences"
 
@@ -427,15 +427,15 @@ msgstr "Public Service Announcement"
 msgid "Rating"
 msgstr "Classification"
 
-#: src/lib/config.cc:81 src/lib/config.cc:165
+#: src/lib/config.cc:83 src/lib/config.cc:167
 msgid "Rec. 709"
 msgstr "Rec. 709"
 
-#: src/lib/util.cc:765
+#: src/lib/util.cc:767
 msgid "Right"
 msgstr "Droite"
 
-#: src/lib/util.cc:769
+#: src/lib/util.cc:771
 msgid "Right surround"
 msgstr "Arrière droite"
 
@@ -483,7 +483,7 @@ msgstr ""
 "Le disque contenant le film est plein. Libérez de l'espace et essayez Ã  "
 "nouveau."
 
-#: src/lib/film.cc:372
+#: src/lib/film.cc:375
 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 "
@@ -541,7 +541,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Un autre filtre de désentrelacement"
 
-#: src/lib/film.cc:276
+#: src/lib/film.cc:279
 msgid "You must add some content to the DCP before creating it"
 msgstr "Ajoutez un contenu pour créer le DCP"
 
@@ -555,11 +555,11 @@ msgstr "%1 [diaporama]"
 msgid "[still]"
 msgstr "%1 [fixe]"
 
-#: src/lib/film.cc:237
+#: src/lib/film.cc:240
 msgid "cannot contain slashes"
 msgstr "slash interdit"
 
-#: src/lib/util.cc:546
+#: src/lib/util.cc:548
 msgid "connect timed out"
 msgstr "temps de connexion expiré"
 
@@ -567,11 +567,11 @@ msgstr "temps de connexion expiré"
 msgid "connecting"
 msgstr "connexion"
 
-#: src/lib/film.cc:272
+#: src/lib/film.cc:275
 msgid "container"
 msgstr "conteneur"
 
-#: src/lib/film.cc:280
+#: src/lib/film.cc:283
 msgid "content type"
 msgstr "type de contenu"
 
@@ -599,6 +599,10 @@ msgstr "décodeur de sous-titre introuvable"
 msgid "could not find video decoder"
 msgstr "décodeur vidéo introuvable"
 
+#: src/lib/writer.cc:387
+msgid "could not move audio MXF into the DCP (%1)"
+msgstr ""
+
 #: src/lib/sndfile_decoder.cc:45
 msgid "could not open audio file for reading"
 msgstr "lecture du fichier audio impossible"
@@ -640,26 +644,22 @@ 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:566
+#: src/lib/util.cc:568
 msgid "error during async_accept (%1)"
 msgstr ""
 
-#: src/lib/util.cc:542
+#: src/lib/util.cc:544
 msgid "error during async_connect (%1)"
 msgstr ""
 
-#: src/lib/util.cc:615
+#: src/lib/util.cc:617
 msgid "error during async_read (%1)"
 msgstr ""
 
-#: src/lib/util.cc:587
+#: src/lib/util.cc:589
 msgid "error during async_write (%1)"
 msgstr ""
 
-#: src/lib/image_examiner.cc:68
-msgid "first frame in moving image directory is number %1"
-msgstr "la première image dans le dossier est la numéro %1"
-
 #: src/lib/transcode_job.cc:94
 msgid "frames per second"
 msgstr "images par seconde"
@@ -680,7 +680,7 @@ msgstr "minute"
 msgid "minutes"
 msgstr "minutes"
 
-#: src/lib/util.cc:687
+#: src/lib/util.cc:689
 msgid "missing key %1 in key-value set"
 msgstr "clé %1 non sélectionnée"
 
@@ -696,7 +696,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "sous-titres en plusieurs parties non supportés"
 
-#: src/lib/film.cc:237 src/lib/film.cc:284
+#: src/lib/film.cc:240 src/lib/film.cc:287
 msgid "name"
 msgstr "nom"
 
@@ -710,11 +710,11 @@ msgstr "sous-titres non-bitmap non supportés actuellement"
 msgid "remaining"
 msgstr "restant"
 
-#: src/lib/config.cc:79 src/lib/video_content.cc:169
+#: src/lib/config.cc:81 src/lib/video_content.cc:169
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:80
+#: src/lib/config.cc:82
 msgid "sRGB non-linearised"
 msgstr "sRGB non linéarisé"
 
@@ -727,15 +727,17 @@ msgstr "secondes"
 msgid "still"
 msgstr "%1 [fixe]"
 
-#: src/lib/image_examiner.cc:72
-msgid "there are %1 images in the directory but the last one is number %2"
-msgstr "il y a %1 images dans le dossier mais la dernière est la numéro %2"
-
 #: src/lib/ffmpeg_examiner.cc:169
 #, fuzzy
 msgid "unknown"
 msgstr "Erreur inconnue"
 
+#~ msgid "first frame in moving image directory is number %1"
+#~ msgstr "la première image dans le dossier est la numéro %1"
+
+#~ msgid "there are %1 images in the directory but the last one is number %2"
+#~ msgstr "il y a %1 images dans le dossier mais la dernière est la numéro %2"
+
 #, fuzzy
 #~ msgid "Examining content"
 #~ msgstr "Examen du contenu"
index f4828103eace277af7bb2cc35edccfb014d33f75..a1cbb19fbd750110cad43e5eb52fdd7f2205ffc7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-28 10:26+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
@@ -103,7 +103,7 @@ msgstr "Cancellato"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Non posso gestire il formato di pixel %1 durante %2"
 
-#: src/lib/util.cc:766
+#: src/lib/util.cc:768
 msgid "Centre"
 msgstr "Centro"
 
@@ -111,7 +111,7 @@ msgstr "Centro"
 msgid "Checking existing image data"
 msgstr ""
 
-#: src/lib/writer.cc:401
+#: src/lib/writer.cc:420
 msgid "Computing audio digest"
 msgstr ""
 
@@ -119,11 +119,11 @@ msgstr ""
 msgid "Computing digest"
 msgstr ""
 
-#: src/lib/writer.cc:398
+#: src/lib/writer.cc:417
 msgid "Computing image digest"
 msgstr ""
 
-#: src/lib/util.cc:796
+#: src/lib/util.cc:798
 #, fuzzy
 msgid "Content and DCP have the same rate.\n"
 msgstr "Il DCP e il sorgente hanno la stessa frequenza.\n"
@@ -197,7 +197,7 @@ msgstr "non riesco ad aprire %1"
 msgid "Could not open %1 to send"
 msgstr "Non posso aprire %1 da inviare"
 
-#: src/lib/film.cc:949
+#: src/lib/film.cc:952
 msgid "Could not read DCP to make KDM for"
 msgstr ""
 
@@ -213,12 +213,12 @@ msgstr "Non posso scrivere il file remoto (%1)"
 msgid "Cubic interpolating deinterlacer"
 msgstr "Deinterlacciatore cubico interpolato"
 
-#: src/lib/util.cc:808
+#: src/lib/util.cc:810
 #, 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/util.cc:799
+#: src/lib/util.cc:801
 #, fuzzy
 msgid "DCP will use every other frame of the content.\n"
 msgstr "Il DCP userà ogni altro fotogramma del sorgente.\n"
@@ -261,12 +261,12 @@ msgstr "Filtro deringing"
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP750"
 
-#: src/lib/util.cc:801
+#: src/lib/util.cc:803
 #, fuzzy
 msgid "Each content frame will be doubled in the DCP.\n"
 msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
 
-#: src/lib/util.cc:803
+#: src/lib/util.cc:805
 #, fuzzy
 msgid "Each content frame will be repeated %1 more times in the DCP.\n"
 msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
@@ -275,7 +275,7 @@ msgstr "Ogni fotogramma del sorgente sarà raddoppiato nel DCP.\n"
 msgid "Email KDMs for %1"
 msgstr ""
 
-#: src/lib/writer.cc:109
+#: src/lib/writer.cc:112
 msgid "Encoding image data"
 msgstr ""
 
@@ -363,15 +363,15 @@ msgstr "Deinterlacciatore Kernel"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:764
+#: src/lib/util.cc:766
 msgid "Left"
 msgstr "Sinistro"
 
-#: src/lib/util.cc:768
+#: src/lib/util.cc:770
 msgid "Left surround"
 msgstr "Surround sinistro"
 
-#: src/lib/util.cc:767
+#: src/lib/util.cc:769
 msgid "Lfe (sub)"
 msgstr "Lfe(sub)"
 
@@ -429,16 +429,16 @@ msgstr "Annuncio di pubblico servizio"
 msgid "Rating"
 msgstr "Punteggio"
 
-#: src/lib/config.cc:81 src/lib/config.cc:165
+#: src/lib/config.cc:83 src/lib/config.cc:167
 #, fuzzy
 msgid "Rec. 709"
 msgstr "Rec 709"
 
-#: src/lib/util.cc:765
+#: src/lib/util.cc:767
 msgid "Right"
 msgstr "Destro"
 
-#: src/lib/util.cc:769
+#: src/lib/util.cc:771
 msgid "Right surround"
 msgstr "Surround destro"
 
@@ -486,7 +486,7 @@ msgstr ""
 "Sul disco dove Ã¨ memorizzato il film non c'è abbastanza spazio. Liberare "
 "altro spazio e riprovare."
 
-#: src/lib/film.cc:372
+#: src/lib/film.cc:375
 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 "
@@ -541,7 +541,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Altro filtro di deinterlacciamento"
 
-#: src/lib/film.cc:276
+#: src/lib/film.cc:279
 msgid "You must add some content to the DCP before creating it"
 msgstr ""
 
@@ -554,11 +554,11 @@ msgstr ""
 msgid "[still]"
 msgstr "ancora"
 
-#: src/lib/film.cc:237
+#: src/lib/film.cc:240
 msgid "cannot contain slashes"
 msgstr "non può contenere barre"
 
-#: src/lib/util.cc:546
+#: src/lib/util.cc:548
 msgid "connect timed out"
 msgstr "connessione scaduta"
 
@@ -566,12 +566,12 @@ msgstr "connessione scaduta"
 msgid "connecting"
 msgstr "mi sto connettendo"
 
-#: src/lib/film.cc:272
+#: src/lib/film.cc:275
 #, fuzzy
 msgid "container"
 msgstr "contenuto"
 
-#: src/lib/film.cc:280
+#: src/lib/film.cc:283
 msgid "content type"
 msgstr "tipo di contenuto"
 
@@ -599,6 +599,10 @@ msgstr "non riesco a trovare il decoder dei sottotitoli"
 msgid "could not find video decoder"
 msgstr "non riesco a trovare il decoder video"
 
+#: src/lib/writer.cc:387
+msgid "could not move audio MXF into the DCP (%1)"
+msgstr ""
+
 #: src/lib/sndfile_decoder.cc:45
 #, fuzzy
 msgid "could not open audio file for reading"
@@ -642,26 +646,22 @@ 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:566
+#: src/lib/util.cc:568
 msgid "error during async_accept (%1)"
 msgstr ""
 
-#: src/lib/util.cc:542
+#: src/lib/util.cc:544
 msgid "error during async_connect (%1)"
 msgstr ""
 
-#: src/lib/util.cc:615
+#: src/lib/util.cc:617
 msgid "error during async_read (%1)"
 msgstr ""
 
-#: src/lib/util.cc:587
+#: src/lib/util.cc:589
 msgid "error during async_write (%1)"
 msgstr ""
 
-#: src/lib/image_examiner.cc:68
-msgid "first frame in moving image directory is number %1"
-msgstr ""
-
 #: src/lib/transcode_job.cc:94
 msgid "frames per second"
 msgstr "fotogrammi al secondo"
@@ -682,7 +682,7 @@ msgstr "minuto"
 msgid "minutes"
 msgstr "minuti"
 
-#: src/lib/util.cc:687
+#: src/lib/util.cc:689
 msgid "missing key %1 in key-value set"
 msgstr "persa la chiave %1 tra i valori chiave"
 
@@ -698,7 +698,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "sottotitoli multi-part non ancora supportati"
 
-#: src/lib/film.cc:237 src/lib/film.cc:284
+#: src/lib/film.cc:240 src/lib/film.cc:287
 msgid "name"
 msgstr "nome"
 
@@ -712,11 +712,11 @@ msgstr "sottotitoli non-bitmap non ancora supportati"
 msgid "remaining"
 msgstr "restano"
 
-#: src/lib/config.cc:79 src/lib/video_content.cc:169
+#: src/lib/config.cc:81 src/lib/video_content.cc:169
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:80
+#: src/lib/config.cc:82
 msgid "sRGB non-linearised"
 msgstr ""
 
@@ -729,10 +729,6 @@ msgstr "secondi"
 msgid "still"
 msgstr "ancora"
 
-#: src/lib/image_examiner.cc:72
-msgid "there are %1 images in the directory but the last one is number %2"
-msgstr ""
-
 #: src/lib/ffmpeg_examiner.cc:169
 #, fuzzy
 msgid "unknown"
index fcd4564bad57a70bc2e21a3d9aec5990ed80dd92..3d0b5f546dd7f375c11774cc04f2ffb3777e0aa8 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-10 15:35+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -103,7 +103,7 @@ msgstr "Avbruten"
 msgid "Cannot handle pixel format %1 during %2"
 msgstr "Kan inte hantera pixelformat %1 under %2"
 
-#: src/lib/util.cc:766
+#: src/lib/util.cc:768
 msgid "Centre"
 msgstr "Mitt"
 
@@ -111,7 +111,7 @@ msgstr "Mitt"
 msgid "Checking existing image data"
 msgstr ""
 
-#: src/lib/writer.cc:401
+#: src/lib/writer.cc:420
 msgid "Computing audio digest"
 msgstr ""
 
@@ -119,11 +119,11 @@ msgstr ""
 msgid "Computing digest"
 msgstr ""
 
-#: src/lib/writer.cc:398
+#: src/lib/writer.cc:417
 msgid "Computing image digest"
 msgstr ""
 
-#: src/lib/util.cc:796
+#: src/lib/util.cc:798
 #, fuzzy
 msgid "Content and DCP have the same rate.\n"
 msgstr "DCP och källa har samma bildfrekvens.\n"
@@ -197,7 +197,7 @@ msgstr "kunde inte Ã¶ppna fil %1"
 msgid "Could not open %1 to send"
 msgstr "Kunde inte Ã¶ppna %1 för att skicka"
 
-#: src/lib/film.cc:949
+#: src/lib/film.cc:952
 msgid "Could not read DCP to make KDM for"
 msgstr ""
 
@@ -213,12 +213,12 @@ msgstr "Kunde inte skriva till fjärrfil (%1)"
 msgid "Cubic interpolating deinterlacer"
 msgstr "Kubiskt interpolerande avflätare"
 
-#: src/lib/util.cc:808
+#: src/lib/util.cc:810
 #, fuzzy
 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/util.cc:799
+#: src/lib/util.cc:801
 #, fuzzy
 msgid "DCP will use every other frame of the content.\n"
 msgstr "DCP kommer att använda varannan bild frÃ¥n källan.\n"
@@ -261,12 +261,12 @@ msgstr "Avringningsfilter"
 msgid "Dolby CP650 and CP750"
 msgstr "Dolby CP750"
 
-#: src/lib/util.cc:801
+#: src/lib/util.cc:803
 #, fuzzy
 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/util.cc:803
+#: src/lib/util.cc:805
 #, fuzzy
 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 tvÃ¥ gÃ¥nger i DCPn.\n"
@@ -275,7 +275,7 @@ msgstr "Varje bild frÃ¥n källan kommer att användas tvÃ¥ gÃ¥nger i DCPn.\n"
 msgid "Email KDMs for %1"
 msgstr ""
 
-#: src/lib/writer.cc:109
+#: src/lib/writer.cc:112
 msgid "Encoding image data"
 msgstr ""
 
@@ -363,15 +363,15 @@ msgstr "Kernel-avflätare"
 msgid "Lanczos"
 msgstr "Lanczos"
 
-#: src/lib/util.cc:764
+#: src/lib/util.cc:766
 msgid "Left"
 msgstr "Vänster"
 
-#: src/lib/util.cc:768
+#: src/lib/util.cc:770
 msgid "Left surround"
 msgstr "Vänster surround"
 
-#: src/lib/util.cc:767
+#: src/lib/util.cc:769
 msgid "Lfe (sub)"
 msgstr "Lfe (sub)"
 
@@ -429,16 +429,16 @@ msgstr "Offentligt Servicemeddelande"
 msgid "Rating"
 msgstr "Klassificeringsklipp"
 
-#: src/lib/config.cc:81 src/lib/config.cc:165
+#: src/lib/config.cc:83 src/lib/config.cc:167
 #, fuzzy
 msgid "Rec. 709"
 msgstr "Rec 709"
 
-#: src/lib/util.cc:765
+#: src/lib/util.cc:767
 msgid "Right"
 msgstr "Höger"
 
-#: src/lib/util.cc:769
+#: src/lib/util.cc:771
 msgid "Right surround"
 msgstr "Höger surround"
 
@@ -486,7 +486,7 @@ msgstr ""
 "Enheten som filmen lagras pÃ¥ har för lite ledigt utrymme. Frigör utrymme och "
 "försök igen."
 
-#: src/lib/film.cc:372
+#: src/lib/film.cc:375
 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 "
@@ -544,7 +544,7 @@ msgstr "X"
 msgid "Yet Another Deinterlacing Filter"
 msgstr "Yet Another Deinterlacing Filter"
 
-#: src/lib/film.cc:276
+#: src/lib/film.cc:279
 msgid "You must add some content to the DCP before creating it"
 msgstr ""
 
@@ -557,12 +557,12 @@ msgstr ""
 msgid "[still]"
 msgstr "stillbild"
 
-#: src/lib/film.cc:237
+#: src/lib/film.cc:240
 msgid "cannot contain slashes"
 msgstr "fÃ¥r inte innehÃ¥lla snedstreck"
 
 # Svengelska
-#: src/lib/util.cc:546
+#: src/lib/util.cc:548
 #, fuzzy
 msgid "connect timed out"
 msgstr "uppkopplingen tajmade ur"
@@ -571,12 +571,12 @@ msgstr "uppkopplingen tajmade ur"
 msgid "connecting"
 msgstr "kopplar upp"
 
-#: src/lib/film.cc:272
+#: src/lib/film.cc:275
 #, fuzzy
 msgid "container"
 msgstr "innehÃ¥ll"
 
-#: src/lib/film.cc:280
+#: src/lib/film.cc:283
 msgid "content type"
 msgstr "innehÃ¥llstyp"
 
@@ -604,6 +604,10 @@ msgstr "kunde inte hitta undertext-avkodare"
 msgid "could not find video decoder"
 msgstr "kunde inte hitta video-avkodare"
 
+#: src/lib/writer.cc:387
+msgid "could not move audio MXF into the DCP (%1)"
+msgstr ""
+
 #: src/lib/sndfile_decoder.cc:45
 #, fuzzy
 msgid "could not open audio file for reading"
@@ -647,26 +651,22 @@ 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:566
+#: src/lib/util.cc:568
 msgid "error during async_accept (%1)"
 msgstr ""
 
-#: src/lib/util.cc:542
+#: src/lib/util.cc:544
 msgid "error during async_connect (%1)"
 msgstr ""
 
-#: src/lib/util.cc:615
+#: src/lib/util.cc:617
 msgid "error during async_read (%1)"
 msgstr ""
 
-#: src/lib/util.cc:587
+#: src/lib/util.cc:589
 msgid "error during async_write (%1)"
 msgstr ""
 
-#: src/lib/image_examiner.cc:68
-msgid "first frame in moving image directory is number %1"
-msgstr ""
-
 #: src/lib/transcode_job.cc:94
 msgid "frames per second"
 msgstr "bilder per sekund"
@@ -687,7 +687,7 @@ msgstr "minut"
 msgid "minutes"
 msgstr "minuter"
 
-#: src/lib/util.cc:687
+#: src/lib/util.cc:689
 msgid "missing key %1 in key-value set"
 msgstr "saknad nyckel %1 i nyckel-värde grupp"
 
@@ -703,7 +703,7 @@ msgstr ""
 msgid "multi-part subtitles not yet supported"
 msgstr "undertexter i flera delar stöds inte Ã¤nnu"
 
-#: src/lib/film.cc:237 src/lib/film.cc:284
+#: src/lib/film.cc:240 src/lib/film.cc:287
 msgid "name"
 msgstr "namn"
 
@@ -717,11 +717,11 @@ msgstr "icke-rastergrafiska undertexter stöds inte Ã¤nnu"
 msgid "remaining"
 msgstr "Ã¥terstÃ¥ende tid"
 
-#: src/lib/config.cc:79 src/lib/video_content.cc:169
+#: src/lib/config.cc:81 src/lib/video_content.cc:169
 msgid "sRGB"
 msgstr "sRGB"
 
-#: src/lib/config.cc:80
+#: src/lib/config.cc:82
 msgid "sRGB non-linearised"
 msgstr ""
 
@@ -734,10 +734,6 @@ msgstr "sekunder"
 msgid "still"
 msgstr "stillbild"
 
-#: src/lib/image_examiner.cc:72
-msgid "there are %1 images in the directory but the last one is number %2"
-msgstr ""
-
 #: src/lib/ffmpeg_examiner.cc:169
 #, fuzzy
 msgid "unknown"
index 48bdb56ec9a149dbaaccbaf1fbcdec37e8193bf7..d3acc7d2e3662a4261d56e6d077e888da4a50ede 100644 (file)
@@ -43,10 +43,10 @@ SndfileContent::SndfileContent (shared_ptr<const Film> f, boost::filesystem::pat
 
 }
 
-SndfileContent::SndfileContent (shared_ptr<const Film> f, shared_ptr<const cxml::Node> node, int)
+SndfileContent::SndfileContent (shared_ptr<const Film> f, shared_ptr<const cxml::Node> node, int version)
        : Content (f, node)
        , AudioContent (f, node)
-       , _audio_mapping (node->node_child ("AudioMapping"))
+       , _audio_mapping (node->node_child ("AudioMapping"), version)
 {
        _audio_channels = node->number_child<int> ("AudioChannels");
        _audio_length = node->number_child<AudioFrame> ("AudioLength");
diff --git a/src/lib/update.cc b/src/lib/update.cc
new file mode 100644 (file)
index 0000000..a98ee5b
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+    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 <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"
+
+#define BUFFER_SIZE 1024
+
+using std::cout;
+using std::min;
+using std::string;
+using std::stringstream;
+using boost::lexical_cast;
+
+UpdateChecker* UpdateChecker::_instance = 0;
+
+static size_t
+write_callback_wrapper (void* data, size_t size, size_t nmemb, void* user)
+{
+       return reinterpret_cast<UpdateChecker*>(user)->write_callback (data, size, nmemb);
+}
+
+UpdateChecker::UpdateChecker ()
+       : _buffer (new char[BUFFER_SIZE])
+       , _offset (0)
+       , _curl (0)
+       , _state (NOT_RUN)
+       , _emits (0)
+       , _to_do (0)
+{
+       curl_global_init (CURL_GLOBAL_ALL);
+       _curl = curl_easy_init ();
+
+       curl_easy_setopt (_curl, CURLOPT_URL, "http://dcpomatic.com/update");
+       curl_easy_setopt (_curl, CURLOPT_WRITEFUNCTION, write_callback_wrapper);
+       curl_easy_setopt (_curl, CURLOPT_WRITEDATA, this);
+       curl_easy_setopt (_curl, CURLOPT_TIMEOUT, 20);
+       
+       string const agent = "dcpomatic/" + string (dcpomatic_version);
+       curl_easy_setopt (_curl, CURLOPT_USERAGENT, agent.c_str ());
+
+       _thread = new boost::thread (boost::bind (&UpdateChecker::thread, this));
+}
+
+UpdateChecker::~UpdateChecker ()
+{
+       /* We are not cleaning up our thread, but hey well */
+       
+       curl_easy_cleanup (_curl);
+       curl_global_cleanup ();
+       delete[] _buffer;
+}
+
+void
+UpdateChecker::run ()
+{
+       boost::mutex::scoped_lock lm (_process_mutex);
+       _to_do++;
+       _condition.notify_one ();
+}
+
+void
+UpdateChecker::thread ()
+{
+       while (1) {
+               boost::mutex::scoped_lock lock (_process_mutex);
+               while (_to_do == 0) {
+                       _condition.wait (lock);
+               }
+               --_to_do;
+               lock.unlock ();
+               
+               try {
+                       _offset = 0;
+                       
+                       int r = curl_easy_perform (_curl);
+                       if (r != CURLE_OK) {
+                               set_state (FAILED);
+                               return;
+                       }
+                       
+                       _buffer[_offset] = '\0';
+                       stringstream s;
+                       s << _buffer;
+                       cxml::Document doc ("Update");
+                       doc.read_stream (s);
+                       
+                       {
+                               boost::mutex::scoped_lock lm (_data_mutex);
+                               _stable = doc.string_child ("Stable");
+                               _test = doc.string_child ("Test");
+                       }
+                       
+                       string current = string (dcpomatic_version);
+                       bool current_pre = false;
+                       if (boost::algorithm::ends_with (current, "pre")) {
+                               current = current.substr (0, current.length() - 3);
+                               current_pre = true;
+                       }
+                       
+                       float current_float = lexical_cast<float> (current);
+                       if (current_pre) {
+                               current_float -= 0.005;
+                       }
+                       
+                       if (current_float < lexical_cast<float> (_stable)) {
+                               set_state (YES);
+                       } else {
+                               set_state (NO);
+                       }
+               } catch (...) {
+                       set_state (FAILED);
+               }
+       }
+}
+       
+size_t
+UpdateChecker::write_callback (void* data, size_t size, size_t nmemb)
+{
+       size_t const t = min (size * nmemb, size_t (BUFFER_SIZE - _offset - 1));
+       memcpy (_buffer + _offset, data, t);
+       _offset += t;
+       return t;
+}
+
+void
+UpdateChecker::set_state (State s)
+{
+       {
+               boost::mutex::scoped_lock lm (_data_mutex);
+               _state = s;
+               _emits++;
+       }
+
+       ui_signaller->emit (boost::bind (boost::ref (StateChanged)));
+}
+
+UpdateChecker *
+UpdateChecker::instance ()
+{
+       if (!_instance) {
+               _instance = new UpdateChecker ();
+       }
+
+       return _instance;
+}
+
+       
diff --git a/src/lib/update.h b/src/lib/update.h
new file mode 100644 (file)
index 0000000..e96ccec
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+    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/signals2.hpp>
+#include <boost/thread/mutex.hpp>
+#include <boost/thread/condition.hpp>
+#include <boost/thread.hpp>
+#include <curl/curl.h>
+
+class UpdateChecker
+{
+public:
+       UpdateChecker ();
+       ~UpdateChecker ();
+
+       void run ();
+
+       enum State {
+               YES,
+               FAILED,
+               NO,
+               NOT_RUN
+       };
+
+       State state () {
+               boost::mutex::scoped_lock lm (_data_mutex);
+               return _state;
+       }
+       
+       std::string stable () {
+               boost::mutex::scoped_lock lm (_data_mutex);
+               return _stable;
+       }
+
+       std::string test () {
+               boost::mutex::scoped_lock lm (_data_mutex);
+               return _test;
+       }
+       
+       /** @return true if the list signal emission was the first */
+       bool last_emit_was_first () const {
+               boost::mutex::scoped_lock lm (_data_mutex);
+               return _emits == 1;
+       }
+
+       size_t write_callback (void *, size_t, size_t);
+
+       boost::signals2::signal<void (void)> StateChanged;
+
+       static UpdateChecker* instance ();
+
+private:       
+       static UpdateChecker* _instance;
+
+       void set_state (State);
+       void thread ();
+
+       char* _buffer;
+       int _offset;
+       CURL* _curl;
+
+       /** mutex to protect _state, _stable, _test and _emits */
+       mutable boost::mutex _data_mutex;
+       State _state;
+       std::string _stable;
+       std::string _test;
+       int _emits;
+
+       boost::thread* _thread;
+       boost::mutex _process_mutex;
+       boost::condition _condition;
+       int _to_do;
+};
index d03aa9ce4ae326248e24f4abb57fa6acebcec5c1..8d901cbcdfa2d8b0a06745da2e0eabb4ccbf0943 100644 (file)
@@ -129,6 +129,7 @@ protected:
        void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
 
        VideoFrame _video_length;
+       float _video_frame_rate;
 
 private:
        friend class ffmpeg_pts_offset_test;
@@ -139,7 +140,6 @@ private:
        void setup_default_colour_conversion ();
        
        libdcp::Size _video_size;
-       float _video_frame_rate;
        VideoFrameType _video_frame_type;
        Crop _crop;
        Ratio const * _ratio;
index 5fc8481956095bf20ebca135849142ded7dca80d..320528682a84a7d452770397b5fe95df5a2257b6 100644 (file)
@@ -48,7 +48,7 @@ using std::cout;
 using boost::shared_ptr;
 using boost::weak_ptr;
 
-int const Writer::_maximum_frames_in_memory = 8;
+int const Writer::_maximum_frames_in_memory = Config::instance()->num_local_encoding_threads() + 4;
 
 Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j)
        : _film (f)
@@ -94,9 +94,16 @@ Writer::Writer (shared_ptr<const Film> f, weak_ptr<Job> j)
        _picture_asset_writer = _picture_asset->start_write (_first_nonexistant_frame > 0);
 
        /* Write the sound asset into the film directory so that we leave the creation
-          of the DCP directory until the last minute.
+          of the DCP directory until the last minute.  Some versions of windows inexplicably
+          don't like overwriting existing files here, so try to remove it using boost.
        */
-       _sound_asset.reset (new libdcp::SoundAsset (_film->dir ("."), _film->audio_mxf_filename ()));
+       boost::system::error_code ec;
+       boost::filesystem::remove (_film->file (_film->audio_mxf_filename ()), ec);
+       if (ec) {
+               _film->log()->log (String::compose ("Could not remove existing audio MXF file (%1)", ec.value ()));
+       }
+
+       _sound_asset.reset (new libdcp::SoundAsset (_film->directory (), _film->audio_mxf_filename ()));
        _sound_asset->set_edit_rate (_film->video_frame_rate ());
        _sound_asset->set_channels (_film->audio_channels ());
        _sound_asset->set_sampling_rate (_film->audio_frame_rate ());
@@ -172,16 +179,16 @@ Writer::write (shared_ptr<const AudioBuffers> audio)
        _sound_asset_writer->write (audio->data(), audio->frames());
 }
 
-/** This must be called from Writer::thread() with an appropriate lock held,
- *  and with _queue sorted.
- */
+/** This must be called from Writer::thread() with an appropriate lock held */
 bool
-Writer::have_sequenced_image_at_queue_head () const
+Writer::have_sequenced_image_at_queue_head ()
 {
        if (_queue.empty ()) {
                return false;
        }
 
+       _queue.sort ();
+
        /* The queue should contain only EYES_LEFT/EYES_RIGHT pairs or EYES_BOTH */
 
        if (_queue.front().eyes == EYES_BOTH) {
@@ -212,8 +219,6 @@ try
 
                while (1) {
                        
-                       _queue.sort ();
-                       
                        if (_finish || _queued_full_in_memory > _maximum_frames_in_memory || have_sequenced_image_at_queue_head ()) {
                                break;
                        }
@@ -227,7 +232,7 @@ try
                        return;
                }
 
-               /* Write any frames that we can write; i.e. those that are in sequence */
+               /* Write any frames that we can write; i.e. those that are in sequence. */
                while (have_sequenced_image_at_queue_head ()) {
                        QueueItem qi = _queue.front ();
                        _queue.pop_front ();
@@ -293,7 +298,8 @@ try
                           Write some FULL frames to disk.
                        */
 
-                       /* Find one */
+                       /* Find one from the back of the queue */
+                       _queue.sort ();
                        list<QueueItem>::reverse_iterator i = _queue.rbegin ();
                        while (i != _queue.rend() && (i->type != QueueItem::FULL || !i->encoded)) {
                                ++i;
@@ -373,18 +379,16 @@ Writer::finish ()
        _picture_asset->set_file_name (_film->video_mxf_filename ());
 
        /* Move the audio MXF into the DCP */
-       
-       boost::filesystem::path audio_from;
-       audio_from /= _film->dir (".");
-       audio_from /= _film->audio_mxf_filename ();
 
        boost::filesystem::path audio_to;
        audio_to /= _film->dir (_film->dcp_name ());
        audio_to /= _film->audio_mxf_filename ();
        
-       boost::filesystem::rename (audio_from, audio_to, ec);
+       boost::filesystem::rename (_film->file (_film->audio_mxf_filename ()), audio_to, ec);
        if (ec) {
-               throw FileError (String::compose (_("could not move audio MXF into the DCP (%1)"), ec.value ()), audio_from);
+               throw FileError (
+                       String::compose (_("could not move audio MXF into the DCP (%1)"), ec.value ()), _film->file (_film->audio_mxf_filename ())
+                       );
        }
 
        _sound_asset->set_directory (_film->dir (_film->dcp_name ()));
index 17ce42572c52da3df2d9e1a2eea96dd182da2847..842d6a55d3079474a03b7feab81757c6b5313711 100644 (file)
@@ -85,7 +85,7 @@ private:
        void thread ();
        void check_existing_picture_mxf ();
        bool check_existing_picture_mxf_frame (FILE *, int, Eyes);
-       bool have_sequenced_image_at_queue_head () const;
+       bool have_sequenced_image_at_queue_head ();
 
        /** our Film */
        boost::shared_ptr<const Film> _film;
index 25186a3d3452895a06299b1a3cc286982f7a7dd3..81a55a160bc42ab200931e9bec862d712ab7d965 100644 (file)
@@ -57,6 +57,7 @@ sources = """
           transcoder.cc
           types.cc
           ui_signaller.cc
+          update.cc
           util.cc
           video_content.cc
           video_decoder.cc
index 891c4623ca9b6e1ea1ac995d41108d119468e72f..111b5769d313baa3a226eb8684e2bdbbf395f426 100644 (file)
@@ -42,6 +42,7 @@
 #include "wx/kdm_dialog.h"
 #include "wx/servers_list_dialog.h"
 #include "wx/hints_dialog.h"
+#include "wx/update_dialog.h"
 #include "lib/film.h"
 #include "lib/config.h"
 #include "lib/util.h"
@@ -55,6 +56,7 @@
 #include "lib/kdm.h"
 #include "lib/send_kdm_email_job.h"
 #include "lib/server_finder.h"
+#include "lib/update.h"
 
 using std::cout;
 using std::string;
@@ -185,6 +187,7 @@ enum {
        ID_jobs_show_dcp,
        ID_tools_hints,
        ID_tools_encoding_servers,
+       ID_tools_check_for_updates
 };
 
 void
@@ -223,7 +226,8 @@ setup_menu (wxMenuBar* m)
 
        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, _("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__       
@@ -269,19 +273,20 @@ public:
                setup_menu (bar);
                SetMenuBar (bar);
 
-               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_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::jobs_make_dcp, this),          ID_jobs_make_dcp);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_make_kdms, this),         ID_jobs_make_kdms);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_send_dcp_to_tms, this),   ID_jobs_send_dcp_to_tms);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_show_dcp, this),          ID_jobs_show_dcp);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_hints, this),            ID_tools_hints);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_encoding_servers, this), ID_tools_encoding_servers);
-               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::help_about, this),             wxID_ABOUT);
+               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_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::jobs_make_dcp, this),           ID_jobs_make_dcp);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_make_kdms, this),          ID_jobs_make_kdms);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_send_dcp_to_tms, this),    ID_jobs_send_dcp_to_tms);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::jobs_show_dcp, this),           ID_jobs_show_dcp);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_hints, this),             ID_tools_hints);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_encoding_servers, this),  ID_tools_encoding_servers);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::tools_check_for_updates, this), ID_tools_check_for_updates);
+               Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::help_about, this),              wxID_ABOUT);
 
                Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
 
@@ -442,6 +447,15 @@ private:
 
        void jobs_make_dcp ()
        {
+               double required;
+               double 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);
        }
 
@@ -521,6 +535,11 @@ private:
                _servers_list_dialog->Show ();
        }
 
+       void tools_check_for_updates ()
+       {
+               UpdateChecker::instance()->run ();
+       }
+
        void help_about ()
        {
                AboutDialog* d = new AboutDialog (this);
@@ -627,10 +646,10 @@ class App : public wxApp
                        film->set_name (boost::filesystem::path (film_to_create).filename().generic_string ());
                }
 
-               Frame* f = new Frame (_("DCP-o-matic"));
-               SetTopWindow (f);
-               f->Maximize ();
-               f->Show ();
+               _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));
@@ -638,7 +657,12 @@ class App : public wxApp
                Bind (wxEVT_TIMER, boost::bind (&App::check, this));
                _timer.reset (new wxTimer (this));
                _timer->Start (1000);
-               
+
+               UpdateChecker::instance()->StateChanged.connect (boost::bind (&App::update_checker_state_changed, this));
+               if (Config::instance()->check_for_updates ()) {
+                       UpdateChecker::instance()->run ();
+               }
+
                return true;
        }
        catch (exception& e)
@@ -685,6 +709,35 @@ class App : public wxApp
                }
        }
 
+       void update_checker_state_changed ()
+       {
+               switch (UpdateChecker::instance()->state ()) {
+               case UpdateChecker::YES:
+               {
+                       string test;
+                       if (Config::instance()->check_for_test_updates ()) {
+                               test = UpdateChecker::instance()->test ();
+                       }
+                       UpdateDialog* dialog = new UpdateDialog (_frame, UpdateChecker::instance()->stable (), test);
+                       dialog->ShowModal ();
+                       dialog->Destroy ();
+                       break;
+               }
+               case UpdateChecker::NO:
+                       if (!UpdateChecker::instance()->last_emit_was_first ()) {
+                               error_dialog (_frame, _("There are no new versions of DCP-o-matic available."));
+                       }
+                       break;
+               case UpdateChecker::FAILED:
+                       if (!UpdateChecker::instance()->last_emit_was_first ()) {
+                               error_dialog (_frame, _("The DCP-o-matic download server could not be contacted."));
+                       }
+               default:
+                       break;
+               }
+       }
+
+       wxFrame* _frame;
        shared_ptr<wxTimer> _timer;
 };
 
index bdedf2695988d5ce547b1f85f2d3f35060874fe4..8604e2a4ce2b7bc0ea09662bd95e118b13cb78df 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2014-01-02 13:17+0100\n"
 "Last-Translator: \n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,128 +18,144 @@ msgstr ""
 "X-Generator: Poedit 1.6.3\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/tools/dcpomatic.cc:361
+#: src/tools/dcpomatic.cc:366
 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.cc:237
+#: src/tools/dcpomatic.cc:241
 msgid "&Edit"
 msgstr "&Bearbeiten"
 
-#: src/tools/dcpomatic.cc:205
+#: src/tools/dcpomatic.cc:208
 msgid "&Exit"
 msgstr "%Ende"
 
-#: src/tools/dcpomatic.cc:235
+#: src/tools/dcpomatic.cc:239
 msgid "&File"
 msgstr "&Datei"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:245
 msgid "&Help"
 msgstr "&Hilfe"
 
-#: src/tools/dcpomatic.cc:239
+#: src/tools/dcpomatic.cc:243
 msgid "&Jobs"
 msgstr "&Aufgaben"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:222
 msgid "&Make DCP"
 msgstr "&DCP erstellen"
 
-#: src/tools/dcpomatic.cc:195
+#: src/tools/dcpomatic.cc:198
 msgid "&Open..."
 msgstr "&Öffnen..."
 
-#: src/tools/dcpomatic.cc:212 src/tools/dcpomatic.cc:215
+#: src/tools/dcpomatic.cc:215 src/tools/dcpomatic.cc:218
 msgid "&Preferences..."
 msgstr "&Einstellungen..."
 
-#: src/tools/dcpomatic.cc:199
+#: src/tools/dcpomatic.cc:202
 msgid "&Properties..."
 msgstr "&Eigenschaften..."
 
-#: src/tools/dcpomatic.cc:207
+#: src/tools/dcpomatic.cc:210
 msgid "&Quit"
 msgstr "&Beenden"
 
-#: src/tools/dcpomatic.cc:197
+#: src/tools/dcpomatic.cc:200
 msgid "&Save"
 msgstr "&Speichern"
 
-#: src/tools/dcpomatic.cc:221
+#: src/tools/dcpomatic.cc:224
 msgid "&Send DCP to TMS"
 msgstr "&DCP an TMS senden"
 
-#: src/tools/dcpomatic.cc:240
+#: src/tools/dcpomatic.cc:244
 msgid "&Tools"
 msgstr "&Werkzeuge"
 
-#: src/tools/dcpomatic.cc:232
+#: src/tools/dcpomatic.cc:236
 msgid "About"
 msgstr "Ãœber"
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:234
 msgid "About DCP-o-matic"
 msgstr "Ãœber DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:619
+#: src/tools/dcpomatic.cc:230
+msgid "Check for updates"
+msgstr ""
+
+#: src/tools/dcpomatic.cc:638
 msgid "Could not load film %1 (%2)"
 msgstr "Film %1 (%2) konnte nicht geladen werden"
 
-#: src/tools/dcpomatic.cc:406
+#: src/tools/dcpomatic.cc:411
 #, 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:499
+#: src/tools/dcpomatic.cc:513
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "DCP kann nicht gezeigt werden (Konqueror konnte nicht geladen werden)"
 
-#: src/tools/dcpomatic.cc:492
+#: src/tools/dcpomatic.cc:506
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "DCP Kann nicht gezeigt werden (Nautilus konnte nicht geladen werden)"
 
-#: src/tools/dcpomatic.cc:332 src/tools/dcpomatic.cc:577
-#: src/tools/dcpomatic.cc:630
+#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:596
+#: src/tools/dcpomatic.cc:649
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:226
-msgid "Encoding Servers..."
+#: src/tools/dcpomatic.cc:229
+#, fuzzy
+msgid "Encoding servers..."
 msgstr "Encoding Server..."
 
-#: src/tools/dcpomatic.cc:88
+#: src/tools/dcpomatic.cc:90
 msgid "Film changed"
 msgstr "Film gewechselt"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:228
 msgid "Hints..."
 msgstr "Tips..."
 
-#: src/tools/dcpomatic.cc:220
+#: src/tools/dcpomatic.cc:223
 msgid "Make &KDMs..."
 msgstr "&KDM erstellen..."
 
-#: src/tools/dcpomatic.cc:194
+#: src/tools/dcpomatic.cc:197
 msgid "New..."
 msgstr "Neu..."
 
-#: src/tools/dcpomatic.cc:222
+#: src/tools/dcpomatic.cc:225
 msgid "S&how DCP"
 msgstr "Z&eige DCP"
 
-#: src/tools/dcpomatic.cc:87
+#: src/tools/dcpomatic.cc:89
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Änderungen des Films \"%s\" für dem Schließen speichern ?"
 
-#: src/tools/dcpomatic.cc:381
+#: src/tools/dcpomatic.cc:386
 msgid "Select film to open"
 msgstr "Zu Ã¶ffnenden Film auswählen"
 
-#: src/tools/dcpomatic.cc:351
+#: src/tools/dcpomatic.cc:454
+#, 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 ""
+
+#: src/tools/dcpomatic.cc:729
+msgid "The DCP-o-matic download server could not be contacted."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:356
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
@@ -147,17 +163,21 @@ msgstr ""
 "Der Ordner %1 existiert bereits und ist nicht leer. Wollen Sie ihn trotzdem "
 "benutzen ?"
 
-#: src/tools/dcpomatic.cc:539
+#: src/tools/dcpomatic.cc:724
+msgid "There are no new versions of DCP-o-matic available."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:558
 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:540
+#: src/tools/dcpomatic.cc:559
 msgid "Unfinished jobs"
 msgstr "Unerledigte Aufgaben"
 
-#: src/tools/dcpomatic.cc:390
+#: src/tools/dcpomatic.cc:395
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
index 3a859935a9810f450b1892de6a7f295b3a6f2d8e..60eaf903069ac989ef63cb43f965cf1fe751bb94 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCPOMATIC\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-09 02:47-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -17,143 +17,162 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.7\n"
 
-#: src/tools/dcpomatic.cc:361
+#: src/tools/dcpomatic.cc:366
 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.cc:237
+#: src/tools/dcpomatic.cc:241
 msgid "&Edit"
 msgstr "&Editar"
 
-#: src/tools/dcpomatic.cc:205
+#: src/tools/dcpomatic.cc:208
 msgid "&Exit"
 msgstr "&Salir"
 
-#: src/tools/dcpomatic.cc:235
+#: src/tools/dcpomatic.cc:239
 msgid "&File"
 msgstr "&Archivo"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:245
 msgid "&Help"
 msgstr "&Ayuda"
 
-#: src/tools/dcpomatic.cc:239
+#: src/tools/dcpomatic.cc:243
 msgid "&Jobs"
 msgstr "&Tareas"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:222
 msgid "&Make DCP"
 msgstr "&Crear DCP"
 
-#: src/tools/dcpomatic.cc:195
+#: src/tools/dcpomatic.cc:198
 msgid "&Open..."
 msgstr "&Abrir..."
 
-#: src/tools/dcpomatic.cc:212 src/tools/dcpomatic.cc:215
+#: src/tools/dcpomatic.cc:215 src/tools/dcpomatic.cc:218
 msgid "&Preferences..."
 msgstr "&Preferencias..."
 
-#: src/tools/dcpomatic.cc:199
+#: src/tools/dcpomatic.cc:202
 msgid "&Properties..."
 msgstr "&Propiedades..."
 
-#: src/tools/dcpomatic.cc:207
+#: src/tools/dcpomatic.cc:210
 msgid "&Quit"
 msgstr "&Salir"
 
-#: src/tools/dcpomatic.cc:197
+#: src/tools/dcpomatic.cc:200
 msgid "&Save"
 msgstr "&Guardar"
 
-#: src/tools/dcpomatic.cc:221
+#: src/tools/dcpomatic.cc:224
 msgid "&Send DCP to TMS"
 msgstr "&Enviar DCP al TMS"
 
-#: src/tools/dcpomatic.cc:240
+#: src/tools/dcpomatic.cc:244
 msgid "&Tools"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:232
+#: src/tools/dcpomatic.cc:236
 msgid "About"
 msgstr "Acerca de"
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:234
 #, fuzzy
 msgid "About DCP-o-matic"
 msgstr "DVD-o-matic"
 
-#: src/tools/dcpomatic.cc:619
+#: src/tools/dcpomatic.cc:230
+msgid "Check for updates"
+msgstr ""
+
+#: src/tools/dcpomatic.cc:638
 #, fuzzy
 msgid "Could not load film %1 (%2)"
 msgstr "No se pudo cargar la película %s (%s)"
 
-#: src/tools/dcpomatic.cc:406
+#: src/tools/dcpomatic.cc:411
 #, 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:499
+#: src/tools/dcpomatic.cc:513
 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:492
+#: src/tools/dcpomatic.cc:506
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "No se pudo mostrar el DCP (no se pudo ejecutar nautilus)"
 
-#: src/tools/dcpomatic.cc:332 src/tools/dcpomatic.cc:577
-#: src/tools/dcpomatic.cc:630
+#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:596
+#: src/tools/dcpomatic.cc:649
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:226
-msgid "Encoding Servers..."
+#: src/tools/dcpomatic.cc:229
+msgid "Encoding servers..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:88
+#: src/tools/dcpomatic.cc:90
 msgid "Film changed"
 msgstr "Película cambiada"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:228
 msgid "Hints..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:220
+#: src/tools/dcpomatic.cc:223
 msgid "Make &KDMs..."
 msgstr "Crear &KDMs..."
 
-#: src/tools/dcpomatic.cc:194
+#: src/tools/dcpomatic.cc:197
 msgid "New..."
 msgstr "Nuevo..."
 
-#: src/tools/dcpomatic.cc:222
+#: src/tools/dcpomatic.cc:225
 msgid "S&how DCP"
 msgstr "&Mostrar DCP"
 
-#: src/tools/dcpomatic.cc:87
+#: src/tools/dcpomatic.cc:89
 #, 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:381
+#: src/tools/dcpomatic.cc:386
 msgid "Select film to open"
 msgstr "Selecciona la película a abrir"
 
-#: src/tools/dcpomatic.cc:351
+#: src/tools/dcpomatic.cc:454
+#, 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 ""
+
+#: src/tools/dcpomatic.cc:729
+msgid "The DCP-o-matic download server could not be contacted."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:356
 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:539
+#: src/tools/dcpomatic.cc:724
+msgid "There are no new versions of DCP-o-matic available."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:558
 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:540
+#: src/tools/dcpomatic.cc:559
 msgid "Unfinished jobs"
 msgstr "Trabajos sin finalizar"
 
-#: src/tools/dcpomatic.cc:390
+#: src/tools/dcpomatic.cc:395
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
index 74e72d6aaf087088d75b662f9225cfdb975fb2d9..f4f5fba342098715ced49df8d0d825f231aa86af 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-25 18:58+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -17,142 +17,161 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.4\n"
 
-#: src/tools/dcpomatic.cc:361
+#: src/tools/dcpomatic.cc:366
 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.cc:237
+#: src/tools/dcpomatic.cc:241
 msgid "&Edit"
 msgstr "&Edition"
 
-#: src/tools/dcpomatic.cc:205
+#: src/tools/dcpomatic.cc:208
 msgid "&Exit"
 msgstr "&Quitter"
 
-#: src/tools/dcpomatic.cc:235
+#: src/tools/dcpomatic.cc:239
 msgid "&File"
 msgstr "&Fichier"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:245
 msgid "&Help"
 msgstr "&Aide"
 
-#: src/tools/dcpomatic.cc:239
+#: src/tools/dcpomatic.cc:243
 msgid "&Jobs"
 msgstr "&Travaux"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:222
 msgid "&Make DCP"
 msgstr "&Créer le DCP"
 
-#: src/tools/dcpomatic.cc:195
+#: src/tools/dcpomatic.cc:198
 msgid "&Open..."
 msgstr "&Ouvrir..."
 
-#: src/tools/dcpomatic.cc:212 src/tools/dcpomatic.cc:215
+#: src/tools/dcpomatic.cc:215 src/tools/dcpomatic.cc:218
 msgid "&Preferences..."
 msgstr "&Préférences..."
 
-#: src/tools/dcpomatic.cc:199
+#: src/tools/dcpomatic.cc:202
 msgid "&Properties..."
 msgstr "&Propriétés..."
 
-#: src/tools/dcpomatic.cc:207
+#: src/tools/dcpomatic.cc:210
 msgid "&Quit"
 msgstr "&Quitter"
 
-#: src/tools/dcpomatic.cc:197
+#: src/tools/dcpomatic.cc:200
 msgid "&Save"
 msgstr "&Enregistrer"
 
-#: src/tools/dcpomatic.cc:221
+#: src/tools/dcpomatic.cc:224
 msgid "&Send DCP to TMS"
 msgstr "&Envoyer le DCP dans le TMS"
 
-#: src/tools/dcpomatic.cc:240
+#: src/tools/dcpomatic.cc:244
 msgid "&Tools"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:232
+#: src/tools/dcpomatic.cc:236
 msgid "About"
 msgstr "A Propos"
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:234
 msgid "About DCP-o-matic"
 msgstr "À propos de DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:619
+#: src/tools/dcpomatic.cc:230
+msgid "Check for updates"
+msgstr ""
+
+#: src/tools/dcpomatic.cc:638
 msgid "Could not load film %1 (%2)"
 msgstr "Impossible de charger le film %1 (%2)"
 
-#: src/tools/dcpomatic.cc:406
+#: src/tools/dcpomatic.cc:411
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Impossible d'ouvrir le film Ã  %s (%s)"
 
-#: src/tools/dcpomatic.cc:499
+#: src/tools/dcpomatic.cc:513
 msgid "Could not show DCP (could not run konqueror)"
 msgstr "Ouverture du DCP impossible (konqueror est introuvable)"
 
-#: src/tools/dcpomatic.cc:492
+#: src/tools/dcpomatic.cc:506
 msgid "Could not show DCP (could not run nautilus)"
 msgstr "Ouverture du DCP impossible (nautilus est introuvable)"
 
-#: src/tools/dcpomatic.cc:332 src/tools/dcpomatic.cc:577
-#: src/tools/dcpomatic.cc:630
+#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:596
+#: src/tools/dcpomatic.cc:649
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:226
-msgid "Encoding Servers..."
+#: src/tools/dcpomatic.cc:229
+msgid "Encoding servers..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:88
+#: src/tools/dcpomatic.cc:90
 msgid "Film changed"
 msgstr "Film changé"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:228
 msgid "Hints..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:220
+#: src/tools/dcpomatic.cc:223
 msgid "Make &KDMs..."
 msgstr "Générer &KDMs..."
 
-#: src/tools/dcpomatic.cc:194
+#: src/tools/dcpomatic.cc:197
 msgid "New..."
 msgstr "Nouveau..."
 
-#: src/tools/dcpomatic.cc:222
+#: src/tools/dcpomatic.cc:225
 msgid "S&how DCP"
 msgstr "Voir le DCP"
 
-#: src/tools/dcpomatic.cc:87
+#: src/tools/dcpomatic.cc:89
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Enregistrer les changements du film \"%s\" avant de fermer ?"
 
-#: src/tools/dcpomatic.cc:381
+#: src/tools/dcpomatic.cc:386
 msgid "Select film to open"
 msgstr "Sélectionner le film Ã  ouvrir"
 
-#: src/tools/dcpomatic.cc:351
+#: src/tools/dcpomatic.cc:454
+#, 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 ""
+
+#: src/tools/dcpomatic.cc:729
+msgid "The DCP-o-matic download server could not be contacted."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:356
 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:539
+#: src/tools/dcpomatic.cc:724
+msgid "There are no new versions of DCP-o-matic available."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:558
 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:540
+#: src/tools/dcpomatic.cc:559
 msgid "Unfinished jobs"
 msgstr "Travaux incomplets"
 
-#: src/tools/dcpomatic.cc:390
+#: src/tools/dcpomatic.cc:395
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
index f01b0c9bd59531ac214b81ae3ea2c43c6c862191..8be4e0c1012735a2a0d990962e35bca2bd7fb9c7 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-28 10:31+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
@@ -17,142 +17,161 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: src/tools/dcpomatic.cc:361
+#: src/tools/dcpomatic.cc:366
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:237
+#: src/tools/dcpomatic.cc:241
 msgid "&Edit"
 msgstr "&Modifica"
 
-#: src/tools/dcpomatic.cc:205
+#: src/tools/dcpomatic.cc:208
 msgid "&Exit"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:235
+#: src/tools/dcpomatic.cc:239
 msgid "&File"
 msgstr "&File"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:245
 msgid "&Help"
 msgstr "&Aiuto"
 
-#: src/tools/dcpomatic.cc:239
+#: src/tools/dcpomatic.cc:243
 msgid "&Jobs"
 msgstr "&Lavori"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:222
 msgid "&Make DCP"
 msgstr "&Crea DCP"
 
-#: src/tools/dcpomatic.cc:195
+#: src/tools/dcpomatic.cc:198
 msgid "&Open..."
 msgstr "&Apri..."
 
-#: src/tools/dcpomatic.cc:212 src/tools/dcpomatic.cc:215
+#: src/tools/dcpomatic.cc:215 src/tools/dcpomatic.cc:218
 msgid "&Preferences..."
 msgstr "&Preferenze..."
 
-#: src/tools/dcpomatic.cc:199
+#: src/tools/dcpomatic.cc:202
 msgid "&Properties..."
 msgstr "&Proprieta'..."
 
-#: src/tools/dcpomatic.cc:207
+#: src/tools/dcpomatic.cc:210
 msgid "&Quit"
 msgstr "&Esci"
 
-#: src/tools/dcpomatic.cc:197
+#: src/tools/dcpomatic.cc:200
 msgid "&Save"
 msgstr "&Salva"
 
-#: src/tools/dcpomatic.cc:221
+#: src/tools/dcpomatic.cc:224
 msgid "&Send DCP to TMS"
 msgstr "&Invia DCP a TMS"
 
-#: src/tools/dcpomatic.cc:240
+#: src/tools/dcpomatic.cc:244
 msgid "&Tools"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:232
+#: src/tools/dcpomatic.cc:236
 msgid "About"
 msgstr "Informazioni"
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:234
 #, fuzzy
 msgid "About DCP-o-matic"
 msgstr "DVD-o-matic"
 
-#: src/tools/dcpomatic.cc:619
+#: src/tools/dcpomatic.cc:230
+msgid "Check for updates"
+msgstr ""
+
+#: src/tools/dcpomatic.cc:638
 msgid "Could not load film %1 (%2)"
 msgstr "Non posso caricare il film %s (%s)"
 
-#: src/tools/dcpomatic.cc:406
+#: src/tools/dcpomatic.cc:411
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Non posso aprire il film in %s (%s)"
 
-#: src/tools/dcpomatic.cc:499
+#: src/tools/dcpomatic.cc:513
 msgid "Could not show DCP (could not run konqueror)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:492
+#: src/tools/dcpomatic.cc:506
 msgid "Could not show DCP (could not run nautilus)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:332 src/tools/dcpomatic.cc:577
-#: src/tools/dcpomatic.cc:630
+#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:596
+#: src/tools/dcpomatic.cc:649
 #, fuzzy
 msgid "DCP-o-matic"
 msgstr "DVD-o-matic"
 
-#: src/tools/dcpomatic.cc:226
-msgid "Encoding Servers..."
+#: src/tools/dcpomatic.cc:229
+msgid "Encoding servers..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:88
+#: src/tools/dcpomatic.cc:90
 msgid "Film changed"
 msgstr "Film modificato"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:228
 msgid "Hints..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:220
+#: src/tools/dcpomatic.cc:223
 msgid "Make &KDMs..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:194
+#: src/tools/dcpomatic.cc:197
 msgid "New..."
 msgstr "Nuovo"
 
-#: src/tools/dcpomatic.cc:222
+#: src/tools/dcpomatic.cc:225
 msgid "S&how DCP"
 msgstr "&Mostra DCP"
 
-#: src/tools/dcpomatic.cc:87
+#: src/tools/dcpomatic.cc:89
 #, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Salvare i cambiamenti del film \"%s\" prima di chiudere?"
 
-#: src/tools/dcpomatic.cc:381
+#: src/tools/dcpomatic.cc:386
 msgid "Select film to open"
 msgstr "Seleziona il film da aprire"
 
-#: src/tools/dcpomatic.cc:351
+#: src/tools/dcpomatic.cc:454
+#, 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 ""
+
+#: src/tools/dcpomatic.cc:729
+msgid "The DCP-o-matic download server could not be contacted."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:356
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:539
+#: src/tools/dcpomatic.cc:724
+msgid "There are no new versions of DCP-o-matic available."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:558
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:540
+#: src/tools/dcpomatic.cc:559
 msgid "Unfinished jobs"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:390
+#: src/tools/dcpomatic.cc:395
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
index b5bc435724699f9d0da8cfb9dc1cf5b55c6983be..6a4f1c9bf364b26a33edbfde917b5ce2f45fefdb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-09 10:12+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -17,141 +17,160 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 1.5.5\n"
 
-#: src/tools/dcpomatic.cc:361
+#: src/tools/dcpomatic.cc:366
 msgid "%1 already exists as a file, so you cannot use it for a new film."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:237
+#: src/tools/dcpomatic.cc:241
 msgid "&Edit"
 msgstr "&Redigera"
 
-#: src/tools/dcpomatic.cc:205
+#: src/tools/dcpomatic.cc:208
 msgid "&Exit"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:235
+#: src/tools/dcpomatic.cc:239
 msgid "&File"
 msgstr "&Fil"
 
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:245
 msgid "&Help"
 msgstr "&Hjälp"
 
-#: src/tools/dcpomatic.cc:239
+#: src/tools/dcpomatic.cc:243
 msgid "&Jobs"
 msgstr "&Jobb"
 
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:222
 msgid "&Make DCP"
 msgstr "&Skapa DCP"
 
-#: src/tools/dcpomatic.cc:195
+#: src/tools/dcpomatic.cc:198
 msgid "&Open..."
 msgstr "&Öppna"
 
-#: src/tools/dcpomatic.cc:212 src/tools/dcpomatic.cc:215
+#: src/tools/dcpomatic.cc:215 src/tools/dcpomatic.cc:218
 msgid "&Preferences..."
 msgstr "&Inställningar"
 
-#: src/tools/dcpomatic.cc:199
+#: src/tools/dcpomatic.cc:202
 msgid "&Properties..."
 msgstr "&Egenskaper"
 
-#: src/tools/dcpomatic.cc:207
+#: src/tools/dcpomatic.cc:210
 msgid "&Quit"
 msgstr "&Avsluta"
 
-#: src/tools/dcpomatic.cc:197
+#: src/tools/dcpomatic.cc:200
 msgid "&Save"
 msgstr "&Spara"
 
-#: src/tools/dcpomatic.cc:221
+#: src/tools/dcpomatic.cc:224
 msgid "&Send DCP to TMS"
 msgstr "&Skicka DCP till TMS"
 
-#: src/tools/dcpomatic.cc:240
+#: src/tools/dcpomatic.cc:244
 msgid "&Tools"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:232
+#: src/tools/dcpomatic.cc:236
 msgid "About"
 msgstr "Om"
 
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:234
 #, fuzzy
 msgid "About DCP-o-matic"
 msgstr "DVD-o-matic"
 
-#: src/tools/dcpomatic.cc:619
+#: src/tools/dcpomatic.cc:230
+msgid "Check for updates"
+msgstr ""
+
+#: src/tools/dcpomatic.cc:638
 msgid "Could not load film %1 (%2)"
 msgstr "Kunde inte Ã¶ppna filmen %1 (%2)"
 
-#: src/tools/dcpomatic.cc:406
+#: src/tools/dcpomatic.cc:411
 #, c-format
 msgid "Could not open film at %s (%s)"
 msgstr "Kunde inte Ã¶ppna filmen vid %s (%s)"
 
-#: src/tools/dcpomatic.cc:499
+#: src/tools/dcpomatic.cc:513
 msgid "Could not show DCP (could not run konqueror)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:492
+#: src/tools/dcpomatic.cc:506
 msgid "Could not show DCP (could not run nautilus)"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:332 src/tools/dcpomatic.cc:577
-#: src/tools/dcpomatic.cc:630
+#: src/tools/dcpomatic.cc:337 src/tools/dcpomatic.cc:596
+#: src/tools/dcpomatic.cc:649
 msgid "DCP-o-matic"
 msgstr "DCP-o-matic"
 
-#: src/tools/dcpomatic.cc:226
-msgid "Encoding Servers..."
+#: src/tools/dcpomatic.cc:229
+msgid "Encoding servers..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:88
+#: src/tools/dcpomatic.cc:90
 msgid "Film changed"
 msgstr "Film Ã¤ndrad"
 
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:228
 msgid "Hints..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:220
+#: src/tools/dcpomatic.cc:223
 msgid "Make &KDMs..."
 msgstr ""
 
-#: src/tools/dcpomatic.cc:194
+#: src/tools/dcpomatic.cc:197
 msgid "New..."
 msgstr "Ny..."
 
-#: src/tools/dcpomatic.cc:222
+#: src/tools/dcpomatic.cc:225
 msgid "S&how DCP"
 msgstr "&Visa DCP"
 
-#: src/tools/dcpomatic.cc:87
+#: src/tools/dcpomatic.cc:89
 #, fuzzy, c-format
 msgid "Save changes to film \"%s\" before closing?"
 msgstr "Spara Ã¤ndringarna till filmen \"%s\" före avslut?"
 
-#: src/tools/dcpomatic.cc:381
+#: src/tools/dcpomatic.cc:386
 msgid "Select film to open"
 msgstr "Välj film att Ã¶ppna"
 
-#: src/tools/dcpomatic.cc:351
+#: src/tools/dcpomatic.cc:454
+#, 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 ""
+
+#: src/tools/dcpomatic.cc:729
+msgid "The DCP-o-matic download server could not be contacted."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:356
 msgid ""
 "The directory %1 already exists and is not empty.  Are you sure you want to "
 "use it?"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:539
+#: src/tools/dcpomatic.cc:724
+msgid "There are no new versions of DCP-o-matic available."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:558
 msgid "There are unfinished jobs; are you sure you want to quit?"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:540
+#: src/tools/dcpomatic.cc:559
 msgid "Unfinished jobs"
 msgstr ""
 
-#: src/tools/dcpomatic.cc:390
+#: src/tools/dcpomatic.cc:395
 msgid ""
 "You did not select a folder.  Make sure that you select a folder before "
 "clicking Open."
diff --git a/src/tools/update_dialog.cc b/src/tools/update_dialog.cc
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/tools/update_dialog.h b/src/tools/update_dialog.h
new file mode 100644 (file)
index 0000000..8b499eb
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+    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 UpdateDialog
+{
+public:
+       UpdateDialog (wxWindow *);
+
+private:
+       wxGauge* _gauge;
+       wxStaticText* _message;
+       boost::thread* _thread;
+       boost::optional<UpdateChecker::Result> _result;
+       std::string _stable;
+};
index 5ded69339db66f659a99e96dc1b25669a3157fd2..5f801bfe406b9c0ae1119d50d06c53bb370b070e 100644 (file)
@@ -128,6 +128,7 @@ AboutDialog::AboutDialog (wxWindow* parent)
        supported_by.Add (wxT ("Rodolfo Giuliano"));
        supported_by.Add (wxT ("Sylvain Mielle"));
        supported_by.Add (wxT ("Ivan Pullman"));
+       supported_by.Add (wxT ("Aldo Midali"));
        add_section (_("Supported by"), supported_by);
 
        sizer->Add (_notebook, wxSizerFlags().Centre().Border(wxALL, 16).Expand());
diff --git a/src/wx/audio_gain_dialog.cc b/src/wx/audio_gain_dialog.cc
new file mode 100644 (file)
index 0000000..7622e44
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+    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 <cmath>
+#include <wx/spinctrl.h>
+#include "audio_gain_dialog.h"
+#include "wx_util.h"
+
+AudioGainDialog::AudioGainDialog (wxWindow* parent, int c, int d, float v)
+       : wxDialog (parent, wxID_ANY, _("Channel gain"))
+{
+       wxFlexGridSizer* table = new wxFlexGridSizer (3, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+       table->AddGrowableCol (1, 1);
+
+       add_label_to_sizer (table, this, wxString::Format (_("Gain for content channel %d in DCP channel %d"), c + 1, d + 1), false);
+       _gain = new wxSpinCtrlDouble (this);
+       table->Add (_gain);
+
+       add_label_to_sizer (table, this, _("dB"), false);
+
+       wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
+       overall_sizer->Add (table, 1, wxEXPAND | wxALL, DCPOMATIC_DIALOG_BORDER);
+       
+       wxSizer* buttons = CreateSeparatedButtonSizer (wxOK | wxCANCEL);
+       if (buttons) {
+               overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
+       }
+
+       SetSizer (overall_sizer);
+       overall_sizer->Layout ();
+       overall_sizer->SetSizeHints (this);
+
+       _gain->SetRange (-144, 0);
+       _gain->SetDigits (1);
+       _gain->SetIncrement (0.1);
+
+       _gain->SetValue (20 * log10 (v));
+}
+
+float
+AudioGainDialog::value () const
+{
+       if (_gain->GetValue() <= -144) {
+               return 0;
+       }
+       
+       return pow (10, _gain->GetValue () / 20);
+}
diff --git a/src/wx/audio_gain_dialog.h b/src/wx/audio_gain_dialog.h
new file mode 100644 (file)
index 0000000..370e9f1
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+    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 <wx/wx.h>
+
+class wxSpinCtrlDouble;
+
+class AudioGainDialog : public wxDialog
+{
+public:
+       AudioGainDialog (wxWindow *, int, int, float);
+
+       float value () const;
+       
+private:
+       wxSpinCtrlDouble* _gain;
+};
index 3136b8679a6140902c225239832148a51f08326f..9fa57a1b10b2f21dc0aa54674d1ea543e6284289 100644 (file)
 #include "lib/util.h"
 #include "audio_mapping_view.h"
 #include "wx_util.h"
+#include "audio_gain_dialog.h"
 
 using std::cout;
 using std::list;
+using std::string;
+using std::max;
 using boost::shared_ptr;
+using boost::lexical_cast;
 
-/* This could go away with wxWidgets 2.9, which has an API call
-   to find these values.
-*/
+#define INDICATOR_SIZE 20
 
-#ifdef __WXMSW__
-#define CHECKBOX_WIDTH 16
-#define CHECKBOX_HEIGHT 16
-#else
-#define CHECKBOX_WIDTH 20
-#define CHECKBOX_HEIGHT 20
-#endif
+enum {
+       ID_off = 1,
+       ID_full = 2,
+       ID_minus3dB = 3,
+       ID_edit = 4
+};
 
 class NoSelectionStringRenderer : public wxGridCellStringRenderer
 {
@@ -51,40 +52,64 @@ public:
        }
 };
 
-class CheckBoxRenderer : public wxGridCellRenderer
+class ValueRenderer : public wxGridCellRenderer
 {
 public:
 
        void Draw (wxGrid& grid, wxGridCellAttr &, wxDC& dc, const wxRect& rect, int row, int col, bool)
        {
-               dc.SetPen (*wxThePenList->FindOrCreatePen (wxColour (255, 255, 255), 0, wxPENSTYLE_SOLID));
+               dc.SetPen (*wxThePenList->FindOrCreatePen (wxColour (255, 255, 255), 1, wxPENSTYLE_SOLID));
+               dc.SetBrush (*wxTheBrushList->FindOrCreateBrush (wxColour (255, 255, 255), wxBRUSHSTYLE_SOLID));
                dc.DrawRectangle (rect);
+
+               int const xo = (rect.GetWidth() - INDICATOR_SIZE) / 2;
+               int const yo = (rect.GetHeight() - INDICATOR_SIZE) / 2;
+
+               dc.SetPen (*wxThePenList->FindOrCreatePen (wxColour (0, 0, 0), 1, wxPENSTYLE_SOLID));
+               dc.SetBrush (*wxTheBrushList->FindOrCreateBrush (wxColour (255, 255, 255), wxBRUSHSTYLE_SOLID));
+               dc.DrawRectangle (wxRect (rect.GetLeft() + xo, rect.GetTop() + yo, INDICATOR_SIZE, INDICATOR_SIZE));
+
+               float const value = lexical_cast<float> (wx_to_std (grid.GetCellValue (row, col)));
+               float const value_dB = 20 * log10 (value);
+               int const range = 18;
+               int height = 0;
+               if (value_dB > -range) {
+                       height = INDICATOR_SIZE * (1 + value_dB / range);
+               }
+
+               height = max (0, height);
                
-               wxRendererNative::Get().DrawCheckBox (
-                       &grid,
-                       dc, rect,
-                       grid.GetCellValue (row, col) == wxT("1") ? static_cast<int>(wxCONTROL_CHECKED) : 0
-                       );
+               if (value > 0) {
+                       /* Make sure we get a little bit of the marker if there is any gain */
+                       height = max (3, height);
+               }
+
+               dc.SetBrush (*wxTheBrushList->FindOrCreateBrush (wxColour (0, 255, 0), wxBRUSHSTYLE_SOLID));
+               dc.DrawRectangle (wxRect (rect.GetLeft() + xo, rect.GetTop() + yo + INDICATOR_SIZE - height, INDICATOR_SIZE, height));
        }
 
        wxSize GetBestSize (wxGrid &, wxGridCellAttr &, wxDC &, int, int)
        {
-               return wxSize (CHECKBOX_WIDTH + 4, CHECKBOX_HEIGHT + 4);
+               return wxSize (INDICATOR_SIZE + 4, INDICATOR_SIZE + 4);
        }
        
        wxGridCellRenderer* Clone () const
        {
-               return new CheckBoxRenderer;
+               return new ValueRenderer;
        }
 };
 
 
 AudioMappingView::AudioMappingView (wxWindow* parent)
        : wxPanel (parent, wxID_ANY)
+       , _menu_row (0)
+       , _menu_column (1)
+       , _last_tooltip_row (0)
+       , _last_tooltip_column (0)
 {
        _grid = new wxGrid (this, wxID_ANY);
 
-       _grid->CreateGrid (0, 7);
+       _grid->CreateGrid (0, MAX_AUDIO_CHANNELS + 1);
        _grid->HideRowLabels ();
        _grid->DisableDragRowSize ();
        _grid->DisableDragColSize ();
@@ -99,64 +124,128 @@ AudioMappingView::AudioMappingView (wxWindow* parent)
        SetSizerAndFit (_sizer);
 
        Bind (wxEVT_GRID_CELL_LEFT_CLICK, boost::bind (&AudioMappingView::left_click, this, _1));
+       Bind (wxEVT_GRID_CELL_RIGHT_CLICK, boost::bind (&AudioMappingView::right_click, this, _1));
+       _grid->GetGridWindow()->Bind (wxEVT_MOTION, boost::bind (&AudioMappingView::mouse_moved, this, _1));
+
+       _menu = new wxMenu;
+       _menu->Append (ID_off, _("Off"));
+       _menu->Append (ID_full, _("Full"));
+       _menu->Append (ID_minus3dB, _("-3dB"));
+       _menu->Append (ID_edit, _("Edit..."));
+
+       Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&AudioMappingView::off, this), ID_off);
+       Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&AudioMappingView::full, this), ID_full);
+       Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&AudioMappingView::minus3dB, this), ID_minus3dB);
+       Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&AudioMappingView::edit, this), ID_edit);
 }
 
+void
+AudioMappingView::map_changed ()
+{
+       update_cells ();
+       Changed (_map);
+       _last_tooltip_column = -1;
+}      
+
 void
 AudioMappingView::left_click (wxGridEvent& ev)
 {
        if (ev.GetCol() == 0) {
                return;
        }
+
+       libdcp::Channel d = static_cast<libdcp::Channel> (ev.GetCol() - 1);
        
-       if (_grid->GetCellValue (ev.GetRow(), ev.GetCol()) == wxT("1")) {
-               _grid->SetCellValue (ev.GetRow(), ev.GetCol(), wxT("0"));
+       if (_map.get (ev.GetRow(), d) > 0) {
+               _map.set (ev.GetRow(), d, 0);
        } else {
-               _grid->SetCellValue (ev.GetRow(), ev.GetCol(), wxT("1"));
+               _map.set (ev.GetRow(), d, 1);
        }
 
-       _map = AudioMapping (_map.content_channels ());
-       
-       for (int i = 0; i < _grid->GetNumberRows(); ++i) {
-               for (int j = 1; j < _grid->GetNumberCols(); ++j) {
-                       if (_grid->GetCellValue (i, j) == wxT ("1")) {
-                               _map.add (i, static_cast<libdcp::Channel> (j - 1));
-                       }
-               }
+       map_changed ();
+}
+
+void
+AudioMappingView::right_click (wxGridEvent& ev)
+{
+       if (ev.GetCol() == 0) {
+               return;
        }
 
-       Changed (_map);
+       _menu_row = ev.GetRow ();
+       _menu_column = ev.GetCol ();
+       PopupMenu (_menu, ev.GetPosition ());
+}
+
+void
+AudioMappingView::off ()
+{
+       _map.set (_menu_row, static_cast<libdcp::Channel> (_menu_column - 1), 0);
+       map_changed ();
+}
+
+void
+AudioMappingView::full ()
+{
+       _map.set (_menu_row, static_cast<libdcp::Channel> (_menu_column - 1), 1);
+       map_changed ();
+}
+
+void
+AudioMappingView::minus3dB ()
+{
+       _map.set (_menu_row, static_cast<libdcp::Channel> (_menu_column - 1), 1 / sqrt (2));
+       map_changed ();
+}
+
+void
+AudioMappingView::edit ()
+{
+       libdcp::Channel d = static_cast<libdcp::Channel> (_menu_column - 1);
+       
+       AudioGainDialog* dialog = new AudioGainDialog (this, _menu_row, _menu_column - 1, _map.get (_menu_row, d));
+       if (dialog->ShowModal () == wxID_OK) {
+               _map.set (_menu_row, d, dialog->value ());
+               map_changed ();
+       }
+       
+       dialog->Destroy ();
 }
 
 void
 AudioMappingView::set (AudioMapping map)
 {
        _map = map;
-       
+       update_cells ();
+}
+
+void
+AudioMappingView::update_cells ()
+{
        if (_grid->GetNumberRows ()) {
                _grid->DeleteRows (0, _grid->GetNumberRows ());
        }
 
        _grid->InsertRows (0, _map.content_channels ());
 
-       for (int r = 0; r < _map.content_channels(); ++r) {
-               for (int c = 1; c < 7; ++c) {
-                       _grid->SetCellRenderer (r, c, new CheckBoxRenderer);
+       for (int i = 0; i < _map.content_channels(); ++i) {
+               for (int j = 0; j < MAX_AUDIO_CHANNELS; ++j) {
+                       _grid->SetCellRenderer (i, j + 1, new ValueRenderer);
                }
        }
        
        for (int i = 0; i < _map.content_channels(); ++i) {
                _grid->SetCellValue (i, 0, wxString::Format (wxT("%d"), i + 1));
 
-               list<libdcp::Channel> const d = _map.content_to_dcp (i);
-               for (list<libdcp::Channel>::const_iterator j = d.begin(); j != d.end(); ++j) {
-                       int const c = static_cast<int>(*j) + 1;
-                       if (c < _grid->GetNumberCols ()) {
-                               _grid->SetCellValue (i, c, wxT("1"));
-                       }
+               for (int j = 1; j < _grid->GetNumberCols(); ++j) {
+                       _grid->SetCellValue (i, j, std_to_wx (lexical_cast<string> (_map.get (i, static_cast<libdcp::Channel> (j - 1)))));
                }
        }
+
+       _grid->AutoSize ();
 }
 
+/** @param c Number of DCP channels */
 void
 AudioMappingView::set_channels (int c)
 {
@@ -169,7 +258,7 @@ AudioMappingView::set_channels (int c)
                set_column_labels ();
        }
 
-       set (_map);
+       update_cells ();
 }
 
 void
@@ -205,3 +294,40 @@ AudioMappingView::set_column_labels ()
 
        _grid->AutoSize ();
 }
+
+void
+AudioMappingView::mouse_moved (wxMouseEvent& ev)
+{
+       int xx;
+       int yy;
+       _grid->CalcUnscrolledPosition (ev.GetX(), ev.GetY(), &xx, &yy);
+
+       int const row = _grid->YToRow (yy);
+       int const column = _grid->XToCol (xx);
+
+       if (row < 0 || column < 1) {
+               _grid->GetGridWindow()->SetToolTip ("");
+               _last_tooltip_row = row;
+               _last_tooltip_column = column;
+       }
+
+       if (row != _last_tooltip_row || column != _last_tooltip_column) {
+
+               wxString s;
+               float const gain = _map.get (row, static_cast<libdcp::Channel> (column - 1));
+               if (gain == 0) {
+                       s = wxString::Format (_("No audio will be passed from content channel %d to DCP channel %d."), row + 1, column);
+               } else if (gain == 1) {
+                       s = wxString::Format (_("Audio will be passed from content channel %d to DCP channel %d unaltered."), row + 1, column);
+               } else {
+                       float const dB = 20 * log10 (gain);
+                       s = wxString::Format (_("Audio will be passed from content channel %d to DCP channel %d with gain %.1fdB."), row + 1, column, dB);
+               }
+               
+               _grid->GetGridWindow()->SetToolTip (s + " " + _("Right click to change gain."));
+               _last_tooltip_row = row;
+               _last_tooltip_column = column;
+       }
+
+        ev.Skip ();
+}
index 80534a613004425a83e2ac1eeb2a39011b1e1b5f..26f1746e09bbeb9c73d86a6c1ce761bc36efa81c 100644 (file)
@@ -34,9 +34,25 @@ public:
 
 private:
        void left_click (wxGridEvent &);
+       void right_click (wxGridEvent &);
+       void mouse_moved (wxMouseEvent &);
        void set_column_labels ();
+       void update_cells ();
+       void map_changed ();
+
+       void off ();
+       void full ();
+       void minus3dB ();
+       void edit ();
 
        wxGrid* _grid;
        wxSizer* _sizer;
        AudioMapping _map;
+
+       wxMenu* _menu;
+       int _menu_row;
+       int _menu_column;
+
+       int _last_tooltip_row;
+       int _last_tooltip_column;
 };
index 6b30c0dd2030434877c353df61ede6e689da58da..ba458f1ff813f58dc596a850884b7b7c666df874 100644 (file)
@@ -64,7 +64,7 @@ AudioPanel::AudioPanel (FilmEditor* e)
        grid->Add (_gain_calculate_button, wxGBPosition (r, 3));
        ++r;
 
-       add_label_to_grid_bag_sizer (grid, this, _("Audio Delay"), false, wxGBPosition (r, 0));
+       add_label_to_grid_bag_sizer (grid, this, _("Audio Delay"), true, wxGBPosition (r, 0));
        _delay = new ContentSpinCtrl<AudioContent> (
                this,
                new wxSpinCtrl (this),
@@ -73,7 +73,7 @@ AudioPanel::AudioPanel (FilmEditor* e)
                boost::mem_fn (&AudioContent::set_audio_delay)
                );
        
-       _delay->add (grid, wxGBPosition (r,));
+       _delay->add (grid, wxGBPosition (r, 1));
        /// TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
        add_label_to_grid_bag_sizer (grid, this, _("ms"), false, wxGBPosition (r, 2));
        ++r;
@@ -81,10 +81,7 @@ AudioPanel::AudioPanel (FilmEditor* e)
        add_label_to_grid_bag_sizer (grid, this, _("Audio Stream"), true, wxGBPosition (r, 0));
        _stream = new wxChoice (this, wxID_ANY);
        grid->Add (_stream, wxGBPosition (r, 1));
-       ++r;
-       
-       _description = new wxStaticText (this, wxID_ANY, wxT (""));
-       grid->Add (_description, wxGBPosition (r, 0));
+       _description = add_label_to_grid_bag_sizer (grid, this, "", false, wxGBPosition (r, 3));
        ++r;
        
        _mapping = new AudioMappingView (this);
@@ -131,6 +128,7 @@ AudioPanel::film_content_changed (int property)
        } else if (property == FFmpegContentProperty::AUDIO_STREAM) {
                setup_stream_description ();
                _mapping->set (acs ? acs->audio_mapping () : AudioMapping ());
+               _sizer->Layout ();
        } else if (property == FFmpegContentProperty::AUDIO_STREAMS) {
                _stream->Clear ();
                if (fcs) {
@@ -224,6 +222,7 @@ AudioPanel::setup_stream_description ()
 {
        FFmpegContentList fc = _editor->selected_ffmpeg_content ();
        if (fc.size() != 1) {
+               _description->SetLabel ("");
                return;
        }
 
index 2c0b0b4a4f5b5fe90c7311b261301d8e403f44a6..e663fc3b80f96129e66e98f6bd1e115c8b4f6966 100644 (file)
@@ -25,14 +25,14 @@ using std::string;
 CinemaDialog::CinemaDialog (wxWindow* parent, string title, string name, string email)
        : wxDialog (parent, wxID_ANY, std_to_wx (title))
 {
-       wxFlexGridSizer* table = new wxFlexGridSizer (2, 6, 6);
+       wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
        table->AddGrowableCol (1, 1);
 
-       add_label_to_sizer (table, this, "Name", true);
+       add_label_to_sizer (table, this, _("Name"), true);
        _name = new wxTextCtrl (this, wxID_ANY, std_to_wx (name), wxDefaultPosition, wxSize (256, -1));
        table->Add (_name, 1, wxEXPAND);
 
-       add_label_to_sizer (table, this, "Email address for KDM delivery", true);
+       add_label_to_sizer (table, this, _("Email address for KDM delivery"), true);
        _email = new wxTextCtrl (this, wxID_ANY, std_to_wx (email), wxDefaultPosition, wxSize (256, -1));
        table->Add (_email, 1, wxEXPAND);
 
index 52c08018f7724c2284d4ad14b9e87a97b18b9e68..2b07dd1dc6242836f1bb02ed15cf95848a201f19 100644 (file)
@@ -135,6 +135,14 @@ ConfigDialog::make_misc_panel ()
        add_label_to_sizer (table, _misc_panel, _("From address for KDM emails"), true);
        _kdm_from = new wxTextCtrl (_misc_panel, wxID_ANY);
        table->Add (_kdm_from, 1, wxEXPAND | wxALL);
+
+       _check_for_updates = new wxCheckBox (_misc_panel, wxID_ANY, _("Check for updates on startup"));
+       table->Add (_check_for_updates, 1, wxEXPAND | wxALL);
+       table->AddSpacer (0);
+
+       _check_for_test_updates = new wxCheckBox (_misc_panel, wxID_ANY, _("Check for testing updates as well as stable ones"));
+       table->Add (_check_for_test_updates, 1, wxEXPAND | wxALL);
+       table->AddSpacer (0);
        
        Config* config = Config::instance ();
 
@@ -171,6 +179,10 @@ ConfigDialog::make_misc_panel ()
        _mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::mail_password_changed, this));
        _kdm_from->SetValue (std_to_wx (config->kdm_from ()));
        _kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&ConfigDialog::kdm_from_changed, this));
+       _check_for_updates->SetValue (config->check_for_updates ());
+       _check_for_updates->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::check_for_updates_changed, this));
+       _check_for_test_updates->SetValue (config->check_for_test_updates ());
+       _check_for_test_updates->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&ConfigDialog::check_for_test_updates_changed, this));
 }
 
 void
@@ -578,3 +590,15 @@ ConfigDialog::kdm_email_changed ()
 {
        Config::instance()->set_kdm_email (wx_to_std (_kdm_email->GetValue ()));
 }
+
+void
+ConfigDialog::check_for_updates_changed ()
+{
+       Config::instance()->set_check_for_updates (_check_for_updates->GetValue ());
+}
+
+void
+ConfigDialog::check_for_test_updates_changed ()
+{
+       Config::instance()->set_check_for_test_updates (_check_for_test_updates->GetValue ());
+}
index 49b466bcb9d31d4a080b240d5e9fc6cef3308024..8a17de58db9b460abf130692bf1a7a9fa7a656b4 100644 (file)
@@ -76,6 +76,9 @@ private:
        void make_colour_conversions_panel ();
        void make_kdm_email_panel ();
 
+       void check_for_updates_changed ();
+       void check_for_test_updates_changed ();
+
        wxNotebook* _notebook;
        wxPanel* _misc_panel;
        wxPanel* _defaults_panel;
@@ -110,6 +113,8 @@ private:
        wxPanel* _kdm_email_panel;
        wxTextCtrl* _kdm_email;
        wxCheckBox* _use_any_servers;
+       wxCheckBox* _check_for_updates;
+       wxCheckBox* _check_for_test_updates;
        EditableList<std::string, ServerDialog>* _servers_list;
 };
 
index 83d82ae625082988c425de4c03d174844e989b6b..5a1046524b713ef1eb8924c861e079a7de1fb2de 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2014-01-05 23:08+0100\n"
 "Last-Translator: \n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -36,11 +36,15 @@ msgstr "(Passwort wird in Klartext gespeichert)"
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(DCP-o-matic zum Ã¤ndern der Sprache neu starten)"
 
+#: src/wx/audio_mapping_view.cc:133
+msgid "-3dB"
+msgstr ""
+
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
 msgstr "1/"
 
-#: src/wx/audio_panel.cc:237
+#: src/wx/audio_panel.cc:239
 msgid "1 channel"
 msgstr "1 Kanal"
 
@@ -68,6 +72,10 @@ msgstr "3D Oben/Unten"
 msgid "4K"
 msgstr "4K"
 
+#: src/wx/update_dialog.cc:34
+msgid "A new version of DCP-o-matic is available."
+msgstr ""
+
 #: src/wx/about_dialog.cc:30
 msgid "About DCP-o-matic"
 msgstr "Ãœber DCP-o-matic"
@@ -116,6 +124,19 @@ msgstr "Tonspur"
 msgid "Audio channels"
 msgstr "Ton Kanäle"
 
+#: src/wx/audio_mapping_view.cc:321
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d unaltered."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:324
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d with gain "
+"%.1fdB."
+msgstr ""
+
 #: src/wx/job_wrapper.cc:38
 #, c-format
 msgid "Bad setting for %s (%s)"
@@ -133,7 +154,7 @@ msgstr "Durchsuchen..."
 msgid "But I have to use fader"
 msgstr "Aber ich muss diese Lautstärke benutzen"
 
-#: src/wx/audio_mapping_view.cc:191
+#: src/wx/audio_mapping_view.cc:280
 msgid "C"
 msgstr "C"
 
@@ -145,10 +166,23 @@ msgstr "Berechne..."
 msgid "Cancel"
 msgstr "Abbrechen"
 
+#: src/wx/audio_gain_dialog.cc:26
+#, fuzzy
+msgid "Channel gain"
+msgstr "Kanäle"
+
 #: src/wx/audio_dialog.cc:44
 msgid "Channels"
 msgstr "Kanäle"
 
+#: src/wx/config_dialog.cc:143
+msgid "Check for testing updates as well as stable ones"
+msgstr ""
+
+#: src/wx/config_dialog.cc:139
+msgid "Check for updates on startup"
+msgstr ""
+
 #: src/wx/content_menu.cc:182
 msgid "Choose a file"
 msgstr "Datei auswählen"
@@ -182,7 +216,7 @@ msgstr "Inhalt"
 msgid "Content Type"
 msgstr "Inhalt Typ"
 
-#: src/wx/audio_mapping_view.cc:180
+#: src/wx/audio_mapping_view.cc:269
 msgid "Content channel"
 msgstr "Inhalt Kanal"
 
@@ -218,7 +252,7 @@ msgstr "DCP konnte nicht erstellt werden: %s"
 msgid "Create in folder"
 msgstr "In Ordner erstellen"
 
-#: src/wx/config_dialog.cc:332
+#: src/wx/config_dialog.cc:344
 msgid "Creator"
 msgstr "Ersteller"
 
@@ -256,31 +290,31 @@ msgstr "DCP-o-matic Einstellungen"
 msgid "DCP-o-matic audio - %s"
 msgstr "DCP-o-matic Ton - %s"
 
-#: src/wx/config_dialog.cc:204
+#: src/wx/config_dialog.cc:216
 msgid "Default DCI name details"
 msgstr "Standard DCI Name Details"
 
-#: src/wx/config_dialog.cc:217
+#: src/wx/config_dialog.cc:229
 msgid "Default JPEG2000 bandwidth"
 msgstr "Standard JPEG2000 Bandbreite"
 
-#: src/wx/config_dialog.cc:226
+#: src/wx/config_dialog.cc:238
 msgid "Default audio delay"
 msgstr "Standard Ton Delay"
 
-#: src/wx/config_dialog.cc:208
+#: src/wx/config_dialog.cc:220
 msgid "Default container"
 msgstr "Standard Container"
 
-#: src/wx/config_dialog.cc:212
+#: src/wx/config_dialog.cc:224
 msgid "Default content type"
 msgstr "Standard Inhalt Typ"
 
-#: src/wx/config_dialog.cc:196
+#: src/wx/config_dialog.cc:208
 msgid "Default directory for new films"
 msgstr "Standard Ordner für neue Filme"
 
-#: src/wx/config_dialog.cc:188
+#: src/wx/config_dialog.cc:200
 msgid "Default duration of still images"
 msgstr "Satndard Länge der Standbilder"
 
@@ -308,11 +342,17 @@ msgstr "Kino bearbeiten..."
 msgid "Edit Screen..."
 msgstr "Saal bearbeiten..."
 
-#: src/wx/config_dialog.cc:205 src/wx/video_panel.cc:157
-#: src/wx/video_panel.cc:174 src/wx/editable_list.h:63
+#: src/wx/audio_mapping_view.cc:134 src/wx/config_dialog.cc:217
+#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
+#: src/wx/editable_list.h:63
 msgid "Edit..."
 msgstr "Bearbeiten..."
 
+#: src/wx/cinema_dialog.cc:35
+#, fuzzy
+msgid "Email address for KDM delivery"
+msgstr "Von Adresse für KDM Emails"
+
 #: src/wx/servers_list_dialog.cc:30
 msgid "Encoding Servers"
 msgstr "Encodier Server"
@@ -369,7 +409,11 @@ msgstr "Von"
 msgid "From address for KDM emails"
 msgstr "Von Adresse für KDM Emails"
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/audio_mapping_view.cc:132
+msgid "Full"
+msgstr ""
+
+#: src/wx/timing_panel.cc:42
 msgid "Full length"
 msgstr "Ganze Länge"
 
@@ -377,6 +421,11 @@ msgstr "Ganze Länge"
 msgid "Gain Calculator"
 msgstr "Lautstärken Rechner"
 
+#: src/wx/audio_gain_dialog.cc:31
+#, c-format
+msgid "Gain for content channel %d in DCP channel %d"
+msgstr ""
+
 #: src/wx/properties_dialog.cc:57
 msgid "Gb"
 msgstr "Gb"
@@ -393,7 +442,7 @@ msgstr "Host"
 msgid "Host name or IP address"
 msgstr "Host Name oder IP-Adresse"
 
-#: src/wx/audio_panel.cc:241
+#: src/wx/audio_panel.cc:243
 msgid "Hz"
 msgstr "Hz"
 
@@ -401,11 +450,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Ich möchte bei dieser Lautstärke spielen"
 
-#: src/wx/config_dialog.cc:289
+#: src/wx/config_dialog.cc:301
 msgid "IP address"
 msgstr "IP Adresse"
 
-#: src/wx/config_dialog.cc:361
+#: src/wx/config_dialog.cc:373
 msgid "IP address / host name"
 msgstr "IP Adresse / Host Name"
 
@@ -417,7 +466,7 @@ msgstr "Eingangs Gamma"
 msgid "Interop"
 msgstr "Interop"
 
-#: src/wx/config_dialog.cc:328
+#: src/wx/config_dialog.cc:340
 msgid "Issuer"
 msgstr "Herausgeber"
 
@@ -437,7 +486,7 @@ msgstr "KDM Email"
 msgid "Keep video in sequence"
 msgstr "Bildreihenfolge behalten"
 
-#: src/wx/audio_mapping_view.cc:183
+#: src/wx/audio_mapping_view.cc:272
 msgid "L"
 msgstr "L"
 
@@ -445,7 +494,7 @@ msgstr "L"
 msgid "Left crop"
 msgstr "Links beschneiden"
 
-#: src/wx/audio_mapping_view.cc:195
+#: src/wx/audio_mapping_view.cc:284
 msgid "Lfe"
 msgstr "LFE"
 
@@ -453,11 +502,11 @@ msgstr "LFE"
 msgid "Linearise input gamma curve for low values"
 msgstr "Linearisiere Eingangs Gamma für niedrige Werte"
 
-#: src/wx/audio_mapping_view.cc:199
+#: src/wx/audio_mapping_view.cc:288
 msgid "Ls"
 msgstr "SL"
 
-#: src/wx/config_dialog.cc:221 src/wx/film_editor.cc:180
+#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
 msgid "MBps"
 msgstr "MBps"
 
@@ -497,8 +546,8 @@ msgstr "Mehrere Inhalte ausgewählt"
 msgid "My Documents"
 msgstr "Meine Dokumente"
 
-#: src/wx/config_dialog.cc:527 src/wx/film_editor.cc:111
-#: src/wx/preset_colour_conversion_dialog.cc:38
+#: src/wx/cinema_dialog.cc:31 src/wx/config_dialog.cc:539
+#: src/wx/film_editor.cc:111 src/wx/preset_colour_conversion_dialog.cc:38
 msgid "Name"
 msgstr "Name"
 
@@ -506,6 +555,15 @@ msgstr "Name"
 msgid "New Film"
 msgstr "Neuer Film"
 
+#: src/wx/update_dialog.cc:36
+msgid "New versions of DCP-o-matic are available."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:319
+#, c-format
+msgid "No audio will be passed from content channel %d to DCP channel %d."
+msgstr ""
+
 #: src/wx/video_panel.cc:198
 msgid "No stretch"
 msgstr "Ohne Zerrung"
@@ -514,6 +572,10 @@ msgstr "Ohne Zerrung"
 msgid "None"
 msgstr "Kein"
 
+#: src/wx/audio_mapping_view.cc:131
+msgid "Off"
+msgstr ""
+
 #: src/wx/config_dialog.cc:119
 msgid "Outgoing mail server"
 msgstr "Ausgehender Mail Server"
@@ -531,7 +593,7 @@ msgstr "Paket Typ (e.g. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Mit Schwarz gefüllt auf %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:301
+#: src/wx/config_dialog.cc:313
 msgid "Password"
 msgstr "Passwort"
 
@@ -547,7 +609,7 @@ msgstr "Spitze"
 msgid "Play"
 msgstr "Abspielen"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Play length"
 msgstr "Abspiellänge"
 
@@ -555,11 +617,11 @@ msgstr "Abspiellänge"
 msgid "Please wait; audio is being analysed..."
 msgstr "Bitte warten; Ton wird analysiert..."
 
-#: src/wx/timing_panel.cc:37
+#: src/wx/timing_panel.cc:39
 msgid "Position"
 msgstr "Position"
 
-#: src/wx/audio_mapping_view.cc:187
+#: src/wx/audio_mapping_view.cc:276
 msgid "R"
 msgstr "R"
 
@@ -604,11 +666,15 @@ msgstr "Auflösung"
 msgid "Resume"
 msgstr "Neustart"
 
+#: src/wx/audio_mapping_view.cc:327
+msgid "Right click to change gain."
+msgstr ""
+
 #: src/wx/video_panel.cc:101
 msgid "Right crop"
 msgstr "Rechts beschneiden"
 
-#: src/wx/audio_mapping_view.cc:203
+#: src/wx/audio_mapping_view.cc:292
 msgid "Rs"
 msgstr "SR"
 
@@ -641,7 +707,7 @@ msgstr "Per Email senden"
 msgid "Server"
 msgstr "Server"
 
-#: src/wx/timecode.cc:65
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:60
 msgid "Set"
 msgstr "Setzen"
 
@@ -665,6 +731,11 @@ msgstr "Glätten"
 msgid "Snap"
 msgstr "Einschnappen"
 
+#: src/wx/update_dialog.cc:43
+#, fuzzy
+msgid "Stable version "
+msgstr "Inhalt Version"
+
 #: src/wx/film_editor.cc:185
 msgid "Standard"
 msgstr "Standard"
@@ -693,7 +764,7 @@ msgstr "Untertitel Spur"
 msgid "Subtitles"
 msgstr "Untertitel"
 
-#: src/wx/about_dialog.cc:131
+#: src/wx/about_dialog.cc:132
 msgid "Supported by"
 msgstr "Unterstützt durch"
 
@@ -701,7 +772,7 @@ msgstr "Unterstützt durch"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:293
+#: src/wx/config_dialog.cc:305
 msgid "Target path"
 msgstr "Zielpfad"
 
@@ -709,6 +780,11 @@ msgstr "Zielpfad"
 msgid "Territory (e.g. UK)"
 msgstr "Gebiet (z.B. UK)"
 
+#: src/wx/update_dialog.cc:48
+#, fuzzy
+msgid "Test version "
+msgstr "Inhalt Version"
+
 #: src/wx/content_menu.cc:223
 msgid ""
 "The content file(s) you specified are not the same as those that are "
@@ -743,7 +819,7 @@ msgstr "Zeitlinie"
 msgid "Timeline..."
 msgstr "Zeitlinie..."
 
-#: src/wx/timing_panel.cc:32
+#: src/wx/timing_panel.cc:34
 msgid "Timing"
 msgstr "Timing"
 
@@ -755,11 +831,11 @@ msgstr "Oben beschneiden"
 msgid "Translated by"
 msgstr "Ãœbersetzt von"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from end"
 msgstr "Schnitt vom Ende"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Trim from start"
 msgstr "Schnitt vom Anfang"
 
@@ -775,11 +851,15 @@ msgstr "Bis"
 msgid "Up"
 msgstr "Nach oben"
 
+#: src/wx/update_dialog.cc:27
+msgid "Update"
+msgstr ""
+
 #: src/wx/film_editor.cc:126
 msgid "Use DCI name"
 msgstr "DCI Name benutzen"
 
-#: src/wx/config_dialog.cc:357
+#: src/wx/config_dialog.cc:369
 msgid "Use all servers"
 msgstr "Alle Server benutzen"
 
@@ -791,7 +871,7 @@ msgstr "Beste benutzen"
 msgid "Use preset"
 msgstr "Preset benutzen"
 
-#: src/wx/config_dialog.cc:297
+#: src/wx/config_dialog.cc:309
 msgid "User name"
 msgstr "Benutzer Name"
 
@@ -799,6 +879,11 @@ msgstr "Benutzer Name"
 msgid "Video"
 msgstr "Bild"
 
+#: src/wx/timing_panel.cc:56
+#, fuzzy
+msgid "Video frame rate"
+msgstr "Bild Rate"
+
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Mit Untertitel"
@@ -850,7 +935,7 @@ msgstr ""
 msgid "audio"
 msgstr "Ton"
 
-#: src/wx/audio_panel.cc:239
+#: src/wx/audio_panel.cc:241
 msgid "channels"
 msgstr "Kanäle"
 
@@ -858,16 +943,16 @@ msgstr "Kanäle"
 msgid "counting..."
 msgstr "zähle..."
 
-#: src/wx/audio_panel.cc:62
+#: src/wx/audio_gain_dialog.cc:35 src/wx/audio_panel.cc:62
 msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:230
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:242
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:192
+#: src/wx/config_dialog.cc:204
 msgid "s"
 msgstr "s"
 
index 7db71545921d59291c829c275d8104926c374102..c854055491690e5aaf877eeba093d27b88b9a051 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: libdcpomatic-wx\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-09 03:00-0500\n"
 "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
 "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -36,11 +36,15 @@ msgstr ""
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(reinicia DCP-o-matic para ver el cambio de idioma)"
 
+#: src/wx/audio_mapping_view.cc:133
+msgid "-3dB"
+msgstr ""
+
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
 msgstr ""
 
-#: src/wx/audio_panel.cc:237
+#: src/wx/audio_panel.cc:239
 msgid "1 channel"
 msgstr "1 canal"
 
@@ -68,6 +72,10 @@ msgstr ""
 msgid "4K"
 msgstr ""
 
+#: src/wx/update_dialog.cc:34
+msgid "A new version of DCP-o-matic is available."
+msgstr ""
+
 #: src/wx/about_dialog.cc:30
 #, fuzzy
 msgid "About DCP-o-matic"
@@ -119,6 +127,19 @@ msgstr "Retardo del audio"
 msgid "Audio channels"
 msgstr "canales"
 
+#: src/wx/audio_mapping_view.cc:321
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d unaltered."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:324
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d with gain "
+"%.1fdB."
+msgstr ""
+
 #: src/wx/job_wrapper.cc:38
 #, c-format
 msgid "Bad setting for %s (%s)"
@@ -136,7 +157,7 @@ msgstr "Explorar..."
 msgid "But I have to use fader"
 msgstr "pero tengo que usar el fader a"
 
-#: src/wx/audio_mapping_view.cc:191
+#: src/wx/audio_mapping_view.cc:280
 msgid "C"
 msgstr ""
 
@@ -148,10 +169,23 @@ msgstr "Calcular..."
 msgid "Cancel"
 msgstr "Cancelar"
 
+#: src/wx/audio_gain_dialog.cc:26
+#, fuzzy
+msgid "Channel gain"
+msgstr "Canales"
+
 #: src/wx/audio_dialog.cc:44
 msgid "Channels"
 msgstr "Canales"
 
+#: src/wx/config_dialog.cc:143
+msgid "Check for testing updates as well as stable ones"
+msgstr ""
+
+#: src/wx/config_dialog.cc:139
+msgid "Check for updates on startup"
+msgstr ""
+
 #: src/wx/content_menu.cc:182
 #, fuzzy
 msgid "Choose a file"
@@ -188,7 +222,7 @@ msgstr "Contenido"
 msgid "Content Type"
 msgstr "Tipo de contenido"
 
-#: src/wx/audio_mapping_view.cc:180
+#: src/wx/audio_mapping_view.cc:269
 #, fuzzy
 msgid "Content channel"
 msgstr "1 canal"
@@ -226,7 +260,7 @@ msgstr "No se pudo crear el DCP: %s"
 msgid "Create in folder"
 msgstr "Crear en carpeta"
 
-#: src/wx/config_dialog.cc:332
+#: src/wx/config_dialog.cc:344
 #, fuzzy
 msgid "Creator"
 msgstr "Crear en carpeta"
@@ -265,35 +299,35 @@ msgstr "Preferencias DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Audio DCP-o-matic - %1"
 
-#: src/wx/config_dialog.cc:204
+#: src/wx/config_dialog.cc:216
 msgid "Default DCI name details"
 msgstr "Detalles por defecto del nombre DCI"
 
-#: src/wx/config_dialog.cc:217
+#: src/wx/config_dialog.cc:229
 #, fuzzy
 msgid "Default JPEG2000 bandwidth"
 msgstr "Ancho de banda JPEG2000"
 
-#: src/wx/config_dialog.cc:226
+#: src/wx/config_dialog.cc:238
 #, fuzzy
 msgid "Default audio delay"
 msgstr "Tipo de contenido"
 
-#: src/wx/config_dialog.cc:208
+#: src/wx/config_dialog.cc:220
 #, fuzzy
 msgid "Default container"
 msgstr "Tipo de contenido"
 
-#: src/wx/config_dialog.cc:212
+#: src/wx/config_dialog.cc:224
 #, fuzzy
 msgid "Default content type"
 msgstr "Tipo de contenido"
 
-#: src/wx/config_dialog.cc:196
+#: src/wx/config_dialog.cc:208
 msgid "Default directory for new films"
 msgstr "Carpeta por defecto para nuevas películas"
 
-#: src/wx/config_dialog.cc:188
+#: src/wx/config_dialog.cc:200
 #, fuzzy
 msgid "Default duration of still images"
 msgstr "Carpeta por defecto para nuevas películas"
@@ -324,11 +358,17 @@ msgstr "Editar..."
 msgid "Edit Screen..."
 msgstr "Editar..."
 
-#: src/wx/config_dialog.cc:205 src/wx/video_panel.cc:157
-#: src/wx/video_panel.cc:174 src/wx/editable_list.h:63
+#: src/wx/audio_mapping_view.cc:134 src/wx/config_dialog.cc:217
+#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
+#: src/wx/editable_list.h:63
 msgid "Edit..."
 msgstr "Editar..."
 
+#: src/wx/cinema_dialog.cc:35
+#, fuzzy
+msgid "Email address for KDM delivery"
+msgstr "Remitente para los emails de KDM"
+
 #: src/wx/servers_list_dialog.cc:30
 #, fuzzy
 msgid "Encoding Servers"
@@ -389,7 +429,11 @@ msgstr "De"
 msgid "From address for KDM emails"
 msgstr "Remitente para los emails de KDM"
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/audio_mapping_view.cc:132
+msgid "Full"
+msgstr ""
+
+#: src/wx/timing_panel.cc:42
 msgid "Full length"
 msgstr ""
 
@@ -397,6 +441,11 @@ msgstr ""
 msgid "Gain Calculator"
 msgstr "Calculadora de ganancia"
 
+#: src/wx/audio_gain_dialog.cc:31
+#, c-format
+msgid "Gain for content channel %d in DCP channel %d"
+msgstr ""
+
 #: src/wx/properties_dialog.cc:57
 msgid "Gb"
 msgstr "Gb"
@@ -413,7 +462,7 @@ msgstr ""
 msgid "Host name or IP address"
 msgstr "Nombre o dirección IP"
 
-#: src/wx/audio_panel.cc:241
+#: src/wx/audio_panel.cc:243
 msgid "Hz"
 msgstr "Hz"
 
@@ -421,11 +470,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Quiero reproducir con el fader a"
 
-#: src/wx/config_dialog.cc:289
+#: src/wx/config_dialog.cc:301
 msgid "IP address"
 msgstr "Dirección IP"
 
-#: src/wx/config_dialog.cc:361
+#: src/wx/config_dialog.cc:373
 #, fuzzy
 msgid "IP address / host name"
 msgstr "Dirección IP"
@@ -438,7 +487,7 @@ msgstr "Gamma de entrada"
 msgid "Interop"
 msgstr ""
 
-#: src/wx/config_dialog.cc:328
+#: src/wx/config_dialog.cc:340
 msgid "Issuer"
 msgstr "Emisor"
 
@@ -458,7 +507,7 @@ msgstr "Email KDM"
 msgid "Keep video in sequence"
 msgstr "Mantener el video secuencia"
 
-#: src/wx/audio_mapping_view.cc:183
+#: src/wx/audio_mapping_view.cc:272
 msgid "L"
 msgstr ""
 
@@ -466,7 +515,7 @@ msgstr ""
 msgid "Left crop"
 msgstr "Recorte izquierda"
 
-#: src/wx/audio_mapping_view.cc:195
+#: src/wx/audio_mapping_view.cc:284
 msgid "Lfe"
 msgstr ""
 
@@ -474,12 +523,12 @@ msgstr ""
 msgid "Linearise input gamma curve for low values"
 msgstr "Hacer lineal la curva de gamma de entrada para valores bajos"
 
-#: src/wx/audio_mapping_view.cc:199
+#: src/wx/audio_mapping_view.cc:288
 #, fuzzy
 msgid "Ls"
 msgstr "s"
 
-#: src/wx/config_dialog.cc:221 src/wx/film_editor.cc:180
+#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
 msgid "MBps"
 msgstr "MBps"
 
@@ -522,8 +571,8 @@ msgstr "Tipo de contenido"
 msgid "My Documents"
 msgstr "Mis documentos"
 
-#: src/wx/config_dialog.cc:527 src/wx/film_editor.cc:111
-#: src/wx/preset_colour_conversion_dialog.cc:38
+#: src/wx/cinema_dialog.cc:31 src/wx/config_dialog.cc:539
+#: src/wx/film_editor.cc:111 src/wx/preset_colour_conversion_dialog.cc:38
 msgid "Name"
 msgstr "Nombre"
 
@@ -531,6 +580,15 @@ msgstr "Nombre"
 msgid "New Film"
 msgstr "Nueva película"
 
+#: src/wx/update_dialog.cc:36
+msgid "New versions of DCP-o-matic are available."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:319
+#, c-format
+msgid "No audio will be passed from content channel %d to DCP channel %d."
+msgstr ""
+
 #: src/wx/video_panel.cc:198
 msgid "No stretch"
 msgstr "Sin deformar"
@@ -539,6 +597,10 @@ msgstr "Sin deformar"
 msgid "None"
 msgstr "Ninguno"
 
+#: src/wx/audio_mapping_view.cc:131
+msgid "Off"
+msgstr ""
+
 #: src/wx/config_dialog.cc:119
 #, fuzzy
 msgid "Outgoing mail server"
@@ -557,7 +619,7 @@ msgstr "Tipo de paquete (ej. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Completado con negro hasta %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:301
+#: src/wx/config_dialog.cc:313
 #, fuzzy
 msgid "Password"
 msgstr "Clave del TMS"
@@ -574,7 +636,7 @@ msgstr "Pico"
 msgid "Play"
 msgstr "Reproducir"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Play length"
 msgstr ""
 
@@ -582,11 +644,11 @@ msgstr ""
 msgid "Please wait; audio is being analysed..."
 msgstr "Por favor espere, el audio está siendo analizado..."
 
-#: src/wx/timing_panel.cc:37
+#: src/wx/timing_panel.cc:39
 msgid "Position"
 msgstr "Posición"
 
-#: src/wx/audio_mapping_view.cc:187
+#: src/wx/audio_mapping_view.cc:276
 msgid "R"
 msgstr ""
 
@@ -634,11 +696,15 @@ msgstr "Resolución"
 msgid "Resume"
 msgstr "Continuar"
 
+#: src/wx/audio_mapping_view.cc:327
+msgid "Right click to change gain."
+msgstr ""
+
 #: src/wx/video_panel.cc:101
 msgid "Right crop"
 msgstr "Recorte derecha"
 
-#: src/wx/audio_mapping_view.cc:203
+#: src/wx/audio_mapping_view.cc:292
 #, fuzzy
 msgid "Rs"
 msgstr "s"
@@ -674,7 +740,7 @@ msgstr "Enviar por email"
 msgid "Server"
 msgstr "Servidor"
 
-#: src/wx/timecode.cc:65
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:60
 msgid "Set"
 msgstr "Seleccionar"
 
@@ -698,6 +764,11 @@ msgstr "Suavizado"
 msgid "Snap"
 msgstr ""
 
+#: src/wx/update_dialog.cc:43
+#, fuzzy
+msgid "Stable version "
+msgstr "Tipo de contenido"
+
 #: src/wx/film_editor.cc:185
 msgid "Standard"
 msgstr "Estandard"
@@ -727,7 +798,7 @@ msgstr "Escala del subtítulo"
 msgid "Subtitles"
 msgstr "Subtítulos"
 
-#: src/wx/about_dialog.cc:131
+#: src/wx/about_dialog.cc:132
 msgid "Supported by"
 msgstr "Soportado por"
 
@@ -736,7 +807,7 @@ msgstr "Soportado por"
 msgid "TMS"
 msgstr "RMS"
 
-#: src/wx/config_dialog.cc:293
+#: src/wx/config_dialog.cc:305
 #, fuzzy
 msgid "Target path"
 msgstr "Ruta en el TMS"
@@ -745,6 +816,11 @@ msgstr "Ruta en el TMS"
 msgid "Territory (e.g. UK)"
 msgstr "Territorio (ej. ES)"
 
+#: src/wx/update_dialog.cc:48
+#, fuzzy
+msgid "Test version "
+msgstr "Tipo de contenido"
+
 #: src/wx/content_menu.cc:223
 msgid ""
 "The content file(s) you specified are not the same as those that are "
@@ -777,7 +853,7 @@ msgstr "Tiempo"
 msgid "Timeline..."
 msgstr "Linea de tiempo..."
 
-#: src/wx/timing_panel.cc:32
+#: src/wx/timing_panel.cc:34
 msgid "Timing"
 msgstr ""
 
@@ -789,12 +865,12 @@ msgstr "Recortar arriba"
 msgid "Translated by"
 msgstr "Traducido por"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 #, fuzzy
 msgid "Trim from end"
 msgstr "Recortar fotogramas"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 #, fuzzy
 msgid "Trim from start"
 msgstr "Recortar fotogramas"
@@ -811,11 +887,15 @@ msgstr "Hasta"
 msgid "Up"
 msgstr ""
 
+#: src/wx/update_dialog.cc:27
+msgid "Update"
+msgstr ""
+
 #: src/wx/film_editor.cc:126
 msgid "Use DCI name"
 msgstr "Usar el nombre DCI"
 
-#: src/wx/config_dialog.cc:357
+#: src/wx/config_dialog.cc:369
 msgid "Use all servers"
 msgstr ""
 
@@ -828,7 +908,7 @@ msgstr "Usar la mejor"
 msgid "Use preset"
 msgstr "Usar la mejor"
 
-#: src/wx/config_dialog.cc:297
+#: src/wx/config_dialog.cc:309
 #, fuzzy
 msgid "User name"
 msgstr "Usar el nombre DCI"
@@ -837,6 +917,11 @@ msgstr "Usar el nombre DCI"
 msgid "Video"
 msgstr "Vídeo"
 
+#: src/wx/timing_panel.cc:56
+#, fuzzy
+msgid "Video frame rate"
+msgstr "Velocidad DCP"
+
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Con subtítulos"
@@ -880,7 +965,7 @@ msgstr ""
 msgid "audio"
 msgstr "Audio"
 
-#: src/wx/audio_panel.cc:239
+#: src/wx/audio_panel.cc:241
 msgid "channels"
 msgstr "canales"
 
@@ -888,16 +973,16 @@ msgstr "canales"
 msgid "counting..."
 msgstr "contando..."
 
-#: src/wx/audio_panel.cc:62
+#: src/wx/audio_gain_dialog.cc:35 src/wx/audio_panel.cc:62
 msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:230
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:242
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:192
+#: src/wx/config_dialog.cc:204
 msgid "s"
 msgstr "s"
 
index 4af528c151da4d9ef76ef53ee9062058eb11160a..f8460ba46f3c8d7560217a0734e53cb2a901c8ba 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic FRENCH\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-11-25 19:28+0100\n"
 "Last-Translator: \n"
 "Language-Team: \n"
@@ -37,11 +37,15 @@ msgid "(restart DCP-o-matic to see language changes)"
 msgstr ""
 "(redémarrez DCP-o-matic pour que les changements de langue prennent effet)"
 
+#: src/wx/audio_mapping_view.cc:133
+msgid "-3dB"
+msgstr ""
+
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
 msgstr ""
 
-#: src/wx/audio_panel.cc:237
+#: src/wx/audio_panel.cc:239
 msgid "1 channel"
 msgstr "1 canal"
 
@@ -69,6 +73,10 @@ msgstr ""
 msgid "4K"
 msgstr ""
 
+#: src/wx/update_dialog.cc:34
+msgid "A new version of DCP-o-matic is available."
+msgstr ""
+
 #: src/wx/about_dialog.cc:30
 msgid "About DCP-o-matic"
 msgstr "À propos de DCP-o-matic"
@@ -117,6 +125,19 @@ msgstr "Flux audio"
 msgid "Audio channels"
 msgstr "Canaux audios"
 
+#: src/wx/audio_mapping_view.cc:321
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d unaltered."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:324
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d with gain "
+"%.1fdB."
+msgstr ""
+
 #: src/wx/job_wrapper.cc:38
 #, c-format
 msgid "Bad setting for %s (%s)"
@@ -134,7 +155,7 @@ msgstr "Parcourir..."
 msgid "But I have to use fader"
 msgstr "Je souhaite utiliser ce volume"
 
-#: src/wx/audio_mapping_view.cc:191
+#: src/wx/audio_mapping_view.cc:280
 msgid "C"
 msgstr "C"
 
@@ -146,10 +167,23 @@ msgstr "Calcul..."
 msgid "Cancel"
 msgstr "Annuler"
 
+#: src/wx/audio_gain_dialog.cc:26
+#, fuzzy
+msgid "Channel gain"
+msgstr "Canaux"
+
 #: src/wx/audio_dialog.cc:44
 msgid "Channels"
 msgstr "Canaux"
 
+#: src/wx/config_dialog.cc:143
+msgid "Check for testing updates as well as stable ones"
+msgstr ""
+
+#: src/wx/config_dialog.cc:139
+msgid "Check for updates on startup"
+msgstr ""
+
 #: src/wx/content_menu.cc:182
 #, fuzzy
 msgid "Choose a file"
@@ -184,7 +218,7 @@ msgstr "Contenu"
 msgid "Content Type"
 msgstr "Type de Contenu"
 
-#: src/wx/audio_mapping_view.cc:180
+#: src/wx/audio_mapping_view.cc:269
 msgid "Content channel"
 msgstr "Contenu audio"
 
@@ -220,7 +254,7 @@ msgstr "Impossible de créer le DCP : %s"
 msgid "Create in folder"
 msgstr "Créer dans le dossier"
 
-#: src/wx/config_dialog.cc:332
+#: src/wx/config_dialog.cc:344
 msgid "Creator"
 msgstr "Créateur"
 
@@ -258,32 +292,32 @@ msgstr "Préférences DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Son DCP-o-matic  - %s"
 
-#: src/wx/config_dialog.cc:204
+#: src/wx/config_dialog.cc:216
 msgid "Default DCI name details"
 msgstr "Détails du nom DCI par défaut"
 
-#: src/wx/config_dialog.cc:217
+#: src/wx/config_dialog.cc:229
 msgid "Default JPEG2000 bandwidth"
 msgstr "Qualité JPEG2000 par défaut"
 
-#: src/wx/config_dialog.cc:226
+#: src/wx/config_dialog.cc:238
 #, fuzzy
 msgid "Default audio delay"
 msgstr "Type de contenu par défaut"
 
-#: src/wx/config_dialog.cc:208
+#: src/wx/config_dialog.cc:220
 msgid "Default container"
 msgstr "Type de contenu par défaut"
 
-#: src/wx/config_dialog.cc:212
+#: src/wx/config_dialog.cc:224
 msgid "Default content type"
 msgstr "Type de contenu par défaut"
 
-#: src/wx/config_dialog.cc:196
+#: src/wx/config_dialog.cc:208
 msgid "Default directory for new films"
 msgstr "Dossier par défaut des nouveaux films"
 
-#: src/wx/config_dialog.cc:188
+#: src/wx/config_dialog.cc:200
 msgid "Default duration of still images"
 msgstr "Durée par défaut des images fixes"
 
@@ -312,11 +346,16 @@ msgstr "Éditer le cinéma"
 msgid "Edit Screen..."
 msgstr "Éditer la salle"
 
-#: src/wx/config_dialog.cc:205 src/wx/video_panel.cc:157
-#: src/wx/video_panel.cc:174 src/wx/editable_list.h:63
+#: src/wx/audio_mapping_view.cc:134 src/wx/config_dialog.cc:217
+#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
+#: src/wx/editable_list.h:63
 msgid "Edit..."
 msgstr "Éditer..."
 
+#: src/wx/cinema_dialog.cc:35
+msgid "Email address for KDM delivery"
+msgstr ""
+
 #: src/wx/servers_list_dialog.cc:30
 #, fuzzy
 msgid "Encoding Servers"
@@ -374,7 +413,11 @@ msgstr "À partir du"
 msgid "From address for KDM emails"
 msgstr ""
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/audio_mapping_view.cc:132
+msgid "Full"
+msgstr ""
+
+#: src/wx/timing_panel.cc:42
 msgid "Full length"
 msgstr ""
 
@@ -382,6 +425,11 @@ msgstr ""
 msgid "Gain Calculator"
 msgstr "Calculateur de gain"
 
+#: src/wx/audio_gain_dialog.cc:31
+#, c-format
+msgid "Gain for content channel %d in DCP channel %d"
+msgstr ""
+
 #: src/wx/properties_dialog.cc:57
 msgid "Gb"
 msgstr "Gb"
@@ -398,7 +446,7 @@ msgstr ""
 msgid "Host name or IP address"
 msgstr "Nom de l'hôte ou adresse IP"
 
-#: src/wx/audio_panel.cc:241
+#: src/wx/audio_panel.cc:243
 msgid "Hz"
 msgstr "Hz"
 
@@ -406,11 +454,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Je veux le jouer Ã  ce volume"
 
-#: src/wx/config_dialog.cc:289
+#: src/wx/config_dialog.cc:301
 msgid "IP address"
 msgstr "Adresse IP"
 
-#: src/wx/config_dialog.cc:361
+#: src/wx/config_dialog.cc:373
 #, fuzzy
 msgid "IP address / host name"
 msgstr "Adresse IP"
@@ -423,7 +471,7 @@ msgstr "Gamma d'entrée"
 msgid "Interop"
 msgstr ""
 
-#: src/wx/config_dialog.cc:328
+#: src/wx/config_dialog.cc:340
 msgid "Issuer"
 msgstr "Emetteur"
 
@@ -443,7 +491,7 @@ msgstr "e-mail des KDM"
 msgid "Keep video in sequence"
 msgstr "Garder la vidéo en séquence"
 
-#: src/wx/audio_mapping_view.cc:183
+#: src/wx/audio_mapping_view.cc:272
 msgid "L"
 msgstr "L"
 
@@ -451,7 +499,7 @@ msgstr "L"
 msgid "Left crop"
 msgstr "Découpe gauche"
 
-#: src/wx/audio_mapping_view.cc:195
+#: src/wx/audio_mapping_view.cc:284
 msgid "Lfe"
 msgstr "Lfe"
 
@@ -459,11 +507,11 @@ msgstr "Lfe"
 msgid "Linearise input gamma curve for low values"
 msgstr "Linéariser la courbe gamma d'entrée pour les bas niveaux"
 
-#: src/wx/audio_mapping_view.cc:199
+#: src/wx/audio_mapping_view.cc:288
 msgid "Ls"
 msgstr "Ls"
 
-#: src/wx/config_dialog.cc:221 src/wx/film_editor.cc:180
+#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
 msgid "MBps"
 msgstr "MBps"
 
@@ -506,8 +554,8 @@ msgstr "Type de contenu par défaut"
 msgid "My Documents"
 msgstr "Mes Documents"
 
-#: src/wx/config_dialog.cc:527 src/wx/film_editor.cc:111
-#: src/wx/preset_colour_conversion_dialog.cc:38
+#: src/wx/cinema_dialog.cc:31 src/wx/config_dialog.cc:539
+#: src/wx/film_editor.cc:111 src/wx/preset_colour_conversion_dialog.cc:38
 msgid "Name"
 msgstr "Nom"
 
@@ -515,6 +563,15 @@ msgstr "Nom"
 msgid "New Film"
 msgstr "Nouveau Film"
 
+#: src/wx/update_dialog.cc:36
+msgid "New versions of DCP-o-matic are available."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:319
+#, c-format
+msgid "No audio will be passed from content channel %d to DCP channel %d."
+msgstr ""
+
 #: src/wx/video_panel.cc:198
 msgid "No stretch"
 msgstr "Pas d'étirement"
@@ -523,6 +580,10 @@ msgstr "Pas d'étirement"
 msgid "None"
 msgstr "Aucun"
 
+#: src/wx/audio_mapping_view.cc:131
+msgid "Off"
+msgstr ""
+
 #: src/wx/config_dialog.cc:119
 msgid "Outgoing mail server"
 msgstr "Serveurs de messagerie sortante"
@@ -540,7 +601,7 @@ msgstr "Type de paquet (ex. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Enveloppe noire de %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:301
+#: src/wx/config_dialog.cc:313
 msgid "Password"
 msgstr "Mot de passe"
 
@@ -556,7 +617,7 @@ msgstr "Crête"
 msgid "Play"
 msgstr "Lecture"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Play length"
 msgstr ""
 
@@ -564,11 +625,11 @@ msgstr ""
 msgid "Please wait; audio is being analysed..."
 msgstr "Merci de patienter ; analyse de la piste son..."
 
-#: src/wx/timing_panel.cc:37
+#: src/wx/timing_panel.cc:39
 msgid "Position"
 msgstr "Position"
 
-#: src/wx/audio_mapping_view.cc:187
+#: src/wx/audio_mapping_view.cc:276
 msgid "R"
 msgstr "R"
 
@@ -613,11 +674,15 @@ msgstr "Résolution"
 msgid "Resume"
 msgstr "Reprendre"
 
+#: src/wx/audio_mapping_view.cc:327
+msgid "Right click to change gain."
+msgstr ""
+
 #: src/wx/video_panel.cc:101
 msgid "Right crop"
 msgstr "Découpe droite"
 
-#: src/wx/audio_mapping_view.cc:203
+#: src/wx/audio_mapping_view.cc:292
 msgid "Rs"
 msgstr "Rs"
 
@@ -650,7 +715,7 @@ msgstr "Envoyé par e-mail"
 msgid "Server"
 msgstr "Serveur"
 
-#: src/wx/timecode.cc:65
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:60
 msgid "Set"
 msgstr "Sélection"
 
@@ -674,6 +739,11 @@ msgstr "Lissage"
 msgid "Snap"
 msgstr ""
 
+#: src/wx/update_dialog.cc:43
+#, fuzzy
+msgid "Stable version "
+msgstr "Version du contenu"
+
 #: src/wx/film_editor.cc:185
 msgid "Standard"
 msgstr "Standard"
@@ -702,7 +772,7 @@ msgstr "Flux de sous-titre"
 msgid "Subtitles"
 msgstr "Sous-titres"
 
-#: src/wx/about_dialog.cc:131
+#: src/wx/about_dialog.cc:132
 msgid "Supported by"
 msgstr "Soutenu par"
 
@@ -710,7 +780,7 @@ msgstr "Soutenu par"
 msgid "TMS"
 msgstr "TMS"
 
-#: src/wx/config_dialog.cc:293
+#: src/wx/config_dialog.cc:305
 msgid "Target path"
 msgstr "Chemin d'accès"
 
@@ -718,6 +788,11 @@ msgstr "Chemin d'accès"
 msgid "Territory (e.g. UK)"
 msgstr "Territoire (ex. FR)"
 
+#: src/wx/update_dialog.cc:48
+#, fuzzy
+msgid "Test version "
+msgstr "Version du contenu"
+
 #: src/wx/content_menu.cc:223
 msgid ""
 "The content file(s) you specified are not the same as those that are "
@@ -749,7 +824,7 @@ msgstr "Timeline"
 msgid "Timeline..."
 msgstr "Timeline..."
 
-#: src/wx/timing_panel.cc:32
+#: src/wx/timing_panel.cc:34
 msgid "Timing"
 msgstr ""
 
@@ -761,11 +836,11 @@ msgstr "Découpe haut"
 msgid "Translated by"
 msgstr "Traduit par"
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 msgid "Trim from end"
 msgstr "Images coupées depuis la fin"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 msgid "Trim from start"
 msgstr "Images coupées depuis le début"
 
@@ -781,11 +856,15 @@ msgstr "Jusqu'au"
 msgid "Up"
 msgstr ""
 
+#: src/wx/update_dialog.cc:27
+msgid "Update"
+msgstr ""
+
 #: src/wx/film_editor.cc:126
 msgid "Use DCI name"
 msgstr "Utiliser le nom DCI"
 
-#: src/wx/config_dialog.cc:357
+#: src/wx/config_dialog.cc:369
 msgid "Use all servers"
 msgstr ""
 
@@ -797,7 +876,7 @@ msgstr "Automatique"
 msgid "Use preset"
 msgstr "Utiliser le préréglage"
 
-#: src/wx/config_dialog.cc:297
+#: src/wx/config_dialog.cc:309
 msgid "User name"
 msgstr "Nom d'utilisateur"
 
@@ -805,6 +884,11 @@ msgstr "Nom d'utilisateur"
 msgid "Video"
 msgstr "Vidéo"
 
+#: src/wx/timing_panel.cc:56
+#, fuzzy
+msgid "Video frame rate"
+msgstr "Cadence image"
+
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Avec sous-titres"
@@ -847,7 +931,7 @@ msgstr ""
 msgid "audio"
 msgstr "audio"
 
-#: src/wx/audio_panel.cc:239
+#: src/wx/audio_panel.cc:241
 msgid "channels"
 msgstr "canaux"
 
@@ -855,16 +939,16 @@ msgstr "canaux"
 msgid "counting..."
 msgstr "calcul..."
 
-#: src/wx/audio_panel.cc:62
+#: src/wx/audio_gain_dialog.cc:35 src/wx/audio_panel.cc:62
 msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:230
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:242
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:192
+#: src/wx/config_dialog.cc:204
 msgid "s"
 msgstr "s"
 
index bd7f5f1364784bd235bc694f9227b57bd203ee9d..5539710395db922307a7b76f679a5be3576c62fb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: IT VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-28 10:27+0100\n"
 "Last-Translator: Maci <macibro@gmail.com>\n"
 "Language-Team: \n"
@@ -34,11 +34,15 @@ msgstr ""
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
 
+#: src/wx/audio_mapping_view.cc:133
+msgid "-3dB"
+msgstr ""
+
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
 msgstr ""
 
-#: src/wx/audio_panel.cc:237
+#: src/wx/audio_panel.cc:239
 msgid "1 channel"
 msgstr "1 canale"
 
@@ -66,6 +70,10 @@ msgstr ""
 msgid "4K"
 msgstr ""
 
+#: src/wx/update_dialog.cc:34
+msgid "A new version of DCP-o-matic is available."
+msgstr ""
+
 #: src/wx/about_dialog.cc:30
 #, fuzzy
 msgid "About DCP-o-matic"
@@ -117,6 +125,19 @@ msgstr "Ritardo dell'audio"
 msgid "Audio channels"
 msgstr "canali"
 
+#: src/wx/audio_mapping_view.cc:321
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d unaltered."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:324
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d with gain "
+"%.1fdB."
+msgstr ""
+
 #: src/wx/job_wrapper.cc:38
 #, c-format
 msgid "Bad setting for %s (%s)"
@@ -134,7 +155,7 @@ msgstr "Sfoglia..."
 msgid "But I have to use fader"
 msgstr "Ma dovrò riprodurre con il fader a"
 
-#: src/wx/audio_mapping_view.cc:191
+#: src/wx/audio_mapping_view.cc:280
 msgid "C"
 msgstr ""
 
@@ -146,10 +167,23 @@ msgstr "Calcola..."
 msgid "Cancel"
 msgstr "Annulla"
 
+#: src/wx/audio_gain_dialog.cc:26
+#, fuzzy
+msgid "Channel gain"
+msgstr "Canali"
+
 #: src/wx/audio_dialog.cc:44
 msgid "Channels"
 msgstr "Canali"
 
+#: src/wx/config_dialog.cc:143
+msgid "Check for testing updates as well as stable ones"
+msgstr ""
+
+#: src/wx/config_dialog.cc:139
+msgid "Check for updates on startup"
+msgstr ""
+
 #: src/wx/content_menu.cc:182
 #, fuzzy
 msgid "Choose a file"
@@ -186,7 +220,7 @@ msgstr "Contenuto"
 msgid "Content Type"
 msgstr "Tipo di contenuto"
 
-#: src/wx/audio_mapping_view.cc:180
+#: src/wx/audio_mapping_view.cc:269
 #, fuzzy
 msgid "Content channel"
 msgstr "1 canale"
@@ -224,7 +258,7 @@ msgstr "Non posso creare il DCP: %s"
 msgid "Create in folder"
 msgstr "Crea nella cartella"
 
-#: src/wx/config_dialog.cc:332
+#: src/wx/config_dialog.cc:344
 #, fuzzy
 msgid "Creator"
 msgstr "Crea nella cartella"
@@ -263,35 +297,35 @@ msgstr "Preferenze DCP-o-matic"
 msgid "DCP-o-matic audio - %s"
 msgstr "Audio DCP-o-matic - %s"
 
-#: src/wx/config_dialog.cc:204
+#: src/wx/config_dialog.cc:216
 msgid "Default DCI name details"
 msgstr "Dettagli del nome di default DCI"
 
-#: src/wx/config_dialog.cc:217
+#: src/wx/config_dialog.cc:229
 #, fuzzy
 msgid "Default JPEG2000 bandwidth"
 msgstr "Banda passante JPEG2000"
 
-#: src/wx/config_dialog.cc:226
+#: src/wx/config_dialog.cc:238
 #, fuzzy
 msgid "Default audio delay"
 msgstr "Tipo di contenuto"
 
-#: src/wx/config_dialog.cc:208
+#: src/wx/config_dialog.cc:220
 #, fuzzy
 msgid "Default container"
 msgstr "Tipo di contenuto"
 
-#: src/wx/config_dialog.cc:212
+#: src/wx/config_dialog.cc:224
 #, fuzzy
 msgid "Default content type"
 msgstr "Tipo di contenuto"
 
-#: src/wx/config_dialog.cc:196
+#: src/wx/config_dialog.cc:208
 msgid "Default directory for new films"
 msgstr "Directory di default per i nuovi films"
 
-#: src/wx/config_dialog.cc:188
+#: src/wx/config_dialog.cc:200
 #, fuzzy
 msgid "Default duration of still images"
 msgstr "Directory di default per i nuovi films"
@@ -322,11 +356,16 @@ msgstr "Modifica..."
 msgid "Edit Screen..."
 msgstr "Modifica..."
 
-#: src/wx/config_dialog.cc:205 src/wx/video_panel.cc:157
-#: src/wx/video_panel.cc:174 src/wx/editable_list.h:63
+#: src/wx/audio_mapping_view.cc:134 src/wx/config_dialog.cc:217
+#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
+#: src/wx/editable_list.h:63
 msgid "Edit..."
 msgstr "Modifica..."
 
+#: src/wx/cinema_dialog.cc:35
+msgid "Email address for KDM delivery"
+msgstr ""
+
 #: src/wx/servers_list_dialog.cc:30
 #, fuzzy
 msgid "Encoding Servers"
@@ -386,7 +425,11 @@ msgstr ""
 msgid "From address for KDM emails"
 msgstr ""
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/audio_mapping_view.cc:132
+msgid "Full"
+msgstr ""
+
+#: src/wx/timing_panel.cc:42
 msgid "Full length"
 msgstr ""
 
@@ -394,6 +437,11 @@ msgstr ""
 msgid "Gain Calculator"
 msgstr "Calcolatore del guadagno audio"
 
+#: src/wx/audio_gain_dialog.cc:31
+#, c-format
+msgid "Gain for content channel %d in DCP channel %d"
+msgstr ""
+
 #: src/wx/properties_dialog.cc:57
 msgid "Gb"
 msgstr "Gb"
@@ -410,7 +458,7 @@ msgstr ""
 msgid "Host name or IP address"
 msgstr "Nome dell'Host o indirizzo IP"
 
-#: src/wx/audio_panel.cc:241
+#: src/wx/audio_panel.cc:243
 msgid "Hz"
 msgstr "Hz"
 
@@ -418,11 +466,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Sto usando il fader a"
 
-#: src/wx/config_dialog.cc:289
+#: src/wx/config_dialog.cc:301
 msgid "IP address"
 msgstr "Indirizzo IP"
 
-#: src/wx/config_dialog.cc:361
+#: src/wx/config_dialog.cc:373
 #, fuzzy
 msgid "IP address / host name"
 msgstr "Indirizzo IP"
@@ -435,7 +483,7 @@ msgstr ""
 msgid "Interop"
 msgstr ""
 
-#: src/wx/config_dialog.cc:328
+#: src/wx/config_dialog.cc:340
 msgid "Issuer"
 msgstr ""
 
@@ -455,7 +503,7 @@ msgstr ""
 msgid "Keep video in sequence"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:183
+#: src/wx/audio_mapping_view.cc:272
 msgid "L"
 msgstr ""
 
@@ -463,7 +511,7 @@ msgstr ""
 msgid "Left crop"
 msgstr "Taglio a sinistra"
 
-#: src/wx/audio_mapping_view.cc:195
+#: src/wx/audio_mapping_view.cc:284
 msgid "Lfe"
 msgstr ""
 
@@ -471,12 +519,12 @@ msgstr ""
 msgid "Linearise input gamma curve for low values"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:199
+#: src/wx/audio_mapping_view.cc:288
 #, fuzzy
 msgid "Ls"
 msgstr "s"
 
-#: src/wx/config_dialog.cc:221 src/wx/film_editor.cc:180
+#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
 msgid "MBps"
 msgstr "MBps"
 
@@ -519,8 +567,8 @@ msgstr "Tipo di contenuto"
 msgid "My Documents"
 msgstr "Documenti"
 
-#: src/wx/config_dialog.cc:527 src/wx/film_editor.cc:111
-#: src/wx/preset_colour_conversion_dialog.cc:38
+#: src/wx/cinema_dialog.cc:31 src/wx/config_dialog.cc:539
+#: src/wx/film_editor.cc:111 src/wx/preset_colour_conversion_dialog.cc:38
 msgid "Name"
 msgstr "Nome"
 
@@ -528,6 +576,15 @@ msgstr "Nome"
 msgid "New Film"
 msgstr "Nuovo Film"
 
+#: src/wx/update_dialog.cc:36
+msgid "New versions of DCP-o-matic are available."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:319
+#, c-format
+msgid "No audio will be passed from content channel %d to DCP channel %d."
+msgstr ""
+
 #: src/wx/video_panel.cc:198
 msgid "No stretch"
 msgstr ""
@@ -536,6 +593,10 @@ msgstr ""
 msgid "None"
 msgstr "Nessuno"
 
+#: src/wx/audio_mapping_view.cc:131
+msgid "Off"
+msgstr ""
+
 #: src/wx/config_dialog.cc:119
 #, fuzzy
 msgid "Outgoing mail server"
@@ -554,7 +615,7 @@ msgstr "Tipo di Package (es. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Riempito con nero a %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:301
+#: src/wx/config_dialog.cc:313
 #, fuzzy
 msgid "Password"
 msgstr "Password del TMS"
@@ -571,7 +632,7 @@ msgstr "Picco"
 msgid "Play"
 msgstr "Riproduci"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Play length"
 msgstr ""
 
@@ -579,11 +640,11 @@ msgstr ""
 msgid "Please wait; audio is being analysed..."
 msgstr "Attendere prego; sto analizzando l'audio..."
 
-#: src/wx/timing_panel.cc:37
+#: src/wx/timing_panel.cc:39
 msgid "Position"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:187
+#: src/wx/audio_mapping_view.cc:276
 msgid "R"
 msgstr ""
 
@@ -631,11 +692,15 @@ msgstr ""
 msgid "Resume"
 msgstr ""
 
+#: src/wx/audio_mapping_view.cc:327
+msgid "Right click to change gain."
+msgstr ""
+
 #: src/wx/video_panel.cc:101
 msgid "Right crop"
 msgstr "Taglio a destra"
 
-#: src/wx/audio_mapping_view.cc:203
+#: src/wx/audio_mapping_view.cc:292
 #, fuzzy
 msgid "Rs"
 msgstr "s"
@@ -671,7 +736,7 @@ msgstr ""
 msgid "Server"
 msgstr "Server"
 
-#: src/wx/timecode.cc:65
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:60
 msgid "Set"
 msgstr ""
 
@@ -695,6 +760,11 @@ msgstr "Levigatura"
 msgid "Snap"
 msgstr ""
 
+#: src/wx/update_dialog.cc:43
+#, fuzzy
+msgid "Stable version "
+msgstr "Tipo di contenuto"
+
 #: src/wx/film_editor.cc:185
 msgid "Standard"
 msgstr ""
@@ -724,7 +794,7 @@ msgstr "Scala dei Sottotitoli"
 msgid "Subtitles"
 msgstr "Sottotitoli"
 
-#: src/wx/about_dialog.cc:131
+#: src/wx/about_dialog.cc:132
 msgid "Supported by"
 msgstr ""
 
@@ -733,7 +803,7 @@ msgstr ""
 msgid "TMS"
 msgstr "RMS"
 
-#: src/wx/config_dialog.cc:293
+#: src/wx/config_dialog.cc:305
 #, fuzzy
 msgid "Target path"
 msgstr "Percorso di destinazione del TMS"
@@ -742,6 +812,11 @@ msgstr "Percorso di destinazione del TMS"
 msgid "Territory (e.g. UK)"
 msgstr "Nazione (es. UK)"
 
+#: src/wx/update_dialog.cc:48
+#, fuzzy
+msgid "Test version "
+msgstr "Tipo di contenuto"
+
 #: src/wx/content_menu.cc:223
 msgid ""
 "The content file(s) you specified are not the same as those that are "
@@ -774,7 +849,7 @@ msgstr "Tempo"
 msgid "Timeline..."
 msgstr ""
 
-#: src/wx/timing_panel.cc:32
+#: src/wx/timing_panel.cc:34
 msgid "Timing"
 msgstr ""
 
@@ -786,12 +861,12 @@ msgstr "Taglio in alto"
 msgid "Translated by"
 msgstr ""
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 #, fuzzy
 msgid "Trim from end"
 msgstr "Taglia fotogrammi"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 #, fuzzy
 msgid "Trim from start"
 msgstr "Taglia fotogrammi"
@@ -808,11 +883,15 @@ msgstr ""
 msgid "Up"
 msgstr ""
 
+#: src/wx/update_dialog.cc:27
+msgid "Update"
+msgstr ""
+
 #: src/wx/film_editor.cc:126
 msgid "Use DCI name"
 msgstr "Usa nome DCI"
 
-#: src/wx/config_dialog.cc:357
+#: src/wx/config_dialog.cc:369
 msgid "Use all servers"
 msgstr ""
 
@@ -825,7 +904,7 @@ msgstr "Usa la migliore"
 msgid "Use preset"
 msgstr "Usa la migliore"
 
-#: src/wx/config_dialog.cc:297
+#: src/wx/config_dialog.cc:309
 #, fuzzy
 msgid "User name"
 msgstr "Usa nome DCI"
@@ -834,6 +913,11 @@ msgstr "Usa nome DCI"
 msgid "Video"
 msgstr "Video"
 
+#: src/wx/timing_panel.cc:56
+#, fuzzy
+msgid "Video frame rate"
+msgstr "Frequenza fotogrammi del DCP"
+
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Con sottotitoli"
@@ -877,7 +961,7 @@ msgstr ""
 msgid "audio"
 msgstr "Audio"
 
-#: src/wx/audio_panel.cc:239
+#: src/wx/audio_panel.cc:241
 msgid "channels"
 msgstr "canali"
 
@@ -885,16 +969,16 @@ msgstr "canali"
 msgid "counting..."
 msgstr "conteggio..."
 
-#: src/wx/audio_panel.cc:62
+#: src/wx/audio_gain_dialog.cc:35 src/wx/audio_panel.cc:62
 msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:230
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:242
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:192
+#: src/wx/config_dialog.cc:204
 msgid "s"
 msgstr "s"
 
index 23fed10746e1abd27a093f1cf9644174d8d769a9..b57f19e31a45b41680cba43356623d97fb9928cb 100644 (file)
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: DCP-o-matic\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-01-05 18:00+0000\n"
+"POT-Creation-Date: 2014-01-07 20:01+0000\n"
 "PO-Revision-Date: 2013-04-09 10:13+0100\n"
 "Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
 "Language-Team: \n"
@@ -34,11 +34,15 @@ msgstr ""
 msgid "(restart DCP-o-matic to see language changes)"
 msgstr "(starta om DCP-o-matic för att se sprÃ¥kändringar)"
 
+#: src/wx/audio_mapping_view.cc:133
+msgid "-3dB"
+msgstr ""
+
 #: src/wx/colour_conversion_editor.cc:83
 msgid "1 / "
 msgstr ""
 
-#: src/wx/audio_panel.cc:237
+#: src/wx/audio_panel.cc:239
 msgid "1 channel"
 msgstr "1 kanal"
 
@@ -66,6 +70,10 @@ msgstr ""
 msgid "4K"
 msgstr ""
 
+#: src/wx/update_dialog.cc:34
+msgid "A new version of DCP-o-matic is available."
+msgstr ""
+
 #: src/wx/about_dialog.cc:30
 #, fuzzy
 msgid "About DCP-o-matic"
@@ -117,6 +125,19 @@ msgstr "Audio Fördröjning"
 msgid "Audio channels"
 msgstr "kanaler"
 
+#: src/wx/audio_mapping_view.cc:321
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d unaltered."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:324
+#, c-format
+msgid ""
+"Audio will be passed from content channel %d to DCP channel %d with gain "
+"%.1fdB."
+msgstr ""
+
 #: src/wx/job_wrapper.cc:38
 #, c-format
 msgid "Bad setting for %s (%s)"
@@ -134,7 +155,7 @@ msgstr "Bläddra..."
 msgid "But I have to use fader"
 msgstr "Men jag mÃ¥ste använda mixervolym"
 
-#: src/wx/audio_mapping_view.cc:191
+#: src/wx/audio_mapping_view.cc:280
 msgid "C"
 msgstr ""
 
@@ -146,10 +167,23 @@ msgstr "Beräkna..."
 msgid "Cancel"
 msgstr "Avbryt"
 
+#: src/wx/audio_gain_dialog.cc:26
+#, fuzzy
+msgid "Channel gain"
+msgstr "Kanaler"
+
 #: src/wx/audio_dialog.cc:44
 msgid "Channels"
 msgstr "Kanaler"
 
+#: src/wx/config_dialog.cc:143
+msgid "Check for testing updates as well as stable ones"
+msgstr ""
+
+#: src/wx/config_dialog.cc:139
+msgid "Check for updates on startup"
+msgstr ""
+
 #: src/wx/content_menu.cc:182
 #, fuzzy
 msgid "Choose a file"
@@ -186,7 +220,7 @@ msgstr "InnehÃ¥ll"
 msgid "Content Type"
 msgstr "InnehÃ¥llstyp"
 
-#: src/wx/audio_mapping_view.cc:180
+#: src/wx/audio_mapping_view.cc:269
 #, fuzzy
 msgid "Content channel"
 msgstr "1 kanal"
@@ -224,7 +258,7 @@ msgstr "Kunde inte skapa DCP: %s"
 msgid "Create in folder"
 msgstr "Skapa i katalog"
 
-#: src/wx/config_dialog.cc:332
+#: src/wx/config_dialog.cc:344
 #, fuzzy
 msgid "Creator"
 msgstr "Skapa i katalog"
@@ -263,35 +297,35 @@ msgstr "DCP-o-matic Inställningar"
 msgid "DCP-o-matic audio - %s"
 msgstr "DCP-o-matic audio - %s"
 
-#: src/wx/config_dialog.cc:204
+#: src/wx/config_dialog.cc:216
 msgid "Default DCI name details"
 msgstr "Detaljer om förvalda DCI-namn"
 
-#: src/wx/config_dialog.cc:217
+#: src/wx/config_dialog.cc:229
 #, fuzzy
 msgid "Default JPEG2000 bandwidth"
 msgstr "JPEG2000 bandbredd"
 
-#: src/wx/config_dialog.cc:226
+#: src/wx/config_dialog.cc:238
 #, fuzzy
 msgid "Default audio delay"
 msgstr "InnehÃ¥llstyp"
 
-#: src/wx/config_dialog.cc:208
+#: src/wx/config_dialog.cc:220
 #, fuzzy
 msgid "Default container"
 msgstr "InnehÃ¥llstyp"
 
-#: src/wx/config_dialog.cc:212
+#: src/wx/config_dialog.cc:224
 #, fuzzy
 msgid "Default content type"
 msgstr "InnehÃ¥llstyp"
 
-#: src/wx/config_dialog.cc:196
+#: src/wx/config_dialog.cc:208
 msgid "Default directory for new films"
 msgstr "Förvald katalog för nya filmer"
 
-#: src/wx/config_dialog.cc:188
+#: src/wx/config_dialog.cc:200
 #, fuzzy
 msgid "Default duration of still images"
 msgstr "Förvald katalog för nya filmer"
@@ -322,11 +356,16 @@ msgstr "Redigera..."
 msgid "Edit Screen..."
 msgstr "Redigera..."
 
-#: src/wx/config_dialog.cc:205 src/wx/video_panel.cc:157
-#: src/wx/video_panel.cc:174 src/wx/editable_list.h:63
+#: src/wx/audio_mapping_view.cc:134 src/wx/config_dialog.cc:217
+#: src/wx/video_panel.cc:157 src/wx/video_panel.cc:174
+#: src/wx/editable_list.h:63
 msgid "Edit..."
 msgstr "Redigera..."
 
+#: src/wx/cinema_dialog.cc:35
+msgid "Email address for KDM delivery"
+msgstr ""
+
 #: src/wx/servers_list_dialog.cc:30
 #, fuzzy
 msgid "Encoding Servers"
@@ -386,7 +425,11 @@ msgstr ""
 msgid "From address for KDM emails"
 msgstr ""
 
-#: src/wx/timing_panel.cc:40
+#: src/wx/audio_mapping_view.cc:132
+msgid "Full"
+msgstr ""
+
+#: src/wx/timing_panel.cc:42
 msgid "Full length"
 msgstr ""
 
@@ -394,6 +437,11 @@ msgstr ""
 msgid "Gain Calculator"
 msgstr "Volym Kalkylator"
 
+#: src/wx/audio_gain_dialog.cc:31
+#, c-format
+msgid "Gain for content channel %d in DCP channel %d"
+msgstr ""
+
 #: src/wx/properties_dialog.cc:57
 msgid "Gb"
 msgstr "Gb"
@@ -410,7 +458,7 @@ msgstr ""
 msgid "Host name or IP address"
 msgstr "Värd-namn eller IP-adress"
 
-#: src/wx/audio_panel.cc:241
+#: src/wx/audio_panel.cc:243
 msgid "Hz"
 msgstr "Hz"
 
@@ -418,11 +466,11 @@ msgstr "Hz"
 msgid "I want to play this back at fader"
 msgstr "Jag vill spela upp detta med mixervolym"
 
-#: src/wx/config_dialog.cc:289
+#: src/wx/config_dialog.cc:301
 msgid "IP address"
 msgstr "IP-adress"
 
-#: src/wx/config_dialog.cc:361
+#: src/wx/config_dialog.cc:373
 #, fuzzy
 msgid "IP address / host name"
 msgstr "IP-adress"
@@ -435,7 +483,7 @@ msgstr ""
 msgid "Interop"
 msgstr ""
 
-#: src/wx/config_dialog.cc:328
+#: src/wx/config_dialog.cc:340
 msgid "Issuer"
 msgstr ""
 
@@ -455,7 +503,7 @@ msgstr ""
 msgid "Keep video in sequence"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:183
+#: src/wx/audio_mapping_view.cc:272
 msgid "L"
 msgstr ""
 
@@ -463,7 +511,7 @@ msgstr ""
 msgid "Left crop"
 msgstr "Vänster beskärning"
 
-#: src/wx/audio_mapping_view.cc:195
+#: src/wx/audio_mapping_view.cc:284
 msgid "Lfe"
 msgstr ""
 
@@ -471,12 +519,12 @@ msgstr ""
 msgid "Linearise input gamma curve for low values"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:199
+#: src/wx/audio_mapping_view.cc:288
 #, fuzzy
 msgid "Ls"
 msgstr "s"
 
-#: src/wx/config_dialog.cc:221 src/wx/film_editor.cc:180
+#: src/wx/config_dialog.cc:233 src/wx/film_editor.cc:180
 msgid "MBps"
 msgstr "MBps"
 
@@ -519,8 +567,8 @@ msgstr "InnehÃ¥llstyp"
 msgid "My Documents"
 msgstr "Mina Dokument"
 
-#: src/wx/config_dialog.cc:527 src/wx/film_editor.cc:111
-#: src/wx/preset_colour_conversion_dialog.cc:38
+#: src/wx/cinema_dialog.cc:31 src/wx/config_dialog.cc:539
+#: src/wx/film_editor.cc:111 src/wx/preset_colour_conversion_dialog.cc:38
 msgid "Name"
 msgstr "Namn"
 
@@ -528,6 +576,15 @@ msgstr "Namn"
 msgid "New Film"
 msgstr "Ny Film"
 
+#: src/wx/update_dialog.cc:36
+msgid "New versions of DCP-o-matic are available."
+msgstr ""
+
+#: src/wx/audio_mapping_view.cc:319
+#, c-format
+msgid "No audio will be passed from content channel %d to DCP channel %d."
+msgstr ""
+
 #: src/wx/video_panel.cc:198
 msgid "No stretch"
 msgstr ""
@@ -536,6 +593,10 @@ msgstr ""
 msgid "None"
 msgstr "Inget"
 
+#: src/wx/audio_mapping_view.cc:131
+msgid "Off"
+msgstr ""
+
 #: src/wx/config_dialog.cc:119
 #, fuzzy
 msgid "Outgoing mail server"
@@ -554,7 +615,7 @@ msgstr "Förpackningstyp (ex. OV)"
 msgid "Padded with black to %dx%d (%.2f:1)\n"
 msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
 
-#: src/wx/config_dialog.cc:301
+#: src/wx/config_dialog.cc:313
 #, fuzzy
 msgid "Password"
 msgstr "TMS lösenord"
@@ -571,7 +632,7 @@ msgstr "Topp"
 msgid "Play"
 msgstr "Spela"
 
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
 msgid "Play length"
 msgstr ""
 
@@ -579,11 +640,11 @@ msgstr ""
 msgid "Please wait; audio is being analysed..."
 msgstr "Vänligen vänta; audio analyseras..."
 
-#: src/wx/timing_panel.cc:37
+#: src/wx/timing_panel.cc:39
 msgid "Position"
 msgstr ""
 
-#: src/wx/audio_mapping_view.cc:187
+#: src/wx/audio_mapping_view.cc:276
 msgid "R"
 msgstr ""
 
@@ -631,11 +692,15 @@ msgstr ""
 msgid "Resume"
 msgstr ""
 
+#: src/wx/audio_mapping_view.cc:327
+msgid "Right click to change gain."
+msgstr ""
+
 #: src/wx/video_panel.cc:101
 msgid "Right crop"
 msgstr "Höger beskärning"
 
-#: src/wx/audio_mapping_view.cc:203
+#: src/wx/audio_mapping_view.cc:292
 #, fuzzy
 msgid "Rs"
 msgstr "s"
@@ -671,7 +736,7 @@ msgstr ""
 msgid "Server"
 msgstr "Server"
 
-#: src/wx/timecode.cc:65
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:60
 msgid "Set"
 msgstr ""
 
@@ -695,6 +760,11 @@ msgstr "Utjämning"
 msgid "Snap"
 msgstr ""
 
+#: src/wx/update_dialog.cc:43
+#, fuzzy
+msgid "Stable version "
+msgstr "InnehÃ¥llstyp"
+
 #: src/wx/film_editor.cc:185
 msgid "Standard"
 msgstr ""
@@ -724,7 +794,7 @@ msgstr "Undertext Skalning"
 msgid "Subtitles"
 msgstr "Undertexter"
 
-#: src/wx/about_dialog.cc:131
+#: src/wx/about_dialog.cc:132
 msgid "Supported by"
 msgstr ""
 
@@ -733,7 +803,7 @@ msgstr ""
 msgid "TMS"
 msgstr "RMS"
 
-#: src/wx/config_dialog.cc:293
+#: src/wx/config_dialog.cc:305
 #, fuzzy
 msgid "Target path"
 msgstr "TMS mÃ¥lsökväg"
@@ -742,6 +812,11 @@ msgstr "TMS mÃ¥lsökväg"
 msgid "Territory (e.g. UK)"
 msgstr "OmrÃ¥de (ex. SV)"
 
+#: src/wx/update_dialog.cc:48
+#, fuzzy
+msgid "Test version "
+msgstr "InnehÃ¥llstyp"
+
 #: src/wx/content_menu.cc:223
 msgid ""
 "The content file(s) you specified are not the same as those that are "
@@ -774,7 +849,7 @@ msgstr "Tid"
 msgid "Timeline..."
 msgstr ""
 
-#: src/wx/timing_panel.cc:32
+#: src/wx/timing_panel.cc:34
 msgid "Timing"
 msgstr ""
 
@@ -786,12 +861,12 @@ msgstr "Övre beskärning"
 msgid "Translated by"
 msgstr ""
 
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
 #, fuzzy
 msgid "Trim from end"
 msgstr "Skippa bilder"
 
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
 #, fuzzy
 msgid "Trim from start"
 msgstr "Skippa bilder"
@@ -808,11 +883,15 @@ msgstr ""
 msgid "Up"
 msgstr ""
 
+#: src/wx/update_dialog.cc:27
+msgid "Update"
+msgstr ""
+
 #: src/wx/film_editor.cc:126
 msgid "Use DCI name"
 msgstr "Använd DCI-namnet"
 
-#: src/wx/config_dialog.cc:357
+#: src/wx/config_dialog.cc:369
 msgid "Use all servers"
 msgstr ""
 
@@ -825,7 +904,7 @@ msgstr "Använd bästa"
 msgid "Use preset"
 msgstr "Använd bästa"
 
-#: src/wx/config_dialog.cc:297
+#: src/wx/config_dialog.cc:309
 #, fuzzy
 msgid "User name"
 msgstr "Använd DCI-namnet"
@@ -834,6 +913,11 @@ msgstr "Använd DCI-namnet"
 msgid "Video"
 msgstr "Video"
 
+#: src/wx/timing_panel.cc:56
+#, fuzzy
+msgid "Video frame rate"
+msgstr "DCP bildhastighet"
+
 #: src/wx/subtitle_panel.cc:39
 msgid "With Subtitles"
 msgstr "Med Undertexter"
@@ -877,7 +961,7 @@ msgstr ""
 msgid "audio"
 msgstr "Audio"
 
-#: src/wx/audio_panel.cc:239
+#: src/wx/audio_panel.cc:241
 msgid "channels"
 msgstr "kanaler"
 
@@ -885,16 +969,16 @@ msgstr "kanaler"
 msgid "counting..."
 msgstr "räknar..."
 
-#: src/wx/audio_panel.cc:62
+#: src/wx/audio_gain_dialog.cc:35 src/wx/audio_panel.cc:62
 msgid "dB"
 msgstr "dB"
 
 #. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:230
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:242
 msgid "ms"
 msgstr "ms"
 
-#: src/wx/config_dialog.cc:192
+#: src/wx/config_dialog.cc:204
 msgid "s"
 msgstr "s"
 
index f3f841a43f84f210dee9e5f8961155abde4384ad..11510cd0f0ef7d1fa84fb3aaabca90131c493a26 100644 (file)
@@ -52,7 +52,7 @@ PropertiesDialog::PropertiesDialog (wxWindow* parent, shared_ptr<Film> film)
        _table->Add (_encoded, 1, wxALIGN_CENTER_VERTICAL);
 
        _frames->SetLabel (std_to_wx (lexical_cast<string> (_film->time_to_video_frames (_film->length()))));
-       double const disk = ((double) _film->j2k_bandwidth() / 8) * _film->length() / (TIME_HZ * 1073741824.0f);
+       double const disk = double (_film->required_disk_space()) / 1073741824.0f;
        stringstream s;
        s << fixed << setprecision (1) << disk << wx_to_std (_("Gb"));
        _disk->SetLabel (std_to_wx (s.str ()));
index b23ff2a39203842feac9805fb811d7b0e351bbfd..493650aae857a0046d152b91bd95b46f8caa5675 100644 (file)
@@ -26,7 +26,7 @@ using std::string;
 using std::cout;
 using boost::lexical_cast;
 
-DCPTimecode::DCPTimecode (wxWindow* parent)
+Timecode::Timecode (wxWindow* parent)
        : wxPanel (parent)
 {
        wxClientDC dc (parent);
@@ -69,11 +69,11 @@ DCPTimecode::DCPTimecode (wxWindow* parent)
 
        _fixed = add_label_to_sizer (_sizer, this, wxT ("42"), false);
        
-       _hours->Bind      (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&DCPTimecode::changed, this));
-       _minutes->Bind    (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&DCPTimecode::changed, this));
-       _seconds->Bind    (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&DCPTimecode::changed, this));
-       _frames->Bind     (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&DCPTimecode::changed, this));
-       _set_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DCPTimecode::set_clicked, this));
+       _hours->Bind      (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&Timecode::changed, this));
+       _minutes->Bind    (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&Timecode::changed, this));
+       _seconds->Bind    (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&Timecode::changed, this));
+       _frames->Bind     (wxEVT_COMMAND_TEXT_UPDATED,   boost::bind (&Timecode::changed, this));
+       _set_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&Timecode::set_clicked, this));
 
        _set_button->Enable (false);
 
@@ -83,7 +83,7 @@ DCPTimecode::DCPTimecode (wxWindow* parent)
 }
 
 void
-DCPTimecode::set (DCPTime t, int fps)
+Timecode::set (DCPTime t, int fps)
 {
        int const h = t / (3600 * TIME_HZ);
        t -= h * 3600 * TIME_HZ;
@@ -102,7 +102,7 @@ DCPTimecode::set (DCPTime t, int fps)
 }
 
 DCPTime
-DCPTimecode::get (int fps) const
+Timecode::get (int fps) const
 {
        DCPTime t = 0;
        string const h = wx_to_std (_hours->GetValue ());
@@ -118,20 +118,20 @@ DCPTimecode::get (int fps) const
 }
 
 void
-DCPTimecode::changed ()
+Timecode::changed ()
 {
        _set_button->Enable (true);
 }
 
 void
-DCPTimecode::set_clicked ()
+Timecode::set_clicked ()
 {
        Changed ();
        _set_button->Enable (false);
 }
 
 void
-DCPTimecode::set_editable (bool e)
+Timecode::set_editable (bool e)
 {
        _editable->Show (e);
        _fixed->Show (!e);
index f95740255ea44ffe105860f76cc6669e3f69b1e4..b13e8c3c084b9c35514e805f59e752927fe46ae1 100644 (file)
 #include <wx/wx.h>
 #include "lib/types.h"
 
-class DCPTimecode : public wxPanel
+class Timecode : public wxPanel
 {
 public:
-       DCPTimecode (wxWindow *);
+       Timecode (wxWindow *);
 
        void set (DCPTime, int);
        DCPTime get (int) const;
index 08334da4bfef8142a8425e6ee88485b0de47bd4f..34702463cd80cf7efac1436ebccfe5732868cd5e 100644 (file)
 #include "film_editor.h"
 
 using std::cout;
+using std::string;
 using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
+using boost::lexical_cast;
 
 TimingPanel::TimingPanel (FilmEditor* e)
        : FilmEditorPanel (e, _("Timing"))
@@ -35,26 +37,39 @@ TimingPanel::TimingPanel (FilmEditor* e)
        _sizer->Add (grid, 0, wxALL, 8);
 
        add_label_to_sizer (grid, this, _("Position"), true);
-       _position = new DCPTimecode (this);
+       _position = new Timecode (this);
        grid->Add (_position);
        add_label_to_sizer (grid, this, _("Full length"), true);
-       _full_length = new DCPTimecode (this);
+       _full_length = new Timecode (this);
        grid->Add (_full_length);
        add_label_to_sizer (grid, this, _("Trim from start"), true);
-       _trim_start = new DCPTimecode (this);
+       _trim_start = new Timecode (this);
        grid->Add (_trim_start);
        add_label_to_sizer (grid, this, _("Trim from end"), true);
-       _trim_end = new DCPTimecode (this);
+       _trim_end = new Timecode (this);
        grid->Add (_trim_end);
        add_label_to_sizer (grid, this, _("Play length"), true);
-       _play_length = new DCPTimecode (this);
+       _play_length = new Timecode (this);
        grid->Add (_play_length);
 
+       {
+               add_label_to_sizer (grid, this, _("Video frame rate"), true);
+               wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+               _video_frame_rate = new wxTextCtrl (this, wxID_ANY);
+               s->Add (_video_frame_rate, 1, wxEXPAND);
+               _set_video_frame_rate = new wxButton (this, wxID_ANY, _("Set"));
+               _set_video_frame_rate->Enable (false);
+               s->Add (_set_video_frame_rate, 0, wxLEFT | wxRIGHT, 8);
+               grid->Add (s, 1, wxEXPAND);
+       }
+
        _position->Changed.connect    (boost::bind (&TimingPanel::position_changed, this));
        _full_length->Changed.connect (boost::bind (&TimingPanel::full_length_changed, this));
        _trim_start->Changed.connect  (boost::bind (&TimingPanel::trim_start_changed, this));
        _trim_end->Changed.connect    (boost::bind (&TimingPanel::trim_end_changed, this));
        _play_length->Changed.connect (boost::bind (&TimingPanel::play_length_changed, this));
+       _video_frame_rate->Bind       (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&TimingPanel::video_frame_rate_changed, this));
+       _set_video_frame_rate->Bind   (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&TimingPanel::set_video_frame_rate, this));
 }
 
 void
@@ -72,7 +87,7 @@ TimingPanel::film_content_changed (int property)
                } else {
                        _position->set (0, 24);
                }
-       } else if (property == ContentProperty::LENGTH) {
+       } else if (property == ContentProperty::LENGTH || property == VideoContentProperty::VIDEO_FRAME_RATE) {
                if (content) {
                        _full_length->set (content->full_length (), _editor->film()->video_frame_rate ());
                        _play_length->set (content->length_after_trim (), _editor->film()->video_frame_rate ());
@@ -96,11 +111,26 @@ TimingPanel::film_content_changed (int property)
                        _trim_end->set (0, 24);
                        _play_length->set (0, 24);
                }
-       }       
+       }
+
+       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 (lexical_cast<string> (vc->video_frame_rate ())));
+                       } else {
+                               _video_frame_rate->SetValue ("24");
+                       }
+               } else {
+                       _video_frame_rate->SetValue ("24");
+               }
+       }
 
        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 (ic && !ic->still ());
+       _set_video_frame_rate->Enable (false);
 }
 
 void
@@ -152,6 +182,25 @@ TimingPanel::play_length_changed ()
        }
 }
 
+void
+TimingPanel::video_frame_rate_changed ()
+{
+       _set_video_frame_rate->Enable (true);
+}
+
+void
+TimingPanel::set_video_frame_rate ()
+{
+       ContentList c = _editor->selected_content ();
+       if (c.size() == 1) {
+               shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (c.front ());
+               if (ic) {
+                       ic->set_video_frame_rate (lexical_cast<float> (wx_to_std (_video_frame_rate->GetValue ())));
+                       _set_video_frame_rate->Enable (false);
+               }
+       }
+}
+
 void
 TimingPanel::content_selection_changed ()
 {
@@ -164,9 +213,11 @@ TimingPanel::content_selection_changed ()
        _trim_start->Enable (single);
        _trim_end->Enable (single);
        _play_length->Enable (single);
+       _video_frame_rate->Enable (single);
        
        film_content_changed (ContentProperty::POSITION);
        film_content_changed (ContentProperty::LENGTH);
        film_content_changed (ContentProperty::TRIM_START);
        film_content_changed (ContentProperty::TRIM_END);
+       film_content_changed (VideoContentProperty::VIDEO_FRAME_RATE);
 }
index 7fea45eb5c4982ead55940d3cced32f83a978053..d9696a20135671a711fe27a14bc2bd5565df237a 100644 (file)
@@ -19,7 +19,7 @@
 
 #include "film_editor_panel.h"
 
-class DCPTimecode;
+class Timecode;
 
 class TimingPanel : public FilmEditorPanel
 {
@@ -35,10 +35,14 @@ private:
        void trim_start_changed ();
        void trim_end_changed ();
        void play_length_changed ();
+       void video_frame_rate_changed ();
+       void set_video_frame_rate ();
        
-       DCPTimecode* _position;
-       DCPTimecode* _full_length;
-       DCPTimecode* _trim_start;
-       DCPTimecode* _trim_end;
-       DCPTimecode* _play_length;
+       Timecode* _position;
+       Timecode* _full_length;
+       Timecode* _trim_start;
+       Timecode* _trim_end;
+       Timecode* _play_length;
+       wxTextCtrl* _video_frame_rate;
+       wxButton* _set_video_frame_rate;
 };
diff --git a/src/wx/update_dialog.cc b/src/wx/update_dialog.cc
new file mode 100644 (file)
index 0000000..271c417
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+    Copyright (C) 2012 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 <wx/hyperlink.h>
+#include "update_dialog.h"
+#include "wx_util.h"
+
+using std::string;
+
+UpdateDialog::UpdateDialog (wxWindow* parent, string stable, string test)
+       : wxDialog (parent, wxID_ANY, _("Update"))
+{
+       wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL);
+
+       wxStaticText* message;
+
+       if (test.empty ()) {
+               message = new wxStaticText (this, wxID_ANY, _("A new version of DCP-o-matic is available."));
+       } else {
+               message = new wxStaticText (this, wxID_ANY, _("New versions of DCP-o-matic are available."));
+       }
+
+       overall_sizer->Add (message, 1, wxTOP | wxLEFT | wxRIGHT, DCPOMATIC_DIALOG_BORDER);
+
+       wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
+
+       add_label_to_sizer (table, this, _("Stable version ") + std_to_wx (stable), true);
+       wxHyperlinkCtrl* h = new wxHyperlinkCtrl (this, wxID_ANY, "dcpomatic.com/download", "http://dcpomatic.com/download");
+       table->Add (h);
+       
+       if (!test.empty ()) {
+               add_label_to_sizer (table, this, _("Test version ") + std_to_wx (test), true);
+               wxHyperlinkCtrl* h = new wxHyperlinkCtrl (this, wxID_ANY, "dcpomatic.com/test-download", "http://dcpomatic.com/test-download");
+               table->Add (h);
+       }
+       
+       overall_sizer->Add (table, 1, wxEXPAND | wxLEFT | wxRIGHT, DCPOMATIC_DIALOG_BORDER);
+
+       wxSizer* buttons = CreateButtonSizer (wxOK);
+       if (buttons) {
+               overall_sizer->Add (buttons, 1, wxEXPAND | wxALL);
+       }
+       
+       SetSizerAndFit (overall_sizer);
+}
diff --git a/src/wx/update_dialog.h b/src/wx/update_dialog.h
new file mode 100644 (file)
index 0000000..d9c7b85
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    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 <wx/wx.h>
+
+class UpdateDialog : public wxDialog
+{
+public:
+       UpdateDialog (wxWindow *, std::string, std::string);
+};
+
index dc8a07b997ef29ecfc6bc1a303cf6840ee9a2b86..9de32d39ebdb1b769c074a1443d8977e174436f7 100644 (file)
@@ -6,6 +6,7 @@ import i18n
 sources = """
           about_dialog.cc
           audio_dialog.cc
+          audio_gain_dialog.cc
           audio_mapping_view.cc
           audio_panel.cc
           audio_plot.cc
@@ -38,6 +39,7 @@ sources = """
           timeline.cc
           timeline_dialog.cc
           timing_panel.cc
+          update_dialog.cc
           video_panel.cc
           wx_util.cc
           wx_ui_signaller.cc
diff --git a/test/audio_mapping_test.cc b/test/audio_mapping_test.cc
new file mode 100644 (file)
index 0000000..a2a7410
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+    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/test/unit_test.hpp>
+#include "lib/audio_mapping.h"
+#include "lib/util.h"
+
+/* Basic tests of the AudioMapping class, which itself
+   doesn't really do much.
+*/
+BOOST_AUTO_TEST_CASE (audio_mapping_test)
+{
+       AudioMapping none;
+       BOOST_CHECK_EQUAL (none.content_channels(), 0);
+
+       AudioMapping four (4);
+       BOOST_CHECK_EQUAL (four.content_channels(), 4);
+       four.make_default ();
+
+       for (int i = 0; i < 4; ++i) {
+               for (int j = 0; j < MAX_AUDIO_CHANNELS; ++j) {
+                       BOOST_CHECK_EQUAL (four.get (i, static_cast<libdcp::Channel> (j)), i == j ? 1 : 0);
+               }
+       }
+
+       four.set (0, libdcp::RIGHT, 1);
+       BOOST_CHECK_EQUAL (four.get (0, libdcp::RIGHT), 1);
+}
index 86bcc5a6939889bcfec87387c682256ad23f4cb6..6abcf6e22aedf95a0dec879a05746accf4a5d443 100644 (file)
@@ -35,6 +35,9 @@ BOOST_AUTO_TEST_CASE (stream_test)
        root->add_child("Id")->add_child_text ("4");
        root->add_child("FrameRate")->add_child_text ("44100");
        root->add_child("Channels")->add_child_text ("2");
+
+       /* This is the state file version 5 description of the mapping */
+       
        xmlpp::Element* mapping = root->add_child("Mapping");
        mapping->add_child("ContentChannels")->add_child_text ("2");
        {
@@ -62,32 +65,19 @@ BOOST_AUTO_TEST_CASE (stream_test)
                map->add_child("DCP")->add_child_text ("2");
        }
                
-       FFmpegAudioStream a (shared_ptr<cxml::Node> (new cxml::Node (root)), Film::state_version);
+       FFmpegAudioStream a (shared_ptr<cxml::Node> (new cxml::Node (root)), 5);
 
        BOOST_CHECK_EQUAL (a.id, 4);
        BOOST_CHECK_EQUAL (a.frame_rate, 44100);
        BOOST_CHECK_EQUAL (a.channels, 2);
        BOOST_CHECK_EQUAL (a.name, "hello there world");
        BOOST_CHECK_EQUAL (a.mapping.content_channels(), 2);
-       BOOST_CHECK_EQUAL (a.mapping.content_to_dcp().size(), 4);
-
-       list<pair<int, libdcp::Channel> > m = a.mapping.content_to_dcp ();
-       list<pair<int, libdcp::Channel> >::iterator i = m.begin();
-
-       BOOST_CHECK_EQUAL (i->first, 0);
-       BOOST_CHECK_EQUAL (i->second, libdcp::LEFT);
-       ++i;
-       
-       BOOST_CHECK_EQUAL (i->first, 0);
-       BOOST_CHECK_EQUAL (i->second, libdcp::CENTRE);
-       ++i;
-       
-       BOOST_CHECK_EQUAL (i->first, 1);
-       BOOST_CHECK_EQUAL (i->second, libdcp::RIGHT);
-       ++i;
 
-       BOOST_CHECK_EQUAL (i->first, 1);
-       BOOST_CHECK_EQUAL (i->second, libdcp::CENTRE);
-       ++i;
+       BOOST_CHECK_EQUAL (a.mapping.get (0, libdcp::LEFT), 1);
+       BOOST_CHECK_EQUAL (a.mapping.get (0, libdcp::RIGHT), 0);
+       BOOST_CHECK_EQUAL (a.mapping.get (0, libdcp::CENTRE), 1);
+       BOOST_CHECK_EQUAL (a.mapping.get (1, libdcp::LEFT), 0);
+       BOOST_CHECK_EQUAL (a.mapping.get (1, libdcp::RIGHT), 1);
+       BOOST_CHECK_EQUAL (a.mapping.get (1, libdcp::CENTRE), 1);
 }
 
index 3c7484fcdb48f17521bbf626fa8544785d8de2dd..a35a6cbf573b8605ea072ce19b10c20156c04472 100644 (file)
@@ -18,6 +18,7 @@ def build(bld):
                  4k_test.cc
                  audio_analysis_test.cc
                  audio_delay_test.cc
+                 audio_mapping_test.cc
                  audio_merger_test.cc
                  black_fill_test.cc
                  client_server_test.cc
diff --git a/wscript b/wscript
index b4bf67da6dc057cfa960fd6a0bd9f70fbf94d2c7..3f7427cd2aa14c78e892523f52050b3f3d185a40 100644 (file)
--- a/wscript
+++ b/wscript
@@ -3,7 +3,7 @@ import os
 import sys
 
 APPNAME = 'dcpomatic'
-VERSION = '1.58pre'
+VERSION = '1.61.2pre'
 
 def options(opt):
     opt.load('compiler_cxx')
@@ -15,6 +15,7 @@ def options(opt):
     opt.add_option('--static', action='store_true', default=False, help='build statically, and link statically to libdcp and FFmpeg')
     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')
 
 def pkg_config_args(conf):
     if conf.env.STATIC:
@@ -43,6 +44,10 @@ def configure(conf):
     else:
         conf.env.append_value('CXXFLAGS', '-O2')
 
+    if conf.options.address_sanitizer:
+        conf.env.append_value('CXXFLAGS', ['-fsanitize=address', '-fno-omit-frame-pointer'])
+        conf.env.append_value('LINKFLAGS', ['-fsanitize=address'])
+
     # Windows-specific
     if conf.env.TARGET_WINDOWS:
         conf.env.append_value('CXXFLAGS', ['-DDCPOMATIC_WINDOWS', '-DWIN32_LEAN_AND_MEAN', '-DBOOST_USE_WINDOWS_H', '-DUNICODE', '-DBOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN'])