summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-10-16 16:30:11 +0100
committerCarl Hetherington <cth@carlh.net>2014-10-16 16:30:11 +0100
commit0b6c6de07f9a3aa28c2e8ca8ef30340e3fa1bfc6 (patch)
tree075a7a604bbd4e072ec1b07481d4eb82ed7ffd34 /src
parent42a122334d594b824c666e5263168386a76801cc (diff)
parent016a98b18d01276a1e603885a25785e7389f14d9 (diff)
Merge branch 'master' into 12bit
Diffstat (limited to 'src')
-rw-r--r--src/lib/analyse_audio_job.cc8
-rw-r--r--src/lib/analyse_audio_job.h1
-rw-r--r--src/lib/audio_analysis.cc8
-rw-r--r--src/lib/audio_decoder.cc2
-rw-r--r--src/lib/colour_conversion.cc1
-rw-r--r--src/lib/compose.hpp4
-rw-r--r--src/lib/config.cc55
-rw-r--r--src/lib/config.h58
-rw-r--r--src/lib/content.cc4
-rw-r--r--src/lib/cross.cc2
-rw-r--r--src/lib/dcp_video_frame.cc9
-rw-r--r--src/lib/encoder.cc1
-rw-r--r--src/lib/examine_content_job.cc6
-rw-r--r--src/lib/examine_content_job.h1
-rw-r--r--src/lib/ffmpeg.cc1
-rw-r--r--src/lib/ffmpeg_content.cc6
-rw-r--r--src/lib/ffmpeg_decoder.cc12
-rw-r--r--src/lib/ffmpeg_examiner.cc10
-rw-r--r--src/lib/film.cc35
-rw-r--r--src/lib/filter_graph.cc6
-rw-r--r--src/lib/frame_rate_change.cc10
-rw-r--r--src/lib/frame_rate_change.h2
-rw-r--r--src/lib/image.cc1
-rw-r--r--src/lib/image_content.cc4
-rw-r--r--src/lib/image_proxy.cc25
-rw-r--r--src/lib/image_proxy.h1
-rw-r--r--src/lib/internet.cc11
-rw-r--r--src/lib/job.cc27
-rw-r--r--src/lib/job.h2
-rw-r--r--src/lib/json_server.cc193
-rw-r--r--src/lib/kdm.cc27
-rw-r--r--src/lib/log.cc5
-rw-r--r--src/lib/md5_digester.cc5
-rw-r--r--src/lib/player.cc3
-rw-r--r--src/lib/playlist.cc2
-rw-r--r--src/lib/po/de_DE.po221
-rw-r--r--src/lib/po/es_ES.po209
-rw-r--r--src/lib/po/fr_FR.po264
-rw-r--r--src/lib/po/it_IT.po211
-rw-r--r--src/lib/po/nl_NL.po226
-rw-r--r--src/lib/po/sv_SE.po209
-rw-r--r--src/lib/ratio.cc18
-rw-r--r--src/lib/ratio.h1
-rw-r--r--src/lib/safe_stringstream.cc (renamed from src/lib/json_server.h)14
-rw-r--r--src/lib/safe_stringstream.h115
-rw-r--r--src/lib/scp_dcp_job.cc14
-rw-r--r--src/lib/scp_dcp_job.h1
-rw-r--r--src/lib/send_kdm_email_job.cc6
-rw-r--r--src/lib/send_kdm_email_job.h1
-rw-r--r--src/lib/server.cc19
-rw-r--r--src/lib/server_finder.cc32
-rw-r--r--src/lib/sndfile_content.cc4
-rw-r--r--src/lib/stack.cpp1
-rw-r--r--src/lib/subtitle.cc14
-rw-r--r--src/lib/subtitle_content.cc48
-rw-r--r--src/lib/subtitle_content.h21
-rw-r--r--src/lib/transcode_job.cc10
-rw-r--r--src/lib/transcode_job.h1
-rw-r--r--src/lib/ui_signaller.h7
-rw-r--r--src/lib/update.cc8
-rw-r--r--src/lib/util.cc95
-rw-r--r--src/lib/util.h2
-rw-r--r--src/lib/video_content.cc141
-rw-r--r--src/lib/video_content.h45
-rw-r--r--src/lib/video_content_scale.cc171
-rw-r--r--src/lib/video_content_scale.h77
-rw-r--r--src/lib/writer.cc16
-rw-r--r--src/lib/wscript9
-rw-r--r--src/tools/dcpomatic.cc455
-rw-r--r--src/tools/dcpomatic_batch.cc51
-rw-r--r--src/tools/dcpomatic_cli.cc16
-rw-r--r--src/tools/dcpomatic_kdm.cc4
-rw-r--r--src/tools/dcpomatic_server_cli.cc1
-rw-r--r--src/tools/po/de_DE.po171
-rw-r--r--src/tools/po/es_ES.po164
-rw-r--r--src/tools/po/fr_FR.po184
-rw-r--r--src/tools/po/it_IT.po152
-rw-r--r--src/tools/po/nl_NL.po173
-rw-r--r--src/tools/po/sv_SE.po160
-rw-r--r--src/wx/about_dialog.cc12
-rw-r--r--src/wx/audio_plot.cc8
-rw-r--r--src/wx/colour_conversion_editor.cc4
-rw-r--r--src/wx/config_dialog.cc181
-rw-r--r--src/wx/dolby_certificate_dialog.cc48
-rw-r--r--src/wx/dolby_certificate_dialog.h4
-rw-r--r--src/wx/doremi_certificate_dialog.cc13
-rw-r--r--src/wx/doremi_certificate_dialog.h2
-rw-r--r--src/wx/editable_list.h21
-rw-r--r--src/wx/film_editor.cc78
-rw-r--r--src/wx/film_editor.h8
-rw-r--r--src/wx/film_viewer.cc6
-rw-r--r--src/wx/film_viewer.h2
-rw-r--r--src/wx/hints_dialog.cc33
-rw-r--r--src/wx/job_manager_view.cc15
-rw-r--r--src/wx/job_manager_view.h1
-rw-r--r--src/wx/job_wrapper.cc1
-rw-r--r--src/wx/kdm_dialog.cc19
-rw-r--r--src/wx/po/de_DE.po276
-rw-r--r--src/wx/po/es_ES.po254
-rw-r--r--src/wx/po/fr_FR.po344
-rw-r--r--src/wx/po/it_IT.po256
-rw-r--r--src/wx/po/nl_NL.po360
-rw-r--r--src/wx/po/sv_SE.po256
-rw-r--r--src/wx/properties_dialog.cc6
-rw-r--r--src/wx/subtitle_panel.cc47
-rw-r--r--src/wx/subtitle_panel.h6
-rw-r--r--src/wx/timecode.cc10
-rw-r--r--src/wx/timecode.h1
-rw-r--r--src/wx/timing_panel.cc162
-rw-r--r--src/wx/video_panel.cc27
-rw-r--r--src/wx/wscript3
-rw-r--r--src/wx/wx_util.cc20
-rw-r--r--src/wx/wx_util.h1
113 files changed, 3869 insertions, 2926 deletions
diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc
index bfe0ed61f..ab985bdf7 100644
--- a/src/lib/analyse_audio_job.cc
+++ b/src/lib/analyse_audio_job.cc
@@ -48,12 +48,6 @@ AnalyseAudioJob::name () const
return _("Analyse audio");
}
-string
-AnalyseAudioJob::json_name () const
-{
- return N_("analyse_audio");
-}
-
void
AnalyseAudioJob::run ()
{
@@ -93,7 +87,7 @@ AnalyseAudioJob::audio (shared_ptr<const AudioBuffers> b, Time)
for (int j = 0; j < b->channels(); ++j) {
float s = b->data(j)[i];
if (fabsf (s) < 10e-7) {
- /* stringstream can't serialise and recover inf or -inf, so prevent such
+ /* SafeStringStream can't serialise and recover inf or -inf, so prevent such
values by replacing with this (140dB down) */
s = 10e-7;
}
diff --git a/src/lib/analyse_audio_job.h b/src/lib/analyse_audio_job.h
index 3e376634c..3d4881983 100644
--- a/src/lib/analyse_audio_job.h
+++ b/src/lib/analyse_audio_job.h
@@ -30,7 +30,6 @@ public:
AnalyseAudioJob (boost::shared_ptr<const Film>, boost::shared_ptr<AudioContent>);
std::string name () const;
- std::string json_name () const;
void run ();
private:
diff --git a/src/lib/audio_analysis.cc b/src/lib/audio_analysis.cc
index 98d092726..9f92bdb50 100644
--- a/src/lib/audio_analysis.cc
+++ b/src/lib/audio_analysis.cc
@@ -21,6 +21,7 @@
#include <cmath>
#include <cassert>
#include <cstdio>
+#include <iostream>
#include <boost/filesystem.hpp>
#include "audio_analysis.h"
#include "cross.h"
@@ -43,7 +44,10 @@ AudioPoint::AudioPoint ()
AudioPoint::AudioPoint (FILE* f)
{
for (int i = 0; i < COUNT; ++i) {
- fscanf (f, "%f", &_data[i]);
+ int n = fscanf (f, "%f", &_data[i]);
+ if (n != 1) {
+ _data[i] = 0;
+ }
}
}
@@ -86,7 +90,7 @@ AudioAnalysis::AudioAnalysis (boost::filesystem::path filename)
{
FILE* f = fopen_boost (filename, "r");
- int channels;
+ int channels = 0;
fscanf (f, "%d", &channels);
_data.resize (channels);
diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc
index c0ef02f65..30bd2540a 100644
--- a/src/lib/audio_decoder.cc
+++ b/src/lib/audio_decoder.cc
@@ -17,6 +17,7 @@
*/
+#include <iostream>
#include "audio_decoder.h"
#include "audio_buffers.h"
#include "exceptions.h"
@@ -25,7 +26,6 @@
#include "i18n.h"
-using std::stringstream;
using std::list;
using std::pair;
using std::cout;
diff --git a/src/lib/colour_conversion.cc b/src/lib/colour_conversion.cc
index f8675900e..e5b1104ff 100644
--- a/src/lib/colour_conversion.cc
+++ b/src/lib/colour_conversion.cc
@@ -30,7 +30,6 @@
using std::list;
using std::string;
-using std::stringstream;
using std::cout;
using std::vector;
using boost::shared_ptr;
diff --git a/src/lib/compose.hpp b/src/lib/compose.hpp
index b3f410c8e..aa67b5a1f 100644
--- a/src/lib/compose.hpp
+++ b/src/lib/compose.hpp
@@ -33,10 +33,10 @@
#ifndef STRING_COMPOSE_H
#define STRING_COMPOSE_H
-#include <sstream>
#include <string>
#include <list>
#include <map> // for multimap
+#include "safe_stringstream.h"
namespace StringPrivate
{
@@ -56,7 +56,7 @@ namespace StringPrivate
std::string str() const;
private:
- std::ostringstream os;
+ SafeStringStream os;
int arg_no;
// we store the output as a list - when the output string is requested, the
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 8e6dffee7..878fedaa4 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -17,7 +17,6 @@
*/
-#include <sstream>
#include <cstdlib>
#include <fstream>
#include <glib.h>
@@ -40,10 +39,12 @@
#include "i18n.h"
using std::vector;
+using std::cout;
using std::ifstream;
using std::string;
using std::list;
using std::max;
+using std::remove;
using std::exception;
using std::cerr;
using boost::shared_ptr;
@@ -63,6 +64,7 @@ Config::Config ()
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
, _allow_any_dcp_frame_rate (false)
, _default_still_length (10)
+ , _default_scale (VideoContentScale (Ratio::from_id ("185")))
, _default_container (Ratio::from_id ("185"))
, _default_dcp_content_type (DCPContentType::from_isdcf_name ("TST"))
, _default_j2k_bandwidth (100000000)
@@ -133,6 +135,11 @@ Config::read ()
_language = f.optional_string_child ("Language");
+ c = f.optional_string_child ("DefaultScale");
+ if (c) {
+ _default_scale = VideoContentScale::from_id (c.get ());
+ }
+
c = f.optional_string_child ("DefaultContainer");
if (c) {
_default_container = Ratio::from_id (c.get ());
@@ -143,9 +150,12 @@ Config::read ()
_default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ());
}
- _dcp_metadata.issuer = f.optional_string_child ("DCPMetadataIssuer").get_value_or ("");
- _dcp_metadata.creator = f.optional_string_child ("DCPMetadataCreator").get_value_or ("");
-
+ if (f.optional_string_child ("DCPMetadataIssuer")) {
+ _dcp_issuer = f.string_child ("DCPMetadataIssuer");
+ } else if (f.optional_string_child ("DCPIssuer")) {
+ _dcp_issuer = f.string_child ("DCPIssuer");
+ }
+
if (version && version.get() >= 2) {
_default_isdcf_metadata = ISDCFMetadata (f.node_child ("ISDCFMetadata"));
} else {
@@ -186,8 +196,10 @@ Config::read ()
_mail_server = f.string_child ("MailServer");
_mail_user = f.optional_string_child("MailUser").get_value_or ("");
_mail_password = f.optional_string_child("MailPassword").get_value_or ("");
+ _kdm_subject = f.optional_string_child ("KDMSubject").get_value_or (_("KDM delivery: $CPL_NAME"));
_kdm_from = f.string_child ("KDMFrom");
_kdm_cc = f.optional_string_child ("KDMCC").get_value_or ("");
+ _kdm_bcc = f.optional_string_child ("KDMBCC").get_value_or ("");
_kdm_email = f.string_child ("KDMEmail");
_check_for_updates = f.optional_bool_child("CheckForUpdates").get_value_or (false);
@@ -197,6 +209,11 @@ Config::read ()
_allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate");
_log_types = f.optional_number_child<int> ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR);
+
+ list<cxml::NodePtr> his = f.node_children ("History");
+ for (list<cxml::NodePtr>::const_iterator i = his.begin(); i != his.end(); ++i) {
+ _history.push_back ((*i)->content ());
+ }
}
void
@@ -252,11 +269,7 @@ Config::read_old_metadata ()
} else if (k == "default_dcp_content_type") {
_default_dcp_content_type = DCPContentType::from_isdcf_name (v);
} else if (k == "dcp_metadata_issuer") {
- _dcp_metadata.issuer = v;
- } else if (k == "dcp_metadata_creator") {
- _dcp_metadata.creator = v;
- } else if (k == "dcp_metadata_issue_date") {
- _dcp_metadata.issue_date = v;
+ _dcp_issuer = v;
}
_default_isdcf_metadata.read_old_metadata (k, v);
@@ -340,14 +353,14 @@ Config::write () const
if (_language) {
root->add_child("Language")->add_child_text (_language.get());
}
+ root->add_child("DefaultScale")->add_child_text (_default_scale.id ());
if (_default_container) {
root->add_child("DefaultContainer")->add_child_text (_default_container->id ());
}
if (_default_dcp_content_type) {
root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ());
}
- root->add_child("DCPMetadataIssuer")->add_child_text (_dcp_metadata.issuer);
- root->add_child("DCPMetadataCreator")->add_child_text (_dcp_metadata.creator);
+ root->add_child("DCPIssuer")->add_child_text (_dcp_issuer);
_default_isdcf_metadata.as_xml (root->add_child ("ISDCFMetadata"));
@@ -366,8 +379,10 @@ Config::write () const
root->add_child("MailServer")->add_child_text (_mail_server);
root->add_child("MailUser")->add_child_text (_mail_user);
root->add_child("MailPassword")->add_child_text (_mail_password);
+ root->add_child("KDMSubject")->add_child_text (_kdm_subject);
root->add_child("KDMFrom")->add_child_text (_kdm_from);
root->add_child("KDMCC")->add_child_text (_kdm_cc);
+ root->add_child("KDMBCC")->add_child_text (_kdm_bcc);
root->add_child("KDMEmail")->add_child_text (_kdm_email);
root->add_child("CheckForUpdates")->add_child_text (_check_for_updates ? "1" : "0");
@@ -376,6 +391,10 @@ Config::write () const
root->add_child("MaximumJ2KBandwidth")->add_child_text (raw_convert<string> (_maximum_j2k_bandwidth));
root->add_child("AllowAnyDCPFrameRate")->add_child_text (_allow_any_dcp_frame_rate ? "1" : "0");
root->add_child("LogTypes")->add_child_text (raw_convert<string> (_log_types));
+
+ for (vector<boost::filesystem::path>::const_iterator i = _history.begin(); i != _history.end(); ++i) {
+ root->add_child("History")->add_child_text (i->string ());
+ }
doc.write_to_file_formatted (file(false).string ());
}
@@ -422,3 +441,17 @@ Config::reset_kdm_email ()
"Best regards,\nDCP-o-matic"
);
}
+
+void
+Config::add_to_history (boost::filesystem::path p)
+{
+ /* Remove existing instances of this path in the history */
+ _history.erase (remove (_history.begin(), _history.end(), p), _history.end ());
+
+ _history.insert (_history.begin (), p);
+ if (_history.size() > HISTORY_SIZE) {
+ _history.pop_back ();
+ }
+
+ changed ();
+}
diff --git a/src/lib/config.h b/src/lib/config.h
index ebcf7e83d..0639382a0 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -28,10 +28,10 @@
#include <boost/shared_ptr.hpp>
#include <boost/signals2.hpp>
#include <boost/filesystem.hpp>
-#include <libdcp/metadata.h>
#include "isdcf_metadata.h"
#include "colour_conversion.h"
#include "server.h"
+#include "video_content.h"
class ServerDescription;
class Scaler;
@@ -133,6 +133,10 @@ public:
return _default_still_length;
}
+ VideoContentScale default_scale () const {
+ return _default_scale;
+ }
+
Ratio const * default_container () const {
return _default_container;
}
@@ -141,8 +145,8 @@ public:
return _default_dcp_content_type;
}
- libdcp::XMLMetadata dcp_metadata () const {
- return _dcp_metadata;
+ std::string dcp_issuer () const {
+ return _dcp_issuer;
}
int default_j2k_bandwidth () const {
@@ -169,6 +173,10 @@ public:
return _mail_password;
}
+ std::string kdm_subject () const {
+ return _kdm_subject;
+ }
+
std::string kdm_from () const {
return _kdm_from;
}
@@ -176,6 +184,10 @@ public:
std::string kdm_cc () const {
return _kdm_cc;
}
+
+ std::string kdm_bcc () const {
+ return _kdm_bcc;
+ }
std::string kdm_email () const {
return _kdm_email;
@@ -196,7 +208,11 @@ public:
int log_types () const {
return _log_types;
}
-
+
+ std::vector<boost::filesystem::path> history () const {
+ return _history;
+ }
+
/** @param n New number of local encoding threads */
void set_num_local_encoding_threads (int n) {
_num_local_encoding_threads = n;
@@ -278,6 +294,11 @@ public:
changed ();
}
+ void set_default_scale (VideoContentScale s) {
+ _default_scale = s;
+ changed ();
+ }
+
void set_default_container (Ratio const * c) {
_default_container = c;
changed ();
@@ -288,8 +309,8 @@ public:
changed ();
}
- void set_dcp_metadata (libdcp::XMLMetadata m) {
- _dcp_metadata = m;
+ void set_dcp_issuer (std::string i) {
+ _dcp_issuer = i;
changed ();
}
@@ -323,6 +344,11 @@ public:
changed ();
}
+ void set_kdm_subject (std::string s) {
+ _kdm_subject = s;
+ changed ();
+ }
+
void set_kdm_from (std::string f) {
_kdm_from = f;
changed ();
@@ -332,6 +358,11 @@ public:
_kdm_cc = f;
changed ();
}
+
+ void set_kdm_bcc (std::string f) {
+ _kdm_bcc = f;
+ changed ();
+ }
void set_kdm_email (std::string e) {
_kdm_email = e;
@@ -359,6 +390,13 @@ public:
_log_types = t;
changed ();
}
+
+ void clear_history () {
+ _history.clear ();
+ changed ();
+ }
+
+ void add_to_history (boost::filesystem::path p);
boost::filesystem::path signer_chain_directory () const;
@@ -404,9 +442,10 @@ private:
ISDCFMetadata _default_isdcf_metadata;
boost::optional<std::string> _language;
int _default_still_length;
+ VideoContentScale _default_scale;
Ratio const * _default_container;
DCPContentType const * _default_dcp_content_type;
- libdcp::XMLMetadata _dcp_metadata;
+ std::string _dcp_issuer;
int _default_j2k_bandwidth;
int _default_audio_delay;
std::vector<PresetColourConversion> _colour_conversions;
@@ -414,8 +453,10 @@ private:
std::string _mail_server;
std::string _mail_user;
std::string _mail_password;
+ std::string _kdm_subject;
std::string _kdm_from;
std::string _kdm_cc;
+ std::string _kdm_bcc;
std::string _kdm_email;
/** true to check for updates on startup */
bool _check_for_updates;
@@ -423,7 +464,8 @@ private:
/** maximum allowed J2K bandwidth in bits per second */
int _maximum_j2k_bandwidth;
int _log_types;
-
+ std::vector<boost::filesystem::path> _history;
+
/** Singleton instance, or 0 */
static Config* _instance;
};
diff --git a/src/lib/content.cc b/src/lib/content.cc
index 7966219ff..11a4b21cc 100644
--- a/src/lib/content.cc
+++ b/src/lib/content.cc
@@ -27,11 +27,11 @@
#include "ui_signaller.h"
#include "exceptions.h"
#include "film.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::set;
using std::list;
using std::cout;
@@ -230,7 +230,7 @@ Content::trimmed (Time t) const
string
Content::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << Content::digest()
<< "_" << position()
diff --git a/src/lib/cross.cc b/src/lib/cross.cc
index e30cf6459..9b7d5594f 100644
--- a/src/lib/cross.cc
+++ b/src/lib/cross.cc
@@ -310,7 +310,7 @@ void
Waker::nudge ()
{
#ifdef DCPOMATIC_WINDOWS
- SetThreadExecutionState (ES_CONTINUOUS);
+ SetThreadExecutionState (ES_SYSTEM_REQUIRED);
#endif
}
diff --git a/src/lib/dcp_video_frame.cc b/src/lib/dcp_video_frame.cc
index c8f8c3cc5..057ed0fae 100644
--- a/src/lib/dcp_video_frame.cc
+++ b/src/lib/dcp_video_frame.cc
@@ -34,7 +34,6 @@
#include <stdexcept>
#include <cstdio>
#include <iomanip>
-#include <sstream>
#include <iostream>
#include <fstream>
#include <unistd.h>
@@ -67,7 +66,6 @@
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::cout;
using boost::shared_ptr;
using libdcp::Size;
@@ -282,10 +280,9 @@ DCPVideoFrame::encode_remotely (ServerDescription serv)
LOG_GENERAL (N_("Sending frame %1 to remote"), _index);
/* Send XML metadata */
- stringstream xml;
- doc.write_to_stream (xml, "UTF-8");
- socket->write (xml.str().length() + 1);
- socket->write ((uint8_t *) xml.str().c_str(), xml.str().length() + 1);
+ string xml = doc.write_to_string ("UTF-8");
+ socket->write (xml.length() + 1);
+ socket->write ((uint8_t *) xml.c_str(), xml.length() + 1);
/* Send binary data */
_frame->send_binary (socket);
diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc
index 02a271029..693fd587e 100644
--- a/src/lib/encoder.cc
+++ b/src/lib/encoder.cc
@@ -45,7 +45,6 @@
using std::pair;
using std::string;
-using std::stringstream;
using std::vector;
using std::list;
using std::cout;
diff --git a/src/lib/examine_content_job.cc b/src/lib/examine_content_job.cc
index 8f16e2e5c..cbf180ffc 100644
--- a/src/lib/examine_content_job.cc
+++ b/src/lib/examine_content_job.cc
@@ -46,12 +46,6 @@ ExamineContentJob::name () const
return _("Examine content");
}
-string
-ExamineContentJob::json_name () const
-{
- return N_("examine_content");
-}
-
void
ExamineContentJob::run ()
{
diff --git a/src/lib/examine_content_job.h b/src/lib/examine_content_job.h
index c8037224f..b6903b86b 100644
--- a/src/lib/examine_content_job.h
+++ b/src/lib/examine_content_job.h
@@ -30,7 +30,6 @@ public:
~ExamineContentJob ();
std::string name () const;
- std::string json_name () const;
void run ();
private:
diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc
index 7ecc811be..ebe62b51f 100644
--- a/src/lib/ffmpeg.cc
+++ b/src/lib/ffmpeg.cc
@@ -32,7 +32,6 @@ extern "C" {
using std::string;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
using libdcp::raw_convert;
diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc
index 4d886a6dd..a4209f5b6 100644
--- a/src/lib/ffmpeg_content.cc
+++ b/src/lib/ffmpeg_content.cc
@@ -32,13 +32,13 @@ extern "C" {
#include "log.h"
#include "exceptions.h"
#include "frame_rate_change.h"
+#include "safe_stringstream.h"
#include "i18n.h"
#define LOG_GENERAL(...) film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
using std::string;
-using std::stringstream;
using std::vector;
using std::list;
using std::cout;
@@ -241,7 +241,7 @@ FFmpegContent::information () const
return "";
}
- stringstream s;
+ SafeStringStream s;
s << String::compose (_("%1 frames; %2 frames per second"), video_length_after_3d_combine(), video_frame_rate()) << "\n";
s << VideoContent::information ();
@@ -445,7 +445,7 @@ FFmpegContent::set_audio_mapping (AudioMapping m)
string
FFmpegContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << VideoContent::identifier();
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 07f988e2b..d40b798ba 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -23,7 +23,6 @@
#include <stdexcept>
#include <vector>
-#include <sstream>
#include <iomanip>
#include <iostream>
#include <stdint.h>
@@ -53,7 +52,6 @@ extern "C" {
using std::cout;
using std::string;
using std::vector;
-using std::stringstream;
using std::list;
using std::min;
using std::pair;
@@ -334,7 +332,7 @@ FFmpegDecoder::seek (VideoContent::Frame frame, bool accurate)
}
/* Initial seek time in the stream's timebase */
- int64_t const initial_vt = ((initial / _ffmpeg_content->video_frame_rate()) - _pts_offset) / time_base;
+ int64_t const initial_vt = ((initial / _ffmpeg_content->original_video_frame_rate()) - _pts_offset) / time_base;
av_seek_frame (_format_context, _video_stream, initial_vt, AVSEEK_FLAG_BACKWARD);
@@ -375,7 +373,7 @@ FFmpegDecoder::seek (VideoContent::Frame frame, bool accurate)
r = avcodec_decode_video2 (video_codec_context(), _frame, &finished, &_packet);
if (r >= 0 && finished) {
_video_position = rint (
- (av_frame_get_best_effort_timestamp (_frame) * time_base + _pts_offset) * _ffmpeg_content->video_frame_rate()
+ (av_frame_get_best_effort_timestamp (_frame) * time_base + _pts_offset) * _ffmpeg_content->original_video_frame_rate()
);
if (_video_position >= (frame - 1)) {
@@ -495,12 +493,12 @@ FFmpegDecoder::decode_video_packet ()
/* We just did a seek, so disable any attempts to correct for where we
are / should be.
*/
- _video_position = rint (pts * _ffmpeg_content->video_frame_rate ());
+ _video_position = rint (pts * _ffmpeg_content->original_video_frame_rate ());
_just_sought = false;
}
- double const next = _video_position / _ffmpeg_content->video_frame_rate();
- double const one_frame = 1 / _ffmpeg_content->video_frame_rate ();
+ double const next = _video_position / _ffmpeg_content->original_video_frame_rate();
+ double const one_frame = 1 / _ffmpeg_content->original_video_frame_rate ();
double delta = pts - next;
while (delta > one_frame) {
diff --git a/src/lib/ffmpeg_examiner.cc b/src/lib/ffmpeg_examiner.cc
index bc82a9700..5ccc8028b 100644
--- a/src/lib/ffmpeg_examiner.cc
+++ b/src/lib/ffmpeg_examiner.cc
@@ -23,13 +23,13 @@ extern "C" {
}
#include "ffmpeg_examiner.h"
#include "ffmpeg_content.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
using std::cout;
using std::max;
-using std::stringstream;
using boost::shared_ptr;
using boost::optional;
@@ -137,14 +137,14 @@ FFmpegExaminer::video_size () const
VideoContent::Frame
FFmpegExaminer::video_length () const
{
- VideoContent::Frame const length = (double (_format_context->duration - _format_context->start_time) / AV_TIME_BASE) * video_frame_rate();
+ VideoContent::Frame const length = (double (_format_context->duration) / AV_TIME_BASE) * video_frame_rate();
return max (1, length);
}
string
FFmpegExaminer::audio_stream_name (AVStream* s) const
{
- stringstream n;
+ SafeStringStream n;
n << stream_name (s);
@@ -160,7 +160,7 @@ FFmpegExaminer::audio_stream_name (AVStream* s) const
string
FFmpegExaminer::subtitle_stream_name (AVStream* s) const
{
- stringstream n;
+ SafeStringStream n;
n << stream_name (s);
@@ -174,7 +174,7 @@ FFmpegExaminer::subtitle_stream_name (AVStream* s) const
string
FFmpegExaminer::stream_name (AVStream* s) const
{
- stringstream n;
+ SafeStringStream n;
if (s->metadata) {
AVDictionaryEntry const * lang = av_dict_get (s->metadata, "language", 0, 0);
diff --git a/src/lib/film.cc b/src/lib/film.cc
index 0a77caf50..54503ef72 100644
--- a/src/lib/film.cc
+++ b/src/lib/film.cc
@@ -22,7 +22,6 @@
#include <algorithm>
#include <fstream>
#include <cstdlib>
-#include <sstream>
#include <iomanip>
#include <unistd.h>
#include <boost/filesystem.hpp>
@@ -55,11 +54,11 @@
#include "ratio.h"
#include "cross.h"
#include "cinema.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::multimap;
using std::pair;
using std::map;
@@ -92,9 +91,11 @@ using libdcp::raw_convert;
* 7 -> 8
* Use <Scale> tag in <VideoContent> rather than <Ratio>.
* 8 -> 9
- * DCI -> ISDCF
+ * DCI -> ISDCF.
+ * 9 -> 10
+ * Subtitle X and Y scale.
*/
-int const Film::current_state_version = 9;
+int const Film::current_state_version = 10;
/** Construct a Film object in a given directory.
*
@@ -159,7 +160,7 @@ Film::video_identifier () const
{
assert (container ());
- stringstream s;
+ SafeStringStream s;
s.imbue (std::locale::classic ());
s << container()->id()
@@ -493,7 +494,7 @@ Film::file (boost::filesystem::path f) const
string
Film::isdcf_name (bool if_created_now) const
{
- stringstream d;
+ SafeStringStream d;
string raw_name = name ();
@@ -581,18 +582,22 @@ Film::isdcf_name (bool if_created_now) const
d << "_" << container()->isdcf_name();
}
- /* XXX: this only works for content which has been scaled to a given ratio,
- and uses the first bit of content only.
- */
+ /* XXX: this uses the first bit of content only */
/* The standard says we don't do this for trailers, for some strange reason */
if (dcp_content_type() && dcp_content_type()->libdcp_kind() != libdcp::TRAILER) {
- ContentList cl = content ();
Ratio const * content_ratio = 0;
- for (ContentList::const_iterator i = cl.begin(); i != cl.end(); ++i) {
+ ContentList cl = content ();
+ for (ContentList::iterator i = cl.begin(); i != cl.end(); ++i) {
shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
- if (vc && (content_ratio == 0 || vc->scale().ratio() != content_ratio)) {
- content_ratio = vc->scale().ratio();
+ if (vc) {
+ /* Here's the first piece of video content */
+ if (vc->scale().ratio ()) {
+ content_ratio = vc->scale().ratio ();
+ } else {
+ content_ratio = Ratio::from_ratio (vc->video_size().ratio ());
+ }
+ break;
}
}
@@ -817,7 +822,7 @@ Film::info_path (int f, Eyes e) const
boost::filesystem::path p;
p /= info_dir ();
- stringstream s;
+ SafeStringStream s;
s.width (8);
s << setfill('0') << f;
@@ -844,7 +849,7 @@ Film::j2c_path (int f, Eyes e, bool t) const
p /= "j2c";
p /= video_identifier ();
- stringstream s;
+ SafeStringStream s;
s.width (8);
s << setfill('0') << f;
diff --git a/src/lib/filter_graph.cc b/src/lib/filter_graph.cc
index c11ee6331..639992d70 100644
--- a/src/lib/filter_graph.cc
+++ b/src/lib/filter_graph.cc
@@ -34,10 +34,10 @@ extern "C" {
#include "exceptions.h"
#include "image.h"
#include "ffmpeg_content.h"
+#include "safe_stringstream.h"
#include "i18n.h"
-using std::stringstream;
using std::string;
using std::list;
using std::pair;
@@ -80,7 +80,7 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
throw DecodeError (N_("Could not create buffer sink filter"));
}
- stringstream a;
+ SafeStringStream a;
a << "video_size=" << _size.width << "x" << _size.height << ":"
<< "pix_fmt=" << _pixel_format << ":"
<< "time_base=1/1:"
@@ -114,7 +114,7 @@ FilterGraph::FilterGraph (shared_ptr<const FFmpegContent> content, libdcp::Size
inputs->pad_idx = 0;
inputs->next = 0;
- if (avfilter_graph_parse (graph, filters.c_str(), &inputs, &outputs, 0) < 0) {
+ if (avfilter_graph_parse (graph, filters.c_str(), inputs, outputs, 0) < 0) {
throw DecodeError (N_("could not set up filter graph."));
}
diff --git a/src/lib/frame_rate_change.cc b/src/lib/frame_rate_change.cc
index 454938ada..31fce6b6d 100644
--- a/src/lib/frame_rate_change.cc
+++ b/src/lib/frame_rate_change.cc
@@ -23,6 +23,8 @@
#include "i18n.h"
+using std::string;
+
static bool
about_equal (float a, float b)
{
@@ -73,7 +75,13 @@ FrameRateChange::FrameRateChange (float source_, int dcp_)
speed_up = dcp / (source * factor());
change_speed = !about_equal (speed_up, 1.0);
+}
+string
+FrameRateChange::description () const
+{
+ string description;
+
if (!skip && repeat == 1 && !change_speed) {
description = _("Content and DCP have the same rate.\n");
} else {
@@ -90,4 +98,6 @@ FrameRateChange::FrameRateChange (float source_, int dcp_)
description += String::compose (_("DCP will run at %1%% of the content speed.\n"), pc);
}
}
+
+ return description;
}
diff --git a/src/lib/frame_rate_change.h b/src/lib/frame_rate_change.h
index f53adc059..f5244fea2 100644
--- a/src/lib/frame_rate_change.h
+++ b/src/lib/frame_rate_change.h
@@ -60,7 +60,7 @@ struct FrameRateChange
*/
float speed_up;
- std::string description;
+ std::string description () const;
};
#endif
diff --git a/src/lib/image.cc b/src/lib/image.cc
index 1c6c02979..3b8c1a28e 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -38,7 +38,6 @@ using std::string;
using std::min;
using std::cout;
using std::cerr;
-using std::stringstream;
using boost::shared_ptr;
using libdcp::Size;
diff --git a/src/lib/image_content.cc b/src/lib/image_content.cc
index 6acf0bab9..915da7beb 100644
--- a/src/lib/image_content.cc
+++ b/src/lib/image_content.cc
@@ -25,12 +25,12 @@
#include "film.h"
#include "job.h"
#include "frame_rate_change.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
ImageContent::ImageContent (shared_ptr<const Film> f, boost::filesystem::path p)
@@ -138,7 +138,7 @@ ImageContent::full_length () const
string
ImageContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << VideoContent::identifier ();
s << "_" << video_length();
return s.str ();
diff --git a/src/lib/image_proxy.cc b/src/lib/image_proxy.cc
index ba572c727..3aba6cf7c 100644
--- a/src/lib/image_proxy.cc
+++ b/src/lib/image_proxy.cc
@@ -32,7 +32,6 @@
using std::cout;
using std::string;
-using std::stringstream;
using boost::shared_ptr;
ImageProxy::ImageProxy (shared_ptr<Log> log)
@@ -122,10 +121,30 @@ MagickImageProxy::image () const
LOG_TIMING ("[%1] MagickImageProxy begins decode and convert of %2 bytes", boost::this_thread::get_id(), _blob.length());
Magick::Image* magick_image = 0;
+ string error;
try {
magick_image = new Magick::Image (_blob);
- } catch (...) {
- throw DecodeError (_("Could not decode image file"));
+ } catch (Magick::Exception& e) {
+ error = e.what ();
+ }
+
+ if (!magick_image) {
+ /* ImageMagick cannot auto-detect Targa files, it seems, so try here with an
+ explicit format. I can't find it documented that passing a (0, 0) geometry
+ is allowed, but it seems to work.
+ */
+ try {
+ magick_image = new Magick::Image (_blob, Magick::Geometry (0, 0), "TGA");
+ } catch (...) {
+
+ }
+ }
+
+ if (!magick_image) {
+ /* If we failed both an auto-detect and a forced-Targa we give the error from
+ the auto-detect.
+ */
+ throw DecodeError (String::compose (_("Could not decode image file (%1)"), error));
}
LOG_TIMING ("[%1] MagickImageProxy decode finished", boost::this_thread::get_id ());
diff --git a/src/lib/image_proxy.h b/src/lib/image_proxy.h
index f6212e54f..c0ccd9125 100644
--- a/src/lib/image_proxy.h
+++ b/src/lib/image_proxy.h
@@ -49,6 +49,7 @@ class ImageProxy : public boost::noncopyable
{
public:
ImageProxy (boost::shared_ptr<Log> log);
+ virtual ~ImageProxy () {}
/** @return Image (which must be aligned) */
virtual boost::shared_ptr<Image> image () const = 0;
diff --git a/src/lib/internet.cc b/src/lib/internet.cc
index 99ae5c214..1c61e96e3 100644
--- a/src/lib/internet.cc
+++ b/src/lib/internet.cc
@@ -24,11 +24,11 @@
#include <curl/curl.h>
#include <zip.h>
#include "util.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::list;
using boost::optional;
using boost::function;
@@ -56,6 +56,8 @@ get_from_zip_url (string url, string file, function<void (boost::filesystem::pat
curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, get_from_zip_url_data);
curl_easy_setopt (curl, CURLOPT_WRITEDATA, f);
curl_easy_setopt (curl, CURLOPT_FTP_USE_EPSV, 0);
+ /* Maximum time is 20s */
+ curl_easy_setopt (curl, CURLOPT_TIMEOUT, 20);
CURLcode const cr = curl_easy_perform (curl);
@@ -117,6 +119,8 @@ ftp_ls (string url)
url += "/";
}
curl_easy_setopt (curl, CURLOPT_URL, url.c_str ());
+ /* 20s timeout */
+ curl_easy_setopt (curl, CURLOPT_TIMEOUT, 20);
string ls_raw;
struct curl_slist* commands = 0;
@@ -130,11 +134,10 @@ ftp_ls (string url)
return list<string> ();
}
- stringstream s (ls_raw);
- string line;
+ SafeStringStream s (ls_raw);
list<string> ls;
while (s.good ()) {
- getline (s, line);
+ string const line = s.getline ();
if (line.length() > 55) {
string const file = line.substr (55);
if (file != "." && file != "..") {
diff --git a/src/lib/job.cc b/src/lib/job.cc
index 96aedac65..52ec1426c 100644
--- a/src/lib/job.cc
+++ b/src/lib/job.cc
@@ -29,13 +29,13 @@
#include "cross.h"
#include "ui_signaller.h"
#include "exceptions.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
using std::list;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
Job::Job (shared_ptr<const Film> f)
@@ -306,7 +306,7 @@ Job::status () const
pc = 99;
}
- stringstream s;
+ SafeStringStream s;
if (!finished ()) {
s << pc << N_("%");
if (p >= 0 && t > 10 && r > 0) {
@@ -325,29 +325,6 @@ Job::status () const
return s.str ();
}
-string
-Job::json_status () const
-{
- boost::mutex::scoped_lock lm (_state_mutex);
-
- switch (_state) {
- case NEW:
- return N_("new");
- case RUNNING:
- return N_("running");
- case PAUSED:
- return N_("paused");
- case FINISHED_OK:
- return N_("finished_ok");
- case FINISHED_ERROR:
- return N_("finished_error");
- case FINISHED_CANCELLED:
- return N_("finished_cancelled");
- }
-
- return "";
-}
-
/** @return An estimate of the remaining time for this sub-job, in seconds */
int
Job::remaining_time () const
diff --git a/src/lib/job.h b/src/lib/job.h
index 5e3127dc1..97e3fc296 100644
--- a/src/lib/job.h
+++ b/src/lib/job.h
@@ -43,7 +43,6 @@ public:
/** @return user-readable name of this job */
virtual std::string name () const = 0;
- virtual std::string json_name () const = 0;
/** Run this job in the current thread. */
virtual void run () = 0;
@@ -65,7 +64,6 @@ public:
int elapsed_time () const;
virtual std::string status () const;
- std::string json_status () const;
std::string sub_name () const {
return _sub_name;
}
diff --git a/src/lib/json_server.cc b/src/lib/json_server.cc
deleted file mode 100644
index 1be3c7d0e..000000000
--- a/src/lib/json_server.cc
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-*/
-
-#include <boost/asio.hpp>
-#include <boost/bind.hpp>
-#include <boost/thread.hpp>
-#include "json_server.h"
-#include "job_manager.h"
-#include "job.h"
-#include "util.h"
-#include "film.h"
-#include "transcode_job.h"
-
-using std::string;
-using std::stringstream;
-using std::cout;
-using std::map;
-using std::list;
-using boost::thread;
-using boost::shared_ptr;
-using boost::dynamic_pointer_cast;
-using boost::asio::ip::tcp;
-
-#define MAX_LENGTH 512
-
-enum State {
- AWAITING_G,
- AWAITING_E,
- AWAITING_T,
- AWAITING_SPACE,
- READING_URL,
-};
-
-JSONServer::JSONServer (int port)
-{
- new thread (boost::bind (&JSONServer::run, this, port));
-}
-
-void
-JSONServer::run (int port)
-try
-{
- boost::asio::io_service io_service;
- tcp::acceptor a (io_service, tcp::endpoint (tcp::v4 (), port));
- while (true) {
- try {
- shared_ptr<tcp::socket> s (new tcp::socket (io_service));
- a.accept (*s);
- handle (s);
- }
- catch (...) {
-
- }
- }
-}
-catch (...)
-{
-
-}
-
-void
-JSONServer::handle (shared_ptr<tcp::socket> socket)
-{
- string url;
- State state = AWAITING_G;
-
- while (true) {
- char data[MAX_LENGTH];
- boost::system::error_code error;
- size_t len = socket->read_some (boost::asio::buffer (data), error);
- if (error) {
- cout << "error.\n";
- break;
- }
-
- char* p = data;
- char* e = data + len;
- while (p != e) {
-
- State old_state = state;
- switch (state) {
- case AWAITING_G:
- if (*p == 'G') {
- state = AWAITING_E;
- }
- break;
- case AWAITING_E:
- if (*p == 'E') {
- state = AWAITING_T;
- }
- break;
- case AWAITING_T:
- if (*p == 'T') {
- state = AWAITING_SPACE;
- }
- break;
- case AWAITING_SPACE:
- if (*p == ' ') {
- state = READING_URL;
- }
- break;
- case READING_URL:
- if (*p == ' ') {
- request (url, socket);
- state = AWAITING_G;
- url = "";
- } else {
- url += *p;
- }
- break;
- }
-
- if (state == old_state && state != READING_URL) {
- state = AWAITING_G;
- }
-
- ++p;
- }
- }
-}
-
-void
-JSONServer::request (string url, shared_ptr<tcp::socket> socket)
-{
- cout << "request: " << url << "\n";
-
- map<string, string> r = split_get_request (url);
- for (map<string, string>::iterator i = r.begin(); i != r.end(); ++i) {
- cout << i->first << " => " << i->second << "\n";
- }
-
- string action;
- if (r.find ("action") != r.end ()) {
- action = r["action"];
- }
-
- stringstream json;
- if (action == "status") {
-
- list<shared_ptr<Job> > jobs = JobManager::instance()->get ();
-
- json << "{ \"jobs\": [";
- for (list<shared_ptr<Job> >::iterator i = jobs.begin(); i != jobs.end(); ++i) {
-
- json << "{ ";
-
- if ((*i)->film()) {
- json << "\"dcp\": \"" << (*i)->film()->dcp_name() << "\", ";
- }
-
- json << "\"name\": \"" << (*i)->json_name() << "\", "
- << "\"progress\": " << (*i)->progress () << ", "
- << "\"status\": \"" << (*i)->json_status() << "\"";
- json << " }";
-
- list<shared_ptr<Job> >::iterator j = i;
- ++j;
- if (j != jobs.end ()) {
- json << ", ";
- }
- }
- json << "] }";
-
- if (json.str().empty ()) {
- json << "{ }";
- }
- }
-
- stringstream reply;
- reply << "HTTP/1.1 200 OK\r\n"
- << "Content-Length: " << json.str().length() << "\r\n"
- << "Content-Type: application/json\r\n"
- << "\r\n"
- << json.str () << "\r\n";
- cout << "reply: " << json.str() << "\n";
- boost::asio::write (*socket, boost::asio::buffer (reply.str().c_str(), reply.str().length()));
-}
diff --git a/src/lib/kdm.cc b/src/lib/kdm.cc
index 49bfae20a..f5054b8ed 100644
--- a/src/lib/kdm.cc
+++ b/src/lib/kdm.cc
@@ -28,10 +28,10 @@
#include "util.h"
#include "film.h"
#include "config.h"
+#include "safe_stringstream.h"
using std::list;
using std::string;
-using std::stringstream;
using std::cout;
using boost::shared_ptr;
@@ -232,21 +232,34 @@ email_kdms (
/* Send email */
quickmail_initialize ();
- quickmail mail = quickmail_create (Config::instance()->kdm_from().c_str(), "KDM delivery");
+
+ SafeStringStream start;
+ start << from.date() << " " << from.time_of_day();
+ SafeStringStream end;
+ end << to.date() << " " << to.time_of_day();
+
+ string subject = Config::instance()->kdm_subject();
+ boost::algorithm::replace_all (subject, "$CPL_NAME", film->dcp_name ());
+ boost::algorithm::replace_all (subject, "$START_TIME", start.str ());
+ boost::algorithm::replace_all (subject, "$END_TIME", end.str ());
+ boost::algorithm::replace_all (subject, "$CINEMA_NAME", i->cinema->name);
+ quickmail mail = quickmail_create (Config::instance()->kdm_from().c_str(), subject.c_str ());
+
quickmail_add_to (mail, i->cinema->email.c_str ());
if (!Config::instance()->kdm_cc().empty ()) {
quickmail_add_cc (mail, Config::instance()->kdm_cc().c_str ());
}
+ if (!Config::instance()->kdm_bcc().empty ()) {
+ quickmail_add_bcc (mail, Config::instance()->kdm_bcc().c_str ());
+ }
+
string body = Config::instance()->kdm_email().c_str();
boost::algorithm::replace_all (body, "$CPL_NAME", film->dcp_name ());
- stringstream start;
- start << from.date() << " " << from.time_of_day();
boost::algorithm::replace_all (body, "$START_TIME", start.str ());
- stringstream end;
- end << to.date() << " " << to.time_of_day();
boost::algorithm::replace_all (body, "$END_TIME", end.str ());
boost::algorithm::replace_all (body, "$CINEMA_NAME", i->cinema->name);
- stringstream screens;
+
+ SafeStringStream screens;
for (list<ScreenKDM>::const_iterator j = i->screen_kdms.begin(); j != i->screen_kdms.end(); ++j) {
screens << j->screen->name << ", ";
}
diff --git a/src/lib/log.cc b/src/lib/log.cc
index 4de6bd874..5e8277a23 100644
--- a/src/lib/log.cc
+++ b/src/lib/log.cc
@@ -26,6 +26,7 @@
#include "log.h"
#include "cross.h"
#include "config.h"
+#include "safe_stringstream.h"
#include "i18n.h"
@@ -63,7 +64,7 @@ Log::log (string message, int type)
time (&t);
string a = ctime (&t);
- stringstream s;
+ SafeStringStream s;
s << a.substr (0, a.length() - 1) << N_(": ");
if (type & TYPE_ERROR) {
@@ -90,7 +91,7 @@ Log::microsecond_log (string m, int t)
struct timeval tv;
gettimeofday (&tv, 0);
- stringstream s;
+ SafeStringStream s;
s << tv.tv_sec << N_(":") << tv.tv_usec << N_(" ") << m;
do_log (s.str ());
}
diff --git a/src/lib/md5_digester.cc b/src/lib/md5_digester.cc
index 1244209bd..1d4d1974a 100644
--- a/src/lib/md5_digester.cc
+++ b/src/lib/md5_digester.cc
@@ -18,12 +18,11 @@
*/
#include <iomanip>
-#include <sstream>
#include <openssl/md5.h>
#include "md5_digester.h"
+#include "safe_stringstream.h"
using std::string;
-using std::stringstream;
using std::hex;
using std::setfill;
using std::setw;
@@ -51,7 +50,7 @@ MD5Digester::get () const
unsigned char digest[MD5_DIGEST_LENGTH];
MD5_Final (digest, &_context);
- stringstream s;
+ SafeStringStream s;
for (int i = 0; i < MD5_DIGEST_LENGTH; ++i) {
s << hex << setfill('0') << setw(2) << ((int) digest[i]);
}
diff --git a/src/lib/player.cc b/src/lib/player.cc
index 2d2977606..8063d1212 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -497,7 +497,8 @@ Player::content_changed (weak_ptr<Content> w, int property, bool frequent)
} else if (
property == SubtitleContentProperty::SUBTITLE_X_OFFSET ||
property == SubtitleContentProperty::SUBTITLE_Y_OFFSET ||
- property == SubtitleContentProperty::SUBTITLE_SCALE
+ property == SubtitleContentProperty::SUBTITLE_X_SCALE ||
+ property == SubtitleContentProperty::SUBTITLE_Y_SCALE
) {
for (list<Subtitle>::iterator i = _subtitles.begin(); i != _subtitles.end(); ++i) {
diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc
index df3e63303..c3e430082 100644
--- a/src/lib/playlist.cc
+++ b/src/lib/playlist.cc
@@ -40,7 +40,6 @@ using std::vector;
using std::min;
using std::max;
using std::string;
-using std::stringstream;
using std::pair;
using boost::optional;
using boost::shared_ptr;
@@ -389,7 +388,6 @@ Playlist::move_later (shared_ptr<Content> c)
return;
}
- Time const p = (*next)->position ();
(*next)->set_position (c->position ());
c->set_position (c->position() + c->length_after_trim ());
sort (_content.begin(), _content.end(), ContentSorter ());
diff --git a/src/lib/po/de_DE.po b/src/lib/po/de_DE.po
index 8137b24c1..db084cb3e 100644
--- a/src/lib/po/de_DE.po
+++ b/src/lib/po/de_DE.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:01+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 02:32+0100\n"
"Last-Translator: Carsten Kurz\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de\n"
@@ -34,23 +34,23 @@ msgstr "%1 Kanäle, %2kHz, %3 samples"
msgid "%1 frames; %2 frames per second"
msgstr "%1 Bilder; %2 Bilder pro Sekunde"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr "%1x%2 pixel (%3:1)"
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1.19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1.375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1.66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -58,11 +58,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "3D Rauschunterdrückung"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academy"
@@ -98,15 +98,15 @@ msgstr "Abgebrochen"
msgid "Cannot handle pixel format %1 during %2"
msgstr "Kann dieses Pixelformat %1 während %2 nicht bearbeiten"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Center"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr "Überprüfe bestehende Bilddateien"
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr "Tonübersicht berechnen"
@@ -114,11 +114,11 @@ msgstr "Tonübersicht berechnen"
msgid "Computing digest"
msgstr "Zusammenfassung berechnen"
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr "Bildübersicht berechnen"
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
msgid "Content and DCP have the same rate.\n"
msgstr "Quelle und DCP haben dieselbe Bildrate. Gut ;-)\n"
@@ -131,95 +131,103 @@ msgid "Content to be joined must have the same audio gain."
msgstr ""
"Zu verbindende Inhalte müssen die gleichen Tonpegeleinstellungen verwenden."
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr "Zu verbindende Inhalte müssen die gleiche Farbumwandlung verwenden."
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
msgstr "Zu verbindende Inhalte müssen gleichen Beschnitt verwenden."
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr "Zu verbindende Inhalte müssen die gleiche Bildgröße haben."
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
msgid "Content to be joined must have the same scale setting."
msgstr "Zu verbindende Inhalte müssen die gleiche Skalierung verwenden."
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
msgid "Content to be joined must have the same subtitle X offset."
msgstr ""
"Zu verbindende Inhalte müssen den gleichen horizontalen Untertitelversatz "
"verwenden."
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelgröße verwenden."
+
+#: src/lib/subtitle_content.cc:85
msgid "Content to be joined must have the same subtitle Y offset."
msgstr ""
"Zu verbindende Inhalte müssen den gleichen vertikalen Untertitelversatz "
"verwenden."
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelgröße verwenden."
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr "Zu verbindende Inhalte müssen die gleiche Bildrate haben."
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
-msgstr "Zu verbindende Inhalte müssen die gleiche Bildart (z.B. 2D) haben."
+msgstr "Zu verbindende Inhalte müssen den gleichen Bildtyp (z.B. 2D) haben."
#: src/lib/ffmpeg_content.cc:116
msgid "Content to be joined must use the same audio stream."
-msgstr "Zu verbindende Inhalte müssen die gleiche Tonspurart verwenden."
+msgstr ""
+"Zu verbindende Inhalte müssen die gleiche Tonspurkonfiguration verwenden."
#: src/lib/ffmpeg_content.cc:112
msgid "Content to be joined must use the same subtitle stream."
msgstr "Zu verbindende Inhalte müssen die gleiche Untertitelspur verwenden."
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "DCP zu TMS übertragen"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "Keine Verbindung zu Server %1 (%2)"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "Konnte entfernten Ordner %1 (%2) nicht erstellen."
-#: src/lib/image_proxy.cc:128
-msgid "Could not decode image file"
+#: src/lib/image_proxy.cc:147
+#, fuzzy
+msgid "Could not decode image file (%1)"
msgstr "Bilddatei konnte nicht dekodiert werden"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "%1 konnte nicht geöffnet werden."
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "%1 konnte nicht zum Senden geöffnet werden"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
msgid "Could not open downloaded ZIP file"
msgstr "Heruntergeladene ZIP Datei kann nicht geöffnet werden."
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "SCP Session (%1) konnte nicht gestartet werden"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "Entfernte Datei (%1) konnte nicht gespeichert werden"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "DCP läuft mit %1% der Original Geschwindigkeit der Quelle.\n"
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
msgid "DCP will use every other frame of the content.\n"
msgstr "DCP verwendet nur jedes zweite Bild des Quelle.\n"
@@ -241,7 +249,7 @@ msgstr ""
msgid "De-interlacing"
msgstr "De-Interlacer"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
@@ -257,7 +265,7 @@ msgid ""
msgstr ""
"Sehr geehrter Vorfuehrer,\n"
"\n"
-"Im Anhang finden Sie die KDM für den Film $CPL_NAME.\n"
+"Im Anhang finden Sie die KDM fuer den Film $CPL_NAME.\n"
"\n"
"Der Schluessel ist vom $START_TIME bis zum $END_TIME gueltig fuer:\n"
"\n"
@@ -271,23 +279,23 @@ msgstr ""
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP650 und CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr "Herunterladen fehlgeschlagen (%1/%2 Fehler %3)"
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Jedes Bild der Quelle wird im DCP verdoppelt.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr "Jedes Bild der Quelle wird %1 mal im DCP wiederholt.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr "Email KDMs für %1"
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr "Kodiere Bilddaten"
@@ -299,7 +307,7 @@ msgstr "Fehler (%1)"
msgid "Examine content"
msgstr "Inhalt wird überprüft"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "Authentifizierung mit Server (%1) fehlgeschlagen"
@@ -311,11 +319,11 @@ msgstr "Schneller Bilinearer Filter"
msgid "Feature"
msgstr "Hauptfilm"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Flat"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
msgstr "Ganzes Bild"
@@ -327,7 +335,7 @@ msgstr "Gauss Filter"
msgid "Gradient debander"
msgstr "Gradient Glätter"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "HI"
@@ -343,6 +351,10 @@ msgstr ""
"Ein unbekannter Fehler ist aufgetreten. Bitte schicken Sie eine Nachricht an "
"den DCP-o-matic Autor (carl@dcpomatic.com)."
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr "KDM Zustellung: $CPL_NAME"
+
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
msgstr "Kernel De-Interlacer"
@@ -351,23 +363,23 @@ msgstr "Kernel De-Interlacer"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Links"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr "Center links"
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
msgid "Left rear surround"
msgstr "Surround hinten links"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "Surround links"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "LFE (Subwoofer)"
@@ -379,11 +391,11 @@ msgstr "Verschiedenes"
msgid "Motion compensating deinterlacer"
msgstr "Bewegungskompensierender De-Interlacer"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr "Unskaliert"
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
msgid "No stretch"
msgstr "Nicht verzerrt"
@@ -431,31 +443,31 @@ msgstr "Hinweis"
msgid "Rating"
msgstr "Freigabehinweis"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
msgid "Rec. 709"
msgstr "Rec. 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Rechts"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr "Center rechts"
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
msgid "Right rear surround"
msgstr "Surround hinten rechts"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Surround rechts"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "SSH Fehler (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Scope"
@@ -495,7 +507,7 @@ msgstr ""
msgid "There was not enough memory to do this."
msgstr "Zu wenig Speicher für diese Operation."
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
"loaded into this version. Sorry!"
@@ -504,7 +516,7 @@ msgstr ""
"kann leider nicht mit dieser älteren Version geladen werden. Sie müssen den "
"Film neu erstellen. Sorry!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
@@ -526,11 +538,11 @@ msgstr "Wandle %1 um"
msgid "Transitional"
msgstr "Überleitung"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr "Ungültiger ZIP Inhalt"
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
msgstr "Ungültiges Bildformat vom Server erhalten"
@@ -538,7 +550,7 @@ msgstr "Ungültiges Bildformat vom Server erhalten"
msgid "Unknown error"
msgstr "Unbekannter Fehler"
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Ton Sample Format (%1) nicht erkannt."
@@ -546,15 +558,15 @@ msgstr "Ton Sample Format (%1) nicht erkannt."
msgid "Unsharp mask and Gaussian blur"
msgstr "Unscharf Maskieren mit Gaußschem Unschärfefilter"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Unbenannt"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr "VI"
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "Warte..."
@@ -566,7 +578,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Und ein weiterer De-Interlacer..."
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "Sie müssen erst Inhalte hinzufügen bevor Sie ein DCP erstellen können!"
@@ -578,27 +590,27 @@ msgstr "[Bewegte Bilder]"
msgid "[still]"
msgstr "[Standbild]"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "Darf keine Schrägstriche enthalten"
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
-msgstr "Zeit zur Verbindung abgelaufen"
+msgstr "Zeit für Verbindung abgelaufen"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "verbinde..."
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "Containerformat"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "Inhaltsbeschreibung"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "kopiere %1"
@@ -606,19 +618,19 @@ msgstr "kopiere %1"
msgid "could not create file %1"
msgstr "Datei %1 konnte nicht erstellt werden."
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "Ton Dekoder nicht gefunden."
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "Keine Spur-Information gefunden"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "Bild-Dekoder nicht gefunden"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr "Ton MXF kann nicht in das DCP verschoben werden (%1)"
@@ -630,11 +642,11 @@ msgstr "Tondatei kann nicht zum Lesen geöffnet werden."
msgid "could not open file %1"
msgstr "Datei %1 konnte nicht geöffnet werden."
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "Datei konnte nicht zum Lesen geöffnet werden."
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
msgid "could not read encoded data"
msgstr "Kodierte Daten nicht gefunden."
@@ -650,11 +662,11 @@ msgstr "Sample-Rate konnte nicht gewandelt werden"
msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
msgstr "Sample-Rate für %1 samples konnte nicht gewandelt werden (%2)(%3)"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "SCP Session konnte nicht gestartet werden (%1)"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "SSH Session konnte nicht gestartet werden"
@@ -662,43 +674,43 @@ msgstr "SSH Session konnte nicht gestartet werden"
msgid "could not write to file %1 (%2)"
msgstr "Datei %1 konnte nicht geschrieben werden (%2)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr "error during async_accept (%1)"
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr "error during async_connect (%1)"
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr "error during async_read (%1)"
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr "error during async_write (%1)"
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "Bilder pro Sekunde"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "Stunde"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "Stunden"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "Minute"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "Minuten"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
msgstr "Key %1 in Key-value set fehlt"
@@ -710,15 +722,15 @@ msgstr "Benötigte Einstellung %1 fehlt"
msgid "moving"
msgstr "wird verschoben"
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "Mehr-Segment Untertitel werden noch nicht unterstützt"
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "Name"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "Nur Bitmap Untertitel werden unterstützt"
@@ -728,15 +740,20 @@ msgstr "Nur Bitmap Untertitel werden unterstützt"
msgid "remaining"
msgstr "verbleibend"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB nicht linearisiert"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "Sekunden"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "Sekunden"
diff --git a/src/lib/po/es_ES.po b/src/lib/po/es_ES.po
index 813600fe5..fe5615e1e 100644
--- a/src/lib/po/es_ES.po
+++ b/src/lib/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: LIBDCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-04-20 10:12-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -33,23 +33,23 @@ msgstr "%1 canales, %2kHz, %3 muestras"
msgid "%1 frames; %2 frames per second"
msgstr "%1 imágenes; %2 imágenes per second"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr "%1x%2 pixels (%3:1)"
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1.19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1.375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1.66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -57,11 +57,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "reducción de ruido 3D"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academy"
@@ -97,15 +97,15 @@ msgstr "Cancelado"
msgid "Cannot handle pixel format %1 during %2"
msgstr "No se puede usar el formato de pixel %1 para %2"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Centro"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr "Comprobando las imágenes existentes"
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr "Calculando la firma resumen del audio"
@@ -113,11 +113,11 @@ msgstr "Calculando la firma resumen del audio"
msgid "Computing digest"
msgstr "Calculando la firma resumen"
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr "Calculando la firma resumen de imagen"
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
msgid "Content and DCP have the same rate.\n"
msgstr "La fuente y el DCP tienen la misma velocidad.\n"
@@ -129,41 +129,47 @@ msgstr "Para unir contenido debe tener el mismo retardo de audio."
msgid "Content to be joined must have the same audio gain."
msgstr "Para unir contenido debe tener la misma ganancia de audio."
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr "Para unir contenido debe tener la misma conversión de color."
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
msgstr "Para unir contenido debe tener el mismo recorte."
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr "Para unir contenido debe tener el mismo tamaño de imagen."
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
msgid "Content to be joined must have the same scale setting."
msgstr "Para unir contenido debe tener la misma redimensión."
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
msgid "Content to be joined must have the same subtitle X offset."
msgstr ""
"Para unir contenido debe tener el mismo desplazamiento de subtítulo en X."
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Para unir contenido debe tener el mismo tamaño de subtítulo."
+
+#: src/lib/subtitle_content.cc:85
msgid "Content to be joined must have the same subtitle Y offset."
msgstr ""
"Para unir contenido debe tener el mismo desplazamiento de subtítulo en Y."
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr "Para unir contenido debe tener el mismo tamaño de subtítulo."
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr "Para unir contenido debe tener la misma velocidad de imagen."
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
msgstr "Para unir contenido debe tener el mismo tamaño de imagen."
@@ -175,48 +181,48 @@ msgstr "Para unir contenido debe usar el mismo tipo de audio."
msgid "Content to be joined must use the same subtitle stream."
msgstr "Para unir contenido debe tener el mismo tipo de subtítulos."
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "Copiar DCP al TMS"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "No se pudo conectar al servidor %1 (%2)"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "No se pudo crear la carpeta remota %1 (%2)"
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
#, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
msgstr "No se pudo crear el fichero (%1)"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "No se pudo abrir %1"
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "No se pudo abrir %1 para enviar"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
msgid "Could not open downloaded ZIP file"
msgstr "No se puedo abrir el fichero ZIP descargado"
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "No se pudo iniciar la sesión SCP (%1)"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "No se pudo escribir el fichero remoto (%1)"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "El DCP se reproducirá al %1%% de la velocidad de la fuente.\n"
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
msgid "DCP will use every other frame of the content.\n"
msgstr "El DCP usará imágenes alternas de la fuente.\n"
@@ -237,7 +243,7 @@ msgstr "DCP-o-matic ya no ofrece el filtro `%1', así que ha sido desactivado."
msgid "De-interlacing"
msgstr "Desentrelazado"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
@@ -265,23 +271,23 @@ msgstr ""
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP650 and CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr "Descarga fallida (%1/%2 error %3)"
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Se doblará cada imagen en el DCP.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr "Cada imagen será repetida otras %1 veces en el DCP.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr "Enviar por email las KDM para %1"
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr "Codificando imagen"
@@ -293,7 +299,7 @@ msgstr "Error (%1)"
msgid "Examine content"
msgstr "Examinar contenido"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "Fallo al identificarse con el servidor (%1)"
@@ -305,11 +311,11 @@ msgstr "Bilineal rápido"
msgid "Feature"
msgstr "Película"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Flat"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
msgstr "Frame completo"
@@ -321,7 +327,7 @@ msgstr "Gaussiano"
msgid "Gradient debander"
msgstr "Gradient debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "Sordos"
@@ -338,6 +344,10 @@ msgstr ""
"Error desconocido. La mejor idea es informar del problema a la lista de "
"correo de DCP-o-matic (carl@dcpomatic.com)"
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
msgstr "Kernel deinterlacer"
@@ -346,23 +356,23 @@ msgstr "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Izquierda"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr "Centro izquierda"
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
msgid "Left rear surround"
msgstr "Surround trasero izquierda"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "Surround izquierda"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "Lfe (bajos)"
@@ -374,11 +384,11 @@ msgstr "Miscelánea"
msgid "Motion compensating deinterlacer"
msgstr "Motion compensating deinterlacer"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr "No redimensionar"
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
msgid "No stretch"
msgstr "Sin deformación"
@@ -423,31 +433,31 @@ msgstr "Anuncio de servicio público"
msgid "Rating"
msgstr "Clasificación"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
msgid "Rec. 709"
msgstr "Rec. 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Derecha"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr "Centro derecha"
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
msgid "Right rear surround"
msgstr "Surround trasero derecha"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Surround derecha"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "error SSH (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Scope"
@@ -487,7 +497,7 @@ msgstr ""
msgid "There was not enough memory to do this."
msgstr "No hubo suficiente memoria para hacer esto."
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
"loaded into this version. Sorry!"
@@ -496,7 +506,7 @@ msgstr ""
"desgraciadamente no s puede cargar. Necesitas crear una nueva película, "
"volver a añadir y configurar ton contenido. ¡Lo siento!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
@@ -518,11 +528,11 @@ msgstr "Codificar %1"
msgid "Transitional"
msgstr "Transitional"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr "Contenidos inesperados del fichero ZIP"
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
msgstr ""
@@ -530,7 +540,7 @@ msgstr ""
msgid "Unknown error"
msgstr "Error desconocido"
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Formato de audio desconocido (%1)"
@@ -538,15 +548,15 @@ msgstr "Formato de audio desconocido (%1)"
msgid "Unsharp mask and Gaussian blur"
msgstr "Máscara de desenfoque Gaussiano"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Sin título"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr "Ciegos"
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "Esperando"
@@ -558,7 +568,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Yet Another Deinterlacing Filter"
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "Tienes que añadir contenido al DCP antes de crearlo."
@@ -570,27 +580,27 @@ msgstr "[imágenes en movimiento]"
msgid "[still]"
msgstr "[imagen fija]"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "no puede contener barras"
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
msgstr "tiempo de conexión agotado"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "conectando"
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "continente"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "tipo de contenido"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "copiando %1"
@@ -598,19 +608,19 @@ msgstr "copiando %1"
msgid "could not create file %1"
msgstr "No se pudo crear el fichero (%1)"
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "no se encontró el decodificador de audio"
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "no se pudo encontrar información del flujo"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "no se pudo encontrar decodificador de vídeo"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr "no s puedo mover el audio MXF en el DCP (%1)"
@@ -622,11 +632,11 @@ msgstr "no se pudo abrir el fichero de audio para lectura"
msgid "could not open file %1"
msgstr "no se pudo abrir el fichero %1"
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "no se pudo abrir el fichero para lectura"
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
msgid "could not read encoded data"
msgstr "no se pudo leer la información codificada"
@@ -642,11 +652,11 @@ msgstr "no se pudo ejecutar el conversor de velocidad"
msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
msgstr "no se pudo ejecutar el conversor de velocidad"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "no se pudo abrir la sesión SCP (%1)"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "no se pudo abrir la sesión SSH"
@@ -654,43 +664,43 @@ msgstr "no se pudo abrir la sesión SSH"
msgid "could not write to file %1 (%2)"
msgstr "No se pudo escribir en el fichero (%1)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr "error durante async_accept (%1)"
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr "error durante async_connect (%1)"
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr "error durante async_read (%1)"
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr "error durante async_write (%1)"
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "imágenes por segundo"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "hora"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "horas"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "minuto"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "minutos"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
msgstr "falta la clave %1 en el par clave-valor"
@@ -702,15 +712,15 @@ msgstr "falta una configuración obligatoria %1"
msgid "moving"
msgstr "moviendo"
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "todavía no se soportan subtítulos en múltiples partes"
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "nombre"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
@@ -720,15 +730,20 @@ msgstr "todavía no se soportan subtítulos que no son en mapas de bits"
msgid "remaining"
msgstr "pendiente"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB no-lineal"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "segundos"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "segundos"
diff --git a/src/lib/po/fr_FR.po b/src/lib/po/fr_FR.po
index 6cef1b3dc..8f26f336a 100644
--- a/src/lib/po/fr_FR.po
+++ b/src/lib/po/fr_FR.po
@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 15:53+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 12:04+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
#: src/lib/sndfile_content.cc:61
msgid "%1 [audio]"
@@ -27,29 +27,29 @@ msgstr "%1 [vidéo]"
#: src/lib/sndfile_content.cc:82
msgid "%1 channels, %2kHz, %3 samples"
-msgstr "%1 canaux, %2kHz, %3 samples"
+msgstr "%1 canaux, %2kHz, %3 échantillons"
#: src/lib/ffmpeg_content.cc:246
msgid "%1 frames; %2 frames per second"
msgstr "%1 images ; %2 images par seconde"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr "%1x%2 pixels (%3:1)"
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1.19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1.375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1.66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -57,11 +57,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "Débruitage 3D"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academy"
@@ -79,7 +79,7 @@ msgstr "Analyse audio"
#: src/lib/scaler.cc:64
msgid "Area"
-msgstr "Area"
+msgstr "Surface"
#: src/lib/scaler.cc:62
msgid "Bicubic"
@@ -97,15 +97,15 @@ msgstr "Annulé"
msgid "Cannot handle pixel format %1 during %2"
msgstr "Format du pixel %1 non géré par %2"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Centre"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr "Recherche de données images existantes"
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr "Fabrication rendu audio"
@@ -113,11 +113,11 @@ msgstr "Fabrication rendu audio"
msgid "Computing digest"
msgstr "fabrication rendu"
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr "Fabrication rendu image"
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
msgid "Content and DCP have the same rate.\n"
msgstr "Le DCP et la source ont la même cadence image.\n"
@@ -129,45 +129,50 @@ msgstr "Le contenu à ajouter doit présenter le même délais audio"
msgid "Content to be joined must have the same audio gain."
msgstr "Le contenu à ajouter doit avoir le même gain audio"
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr "Le contenu à ajouter doit avoir le même type de conversion couleur"
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
-msgstr ""
-"le contenu à ajouter doit avoir les mêmes valeurs de \"crop\" ou découpage"
+msgstr "le contenu à ajouter doit avoir les mêmes valeurs de rognage"
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr "Le contenu à ajouter doit avoir la même taille d'image"
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
msgid "Content to be joined must have the same scale setting."
msgstr ""
"Le contenu à ajouter doit avoir les mêmes paramètres de mise à l'échelle"
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
msgid "Content to be joined must have the same subtitle X offset."
msgstr ""
"Le contenu à ajouter doit avoir le même positionnement horizontal des sous-"
"titres"
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "le contenu à ajouter doit avoir le même positionnement de sous-titre"
+
+#: src/lib/subtitle_content.cc:85
msgid "Content to be joined must have the same subtitle Y offset."
msgstr ""
"Le contenu à ajouter doit avoir le même positionnement vertical des sous-"
"titres"
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr "le contenu à ajouter doit avoir le même positionnement de sous-titre"
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr "Le contenu à ajouter doit avoir la même cadence d'images"
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
msgstr "Le contenu à ajouter doit avoir le même type de trame vidéo"
@@ -179,57 +184,58 @@ msgstr "Le contenu à ajouter doit avoir le même flux audio"
msgid "Content to be joined must use the same subtitle stream."
msgstr "Le contenu à ajouter doit avoir le même flux sous titre"
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "Copier le DCP dans le TMS"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "Connexion au serveur %1 (%2) impossible"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "Création du dossier distant %1 (%2) impossible"
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
#, fuzzy
-msgid "Could not decode image file"
-msgstr "Écriture vers fichier distant (%1) impossible"
+msgid "Could not decode image file (%1)"
+msgstr "Impossible de décoder le ficher image"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "lecture du fichier %1 impossible"
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "Ouverture de %1 pour envoi impossible"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
msgid "Could not open downloaded ZIP file"
-msgstr "Ouverture du fichier Zip impossible"
+msgstr "Ouverture du fichier Zip téléchargé impossible"
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "Démarrage de session SCP (%1) impossible"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "Écriture vers fichier distant (%1) impossible"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "Le DCP sera lu à %1%% de la vitesse du contenu source.\n"
-#: src/lib/frame_rate_change.cc:81
-#, fuzzy
+#: src/lib/frame_rate_change.cc:89
msgid "DCP will use every other frame of the content.\n"
-msgstr "Le DCP utilisera une image sur deux de la source.\n"
+msgstr "Le DCP utilisera les autres images de la source.\n"
#: src/lib/job.cc:91
msgid ""
"DCP-o-matic could not open the file %1. Perhaps it does not exist or is in "
"an unexpected format."
-msgstr "DCP-o-matic ne peut pas ouvrir le fichier %1"
+msgstr ""
+"DCP-o-matic ne peut pas ouvrir le fichier %1. Soit il n'existe pas, soit il "
+"n'est pas au bon format."
#: src/lib/ffmpeg_content.cc:93
msgid ""
@@ -240,7 +246,7 @@ msgstr "DCP-o-matic ne gère plus le filtre `%1'. Celui-ci a été désactivé."
msgid "De-interlacing"
msgstr "Désentrelacement"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
@@ -254,28 +260,39 @@ msgid ""
"Best regards,\n"
"DCP-o-matic"
msgstr ""
+"Cher projectionniste\n"
+"\n"
+"Veuillez trouver les fichiers KDMs attachés pour $CPL_NAME.\n"
+"\n"
+"Cinema: $CINEMA_NAME\n"
+"Ecran(s): $SCREENS\n"
+"\n"
+"Les KDMs sont valides du $START_TIME au $END_TIME.\n"
+"\n"
+"Cordialement,\n"
+"DCP-o-matic"
#: src/lib/dolby_cp750.cc:27
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP650 et CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr "Echec de téléchargement (%1/%2 erreur %3)"
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Chaque image source sera doublée dans le DCP.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr "Chaque image source sera répetée %1 fois dans le DCP.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr "Envoyer KDM par email pour %1"
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr "encodage des données image"
@@ -287,7 +304,7 @@ msgstr "Erreur (%1)"
msgid "Examine content"
msgstr "Examen du contenu"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "L'authentification du serveur (%1) a échouée"
@@ -299,13 +316,13 @@ msgstr "Bilinéaire rapide"
msgid "Feature"
msgstr "Feature"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Flat"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
-msgstr "Pleine matrice"
+msgstr "Full frame"
#: src/lib/scaler.cc:65
msgid "Gaussian"
@@ -313,9 +330,9 @@ msgstr "Gaussien"
#: src/lib/filter.cc:68
msgid "Gradient debander"
-msgstr "Corrections des bandes du dégradé"
+msgstr "Corrections des bandes par dégradé"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "Déficients Auditifs"
@@ -331,6 +348,10 @@ msgstr ""
"Erreur indéterminée. Merci de rapporter le problème à l'auteur de DCP-o-"
"matic (carl@dcpomatic.com)"
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
msgstr "Désentrelaceur noyau"
@@ -339,23 +360,23 @@ msgstr "Désentrelaceur noyau"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Gauche"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr "Centre Gauche"
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
msgid "Left rear surround"
msgstr "Surround arrière gauche"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "Arrière gauche"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "Basses fréquences"
@@ -367,17 +388,17 @@ msgstr "Divers"
msgid "Motion compensating deinterlacer"
msgstr "Désentrelaceur par compensation de mouvement"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr "Pas de mise à l'échelle"
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
msgid "No stretch"
msgstr "Sans déformation"
#: src/lib/image_content.cc:50
msgid "No valid image files were found in the folder."
-msgstr ""
+msgstr "Aucun fichier image valide dans ce dossier."
#: src/lib/filter.cc:70 src/lib/filter.cc:71 src/lib/filter.cc:73
msgid "Noise reduction"
@@ -389,11 +410,11 @@ msgstr "OK (processus %1)"
#: src/lib/content.cc:102
msgid "Only the first piece of content to be joined can have a start trim."
-msgstr "Seul le premier contenu à ajouter peut avoir un coupure de début."
+msgstr "Seul le premier contenu à ajouter peut être rogné au point d'entrée."
#: src/lib/content.cc:106
msgid "Only the last piece of content to be joined can have an end trim."
-msgstr "Seul le dernier contenu à ajouter peut avoir une coupure en fin."
+msgstr "Seul le dernier contenu à ajouter peut être rogné au point de sortie."
#: src/lib/job.cc:103
msgid "Out of memory"
@@ -415,31 +436,31 @@ msgstr "Public Service Announcement"
msgid "Rating"
msgstr "Classification"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
msgid "Rec. 709"
msgstr "Rec. 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Droite"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr "Centre Droit"
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
msgid "Right rear surround"
msgstr "Surround arrière droite"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Arrière droite"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "Erreur SSH (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Scope"
@@ -472,14 +493,14 @@ msgid ""
"The drive that the film is stored on is low in disc space. Free some more "
"space and try again."
msgstr ""
-"Le disque contenant le film est plein. Libérez de l'espace et essayez à "
-"nouveau."
+"Le disque contenant le film est presque plein. Libérez de l'espace et "
+"essayez à nouveau."
#: src/lib/job.cc:103
msgid "There was not enough memory to do this."
msgstr "Il n'y avait pas assez de mémoire pour faire cela."
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
"loaded into this version. Sorry!"
@@ -487,14 +508,14 @@ msgstr ""
"Ce film a été créé avec une nouvelle version de DCP-o-matic et il ne peut "
"être ouvert dans cette version du programme. Désolé!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
"create a new Film, re-add your content and set it up again. Sorry!"
msgstr ""
"Ce projet a été créé avec une ancienne version de DCP-o-matic, chargement "
-"impossible. Créez un nouveau projet, ajoutez du contenu et reparamétrez. "
+"impossible. Créez un nouveau projet, ajoutez du contenu et reparamétrez. "
"Désolé !"
#: src/lib/dcp_content_type.cc:46
@@ -509,19 +530,19 @@ msgstr "Transcodage %1"
msgid "Transitional"
msgstr "Transitional"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr "Contenu de fichier ZIP non géré."
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
-msgstr ""
+msgstr "Type d'image non conforme reçu par le serveur"
#: src/lib/job.cc:120
msgid "Unknown error"
msgstr "Erreur inconnue"
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Échantillonnage audio (%1) inconnu"
@@ -529,15 +550,15 @@ msgstr "Échantillonnage audio (%1) inconnu"
msgid "Unsharp mask and Gaussian blur"
msgstr "Adoucissement et flou Gaussien"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Sans titre"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr "Déficients Visuels"
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "En cours"
@@ -549,7 +570,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Un autre filtre de désentrelacement"
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "Ajoutez un contenu pour créer le DCP"
@@ -561,27 +582,27 @@ msgstr "[Déplacement d'images]"
msgid "[still]"
msgstr "[restant]"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "slash interdit"
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
msgstr "temps de connexion expiré"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "connexion"
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "conteneur"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "type de contenu"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "copie de %1"
@@ -589,19 +610,19 @@ msgstr "copie de %1"
msgid "could not create file %1"
msgstr "Écriture vers fichier distant (%1) impossible"
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "décodeur audio introuvable"
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "information du flux introuvable"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "décodeur vidéo introuvable"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr "ne peut déplacer un MXF son dans le DCP (%1)"
@@ -613,11 +634,11 @@ msgstr "lecture du fichier audio impossible"
msgid "could not open file %1"
msgstr "lecture du fichier (%1) impossible"
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "lecture du fichier impossible"
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
msgid "could not read encoded data"
msgstr "lecture des données encodées impossible"
@@ -635,11 +656,11 @@ msgstr ""
"n'a pas pu convertir la fréquence d'échantillonnage pour %1 échantillons "
"(%2) (%3)"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "démarrage de session SCP (%1) impossible"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "démarrage de session SSH impossible"
@@ -647,45 +668,45 @@ msgstr "démarrage de session SSH impossible"
msgid "could not write to file %1 (%2)"
msgstr "Écriture vers fichier distant (%1) impossible (%2)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr "erreur pendant async_accept (%1)"
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr "erreur pendant async_connect (%1)"
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr "erreur pendant async_read (%1)"
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr "erreur pendant async_write (%1)"
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "images par seconde"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "heure"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "heures"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "minute"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "minutes"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
-msgstr "clé %1 non sélectionnée"
+msgstr "clé %1 manquante dans le réglage"
#: src/lib/exceptions.cc:54
msgid "missing required setting %1"
@@ -695,15 +716,15 @@ msgstr "paramètre %1 manquant"
msgid "moving"
msgstr "déplacement"
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "sous-titres en plusieurs parties non supportés"
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "nom"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "sous-titres non-bitmap non supportés actuellement"
@@ -713,15 +734,20 @@ msgstr "sous-titres non-bitmap non supportés actuellement"
msgid "remaining"
msgstr "restant"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB non linéarisé"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "secondes"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "secondes"
diff --git a/src/lib/po/it_IT.po b/src/lib/po/it_IT.po
index e2bce6f87..d4760b9d5 100644
--- a/src/lib/po/it_IT.po
+++ b/src/lib/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-02-03 10:48+0100\n"
"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
@@ -33,23 +33,23 @@ msgstr ""
msgid "%1 frames; %2 frames per second"
msgstr "%1 fotogrammi; %2 fotogrammi al secondo"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr ""
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1.19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1.375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1.66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -57,11 +57,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "Riduttore di rumore 3D"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academy"
@@ -98,15 +98,15 @@ msgstr "Cancellato"
msgid "Cannot handle pixel format %1 during %2"
msgstr "Non posso gestire il formato di pixel %1 durante %2"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Centro"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr ""
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr ""
@@ -114,11 +114,11 @@ msgstr ""
msgid "Computing digest"
msgstr ""
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr ""
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
#, fuzzy
msgid "Content and DCP have the same rate.\n"
msgstr "Il DCP e il sorgente hanno la stessa frequenza.\n"
@@ -131,43 +131,51 @@ msgstr ""
msgid "Content to be joined must have the same audio gain."
msgstr ""
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr ""
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
msgstr ""
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr ""
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
#, fuzzy
msgid "Content to be joined must have the same scale setting."
msgstr ""
"Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
msgid "Content to be joined must have the same subtitle X offset."
msgstr ""
"Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento X dei sottotitoli."
+
+#: src/lib/subtitle_content.cc:85
msgid "Content to be joined must have the same subtitle Y offset."
msgstr ""
"Il contenuto da unire deve avere lo stesso spostamento Y dei sottotitoli."
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr ""
+"Il contenuto da unire deve avere lo stesso spostamento Y dei sottotitoli."
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr ""
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
msgstr ""
@@ -179,50 +187,50 @@ msgstr ""
msgid "Content to be joined must use the same subtitle stream."
msgstr ""
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "Copia del DCP al TMS"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "Non posso connetermi al server %1 (%2)"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "Non posso creare la directory remota %1 (%2)"
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
#, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
msgstr "Non posso scrivere il file remoto (%1)"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "Non riesco ad aprire %1"
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "Non posso aprire %1 da inviare"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
#, fuzzy
msgid "Could not open downloaded ZIP file"
msgstr "non riesco ad aprire %1"
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "Non posso avviare la sessione SCP (%1)"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "Non posso scrivere il file remoto (%1)"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
#, fuzzy
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "Il DCP andrà al %1%% della velocità del sorgente.\n"
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
#, fuzzy
msgid "DCP will use every other frame of the content.\n"
msgstr "Il DCP userà ogni altro fotogramma del sorgente.\n"
@@ -244,7 +252,7 @@ msgstr ""
msgid "De-interlacing"
msgstr "De-interlacciamento"
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
@@ -273,23 +281,23 @@ msgstr ""
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr ""
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Ogni fotogramma del sorgente sarà duplicato nel DCP.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr "Ogni fotogramma del sorgente sarà ripetuto %1 volte nel DCP.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr ""
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr ""
@@ -301,7 +309,7 @@ msgstr "Errore (%1)"
msgid "Examine content"
msgstr "Esamino il contenuto"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "Autenticazione col server fallita (%1) "
@@ -313,11 +321,11 @@ msgstr "Bilineare rapida"
msgid "Feature"
msgstr "Caratteristica"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Flat"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
msgstr "Schermo intero"
@@ -329,7 +337,7 @@ msgstr "Gaussiana"
msgid "Gradient debander"
msgstr "Gradiente debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr ""
@@ -346,6 +354,10 @@ msgstr ""
"Non sappiamo cosa ha causato questo errore. La cosa migliore è inviare un "
"report del problema alla mailing list di DCP-o-matic (carl@dcpomatic.com)"
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
msgstr "Deinterlacciatore Kernel"
@@ -354,24 +366,24 @@ msgstr "Deinterlacciatore Kernel"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Sinistro"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr ""
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
#, fuzzy
msgid "Left rear surround"
msgstr "Surround sinistro"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "Surround sinistro"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "Lfe(sub)"
@@ -383,11 +395,11 @@ msgstr "Varie"
msgid "Motion compensating deinterlacer"
msgstr "Dinterlacciatore con compensazione di movimento"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr ""
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
#, fuzzy
msgid "No stretch"
msgstr "Flat senza stiramento"
@@ -432,33 +444,33 @@ msgstr "Annuncio di pubblico servizio"
msgid "Rating"
msgstr "Punteggio"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
#, fuzzy
msgid "Rec. 709"
msgstr "Rec 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Destro"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr ""
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
#, fuzzy
msgid "Right rear surround"
msgstr "Surround destro"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Surround destro"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "Errore SSH (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Scope"
@@ -498,7 +510,7 @@ msgstr ""
msgid "There was not enough memory to do this."
msgstr ""
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
#, fuzzy
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
@@ -509,7 +521,7 @@ msgstr ""
"un nuovo film, ri-aggiungere i tuoi contenuti e configurarlo di nuovo. Ci "
"dispiace!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
@@ -532,11 +544,11 @@ msgstr "Transcodifica %1"
msgid "Transitional"
msgstr "Di transizione"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr ""
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
msgstr ""
@@ -544,7 +556,7 @@ msgstr ""
msgid "Unknown error"
msgstr "Errore sconosciuto"
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Formato di campionamento audio non riconosciuto (%1)"
@@ -552,15 +564,15 @@ msgstr "Formato di campionamento audio non riconosciuto (%1)"
msgid "Unsharp mask and Gaussian blur"
msgstr "Maschera unsharp e sfocatura Gaussiana"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Senza titolo"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr ""
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "Aspetta"
@@ -572,7 +584,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Altro filtro di deinterlacciamento"
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "Devi aggiungere dei contenuti al DCP prima di crearlo"
@@ -585,27 +597,27 @@ msgstr ""
msgid "[still]"
msgstr "ancora"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "non può contenere barre"
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
msgstr "connessione scaduta"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "mi sto connettendo"
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "contenitore"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "tipo di contenuto"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "copia %1"
@@ -613,19 +625,19 @@ msgstr "copia %1"
msgid "could not create file %1"
msgstr "Non posso scrivere il file remoto (%1)"
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "non riesco a trovare il decoder audio"
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "non riesco a trovare informazioni sullo streaming"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "non riesco a trovare il decoder video"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr ""
@@ -637,11 +649,11 @@ msgstr "non riesco ad aprire il file in lettura"
msgid "could not open file %1"
msgstr "non riesco ad aprire %1"
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "non riesco ad aprire il file per leggerlo"
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
#, fuzzy
msgid "could not read encoded data"
msgstr "non riesco a trovare il decoder audio"
@@ -659,11 +671,11 @@ msgstr "non riesco a eseguire il convertitore della frequenza di campionamento"
msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
msgstr "non riesco a eseguire il convertitore della frequenza di campionamento"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "non posso avviare la sessione SCP (%1)"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "non posso avviare la sessione SSH"
@@ -671,43 +683,43 @@ msgstr "non posso avviare la sessione SSH"
msgid "could not write to file %1 (%2)"
msgstr "non posso scrivere il file (%1)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr ""
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr ""
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr ""
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr ""
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "fotogrammi al secondo"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "ora"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "ore"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "minuto"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "minuti"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
msgstr "persa la chiave %1 tra i valori chiave"
@@ -719,15 +731,15 @@ msgstr "persa la regolazione richiesta %1"
msgid "moving"
msgstr ""
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "sottotitoli multi-part non ancora supportati"
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "nome"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "sottotitoli non-bitmap non ancora supportati"
@@ -737,15 +749,20 @@ msgstr "sottotitoli non-bitmap non ancora supportati"
msgid "remaining"
msgstr "restano"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB non linearizzato"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "secondi"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "secondi"
diff --git a/src/lib/po/nl_NL.po b/src/lib/po/nl_NL.po
index f471ce8af..09f14e1ac 100644
--- a/src/lib/po/nl_NL.po
+++ b/src/lib/po/nl_NL.po
@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:39+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:34+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
"Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/lib/sndfile_content.cc:61
@@ -34,23 +34,23 @@ msgstr "%1 kanalen, %2kHz, %3 samples"
msgid "%1 frames; %2 frames per second"
msgstr "%1 frames; %2 frames per seconde"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr "%1x%2 pixels (%3:1)"
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1.19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1.375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1.66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -58,11 +58,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "3D ruisonderdrukking"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academie"
@@ -98,15 +98,15 @@ msgstr "Afgebroken"
msgid "Cannot handle pixel format %1 during %2"
msgstr "Fout met pixel formaat %1 tijdens %2"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Midden"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr "Controleer bestaande videodata"
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr "Verwerk audio data"
@@ -114,11 +114,11 @@ msgstr "Verwerk audio data"
msgid "Computing digest"
msgstr "Verwerken..."
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr "Verwerk video data"
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
msgid "Content and DCP have the same rate.\n"
msgstr "Inhoud en DCP hebben dezelfde framerate .\n"
@@ -130,39 +130,45 @@ msgstr "Toegevoegde bestanden moeten dezelfde audio vertraging hebben."
msgid "Content to be joined must have the same audio gain."
msgstr "Toegevoegde bestanden moeten dezelfde audio gain hebben."
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr "Toegevoegde bestanden moeten dezelfde kleurindeling hebben."
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
msgstr "Toegevoegde bestanden moeten dezelfde crop hebben."
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr "Toegevoegde bestanden moeten dezelfde grootte hebben."
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
msgid "Content to be joined must have the same scale setting."
msgstr "Toegevoegde bestanden moeten dezelfde schaal hebben."
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
msgid "Content to be joined must have the same subtitle X offset."
msgstr "Toegevoegde bestanden moeten dezelfde ondertitel X offset hebben."
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Toegevoegde bestanden moeten dezelfde ondertitel grootte hebben."
+
+#: src/lib/subtitle_content.cc:85
msgid "Content to be joined must have the same subtitle Y offset."
msgstr "Toegevoegde bestanden moeten dezelfde ondertitel Y offset hebben."
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr "Toegevoegde bestanden moeten dezelfde ondertitel grootte hebben."
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr "Toegevoegde bestanden moeten dezelfde video frame rate hebben."
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
msgstr "Toegevoegde bestanden moeten dezelfde video formaat hebben."
@@ -174,48 +180,48 @@ msgstr "Toegevoegde bestanden moeten dezelfde audio stream gebruiken."
msgid "Content to be joined must use the same subtitle stream."
msgstr "Toegevoegde bestanden moeten dezelfde ondertitel stream gebruiken."
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "Kopieer DCP to TMS"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "Kan niet verbinden met server %1 (%2)"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "Kan geen remote map maken %1 (%2)"
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
#, fuzzy
-msgid "Could not decode image file"
-msgstr "kan geen bestand maken %1"
+msgid "Could not decode image file (%1)"
+msgstr "Kan beeldbestand niet decoderen"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "Kan niet openen %1"
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "Kan niet openen %1 om te verzenden"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
msgid "Could not open downloaded ZIP file"
msgstr "Kan gedownloade ZIP bestand niet openen"
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "Kan SCP sessie niet starten (%1)"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "Kan niet schrijven naar bestand op FTP server"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "DCP renderd met %1%% van de content framerate.\n"
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
msgid "DCP will use every other frame of the content.\n"
msgstr "DCP zal alleen elk ander frame van de content gebruiken.\n"
@@ -238,8 +244,7 @@ msgstr ""
msgid "De-interlacing"
msgstr "De-interlacing"
-#: src/lib/config.cc:417
-#, fuzzy
+#: src/lib/config.cc:436
msgid ""
"Dear Projectionist\n"
"\n"
@@ -256,6 +261,8 @@ msgstr ""
"Geachte operator\n"
"\n"
"Bijgevoegd zijn KDMs voor $CPL_NAME.\n"
+"Bioscoop: $CINEMA_NAME\n"
+"Zaal/Zalen: $SCREENS\n"
"\n"
"De KDMs zijn geldig van $START_TIME tot $END_TIME.\n"
"\n"
@@ -266,23 +273,23 @@ msgstr ""
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP650 and CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr "Fout met download(%1/%2 error %3)"
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Elk content frame zal verdubbeld worden de DCP.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr "Elk content frame zal %1 herhaald worden in de DCP.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr "Email KDMs voor %1"
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr "Encoding bestandsdata"
@@ -294,7 +301,7 @@ msgstr "Fout (%1)"
msgid "Examine content"
msgstr "Controleer content"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "Inlog fout met server (%1)"
@@ -306,11 +313,11 @@ msgstr "Fast Bilinear"
msgid "Feature"
msgstr "Kenmerken"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Onbewerkt"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
msgstr "Full frame"
@@ -322,7 +329,7 @@ msgstr "Gaussian"
msgid "Gradient debander"
msgstr "Gradient debander"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr "Slechthorenden"
@@ -331,13 +338,16 @@ msgid "High quality 3D denoiser"
msgstr "High quality 3D denoiser"
#: src/lib/job.cc:111 src/lib/job.cc:121
-#, fuzzy
msgid ""
"It is not known what caused this error. Please report the problem to the "
"DCP-o-matic author (carl@dcpomatic.com)."
msgstr ""
"Dit is een onbekende fout. U kunt deze het beste melden bij de DCP-o-matic "
-"mailing lijst (carl@dcpomatic.com)"
+"maker (carl@dcpomatic.com)"
+
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr "KDM levering: $CPL_NAME"
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
@@ -347,23 +357,23 @@ msgstr "Kernel deinterlacer"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Links"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr "Links midden"
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
msgid "Left rear surround"
msgstr "Links achter surround"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "links surround"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "Lfe (sub)"
@@ -375,17 +385,17 @@ msgstr "Diverse"
msgid "Motion compensating deinterlacer"
msgstr "Motion compensating deinterlacer"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr "Niet vergroten of verkleinen"
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
msgid "No stretch"
msgstr "Niet uitvullen"
#: src/lib/image_content.cc:50
msgid "No valid image files were found in the folder."
-msgstr ""
+msgstr "Geen geldige beeldbestanden gevonden in deze map."
#: src/lib/filter.cc:70 src/lib/filter.cc:71 src/lib/filter.cc:73
msgid "Noise reduction"
@@ -427,31 +437,31 @@ msgstr "Publieke Service aankondiging"
msgid "Rating"
msgstr "Beoordeling"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
msgid "Rec. 709"
msgstr "Rec. 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Rechts"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr "Rechts midden"
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
msgid "Right rear surround"
msgstr "Rechtsachter surround"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Rechts surround"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "SSH fout (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Gebied"
@@ -491,7 +501,7 @@ msgstr ""
msgid "There was not enough memory to do this."
msgstr "Er was niet genoeg geheugen om dit uit te voeren."
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
"loaded into this version. Sorry!"
@@ -499,7 +509,7 @@ msgstr ""
"Deze film is gemaakt met een nieuwere versie van DCP-o-matic en kan niet "
"geopend worden. Sorry!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
@@ -521,19 +531,19 @@ msgstr "Omzetten %1"
msgid "Transitional"
msgstr "Bumper"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr "Onverwachte ZIP file inhoud"
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
-msgstr ""
+msgstr "Onverwacht beeldtype ontvangen door server"
#: src/lib/job.cc:120
msgid "Unknown error"
msgstr "Onbekende fout"
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Niet herkenbaar audio sample formaat (%1)"
@@ -541,15 +551,15 @@ msgstr "Niet herkenbaar audio sample formaat (%1)"
msgid "Unsharp mask and Gaussian blur"
msgstr "Unsharp mask and Gaussian blur"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Niet benoemd"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr "Slechtzienden"
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "Wachten"
@@ -561,7 +571,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Yet Another Deinterlacing Filter"
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "U moet wat content toevoegen voor het maken van de DCP"
@@ -573,27 +583,27 @@ msgstr "[bewegend beeld]"
msgid "[still]"
msgstr "[still]"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "er mag geen '\" gebruikt worden"
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
msgstr "verbinding timeout"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "verbinden"
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "container"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "content type"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "kopieeren %1"
@@ -601,19 +611,19 @@ msgstr "kopieeren %1"
msgid "could not create file %1"
msgstr "kan geen bestand maken %1"
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "kan geen audio decoder vinden"
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "kan geen stream informatie vinden"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "kan geen videodecoder vinden"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr "kan MXF audio niet plaatsen in DCP (%1)"
@@ -625,11 +635,11 @@ msgstr "kan audio bestand niet openen om te lezen"
msgid "could not open file %1"
msgstr "kan bestand niet openen %1"
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "kan bestand niet openen om te lezen"
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
msgid "could not read encoded data"
msgstr "kan encoded data niet lezen"
@@ -645,11 +655,11 @@ msgstr "kan sample-rate converter niet starten"
msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
msgstr "kan sample-rate converter niet starten gedurende %1 samples (%2) (%3)"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "kan SCP sessie niet starten (%1)"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "kan SSH sessie niet starten"
@@ -657,43 +667,43 @@ msgstr "kan SSH sessie niet starten"
msgid "could not write to file %1 (%2)"
msgstr "kan niet schrijven naar bestand %1 (%2)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr "fout met async_accepteren (FTP) (%1)"
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr "fout met async_verbinden (FTP) (%1)"
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr "fout met async_lezen (FTP) (%1)"
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr "fout met async_schrijven (FTP) (%1)"
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "frames per seconde"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "uur"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "uren"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "minuut"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "minuten"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
msgstr "ontbrekende key %1 in key-value set"
@@ -705,15 +715,15 @@ msgstr "ontbrekende verplichte setting %1"
msgid "moving"
msgstr "bewegend"
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "ondertitels met meerdere delen worden nog niet ondersteund."
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "naam"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "non-bitmap ondertitels worden nog niet ondersteund"
@@ -723,15 +733,19 @@ msgstr "non-bitmap ondertitels worden nog niet ondersteund"
msgid "remaining"
msgstr "resterend"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB non-linearised"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+msgid "second"
+msgstr "secondes"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "secondes"
diff --git a/src/lib/po/sv_SE.po b/src/lib/po/sv_SE.po
index 98d76e3bd..32843da7a 100644
--- a/src/lib/po/sv_SE.po
+++ b/src/lib/po/sv_SE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-01-19 08:59+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
@@ -33,23 +33,23 @@ msgstr "%1 kanaler, %2kHz, %3 sampel"
msgid "%1 frames; %2 frames per second"
msgstr "%1 bilder; %2 bilder per sekund"
-#: src/lib/video_content.cc:206
+#: src/lib/video_content.cc:211
msgid "%1x%2 pixels (%3:1)"
msgstr "%1x%2 pixlar (%3:1)"
-#: src/lib/ratio.cc:35
+#: src/lib/ratio.cc:34
msgid "1.19"
msgstr "1,19"
-#: src/lib/ratio.cc:38
+#: src/lib/ratio.cc:37
msgid "1.375"
msgstr "1,375"
-#: src/lib/ratio.cc:39
+#: src/lib/ratio.cc:38
msgid "1.66"
msgstr "1,66"
-#: src/lib/ratio.cc:40
+#: src/lib/ratio.cc:39
msgid "16:9"
msgstr "16:9"
@@ -57,11 +57,11 @@ msgstr "16:9"
msgid "3D denoiser"
msgstr "3D brusreducering"
-#: src/lib/ratio.cc:36
+#: src/lib/ratio.cc:35
msgid "4:3"
msgstr "4:3"
-#: src/lib/ratio.cc:37
+#: src/lib/ratio.cc:36
msgid "Academy"
msgstr "Academy"
@@ -97,15 +97,15 @@ msgstr "Avbruten"
msgid "Cannot handle pixel format %1 during %2"
msgstr "Kan inte hantera pixelformat %1 under %2"
-#: src/lib/util.cc:751
+#: src/lib/util.cc:786
msgid "Centre"
msgstr "Center"
-#: src/lib/writer.cc:82
+#: src/lib/writer.cc:83
msgid "Checking existing image data"
msgstr "Kontrollerar befintligt bilddata"
-#: src/lib/writer.cc:471
+#: src/lib/writer.cc:475
msgid "Computing audio digest"
msgstr "Beräknar audiosammanfattning"
@@ -113,11 +113,11 @@ msgstr "Beräknar audiosammanfattning"
msgid "Computing digest"
msgstr "Beräknar sammanfattning"
-#: src/lib/writer.cc:467
+#: src/lib/writer.cc:471
msgid "Computing image digest"
msgstr "Beräknar bildsammanfattning"
-#: src/lib/frame_rate_change.cc:78
+#: src/lib/frame_rate_change.cc:86
msgid "Content and DCP have the same rate.\n"
msgstr "Källa och DCP har samma bildfrekvens.\n"
@@ -129,44 +129,50 @@ msgstr "Innehåll som ska sammanfogas måste använda samma audiofördröjning."
msgid "Content to be joined must have the same audio gain."
msgstr "Innehåll som ska sammanfogas måste använda samma audioförstärkning."
-#: src/lib/video_content.cc:144
+#: src/lib/video_content.cc:146
msgid "Content to be joined must have the same colour conversion."
msgstr "Innehåll som ska sammanfogas måste använda samma färgkonvertering."
-#: src/lib/video_content.cc:136
+#: src/lib/video_content.cc:138
msgid "Content to be joined must have the same crop."
msgstr "Innehåll som ska sammanfogas måste använda samma beskärning."
-#: src/lib/video_content.cc:124
+#: src/lib/video_content.cc:126
msgid "Content to be joined must have the same picture size."
msgstr "Innehåll som ska sammanfogas måste använda samma bildstorlek."
-#: src/lib/video_content.cc:140
+#: src/lib/video_content.cc:142
#, fuzzy
msgid "Content to be joined must have the same scale setting."
msgstr "Innehåll som ska sammanfogas måste använda samma bildförhållande."
-#: src/lib/subtitle_content.cc:73
+#: src/lib/subtitle_content.cc:81
#, fuzzy
msgid "Content to be joined must have the same subtitle X offset."
msgstr ""
"Innehåll som ska sammanfogas måste använda samma förskjutning på undertexten."
-#: src/lib/subtitle_content.cc:77
+#: src/lib/subtitle_content.cc:89
+#, fuzzy
+msgid "Content to be joined must have the same subtitle X scale."
+msgstr "Innehåll som ska sammanfogas måste använda samma skala på undertexten."
+
+#: src/lib/subtitle_content.cc:85
#, fuzzy
msgid "Content to be joined must have the same subtitle Y offset."
msgstr ""
"Innehåll som ska sammanfogas måste använda samma förskjutning på undertexten."
-#: src/lib/subtitle_content.cc:81
-msgid "Content to be joined must have the same subtitle scale."
+#: src/lib/subtitle_content.cc:93
+#, fuzzy
+msgid "Content to be joined must have the same subtitle Y scale."
msgstr "Innehåll som ska sammanfogas måste använda samma skala på undertexten."
-#: src/lib/video_content.cc:128
+#: src/lib/video_content.cc:130
msgid "Content to be joined must have the same video frame rate."
msgstr "Innehåll som ska sammanfogas måste använda samma videobildhastighet."
-#: src/lib/video_content.cc:132
+#: src/lib/video_content.cc:134
msgid "Content to be joined must have the same video frame type."
msgstr "Innehåll som ska sammanfogas måste använda samma videobildtyp."
@@ -178,49 +184,49 @@ msgstr "Innehåll som ska sammanfogas måste använda samma audioström."
msgid "Content to be joined must use the same subtitle stream."
msgstr "Innehåll som ska sammanfogas måste använda samma undertextström."
-#: src/lib/scp_dcp_job.cc:112
+#: src/lib/scp_dcp_job.cc:111
msgid "Copy DCP to TMS"
msgstr "Kopiera DCP till TMS"
-#: src/lib/scp_dcp_job.cc:137
+#: src/lib/scp_dcp_job.cc:130
msgid "Could not connect to server %1 (%2)"
msgstr "Kunde inte ansluta till server %1 (%2)"
-#: src/lib/scp_dcp_job.cc:159
+#: src/lib/scp_dcp_job.cc:152
msgid "Could not create remote directory %1 (%2)"
msgstr "Kunde inte skapa fjärrkatalog %1 (%2)"
-#: src/lib/image_proxy.cc:128
+#: src/lib/image_proxy.cc:147
#, fuzzy
-msgid "Could not decode image file"
+msgid "Could not decode image file (%1)"
msgstr "kunde inte skapa fil %1"
#: src/lib/job.cc:90
msgid "Could not open %1"
msgstr "Kunde inte öppna %1"
-#: src/lib/scp_dcp_job.cc:184
+#: src/lib/scp_dcp_job.cc:177
msgid "Could not open %1 to send"
msgstr "Kunde inte öppna %1 för att skicka"
-#: src/lib/internet.cc:72
+#: src/lib/internet.cc:74
#, fuzzy
msgid "Could not open downloaded ZIP file"
msgstr "kunde inte öppna fil %1"
-#: src/lib/scp_dcp_job.cc:154
+#: src/lib/scp_dcp_job.cc:147
msgid "Could not start SCP session (%1)"
msgstr "Kunde inte starta SCP-session (%1)"
-#: src/lib/scp_dcp_job.cc:198
+#: src/lib/scp_dcp_job.cc:191
msgid "Could not write to remote file (%1)"
msgstr "Kunde inte skriva till fjärrfil (%1)"
-#: src/lib/frame_rate_change.cc:90
+#: src/lib/frame_rate_change.cc:98
msgid "DCP will run at %1%% of the content speed.\n"
msgstr "DCP kommer att köras på %1%% av källans hastighet.\n"
-#: src/lib/frame_rate_change.cc:81
+#: src/lib/frame_rate_change.cc:89
msgid "DCP will use every other frame of the content.\n"
msgstr "DCP kommer att använda varannan bild från källan.\n"
@@ -242,7 +248,7 @@ msgid "De-interlacing"
msgstr "Avflätning"
# svåröversatt
-#: src/lib/config.cc:417
+#: src/lib/config.cc:436
#, fuzzy
msgid ""
"Dear Projectionist\n"
@@ -268,24 +274,24 @@ msgstr ""
msgid "Dolby CP650 and CP750"
msgstr "Dolby CP650 och CP750"
-#: src/lib/internet.cc:65
+#: src/lib/internet.cc:67
msgid "Download failed (%1/%2 error %3)"
msgstr ""
-#: src/lib/frame_rate_change.cc:83
+#: src/lib/frame_rate_change.cc:91
msgid "Each content frame will be doubled in the DCP.\n"
msgstr "Varje bild från källan kommer att användas två gånger i DCPn.\n"
-#: src/lib/frame_rate_change.cc:85
+#: src/lib/frame_rate_change.cc:93
msgid "Each content frame will be repeated %1 more times in the DCP.\n"
msgstr ""
"Varje bild från källan kommer att användas ytterligare %1 gång(er) i DCPn.\n"
-#: src/lib/send_kdm_email_job.cc:50
+#: src/lib/send_kdm_email_job.cc:52
msgid "Email KDMs for %1"
msgstr "E-posta KDM:er för %1"
-#: src/lib/writer.cc:125
+#: src/lib/writer.cc:126
msgid "Encoding image data"
msgstr "Kodar bild-data"
@@ -297,7 +303,7 @@ msgstr "Fel (%1)"
msgid "Examine content"
msgstr "Undersök innehållet"
-#: src/lib/scp_dcp_job.cc:147
+#: src/lib/scp_dcp_job.cc:140
msgid "Failed to authenticate with server (%1)"
msgstr "Misslyckades att autentisera med server (%1)"
@@ -309,11 +315,11 @@ msgstr "Snabb bilinjär"
msgid "Feature"
msgstr "Feature"
-#: src/lib/ratio.cc:41
+#: src/lib/ratio.cc:40
msgid "Flat"
msgstr "Flat"
-#: src/lib/ratio.cc:43
+#: src/lib/ratio.cc:42
msgid "Full frame"
msgstr "Full frame"
@@ -325,7 +331,7 @@ msgstr "Gaussisk"
msgid "Gradient debander"
msgstr "Gradientutjämnare"
-#: src/lib/util.cc:755
+#: src/lib/util.cc:790
msgid "Hearing impaired"
msgstr ""
@@ -342,6 +348,10 @@ msgstr ""
"Det är inte känt vad som orsakade detta fel. Bästa sättet att rapportera "
"problemet är till DCP-o-matics mejl-lista (carl@dcpomatic.com)"
+#: src/lib/config.cc:199
+msgid "KDM delivery: $CPL_NAME"
+msgstr ""
+
#: src/lib/filter.cc:66
msgid "Kernel deinterlacer"
msgstr "Kernel-avflätare"
@@ -350,24 +360,24 @@ msgstr "Kernel-avflätare"
msgid "Lanczos"
msgstr "Lanczos"
-#: src/lib/util.cc:749
+#: src/lib/util.cc:784
msgid "Left"
msgstr "Vänster"
-#: src/lib/util.cc:757
+#: src/lib/util.cc:792
msgid "Left centre"
msgstr ""
-#: src/lib/util.cc:759
+#: src/lib/util.cc:794
#, fuzzy
msgid "Left rear surround"
msgstr "Vänster surround"
-#: src/lib/util.cc:753
+#: src/lib/util.cc:788
msgid "Left surround"
msgstr "Vänster surround"
-#: src/lib/util.cc:752
+#: src/lib/util.cc:787
msgid "Lfe (sub)"
msgstr "Lfe (sub)"
@@ -379,11 +389,11 @@ msgstr "Diverse"
msgid "Motion compensating deinterlacer"
msgstr "Rörelsekompenserande avflätare"
-#: src/lib/video_content.cc:476
+#: src/lib/video_content_scale.cc:105
msgid "No scale"
msgstr ""
-#: src/lib/video_content.cc:473
+#: src/lib/video_content_scale.cc:102
#, fuzzy
msgid "No stretch"
msgstr "Flat utan utsträckning"
@@ -429,32 +439,32 @@ msgstr "Public Service Announcement"
msgid "Rating"
msgstr "Rating"
-#: src/lib/config.cc:84 src/lib/config.cc:173
+#: src/lib/config.cc:86 src/lib/config.cc:183
msgid "Rec. 709"
msgstr "Rec. 709"
-#: src/lib/util.cc:750
+#: src/lib/util.cc:785
msgid "Right"
msgstr "Höger"
-#: src/lib/util.cc:758
+#: src/lib/util.cc:793
msgid "Right centre"
msgstr ""
-#: src/lib/util.cc:760
+#: src/lib/util.cc:795
#, fuzzy
msgid "Right rear surround"
msgstr "Höger surround"
-#: src/lib/util.cc:754
+#: src/lib/util.cc:789
msgid "Right surround"
msgstr "Höger surround"
-#: src/lib/scp_dcp_job.cc:142
+#: src/lib/scp_dcp_job.cc:135
msgid "SSH error (%1)"
msgstr "SSH fel (%1)"
-#: src/lib/ratio.cc:42
+#: src/lib/ratio.cc:41
msgid "Scope"
msgstr "Scope"
@@ -494,7 +504,7 @@ msgstr ""
msgid "There was not enough memory to do this."
msgstr ""
-#: src/lib/film.cc:413
+#: src/lib/film.cc:414
#, fuzzy
msgid ""
"This film was created with a newer version of DCP-o-matic, and it cannot be "
@@ -504,7 +514,7 @@ msgstr ""
"inte öppnas i denna version. Du måste skapa en ny Film, lägga till ditt "
"innehåll och konfigurera allt igen. Ursäkta!"
-#: src/lib/film.cc:405
+#: src/lib/film.cc:406
msgid ""
"This film was created with an older version of DCP-o-matic, and "
"unfortunately it cannot be loaded into this version. You will need to "
@@ -526,11 +536,11 @@ msgstr "Konvertera %1"
msgid "Transitional"
msgstr "Transitional"
-#: src/lib/internet.cc:77
+#: src/lib/internet.cc:79
msgid "Unexpected ZIP file contents"
msgstr ""
-#: src/lib/image_proxy.cc:174
+#: src/lib/image_proxy.cc:193
msgid "Unexpected image type received by server"
msgstr ""
@@ -539,7 +549,7 @@ msgid "Unknown error"
msgstr "Okänt fel"
# Svengelska
-#: src/lib/ffmpeg_decoder.cc:295
+#: src/lib/ffmpeg_decoder.cc:293
msgid "Unrecognised audio sample format (%1)"
msgstr "Okänt audio-sampelformat (%1)"
@@ -547,15 +557,15 @@ msgstr "Okänt audio-sampelformat (%1)"
msgid "Unsharp mask and Gaussian blur"
msgstr "Oskärpemask och Gaussisk suddighet"
-#: src/lib/colour_conversion.cc:140
+#: src/lib/colour_conversion.cc:139
msgid "Untitled"
msgstr "Utan titel"
-#: src/lib/util.cc:756
+#: src/lib/util.cc:791
msgid "Visually impaired"
msgstr ""
-#: src/lib/scp_dcp_job.cc:104
+#: src/lib/scp_dcp_job.cc:103
msgid "Waiting"
msgstr "Väntar"
@@ -568,7 +578,7 @@ msgstr "X"
msgid "Yet Another Deinterlacing Filter"
msgstr "Yet Another Deinterlacing Filter"
-#: src/lib/film.cc:310
+#: src/lib/film.cc:311
msgid "You must add some content to the DCP before creating it"
msgstr "Du måste lägga till något innehåll till DCP:n innan du skapar den"
@@ -580,28 +590,28 @@ msgstr "[rörliga bilder]"
msgid "[still]"
msgstr "[stillbild]"
-#: src/lib/film.cc:258
+#: src/lib/film.cc:259
msgid "cannot contain slashes"
msgstr "får inte innehålla snedstreck"
# Svengelska
-#: src/lib/util.cc:530
+#: src/lib/util.cc:565
msgid "connect timed out"
msgstr "uppkopplingen tajmade ur"
-#: src/lib/scp_dcp_job.cc:128
+#: src/lib/scp_dcp_job.cc:121
msgid "connecting"
msgstr "kopplar upp"
-#: src/lib/film.cc:306
+#: src/lib/film.cc:307
msgid "container"
msgstr "behållare"
-#: src/lib/film.cc:314
+#: src/lib/film.cc:315
msgid "content type"
msgstr "innehållstyp"
-#: src/lib/scp_dcp_job.cc:177
+#: src/lib/scp_dcp_job.cc:170
msgid "copying %1"
msgstr "kopierar %1"
@@ -609,19 +619,19 @@ msgstr "kopierar %1"
msgid "could not create file %1"
msgstr "kunde inte skapa fil %1"
-#: src/lib/ffmpeg.cc:177
+#: src/lib/ffmpeg.cc:176
msgid "could not find audio decoder"
msgstr "kunde inte hitta audio-avkodare"
-#: src/lib/ffmpeg.cc:106
+#: src/lib/ffmpeg.cc:105
msgid "could not find stream information"
msgstr "kunde inte hitta information om strömmen"
-#: src/lib/ffmpeg.cc:156
+#: src/lib/ffmpeg.cc:155
msgid "could not find video decoder"
msgstr "kunde inte hitta video-avkodare"
-#: src/lib/writer.cc:435
+#: src/lib/writer.cc:439
msgid "could not move audio MXF into the DCP (%1)"
msgstr "kunde inte flytta audio-MXF in i DCP:n (%1)"
@@ -633,11 +643,11 @@ msgstr "kunde inte öppna audio-fil för läsning"
msgid "could not open file %1"
msgstr "kunde inte öppna fil %1"
-#: src/lib/dcp_video_frame.cc:334
+#: src/lib/dcp_video_frame.cc:331
msgid "could not open file for reading"
msgstr "kunde inte öppna fil för läsning"
-#: src/lib/dcp_video_frame.cc:340
+#: src/lib/dcp_video_frame.cc:337
msgid "could not read encoded data"
msgstr "kunde inte läsa kodat data"
@@ -654,11 +664,11 @@ msgid "could not run sample-rate converter for %1 samples (%2) (%3)"
msgstr ""
"kunde inte köra sampelhastighetskonverteraren under %1 sampel (%2) (%3)"
-#: src/lib/scp_dcp_job.cc:89
+#: src/lib/scp_dcp_job.cc:88
msgid "could not start SCP session (%1)"
msgstr "kunde inte starta SCP-session (%1)"
-#: src/lib/scp_dcp_job.cc:55
+#: src/lib/scp_dcp_job.cc:54
msgid "could not start SSH session"
msgstr "kunde inte starta SSH-session"
@@ -666,43 +676,43 @@ msgstr "kunde inte starta SSH-session"
msgid "could not write to file %1 (%2)"
msgstr "kunde inte skriva till fil %1 (%2)"
-#: src/lib/util.cc:550
+#: src/lib/util.cc:585
msgid "error during async_accept (%1)"
msgstr "fel vid async_accept (%1)"
-#: src/lib/util.cc:526
+#: src/lib/util.cc:561
msgid "error during async_connect (%1)"
msgstr "fel vid async_connect (%1)"
-#: src/lib/util.cc:599
+#: src/lib/util.cc:634
msgid "error during async_read (%1)"
msgstr "fel vid async_read (%1)"
-#: src/lib/util.cc:571
+#: src/lib/util.cc:606
msgid "error during async_write (%1)"
msgstr "fel vid async_write (%1)"
-#: src/lib/transcode_job.cc:103
+#: src/lib/transcode_job.cc:97
msgid "frames per second"
msgstr "bilder per sekund"
-#: src/lib/util.cc:152
+#: src/lib/util.cc:156
msgid "hour"
msgstr "timme"
-#: src/lib/util.cc:149 src/lib/util.cc:154
+#: src/lib/util.cc:152 src/lib/util.cc:158
msgid "hours"
msgstr "timmar"
-#: src/lib/util.cc:159
+#: src/lib/util.cc:174
msgid "minute"
msgstr "minut"
-#: src/lib/util.cc:161
+#: src/lib/util.cc:170 src/lib/util.cc:176
msgid "minutes"
msgstr "minuter"
-#: src/lib/util.cc:671
+#: src/lib/util.cc:706
msgid "missing key %1 in key-value set"
msgstr "saknad nyckel %1 i nyckel-värde grupp"
@@ -715,15 +725,15 @@ msgstr "saknad nödvändig inställning %1"
msgid "moving"
msgstr "rörlig"
-#: src/lib/ffmpeg_decoder.cc:591
+#: src/lib/ffmpeg_decoder.cc:589
msgid "multi-part subtitles not yet supported"
msgstr "undertexter i flera delar stöds inte ännu"
-#: src/lib/film.cc:258 src/lib/film.cc:318
+#: src/lib/film.cc:259 src/lib/film.cc:319
msgid "name"
msgstr "namn"
-#: src/lib/ffmpeg_decoder.cc:606
+#: src/lib/ffmpeg_decoder.cc:604
msgid "non-bitmap subtitles not yet supported"
msgstr "icke-rastergrafiska undertexter stöds inte ännu"
@@ -733,15 +743,20 @@ msgstr "icke-rastergrafiska undertexter stöds inte ännu"
msgid "remaining"
msgstr "återstående tid"
-#: src/lib/config.cc:82 src/lib/video_content.cc:175
+#: src/lib/config.cc:84 src/lib/video_content.cc:179
msgid "sRGB"
msgstr "sRGB"
-#: src/lib/config.cc:83
+#: src/lib/config.cc:85
msgid "sRGB non-linearised"
msgstr "sRGB icke-linjär"
-#: src/lib/util.cc:164
+#: src/lib/util.cc:189
+#, fuzzy
+msgid "second"
+msgstr "sekunder"
+
+#: src/lib/util.cc:191
msgid "seconds"
msgstr "sekunder"
diff --git a/src/lib/ratio.cc b/src/lib/ratio.cc
index 52577d3bb..554d3c36c 100644
--- a/src/lib/ratio.cc
+++ b/src/lib/ratio.cc
@@ -24,7 +24,6 @@
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::vector;
vector<Ratio const *> Ratio::_ratios;
@@ -57,3 +56,20 @@ Ratio::from_id (string i)
return *j;
}
+
+/** @return Ratio corresponding to a given fractional ratio (+/- 0.01), or 0 */
+Ratio const *
+Ratio::from_ratio (float r)
+{
+ vector<Ratio const *>::iterator j = _ratios.begin ();
+ while (j != _ratios.end() && fabs ((*j)->ratio() - r) > 0.01) {
+ ++j;
+ }
+
+ if (j == _ratios.end ()) {
+ return 0;
+ }
+
+ return *j;
+}
+
diff --git a/src/lib/ratio.h b/src/lib/ratio.h
index 8b1a1fc71..ab157a9bc 100644
--- a/src/lib/ratio.h
+++ b/src/lib/ratio.h
@@ -52,6 +52,7 @@ public:
static void setup_ratios ();
static Ratio const * from_id (std::string i);
+ static Ratio const * from_ratio (float r);
static std::vector<Ratio const *> all () {
return _ratios;
}
diff --git a/src/lib/json_server.h b/src/lib/safe_stringstream.cc
index 623067558..01d545045 100644
--- a/src/lib/json_server.h
+++ b/src/lib/safe_stringstream.cc
@@ -17,15 +17,7 @@
*/
-class JSONServer
-{
-public:
- JSONServer (int port);
+#include <boost/thread/mutex.hpp>
+#include "safe_stringstream.h"
-private:
- void run (int port);
- void handle (boost::shared_ptr<boost::asio::ip::tcp::socket> socket);
- void request (std::string url, boost::shared_ptr<boost::asio::ip::tcp::socket> socket);
-};
-
-
+boost::mutex SafeStringStream::_mutex;
diff --git a/src/lib/safe_stringstream.h b/src/lib/safe_stringstream.h
new file mode 100644
index 000000000..e455de964
--- /dev/null
+++ b/src/lib/safe_stringstream.h
@@ -0,0 +1,115 @@
+/*
+ Copyright (C) 2014 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef DCPOMATIC_SAFE_STRINGSTREAM_H
+#define DCPOMATIC_SAFE_STRINGSTREAM_H
+
+#include <boost/thread/mutex.hpp>
+
+/* I've not been able to reproduce it, but there have been reports that DCP-o-matic crashes
+ * on OS X with two simultaneous backtraces that look like this:
+ *
+ * 0 libSystem.B.dylib 0x00007fff84ebe264 __numeric_load_locale + 125
+ * 1 libSystem.B.dylib 0x00007fff84e2aac4 loadlocale + 323
+ * 2 libstdc++.6.dylib 0x00007fff8976ba69 std::__convert_from_v(int* const&, char*, int, char const*, ...) + 199
+ * 3 libstdc++.6.dylib 0x00007fff8974e99b std::ostreambuf_iterator<char, std::char_traits<char> > std::num_put<char, std::ostreambuf_iterator<char,
+std::char_traits<char> > >::_M_insert_float<double>(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, char, double) const + 199
+ * 4 libstdc++.6.dylib 0x00007fff8974ebc0 std::num_put<char, std::ostreambuf_iterator<char, std::char_traits<char> >
+>::do_put(std::ostreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, char, double) const + 28
+ * 5 libstdc++.6.dylib 0x00007fff897566a2 std::ostream& std::ostream::_M_insert<double>(double) + 178
+ * 6 libdcpomatic.dylib 0x0000000100331e21 StringPrivate::Composition& StringPrivate::Composition::arg<float>(float const&) + 33
+ *
+ * in two different threads. I'm assuming that for some bizarre reason it is unsafe to use two separate stringstream
+ * objects in different threads on OS X. This is a hack to work around it.
+ */
+
+class SafeStringStream
+{
+public:
+ SafeStringStream ()
+ {}
+
+ SafeStringStream (std::string s)
+ : _stream (s)
+ {}
+
+ template <class T>
+ std::ostream& operator<< (T val)
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _stream << val;
+ return _stream;
+ }
+
+ template <class T>
+ std::istream& operator>> (T& val)
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _stream >> val;
+ return _stream;
+ }
+
+ std::string str () const {
+ return _stream.str ();
+ }
+
+ void str (std::string const & s) {
+ _stream.str (s);
+ }
+
+ void imbue (std::locale const & loc)
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _stream.imbue (loc);
+ }
+
+ void width (int w)
+ {
+ _stream.width (w);
+ }
+
+ void precision (int p)
+ {
+ _stream.precision (p);
+ }
+
+ bool good () const
+ {
+ return _stream.good ();
+ }
+
+ std::string getline ()
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ std::string s;
+ std::getline (_stream, s);
+ return s;
+ }
+
+ void setf (std::ios_base::fmtflags flags, std::ios_base::fmtflags mask)
+ {
+ _stream.setf (flags, mask);
+ }
+
+private:
+ static boost::mutex _mutex;
+ std::stringstream _stream;
+};
+
+#endif
diff --git a/src/lib/scp_dcp_job.cc b/src/lib/scp_dcp_job.cc
index 637840813..67a1fb802 100644
--- a/src/lib/scp_dcp_job.cc
+++ b/src/lib/scp_dcp_job.cc
@@ -40,7 +40,6 @@
#define LOG_GENERAL_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_GENERAL);
using std::string;
-using std::stringstream;
using std::min;
using boost::shared_ptr;
@@ -112,12 +111,6 @@ SCPDCPJob::name () const
return _("Copy DCP to TMS");
}
-string
-SCPDCPJob::json_name () const
-{
- return N_("scp_dcp");
-}
-
void
SCPDCPJob::run ()
{
@@ -217,12 +210,11 @@ string
SCPDCPJob::status () const
{
boost::mutex::scoped_lock lm (_status_mutex);
- stringstream s;
- s << Job::status ();
+ string s = Job::status ();
if (!_status.empty ()) {
- s << N_("; ") << _status;
+ s += N_("; ") + _status;
}
- return s.str ();
+ return s;
}
void
diff --git a/src/lib/scp_dcp_job.h b/src/lib/scp_dcp_job.h
index e3960d73b..bdc83af18 100644
--- a/src/lib/scp_dcp_job.h
+++ b/src/lib/scp_dcp_job.h
@@ -29,7 +29,6 @@ public:
SCPDCPJob (boost::shared_ptr<const Film>);
std::string name () const;
- std::string json_name () const;
void run ();
std::string status () const;
diff --git a/src/lib/send_kdm_email_job.cc b/src/lib/send_kdm_email_job.cc
index 1dec2ffb0..164dfe987 100644
--- a/src/lib/send_kdm_email_job.cc
+++ b/src/lib/send_kdm_email_job.cc
@@ -52,12 +52,6 @@ SendKDMEmailJob::name () const
return String::compose (_("Email KDMs for %1"), _film->name());
}
-string
-SendKDMEmailJob::json_name () const
-{
- return N_("send_kdm_email");
-}
-
void
SendKDMEmailJob::run ()
{
diff --git a/src/lib/send_kdm_email_job.h b/src/lib/send_kdm_email_job.h
index 8a8903040..778d3927a 100644
--- a/src/lib/send_kdm_email_job.h
+++ b/src/lib/send_kdm_email_job.h
@@ -36,7 +36,6 @@ public:
);
std::string name () const;
- std::string json_name () const;
void run ();
private:
diff --git a/src/lib/server.cc b/src/lib/server.cc
index f1c6d6c44..9428ba611 100644
--- a/src/lib/server.cc
+++ b/src/lib/server.cc
@@ -24,7 +24,6 @@
#include <string>
#include <vector>
-#include <sstream>
#include <iostream>
#include <boost/algorithm/string.hpp>
#include <boost/scoped_array.hpp>
@@ -38,6 +37,7 @@
#include "config.h"
#include "cross.h"
#include "player_video_frame.h"
+#include "safe_stringstream.h"
#include "i18n.h"
@@ -47,7 +47,6 @@
#define LOG_ERROR_NC(...) _log->log (__VA_ARGS__, Log::TYPE_ERROR);
using std::string;
-using std::stringstream;
using std::multimap;
using std::vector;
using std::list;
@@ -82,9 +81,9 @@ Server::process (shared_ptr<Socket> socket, struct timeval& after_read, struct t
scoped_array<char> buffer (new char[length]);
socket->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
- stringstream s (buffer.get());
+ string s (buffer.get());
shared_ptr<cxml::Document> xml (new cxml::Document ("EncodingRequest"));
- xml->read_stream (s);
+ xml->read_string (s);
if (xml->number_child<int> ("Version") != SERVER_LINK_VERSION) {
cerr << "Mismatched server/client versions\n";
LOG_ERROR_NC ("Mismatched server/client versions");
@@ -154,7 +153,7 @@ Server::worker_thread ()
struct timeval end;
gettimeofday (&end, 0);
- stringstream message;
+ SafeStringStream message;
message.precision (2);
message << fixed
<< "Encoded frame " << frame << " from " << ip << ": "
@@ -246,14 +245,16 @@ Server::broadcast_received ()
xmlpp::Document doc;
xmlpp::Element* root = doc.create_root_node ("ServerAvailable");
root->add_child("Threads")->add_child_text (raw_convert<string> (_worker_threads.size ()));
- stringstream xml;
- doc.write_to_stream (xml, "UTF-8");
+ string xml = doc.write_to_string ("UTF-8");
+ if (_verbose) {
+ cout << "Offering services to master " << _broadcast.send_endpoint.address().to_string () << "\n";
+ }
shared_ptr<Socket> socket (new Socket);
try {
socket->connect (boost::asio::ip::tcp::endpoint (_broadcast.send_endpoint.address(), Config::instance()->server_port_base() + 1));
- socket->write (xml.str().length() + 1);
- socket->write ((uint8_t *) xml.str().c_str(), xml.str().length() + 1);
+ socket->write (xml.length() + 1);
+ socket->write ((uint8_t *) xml.c_str(), xml.length() + 1);
} catch (...) {
}
diff --git a/src/lib/server_finder.cc b/src/lib/server_finder.cc
index 65e0940a0..a082f3bab 100644
--- a/src/lib/server_finder.cc
+++ b/src/lib/server_finder.cc
@@ -27,7 +27,6 @@
#include "ui_signaller.h"
using std::string;
-using std::stringstream;
using std::list;
using std::vector;
using std::cout;
@@ -103,24 +102,31 @@ void
ServerFinder::listen_thread ()
try
{
+ using namespace boost::asio::ip;
+
+ boost::asio::io_service io_service;
+ tcp::acceptor acceptor (io_service, tcp::endpoint (tcp::v4(), Config::instance()->server_port_base() + 1));
+
while (true) {
- shared_ptr<Socket> sock (new Socket (60));
+ tcp::socket socket (io_service);
+ acceptor.accept (socket);
- try {
- sock->accept (Config::instance()->server_port_base() + 1);
- } catch (std::exception& e) {
- continue;
- }
+ /* XXX: these reads should have timeouts, otherwise we will stop finding servers
+ if one dies during this conversation
+ */
+
+ uint32_t length = 0;
+ boost::asio::read (socket, boost::asio::buffer (&length, sizeof (uint32_t)));
+ length = ntohl (length);
- uint32_t length = sock->read_uint32 ();
scoped_array<char> buffer (new char[length]);
- sock->read (reinterpret_cast<uint8_t*> (buffer.get()), length);
+ boost::asio::read (socket, boost::asio::buffer (reinterpret_cast<uint8_t*> (buffer.get ()), length));
- stringstream s (buffer.get());
+ string s (buffer.get());
shared_ptr<cxml::Document> xml (new cxml::Document ("ServerAvailable"));
- xml->read_stream (s);
-
- string const ip = sock->socket().remote_endpoint().address().to_string ();
+ xml->read_string (s);
+
+ string const ip = socket.remote_endpoint().address().to_string ();
if (!server_found (ip)) {
ServerDescription sd (ip, xml->number_child<int> ("Threads"));
_servers.push_back (sd);
diff --git a/src/lib/sndfile_content.cc b/src/lib/sndfile_content.cc
index 3efba6fd5..ba3bd0a77 100644
--- a/src/lib/sndfile_content.cc
+++ b/src/lib/sndfile_content.cc
@@ -25,11 +25,11 @@
#include "compose.hpp"
#include "job.h"
#include "util.h"
+#include "safe_stringstream.h"
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::cout;
using boost::shared_ptr;
using libdcp::raw_convert;
@@ -76,7 +76,7 @@ SndfileContent::information () const
return "";
}
- stringstream s;
+ SafeStringStream s;
s << String::compose (
_("%1 channels, %2kHz, %3 samples"),
diff --git a/src/lib/stack.cpp b/src/lib/stack.cpp
index a8183d344..167524017 100644
--- a/src/lib/stack.cpp
+++ b/src/lib/stack.cpp
@@ -9,7 +9,6 @@
#include <iomanip>
#include <ostream>
#include <stdexcept>
-#include <sstream>
#include "stack.hpp"
diff --git a/src/lib/subtitle.cc b/src/lib/subtitle.cc
index 0d18861c4..03d4ccf2f 100644
--- a/src/lib/subtitle.cc
+++ b/src/lib/subtitle.cc
@@ -60,9 +60,9 @@ Subtitle::update (shared_ptr<const Film> film, libdcp::Size video_container_size
in_rect.x += sc->subtitle_x_offset ();
in_rect.y += sc->subtitle_y_offset ();
- /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle_scale */
- scaled_size.width = in_rect.width * video_container_size.width * sc->subtitle_scale ();
- scaled_size.height = in_rect.height * video_container_size.height * sc->subtitle_scale ();
+ /* We will scale the subtitle up to fit _video_container_size, and also by the additional subtitle scale */
+ scaled_size.width = in_rect.width * video_container_size.width * sc->subtitle_x_scale ();
+ scaled_size.height = in_rect.height * video_container_size.height * sc->subtitle_y_scale ();
/* Then we need a corrective translation, consisting of two parts:
*
@@ -70,14 +70,14 @@ Subtitle::update (shared_ptr<const Film> film, libdcp::Size video_container_size
* rect.x * _video_container_size.width and rect.y * _video_container_size.height.
*
* 2. that to shift the origin of the scale by subtitle_scale to the centre of the subtitle; this will be
- * (width_before_subtitle_scale * (1 - subtitle_scale) / 2) and
- * (height_before_subtitle_scale * (1 - subtitle_scale) / 2).
+ * (width_before_subtitle_scale * (1 - subtitle_x_scale) / 2) and
+ * (height_before_subtitle_scale * (1 - subtitle_y_scale) / 2).
*
* Combining these two translations gives these expressions.
*/
- _out_position.x = rint (video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_scale ()) / 2)));
- _out_position.y = rint (video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_scale ()) / 2)));
+ _out_position.x = rint (video_container_size.width * (in_rect.x + (in_rect.width * (1 - sc->subtitle_x_scale ()) / 2)));
+ _out_position.y = rint (video_container_size.height * (in_rect.y + (in_rect.height * (1 - sc->subtitle_y_scale ()) / 2)));
_out_image = _in_image->scale (
scaled_size,
diff --git a/src/lib/subtitle_content.cc b/src/lib/subtitle_content.cc
index 0abb7d491..3702eef41 100644
--- a/src/lib/subtitle_content.cc
+++ b/src/lib/subtitle_content.cc
@@ -33,13 +33,15 @@ using libdcp::raw_convert;
int const SubtitleContentProperty::SUBTITLE_X_OFFSET = 500;
int const SubtitleContentProperty::SUBTITLE_Y_OFFSET = 501;
-int const SubtitleContentProperty::SUBTITLE_SCALE = 502;
+int const SubtitleContentProperty::SUBTITLE_X_SCALE = 502;
+int const SubtitleContentProperty::SUBTITLE_Y_SCALE = 503;
SubtitleContent::SubtitleContent (shared_ptr<const Film> f, boost::filesystem::path p)
: Content (f, p)
, _subtitle_x_offset (0)
, _subtitle_y_offset (0)
- , _subtitle_scale (1)
+ , _subtitle_x_scale (1)
+ , _subtitle_y_scale (1)
{
}
@@ -48,7 +50,8 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
: Content (f, node)
, _subtitle_x_offset (0)
, _subtitle_y_offset (0)
- , _subtitle_scale (1)
+ , _subtitle_x_scale (1)
+ , _subtitle_y_scale (1)
{
if (version >= 7) {
_subtitle_x_offset = node->number_child<float> ("SubtitleXOffset");
@@ -56,8 +59,13 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, shared_ptr<const cxm
} else {
_subtitle_y_offset = node->number_child<float> ("SubtitleOffset");
}
-
- _subtitle_scale = node->number_child<float> ("SubtitleScale");
+
+ if (version >= 10) {
+ _subtitle_x_scale = node->number_child<float> ("SubtitleXScale");
+ _subtitle_y_scale = node->number_child<float> ("SubtitleYScale");
+ } else {
+ _subtitle_x_scale = _subtitle_y_scale = node->number_child<float> ("SubtitleScale");
+ }
}
SubtitleContent::SubtitleContent (shared_ptr<const Film> f, vector<shared_ptr<Content> > c)
@@ -77,14 +85,19 @@ SubtitleContent::SubtitleContent (shared_ptr<const Film> f, vector<shared_ptr<Co
throw JoinError (_("Content to be joined must have the same subtitle Y offset."));
}
- if (sc->subtitle_scale() != ref->subtitle_scale()) {
- throw JoinError (_("Content to be joined must have the same subtitle scale."));
+ if (sc->subtitle_x_scale() != ref->subtitle_x_scale()) {
+ throw JoinError (_("Content to be joined must have the same subtitle X scale."));
+ }
+
+ if (sc->subtitle_y_scale() != ref->subtitle_y_scale()) {
+ throw JoinError (_("Content to be joined must have the same subtitle Y scale."));
}
}
_subtitle_x_offset = ref->subtitle_x_offset ();
_subtitle_y_offset = ref->subtitle_y_offset ();
- _subtitle_scale = ref->subtitle_scale ();
+ _subtitle_x_scale = ref->subtitle_x_scale ();
+ _subtitle_y_scale = ref->subtitle_y_scale ();
}
void
@@ -92,7 +105,8 @@ SubtitleContent::as_xml (xmlpp::Node* root) const
{
root->add_child("SubtitleXOffset")->add_child_text (raw_convert<string> (_subtitle_x_offset));
root->add_child("SubtitleYOffset")->add_child_text (raw_convert<string> (_subtitle_y_offset));
- root->add_child("SubtitleScale")->add_child_text (raw_convert<string> (_subtitle_scale));
+ root->add_child("SubtitleXScale")->add_child_text (raw_convert<string> (_subtitle_x_scale));
+ root->add_child("SubtitleYScale")->add_child_text (raw_convert<string> (_subtitle_y_scale));
}
void
@@ -116,11 +130,21 @@ SubtitleContent::set_subtitle_y_offset (double o)
}
void
-SubtitleContent::set_subtitle_scale (double s)
+SubtitleContent::set_subtitle_x_scale (double s)
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ _subtitle_x_scale = s;
+ }
+ signal_changed (SubtitleContentProperty::SUBTITLE_X_SCALE);
+}
+
+void
+SubtitleContent::set_subtitle_y_scale (double s)
{
{
boost::mutex::scoped_lock lm (_mutex);
- _subtitle_scale = s;
+ _subtitle_y_scale = s;
}
- signal_changed (SubtitleContentProperty::SUBTITLE_SCALE);
+ signal_changed (SubtitleContentProperty::SUBTITLE_Y_SCALE);
}
diff --git a/src/lib/subtitle_content.h b/src/lib/subtitle_content.h
index 388637688..329368e44 100644
--- a/src/lib/subtitle_content.h
+++ b/src/lib/subtitle_content.h
@@ -27,7 +27,8 @@ class SubtitleContentProperty
public:
static int const SUBTITLE_X_OFFSET;
static int const SUBTITLE_Y_OFFSET;
- static int const SUBTITLE_SCALE;
+ static int const SUBTITLE_X_SCALE;
+ static int const SUBTITLE_Y_SCALE;
};
class SubtitleContent : public virtual Content
@@ -41,7 +42,8 @@ public:
void set_subtitle_x_offset (double);
void set_subtitle_y_offset (double);
- void set_subtitle_scale (double);
+ void set_subtitle_x_scale (double);
+ void set_subtitle_y_scale (double);
double subtitle_x_offset () const {
boost::mutex::scoped_lock lm (_mutex);
@@ -53,9 +55,14 @@ public:
return _subtitle_y_offset;
}
- double subtitle_scale () const {
+ double subtitle_x_scale () const {
boost::mutex::scoped_lock lm (_mutex);
- return _subtitle_scale;
+ return _subtitle_x_scale;
+ }
+
+ double subtitle_y_scale () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _subtitle_y_scale;
}
private:
@@ -69,8 +76,10 @@ private:
* +ve is further down the frame, -ve is further up.
*/
double _subtitle_y_offset;
- /** scale factor to apply to subtitles */
- double _subtitle_scale;
+ /** x scale factor to apply to subtitles */
+ double _subtitle_x_scale;
+ /** y scale factor to apply to subtitles */
+ double _subtitle_y_scale;
};
#endif
diff --git a/src/lib/transcode_job.cc b/src/lib/transcode_job.cc
index ef15f9f5e..831c74b3b 100644
--- a/src/lib/transcode_job.cc
+++ b/src/lib/transcode_job.cc
@@ -27,6 +27,7 @@
#include "film.h"
#include "transcoder.h"
#include "log.h"
+#include "safe_stringstream.h"
#include "i18n.h"
@@ -34,7 +35,6 @@
#define LOG_ERROR_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_ERROR);
using std::string;
-using std::stringstream;
using std::fixed;
using std::setprecision;
using boost::shared_ptr;
@@ -53,12 +53,6 @@ TranscodeJob::name () const
return String::compose (_("Transcode %1"), _film->name());
}
-string
-TranscodeJob::json_name () const
-{
- return N_("transcode");
-}
-
void
TranscodeJob::run ()
{
@@ -95,7 +89,7 @@ TranscodeJob::status () const
return Job::status ();
}
- stringstream s;
+ SafeStringStream s;
s << Job::status ();
diff --git a/src/lib/transcode_job.h b/src/lib/transcode_job.h
index 6e3c1ead9..9128206d2 100644
--- a/src/lib/transcode_job.h
+++ b/src/lib/transcode_job.h
@@ -35,7 +35,6 @@ public:
TranscodeJob (boost::shared_ptr<const Film> f);
std::string name () const;
- std::string json_name () const;
void run ();
std::string status () const;
diff --git a/src/lib/ui_signaller.h b/src/lib/ui_signaller.h
index 1d62547f6..ee4d230d4 100644
--- a/src/lib/ui_signaller.h
+++ b/src/lib/ui_signaller.h
@@ -54,8 +54,15 @@ public:
}
}
+ /* Do something next time the UI is idle */
+ template <typename T>
+ void when_idle (T f) {
+ _service.post (f);
+ }
+
/** Call this in the UI when it is idle */
size_t ui_idle () {
+ /* This executes any functors that have been post()ed to _service */
return _service.poll ();
}
diff --git a/src/lib/update.cc b/src/lib/update.cc
index af3e46f0e..7bec061e9 100644
--- a/src/lib/update.cc
+++ b/src/lib/update.cc
@@ -18,7 +18,6 @@
*/
#include <string>
-#include <sstream>
#include <boost/algorithm/string.hpp>
#include <curl/curl.h>
#include <libcxml/cxml.h>
@@ -26,13 +25,13 @@
#include "update.h"
#include "version.h"
#include "ui_signaller.h"
+#include "safe_stringstream.h"
#define BUFFER_SIZE 1024
using std::cout;
using std::min;
using std::string;
-using std::stringstream;
using libdcp::raw_convert;
UpdateChecker* UpdateChecker::_instance = 0;
@@ -103,10 +102,9 @@ UpdateChecker::thread ()
}
_buffer[_offset] = '\0';
- stringstream s;
- s << _buffer;
+ string s (_buffer);
cxml::Document doc ("Update");
- doc.read_stream (s);
+ doc.read_string (s);
{
boost::mutex::scoped_lock lm (_data_mutex);
diff --git a/src/lib/util.cc b/src/lib/util.cc
index 86046bcf8..290dd20ef 100644
--- a/src/lib/util.cc
+++ b/src/lib/util.cc
@@ -22,7 +22,6 @@
* @brief Some utility functions and classes.
*/
-#include <sstream>
#include <iomanip>
#include <iostream>
#include <fstream>
@@ -70,6 +69,7 @@ extern "C" {
#include "cross.h"
#include "video_content.h"
#include "md5_digester.h"
+#include "safe_stringstream.h"
#ifdef DCPOMATIC_WINDOWS
#include "stack.hpp"
#endif
@@ -77,7 +77,6 @@ extern "C" {
#include "i18n.h"
using std::string;
-using std::stringstream;
using std::setfill;
using std::ostream;
using std::endl;
@@ -121,7 +120,7 @@ seconds_to_hms (int s)
int h = m / 60;
m -= (h * 60);
- stringstream hms;
+ SafeStringStream hms;
hms << h << N_(":");
hms.width (2);
hms << std::setfill ('0') << m << N_(":");
@@ -142,26 +141,55 @@ seconds_to_approximate_hms (int s)
int h = m / 60;
m -= (h * 60);
- stringstream ap;
-
- if (h > 0) {
- if (m > 30) {
+ SafeStringStream ap;
+
+ bool const hours = h > 0;
+ bool const minutes = h < 10 && m > 0;
+ bool const seconds = m < 10 && s > 0;
+
+ if (hours) {
+ if (m > 30 && !minutes) {
ap << (h + 1) << N_(" ") << _("hours");
} else {
+ ap << h << N_(" ");
if (h == 1) {
- ap << N_("1 ") << _("hour");
+ ap << _("hour");
} else {
- ap << h << N_(" ") << _("hours");
+ ap << _("hours");
}
}
- } else if (m > 0) {
- if (m == 1) {
- ap << N_("1 ") << _("minute");
+
+ if (minutes | seconds) {
+ ap << N_(" ");
+ }
+ }
+
+ if (minutes) {
+ /* Minutes */
+ if (s > 30 && !seconds) {
+ ap << (m + 1) << N_(" ") << _("minutes");
} else {
- ap << m << N_(" ") << _("minutes");
+ ap << m << N_(" ");
+ if (m == 1) {
+ ap << _("minute");
+ } else {
+ ap << _("minutes");
+ }
+ }
+
+ if (seconds) {
+ ap << N_(" ");
+ }
+ }
+
+ if (seconds) {
+ /* Seconds */
+ ap << s << N_(" ");
+ if (s == 1) {
+ ap << _("second");
+ } else {
+ ap << _("seconds");
}
- } else {
- ap << s << N_(" ") << _("seconds");
}
return ap.str ();
@@ -232,7 +260,7 @@ stacktrace (ostream& out, int levels)
static string
ffmpeg_version_to_string (int v)
{
- stringstream s;
+ SafeStringStream s;
s << ((v & 0xff0000) >> 16) << N_(".") << ((v & 0xff00) >> 8) << N_(".") << (v & 0xff);
return s.str ();
}
@@ -241,7 +269,7 @@ ffmpeg_version_to_string (int v)
string
dependency_version_summary ()
{
- stringstream s;
+ SafeStringStream s;
s << N_("libopenjpeg ") << opj_version () << N_(", ")
<< N_("libavcodec ") << ffmpeg_version_to_string (avcodec_version()) << N_(", ")
<< N_("libavfilter ") << ffmpeg_version_to_string (avfilter_version()) << N_(", ")
@@ -369,35 +397,42 @@ mo_path ()
}
#endif
+#ifdef DCPOMATIC_OSX
+boost::filesystem::path
+mo_path ()
+{
+ return "DCP-o-matic.app/Contents/Resources";
+}
+#endif
+
void
dcpomatic_setup_gettext_i18n (string lang)
{
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
lang += ".UTF8";
#endif
if (!lang.empty ()) {
- /* Override our environment language; this is essential on
- Windows.
+ /* Override our environment language. Note that the caller must not
+ free the string passed into putenv().
*/
- char cmd[64];
- snprintf (cmd, sizeof(cmd), "LANGUAGE=%s", lang.c_str ());
- putenv (cmd);
- snprintf (cmd, sizeof(cmd), "LANG=%s", lang.c_str ());
- putenv (cmd);
- snprintf (cmd, sizeof(cmd), "LC_ALL=%s", lang.c_str ());
- putenv (cmd);
+ string s = String::compose ("LANGUAGE=%1", lang);
+ putenv (strdup (s.c_str ()));
+ s = String::compose ("LANG=%1", lang);
+ putenv (strdup (s.c_str ()));
+ s = String::compose ("LC_ALL=%1", lang);
+ putenv (strdup (s.c_str ()));
}
setlocale (LC_ALL, "");
textdomain ("libdcpomatic");
-#ifdef DCPOMATIC_WINDOWS
+#if defined(DCPOMATIC_WINDOWS) || defined(DCPOMATIC_OSX)
bindtextdomain ("libdcpomatic", mo_path().string().c_str());
bind_textdomain_codeset ("libdcpomatic", "UTF8");
#endif
-#ifdef DCPOMATIC_POSIX
+#ifdef DCPOMATIC_LINUX
bindtextdomain ("libdcpomatic", POSIX_LOCALE_PREFIX);
#endif
}
@@ -541,7 +576,7 @@ Socket::accept (int port)
_acceptor->async_accept (_socket, boost::lambda::var(ec) = boost::lambda::_1);
do {
_io_service.run_one ();
- } while (ec == boost::asio::error::would_block );
+ } while (ec == boost::asio::error::would_block);
delete _acceptor;
_acceptor = 0;
diff --git a/src/lib/util.h b/src/lib/util.h
index 70bf495c6..675c8d03e 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -44,8 +44,8 @@ extern "C" {
/** The maximum number of audio channels that we can have in a DCP */
#define MAX_DCP_AUDIO_CHANNELS 12
-
#define DCPOMATIC_HELLO "Boys, you gotta learn not to talk to nuns that way"
+#define HISTORY_SIZE 10
namespace libdcp {
class Signer;
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index 676a694da..13f2cf516 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -31,6 +31,7 @@
#include "film.h"
#include "exceptions.h"
#include "frame_rate_change.h"
+#include "safe_stringstream.h"
#include "i18n.h"
@@ -42,7 +43,6 @@ int const VideoContentProperty::VIDEO_SCALE = 4;
int const VideoContentProperty::COLOUR_CONVERSION = 5;
using std::string;
-using std::stringstream;
using std::setprecision;
using std::cout;
using std::vector;
@@ -53,14 +53,13 @@ using boost::optional;
using boost::dynamic_pointer_cast;
using libdcp::raw_convert;
-vector<VideoContentScale> VideoContentScale::_scales;
-
VideoContent::VideoContent (shared_ptr<const Film> f)
: Content (f)
, _video_length (0)
+ , _original_video_frame_rate (0)
, _video_frame_rate (0)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
- , _scale (Ratio::from_id ("185"))
+ , _scale (Config::instance()->default_scale ())
{
setup_default_colour_conversion ();
}
@@ -68,9 +67,10 @@ VideoContent::VideoContent (shared_ptr<const Film> f)
VideoContent::VideoContent (shared_ptr<const Film> f, Time s, VideoContent::Frame len)
: Content (f, s)
, _video_length (len)
+ , _original_video_frame_rate (0)
, _video_frame_rate (0)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
- , _scale (Ratio::from_id ("185"))
+ , _scale (Config::instance()->default_scale ())
{
setup_default_colour_conversion ();
}
@@ -78,9 +78,10 @@ VideoContent::VideoContent (shared_ptr<const Film> f, Time s, VideoContent::Fram
VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
: Content (f, p)
, _video_length (0)
+ , _original_video_frame_rate (0)
, _video_frame_rate (0)
, _video_frame_type (VIDEO_FRAME_TYPE_2D)
- , _scale (Ratio::from_id ("185"))
+ , _scale (Config::instance()->default_scale ())
{
setup_default_colour_conversion ();
}
@@ -92,6 +93,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, shared_ptr<const cxml::Nod
_video_size.width = node->number_child<int> ("VideoWidth");
_video_size.height = node->number_child<int> ("VideoHeight");
_video_frame_rate = node->number_child<float> ("VideoFrameRate");
+ _original_video_frame_rate = node->optional_number_child<float> ("OriginalVideoFrameRate").get_value_or (_video_frame_rate);
_video_frame_type = static_cast<VideoFrameType> (node->number_child<int> ("VideoFrameType"));
_crop.left = node->number_child<int> ("LeftCrop");
_crop.right = node->number_child<int> ("RightCrop");
@@ -148,6 +150,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, vector<shared_ptr<Content>
}
_video_size = ref->video_size ();
+ _original_video_frame_rate = ref->original_video_frame_rate ();
_video_frame_rate = ref->video_frame_rate ();
_video_frame_type = ref->video_frame_type ();
_crop = ref->crop ();
@@ -163,6 +166,7 @@ VideoContent::as_xml (xmlpp::Node* node) const
node->add_child("VideoWidth")->add_child_text (raw_convert<string> (_video_size.width));
node->add_child("VideoHeight")->add_child_text (raw_convert<string> (_video_size.height));
node->add_child("VideoFrameRate")->add_child_text (raw_convert<string> (_video_frame_rate));
+ node->add_child("OriginalVideoFrameRate")->add_child_text (raw_convert<string> (_original_video_frame_rate));
node->add_child("VideoFrameType")->add_child_text (raw_convert<string> (static_cast<int> (_video_frame_type)));
_crop.as_xml (node);
_scale.as_xml (node->add_child("Scale"));
@@ -186,6 +190,7 @@ VideoContent::take_from_video_examiner (shared_ptr<VideoExaminer> d)
boost::mutex::scoped_lock lm (_mutex);
_video_size = vs;
_video_frame_rate = vfr;
+ _original_video_frame_rate = vfr;
}
signal_changed (VideoContentProperty::VIDEO_SIZE);
@@ -200,7 +205,7 @@ VideoContent::information () const
return "";
}
- stringstream s;
+ SafeStringStream s;
s << String::compose (
_("%1x%2 pixels (%3:1)"),
@@ -292,7 +297,7 @@ VideoContent::set_scale (VideoContentScale s)
string
VideoContent::identifier () const
{
- stringstream s;
+ SafeStringStream s;
s << Content::identifier()
<< "_" << crop().left
<< "_" << crop().right
@@ -420,123 +425,3 @@ VideoContent::set_video_frame_rate (float r)
signal_changed (VideoContentProperty::VIDEO_FRAME_RATE);
}
-VideoContentScale::VideoContentScale (Ratio const * r)
- : _ratio (r)
- , _scale (true)
-{
-
-}
-
-VideoContentScale::VideoContentScale ()
- : _ratio (0)
- , _scale (false)
-{
-
-}
-
-VideoContentScale::VideoContentScale (bool scale)
- : _ratio (0)
- , _scale (scale)
-{
-
-}
-
-VideoContentScale::VideoContentScale (shared_ptr<cxml::Node> node)
- : _ratio (0)
- , _scale (true)
-{
- optional<string> r = node->optional_string_child ("Ratio");
- if (r) {
- _ratio = Ratio::from_id (r.get ());
- } else {
- _scale = node->bool_child ("Scale");
- }
-}
-
-void
-VideoContentScale::as_xml (xmlpp::Node* node) const
-{
- if (_ratio) {
- node->add_child("Ratio")->add_child_text (_ratio->id ());
- } else {
- node->add_child("Scale")->add_child_text (_scale ? "1" : "0");
- }
-}
-
-string
-VideoContentScale::id () const
-{
- stringstream s;
-
- if (_ratio) {
- s << _ratio->id () << "_";
- } else {
- s << (_scale ? "S1" : "S0");
- }
-
- return s.str ();
-}
-
-string
-VideoContentScale::name () const
-{
- if (_ratio) {
- return _ratio->nickname ();
- }
-
- if (_scale) {
- return _("No stretch");
- }
-
- return _("No scale");
-}
-
-/** @param display_container Size of the container that we are displaying this content in.
- * @param film_container The size of the film's image.
- */
-libdcp::Size
-VideoContentScale::size (shared_ptr<const VideoContent> c, libdcp::Size display_container, libdcp::Size film_container) const
-{
- if (_ratio) {
- return fit_ratio_within (_ratio->ratio (), display_container);
- }
-
- libdcp::Size const ac = c->video_size_after_crop ();
-
- /* Force scale if the film_container is smaller than the content's image */
- if (_scale || film_container.width < ac.width || film_container.height < ac.height) {
- return fit_ratio_within (ac.ratio (), display_container);
- }
-
- /* Scale the image so that it will be in the right place in film_container, even if display_container is a
- different size.
- */
- return libdcp::Size (
- c->video_size().width * float(display_container.width) / film_container.width,
- c->video_size().height * float(display_container.height) / film_container.height
- );
-}
-
-void
-VideoContentScale::setup_scales ()
-{
- vector<Ratio const *> ratios = Ratio::all ();
- for (vector<Ratio const *>::const_iterator i = ratios.begin(); i != ratios.end(); ++i) {
- _scales.push_back (VideoContentScale (*i));
- }
-
- _scales.push_back (VideoContentScale (true));
- _scales.push_back (VideoContentScale (false));
-}
-
-bool
-operator== (VideoContentScale const & a, VideoContentScale const & b)
-{
- return (a.ratio() == b.ratio() && a.scale() == b.scale());
-}
-
-bool
-operator!= (VideoContentScale const & a, VideoContentScale const & b)
-{
- return (a.ratio() != b.ratio() || a.scale() != b.scale());
-}
diff --git a/src/lib/video_content.h b/src/lib/video_content.h
index d0b907cb8..3a7b44306 100644
--- a/src/lib/video_content.h
+++ b/src/lib/video_content.h
@@ -22,6 +22,7 @@
#include "content.h"
#include "colour_conversion.h"
+#include "video_content_scale.h"
class VideoExaminer;
class Ratio;
@@ -37,44 +38,6 @@ public:
static int const COLOUR_CONVERSION;
};
-class VideoContentScale
-{
-public:
- VideoContentScale ();
- VideoContentScale (Ratio const *);
- VideoContentScale (bool);
- VideoContentScale (boost::shared_ptr<cxml::Node>);
-
- libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size, libdcp::Size) const;
- std::string id () const;
- std::string name () const;
- void as_xml (xmlpp::Node *) const;
-
- Ratio const * ratio () const {
- return _ratio;
- }
-
- bool scale () const {
- return _scale;
- }
-
- static void setup_scales ();
- static std::vector<VideoContentScale> all () {
- return _scales;
- }
-
-private:
- /** a ratio to stretch the content to, or 0 for no stretch */
- Ratio const * _ratio;
- /** true if we want to scale the content */
- bool _scale;
-
- static std::vector<VideoContentScale> _scales;
-};
-
-bool operator== (VideoContentScale const & a, VideoContentScale const & b);
-bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
-
class VideoContent : public virtual Content
{
public:
@@ -115,6 +78,11 @@ public:
return _video_frame_rate;
}
+ float original_video_frame_rate () const {
+ boost::mutex::scoped_lock lm (_mutex);
+ return _original_video_frame_rate;
+ }
+
void set_video_frame_type (VideoFrameType);
void set_video_frame_rate (float);
@@ -179,6 +147,7 @@ protected:
void take_from_video_examiner (boost::shared_ptr<VideoExaminer>);
VideoContent::Frame _video_length;
+ float _original_video_frame_rate;
float _video_frame_rate;
private:
diff --git a/src/lib/video_content_scale.cc b/src/lib/video_content_scale.cc
new file mode 100644
index 000000000..e603582b8
--- /dev/null
+++ b/src/lib/video_content_scale.cc
@@ -0,0 +1,171 @@
+/*
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <boost/optional.hpp>
+#include <libxml++/libxml++.h>
+#include <libcxml/cxml.h>
+#include "video_content_scale.h"
+#include "ratio.h"
+#include "safe_stringstream.h"
+#include "util.h"
+
+#include "i18n.h"
+
+using std::vector;
+using std::string;
+using boost::shared_ptr;
+using boost::optional;
+
+vector<VideoContentScale> VideoContentScale::_scales;
+
+VideoContentScale::VideoContentScale (Ratio const * r)
+ : _ratio (r)
+ , _scale (true)
+{
+
+}
+
+VideoContentScale::VideoContentScale ()
+ : _ratio (0)
+ , _scale (false)
+{
+
+}
+
+VideoContentScale::VideoContentScale (bool scale)
+ : _ratio (0)
+ , _scale (scale)
+{
+
+}
+
+VideoContentScale::VideoContentScale (shared_ptr<cxml::Node> node)
+ : _ratio (0)
+ , _scale (true)
+{
+ optional<string> r = node->optional_string_child ("Ratio");
+ if (r) {
+ _ratio = Ratio::from_id (r.get ());
+ } else {
+ _scale = node->bool_child ("Scale");
+ }
+}
+
+void
+VideoContentScale::as_xml (xmlpp::Node* node) const
+{
+ if (_ratio) {
+ node->add_child("Ratio")->add_child_text (_ratio->id ());
+ } else {
+ node->add_child("Scale")->add_child_text (_scale ? "1" : "0");
+ }
+}
+
+string
+VideoContentScale::id () const
+{
+ SafeStringStream s;
+
+ if (_ratio) {
+ s << _ratio->id ();
+ } else {
+ s << (_scale ? "S1" : "S0");
+ }
+
+ return s.str ();
+}
+
+string
+VideoContentScale::name () const
+{
+ if (_ratio) {
+ return _ratio->nickname ();
+ }
+
+ if (_scale) {
+ return _("No stretch");
+ }
+
+ return _("No scale");
+}
+
+VideoContentScale
+VideoContentScale::from_id (string id)
+{
+ Ratio const * r = Ratio::from_id (id);
+ if (r) {
+ return VideoContentScale (r);
+ }
+
+ if (id == "S0") {
+ return VideoContentScale (false);
+ }
+
+ return VideoContentScale (true);
+}
+
+/** @param display_container Size of the container that we are displaying this content in.
+ * @param film_container The size of the film's image.
+ */
+libdcp::Size
+VideoContentScale::size (shared_ptr<const VideoContent> c, libdcp::Size display_container, libdcp::Size film_container) const
+{
+ if (_ratio) {
+ return fit_ratio_within (_ratio->ratio (), display_container);
+ }
+
+ libdcp::Size const ac = c->video_size_after_crop ();
+
+ /* Force scale if the film_container is smaller than the content's image */
+ if (_scale || film_container.width < ac.width || film_container.height < ac.height) {
+ return fit_ratio_within (ac.ratio (), display_container);
+ }
+
+ /* Scale the image so that it will be in the right place in film_container, even if display_container is a
+ different size.
+ */
+ return libdcp::Size (
+ c->video_size().width * float(display_container.width) / film_container.width,
+ c->video_size().height * float(display_container.height) / film_container.height
+ );
+}
+
+void
+VideoContentScale::setup_scales ()
+{
+ vector<Ratio const *> ratios = Ratio::all ();
+ for (vector<Ratio const *>::const_iterator i = ratios.begin(); i != ratios.end(); ++i) {
+ _scales.push_back (VideoContentScale (*i));
+ }
+
+ _scales.push_back (VideoContentScale (true));
+ _scales.push_back (VideoContentScale (false));
+}
+
+bool
+operator== (VideoContentScale const & a, VideoContentScale const & b)
+{
+ return (a.ratio() == b.ratio() && a.scale() == b.scale());
+}
+
+bool
+operator!= (VideoContentScale const & a, VideoContentScale const & b)
+{
+ return (a.ratio() != b.ratio() || a.scale() != b.scale());
+}
diff --git a/src/lib/video_content_scale.h b/src/lib/video_content_scale.h
new file mode 100644
index 000000000..87dd2f1fa
--- /dev/null
+++ b/src/lib/video_content_scale.h
@@ -0,0 +1,77 @@
+/*
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef DCPOMATIC_VIDEO_CONTENT_SCALE_H
+#define DCPOMATIC_VIDEO_CONTENT_SCALE_H
+
+#include <vector>
+#include <boost/shared_ptr.hpp>
+#include <libdcp/util.h>
+
+namespace cxml {
+ class Node;
+}
+
+namespace xmlpp {
+ class Node;
+}
+
+class Ratio;
+class VideoContent;
+
+class VideoContentScale
+{
+public:
+ VideoContentScale ();
+ VideoContentScale (Ratio const *);
+ VideoContentScale (bool);
+ VideoContentScale (boost::shared_ptr<cxml::Node>);
+
+ libdcp::Size size (boost::shared_ptr<const VideoContent>, libdcp::Size, libdcp::Size) const;
+ std::string id () const;
+ std::string name () const;
+ void as_xml (xmlpp::Node *) const;
+
+ Ratio const * ratio () const {
+ return _ratio;
+ }
+
+ bool scale () const {
+ return _scale;
+ }
+
+ static void setup_scales ();
+ static std::vector<VideoContentScale> all () {
+ return _scales;
+ }
+ static VideoContentScale from_id (std::string id);
+
+private:
+ /** a ratio to stretch the content to, or 0 for no stretch */
+ Ratio const * _ratio;
+ /** true if we want to scale the content */
+ bool _scale;
+
+ static std::vector<VideoContentScale> _scales;
+};
+
+bool operator== (VideoContentScale const & a, VideoContentScale const & b);
+bool operator!= (VideoContentScale const & a, VideoContentScale const & b);
+
+#endif
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 66ddb58f7..5af1aea1e 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -38,12 +38,14 @@
#include "job.h"
#include "cross.h"
#include "md5_digester.h"
+#include "version.h"
#include "i18n.h"
#define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_GENERAL);
#define LOG_TIMING(...) _film->log()->microsecond_log (String::compose (__VA_ARGS__), Log::TYPE_TIMING);
#define LOG_WARNING_NC(...) _film->log()->log (__VA_ARGS__, Log::TYPE_WARNING);
+#define LOG_ERROR(...) _film->log()->log (String::compose (__VA_ARGS__), Log::TYPE_ERROR);
/* OS X strikes again */
#undef set_key
@@ -53,7 +55,6 @@ using std::pair;
using std::string;
using std::list;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
using boost::weak_ptr;
@@ -412,9 +413,12 @@ Writer::finish ()
boost::system::error_code ec;
boost::filesystem::create_hard_link (video_from, video_to, ec);
if (ec) {
- /* hard link failed; copy instead */
- boost::filesystem::copy_file (video_from, video_to);
- LOG_WARNING_NC ("Hard-link failed; fell back to copying");
+ LOG_WARNING_NC ("Hard-link failed; copying instead");
+ boost::filesystem::copy_file (video_from, video_to, ec);
+ if (ec) {
+ LOG_ERROR ("Failed to copy video file from %1 to %2 (%3)", video_from.string(), video_to.string(), ec.message ());
+ throw FileError (ec.message(), video_from);
+ }
}
/* And update the asset */
@@ -472,7 +476,9 @@ Writer::finish ()
_sound_asset->compute_digest (boost::bind (&Job::set_progress, job.get(), _1, false));
}
- libdcp::XMLMetadata meta = Config::instance()->dcp_metadata ();
+ libdcp::XMLMetadata meta;
+ meta.issuer = Config::instance()->dcp_issuer ();
+ meta.creator = String::compose ("DCP-o-matic %1 %2", dcpomatic_version, dcpomatic_git_commit);
meta.set_issue_date_now ();
dcp.write_xml (_film->interop (), meta, _film->is_signed() ? make_signer () : shared_ptr<const libdcp::Signer> ());
diff --git a/src/lib/wscript b/src/lib/wscript
index 933368776..6c1da1772 100644
--- a/src/lib/wscript
+++ b/src/lib/wscript
@@ -40,7 +40,6 @@ sources = """
job.cc
job_manager.cc
kdm.cc
- json_server.cc
log.cc
md5_digester.cc
piece.cc
@@ -49,6 +48,7 @@ sources = """
playlist.cc
ratio.cc
resampler.cc
+ safe_stringstream.cc
scp_dcp_job.cc
scaler.cc
send_kdm_email_job.cc
@@ -68,6 +68,7 @@ sources = """
update.cc
util.cc
video_content.cc
+ video_content_scale.cc
video_decoder.cc
writer.cc
"""
@@ -83,8 +84,8 @@ def build(bld):
obj.uselib = """
AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE SWRESAMPLE
BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2
- SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XML++
- CURL ZIP QUICKMAIL
+ SNDFILE OPENJPEG POSTPROC TIFF MAGICK SSH DCP CXML GLIB LZMA XMLPP
+ CURL ZIP QUICKMAIL XMLSEC
"""
if bld.env.TARGET_OSX:
@@ -96,7 +97,7 @@ def build(bld):
obj.uselib += ' WINSOCK2 BFD DBGHELP IBERTY SHLWAPI MSWSOCK BOOST_LOCALE'
obj.source += ' stack.cpp'
if bld.env.BUILD_STATIC:
- obj.uselib += ' XML++'
+ obj.uselib += ' XMLPP'
obj.target = 'dcpomatic'
diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc
index aeb62a44e..fa89a4871 100644
--- a/src/tools/dcpomatic.cc
+++ b/src/tools/dcpomatic.cc
@@ -63,8 +63,8 @@
using std::cout;
using std::string;
+using std::vector;
using std::wstring;
-using std::stringstream;
using std::map;
using std::make_pair;
using std::list;
@@ -72,22 +72,16 @@ using std::exception;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
-static shared_ptr<Film> film;
-static std::string film_to_load;
-static std::string film_to_create;
-static std::string content_to_add;
-static wxMenu* jobs_menu = 0;
-
// #define DCPOMATIC_WINDOWS_CONSOLE 1
class FilmChangedDialog
{
public:
- FilmChangedDialog ()
+ FilmChangedDialog (string name)
{
_dialog = new wxMessageDialog (
0,
- wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (film->name ()).data()),
+ wxString::Format (_("Save changes to film \"%s\" before closing?"), std_to_wx (name).data()),
_("Film changed"),
wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION
);
@@ -110,51 +104,6 @@ private:
wxMessageDialog* _dialog;
};
-
-static void
-maybe_save_then_delete_film ()
-{
- if (!film) {
- return;
- }
-
- if (film->dirty ()) {
- FilmChangedDialog d;
- switch (d.run ()) {
- case wxID_NO:
- break;
- case wxID_YES:
- film->write_metadata ();
- break;
- }
- }
-
- film.reset ();
-}
-
-static void
-check_film_state_version (int v)
-{
- if (v == 4) {
- error_dialog (
- 0,
- _("This film was created with an old version of DVD-o-matic and may not load correctly "
- "in this version. Please check the film's settings carefully.")
- );
- }
-}
-
-static void
-load_film (boost::filesystem::path file)
-{
- film.reset (new Film (file));
- list<string> const notes = film->read_metadata ();
- check_film_state_version (film->state_version ());
- for (list<string>::const_iterator i = notes.begin(); i != notes.end(); ++i) {
- error_dialog (0, std_to_wx (*i));
- }
-}
-
#define ALWAYS 0x0
#define NEEDS_FILM 0x1
#define NOT_DURING_DCP_CREATION 0x2
@@ -163,19 +112,14 @@ load_film (boost::filesystem::path file)
map<wxMenuItem*, int> menu_items;
-static void
-add_item (wxMenu* menu, wxString text, int id, int sens)
-{
- wxMenuItem* item = menu->Append (id, text);
- menu_items.insert (make_pair (item, sens));
-}
-
enum {
ID_file_new = 1,
ID_file_open,
ID_file_save,
ID_file_properties,
- ID_content_scale_to_fit_width,
+ ID_file_history,
+ /* Allow spare IDs after _history for the recent files list */
+ ID_content_scale_to_fit_width = 100,
ID_content_scale_to_fit_height,
ID_jobs_make_dcp,
ID_jobs_make_kdms,
@@ -183,69 +127,11 @@ enum {
ID_jobs_show_dcp,
ID_tools_hints,
ID_tools_encoding_servers,
- ID_tools_check_for_updates
+ ID_tools_check_for_updates,
+ /* IDs for shortcuts (with no associated menu item) */
+ ID_add_file
};
-static void
-setup_menu (wxMenuBar* m)
-{
- wxMenu* file = new wxMenu;
- add_item (file, _("New..."), ID_file_new, ALWAYS);
- add_item (file, _("&Open..."), ID_file_open, ALWAYS);
- file->AppendSeparator ();
- add_item (file, _("&Save"), ID_file_save, NEEDS_FILM);
- file->AppendSeparator ();
- add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM);
-#ifndef __WXOSX__
- file->AppendSeparator ();
-#endif
-
-#ifdef __WXOSX__
- add_item (file, _("&Exit"), wxID_EXIT, ALWAYS);
-#else
- add_item (file, _("&Quit"), wxID_EXIT, ALWAYS);
-#endif
-
-
-#ifdef __WXOSX__
- add_item (file, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
-#else
- wxMenu* edit = new wxMenu;
- add_item (edit, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
-#endif
-
- wxMenu* content = new wxMenu;
- add_item (content, _("Scale to fit &width"), ID_content_scale_to_fit_width, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
- add_item (content, _("Scale to fit &height"), ID_content_scale_to_fit_height, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
-
- jobs_menu = new wxMenu;
- add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION);
- add_item (jobs_menu, _("Make &KDMs..."), ID_jobs_make_kdms, NEEDS_FILM);
- add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
- add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
-
- wxMenu* tools = new wxMenu;
- add_item (tools, _("Hints..."), ID_tools_hints, 0);
- add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0);
- add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0);
-
- wxMenu* help = new wxMenu;
-#ifdef __WXOSX__
- add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
-#else
- add_item (help, _("About"), wxID_ABOUT, ALWAYS);
-#endif
-
- m->Append (file, _("&File"));
-#ifndef __WXOSX__
- m->Append (edit, _("&Edit"));
-#endif
- m->Append (content, _("&Content"));
- m->Append (jobs_menu, _("&Jobs"));
- m->Append (tools, _("&Tools"));
- m->Append (help, _("&Help"));
-}
-
class Frame : public wxFrame
{
public:
@@ -254,6 +140,10 @@ public:
, _hints_dialog (0)
, _servers_list_dialog (0)
, _config_dialog (0)
+ , _file_menu (0)
+ , _history_items (0)
+ , _history_position (0)
+ , _history_separator (0)
{
#if defined(DCPOMATIC_WINDOWS) && defined(DCPOMATIC_WINDOWS_CONSOLE)
AllocConsole();
@@ -275,10 +165,14 @@ public:
setup_menu (bar);
SetMenuBar (bar);
+ _config_changed_connection = Config::instance()->Changed.connect (boost::bind (&Frame::config_changed, this));
+ config_changed ();
+
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_new, this), ID_file_new);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_open, this), ID_file_open);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_save, this), ID_file_save);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_properties, this), ID_file_properties);
+ Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_history, this, _1), ID_file_history, ID_file_history + HISTORY_SIZE);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::file_exit, this), wxID_EXIT);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::edit_preferences, this), wxID_PREFERENCES);
Bind (wxEVT_COMMAND_MENU_SELECTED, boost::bind (&Frame::content_scale_to_fit_width, this), ID_content_scale_to_fit_width);
@@ -294,13 +188,19 @@ public:
Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
+ wxAcceleratorEntry accel[1];
+ accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file);
+ Bind (wxEVT_MENU, boost::bind (&FilmEditor::content_add_file_clicked, _film_editor), ID_add_file);
+ wxAcceleratorTable accel_table (1, accel);
+ SetAcceleratorTable (accel_table);
+
/* Use a panel as the only child of the Frame so that we avoid
the dark-grey background on Windows.
*/
wxPanel* overall_panel = new wxPanel (this, wxID_ANY);
- _film_editor = new FilmEditor (film, overall_panel);
- _film_viewer = new FilmViewer (film, overall_panel);
+ _film_editor = new FilmEditor (overall_panel);
+ _film_viewer = new FilmViewer (overall_panel);
JobManagerView* job_manager_view = new JobManagerView (overall_panel, static_cast<JobManagerView::Buttons> (0));
wxBoxSizer* right_sizer = new wxBoxSizer (wxVERTICAL);
@@ -314,36 +214,72 @@ public:
set_menu_sensitivity ();
_film_editor->FileChanged.connect (bind (&Frame::file_changed, this, _1));
- if (film) {
- file_changed (film->directory ());
- } else {
- file_changed ("");
- }
+ file_changed ("");
JobManager::instance()->ActiveJobsChanged.connect (boost::bind (&Frame::set_menu_sensitivity, this));
- set_film ();
overall_panel->SetSizer (main_sizer);
}
-private:
+ void new_film (boost::filesystem::path path)
+ {
+ shared_ptr<Film> film (new Film (path));
+ film->write_metadata ();
+ film->set_name (path.filename().generic_string());
+ set_film (film);
+ }
+
+ void load_film (boost::filesystem::path file)
+ try
+ {
+ maybe_save_then_delete_film ();
+
+ shared_ptr<Film> film (new Film (file));
+ list<string> const notes = film->read_metadata ();
+
+ if (film->state_version() == 4) {
+ error_dialog (
+ 0,
+ _("This film was created with an old version of DVD-o-matic and may not load correctly "
+ "in this version. Please check the film's settings carefully.")
+ );
+ }
+
+ for (list<string>::const_iterator i = notes.begin(); i != notes.end(); ++i) {
+ error_dialog (0, std_to_wx (*i));
+ }
+
+ set_film (film);
+ }
+ catch (std::exception& e) {
+ wxString p = std_to_wx (file.string ());
+ wxCharBuffer b = p.ToUTF8 ();
+ error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data()));
+ }
- void set_film ()
+ void set_film (shared_ptr<Film> film)
{
- _film_viewer->set_film (film);
- _film_editor->set_film (film);
+ _film = film;
+ _film_viewer->set_film (_film);
+ _film_editor->set_film (_film);
set_menu_sensitivity ();
+ Config::instance()->add_to_history (_film->directory ());
}
+ shared_ptr<Film> film () const {
+ return _film;
+ }
+
+private:
+
void file_changed (boost::filesystem::path f)
{
- stringstream s;
- s << wx_to_std (_("DCP-o-matic"));
+ string s = wx_to_std (_("DCP-o-matic"));
if (!f.empty ()) {
- s << " - " << f.string ();
+ s += " - " + f.string ();
}
- SetTitle (std_to_wx (s.str()));
+ SetTitle (std_to_wx (s));
}
void file_new ()
@@ -373,10 +309,7 @@ private:
}
maybe_save_then_delete_film ();
- film.reset (new Film (d->get_path ()));
- film->write_metadata ();
- film->set_name (boost::filesystem::path (d->get_path()).filename().generic_string());
- set_film ();
+ new_film (d->get_path ());
}
d->Destroy ();
@@ -402,15 +335,7 @@ private:
}
if (r == wxID_OK) {
- maybe_save_then_delete_film ();
- try {
- load_film (wx_to_std (c->GetPath ()));
- set_film ();
- } catch (std::exception& e) {
- wxString p = c->GetPath ();
- wxCharBuffer b = p.ToUTF8 ();
- error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data()));
- }
+ load_film (wx_to_std (c->GetPath ()));
}
c->Destroy ();
@@ -418,15 +343,24 @@ private:
void file_save ()
{
- film->write_metadata ();
+ _film->write_metadata ();
}
void file_properties ()
{
- PropertiesDialog* d = new PropertiesDialog (this, film);
+ PropertiesDialog* d = new PropertiesDialog (this, _film);
d->ShowModal ();
d->Destroy ();
}
+
+ void file_history (wxCommandEvent& event)
+ {
+ vector<boost::filesystem::path> history = Config::instance()->history ();
+ int n = event.GetId() - ID_file_history;
+ if (n >= 0 && n < static_cast<int> (history.size ())) {
+ load_film (history[n]);
+ }
+ }
void file_exit ()
{
@@ -447,22 +381,22 @@ private:
double required;
double available;
- if (!film->should_be_enough_disk_space (required, available)) {
+ if (!_film->should_be_enough_disk_space (required, available)) {
if (!confirm_dialog (this, wxString::Format (_("The DCP for this film will take up about %.1f Gb, and the disk that you are using only has %.1f Gb available. Do you want to continue anyway?"), required, available))) {
return;
}
}
- JobWrapper::make_dcp (this, film);
+ JobWrapper::make_dcp (this, _film);
}
void jobs_make_kdms ()
{
- if (!film) {
+ if (!_film) {
return;
}
- KDMDialog* d = new KDMDialog (this, film);
+ KDMDialog* d = new KDMDialog (this, _film);
if (d->ShowModal () != wxID_OK) {
d->Destroy ();
return;
@@ -470,10 +404,10 @@ private:
try {
if (d->write_to ()) {
- write_kdm_files (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation (), d->directory ());
+ write_kdm_files (_film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation (), d->directory ());
} else {
JobManager::instance()->add (
- shared_ptr<Job> (new SendKDMEmailJob (film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation ()))
+ shared_ptr<Job> (new SendKDMEmailJob (_film, d->screens (), d->cpl (), d->from (), d->until (), d->formulation ()))
);
}
} catch (libdcp::NotEncryptedError& e) {
@@ -505,27 +439,27 @@ private:
void jobs_send_dcp_to_tms ()
{
- film->send_dcp_to_tms ();
+ _film->send_dcp_to_tms ();
}
void jobs_show_dcp ()
{
#ifdef __WXMSW__
- string d = film->directory().string ();
+ string d = _film->directory().string ();
wstring w;
w.assign (d.begin(), d.end());
ShellExecute (0, L"open", w.c_str(), 0, 0, SW_SHOWDEFAULT);
#else
int r = system ("which nautilus");
if (WEXITSTATUS (r) == 0) {
- r = system (string ("nautilus " + film->directory().string()).c_str ());
+ r = system (string ("nautilus " + _film->directory().string()).c_str ());
if (WEXITSTATUS (r)) {
error_dialog (this, _("Could not show DCP (could not run nautilus)"));
}
} else {
int r = system ("which konqueror");
if (WEXITSTATUS (r) == 0) {
- r = system (string ("konqueror " + film->directory().string()).c_str ());
+ r = system (string ("konqueror " + _film->directory().string()).c_str ());
if (WEXITSTATUS (r)) {
error_dialog (this, _("Could not show DCP (could not run konqueror)"));
}
@@ -537,7 +471,7 @@ private:
void tools_hints ()
{
if (!_hints_dialog) {
- _hints_dialog = new HintsDialog (this, film);
+ _hints_dialog = new HintsDialog (this, _film);
}
_hints_dialog->Show ();
@@ -589,8 +523,13 @@ private:
return;
}
+ /* We don't want to hear about any more configuration changes, since they
+ cause the File menu to be altered, which itself will be deleted around
+ now (without, as far as I can see, any way for us to find out).
+ */
+ _config_changed_connection.disconnect ();
+
maybe_save_then_delete_film ();
-
ev.Skip ();
}
@@ -602,14 +541,14 @@ private:
++i;
}
bool const dcp_creation = (i != jobs.end ()) && !(*i)->finished ();
- bool const have_cpl = film && !film->cpls().empty ();
+ bool const have_cpl = _film && !_film->cpls().empty ();
bool const have_selected_video_content = !_film_editor->selected_video_content().empty();
for (map<wxMenuItem*, int>::iterator j = menu_items.begin(); j != menu_items.end(); ++j) {
bool enabled = true;
- if ((j->second & NEEDS_FILM) && film == 0) {
+ if ((j->second & NEEDS_FILM) && !_film) {
enabled = false;
}
@@ -628,12 +567,137 @@ private:
j->first->Enable (enabled);
}
}
+
+ void maybe_save_then_delete_film ()
+ {
+ if (!_film) {
+ return;
+ }
+
+ if (_film->dirty ()) {
+ FilmChangedDialog d (_film->name ());
+ switch (d.run ()) {
+ case wxID_NO:
+ break;
+ case wxID_YES:
+ _film->write_metadata ();
+ break;
+ }
+ }
+
+ _film.reset ();
+ }
+
+ void add_item (wxMenu* menu, wxString text, int id, int sens)
+ {
+ wxMenuItem* item = menu->Append (id, text);
+ menu_items.insert (make_pair (item, sens));
+ }
+
+ void setup_menu (wxMenuBar* m)
+ {
+ _file_menu = new wxMenu;
+ add_item (_file_menu, _("New...\tCtrl-N"), ID_file_new, ALWAYS);
+ add_item (_file_menu, _("&Open...\tCtrl-O"), ID_file_open, ALWAYS);
+ _file_menu->AppendSeparator ();
+ add_item (_file_menu, _("&Save\tCtrl-S"), ID_file_save, NEEDS_FILM);
+ _file_menu->AppendSeparator ();
+ add_item (_file_menu, _("&Properties..."), ID_file_properties, NEEDS_FILM);
+
+ _history_position = _file_menu->GetMenuItems().GetCount();
+
+#ifndef __WXOSX__
+ _file_menu->AppendSeparator ();
+#endif
+
+#ifdef __WXOSX__
+ add_item (_file_menu, _("&Exit"), wxID_EXIT, ALWAYS);
+#else
+ add_item (_file_menu, _("&Quit"), wxID_EXIT, ALWAYS);
+#endif
+
+#ifdef __WXOSX__
+ add_item (_file_menu, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS);
+#else
+ wxMenu* edit = new wxMenu;
+ add_item (edit, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS);
+#endif
+
+ wxMenu* content = new wxMenu;
+ add_item (content, _("Scale to fit &width"), ID_content_scale_to_fit_width, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
+ add_item (content, _("Scale to fit &height"), ID_content_scale_to_fit_height, NEEDS_FILM | NEEDS_SELECTED_VIDEO_CONTENT);
+
+ wxMenu* jobs_menu = new wxMenu;
+ add_item (jobs_menu, _("&Make DCP\tCtrl-M"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION);
+ add_item (jobs_menu, _("Make &KDMs...\tCtrl-K"), ID_jobs_make_kdms, NEEDS_FILM);
+ add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
+ add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL);
+
+ wxMenu* tools = new wxMenu;
+ add_item (tools, _("Hints...\tCtrl-H"), ID_tools_hints, 0);
+ add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0);
+ add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0);
+
+ wxMenu* help = new wxMenu;
+#ifdef __WXOSX__
+ add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
+#else
+ add_item (help, _("About"), wxID_ABOUT, ALWAYS);
+#endif
+
+ m->Append (_file_menu, _("&File"));
+#ifndef __WXOSX__
+ m->Append (edit, _("&Edit"));
+#endif
+ m->Append (content, _("&Content"));
+ m->Append (jobs_menu, _("&Jobs"));
+ m->Append (tools, _("&Tools"));
+ m->Append (help, _("&Help"));
+ }
+
+ void config_changed ()
+ {
+ for (int i = 0; i < _history_items; ++i) {
+ delete _file_menu->Remove (ID_file_history + i);
+ }
+
+ if (_history_separator) {
+ _file_menu->Remove (_history_separator);
+ }
+ delete _history_separator;
+ _history_separator = 0;
+
+ int pos = _history_position;
+
+ vector<boost::filesystem::path> history = Config::instance()->history ();
+
+ if (!history.empty ()) {
+ _history_separator = _file_menu->InsertSeparator (pos++);
+ }
+
+ for (size_t i = 0; i < history.size(); ++i) {
+ SafeStringStream s;
+ if (i < 9) {
+ s << "&" << (i + 1) << " ";
+ }
+ s << history[i].string();
+ _file_menu->Insert (pos++, ID_file_history + i, std_to_wx (s.str ()));
+ }
+
+ _history_items = history.size ();
+ }
FilmEditor* _film_editor;
FilmViewer* _film_viewer;
HintsDialog* _hints_dialog;
ServersListDialog* _servers_list_dialog;
wxPreferencesEditor* _config_dialog;
+ wxMenu* _file_menu;
+ shared_ptr<Film> _film;
+ int _history_items;
+ int _history_position;
+ wxMenuItem* _history_separator;
+ boost::signals2::scoped_connection _config_changed_connection;
};
static const wxCmdLineEntryDesc command_line_description[] = {
@@ -684,29 +748,26 @@ class App : public wxApp
*/
Config::drop ();
- if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) {
+ _frame = new Frame (_("DCP-o-matic"));
+ SetTopWindow (_frame);
+ _frame->Maximize ();
+ _frame->Show ();
+
+ if (!_film_to_load.empty() && boost::filesystem::is_directory (_film_to_load)) {
try {
- load_film (film_to_load);
+ _frame->load_film (_film_to_load);
} catch (exception& e) {
- error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), film_to_load, e.what())));
+ error_dialog (0, std_to_wx (String::compose (wx_to_std (_("Could not load film %1 (%2)")), _film_to_load, e.what())));
}
}
- if (!film_to_create.empty ()) {
- film.reset (new Film (film_to_create));
- film->write_metadata ();
- film->set_name (boost::filesystem::path (film_to_create).filename().generic_string ());
- }
-
- if (!content_to_add.empty ()) {
- film->examine_and_add_content (content_factory (film, content_to_add));
+ if (!_film_to_create.empty ()) {
+ _frame->new_film (_film_to_create);
+ if (!_content_to_add.empty ()) {
+ _frame->film()->examine_and_add_content (content_factory (_frame->film(), _content_to_add));
+ }
}
- _frame = new Frame (_("DCP-o-matic"));
- SetTopWindow (_frame);
- _frame->Maximize ();
- _frame->Show ();
-
ui_signaller = new wxUISignaller (this);
Bind (wxEVT_IDLE, boost::bind (&App::idle, this));
@@ -714,10 +775,6 @@ class App : public wxApp
_timer.reset (new wxTimer (this));
_timer->Start (1000);
- if (film) {
- check_film_state_version (film->state_version ());
- }
-
UpdateChecker::instance()->StateChanged.connect (boost::bind (&App::update_checker_state_changed, this));
if (Config::instance()->check_for_updates ()) {
UpdateChecker::instance()->run ();
@@ -741,26 +798,35 @@ class App : public wxApp
{
if (parser.GetParamCount() > 0) {
if (parser.Found (wxT ("new"))) {
- film_to_create = wx_to_std (parser.GetParam (0));
+ _film_to_create = wx_to_std (parser.GetParam (0));
} else {
- film_to_load = wx_to_std (parser.GetParam (0));
+ _film_to_load = wx_to_std (parser.GetParam (0));
}
}
wxString content;
if (parser.Found (wxT ("content"), &content)) {
- content_to_add = wx_to_std (content);
+ _content_to_add = wx_to_std (content);
}
return true;
}
+ /* An unhandled exception has occurred inside the main event loop */
bool OnExceptionInMainLoop ()
{
- error_dialog (0, _("An unknown exception occurred. Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+ try {
+ throw;
+ } catch (exception& e) {
+ error_dialog (0, wxString::Format (_("An exception occurred (%s). Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."), e.what ()));
+ } catch (...) {
+ error_dialog (0, _("An unknown exception occurred. Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
+ }
+
+ /* This will terminate the program */
return false;
}
-
+
void OnUnhandledException ()
{
error_dialog (0, _("An unknown exception occurred. Please report this problem to the DCP-o-matic author (carl@dcpomatic.com)."));
@@ -810,6 +876,9 @@ class App : public wxApp
Frame* _frame;
shared_ptr<wxTimer> _timer;
+ string _film_to_load;
+ string _film_to_create;
+ string _content_to_add;
};
IMPLEMENT_APP (App)
diff --git a/src/tools/dcpomatic_batch.cc b/src/tools/dcpomatic_batch.cc
index 49b341443..de255e65e 100644
--- a/src/tools/dcpomatic_batch.cc
+++ b/src/tools/dcpomatic_batch.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@
#include "lib/film.h"
#include "lib/job_manager.h"
#include "wx/wx_util.h"
+#include "wx/about_dialog.h"
#include "wx/wx_ui_signaller.h"
#include "wx/job_manager_view.h"
@@ -61,6 +62,7 @@ class Frame : public wxFrame
public:
Frame (wxString const & title)
: wxFrame (NULL, -1, title)
+ , _sizer (new wxBoxSizer (wxVERTICAL))
{
wxMenuBar* bar = new wxMenuBar;
setup_menu (bar);
@@ -75,24 +77,29 @@ public:
s->Add (panel, 1, wxEXPAND);
SetSizer (s);
- wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
-
JobManagerView* job_manager_view = new JobManagerView (panel, JobManagerView::PAUSE);
- sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
+ _sizer->Add (job_manager_view, 1, wxALL | wxEXPAND, 6);
wxSizer* buttons = new wxBoxSizer (wxHORIZONTAL);
wxButton* add = new wxButton (panel, wxID_ANY, _("Add Film..."));
add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&Frame::add_film, this));
buttons->Add (add, 1, wxALL, 6);
- sizer->Add (buttons, 0, wxALL, 6);
+ _sizer->Add (buttons, 0, wxALL, 6);
- panel->SetSizer (sizer);
+ panel->SetSizer (_sizer);
Bind (wxEVT_CLOSE_WINDOW, boost::bind (&Frame::close, this, _1));
+ Bind (wxEVT_SIZE, boost::bind (&Frame::sized, this, _1));
}
private:
+ void sized (wxSizeEvent& ev)
+ {
+ _sizer->Layout ();
+ ev.Skip ();
+ }
+
bool should_close ()
{
if (!JobManager::instance()->work_to_do ()) {
@@ -135,34 +142,9 @@ private:
void help_about ()
{
- wxAboutDialogInfo info;
- info.SetName (_("DCP-o-matic Batch Converter"));
- if (strcmp (dcpomatic_git_commit, "release") == 0) {
- info.SetVersion (std_to_wx (String::compose ("version %1", dcpomatic_version)));
- } else {
- info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
- }
- info.SetDescription (_("Free, open-source DCP generation from almost anything."));
- info.SetCopyright (_("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"));
-
- wxArrayString authors;
- authors.Add (wxT ("Carl Hetherington"));
- authors.Add (wxT ("Terrence Meiczinger"));
- authors.Add (wxT ("Paul Davis"));
- authors.Add (wxT ("Ole Laursen"));
- info.SetDevelopers (authors);
-
- wxArrayString translators;
- translators.Add (wxT ("Olivier Perriere"));
- translators.Add (wxT ("Lilian Lefranc"));
- translators.Add (wxT ("Thierry Journet"));
- translators.Add (wxT ("Massimiliano Broggi"));
- translators.Add (wxT ("Manuel AC"));
- translators.Add (wxT ("Adam Klotblixt"));
- info.SetTranslators (translators);
-
- info.SetWebSite (wxT ("http://carlh.net/software/dcpomatic"));
- wxAboutBox (info);
+ AboutDialog* d = new AboutDialog (this);
+ d->ShowModal ();
+ d->Destroy ();
}
void add_film ()
@@ -200,6 +182,7 @@ private:
}
boost::optional<boost::filesystem::path> _last_parent;
+ wxSizer* _sizer;
};
static const wxCmdLineEntryDesc command_line_description[] = {
diff --git a/src/tools/dcpomatic_cli.cc b/src/tools/dcpomatic_cli.cc
index ff948e9fb..5cb05e11d 100644
--- a/src/tools/dcpomatic_cli.cc
+++ b/src/tools/dcpomatic_cli.cc
@@ -33,7 +33,6 @@
#include "lib/log.h"
#include "lib/ui_signaller.h"
#include "lib/server_finder.h"
-#include "lib/json_server.h"
using std::string;
using std::cerr;
@@ -53,7 +52,6 @@ help (string n)
<< " -f, --flags show flags passed to C++ compiler on build\n"
<< " -n, --no-progress do not print progress to stdout\n"
<< " -r, --no-remote do not use any remote servers\n"
- << " -j, --json <port> run a JSON server on the specified port\n"
<< " -k, --keep-going keep running even when the job is complete\n"
<< "\n"
<< "<FILM> is the film directory.\n";
@@ -65,7 +63,6 @@ main (int argc, char* argv[])
string film_dir;
bool progress = true;
bool no_remote = false;
- int json_port = 0;
bool keep_going = false;
int option_index = 0;
@@ -77,12 +74,11 @@ main (int argc, char* argv[])
{ "flags", no_argument, 0, 'f'},
{ "no-progress", no_argument, 0, 'n'},
{ "no-remote", no_argument, 0, 'r'},
- { "json", required_argument, 0, 'j' },
{ "keep-going", no_argument, 0, 'k' },
{ 0, 0, 0, 0 }
};
- int c = getopt_long (argc, argv, "vhdfnrj:k", long_options, &option_index);
+ int c = getopt_long (argc, argv, "vhdfnrk", long_options, &option_index);
if (c == -1) {
break;
@@ -107,9 +103,6 @@ main (int argc, char* argv[])
case 'r':
no_remote = true;
break;
- case 'j':
- json_port = atoi (optarg);
- break;
case 'k':
keep_going = true;
break;
@@ -130,10 +123,6 @@ main (int argc, char* argv[])
ServerFinder::instance()->disable ();
}
- if (json_port) {
- new JSONServer (json_port);
- }
-
cout << "DCP-o-matic " << dcpomatic_version << " git " << dcpomatic_git_commit;
char buf[256];
if (gethostname (buf, 256) == 0) {
@@ -151,9 +140,6 @@ main (int argc, char* argv[])
}
cout << "\nMaking DCP for " << film->name() << "\n";
-// cout << "Content: " << film->content() << "\n";
-// pair<string, string> const f = Filter::ffmpeg_strings (film->filters ());
-// cout << "Filters: " << f.first << " " << f.second << "\n";
film->make_dcp ();
diff --git a/src/tools/dcpomatic_kdm.cc b/src/tools/dcpomatic_kdm.cc
index 092a1ca1b..758060a08 100644
--- a/src/tools/dcpomatic_kdm.cc
+++ b/src/tools/dcpomatic_kdm.cc
@@ -24,9 +24,9 @@
#include "lib/kdm.h"
#include "lib/config.h"
#include "lib/exceptions.h"
+#include "lib/safe_stringstream.h"
using std::string;
-using std::stringstream;
using std::cout;
using std::cerr;
using std::list;
@@ -76,7 +76,7 @@ time_from_string (string t)
static boost::posix_time::time_duration
duration_from_string (string d)
{
- stringstream s (d);
+ SafeStringStream s (d);
int N;
string unit;
s >> N >> unit;
diff --git a/src/tools/dcpomatic_server_cli.cc b/src/tools/dcpomatic_server_cli.cc
index e4ac85f4c..f35797954 100644
--- a/src/tools/dcpomatic_server_cli.cc
+++ b/src/tools/dcpomatic_server_cli.cc
@@ -20,7 +20,6 @@
#include "lib/server.h"
#include <iostream>
#include <stdexcept>
-#include <sstream>
#include <cstring>
#include <vector>
#include <unistd.h>
diff --git a/src/tools/po/de_DE.po b/src/tools/po/de_DE.po
index ba259fd65..24ed468a8 100644
--- a/src/tools/po/de_DE.po
+++ b/src/tools/po/de_DE.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:02+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 03:04+0100\n"
"Last-Translator: Carsten Kurz\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de\n"
@@ -18,83 +18,80 @@ msgstr ""
"X-Generator: Poedit 1.6.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr ""
"%1 existiert bereits als Datei, kann also nicht für einen neuen Film benutzt "
"werden."
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr "&Projekt hinzufügen"
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
-msgstr "&Quelle"
+msgstr "&Quelle..."
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Bearbeiten"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Ende"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&Datei"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Hilfe"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Aufgaben"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&DCP erstellen"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&DCP erstellen\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Öffnen..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Öffnen...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Einstellungen..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Einstellungen...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Eigenschaften..."
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Beenden"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Speichern"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
msgstr "&DCP an TMS senden"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Werkzeuge"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
msgstr "Über"
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "Über DCP-o-matic"
@@ -102,7 +99,16 @@ msgstr "Über DCP-o-matic"
msgid "Add Film..."
msgstr "Projekt hinzufügen..."
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+"Ein unbekannter Fehler ist aufgetreten. Bitte melden Sie dieses Problem an "
+"den Autor von DCP-o-matic (carl@dcpomatic.com)!"
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
@@ -110,93 +116,87 @@ msgstr ""
"Ein unbekannter Fehler ist aufgetreten. Bitte melden Sie dieses Problem an "
"den Autor von DCP-o-matic (carl@dcpomatic.com)!"
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
msgstr "Ein unbekannter Fehler ist aufgetreten."
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
msgstr "Medien der CPL sind nicht verschlüsselt worden."
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Auf Updates überprüfen..."
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "Film %1 (%2) konnte nicht geladen werden"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Der Film konnte nicht bei %s (%s) geöffnet werden"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr ""
"DCP kann nicht angezeigt werden (Konqueror konnte nicht gestartet werden)"
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr "DCP kann nicht angezeigt werden (Nautilus konnte nicht geladen werden)"
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
msgstr "DCP-o-matic Batch Converter"
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr "Encoding Server..."
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Projekt gewechselt"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Kostenlose Open-Source-Software zur DCP-Erstellung aus nahezu allen "
-"Quellformaten."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Tipps..."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Tipps...\tCtrl-H"
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "&KDM erstellen..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "&KDM erstellen...\tCtrl-K"
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Neu..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Neu...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "Z&eige DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Änderungen des Projekts \"%s\" vor dem Schließen speichern ?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
-msgstr "Skalieren auf &Höhe DCI-Container"
+msgstr "...skalieren auf &Höhe DCI-Container"
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
-msgstr "Skalieren auf &Breite DCI-Container"
+msgstr "...skalieren auf &Breite DCI-Container"
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Zu öffnendes Projekt auswählen"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -205,11 +205,11 @@ msgstr ""
"Das DCP für diesen Film wird etwa %.1f Gbyte groß. Auf dem ausgewählten "
"Laufwerk sind aber nur %.1f Gbyte frei. Möchten Sie trotzdem weitermachen ?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "Der DCP-o-matic Download Server ist nicht erreichbar."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
@@ -217,17 +217,17 @@ msgstr ""
"Der Ordner %1 existiert bereits und ist nicht leer. Wollen Sie ihn trotzdem "
"benutzen ?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "Es ist keine neue Version von DCP-o-matic verfügbar."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr ""
"Manche Aufgaben sind nicht erledigt - sind Sie sicher, dass Sie Beenden "
"wollen ?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
@@ -236,12 +236,27 @@ msgstr ""
"worden und wird in dieser Programmversion möglicherweise nicht korrekt "
"umgesetzt. Bitte prüfen Sie alle Projekteinstellungen sorgfältig!"
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Unerledigte Aufgaben"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
msgstr "Kein Ordner ausgewählt. Wählen Sie vor dem Öffnen einen Ordner aus."
+
+#~ msgid "&Save"
+#~ msgstr "&Speichern"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Kostenlose Open-Source-Software zur DCP-Erstellung aus nahezu allen "
+#~ "Quellformaten."
diff --git a/src/tools/po/es_ES.po b/src/tools/po/es_ES.po
index 374877caf..f6d2e4439 100644
--- a/src/tools/po/es_ES.po
+++ b/src/tools/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DCPOMATIC\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-04-20 10:21-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -17,81 +17,78 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.4\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr "%1 ya existe como fichero, no puedes usarlo para una nueva película."
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr "&Añadir película..."
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
msgstr ""
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Editar"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Salir"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&Archivo"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Ayuda"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Tareas"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Crear DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Crear DCP\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Abrir..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Abrir...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Preferencias..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Preferencias...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Propiedades..."
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Salir"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Guardar"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
msgstr "&Enviar DCP al TMS"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Herramientas"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
msgstr "Acerca de"
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "Acerca de DVD-o-matic"
@@ -99,98 +96,102 @@ msgstr "Acerca de DVD-o-matic"
msgid "Add Film..."
msgstr "Añadir película..."
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
msgstr ""
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
msgstr "Ha ocurrido un error desconocido."
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
msgstr ""
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Buscar actualizaciones"
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "No se pudo cargar la película %s (%s)"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "No se pudo cargar la película en %s (%s)"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr "No se pudo mostrar el DCP (no se pudo ejecutar konqueror)"
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr "No se pudo mostrar el DCP (no se pudo ejecutar nautilos)"
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
msgstr "Convertidor por lotes DCP-o-matic"
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr "Servidores de codificación..."
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Película cambiada"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Generación libre y de código abierto de DCP a partir de casi cualquier "
-"fuente."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Pistas..."
+#: src/tools/dcpomatic.cc:637
+#, fuzzy
+msgid "Hints...\tCtrl-H"
+msgstr "Pistas...\tCtrl-H"
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Crear &KDMs..."
+#: src/tools/dcpomatic.cc:632
+#, fuzzy
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Crear &KDMs...\tCtrl-K"
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nuevo..."
+#: src/tools/dcpomatic.cc:600
+#, fuzzy
+msgid "New...\tCtrl-N"
+msgstr "Nuevo...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "&Mostrar DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Guardar cambios de la película \"%s\" antes de cerrar?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
msgstr ""
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
msgstr ""
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Selecciona la película a abrir"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -200,26 +201,26 @@ msgstr ""
"seleccionado solo tiene %.1f Gb disponibles. Quieres continuar de todas "
"formas?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "Imposible conectar con el servidor de descarga de DCP-o-matic."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
msgstr ""
"El directorio %1 ya existe y no está vacío. ¿Estás seguro de querer usarlo?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "No hay disponibles nuevas versiones de DCP-o-matic."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr "Hay trabajos sin finalizar; ¿estás seguro de querer cerrar?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
@@ -228,11 +229,11 @@ msgstr ""
"cargue correctamente en esta versión. Por favor revisa cuidadosamente las "
"opciones."
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Trabajos sin finalizar"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
@@ -240,6 +241,21 @@ msgstr ""
"No has seleccionado una carpeta. Asegúrate de seleccionar una antes de "
"pinchar sobre Abrir."
+#~ msgid "&Save"
+#~ msgstr "&Guardar"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Generación libre y de código abierto de DCP a partir de casi cualquier "
+#~ "fuente."
+
#~ msgid "&Analyse audio"
#~ msgstr "&Analizar audio"
diff --git a/src/tools/po/fr_FR.po b/src/tools/po/fr_FR.po
index fca31b0b5..86994dc71 100644
--- a/src/tools/po/fr_FR.po
+++ b/src/tools/po/fr_FR.po
@@ -7,92 +7,89 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 15:57+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 10:43+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr ""
"Le fichier %1 existe déjà, vous ne pouvez l'utiliser pour un nouveau projet."
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr "&Ajouter Film..."
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
-msgstr "&Adaptation"
+msgstr "&Contenu"
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Edition"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Quitter"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&Fichier"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Aide"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Travaux"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Créer le DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Créer le DCP\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Ouvrir..."
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Ouvrir...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Préférences..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Préférences...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Propriétés..."
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Quitter"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Enregistrer"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
-msgstr "&Envoyer le DCP dans le TMS"
+msgstr "&Envoyer le DCP au TMS"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Outils"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
-msgstr "A Propos"
+msgstr "A propos"
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "À propos de DCP-o-matic"
@@ -100,126 +97,132 @@ msgstr "À propos de DCP-o-matic"
msgid "Add Film..."
msgstr "Ajouter Film..."
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+"Erreur indéterminée. Merci de rapporter le problème à l'auteur de DCP-o-"
+"matic (carl@dcpomatic.com)."
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
msgstr ""
-"Erreur indeterminée. Merci de rapporter le problème à l'auteur de DCP-o-"
+"Erreur indéterminée. Merci de rapporter le problème à l'auteur de DCP-o-"
"matic (carl@dcpomatic.com)."
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
-msgstr "Une exception inconnue est arrivée"
+msgstr "Exception inconnue"
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
-msgstr "Le contenu du DCP n'est pas crypté."
+msgstr "Le contenu du CPL n'est pas crypté."
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Recherche mises à jour"
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "Impossible de charger le film %1 (%2)"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Impossible d'ouvrir le film à %s (%s)"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr "Ouverture du DCP impossible (konqueror est introuvable)"
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr "Ouverture du DCP impossible (nautilus est introuvable)"
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
-msgstr "DCP-o-matic - Convertisseur Batch"
+msgstr "DCP-o-matic - Convertisseur par lots"
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr "Serveurs d'encodage"
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Film changé"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr "Création de DCP libre et open-source à partir de presque tout."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Avertissements..."
+#: src/tools/dcpomatic.cc:637
+#, fuzzy
+msgid "Hints...\tCtrl-H"
+msgstr "Conseils...\tCtrl-H"
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Générer &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Générer &KDMs...\tCtrl-K"
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nouveau..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nouveau...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "Voir le DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Enregistrer les changements du film \"%s\" avant de fermer ?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
msgstr "Adapter pour remplir la &hauteur"
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
msgstr "Adapter pour remplir la largeur"
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Sélectionner le film à ouvrir"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
"using only has %.1f Gb available. Do you want to continue anyway?"
msgstr ""
-"Le DCP de ce film prendra environ %.1f Go d'espace. Le disque que vous "
-"utilisez n'a que %.1f Go disponible(s). Souhaitez-vous continuer?"
+"Le DCP de ce film pèsera environ %.1f Go. Le disque que vous utilisez n'a "
+"que %.1f Go disponible(s). Souhaitez-vous continuer?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "Le serveur de téléchargement de DCP-o-matic ne peut être contacté."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
msgstr ""
"Le dossier %1 existe et n'est pas vide. Etes-vous sûr de vouloir l'utiliser ?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "Aucune mise à jour disponible pour DCP-o-matic."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr "Il y a des tâches inachevées ; voulez-vous vraiment quitter ?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
@@ -228,11 +231,11 @@ msgstr ""
"être ouvert correctement dans cette version. Veuillez vérifier les "
"paramètres de réglages très attentivement."
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Travaux incomplets"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
@@ -240,6 +243,19 @@ msgstr ""
"Aucun dossier sélectionné. Selectionnez un dossier avant de cliquer sur "
"Ouvrir"
+#~ msgid "&Save"
+#~ msgstr "&Enregistrer"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Création de DCP libre et open-source à partir de presque tout."
+
#~ msgid "&Analyse audio"
#~ msgstr "&Analyser le son"
diff --git a/src/tools/po/it_IT.po b/src/tools/po/it_IT.po
index c3baa96d1..56b050df0 100644
--- a/src/tools/po/it_IT.po
+++ b/src/tools/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-02-03 09:36+0100\n"
"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
@@ -17,81 +17,75 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.3\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr "%1 esiste già il file, non è possibile usarlo per un nuovo film"
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr ""
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
msgstr ""
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Modifica"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Esci"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&File"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Aiuto"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Lavori"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Crea DCP"
+#: src/tools/dcpomatic.cc:631
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Crea DCP\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Apri..."
+#: src/tools/dcpomatic.cc:601
+msgid "&Open...\tCtrl-O"
+msgstr "&Apri...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Preferenze..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Preferenze...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Proprieta'..."
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Esci"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Salva"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
msgstr "&Invia DCP a TMS"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Strumenti"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
msgstr "Informazioni"
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "Su DVD-o-matic"
@@ -99,96 +93,99 @@ msgstr "Su DVD-o-matic"
msgid "Add Film..."
msgstr ""
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
msgstr ""
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
msgstr ""
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
msgstr ""
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Controlla aggiornamenti"
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "Non posso caricare il film %s (%s)"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Non posso aprire il film in %s (%s)"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr ""
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr ""
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
msgstr ""
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr ""
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Film modificato"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr "Genera DCP da quasi tutto, free e open-source."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Suggerimenti...\tCtrl-H"
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Suggerimenti..."
-
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
msgstr ""
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nuovo"
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nuovo...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "&Mostra DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Salvare i cambiamenti del film \"%s\" prima di chiudere?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
msgstr ""
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
msgstr ""
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Seleziona il film da aprire"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -197,35 +194,35 @@ msgstr ""
"Il DCP di questo film occupa %.1f Gb, ma il disco che stai usando dispone di "
"%.1f Gb liberi. Vuoi continuare ugualmente?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "Il download server di DCP-o-matic non può essere contattato."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
msgstr "La cartella %1 esiste già e non è vuota. Sei sicuro di volerla usare?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "Non ci sono nuove versioni di DCP-o-matic disponibili."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr "C'è un processo in corso: sei sicuro di voler uscire?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
msgstr ""
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Processo in corso"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
@@ -233,6 +230,19 @@ msgstr ""
"Non hai selezionato una cartella. Assicurati di selezionare una cartella "
"prima di cliccare Apri."
+#~ msgid "&Save"
+#~ msgstr "&Salva"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Genera DCP da quasi tutto, free e open-source."
+
#~ msgid "&Analyse audio"
#~ msgstr "&Analizza audio"
diff --git a/src/tools/po/nl_NL.po b/src/tools/po/nl_NL.po
index fe0bf7ef8..f6d076d69 100644
--- a/src/tools/po/nl_NL.po
+++ b/src/tools/po/nl_NL.po
@@ -7,190 +7,192 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:38+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:29+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
"Language-Team: UniversalDV <Tkooijmans@universaldv.nl>\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr ""
"%1 Dit bestand bestaat al, hierdoor kunt u het niet gebruiken voor een "
"nieuwe film"
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr "Open een DCP map"
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
-msgstr ""
+msgstr "&Content"
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Edit"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Afsluiten"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&Bestand"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Help"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Projecten"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Maak een DCP"
+#: src/tools/dcpomatic.cc:
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Maak een DCP\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Openen..."
+#: src/tools/dcpomatic.cc:601
+msgid "&Open...\tCtrl-O"
+msgstr "&Openen...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Voorkeuren..."
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Voorkeuren...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Instellingen..."
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Afsluiten"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Opslaan"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
msgstr "&Verstuur DCP naar TMS"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Gereedschappen"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
msgstr "Over.."
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "Over DCP-o-matic"
#: src/tools/dcpomatic_batch.cc:84
msgid "Add Film..."
+msgstr "Voeg Film Toe"
+
+#: src/tools/dcpomatic.cc:821
+#, fuzzy, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
msgstr ""
+"Een ongekende fout is opgetreden. AUB meld deze aan de maker van DCP-o-matic "
+"(carl@dcpomatic.com)."
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
msgstr ""
+"Een ongekende fout is opgetreden. AUB meld deze aan de maker van DCP-o-matic "
+"(carl@dcpomatic.com)."
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
msgstr "Er is een onbekende fout opgetreden."
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
-msgstr ""
+msgstr "De inhoud van de CPL is niet geëncrypteerd."
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Controleer op updates"
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "Kan film niet openen %1 (%2)"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Kan film niet openen in %s (%s)"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr "Kan DCP niet vertonen (Kan Konqueror niet starten)"
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr "Kan DCP niet vertonen (Kan Nautilus niet starten)"
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
-msgstr ""
+msgstr "DCP-o-matic Bulk Omzetter"
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr "Render servers..."
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Film is veranderd"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Tips"
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Tips...\tCtrl-H"
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Maak &KDMs..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Maak &KDMs...\tCtrl-K"
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Nieuw..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Nieuw...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "S&hoe DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Bewaar veranderingen naar film \"%s\" voor afsluiten?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
-msgstr ""
+msgstr "Scaal naar &height"
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
-msgstr ""
+msgstr "Schaal naar &width"
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Kies een film om te openen"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -199,26 +201,26 @@ msgstr ""
"De DCP voor deze film neemt ongeveer %.1f Gb in beslag, er is echter maar "
"%.1f Gb beschikbaar. Wilt u toch doorgaan?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "De verbinding met de DCP-o-matic download server is niet beschikbaar."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
msgstr "De map %1 bestaat al en is niet leeg. Wilt u deze toch gebruiken?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "Er is geen nieuwere versie van DCP-o-matic beschikbaar."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr ""
"Er zijn nog niet afgeronde projecten, weet u zeker dat u wilt afsluiten?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
@@ -226,14 +228,27 @@ msgstr ""
"Deze film is gemaakt met een oude versie van DCP-o-matic en opent mogelijk "
"niet goed in de huidige versie. Controleer alle instellingen zorgvuldig."
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Niet afgemaakte projecten"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
msgstr ""
"U hebt geen map geselecteerd. Zorg ervoor dat er een map geselecteerd is "
"voordat u op Openen klikt."
+
+#~ msgid "&Save"
+#~ msgstr "&Opslaan"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr "Vrij, open-bron DCP creatie van zowat om het even wat."
diff --git a/src/tools/po/sv_SE.po b/src/tools/po/sv_SE.po
index be2a243c5..50bf29c9f 100644
--- a/src/tools/po/sv_SE.po
+++ b/src/tools/po/sv_SE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-01-19 08:59+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
@@ -17,81 +17,78 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.3\n"
-#: src/tools/dcpomatic.cc:370
+#: src/tools/dcpomatic.cc:306
msgid "%1 already exists as a file, so you cannot use it for a new film."
msgstr "%1 finns redan som fil, så du kan inte använda den för en ny film."
-#: src/tools/dcpomatic_batch.cc:49
+#: src/tools/dcpomatic_batch.cc:50
msgid "&Add Film..."
msgstr ""
-#: src/tools/dcpomatic.cc:243
+#: src/tools/dcpomatic.cc:652
msgid "&Content"
msgstr ""
-#: src/tools/dcpomatic.cc:241
+#: src/tools/dcpomatic.cc:650
msgid "&Edit"
msgstr "&Redigera"
-#: src/tools/dcpomatic.cc:204
+#: src/tools/dcpomatic.cc:614
msgid "&Exit"
msgstr "&Avsluta"
-#: src/tools/dcpomatic.cc:239 src/tools/dcpomatic_batch.cc:55
+#: src/tools/dcpomatic.cc:648 src/tools/dcpomatic_batch.cc:56
msgid "&File"
msgstr "&Fil"
-#: src/tools/dcpomatic.cc:246 src/tools/dcpomatic_batch.cc:56
+#: src/tools/dcpomatic.cc:655 src/tools/dcpomatic_batch.cc:57
msgid "&Help"
msgstr "&Hjälp"
-#: src/tools/dcpomatic.cc:244
+#: src/tools/dcpomatic.cc:653
msgid "&Jobs"
msgstr "&Jobb"
-#: src/tools/dcpomatic.cc:222
-msgid "&Make DCP"
-msgstr "&Skapa DCP"
+#: src/tools/dcpomatic.cc:631
+#, fuzzy
+msgid "&Make DCP\tCtrl-M"
+msgstr "&Skapa DCP\tCtrl-M"
-#: src/tools/dcpomatic.cc:194
-msgid "&Open..."
-msgstr "&Öppna"
+#: src/tools/dcpomatic.cc:601
+#, fuzzy
+msgid "&Open...\tCtrl-O"
+msgstr "&Öppna...\tCtrl-O"
-#: src/tools/dcpomatic.cc:211 src/tools/dcpomatic.cc:214
-msgid "&Preferences..."
-msgstr "&Inställningar"
+#: src/tools/dcpomatic.cc:620 src/tools/dcpomatic.cc:623
+#, fuzzy
+msgid "&Preferences...\tCtrl-P"
+msgstr "&Inställningar...\tCtrl-P"
-#: src/tools/dcpomatic.cc:198
+#: src/tools/dcpomatic.cc:605
msgid "&Properties..."
msgstr "&Egenskaper"
-#: src/tools/dcpomatic.cc:206 src/tools/dcpomatic_batch.cc:50
+#: src/tools/dcpomatic.cc:616 src/tools/dcpomatic_batch.cc:51
msgid "&Quit"
msgstr "&Avsluta"
-#: src/tools/dcpomatic.cc:196
-msgid "&Save"
-msgstr "&Spara"
+#: src/tools/dcpomatic.cc:603
+msgid "&Save\tCtrl-S"
+msgstr ""
-#: src/tools/dcpomatic.cc:224
+#: src/tools/dcpomatic.cc:633
msgid "&Send DCP to TMS"
msgstr "&Skicka DCP till TMS"
-#: src/tools/dcpomatic.cc:245
+#: src/tools/dcpomatic.cc:654
msgid "&Tools"
msgstr "&Verktyg"
-#: src/tools/dcpomatic_batch.cc:146
-msgid ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-msgstr ""
-"(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-
-#: src/tools/dcpomatic.cc:236 src/tools/dcpomatic_batch.cc:53
+#: src/tools/dcpomatic.cc:645 src/tools/dcpomatic_batch.cc:54
msgid "About"
msgstr "Om"
-#: src/tools/dcpomatic.cc:234
+#: src/tools/dcpomatic.cc:643
msgid "About DCP-o-matic"
msgstr "Om DCP-o-matic"
@@ -99,97 +96,99 @@ msgstr "Om DCP-o-matic"
msgid "Add Film..."
msgstr ""
-#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic.cc:766
+#: src/tools/dcpomatic.cc:821
+#, c-format
+msgid ""
+"An exception occurred (%s). Please report this problem to the DCP-o-matic "
+"author (carl@dcpomatic.com)."
+msgstr ""
+
+#: src/tools/dcpomatic.cc:823 src/tools/dcpomatic.cc:832
msgid ""
"An unknown exception occurred. Please report this problem to the DCP-o-"
"matic author (carl@dcpomatic.com)."
msgstr ""
-#: src/tools/dcpomatic.cc:484
+#: src/tools/dcpomatic.cc:418
msgid "An unknown exeception occurred."
msgstr ""
-#: src/tools/dcpomatic.cc:480
+#: src/tools/dcpomatic.cc:414
msgid "CPL's content is not encrypted."
msgstr ""
-#: src/tools/dcpomatic.cc:230
+#: src/tools/dcpomatic.cc:639
msgid "Check for updates"
msgstr "Leta efter uppdateringar"
-#: src/tools/dcpomatic.cc:691 src/tools/dcpomatic_batch.cc:255
+#: src/tools/dcpomatic.cc:760 src/tools/dcpomatic_batch.cc:238
msgid "Could not load film %1 (%2)"
msgstr "Kunde inte öppna filmen %1 (%2)"
-#: src/tools/dcpomatic.cc:412 src/tools/dcpomatic_batch.cc:193
+#: src/tools/dcpomatic.cc:257 src/tools/dcpomatic_batch.cc:175
#, c-format
msgid "Could not open film at %s (%s)"
msgstr "Kunde inte öppna filmen vid %s (%s)"
-#: src/tools/dcpomatic.cc:530
+#: src/tools/dcpomatic.cc:464
msgid "Could not show DCP (could not run konqueror)"
msgstr "Kunde inte visa DCP (kunde inte köra konqueror)"
-#: src/tools/dcpomatic.cc:523
+#: src/tools/dcpomatic.cc:457
msgid "Could not show DCP (could not run nautilus)"
msgstr "Kunde inte visa DCP (kunde inte köra nautilus)"
-#: src/tools/dcpomatic.cc:341 src/tools/dcpomatic.cc:651
-#: src/tools/dcpomatic.cc:705
+#: src/tools/dcpomatic.cc:277 src/tools/dcpomatic.cc:715
+#: src/tools/dcpomatic.cc:751
msgid "DCP-o-matic"
msgstr "DCP-o-matic"
-#: src/tools/dcpomatic_batch.cc:139 src/tools/dcpomatic_batch.cc:240
+#: src/tools/dcpomatic_batch.cc:223
msgid "DCP-o-matic Batch Converter"
msgstr ""
-#: src/tools/dcpomatic.cc:229
+#: src/tools/dcpomatic.cc:638
msgid "Encoding servers..."
msgstr "Kodningsservrar..."
-#: src/tools/dcpomatic.cc:91
+#: src/tools/dcpomatic.cc:85
msgid "Film changed"
msgstr "Film ändrad"
-#: src/tools/dcpomatic_batch.cc:145
-msgid "Free, open-source DCP generation from almost anything."
-msgstr ""
-"Fri, öppen-källkodsprogramvara för DCP-generering från nästan vad som helst."
-
-#: src/tools/dcpomatic.cc:228
-msgid "Hints..."
-msgstr "Råd..."
+#: src/tools/dcpomatic.cc:637
+msgid "Hints...\tCtrl-H"
+msgstr "Råd...\tCtrl-H"
-#: src/tools/dcpomatic.cc:223
-msgid "Make &KDMs..."
-msgstr "Skapa &KDM:er..."
+#: src/tools/dcpomatic.cc:632
+msgid "Make &KDMs...\tCtrl-K"
+msgstr "Skapa &KDM:er...\tCtrl-K"
-#: src/tools/dcpomatic.cc:193
-msgid "New..."
-msgstr "Ny..."
+#: src/tools/dcpomatic.cc:600
+msgid "New...\tCtrl-N"
+msgstr "Ny...\tCtrl-N"
-#: src/tools/dcpomatic.cc:225
+#: src/tools/dcpomatic.cc:634
msgid "S&how DCP"
msgstr "&Visa DCP"
-#: src/tools/dcpomatic.cc:90
+#: src/tools/dcpomatic.cc:84
#, c-format
msgid "Save changes to film \"%s\" before closing?"
msgstr "Spara ändringarna till filmen \"%s\" före avslut?"
-#: src/tools/dcpomatic.cc:219
+#: src/tools/dcpomatic.cc:628
msgid "Scale to fit &height"
msgstr ""
-#: src/tools/dcpomatic.cc:218
+#: src/tools/dcpomatic.cc:627
msgid "Scale to fit &width"
msgstr ""
-#: src/tools/dcpomatic.cc:389 src/tools/dcpomatic_batch.cc:170
+#: src/tools/dcpomatic.cc:322 src/tools/dcpomatic_batch.cc:152
msgid "Select film to open"
msgstr "Välj film att öppna"
-#: src/tools/dcpomatic.cc:451
+#: src/tools/dcpomatic.cc:385
#, c-format
msgid ""
"The DCP for this film will take up about %.1f Gb, and the disk that you are "
@@ -198,11 +197,11 @@ msgstr ""
"DCP:n för denna film kommer att uppta ungefär %.1f Gb, och disken du "
"använder har bara %.1f Gb ledigt. Vill du fortsätta ändå?"
-#: src/tools/dcpomatic.cc:804
+#: src/tools/dcpomatic.cc:870
msgid "The DCP-o-matic download server could not be contacted."
msgstr "DCP-o-matics nedladdningsserver kunde inte kontaktas."
-#: src/tools/dcpomatic.cc:360
+#: src/tools/dcpomatic.cc:296
msgid ""
"The directory %1 already exists and is not empty. Are you sure you want to "
"use it?"
@@ -210,25 +209,25 @@ msgstr ""
"Foldern %1 finns redan och är inte tom. Är du säker på att du vill använda "
"den?"
-#: src/tools/dcpomatic.cc:799
+#: src/tools/dcpomatic.cc:865
msgid "There are no new versions of DCP-o-matic available."
msgstr "Det finns inga nya versioner av DCP-o-matic tillgängligt."
-#: src/tools/dcpomatic.cc:575 src/tools/dcpomatic_batch.cc:104
+#: src/tools/dcpomatic.cc:509 src/tools/dcpomatic_batch.cc:111
msgid "There are unfinished jobs; are you sure you want to quit?"
msgstr "Det finns oasvlutade jobb; är du säker på att du vill avsluta?"
-#: src/tools/dcpomatic.cc:141
+#: src/tools/dcpomatic.cc:243
msgid ""
"This film was created with an old version of DVD-o-matic and may not load "
"correctly in this version. Please check the film's settings carefully."
msgstr ""
-#: src/tools/dcpomatic.cc:576 src/tools/dcpomatic_batch.cc:105
+#: src/tools/dcpomatic.cc:510 src/tools/dcpomatic_batch.cc:112
msgid "Unfinished jobs"
msgstr "Oavslutade jobb"
-#: src/tools/dcpomatic.cc:398 src/tools/dcpomatic_batch.cc:179
+#: src/tools/dcpomatic.cc:331 src/tools/dcpomatic_batch.cc:161
msgid ""
"You did not select a folder. Make sure that you select a folder before "
"clicking Open."
@@ -236,6 +235,21 @@ msgstr ""
"Du har inte valt en folder. Se till att välja en folder innan du klickar på "
"Öppna."
+#~ msgid "&Save"
+#~ msgstr "&Spara"
+
+#~ msgid ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+#~ msgstr ""
+#~ "(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
+#~ "Laursen"
+
+#~ msgid "Free, open-source DCP generation from almost anything."
+#~ msgstr ""
+#~ "Fri, öppen-källkodsprogramvara för DCP-generering från nästan vad som "
+#~ "helst."
+
#~ msgid "&Analyse audio"
#~ msgstr "&Analysera audio"
diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc
index 090f109a2..49e245318 100644
--- a/src/wx/about_dialog.cc
+++ b/src/wx/about_dialog.cc
@@ -102,6 +102,8 @@ AboutDialog::AboutDialog (wxWindow* parent)
translated_by.Add (wxT ("Theo Kooijmans"));
translated_by.Add (wxT ("Max Aeschlimann"));
translated_by.Add (wxT ("Carsten Kurz"));
+ translated_by.Add (wxT ("Grégoire Ausina"));
+ translated_by.Add (wxT ("Cherif Ben Brahim"));
add_section (_("Translated by"), translated_by);
wxArrayString artwork_by;
@@ -111,22 +113,29 @@ AboutDialog::AboutDialog (wxWindow* parent)
wxArrayString supported_by;
supported_by.Add (wxT ("Manual AC"));
supported_by.Add (wxT ("Kambiz Afshar"));
+ supported_by.Add (wxT ("Alex Asp"));
supported_by.Add (wxT ("Louis Belloisy"));
supported_by.Add (wxT ("Mike Blakesley"));
supported_by.Add (wxT ("Jeff Boot"));
supported_by.Add (wxT ("Kieran Carroll"));
+ supported_by.Add (wxT ("Matt Carter"));
supported_by.Add (wxT ("Frank Cianciolo"));
supported_by.Add (wxT ("Cinema Clarici"));
supported_by.Add (wxT ("Adam Colt"));
supported_by.Add (wxT ("Matthias Damm"));
+ supported_by.Add (wxT ("Alexey Derevyanko"));
+ supported_by.Add (wxT ("Unwana Essien"));
supported_by.Add (wxT ("Andres Fink"));
supported_by.Add (wxT ("Evan Freeze"));
supported_by.Add (wxT ("Silvio Giuliano"));
+ supported_by.Add (wxT ("Alan Gouger"));
supported_by.Add (wxT ("Flor Guillaume"));
+ supported_by.Add (wxT ("Antonio Ruiz Hernandez"));
supported_by.Add (wxT ("Jonathan Jensen"));
supported_by.Add (wxT ("Chris Kay"));
supported_by.Add (wxT ("Adam Klotblixt"));
supported_by.Add (wxT ("Filip Kovcin"));
+ supported_by.Add (wxT ("Cihan Kulaber"));
supported_by.Add (wxT ("Carsten Kurz"));
supported_by.Add (wxT ("Lilian Lefranc"));
supported_by.Add (wxT ("Sean Leigh"));
@@ -141,15 +150,18 @@ AboutDialog::AboutDialog (wxWindow* parent)
supported_by.Add (wxT ("Tim O'Brien"));
supported_by.Add (wxT ("Ivan Pullman"));
supported_by.Add (wxT ("Mark Rolfe"));
+ supported_by.Add (wxT ("David Rozenthal"));
supported_by.Add (wxT ("Andrä Steiner"));
supported_by.Add (wxT ("Jussi Siponen"));
supported_by.Add (wxT ("Lasse Salling"));
supported_by.Add (wxT ("Mike Stiebing"));
supported_by.Add (wxT ("Randy Stankey"));
+ supported_by.Add (wxT ("Bruce Taylor"));
supported_by.Add (wxT ("Wolfgang Woehl"));
supported_by.Add (wxT ("Wolfram Weber"));
supported_by.Add (wxT ("Frank de Wulf"));
supported_by.Add (wxT ("Pavel Zhdanko"));
+ supported_by.Add (wxT ("Daniel Židek"));
add_section (_("Supported by"), supported_by);
wxArrayString tested_by;
diff --git a/src/wx/audio_plot.cc b/src/wx/audio_plot.cc
index c4e5d992f..641ddd503 100644
--- a/src/wx/audio_plot.cc
+++ b/src/wx/audio_plot.cc
@@ -159,7 +159,7 @@ AudioPlot::paint ()
gc->DrawText (std_to_wx (String::compose ("%1dB", i)), 0, y - (db_label_height / 2));
}
- gc->SetPen (*wxLIGHT_GREY_PEN);
+ gc->SetPen (wxPen (wxColour (200, 200, 200)));
gc->StrokePath (grid);
gc->DrawText (_("Time"), data_width, metrics.height - metrics.y_origin + db_label_height / 2);
@@ -171,7 +171,7 @@ AudioPlot::paint ()
plot_peak (p, c, metrics);
}
wxColour const col = _colours[c];
- gc->SetPen (*wxThePenList->FindOrCreatePen (wxColour (col.Red(), col.Green(), col.Blue(), col.Alpha() / 2), 1, wxPENSTYLE_SOLID));
+ gc->SetPen (wxPen (wxColour (col.Red(), col.Green(), col.Blue(), col.Alpha() / 2), 1, wxPENSTYLE_SOLID));
gc->StrokePath (p);
}
}
@@ -183,7 +183,7 @@ AudioPlot::paint ()
plot_rms (p, c, metrics);
}
wxColour const col = _colours[c];
- gc->SetPen (*wxThePenList->FindOrCreatePen (col, 1, wxPENSTYLE_SOLID));
+ gc->SetPen (wxPen (col, 1, wxPENSTYLE_SOLID));
gc->StrokePath (p);
}
}
@@ -192,7 +192,7 @@ AudioPlot::paint ()
axes.MoveToPoint (metrics.db_label_width, 0);
axes.AddLineToPoint (metrics.db_label_width, metrics.height - metrics.y_origin);
axes.AddLineToPoint (metrics.db_label_width + data_width, metrics.height - metrics.y_origin);
- gc->SetPen (*wxBLACK_PEN);
+ gc->SetPen (wxPen (wxColour (0, 0, 0)));
gc->StrokePath (axes);
delete gc;
diff --git a/src/wx/colour_conversion_editor.cc b/src/wx/colour_conversion_editor.cc
index 6617b66d6..4a1e5074f 100644
--- a/src/wx/colour_conversion_editor.cc
+++ b/src/wx/colour_conversion_editor.cc
@@ -21,12 +21,12 @@
#include <wx/spinctrl.h>
#include <wx/gbsizer.h>
#include "lib/colour_conversion.h"
+#include "lib/safe_stringstream.h"
#include "wx_util.h"
#include "colour_conversion_editor.h"
using std::string;
using std::cout;
-using std::stringstream;
using boost::shared_ptr;
using boost::lexical_cast;
@@ -110,7 +110,7 @@ ColourConversionEditor::set (ColourConversion conversion)
_input_gamma_linearised->SetValue (conversion.input_gamma_linearised);
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
- stringstream s;
+ SafeStringStream s;
s.setf (std::ios::fixed, std::ios::floatfield);
s.precision (7);
s << conversion.matrix (i, j);
diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc
index 086e1be4e..816602355 100644
--- a/src/wx/config_dialog.cc
+++ b/src/wx/config_dialog.cc
@@ -61,6 +61,14 @@ public:
{}
protected:
+ wxPanel* make_panel (wxWindow* parent)
+ {
+ wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
+ wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
+ panel->SetSizer (s);
+ return panel;
+ }
+
wxSize _panel_size;
int _border;
};
@@ -75,13 +83,11 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent);
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
table->AddGrowableCol (1, 1);
- s->Add (table, 1, wxALL | wxEXPAND, _border);
+ panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
_set_language = new wxCheckBox (panel, wxID_ANY, _("Set language"));
table->Add (_set_language, 1);
@@ -238,13 +244,11 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent);
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
table->AddGrowableCol (1, 1);
- s->Add (table, 1, wxALL | wxEXPAND, _border);
+ panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
{
add_label_to_sizer (table, panel, _("Default duration of still images"), true);
@@ -266,6 +270,10 @@ public:
add_label_to_sizer (table, panel, _("Default ISDCF name details"), true);
_isdcf_metadata_button = new wxButton (panel, wxID_ANY, _("Edit..."));
table->Add (_isdcf_metadata_button);
+
+ add_label_to_sizer (table, panel, _("Default scale to"), true);
+ _scale = new wxChoice (panel, wxID_ANY);
+ table->Add (_scale);
add_label_to_sizer (table, panel, _("Default container"), true);
_container = new wxChoice (panel, wxID_ANY);
@@ -297,10 +305,6 @@ public:
_issuer = new wxTextCtrl (panel, wxID_ANY);
table->Add (_issuer, 1, wxEXPAND);
- add_label_to_sizer (table, panel, _("Default creator"), true);
- _creator = new wxTextCtrl (panel, wxID_ANY);
- table->Add (_creator, 1, wxEXPAND);
-
Config* config = Config::instance ();
_still_length->SetRange (1, 3600);
@@ -312,26 +316,31 @@ public:
_isdcf_metadata_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&DefaultsPage::edit_isdcf_metadata_clicked, this, parent));
- vector<Ratio const *> ratio = Ratio::all ();
- int n = 0;
- for (vector<Ratio const *>::iterator i = ratio.begin(); i != ratio.end(); ++i) {
- _container->Append (std_to_wx ((*i)->nickname ()));
- if (*i == config->default_container ()) {
- _container->SetSelection (n);
+ vector<VideoContentScale> scales = VideoContentScale::all ();
+ for (size_t i = 0; i < scales.size(); ++i) {
+ _scale->Append (std_to_wx (scales[i].name ()));
+ if (scales[i] == config->default_scale ()) {
+ _scale->SetSelection (i);
+ }
+ }
+
+ vector<Ratio const *> ratios = Ratio::all ();
+ for (size_t i = 0; i < ratios.size(); ++i) {
+ _container->Append (std_to_wx (ratios[i]->nickname ()));
+ if (ratios[i] == config->default_container ()) {
+ _container->SetSelection (i);
}
- ++n;
}
+ _scale->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::scale_changed, this));
_container->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::container_changed, this));
vector<DCPContentType const *> const ct = DCPContentType::all ();
- n = 0;
- for (vector<DCPContentType const *>::const_iterator i = ct.begin(); i != ct.end(); ++i) {
- _dcp_content_type->Append (std_to_wx ((*i)->pretty_name ()));
- if (*i == config->default_dcp_content_type ()) {
- _dcp_content_type->SetSelection (n);
+ for (size_t i = 0; i < ct.size(); ++i) {
+ _dcp_content_type->Append (std_to_wx (ct[i]->pretty_name ()));
+ if (ct[i] == config->default_dcp_content_type ()) {
+ _dcp_content_type->SetSelection (i);
}
- ++n;
}
_dcp_content_type->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&DefaultsPage::dcp_content_type_changed, this));
@@ -344,10 +353,8 @@ public:
_audio_delay->SetValue (config->default_audio_delay ());
_audio_delay->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&DefaultsPage::audio_delay_changed, this));
- _issuer->SetValue (std_to_wx (config->dcp_metadata().issuer));
+ _issuer->SetValue (std_to_wx (config->dcp_issuer ()));
_issuer->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DefaultsPage::issuer_changed, this));
- _creator->SetValue (std_to_wx (config->dcp_metadata().creator));
- _creator->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&DefaultsPage::creator_changed, this));
return panel;
}
@@ -380,6 +387,12 @@ private:
{
Config::instance()->set_default_still_length (_still_length->GetValue ());
}
+
+ void scale_changed ()
+ {
+ vector<VideoContentScale> scale = VideoContentScale::all ();
+ Config::instance()->set_default_scale (scale[_scale->GetSelection()]);
+ }
void container_changed ()
{
@@ -395,16 +408,7 @@ private:
void issuer_changed ()
{
- libdcp::XMLMetadata m = Config::instance()->dcp_metadata ();
- m.issuer = wx_to_std (_issuer->GetValue ());
- Config::instance()->set_dcp_metadata (m);
- }
-
- void creator_changed ()
- {
- libdcp::XMLMetadata m = Config::instance()->dcp_metadata ();
- m.creator = wx_to_std (_creator->GetValue ());
- Config::instance()->set_dcp_metadata (m);
+ Config::instance()->set_dcp_issuer (wx_to_std (_issuer->GetValue ()));
}
wxSpinCtrl* _j2k_bandwidth;
@@ -416,10 +420,10 @@ private:
#else
wxDirPickerCtrl* _directory;
#endif
+ wxChoice* _scale;
wxChoice* _container;
wxChoice* _dcp_content_type;
wxTextCtrl* _issuer;
- wxTextCtrl* _creator;
};
class EncodingServersPage : public wxPreferencesPage, public Page
@@ -443,12 +447,10 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
_use_any_servers = new wxCheckBox (panel, wxID_ANY, _("Use all servers"));
- s->Add (_use_any_servers, 0, wxALL, _border);
+ panel->GetSizer()->Add (_use_any_servers, 0, wxALL, _border);
vector<string> columns;
columns.push_back (wx_to_std (_("IP address / host name")));
@@ -460,7 +462,7 @@ public:
boost::bind (&EncodingServersPage::server_column, this, _1)
);
- s->Add (_servers_list, 1, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (_servers_list, 1, wxEXPAND | wxALL, _border);
_use_any_servers->SetValue (Config::instance()->use_any_servers ());
_use_any_servers->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&EncodingServersPage::use_any_servers_changed, this));
@@ -504,9 +506,7 @@ public:
#endif
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
vector<string> columns;
columns.push_back (wx_to_std (_("Name")));
@@ -519,7 +519,7 @@ public:
300
);
- s->Add (list, 1, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (list, 1, wxEXPAND | wxALL, _border);
return panel;
}
@@ -551,13 +551,11 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, _panel_size);
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
table->AddGrowableCol (1, 1);
- s->Add (table, 1, wxALL | wxEXPAND, _border);
+ panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
add_label_to_sizer (table, panel, _("IP address"), true);
_tms_ip = new wxTextCtrl (panel, wxID_ANY);
@@ -638,18 +636,18 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
+#ifdef DCPOMATIC_OSX
/* We have to force both width and height of this one */
-#ifdef DCPOMATIC_OSX
wxPanel* panel = new wxPanel (parent, wxID_ANY, wxDefaultPosition, wxSize (480, 128));
-#else
+#else
wxPanel* panel = new wxPanel (parent);
-#endif
+#endif
wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
panel->SetSizer (s);
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
table->AddGrowableCol (1, 1);
- s->Add (table, 1, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (table, 1, wxEXPAND | wxALL, _border);
add_label_to_sizer (table, panel, _("Outgoing mail server"), true);
_mail_server = new wxTextCtrl (panel, wxID_ANY);
@@ -669,6 +667,10 @@ public:
font.SetPointSize (font.GetPointSize() - 1);
plain->SetFont (font);
table->AddSpacer (0);
+
+ add_label_to_sizer (table, panel, _("Subject"), true);
+ _kdm_subject = new wxTextCtrl (panel, wxID_ANY);
+ table->Add (_kdm_subject, 1, wxEXPAND | wxALL);
add_label_to_sizer (table, panel, _("From address"), true);
_kdm_from = new wxTextCtrl (panel, wxID_ANY);
@@ -677,12 +679,16 @@ public:
add_label_to_sizer (table, panel, _("CC address"), true);
_kdm_cc = new wxTextCtrl (panel, wxID_ANY);
table->Add (_kdm_cc, 1, wxEXPAND | wxALL);
+
+ add_label_to_sizer (table, panel, _("BCC address"), true);
+ _kdm_bcc = new wxTextCtrl (panel, wxID_ANY);
+ table->Add (_kdm_bcc, 1, wxEXPAND | wxALL);
_kdm_email = new wxTextCtrl (panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (480, 128), wxTE_MULTILINE);
- s->Add (_kdm_email, 1.5, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (_kdm_email, 1, wxEXPAND | wxALL, _border);
_reset_kdm_email = new wxButton (panel, wxID_ANY, _("Reset to default text"));
- s->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
+ panel->GetSizer()->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
Config* config = Config::instance ();
_mail_server->SetValue (std_to_wx (config->mail_server ()));
@@ -691,12 +697,16 @@ public:
_mail_user->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_user_changed, this));
_mail_password->SetValue (std_to_wx (config->mail_password ()));
_mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_password_changed, this));
+ _kdm_subject->SetValue (std_to_wx (config->kdm_subject ()));
+ _kdm_subject->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_subject_changed, this));
_kdm_from->SetValue (std_to_wx (config->kdm_from ()));
_kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_from_changed, this));
_kdm_cc->SetValue (std_to_wx (config->kdm_cc ()));
_kdm_cc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_cc_changed, this));
+ _kdm_bcc->SetValue (std_to_wx (config->kdm_bcc ()));
+ _kdm_bcc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_bcc_changed, this));
_kdm_email->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_email_changed, this));
- _kdm_email->SetValue (wx_to_std (Config::instance()->kdm_email ()));
+ _kdm_email->SetValue (std_to_wx (Config::instance()->kdm_email ()));
_reset_kdm_email->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMEmailPage::reset_kdm_email, this));
return panel;
@@ -717,6 +727,11 @@ private:
{
Config::instance()->set_mail_password (wx_to_std (_mail_password->GetValue ()));
}
+
+ void kdm_subject_changed ()
+ {
+ Config::instance()->set_kdm_subject (wx_to_std (_kdm_subject->GetValue ()));
+ }
void kdm_from_changed ()
{
@@ -727,6 +742,11 @@ private:
{
Config::instance()->set_kdm_cc (wx_to_std (_kdm_cc->GetValue ()));
}
+
+ void kdm_bcc_changed ()
+ {
+ Config::instance()->set_kdm_bcc (wx_to_std (_kdm_bcc->GetValue ()));
+ }
void kdm_email_changed ()
{
@@ -742,8 +762,10 @@ private:
wxTextCtrl* _mail_server;
wxTextCtrl* _mail_user;
wxTextCtrl* _mail_password;
+ wxTextCtrl* _kdm_subject;
wxTextCtrl* _kdm_from;
wxTextCtrl* _kdm_cc;
+ wxTextCtrl* _kdm_bcc;
wxTextCtrl* _kdm_email;
wxButton* _reset_kdm_email;
};
@@ -759,14 +781,11 @@ public:
wxWindow* CreateWindow (wxWindow* parent)
{
- wxPanel* panel = new wxPanel (parent);
-
- wxBoxSizer* s = new wxBoxSizer (wxVERTICAL);
- panel->SetSizer (s);
+ wxPanel* panel = make_panel (parent);
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP);
table->AddGrowableCol (1, 1);
- s->Add (table, 1, wxALL | wxEXPAND, _border);
+ panel->GetSizer()->Add (table, 1, wxALL | wxEXPAND, _border);
{
add_label_to_sizer (table, panel, _("Maximum JPEG2000 bandwidth"), true);
@@ -781,18 +800,26 @@ public:
table->Add (_allow_any_dcp_frame_rate, 1, wxEXPAND | wxALL);
table->AddSpacer (0);
- add_label_to_sizer (table, panel, _("Log"), true);
- _log_general = new wxCheckBox (panel, wxID_ANY, _("General"));
- table->Add (_log_general, 1, wxEXPAND | wxALL);
- _log_warning = new wxCheckBox (panel, wxID_ANY, _("Warnings"));
- table->AddSpacer (0);
- table->Add (_log_warning, 1, wxEXPAND | wxALL);
- _log_error = new wxCheckBox (panel, wxID_ANY, _("Errors"));
- table->AddSpacer (0);
- table->Add (_log_error, 1, wxEXPAND | wxALL);
- _log_timing = new wxCheckBox (panel, wxID_ANY, S_("Config|Timing"));
- table->AddSpacer (0);
- table->Add (_log_timing, 1, wxEXPAND | wxALL);
+#ifdef __WXOSX__
+ wxStaticText* m = new wxStaticText (panel, wxID_ANY, _("Log:"));
+ table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL | wxALIGN_RIGHT, 6);
+#else
+ wxStaticText* m = new wxStaticText (panel, wxID_ANY, _("Log"));
+ table->Add (m, 0, wxALIGN_TOP | wxLEFT | wxRIGHT | wxEXPAND | wxALL, 6);
+#endif
+
+ {
+ wxBoxSizer* t = new wxBoxSizer (wxVERTICAL);
+ _log_general = new wxCheckBox (panel, wxID_ANY, _("General"));
+ t->Add (_log_general, 1, wxEXPAND | wxALL);
+ _log_warning = new wxCheckBox (panel, wxID_ANY, _("Warnings"));
+ t->Add (_log_warning, 1, wxEXPAND | wxALL);
+ _log_error = new wxCheckBox (panel, wxID_ANY, _("Errors"));
+ t->Add (_log_error, 1, wxEXPAND | wxALL);
+ _log_timing = new wxCheckBox (panel, wxID_ANY, S_("Config|Timing"));
+ t->Add (_log_timing, 1, wxEXPAND | wxALL);
+ table->Add (t, 0, wxALL, 6);
+ }
Config* config = Config::instance ();
@@ -861,7 +888,7 @@ create_config_dialog ()
the containing window doesn't shrink too much when we select those panels.
This is obviously an unpleasant hack.
*/
- wxSize ps = wxSize (480, -1);
+ wxSize ps = wxSize (520, -1);
int const border = 16;
#else
wxSize ps = wxSize (-1, -1);
diff --git a/src/wx/dolby_certificate_dialog.cc b/src/wx/dolby_certificate_dialog.cc
index e5bb18962..5e094844d 100644
--- a/src/wx/dolby_certificate_dialog.cc
+++ b/src/wx/dolby_certificate_dialog.cc
@@ -21,13 +21,13 @@
#include <curl/curl.h>
#include "lib/compose.hpp"
#include "lib/internet.h"
+#include "lib/ui_signaller.h"
#include "dolby_certificate_dialog.h"
#include "wx_util.h"
using std::list;
using std::string;
using std::vector;
-using std::stringstream;
using std::cout;
using boost::optional;
using boost::algorithm::split;
@@ -75,8 +75,17 @@ DolbyCertificateDialog::setup_countries ()
_country->Append (_("Fetching..."));
_country->SetSelection (0);
- run_gui_loop ();
-
+
+#ifdef DCPOMATIC_OSX
+ /* See DoremiCertificateDialog for discussion about this daft delay */
+ wxMilliSleep (200);
+#endif
+ ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_setup_countries, this));
+}
+
+void
+DolbyCertificateDialog::finish_setup_countries ()
+{
list<string> const countries = get_dir ("");
_country->Clear ();
for (list<string>::const_iterator i = countries.begin(); i != countries.end(); ++i) {
@@ -90,8 +99,16 @@ DolbyCertificateDialog::country_selected ()
_cinema->Clear ();
_cinema->Append (_("Fetching..."));
_cinema->SetSelection (0);
- run_gui_loop ();
-
+
+#ifdef DCPOMATIC_OSX
+ wxMilliSleep (200);
+#endif
+ ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_country_selected, this));
+}
+
+void
+DolbyCertificateDialog::finish_country_selected ()
+{
list<string> const cinemas = get_dir (wx_to_std (_country->GetStringSelection()));
_cinema->Clear ();
for (list<string>::const_iterator i = cinemas.begin(); i != cinemas.end(); ++i) {
@@ -105,8 +122,16 @@ DolbyCertificateDialog::cinema_selected ()
_serial->Clear ();
_serial->Append (_("Fetching..."));
_serial->SetSelection (0);
- run_gui_loop ();
+#ifdef DCPOMATIC_OSX
+ wxMilliSleep (200);
+#endif
+ ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_cinema_selected, this));
+}
+
+void
+DolbyCertificateDialog::finish_cinema_selected ()
+{
string const dir = String::compose ("%1/%2", wx_to_std (_country->GetStringSelection()), wx_to_std (_cinema->GetStringSelection()));
list<string> const zips = get_dir (dir);
@@ -130,8 +155,17 @@ void
DolbyCertificateDialog::download ()
{
_message->SetLabel (_("Downloading certificate"));
- run_gui_loop ();
+#ifdef DCPOMATIC_OSX
+ wxMilliSleep (200);
+#endif
+
+ ui_signaller->when_idle (boost::bind (&DolbyCertificateDialog::finish_download, this));
+}
+
+void
+DolbyCertificateDialog::finish_download ()
+{
string const zip = string_client_data (_serial->GetClientObject (_serial->GetSelection ()));
string const file = String::compose (
diff --git a/src/wx/dolby_certificate_dialog.h b/src/wx/dolby_certificate_dialog.h
index 194150363..e9bbffda0 100644
--- a/src/wx/dolby_certificate_dialog.h
+++ b/src/wx/dolby_certificate_dialog.h
@@ -27,9 +27,13 @@ public:
private:
void download ();
+ void finish_download ();
void setup_countries ();
+ void finish_setup_countries ();
void country_selected ();
+ void finish_country_selected ();
void cinema_selected ();
+ void finish_cinema_selected ();
void serial_selected ();
std::list<std::string> get_dir (std::string) const;
diff --git a/src/wx/doremi_certificate_dialog.cc b/src/wx/doremi_certificate_dialog.cc
index b4cd14eaf..4b5d58b37 100644
--- a/src/wx/doremi_certificate_dialog.cc
+++ b/src/wx/doremi_certificate_dialog.cc
@@ -21,6 +21,7 @@
#include <zip.h>
#include "lib/compose.hpp"
#include "lib/util.h"
+#include "lib/ui_signaller.h"
#include "lib/internet.h"
#include "doremi_certificate_dialog.h"
#include "wx_util.h"
@@ -51,8 +52,18 @@ DoremiCertificateDialog::download ()
}
_message->SetLabel (_("Downloading certificate"));
- run_gui_loop ();
+#ifdef DCPOMATIC_OSX
+ /* This is necessary on OS X, otherwise the SetLabel() above has no visible effect */
+ wxMilliSleep (200);
+#endif
+
+ ui_signaller->when_idle (boost::bind (&DoremiCertificateDialog::finish_download, this, serial));
+}
+
+void
+DoremiCertificateDialog::finish_download (string serial)
+{
/* Try dcp2000, imb and ims prefixes (see mantis #375) */
optional<string> error = get_from_zip_url (
diff --git a/src/wx/doremi_certificate_dialog.h b/src/wx/doremi_certificate_dialog.h
index 281184726..b249736ec 100644
--- a/src/wx/doremi_certificate_dialog.h
+++ b/src/wx/doremi_certificate_dialog.h
@@ -28,5 +28,7 @@ private:
void download ();
void set_sensitivity ();
+ void finish_download (std::string serial);
+
wxTextCtrl* _serial;
};
diff --git a/src/wx/editable_list.h b/src/wx/editable_list.h
index 470be2d09..5772f6391 100644
--- a/src/wx/editable_list.h
+++ b/src/wx/editable_list.h
@@ -61,6 +61,8 @@ public:
wxSizer* s = new wxBoxSizer (wxVERTICAL);
_add = new wxButton (this, wxID_ANY, _("Add..."));
s->Add (_add, 0, wxTOP | wxBOTTOM, 2);
+ _copy = new wxButton (this, wxID_ANY, _("Copy..."));
+ s->Add (_copy, 0, wxTOP | wxBOTTOM, 2);
_edit = new wxButton (this, wxID_ANY, _("Edit..."));
s->Add (_edit, 0, wxTOP | wxBOTTOM, 2);
_remove = new wxButton (this, wxID_ANY, _("Remove"));
@@ -74,6 +76,7 @@ public:
}
_add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::add_clicked, this));
+ _copy->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::copy_clicked, this));
_edit->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::edit_clicked, this));
_remove->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::remove_clicked, this));
@@ -121,6 +124,23 @@ private:
dialog->Destroy ();
}
+ void copy_clicked ()
+ {
+ int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ if (item == -1) {
+ return;
+ }
+
+ std::vector<T> all = _get ();
+ assert (item >= 0 && item < int (all.size ()));
+
+ T copy (all[item]);
+ add_to_control (copy);
+
+ all.push_back (copy);
+ _set (all);
+ }
+
void edit_clicked ()
{
int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
@@ -174,6 +194,7 @@ private:
boost::function<std::string (T, int)> _column;
wxButton* _add;
+ wxButton* _copy;
wxButton* _edit;
wxButton* _remove;
wxListCtrl* _list;
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc
index 854877ece..e73b27267 100644
--- a/src/wx/film_editor.cc
+++ b/src/wx/film_editor.cc
@@ -45,6 +45,7 @@
#include "lib/playlist.h"
#include "lib/content.h"
#include "lib/content_factory.h"
+#include "lib/safe_stringstream.h"
#include "timecode.h"
#include "wx_util.h"
#include "film_editor.h"
@@ -57,7 +58,6 @@
using std::string;
using std::cout;
-using std::stringstream;
using std::pair;
using std::fixed;
using std::setprecision;
@@ -70,7 +70,7 @@ using boost::dynamic_pointer_cast;
using boost::lexical_cast;
/** @param f Film to edit */
-FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
+FilmEditor::FilmEditor (wxWindow* parent)
: wxPanel (parent)
, _menu (this)
, _generally_sensitive (true)
@@ -86,7 +86,6 @@ FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
make_dcp_panel ();
_main_notebook->AddPage (_dcp_panel, _("DCP"), false);
- set_film (f);
connect_to_widgets ();
JobManager::instance()->ActiveJobsChanged.connect (
@@ -94,7 +93,8 @@ FilmEditor::FilmEditor (shared_ptr<Film> f, wxWindow* parent)
);
Config::instance()->Changed.connect (boost::bind (&FilmEditor::config_changed, this));
-
+
+ set_film (shared_ptr<Film> ());
SetSizerAndFit (s);
}
@@ -115,11 +115,6 @@ FilmEditor::make_dcp_panel ()
grid->Add (_name, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND | wxLEFT | wxRIGHT);
++r;
- add_label_to_grid_bag_sizer (grid, _dcp_panel, _("DCP Name"), true, wxGBPosition (r, 0));
- _dcp_name = new wxStaticText (_dcp_panel, wxID_ANY, wxT (""));
- grid->Add (_dcp_name, wxGBPosition(r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
- ++r;
-
int flags = wxALIGN_CENTER_VERTICAL;
#ifdef __WXOSX__
flags |= wxALIGN_RIGHT;
@@ -131,6 +126,11 @@ FilmEditor::make_dcp_panel ()
grid->Add (_edit_isdcf_button, wxGBPosition (r, 1), wxDefaultSpan);
++r;
+ add_label_to_grid_bag_sizer (grid, _dcp_panel, _("DCP Name"), true, wxGBPosition (r, 0));
+ _dcp_name = new wxStaticText (_dcp_panel, wxID_ANY, wxT (""));
+ grid->Add (_dcp_name, wxGBPosition(r, 1), wxDefaultSpan, wxALIGN_CENTER_VERTICAL);
+ ++r;
+
add_label_to_grid_bag_sizer (grid, _dcp_panel, _("Container"), true, wxGBPosition (r, 0));
_container = new wxChoice (_dcp_panel, wxID_ANY);
grid->Add (_container, wxGBPosition (r, 1), wxDefaultSpan, wxEXPAND);
@@ -238,6 +238,7 @@ FilmEditor::connect_to_widgets ()
_content->Bind (wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind (&FilmEditor::content_selection_changed, this));
_content->Bind (wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind (&FilmEditor::content_selection_changed, this));
_content->Bind (wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, boost::bind (&FilmEditor::content_right_click, this, _1));
+ _content->Bind (wxEVT_DROP_FILES, boost::bind (&FilmEditor::content_files_dropped, this, _1));
_content_add_file->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmEditor::content_add_file_clicked, this));
_content_add_folder->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmEditor::content_add_folder_clicked, this));
_content_remove->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmEditor::content_remove_clicked, this));
@@ -308,6 +309,8 @@ FilmEditor::make_content_panel ()
_panels.push_back (_subtitle_panel);
_timing_panel = new TimingPanel (this);
_panels.push_back (_timing_panel);
+
+ _content->DragAcceptFiles (true);
}
/** Called when the name widget has been changed */
@@ -420,7 +423,7 @@ FilmEditor::film_changed (Film::Property p)
return;
}
- stringstream s;
+ SafeStringStream s;
for (list<FilmEditorPanel*>::iterator i = _panels.begin(); i != _panels.end(); ++i) {
(*i)->film_changed (p);
@@ -471,6 +474,7 @@ FilmEditor::film_changed (Film::Property p)
case Film::USE_ISDCF_NAME:
checked_set (_use_isdcf_name, _film->use_isdcf_name ());
setup_dcp_name ();
+ use_isdcf_name_changed ();
break;
case Film::ISDCF_METADATA:
setup_dcp_name ();
@@ -534,6 +538,8 @@ FilmEditor::film_content_changed (int property)
setup_content ();
} else if (property == ContentProperty::POSITION) {
setup_content ();
+ } else if (property == VideoContentProperty::VIDEO_SCALE) {
+ setup_dcp_name ();
}
}
@@ -703,6 +709,18 @@ FilmEditor::use_isdcf_name_toggled ()
}
void
+FilmEditor::use_isdcf_name_changed ()
+{
+ bool const i = _film->use_isdcf_name ();
+
+ if (!i) {
+ _film->set_name (_film->isdcf_name (true));
+ }
+
+ _edit_isdcf_button->Enable (i);
+}
+
+void
FilmEditor::edit_isdcf_button_clicked ()
{
if (!_film) {
@@ -836,8 +854,8 @@ void
FilmEditor::content_remove_clicked ()
{
ContentList c = selected_content ();
- if (c.size() == 1) {
- _film->remove_content (c.front ());
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ _film->remove_content (*i);
}
content_selection_changed ();
@@ -864,21 +882,32 @@ FilmEditor::setup_content_sensitivity ()
VideoContentList video_selection = selected_video_content ();
AudioContentList audio_selection = selected_audio_content ();
- _content_remove->Enable (selection.size() == 1 && _generally_sensitive);
+ _content_remove->Enable (!selection.empty() && _generally_sensitive);
_content_earlier->Enable (selection.size() == 1 && _generally_sensitive);
_content_later->Enable (selection.size() == 1 && _generally_sensitive);
_content_timeline->Enable (!_film->content().empty() && _generally_sensitive);
- _video_panel->Enable (video_selection.size() > 0 && _generally_sensitive);
- _audio_panel->Enable (audio_selection.size() > 0 && _generally_sensitive);
+ _video_panel->Enable (!video_selection.empty() && _generally_sensitive);
+ _audio_panel->Enable (!audio_selection.empty() && _generally_sensitive);
_subtitle_panel->Enable (selection.size() == 1 && dynamic_pointer_cast<FFmpegContent> (selection.front()) && _generally_sensitive);
- _timing_panel->Enable (selection.size() == 1 && _generally_sensitive);
+ _timing_panel->Enable (!selection.empty() && _generally_sensitive);
}
ContentList
FilmEditor::selected_content ()
{
ContentList sel;
+
+ if (!_film) {
+ return sel;
+ }
+
+ /* The list was populated using a sorted content list, so we must sort it here too
+ so that we can look up by index and get the right thing.
+ */
+ ContentList content = _film->content ();
+ sort (content.begin(), content.end(), ContentSorter ());
+
long int s = -1;
while (true) {
s = _content->GetNextItem (s, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
@@ -887,7 +916,7 @@ FilmEditor::selected_content ()
}
if (s < int (_film->content().size ())) {
- sel.push_back (_film->content()[s]);
+ sel.push_back (content[s]);
}
}
@@ -978,7 +1007,7 @@ FilmEditor::set_selection (weak_ptr<Content> wc)
if (content[i] == wc.lock ()) {
_content->SetItemState (i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
} else {
- _content->SetItemState (i, 0, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED);
+ _content->SetItemState (i, 0, wxLIST_STATE_SELECTED);
}
}
}
@@ -1049,3 +1078,16 @@ FilmEditor::setup_frame_rate_widget ()
_frame_rate_sizer->Layout ();
}
+
+void
+FilmEditor::content_files_dropped (wxDropFilesEvent& event)
+{
+ if (!_film) {
+ return;
+ }
+
+ wxString* paths = event.GetFiles ();
+ for (int i = 0; i < event.GetNumberOfFiles(); i++) {
+ _film->examine_and_add_content (content_factory (_film, wx_to_std (paths[i])));
+ }
+}
diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h
index 96cae3900..ba9ff6fa0 100644
--- a/src/wx/film_editor.h
+++ b/src/wx/film_editor.h
@@ -32,6 +32,7 @@
class wxNotebook;
class wxListCtrl;
class wxListEvent;
+class wxGridBagSizer;
class Film;
class TimelineDialog;
class Ratio;
@@ -45,7 +46,7 @@ class SubtitleContent;
class FilmEditor : public wxPanel
{
public:
- FilmEditor (boost::shared_ptr<Film>, wxWindow *);
+ FilmEditor (wxWindow *);
void set_film (boost::shared_ptr<Film>);
void set_selection (boost::weak_ptr<Content>);
@@ -67,6 +68,8 @@ public:
AudioContentList selected_audio_content ();
SubtitleContentList selected_subtitle_content ();
FFmpegContentList selected_ffmpeg_content ();
+
+ void content_add_file_clicked ();
private:
void make_dcp_panel ();
@@ -78,11 +81,11 @@ private:
void use_isdcf_name_toggled ();
void edit_isdcf_button_clicked ();
void content_selection_changed ();
- void content_add_file_clicked ();
void content_add_folder_clicked ();
void content_remove_clicked ();
void content_earlier_clicked ();
void content_later_clicked ();
+ void content_files_dropped (wxDropFilesEvent& event);
void container_changed ();
void dcp_content_type_changed ();
void scaler_changed ();
@@ -103,6 +106,7 @@ private:
/* Handle changes to the model */
void film_changed (Film::Property);
void film_content_changed (int);
+ void use_isdcf_name_changed ();
void set_general_sensitivity (bool);
void setup_dcp_name ();
diff --git a/src/wx/film_viewer.cc b/src/wx/film_viewer.cc
index 112736b67..54cd3e77d 100644
--- a/src/wx/film_viewer.cc
+++ b/src/wx/film_viewer.cc
@@ -53,7 +53,7 @@ using boost::dynamic_pointer_cast;
using boost::weak_ptr;
using libdcp::Size;
-FilmViewer::FilmViewer (shared_ptr<Film> f, wxWindow* p)
+FilmViewer::FilmViewer (wxWindow* p)
: wxPanel (p)
, _panel (new wxPanel (this))
, _slider (new wxSlider (this, wxID_ANY, 0, 0, 4096))
@@ -103,8 +103,8 @@ FilmViewer::FilmViewer (shared_ptr<Film> f, wxWindow* p)
_back_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmViewer::back_clicked, this));
_forward_button->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&FilmViewer::forward_clicked, this));
- set_film (f);
-
+ set_film (shared_ptr<Film> ());
+
JobManager::instance()->ActiveJobsChanged.connect (
bind (&FilmViewer::active_jobs_changed, this, _1)
);
diff --git a/src/wx/film_viewer.h b/src/wx/film_viewer.h
index 1e5b6d34d..337b68446 100644
--- a/src/wx/film_viewer.h
+++ b/src/wx/film_viewer.h
@@ -49,7 +49,7 @@ class PlayerVideoFrame;
class FilmViewer : public wxPanel
{
public:
- FilmViewer (boost::shared_ptr<Film>, wxWindow *);
+ FilmViewer (wxWindow *);
void set_film (boost::shared_ptr<Film>);
diff --git a/src/wx/hints_dialog.cc b/src/wx/hints_dialog.cc
index 668d71321..74ac05508 100644
--- a/src/wx/hints_dialog.cc
+++ b/src/wx/hints_dialog.cc
@@ -20,8 +20,12 @@
#include <boost/algorithm/string.hpp>
#include <wx/richtext/richtextctrl.h>
#include "lib/film.h"
+#include "lib/ratio.h"
#include "hints_dialog.h"
+using boost::shared_ptr;
+using boost::dynamic_pointer_cast;
+
HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> f)
: wxDialog (parent, wxID_ANY, _("Hints"))
, _film (f)
@@ -44,6 +48,7 @@ HintsDialog::HintsDialog (wxWindow* parent, boost::weak_ptr<Film> f)
boost::shared_ptr<Film> film = _film.lock ();
if (film) {
film->Changed.connect (boost::bind (&HintsDialog::film_changed, this));
+ film->ContentChanged.connect (boost::bind (&HintsDialog::film_changed, this));
}
film_changed ();
@@ -71,13 +76,39 @@ HintsDialog::film_changed ()
_text->Newline ();
}
+ ContentList content = film->content ();
+ int flat_or_narrower = 0;
+ int scope = 0;
+ for (ContentList::const_iterator i = content.begin(); i != content.end(); ++i) {
+ shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
+ if (vc) {
+ Ratio const * r = vc->scale().ratio ();
+ if (r && r->id() == "239") {
+ ++scope;
+ } else if (r && r->id() != "239" && r->id() != "full-frame") {
+ ++flat_or_narrower;
+ }
+ }
+ }
+
+ if (scope && !flat_or_narrower && film->container()->id() == "185") {
+ hint = true;
+ _text->WriteText (_("All of your content is in Scope (2.39:1) but your DCP's container is Flat (1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" tab."));
+ _text->Newline ();
+ }
+
+ if (!scope && flat_or_narrower && film->container()->id() == "239") {
+ hint = true;
+ _text->WriteText (_("All of your content is at 1.85:1 or narrower but your DCP's container is Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) frame. You may prefer to set your DCP's container to Flat (1.85:1) in the \"DCP\" tab."));
+ _text->Newline ();
+ }
+
if (film->video_frame_rate() != 24 && film->video_frame_rate() != 48) {
hint = true;
_text->WriteText (wxString::Format (_("Your DCP frame rate (%d fps) may cause problems in a few (mostly older) projectors. Use 24 or 48 frames per second to be on the safe side."), film->video_frame_rate()));
_text->Newline ();
}
- ContentList content = film->content ();
int vob = 0;
for (ContentList::const_iterator i = content.begin(); i != content.end(); ++i) {
if (boost::algorithm::starts_with ((*i)->path(0).filename().string(), "VTS_")) {
diff --git a/src/wx/job_manager_view.cc b/src/wx/job_manager_view.cc
index 1b9e281a7..5146243b4 100644
--- a/src/wx/job_manager_view.cc
+++ b/src/wx/job_manager_view.cc
@@ -49,7 +49,8 @@ public:
int n = 0;
_name = new wxStaticText (panel, wxID_ANY, "");
- _name->SetLabelMarkup ("<b>" + _job->name () + "</b>");
+ string const jn = "<b>" + _job->name () + "</b>";
+ _name->SetLabelMarkup (std_to_wx (jn));
table->Insert (n, _name, 0, wxALIGN_CENTER_VERTICAL | wxALL, 6);
++n;
@@ -201,15 +202,25 @@ JobManagerView::JobManagerView (wxWindow* parent, Buttons buttons)
_panel->SetSizer (_table);
SetScrollRate (0, 32);
+ EnableScrolling (false, true);
Bind (wxEVT_TIMER, boost::bind (&JobManagerView::periodic, this));
_timer.reset (new wxTimer (this));
_timer->Start (1000);
-
+
+ Bind (wxEVT_SIZE, boost::bind (&JobManagerView::sized, this, _1));
JobManager::instance()->JobAdded.connect (bind (&JobManagerView::job_added, this, _1));
}
void
+JobManagerView::sized (wxSizeEvent& ev)
+{
+ _table->FitInside (_panel);
+ _table->Layout ();
+ ev.Skip ();
+}
+
+void
JobManagerView::job_added (weak_ptr<Job> j)
{
shared_ptr<Job> job = j.lock ();
diff --git a/src/wx/job_manager_view.h b/src/wx/job_manager_view.h
index c4bb1e218..83ce4ee5a 100644
--- a/src/wx/job_manager_view.h
+++ b/src/wx/job_manager_view.h
@@ -43,6 +43,7 @@ public:
private:
void job_added (boost::weak_ptr<Job>);
void periodic ();
+ void sized (wxSizeEvent &);
wxPanel* _panel;
wxFlexGridSizer* _table;
diff --git a/src/wx/job_wrapper.cc b/src/wx/job_wrapper.cc
index df4aa7d2e..4c4ef049b 100644
--- a/src/wx/job_wrapper.cc
+++ b/src/wx/job_wrapper.cc
@@ -17,7 +17,6 @@
*/
-#include <sstream>
#include "lib/film.h"
#include "lib/exceptions.h"
#include "job_wrapper.h"
diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc
index 8df94de9c..ebecd234c 100644
--- a/src/wx/kdm_dialog.cc
+++ b/src/wx/kdm_dialog.cc
@@ -161,9 +161,11 @@ KDMDialog::KDMDialog (wxWindow* parent, boost::shared_ptr<const Film> film)
add_label_to_sizer (table, this, _("KDM type"), true);
_type = new wxChoice (this, wxID_ANY);
- _type->Append ("Modified Transitional 1");
- _type->Append ("DCI Any");
- _type->Append ("DCI Specific");
+ _type->Append ("Modified Transitional 1", ((void *) libdcp::KDM::MODIFIED_TRANSITIONAL_1));
+ if (!film->interop ()) {
+ _type->Append ("DCI Any", ((void *) libdcp::KDM::DCI_ANY));
+ _type->Append ("DCI Specific", ((void *) libdcp::KDM::DCI_SPECIFIC));
+ }
table->Add (_type, 1, wxEXPAND);
_type->SetSelection (0);
@@ -491,16 +493,7 @@ KDMDialog::write_to () const
libdcp::KDM::Formulation
KDMDialog::formulation () const
{
- switch (_type->GetSelection()) {
- case 0:
- return libdcp::KDM::MODIFIED_TRANSITIONAL_1;
- case 1:
- return libdcp::KDM::DCI_ANY;
- case 2:
- return libdcp::KDM::DCI_SPECIFIC;
- default:
- assert (false);
- }
+ return (libdcp::KDM::Formulation) reinterpret_cast<intptr_t> (_type->GetClientData (_type->GetSelection()));
}
void
diff --git a/src/wx/po/de_DE.po b/src/wx/po/de_DE.po
index 943da177d..324f266cc 100644
--- a/src/wx/po/de_DE.po
+++ b/src/wx/po/de_DE.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-07-02 17:06+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-13 03:08+0100\n"
"Last-Translator: Carsten Kurz\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: de\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -29,11 +29,11 @@ msgid ""
msgstr ""
"(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr "(Passwort wird im Klartext gespeichert!)"
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(Programm zum Ändern der Sprache neu starten)"
@@ -105,11 +105,11 @@ msgstr "Kino hinzufügen..."
msgid "Add Screen..."
msgstr "Saal hinzufügen..."
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Datei(en) hinzufügen..."
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Ordner hinzufügen..."
@@ -117,11 +117,27 @@ msgstr "Ordner hinzufügen..."
msgid "Add..."
msgstr "Hinzufügen..."
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
msgid "Allow any DCP frame rate"
msgstr "Auch Nicht-Standard-Bildraten erlauben (Vorsicht!)"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr "Grafik von"
@@ -153,7 +169,11 @@ msgstr ""
"Der Ton von Kanal %d wird wird an den DCP Kanal %d mit %.1fdB Pegel "
"weitergegeben."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+msgid "BCC address"
+msgstr "BCC: Adresse"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
msgstr "Falsche Einstellung für %s (%s)"
@@ -182,7 +202,7 @@ msgstr "Aber ich nutze gegenwärtig Faderstellung"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
msgid "CC address"
msgstr "CC: Adresse"
@@ -202,7 +222,7 @@ msgstr "CPL annotation text"
msgid "Calculate..."
msgstr "Berechne..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Abbrechen"
@@ -210,8 +230,8 @@ msgstr "Abbrechen"
msgid "Certificate"
msgstr "Zertifikat"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
msgid "Certificate downloaded"
msgstr "Zertifikat heruntergeladen"
@@ -227,11 +247,11 @@ msgstr "Kanal Verstärkung (+/-)"
msgid "Channels"
msgstr "Kanäle"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "Zeige bei Updateprüfung auch Test-Versionen an"
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Beim Start auf Updates überprüfen."
@@ -239,11 +259,11 @@ msgstr "Beim Start auf Updates überprüfen."
msgid "Choose a file"
msgstr "Datei auswählen"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Eine oder mehrere Dateien auswählen"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Ordner wählen"
@@ -251,7 +271,7 @@ msgstr "Ordner wählen"
msgid "Cinema"
msgstr "Kino"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
msgstr "Farbumwandlungen"
@@ -260,7 +280,7 @@ msgstr "Farbumwandlungen"
msgid "Colour conversion"
msgstr "Farbumwandlung"
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
msgid "Config|Timing"
msgstr "Timing"
@@ -290,6 +310,10 @@ msgstr "Inhalt Version"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "Inhalt Video ist %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "Ton konnte nicht analysiert werden"
@@ -299,7 +323,7 @@ msgstr "Ton konnte nicht analysiert werden"
msgid "Could not decode video for view (%s)"
msgstr "Bild konnte nicht zur Vorschau dekodiert werden (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "DCP konnte nicht erstellt werden: %s"
@@ -330,7 +354,7 @@ msgstr "Eigene"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "DCP Name"
@@ -347,43 +371,43 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "DCP-o-matic Ton - %s"
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
msgid "Default ISDCF name details"
msgstr "Standard ISDCF Name Details"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
msgid "Default JPEG2000 bandwidth"
msgstr "Standard JPEG2000 Datenrate"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
-msgstr "Standard Ton Verzögerung"
+msgstr "Standard Ton Verzögerung (+/-)"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Standard Container"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Standard Inhalt Typ"
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Standard 'creator' (DCI)"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Standard Ordner für neue Projekte"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Standard Länge für Standbilder"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
msgid "Default issuer"
msgstr "Standard 'issuer' (DCI)"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Vorgaben"
@@ -391,7 +415,7 @@ msgstr "Vorgaben"
msgid "Delay"
msgstr "Verzögerung (+/-)"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Details..."
@@ -409,11 +433,11 @@ msgstr "Dolby"
msgid "Doremi"
msgstr "Doremi"
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr "Doremi Seriennummern müssen aus 6 Zahlen bestehen!"
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr "Nach unten"
@@ -425,8 +449,8 @@ msgstr "Download"
msgid "Download certificate"
msgstr "Lade Zertifikat"
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr "Zertifikat wird heruntergeladen..."
@@ -438,25 +462,25 @@ msgstr "Kino bearbeiten..."
msgid "Edit Screen..."
msgstr "Saal bearbeiten..."
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Bearbeiten..."
#: src/wx/cinema_dialog.cc:31
msgid "Email address for KDM delivery"
-msgstr "Absender Email Adresse"
+msgstr "KDM Empfänger Email Adresse"
#: src/wx/servers_list_dialog.cc:30
msgid "Encoding Servers"
-msgstr "Enkodier Server"
+msgstr "Encoding Server"
#: src/wx/film_editor.cc:162
msgid "Encrypted"
-msgstr "Verschlüsselt (-> KDM Erstellung)"
+msgstr "Verschlüsselt (->für KDM Erstellung)"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
msgstr "Fehler"
@@ -464,8 +488,9 @@ msgstr "Fehler"
msgid "Facility (e.g. DLA)"
msgstr "Hersteller (z.B. DXL)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
msgid "Fetching..."
msgstr "Zugriff..."
@@ -507,7 +532,7 @@ msgstr ""
msgid "From"
msgstr "Von"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
msgid "From address"
msgstr "Absenderadresse"
@@ -515,7 +540,7 @@ msgstr "Absenderadresse"
msgid "Full"
msgstr "Voll"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Gesamtlänge"
@@ -536,7 +561,7 @@ msgstr "Abschwächung des Kanals %d im DCP Kanal %d"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr "Allgemein"
@@ -544,7 +569,7 @@ msgstr "Allgemein"
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Tipps"
@@ -564,11 +589,11 @@ msgstr "Hz"
msgid "I want to play this back at fader"
msgstr "Ich möchte bei dieser Faderstellung spielen"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "IP Adresse"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
msgid "IP address / host name"
msgstr "IP Adresse / Host Name"
@@ -592,17 +617,21 @@ msgstr "JPEG2000 Datenrate"
msgid "Join"
msgstr "Verbinden"
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
msgid "KDM Email"
msgstr "KDM Email"
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
#: src/wx/kdm_dialog.cc:99
msgid "KDM|Timing"
msgstr "Zeitfenster"
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
-msgstr "Lücken automatisch schließen"
+msgstr "Lücken in Zeitleiste automatisch schließen"
#: src/wx/audio_mapping_view.cc:277
msgid "L"
@@ -628,23 +657,27 @@ msgstr "Linearisiere Eingangs Gamma für niedrige Werte"
msgid "Load from file..."
msgstr "Lade aus Datei..."
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
msgstr "Log"
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "SL"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "FEHLT:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
msgid "Mail password"
msgstr "Mail Passwort"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
msgid "Mail user name"
msgstr "Mail/SMTP Server Benutzername/Login"
@@ -660,11 +693,11 @@ msgstr "Zielhelligkeit (z.B. '4fL' für 3D)"
msgid "Matrix"
msgstr "Matrix"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
msgid "Maximum JPEG2000 bandwidth"
-msgstr "Maximale JPEG2000 Datenrate(Vorsicht!)"
+msgstr "Maximale JPEG2000 Datenrate (Vorsicht!)"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr "Mbit/s"
@@ -708,7 +741,7 @@ msgstr "Aus"
msgid "Other"
msgstr "Andere"
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Ausgehender/SMTP Mail Server"
@@ -729,11 +762,11 @@ msgstr "DCP Paket Typ (z.B. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Mit Schwarz gefüllt auf %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
msgid "Password"
msgstr "Passwort"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pause"
@@ -745,7 +778,7 @@ msgstr "Spitze"
msgid "Play"
msgstr "Abspielen"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr "Abspiellänge"
@@ -753,7 +786,7 @@ msgstr "Abspiellänge"
msgid "Please wait; audio is being analysed..."
msgstr "Bitte warten; Ton wird analysiert..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Startposition"
@@ -781,8 +814,8 @@ msgstr "Rc"
msgid "Red band"
msgstr "Red band (USA, für explizite Inhalte)"
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Entfernen"
@@ -806,7 +839,7 @@ msgstr "Inhalt wiederholen"
msgid "Repeat..."
msgstr "Wiederhole..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr "Auf Standardtext zurücksetzen"
@@ -814,7 +847,7 @@ msgstr "Auf Standardtext zurücksetzen"
msgid "Resolution"
msgstr "Auflösung"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Weiter"
@@ -834,13 +867,9 @@ msgstr "SR"
msgid "SMPTE"
msgstr "SMPTE"
-#: src/wx/subtitle_panel.cc:62
-msgid "Scale"
-msgstr "Skalierer"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
-msgstr "Skaliere zu"
+msgstr "Skaliere auf"
#: src/wx/video_panel.cc:316
#, c-format
@@ -849,13 +878,13 @@ msgstr "Skaliert auf %dx%d (%.2f:1)\n"
#: src/wx/film_editor.cc:195
msgid "Scaler"
-msgstr "Skalierer"
+msgstr "Skalierverfahren"
#: src/wx/kdm_dialog.cc:60
msgid "Screens"
msgstr "Saal"
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
msgid "Select CPL XML file"
msgstr "CPL XML Datei auswählen"
@@ -863,7 +892,7 @@ msgstr "CPL XML Datei auswählen"
msgid "Select Certificate File"
msgstr "Zertifikat Datei auswählen"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Per Email senden"
@@ -879,19 +908,19 @@ msgstr "Server"
msgid "Server manufacturer"
msgstr "Server Hersteller"
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr "Server Seriennummer"
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
msgid "Servers"
-msgstr "Server"
+msgstr "Encoding Server"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr "Setzen"
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
msgstr "Sprache setzen"
@@ -919,14 +948,18 @@ msgstr "Stabile Version"
msgid "Standard"
msgstr "Standard"
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
msgid "Stream"
-msgstr "Tonspur"
+msgstr "Spur"
#: src/wx/isdcf_metadata_dialog.cc:47
msgid "Studio (e.g. TCF)"
msgstr "Studio (z.B. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Untertitel Sprache (z.B. EN)"
@@ -935,7 +968,7 @@ msgstr "Untertitel Sprache (z.B. EN)"
msgid "Subtitles"
msgstr "Untertitel"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Unterstützt durch"
@@ -943,7 +976,7 @@ msgstr "Unterstützt durch"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
msgstr "Zielpfad"
@@ -959,7 +992,7 @@ msgstr "Gebiet (z.B. UK)"
msgid "Test version "
msgstr "Test Version"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Getestet von"
@@ -973,7 +1006,7 @@ msgstr ""
"Entweder nochmals mit den richtigen Inhaltsdateien probieren oder Fehlende "
"löschen."
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "Keine Warnungen: Alles sieht gut aus!"
@@ -981,7 +1014,7 @@ msgstr "Keine Warnungen: Alles sieht gut aus!"
msgid "There is not enough free memory to do that."
msgstr "Für diese Operation ist nicht genug freier Speicher verfügbar."
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
msgstr "Dies ist keine gültige CPL Datei"
@@ -989,7 +1022,7 @@ msgstr "Dies ist keine gültige CPL Datei"
msgid "Threads"
msgstr "Threads"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "Auf diesem Rechner zu benutzende CPU-Threads"
@@ -1001,11 +1034,11 @@ msgstr "Zeit"
msgid "Timeline"
msgstr "Zeitleiste"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr "Zeitleiste..."
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
msgid "Timing|Timing"
msgstr "Trimmen"
@@ -1013,15 +1046,15 @@ msgstr "Trimmen"
msgid "Top crop"
msgstr "Oben beschneiden"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr "Übersetzt von"
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
msgstr "Schnitt vom Ende"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
msgstr "Schnitt vom Anfang"
@@ -1029,7 +1062,7 @@ msgstr "Schnitt vom Anfang"
msgid "Type"
msgstr "Typ"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
msgid "Unexpected certificate filename form"
msgstr "Ungültige Zertifikats-Datei"
@@ -1041,7 +1074,7 @@ msgstr "Unbekannt"
msgid "Until"
msgstr "Bis"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Nach oben"
@@ -1049,11 +1082,11 @@ msgstr "Nach oben"
msgid "Update"
msgstr "Update"
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
msgid "Use ISDCF name"
msgstr "ISDCF Name benutzen"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
msgstr "Alle verfügbaren Server im Subnetz benutzen"
@@ -1065,7 +1098,7 @@ msgstr "Beste benutzen"
msgid "Use preset"
msgstr "Preset benutzen"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Benutzer Name"
@@ -1077,11 +1110,11 @@ msgstr "VI"
msgid "Video"
msgstr "Bild"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "Bildwiederholrate"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
msgstr "Warnungen"
@@ -1089,7 +1122,7 @@ msgstr "Warnungen"
msgid "With Subtitles"
msgstr "Mit Untertitelung"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Speichern nach"
@@ -1101,11 +1134,21 @@ msgstr "Geschrieben von"
msgid "X Offset"
msgstr "Horizontale Verschiebung"
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Größe"
+
#: src/wx/subtitle_panel.cc:53
msgid "Y Offset"
msgstr "Vertikale Verschiebung"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Größe"
+
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1114,7 +1157,7 @@ msgstr ""
"Sie haben %d Dateien die wie VOB Dateien einer DVD aussehen. Sie sollten sie "
"verbinden um einen sanften Übergang zwischen den Dateien zu haben."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1124,7 +1167,7 @@ msgstr ""
"Probleme verursachen. Um auf der sicheren Seite zu sein sollten Sie 24 oder "
"48 Bilder/s benutzen."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
@@ -1132,7 +1175,7 @@ msgstr ""
"Ihr DCP hat eine ungerade Anzahl an Tonkanälen. Das wird wahrscheinlich zu "
"Abspielproblemen führen."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1157,11 +1200,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1171,12 +1214,15 @@ msgstr "Standbild"
#: src/wx/repeat_dialog.cc:28
msgid "times"
-msgstr "Zeiten"
+msgstr "mal"
#: src/wx/timeline.cc:241
msgid "video"
msgstr "Bild"
+#~ msgid "Default creator"
+#~ msgstr "Standard 'creator' (DCI)"
+
#~ msgid "Audio Gain"
#~ msgstr "Verstärkung"
diff --git a/src/wx/po/es_ES.po b/src/wx/po/es_ES.po
index d84e5355c..3d99cd3da 100644
--- a/src/wx/po/es_ES.po
+++ b/src/wx/po/es_ES.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: libdcpomatic-wx\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-04-20 12:06-0500\n"
"Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n"
"Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n"
@@ -18,7 +18,7 @@ msgstr ""
"X-Generator: Poedit 1.6.4\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -28,11 +28,11 @@ msgid ""
msgstr ""
"(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr "(claves guardadas como texto plano en el disco)"
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(reinicia DCP-o-matic para ver el cambio de idioma)"
@@ -106,11 +106,11 @@ msgstr "Añadir cine..."
msgid "Add Screen..."
msgstr "Añadir pantalla..."
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Añadir fichero(s)..."
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Añadir carpeta..."
@@ -118,12 +118,28 @@ msgstr "Añadir carpeta..."
msgid "Add..."
msgstr "Añadir..."
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
#, fuzzy
msgid "Allow any DCP frame rate"
msgstr "Velocidad de imagen"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr "Grafismo de"
@@ -152,7 +168,12 @@ msgid ""
"%.1fdB."
msgstr "El audio del canal %d pasará al canal %d del DCP con ganancia %.1fdB."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Dirección IP"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
msgstr "Configuración erronea para %s (%s)"
@@ -181,7 +202,7 @@ msgstr "pero tengo que usar el fader a"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "Dirección IP"
@@ -203,7 +224,7 @@ msgstr ""
msgid "Calculate..."
msgstr "Calcular..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Cancelar"
@@ -211,8 +232,8 @@ msgstr "Cancelar"
msgid "Certificate"
msgstr "Certificado"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
msgid "Certificate downloaded"
msgstr "Certificado descargado"
@@ -228,11 +249,11 @@ msgstr "Ganancia del canal"
msgid "Channels"
msgstr "Canales"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "Buscar actualizaciones de prueba y estables"
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Buscar actualizaciones al iniciar"
@@ -240,11 +261,11 @@ msgstr "Buscar actualizaciones al iniciar"
msgid "Choose a file"
msgstr "Elige un fichero"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Elegir un fichero o ficheros"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Elige una carpeta"
@@ -252,7 +273,7 @@ msgstr "Elige una carpeta"
msgid "Cinema"
msgstr "Cine"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
msgstr "Conversiones de color"
@@ -261,7 +282,7 @@ msgstr "Conversiones de color"
msgid "Colour conversion"
msgstr "Conversión de color"
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
#, fuzzy
msgid "Config|Timing"
msgstr "Tiempo"
@@ -292,6 +313,10 @@ msgstr "Versión del contenido"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "El video es %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "No se pudo analizar el audio."
@@ -301,7 +326,7 @@ msgstr "No se pudo analizar el audio."
msgid "Could not decode video for view (%s)"
msgstr "No se pudo decodificar el vídeo para mostrarlo (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "No se pudo crear el DCP: %s"
@@ -332,7 +357,7 @@ msgstr "Personalizado"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nombre DCP"
@@ -349,44 +374,44 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "Audio DCP-o-matic - %s"
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
#, fuzzy
msgid "Default ISDCF name details"
msgstr "Detalles por defecto del nombre DCI"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
msgid "Default JPEG2000 bandwidth"
msgstr "Ancho de banda JPEG2000 por defecto"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
msgstr "Retardo de audio por defecto"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Contenedor por defecto"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Tipo de contenido por defecto"
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Creador por defecto"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Carpeta por defecto para nuevas películas"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Duración por defecto de las imágenes fijas"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
msgid "Default issuer"
msgstr "Emisor por defecto"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Por defecto"
@@ -395,7 +420,7 @@ msgstr "Por defecto"
msgid "Delay"
msgstr "Retardo del audio"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Detalles..."
@@ -413,11 +438,11 @@ msgstr "Dolby"
msgid "Doremi"
msgstr "Doremi"
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr "Los números de serie de Doremi deben tener 6 cifras"
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr "Bajar"
@@ -429,8 +454,8 @@ msgstr "Descargar"
msgid "Download certificate"
msgstr "Descargar certificado"
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr "Descargando certificado"
@@ -442,9 +467,9 @@ msgstr "Editar cine..."
msgid "Edit Screen..."
msgstr "Editar pantalla..."
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Editar..."
@@ -460,7 +485,7 @@ msgstr "Servidores de codificación"
msgid "Encrypted"
msgstr "Encriptado"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
msgstr ""
@@ -468,8 +493,9 @@ msgstr ""
msgid "Facility (e.g. DLA)"
msgstr "Compañía (ej. DLA)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
msgid "Fetching..."
msgstr "Recuperando..."
@@ -510,7 +536,7 @@ msgstr ""
msgid "From"
msgstr "De"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
msgstr "Dirección IP"
@@ -519,7 +545,7 @@ msgstr "Dirección IP"
msgid "Full"
msgstr "Completo"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Duración completa"
@@ -540,7 +566,7 @@ msgstr "Ganancia del canal %d en el canal %d del DCP"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
@@ -548,7 +574,7 @@ msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Pistas"
@@ -568,11 +594,11 @@ msgstr "Hz"
msgid "I want to play this back at fader"
msgstr "Quiero reproducir con el fader a"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "Dirección IP"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
msgid "IP address / host name"
msgstr "Dirección IP / nombre"
@@ -597,16 +623,20 @@ msgstr "Ancho de banda JPEG2000"
msgid "Join"
msgstr "Unir"
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
msgid "KDM Email"
msgstr "Email KDM"
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
#: src/wx/kdm_dialog.cc:99
#, fuzzy
msgid "KDM|Timing"
msgstr "Tiempo"
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
msgstr "Mantener el video secuencia"
@@ -634,23 +664,27 @@ msgstr "Hacer lineal la curva de gamma de entrada para valores bajos"
msgid "Load from file..."
msgstr "Cargar de fichero..."
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
msgstr ""
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "Ls"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "FALTA:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
msgid "Mail password"
msgstr "Clave del correo"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
msgid "Mail user name"
msgstr "Usuario del correo"
@@ -666,11 +700,11 @@ msgstr ""
msgid "Matrix"
msgstr "Matriz"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
msgid "Maximum JPEG2000 bandwidth"
msgstr "Ancho de banda JPEG2000 máximo"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr "Mbit/s"
@@ -714,7 +748,7 @@ msgstr "Off"
msgid "Other"
msgstr "Otros"
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Servidor de salida de correo"
@@ -736,11 +770,11 @@ msgstr "Tipo de paquete (ej. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Completado con negro hasta %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
msgid "Password"
msgstr "Clave"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pausa"
@@ -752,7 +786,7 @@ msgstr "Pico"
msgid "Play"
msgstr "Reproducir"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr "Duración"
@@ -760,7 +794,7 @@ msgstr "Duración"
msgid "Please wait; audio is being analysed..."
msgstr "Por favor espere, el audio está siendo analizado..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Posición"
@@ -788,8 +822,8 @@ msgstr "Rc"
msgid "Red band"
msgstr ""
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Quitar"
@@ -813,7 +847,7 @@ msgstr "Repetir contenido"
msgid "Repeat..."
msgstr "Repetir..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr ""
@@ -821,7 +855,7 @@ msgstr ""
msgid "Resolution"
msgstr "Resolución"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Continuar"
@@ -841,11 +875,6 @@ msgstr "Rs"
msgid "SMPTE"
msgstr "SMPTE"
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Escalador"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
msgstr "Redimensionar a"
@@ -864,7 +893,7 @@ msgstr "Escalador"
msgid "Screens"
msgstr "Añadir pantalla..."
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
#, fuzzy
msgid "Select CPL XML file"
msgstr "Seleccionar fichero de audio"
@@ -873,7 +902,7 @@ msgstr "Seleccionar fichero de audio"
msgid "Select Certificate File"
msgstr "Seleccionar fichero de certificado"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Enviar por email"
@@ -890,19 +919,19 @@ msgstr "Servidor"
msgid "Server manufacturer"
msgstr "Número de serie del servidor"
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr "Número de serie del servidor"
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
msgid "Servers"
msgstr "Servidores"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr "Seleccionar"
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
msgstr "Seleccionar idioma"
@@ -930,7 +959,7 @@ msgstr "Versión estable"
msgid "Standard"
msgstr "Estandard"
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
#, fuzzy
msgid "Stream"
msgstr "Flujo"
@@ -939,6 +968,10 @@ msgstr "Flujo"
msgid "Studio (e.g. TCF)"
msgstr "Estudio (ej. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Idioma del subtítulo (ej. EN)"
@@ -947,7 +980,7 @@ msgstr "Idioma del subtítulo (ej. EN)"
msgid "Subtitles"
msgstr "Subtítulos"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Soportado por"
@@ -955,7 +988,7 @@ msgstr "Soportado por"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
msgstr "Ruta"
@@ -972,7 +1005,7 @@ msgstr "Territorio (ej. ES)"
msgid "Test version "
msgstr "Versión en prueba"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Comprobado por"
@@ -985,7 +1018,7 @@ msgstr ""
"El fichero(s) especificados no es el mismo que el ausente. Puedes probar de "
"nuevo con el fichero correcto o eliminar el contenido ausente."
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "No hay recomendaciones: ¡todo parece bien!"
@@ -993,7 +1026,7 @@ msgstr "No hay recomendaciones: ¡todo parece bien!"
msgid "There is not enough free memory to do that."
msgstr "No hay suficiente memoria para hacer eso."
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
msgstr ""
@@ -1001,7 +1034,7 @@ msgstr ""
msgid "Threads"
msgstr "Hilos"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "Hilos a utilizar para la codificación en esta máquina"
@@ -1013,11 +1046,11 @@ msgstr "Tiempo"
msgid "Timeline"
msgstr "Línea de tiempo"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr "Linea de tiempo..."
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
#, fuzzy
msgid "Timing|Timing"
msgstr "Tiempo"
@@ -1026,15 +1059,15 @@ msgstr "Tiempo"
msgid "Top crop"
msgstr "Recortar arriba"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr "Traducido por"
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
msgstr "Recortar del final"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
msgstr "Recortar del inicio"
@@ -1042,7 +1075,7 @@ msgstr "Recortar del inicio"
msgid "Type"
msgstr "Tipo"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
msgid "Unexpected certificate filename form"
msgstr "Nombre inesperado del fichero de certificado"
@@ -1054,7 +1087,7 @@ msgstr "Desconocido"
msgid "Until"
msgstr "Hasta"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Subir"
@@ -1062,12 +1095,12 @@ msgstr "Subir"
msgid "Update"
msgstr "Actualizar"
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
#, fuzzy
msgid "Use ISDCF name"
msgstr "Usar el nombre DCI"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
msgstr "Usar todos los servidores"
@@ -1079,7 +1112,7 @@ msgstr "Usar la mejor"
msgid "Use preset"
msgstr "Usar por defecto"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Nombre de usuario"
@@ -1091,11 +1124,11 @@ msgstr "VI"
msgid "Video"
msgstr "Vídeo"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "Velocidad de imagen"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
msgstr ""
@@ -1103,7 +1136,7 @@ msgstr ""
msgid "With Subtitles"
msgstr "Con subtítulos"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Escribe a"
@@ -1116,12 +1149,22 @@ msgstr "Escrito por"
msgid "X Offset"
msgstr "Desplazamiento en X"
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Escalador"
+
#: src/wx/subtitle_panel.cc:53
#, fuzzy
msgid "Y Offset"
msgstr "Desplazamiento en Y"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Escalador"
+
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1130,7 +1173,7 @@ msgstr ""
"Hay %d ficheros que parecen VOBs en el DVD. Deberías unirlos para asegurarte "
"transiciones suaves."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1140,7 +1183,7 @@ msgstr ""
"proyectores (sobre todo antiguos). Utiliza 24 o 48 imágenes por segundo "
"para asegurarte."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
@@ -1148,7 +1191,7 @@ msgstr ""
"Tu DCP tiene un número impar de canales de audio. Es muy probable que cause "
"problemas de reproducción."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1173,11 +1216,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1193,6 +1236,9 @@ msgstr "veces"
msgid "video"
msgstr "vídeo"
+#~ msgid "Default creator"
+#~ msgstr "Creador por defecto"
+
#~ msgid "Audio Gain"
#~ msgstr "Ganancia del audio"
diff --git a/src/wx/po/fr_FR.po b/src/wx/po/fr_FR.po
index 766bd3ad3..79c18feb2 100644
--- a/src/wx/po/fr_FR.po
+++ b/src/wx/po/fr_FR.po
@@ -7,18 +7,18 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-06-20 16:08+0100\n"
-"Last-Translator: \n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-07-14 11:27+0100\n"
+"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.3\n"
+"X-Generator: Poedit 1.6.6\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -29,11 +29,11 @@ msgstr ""
"(C) 2012-2014 par Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole "
"Laursen"
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr "(le mot de passe sera enregistré sur le disque dur au format texte)"
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(redémarrez DCP-o-matic pour appliquer le changement de langue)"
@@ -105,11 +105,11 @@ msgstr "Ajout cinéma"
msgid "Add Screen..."
msgstr "Ajout une salle"
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Ajout fichier(s)..."
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Ajout dossier..."
@@ -117,11 +117,27 @@ msgstr "Ajout dossier..."
msgid "Add..."
msgstr "Ajouter..."
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
msgid "Allow any DCP frame rate"
msgstr "Autoriser toutes cadences"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr "Thème par"
@@ -153,14 +169,19 @@ msgstr ""
"Le son du canal audio %d sera transféré au canal %d du DCP avec un gain de "
"%.1fdB."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Adresse CC"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
-msgstr "Mauvais paramètre pour %s (%s)"
+msgstr "Mauvais réglage pour %s (%s)"
#: src/wx/video_panel.cc:121
msgid "Bottom crop"
-msgstr "Découpe bas"
+msgstr "Rogner en bas"
#: src/wx/dir_picker_ctrl.cc:37 src/wx/kdm_dialog.cc:134
msgid "Browse..."
@@ -176,16 +197,15 @@ msgstr "Ar.D"
#: src/wx/gain_calculator_dialog.cc:32
msgid "But I have to use fader"
-msgstr "Je souhaite utiliser ce volume"
+msgstr "Mais je dois mixer"
#: src/wx/audio_mapping_view.cc:285
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
-#, fuzzy
+#: src/wx/config_dialog.cc:679
msgid "CC address"
-msgstr "Adresse IP"
+msgstr "Adresse CC"
#: src/wx/kdm_dialog.cc:125 src/wx/kdm_dialog.cc:131
msgid "CPL"
@@ -203,7 +223,7 @@ msgstr "Commentaire CPL"
msgid "Calculate..."
msgstr "Calcul..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Annuler"
@@ -211,8 +231,8 @@ msgstr "Annuler"
msgid "Certificate"
msgstr "Certificat"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
msgid "Certificate downloaded"
msgstr "Certificat téléchargé"
@@ -228,11 +248,11 @@ msgstr "Gain Canal"
msgid "Channels"
msgstr "Canaux"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "Recherche toutes mises à jour : test et stables."
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Recherche de mises à jour au démarrage."
@@ -240,11 +260,11 @@ msgstr "Recherche de mises à jour au démarrage."
msgid "Choose a file"
msgstr "Choisissez un fichier"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Choisissez un ou plusieurs fichiers"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Choisissez un dossier"
@@ -252,7 +272,7 @@ msgstr "Choisissez un dossier"
msgid "Cinema"
msgstr "Cinéma"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
msgstr "Conversions Couleurs"
@@ -261,10 +281,9 @@ msgstr "Conversions Couleurs"
msgid "Colour conversion"
msgstr "Espace Couleurs"
-#: src/wx/config_dialog.cc:793
-#, fuzzy
+#: src/wx/config_dialog.cc:819
msgid "Config|Timing"
-msgstr "Durée"
+msgstr "Temps"
#: src/wx/film_editor.cc:134
msgid "Container"
@@ -292,6 +311,10 @@ msgstr "Version du contenu"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "Le contenu vidéo est %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "Analyse du son impossible"
@@ -301,15 +324,15 @@ msgstr "Analyse du son impossible"
msgid "Could not decode video for view (%s)"
msgstr "Décodage de la vidéo pour visualisation impossible (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "Impossible de créer le DCP : %s"
#: src/wx/screen_dialog.cc:95
-#, fuzzy, c-format
+#, c-format
msgid "Could not read certificate file (%s)"
-msgstr "Ouverture du contenu impossible (%s)"
+msgstr "Lecture du ficher de certificat (%s) impossible"
#: src/wx/dolby_certificate_dialog.cc:39
msgid "Country"
@@ -322,7 +345,7 @@ msgstr "Créer dans le dossier"
#: src/wx/video_panel.cc:304
#, c-format
msgid "Cropped to %dx%d (%.2f:1)\n"
-msgstr "Découpe de %dx%d (%.2f:1)\n"
+msgstr "Rognage de %dx%d (%.2f:1)\n"
#: src/wx/video_panel.cc:244
msgid "Custom"
@@ -332,7 +355,7 @@ msgstr "Personnalisé"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nom du DCP"
@@ -349,52 +372,51 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "Son DCP-o-matic - %s"
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
msgid "Default ISDCF name details"
msgstr "Nom ISDCF par défaut"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
msgid "Default JPEG2000 bandwidth"
msgstr "Qualité JPEG2000 par défaut"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
-msgstr "Délais audio par défaut"
+msgstr "Délai audio par défaut"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Format par défaut"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Catégorie par défaut"
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Créateur par défaut"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Dossier par défaut pour les DCP"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Durée par défaut des images fixes"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
msgid "Default issuer"
msgstr "Labo par défaut"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Par défaut"
#: src/wx/audio_panel.cc:67
-#, fuzzy
msgid "Delay"
-msgstr "Délai audio"
+msgstr "Délai"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Détails..."
@@ -412,11 +434,11 @@ msgstr "Dolby"
msgid "Doremi"
msgstr "Doremi"
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr "Les numéros de série Doremi doivent être composés de 6 chiffres"
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr "Descendre"
@@ -428,8 +450,8 @@ msgstr "Télécharger"
msgid "Download certificate"
msgstr "Téléchargement Certificat"
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr "Téléchargement Certificat en cours"
@@ -441,9 +463,9 @@ msgstr "Éditer le cinéma"
msgid "Edit Screen..."
msgstr "Éditer la salle"
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Éditer..."
@@ -459,7 +481,7 @@ msgstr "Serveurs Encodage"
msgid "Encrypted"
msgstr "Crypté"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
msgstr "Erreurs"
@@ -467,8 +489,9 @@ msgstr "Erreurs"
msgid "Facility (e.g. DLA)"
msgstr "Laboratoire (ex. DLA)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
msgid "Fetching..."
msgstr "Obtention..."
@@ -508,22 +531,21 @@ msgstr "Création de DCP libre et gratuit depuis presque tout."
msgid "From"
msgstr "À partir du"
-#: src/wx/config_dialog.cc:673
-#, fuzzy
+#: src/wx/config_dialog.cc:675
msgid "From address"
-msgstr "Adresse IP"
+msgstr "Adresse source"
#: src/wx/audio_mapping_view.cc:133
msgid "Full"
msgstr "Plein"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Durée totale"
#: src/wx/audio_panel.cc:52
msgid "Gain"
-msgstr ""
+msgstr "Gain"
#: src/wx/gain_calculator_dialog.cc:27
msgid "Gain Calculator"
@@ -538,7 +560,7 @@ msgstr "Gain pour le canal audio %d dans le canal du DCP %d"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr "Général"
@@ -546,9 +568,9 @@ msgstr "Général"
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
-msgstr "Avertissements"
+msgstr "Conseils"
#: src/wx/servers_list_dialog.cc:40
msgid "Host"
@@ -564,13 +586,13 @@ msgstr "Hz"
#: src/wx/gain_calculator_dialog.cc:29
msgid "I want to play this back at fader"
-msgstr "Je veux le jouer à ce volume"
+msgstr "Je veux lire avec une table de mixage"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "Adresse IP"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
msgid "IP address / host name"
msgstr "Adresse IP / Nom d'Hôte"
@@ -580,7 +602,7 @@ msgstr "Nom ISDCF"
#: src/wx/colour_conversion_editor.cc:44
msgid "Input gamma"
-msgstr "Gamma entrée"
+msgstr "gamma source"
#: src/wx/film_editor.cc:228
msgid "Interop"
@@ -594,18 +616,21 @@ msgstr "Qualité JPEG2000"
msgid "Join"
msgstr "Ajouter"
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
msgid "KDM Email"
msgstr "e-mail KDM"
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
#: src/wx/kdm_dialog.cc:99
-#, fuzzy
msgid "KDM|Timing"
-msgstr "Durée"
+msgstr "Temps"
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
-msgstr "Garder la vidéo"
+msgstr "Conserver la vidéo dans la séquence"
#: src/wx/audio_mapping_view.cc:277
msgid "L"
@@ -617,7 +642,7 @@ msgstr "CG"
#: src/wx/video_panel.cc:88
msgid "Left crop"
-msgstr "Découpe gauche"
+msgstr "Rogner à gauche"
#: src/wx/audio_mapping_view.cc:289
msgid "Lfe"
@@ -625,29 +650,33 @@ msgstr "BF"
#: src/wx/colour_conversion_editor.cc:49
msgid "Linearise input gamma curve for low values"
-msgstr "Lisser la courbe gamma d'entrée pour les bas niveaux"
+msgstr "Courbe gamma d'entrée linéaire pour les bas niveaux"
#: src/wx/screen_dialog.cc:46
msgid "Load from file..."
msgstr "Chargement depuis fichier..."
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
msgstr "Rapport"
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "Sr.G"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "MANQUANT:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
msgid "Mail password"
msgstr "Mot de passe Mail"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
msgid "Mail user name"
msgstr "Nom Utilisateur Mail"
@@ -663,11 +692,11 @@ msgstr "Luminance masterisée (ex: 4fl)"
msgid "Matrix"
msgstr "Matrice"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
msgid "Maximum JPEG2000 bandwidth"
msgstr "Qualité JPEG2000 Maxi"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr "Mbit/s"
@@ -711,9 +740,9 @@ msgstr "Eteint"
msgid "Other"
msgstr "Autre"
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
-msgstr "Serveurs de messagerie sortante"
+msgstr "Serveurs de messagerie sortant"
#: src/wx/kdm_dialog.cc:156
msgid "Output"
@@ -732,11 +761,11 @@ msgstr "Type de paquet (ex. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Enveloppe noire de %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
msgid "Password"
msgstr "Mot de passe"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pause"
@@ -748,7 +777,7 @@ msgstr "Crête"
msgid "Play"
msgstr "Lecture"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr "Durée de lecture"
@@ -756,7 +785,7 @@ msgstr "Durée de lecture"
msgid "Please wait; audio is being analysed..."
msgstr "Merci de patienter ; analyse de la piste son..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Position"
@@ -784,8 +813,8 @@ msgstr "CD"
msgid "Red band"
msgstr "Red Band"
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Supprimer"
@@ -809,15 +838,15 @@ msgstr "Répéter le contenu"
msgid "Repeat..."
msgstr "Répéter..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
-msgstr ""
+msgstr "texte par défaut"
#: src/wx/film_editor.cc:175
msgid "Resolution"
msgstr "Résolution"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Reprendre"
@@ -827,7 +856,7 @@ msgstr "Cliquez droit pour modifier le gain."
#: src/wx/video_panel.cc:99
msgid "Right crop"
-msgstr "Découpe droite"
+msgstr "Rogner à droite"
#: src/wx/audio_mapping_view.cc:297
msgid "Rs"
@@ -837,10 +866,6 @@ msgstr "Sr.D"
msgid "SMPTE"
msgstr "SMPTE"
-#: src/wx/subtitle_panel.cc:62
-msgid "Scale"
-msgstr "Mise à l'échelle"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
msgstr "Mise à l'échelle"
@@ -858,7 +883,7 @@ msgstr "Mise à l'échelle"
msgid "Screens"
msgstr "Ecrans"
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
msgid "Select CPL XML file"
msgstr "Sélectionner le fichier CPL.xml"
@@ -866,7 +891,7 @@ msgstr "Sélectionner le fichier CPL.xml"
msgid "Select Certificate File"
msgstr "Sélectionner le certificat"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Envoyé par e-mail"
@@ -879,29 +904,28 @@ msgid "Server"
msgstr "Serveur"
#: src/wx/screen_dialog.cc:41
-#, fuzzy
msgid "Server manufacturer"
-msgstr "Numéro de Série du Serveur"
+msgstr "Constructeur du serveur"
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr "Numéro de Série du Serveur"
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
msgid "Servers"
msgstr "Serveurs"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr "Sélection"
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
-msgstr "Selectionnez la langue"
+msgstr "Sélectionnez la langue"
#: src/wx/audio_panel.cc:48
msgid "Show Audio..."
-msgstr "Analyser le son..."
+msgstr "Afficher le son..."
#: src/wx/film_editor.cc:158
msgid "Signed"
@@ -913,7 +937,7 @@ msgstr "Lissage"
#: src/wx/timeline_dialog.cc:38
msgid "Snap"
-msgstr "Echnager"
+msgstr "Magnetisme"
#: src/wx/update_dialog.cc:43
msgid "Stable version "
@@ -923,7 +947,7 @@ msgstr "Version Stable"
msgid "Standard"
msgstr "Standard"
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
msgid "Stream"
msgstr "Flux"
@@ -931,6 +955,10 @@ msgstr "Flux"
msgid "Studio (e.g. TCF)"
msgstr "Studio (ex. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Langue de sous-titres (ex. FR)"
@@ -939,7 +967,7 @@ msgstr "Langue de sous-titres (ex. FR)"
msgid "Subtitles"
msgstr "Sous-titres"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Soutenu par"
@@ -947,13 +975,13 @@ msgstr "Soutenu par"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
-msgstr "Chemin d'accès"
+msgstr "Chemin cible"
#: src/wx/isdcf_metadata_dialog.cc:56
msgid "Temp version"
-msgstr "Version Temp"
+msgstr "Version temporaire"
#: src/wx/isdcf_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
@@ -961,9 +989,9 @@ msgstr "Territoire (ex. FR)"
#: src/wx/update_dialog.cc:48
msgid "Test version "
-msgstr "Version Test"
+msgstr "Version test"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Testé par"
@@ -974,10 +1002,10 @@ msgid ""
"missing content."
msgstr ""
"Les fichiers de contenu que vous avez spécifiés ne sont pas les mêmes que "
-"ceux detectés comme manquants. Vous pouvez réessayer avec les contenus "
+"ceux détectés comme manquants. Vous pouvez réessayer avec les contenus "
"corrects ou supprimer les contenus manquants."
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "Il n'y a aucun avertissement: tout semble correct!"
@@ -985,7 +1013,7 @@ msgstr "Il n'y a aucun avertissement: tout semble correct!"
msgid "There is not enough free memory to do that."
msgstr "Il n'y a pas assez de mémoire pour faire cela."
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
msgstr "Ceci n'est pas un fichier CPL valide"
@@ -993,7 +1021,7 @@ msgstr "Ceci n'est pas un fichier CPL valide"
msgid "Threads"
msgstr "Processus"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "Nombre de processus à utiliser sur cet hôte"
@@ -1005,36 +1033,35 @@ msgstr "Durée"
msgid "Timeline"
msgstr "Timeline"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr "Timeline..."
-#: src/wx/timing_panel.cc:35
-#, fuzzy
+#: src/wx/timing_panel.cc:37
msgid "Timing|Timing"
-msgstr "Durée"
+msgstr "Temps"
#: src/wx/video_panel.cc:110
msgid "Top crop"
-msgstr "Découpe haut"
+msgstr "Rogner en haut"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr "Traduit par"
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
-msgstr "Exclure à la fin"
+msgstr "Rogner par la fin"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
-msgstr "Exclure au début"
+msgstr "Rogner au début"
#: src/wx/audio_dialog.cc:55 src/wx/video_panel.cc:75
msgid "Type"
msgstr "Type"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
msgid "Unexpected certificate filename form"
msgstr "Nom de fichier certificat non conforme "
@@ -1046,21 +1073,21 @@ msgstr "inconnu."
msgid "Until"
msgstr "Jusqu'au"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Monter"
#: src/wx/update_dialog.cc:27
msgid "Update"
-msgstr "Mise à jour."
+msgstr "Mise à jour"
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
msgid "Use ISDCF name"
msgstr "Utiliser le nom ISDCF"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
-msgstr "Utiliser tous les serveurs."
+msgstr "Utiliser tous les serveurs"
#: src/wx/film_editor.cc:152
msgid "Use best"
@@ -1070,7 +1097,7 @@ msgstr "Automatique"
msgid "Use preset"
msgstr "Utiliser le préréglage"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Nom d'utilisateur"
@@ -1082,11 +1109,11 @@ msgstr "VI"
msgid "Video"
msgstr "Vidéo"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "Cadence vidéo"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
msgstr "Avertissements"
@@ -1094,7 +1121,7 @@ msgstr "Avertissements"
msgid "With Subtitles"
msgstr "Avec sous-titres"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Ecrire à"
@@ -1104,13 +1131,23 @@ msgstr "Développé par"
#: src/wx/subtitle_panel.cc:44
msgid "X Offset"
-msgstr "Position Horizontale"
+msgstr "Position horizontale"
+
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Mise à l'échelle"
#: src/wx/subtitle_panel.cc:53
msgid "Y Offset"
-msgstr "Position Verticale"
+msgstr "Position verticale"
+
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Mise à l'échelle"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1119,7 +1156,7 @@ msgstr ""
"%d fichiers ressemblent à des fichiers VOB de DVD. Vous devriez les ajouter "
"afin de vous assurer d'une jonction correcte entre vos fichiers."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1129,15 +1166,15 @@ msgstr ""
"quelques projecteurs (anciens). Utilisez plutôt une cadence de 24 ou 48 "
"images par seconde pour assurer une plus grande compatibilité."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
msgstr ""
-"Votre DCP posséde un nombre impair de canaux audio. Cela peut créer des "
+"Votre DCP possède un nombre impair de canaux audio. Cela peut créer des "
"problèmes de lecture."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1162,11 +1199,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1182,6 +1219,9 @@ msgstr "fois"
msgid "video"
msgstr "vidéo"
+#~ msgid "Default creator"
+#~ msgstr "Créateur par défaut"
+
#~ msgid "Audio Gain"
#~ msgstr "Gain audio"
diff --git a/src/wx/po/it_IT.po b/src/wx/po/it_IT.po
index 7789601a7..569f49975 100644
--- a/src/wx/po/it_IT.po
+++ b/src/wx/po/it_IT.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: IT VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-02-03 10:46+0100\n"
"Last-Translator: William Fanelli <william.f@impronte.com>\n"
"Language-Team: \n"
@@ -18,7 +18,7 @@ msgstr ""
"X-Generator: Poedit 1.6.3\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -27,11 +27,11 @@ msgid ""
"(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
msgstr ""
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr ""
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(riavviare DCP-o-matic per vedere i cambiamenti di lingua)"
@@ -104,11 +104,11 @@ msgstr "Aggiungi Cinema"
msgid "Add Screen..."
msgstr "Aggiungi Schermo"
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Aggiungi File"
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Aggiungi cartella"
@@ -116,12 +116,28 @@ msgstr "Aggiungi cartella"
msgid "Add..."
msgstr "Aggiungi..."
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
#, fuzzy
msgid "Allow any DCP frame rate"
msgstr "Frequenza fotogrammi video"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr ""
@@ -153,7 +169,12 @@ msgstr ""
"L' audio sarà trasferito dal canale %d sorgente al canale %d DCP con "
"guadagno di %.1fdB."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "Indirizzo IP"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
msgstr "Valore sbagliato per %s (%s)"
@@ -182,7 +203,7 @@ msgstr "Ma dovrò riprodurre con il fader a"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "Indirizzo IP"
@@ -203,7 +224,7 @@ msgstr ""
msgid "Calculate..."
msgstr "Calcola..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Annulla"
@@ -212,8 +233,8 @@ msgstr "Annulla"
msgid "Certificate"
msgstr "Seleziona il file del Certificato"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
#, fuzzy
msgid "Certificate downloaded"
msgstr "Seleziona il file del Certificato"
@@ -230,11 +251,11 @@ msgstr "Guadagno audio"
msgid "Channels"
msgstr "Canali"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "Controlla per aggiornamenti test o stabili"
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Controlla gli aggiornamentio alla partenza"
@@ -242,11 +263,11 @@ msgstr "Controlla gli aggiornamentio alla partenza"
msgid "Choose a file"
msgstr "Scegli un file"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Scegli uno o più file"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Scegli una cartella"
@@ -255,7 +276,7 @@ msgstr "Scegli una cartella"
msgid "Cinema"
msgstr "Aggiungi Cinema"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
#, fuzzy
msgid "Colour Conversions"
msgstr "Conversioni colore"
@@ -265,7 +286,7 @@ msgstr "Conversioni colore"
msgid "Colour conversion"
msgstr "Conversione colore"
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
msgid "Config|Timing"
msgstr ""
@@ -295,6 +316,10 @@ msgstr "Tipo di sorgente"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "Il video originale è %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "Non posso analizzare l'audio."
@@ -304,7 +329,7 @@ msgstr "Non posso analizzare l'audio."
msgid "Could not decode video for view (%s)"
msgstr "Non posso decodificare il video per guardarlo (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "Non posso creare il DCP: %s"
@@ -335,7 +360,7 @@ msgstr ""
msgid "DCP"
msgstr ""
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "Nome del DCP"
@@ -352,47 +377,46 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "Audio DCP-o-matic - %s"
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
#, fuzzy
msgid "Default ISDCF name details"
msgstr "Dettagli del nome DCI predefinito"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
#, fuzzy
msgid "Default JPEG2000 bandwidth"
msgstr "Banda passante JPEG2000"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
msgstr "Ritardo audio predefinito"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Contenitore predefinito"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Tipo sorgente predefinito"
-#: src/wx/config_dialog.cc:300
-#, fuzzy
-msgid "Default creator"
-msgstr "Contenitore predefinito"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Cartella predefinita per i nuovi films"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Durata predefinita immagini statiche"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
#, fuzzy
msgid "Default issuer"
msgstr "Predefiniti"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Predefiniti"
@@ -401,7 +425,7 @@ msgstr "Predefiniti"
msgid "Delay"
msgstr "Ritardo dell'audio"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Dettagli"
@@ -419,11 +443,11 @@ msgstr ""
msgid "Doremi"
msgstr ""
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr ""
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr ""
@@ -435,8 +459,8 @@ msgstr ""
msgid "Download certificate"
msgstr ""
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr ""
@@ -448,9 +472,9 @@ msgstr "Modifica Cinema..."
msgid "Edit Screen..."
msgstr "Modifica Schermo..."
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Modifica..."
@@ -467,7 +491,7 @@ msgstr "Servers di codifica"
msgid "Encrypted"
msgstr "Criptato"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
msgstr ""
@@ -475,8 +499,9 @@ msgstr ""
msgid "Facility (e.g. DLA)"
msgstr "Facility (es. DLA)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
#, fuzzy
msgid "Fetching..."
msgstr "conteggio..."
@@ -517,7 +542,7 @@ msgstr ""
msgid "From"
msgstr "Da"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
msgstr "Indirizzo IP"
@@ -526,7 +551,7 @@ msgstr "Indirizzo IP"
msgid "Full"
msgstr ""
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr ""
@@ -547,7 +572,7 @@ msgstr "Guadagno per il canale sorgente %d nel canale DCP %d"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
@@ -555,7 +580,7 @@ msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Suggerimenti"
@@ -575,11 +600,11 @@ msgstr "Hz"
msgid "I want to play this back at fader"
msgstr "Sto usando il fader a"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "Indirizzo IP"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
#, fuzzy
msgid "IP address / host name"
msgstr "Indirizzo IP"
@@ -605,15 +630,19 @@ msgstr "Banda passante JPEG2000"
msgid "Join"
msgstr ""
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
msgid "KDM Email"
msgstr ""
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
#: src/wx/kdm_dialog.cc:99
msgid "KDM|Timing"
msgstr ""
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
msgstr "Tieni i video in sequenza"
@@ -641,24 +670,28 @@ msgstr "Linearizza la curva del gamma in ingresso per piccoli valori"
msgid "Load from file..."
msgstr ""
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
msgstr ""
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "Ls"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "MANCANTE:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
#, fuzzy
msgid "Mail password"
msgstr "Password del TMS"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
#, fuzzy
msgid "Mail user name"
msgstr "Nome utente del TMS"
@@ -675,12 +708,12 @@ msgstr ""
msgid "Matrix"
msgstr "Matrice"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
#, fuzzy
msgid "Maximum JPEG2000 bandwidth"
msgstr "Banda passante JPEG2000"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr ""
@@ -724,7 +757,7 @@ msgstr ""
msgid "Other"
msgstr ""
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Mail server posta in uscita"
@@ -746,12 +779,12 @@ msgstr "Tipo di Package (es. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Riempito con nero a %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
#, fuzzy
msgid "Password"
msgstr "Password del TMS"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pausa"
@@ -763,7 +796,7 @@ msgstr "Picco"
msgid "Play"
msgstr "Riproduci"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr ""
@@ -771,7 +804,7 @@ msgstr ""
msgid "Please wait; audio is being analysed..."
msgstr "Attendere prego; sto analizzando l'audio..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Posizione"
@@ -799,8 +832,8 @@ msgstr "Rc"
msgid "Red band"
msgstr ""
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Rimuovi"
@@ -824,7 +857,7 @@ msgstr "Ripeti il contenuto"
msgid "Repeat..."
msgstr ""
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr ""
@@ -832,7 +865,7 @@ msgstr ""
msgid "Resolution"
msgstr "Risoluzione"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr ""
@@ -852,11 +885,6 @@ msgstr "Rs"
msgid "SMPTE"
msgstr ""
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Scaler"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
msgstr "Scala a"
@@ -875,7 +903,7 @@ msgstr "Scaler"
msgid "Screens"
msgstr "Aggiungi Schermo"
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
#, fuzzy
msgid "Select CPL XML file"
msgstr "Seleziona file audio"
@@ -884,7 +912,7 @@ msgstr "Seleziona file audio"
msgid "Select Certificate File"
msgstr "Seleziona il file del Certificato"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Manda per email"
@@ -900,20 +928,20 @@ msgstr "Server"
msgid "Server manufacturer"
msgstr ""
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr ""
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
#, fuzzy
msgid "Servers"
msgstr "Server"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr ""
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
msgstr "Seleziona la lingua"
@@ -941,7 +969,7 @@ msgstr "Versione stabile"
msgid "Standard"
msgstr ""
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
#, fuzzy
msgid "Stream"
msgstr "Traccia"
@@ -950,6 +978,10 @@ msgstr "Traccia"
msgid "Studio (e.g. TCF)"
msgstr "Studio (es. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Lingua dei Sottotitoli (es. FR)"
@@ -958,7 +990,7 @@ msgstr "Lingua dei Sottotitoli (es. FR)"
msgid "Subtitles"
msgstr "Sottotitoli"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr ""
@@ -966,7 +998,7 @@ msgstr ""
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
#, fuzzy
msgid "Target path"
msgstr "Percorso di destinazione del TMS"
@@ -984,7 +1016,7 @@ msgstr "Nazione (es. UK)"
msgid "Test version "
msgstr "Versione di test"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr ""
@@ -997,7 +1029,7 @@ msgstr ""
"Il/i file sorgenteo che hai specificato sono diversi da quelli mancanti. "
"Riprova oppure rimuovi la sorgente mancante."
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "Non ci sono suggerimenti: sembra tutto a posto!"
@@ -1005,7 +1037,7 @@ msgstr "Non ci sono suggerimenti: sembra tutto a posto!"
msgid "There is not enough free memory to do that."
msgstr ""
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
msgstr ""
@@ -1013,7 +1045,7 @@ msgstr ""
msgid "Threads"
msgstr "Threads"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "Threads da usare per codificare su questo host"
@@ -1025,11 +1057,11 @@ msgstr "Tempo"
msgid "Timeline"
msgstr "Timeline"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr ""
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
msgid "Timing|Timing"
msgstr ""
@@ -1037,15 +1069,15 @@ msgstr ""
msgid "Top crop"
msgstr "Taglio in alto"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr ""
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
msgstr "Taglia dalla fine"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
msgstr "Taglia dall'inizio"
@@ -1053,7 +1085,7 @@ msgstr "Taglia dall'inizio"
msgid "Type"
msgstr "Tipo"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
#, fuzzy
msgid "Unexpected certificate filename form"
msgstr "Seleziona il file del Certificato"
@@ -1067,7 +1099,7 @@ msgstr "sconosciuto"
msgid "Until"
msgstr "Fino a"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Su"
@@ -1075,12 +1107,12 @@ msgstr "Su"
msgid "Update"
msgstr "Aggiorna"
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
#, fuzzy
msgid "Use ISDCF name"
msgstr "Usa nome DCI"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
msgstr "Usa tutti i server"
@@ -1092,7 +1124,7 @@ msgstr "Usa la migliore"
msgid "Use preset"
msgstr "Usa predefinito"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Nome utente"
@@ -1104,11 +1136,11 @@ msgstr "VI"
msgid "Video"
msgstr "Video"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "Frequenza fotogrammi video"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
msgstr ""
@@ -1116,7 +1148,7 @@ msgstr ""
msgid "With Subtitles"
msgstr "Con sottotitoli"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr ""
@@ -1128,11 +1160,21 @@ msgstr ""
msgid "X Offset"
msgstr "Spostamento X"
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Scaler"
+
#: src/wx/subtitle_panel.cc:53
msgid "Y Offset"
msgstr "Spostamento Y"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Scaler"
+
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1141,7 +1183,7 @@ msgstr ""
"Ci sono %d file che sembrano essere DVD VOB. Dovresti unirli per assicurare "
"una giunta senza interruzioni tra i file."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1151,7 +1193,7 @@ msgstr ""
"problemi in alcuni (per lo più vecchi) proiettori. Usa 24 o 48 frame al "
"secondo se vuoi esssere sicuro."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
@@ -1159,7 +1201,7 @@ msgstr ""
"Il vostro DCP ha un numero dispari di canali audio. Questo può causare "
"problemi durante la riproduzione."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1185,11 +1227,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1206,6 +1248,10 @@ msgstr ""
msgid "video"
msgstr "Video"
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Contenitore predefinito"
+
#~ msgid "Audio Gain"
#~ msgstr "Guadagno dell'audio"
diff --git a/src/wx/po/nl_NL.po b/src/wx/po/nl_NL.po
index b33e4a748..3df5b839d 100644
--- a/src/wx/po/nl_NL.po
+++ b/src/wx/po/nl_NL.po
@@ -7,19 +7,19 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
-"PO-Revision-Date: 2014-03-30 19:40+0100\n"
-"Last-Translator: Theo Kooijmans <tkooijmans@universaldv.nl>\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
+"PO-Revision-Date: 2014-09-04 20:17+0100\n"
+"Last-Translator: Cherif Ben Brahim <firehc@mac.com>\n"
"Language-Team: UniversalDV <TKooijmans@universaldv.nl>\n"
"Language: nl_NL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.4\n"
+"X-Generator: Poedit 1.6.9\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -29,17 +29,17 @@ msgid ""
msgstr ""
"(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr "(wachtwoord wordt opgeslagen op disk in leesbare tekst)"
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(herstart DCP-o-matic voor taal wijziging)"
#: src/wx/audio_mapping_view.cc:134
msgid "-6dB"
-msgstr ""
+msgstr "-6dB"
#: src/wx/colour_conversion_editor.cc:83
msgid "1 / "
@@ -54,9 +54,8 @@ msgid "2D"
msgstr "2D"
#: src/wx/isdcf_metadata_dialog.cc:68
-#, fuzzy
msgid "2D version of content available in 3D"
-msgstr "Er zijn nieuwe versies van DCP -o- matic beschikbaar."
+msgstr "2D versie van 3D content beschikbaar"
#: src/wx/film_editor.cc:224
msgid "2K"
@@ -72,16 +71,15 @@ msgstr "3D alternate"
#: src/wx/video_panel.cc:201
msgid "3D left only"
-msgstr ""
+msgstr "3D enkel Links"
#: src/wx/video_panel.cc:198
msgid "3D left/right"
msgstr "3D links/rechts"
#: src/wx/video_panel.cc:202
-#, fuzzy
msgid "3D right only"
-msgstr "3D links/rechts"
+msgstr "3D enkel rechts"
#: src/wx/video_panel.cc:199
msgid "3D top/bottom"
@@ -107,11 +105,11 @@ msgstr "Voeg Bioscoop toe..."
msgid "Add Screen..."
msgstr "Voeg Scherm toe..."
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Voeg bestande(n) toe..."
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Voeg map toe..."
@@ -119,12 +117,35 @@ msgstr "Voeg map toe..."
msgid "Add..."
msgstr "Toevoegen.."
-#: src/wx/config_dialog.cc:780
-#, fuzzy
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+"All uw bronbestanden zijn 1.85:1 of smaller maar Uw doel DCP's container is "
+"Scope (2.39:1). Dit heeft als gevolg dat er zwarte balken links en rechts "
+"van het beeld zullen komen. U kan best de DCP's container instellen in Flat "
+"(1.85:1) in de \"DCP\"tab."
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+"All uw bronbestanden zijn Scope (2.39:1) maar Uw doel DCP's container is "
+"Flat (1.85:1). Dit heeft als gevolg dat er zwarte balken onder en boven het "
+"beeld zullen komen. U kan best de DCP's container instellen in Scope "
+"(2.39:1) in de \"DCP\"tab."
+
+#: src/wx/config_dialog.cc:799
msgid "Allow any DCP frame rate"
-msgstr "Video frame rate"
+msgstr "Sta om het welke frame rate toe in DCP"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr "Artwork door"
@@ -157,7 +178,11 @@ msgstr ""
"Audio wordt doorgestuurd van content kanaal %d naar DCP kanaal %d met gain "
"%1fdB."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+msgid "BCC address"
+msgstr "BCC adres"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
msgstr "Verkeede instellingen voor %s (%s)"
@@ -186,29 +211,27 @@ msgstr "Maak ik gebruik een fader"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
-#, fuzzy
+#: src/wx/config_dialog.cc:679
msgid "CC address"
-msgstr "IP adres"
+msgstr "CC adres"
#: src/wx/kdm_dialog.cc:125 src/wx/kdm_dialog.cc:131
-#, fuzzy
msgid "CPL"
-msgstr "DCP"
+msgstr "CPL"
#: src/wx/kdm_dialog.cc:143
msgid "CPL ID"
-msgstr ""
+msgstr "CPL ID"
#: src/wx/kdm_dialog.cc:146
msgid "CPL annotation text"
-msgstr ""
+msgstr "CPL opmerkingen tekst"
#: src/wx/audio_panel.cc:63
msgid "Calculate..."
msgstr "Bereken..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Afbreken"
@@ -216,15 +239,14 @@ msgstr "Afbreken"
msgid "Certificate"
msgstr "certificaat"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
-#, fuzzy
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
msgid "Certificate downloaded"
-msgstr "certificaat"
+msgstr "Certificaat gedownload"
#: src/wx/isdcf_metadata_dialog.cc:65
msgid "Chain"
-msgstr ""
+msgstr "Ketting"
#: src/wx/audio_gain_dialog.cc:26
msgid "Channel gain"
@@ -234,11 +256,11 @@ msgstr "Kanaal versterking"
msgid "Channels"
msgstr "Kanalen"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "Selecteer voor Test updates en Stabiele versies "
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Selecteer voor updates controle bij startup"
@@ -246,11 +268,11 @@ msgstr "Selecteer voor updates controle bij startup"
msgid "Choose a file"
msgstr "Kies een bestand"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Kies bestand(en)"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Kies map"
@@ -258,7 +280,7 @@ msgstr "Kies map"
msgid "Cinema"
msgstr "Bioscoop"
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
msgid "Colour Conversions"
msgstr "Colour Conversions"
@@ -267,10 +289,9 @@ msgstr "Colour Conversions"
msgid "Colour conversion"
msgstr "Colour conversion"
-#: src/wx/config_dialog.cc:793
-#, fuzzy
+#: src/wx/config_dialog.cc:819
msgid "Config|Timing"
-msgstr "Timing"
+msgstr "Configureer|Timing"
#: src/wx/film_editor.cc:134
msgid "Container"
@@ -298,6 +319,10 @@ msgstr "Content versie"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "Content video is %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr "Kopieer..."
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "Kan audio niet analyseren"
@@ -307,15 +332,15 @@ msgstr "Kan audio niet analyseren"
msgid "Could not decode video for view (%s)"
msgstr "Kan video niet decoderen voor preview (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "Kan geen DCP maken: %s"
#: src/wx/screen_dialog.cc:95
-#, fuzzy, c-format
+#, c-format
msgid "Could not read certificate file (%s)"
-msgstr "Kan video niet decoderen voor preview (%s)"
+msgstr "Onleesbaar certificaat (%s)"
#: src/wx/dolby_certificate_dialog.cc:39
msgid "Country"
@@ -338,13 +363,13 @@ msgstr "aangepast"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "DCP naam"
#: src/wx/kdm_dialog.cc:140
msgid "DCP directory"
-msgstr ""
+msgstr "DCP map"
#: src/wx/about_dialog.cc:45 src/wx/wx_util.cc:87 src/wx/wx_util.cc:95
msgid "DCP-o-matic"
@@ -355,53 +380,51 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "DCP-o-matic audio - %s"
-#: src/wx/config_dialog.cc:266
-#, fuzzy
+#: src/wx/config_dialog.cc:270
msgid "Default ISDCF name details"
-msgstr "Standaard DCI naam details"
+msgstr "Standaard ISDCF naam details"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
msgid "Default JPEG2000 bandwidth"
msgstr "Standaard JPEG2000 bandbreedte"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
msgstr "Standaard audio delay"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Standaard container"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Standaard content type"
-#: src/wx/config_dialog.cc:300
-msgid "Default creator"
-msgstr "Standaard maker"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Standaard map voor nieuwe films"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Standaard lengte van stills"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
msgid "Default issuer"
msgstr "Standaard uitgever"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr "Standaard schaal naar"
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Standaard instellingen"
#: src/wx/audio_panel.cc:67
-#, fuzzy
msgid "Delay"
-msgstr "Audio Delay"
+msgstr "Vertraging"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Details..."
@@ -419,11 +442,11 @@ msgstr "Dolby"
msgid "Doremi"
msgstr "Doremi"
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr "Doremi serial numbers moeten bestaan uit 6 digits"
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr "Naar beneden"
@@ -435,8 +458,8 @@ msgstr "Download"
msgid "Download certificate"
msgstr "Download certificaat"
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr "Downloading certificaat"
@@ -448,9 +471,9 @@ msgstr "Edit Bioscoop"
msgid "Edit Screen..."
msgstr "Edit scherm"
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Edit..."
@@ -466,16 +489,17 @@ msgstr "Encoding Servers"
msgid "Encrypted"
msgstr "Encrypted"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
-msgstr ""
+msgstr "Fouten"
#: src/wx/isdcf_metadata_dialog.cc:50
msgid "Facility (e.g. DLA)"
msgstr "faciliteit (e.g. DLA)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
msgid "Fetching..."
msgstr "Ophalen..."
@@ -515,22 +539,21 @@ msgstr "Gratis, open-source DCP samensteller voor bijna alles."
msgid "From"
msgstr "Van"
-#: src/wx/config_dialog.cc:673
-#, fuzzy
+#: src/wx/config_dialog.cc:675
msgid "From address"
-msgstr "IP adres"
+msgstr "Van adres"
#: src/wx/audio_mapping_view.cc:133
msgid "Full"
msgstr "Volledig"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Volledige lengte"
#: src/wx/audio_panel.cc:52
msgid "Gain"
-msgstr ""
+msgstr "Versterking"
#: src/wx/gain_calculator_dialog.cc:27
msgid "Gain Calculator"
@@ -545,15 +568,15 @@ msgstr "Gain voor content kanaal %d in DCP kanaal %d"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
-msgstr ""
+msgstr "Algemeen"
#: src/wx/audio_mapping_view.cc:301
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Tips"
@@ -573,18 +596,17 @@ msgstr "Hz"
msgid "I want to play this back at fader"
msgstr "Ik wil dit afspelen met fader"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "IP adres"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
msgid "IP address / host name"
msgstr "IP adres / host naam"
#: src/wx/isdcf_metadata_dialog.cc:30
-#, fuzzy
msgid "ISDCF name"
-msgstr "DCI naam"
+msgstr "ISDCF naam"
#: src/wx/colour_conversion_editor.cc:44
msgid "Input gamma"
@@ -602,16 +624,19 @@ msgstr "JPEG2000 bandbreedte"
msgid "Join"
msgstr "Samenvoegen"
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
msgid "KDM Email"
msgstr "KDM Email"
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr "soort KDM"
+
#: src/wx/kdm_dialog.cc:99
-#, fuzzy
msgid "KDM|Timing"
-msgstr "Timing"
+msgstr "KDM|Timing"
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
msgstr "Behoud video in tijdlijn"
@@ -639,23 +664,27 @@ msgstr "Linearise input gamma curve for low values"
msgid "Load from file..."
msgstr "Laad van bestand..."
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
+msgstr "Log"
+
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
msgstr ""
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "Ls"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "ONTBREEKT:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
msgid "Mail password"
msgstr "Mail wachtwoord"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
msgid "Mail user name"
msgstr "Mail gebruikersnaam"
@@ -665,17 +694,17 @@ msgstr "Maak KDM's"
#: src/wx/isdcf_metadata_dialog.cc:71
msgid "Mastered luminance (e.g. 4fl)"
-msgstr ""
+msgstr "Gemasterde helderheid (bv. 4fl)"
#: src/wx/colour_conversion_editor.cc:67
msgid "Matrix"
msgstr "Matrix"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
msgid "Maximum JPEG2000 bandwidth"
msgstr "Maximum JPEG2000 bandbreedte"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr "Mbit/s"
@@ -721,14 +750,13 @@ msgstr "Uit"
msgid "Other"
msgstr "Andere"
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Uitgaande mail server"
#: src/wx/kdm_dialog.cc:156
-#, fuzzy
msgid "Output"
-msgstr "Output gamma"
+msgstr "Output"
#: src/wx/colour_conversion_editor.cc:78
msgid "Output gamma"
@@ -743,11 +771,11 @@ msgstr "Package Type (e.g. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Opgevuld met zwart tot %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
msgid "Password"
msgstr "Wachtwoord"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pauze"
@@ -759,7 +787,7 @@ msgstr "Piek"
msgid "Play"
msgstr "Afspelen"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr "Afspeellengte"
@@ -767,13 +795,13 @@ msgstr "Afspeellengte"
msgid "Please wait; audio is being analysed..."
msgstr "Een ogenblik geduld, het audio wordt geanalyseerd..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Positie"
#: src/wx/isdcf_metadata_dialog.cc:59
msgid "Pre-release"
-msgstr ""
+msgstr "Voor-uitgave"
#: src/wx/audio_mapping_view.cc:281
msgid "R"
@@ -793,10 +821,10 @@ msgstr "Rc"
#: src/wx/isdcf_metadata_dialog.cc:62
msgid "Red band"
-msgstr ""
+msgstr "Rode tape"
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Verwijder"
@@ -820,15 +848,15 @@ msgstr "Herhaal content"
msgid "Repeat..."
msgstr "Herhaal..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
-msgstr ""
+msgstr "Herinstellen oorspronkelijke tekst"
#: src/wx/film_editor.cc:175
msgid "Resolution"
msgstr "Resolutie"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Vervolg"
@@ -848,11 +876,6 @@ msgstr "Rs"
msgid "SMPTE"
msgstr "SMPTE"
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Schaler"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
msgstr "Schaal tot"
@@ -867,19 +890,18 @@ msgid "Scaler"
msgstr "Schaler"
#: src/wx/kdm_dialog.cc:60
-#, fuzzy
msgid "Screens"
-msgstr "Voeg Scherm toe..."
+msgstr "Schermen"
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
msgid "Select CPL XML file"
-msgstr ""
+msgstr "Selekteer CPL XML bestand"
#: src/wx/screen_dialog.cc:102
msgid "Select Certificate File"
msgstr "Selecteer Certificaat bestand"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Stuur per Email"
@@ -892,23 +914,22 @@ msgid "Server"
msgstr "Server"
#: src/wx/screen_dialog.cc:41
-#, fuzzy
msgid "Server manufacturer"
-msgstr "Server serie nummer"
+msgstr "Server fabrikant"
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr "Server serie nummer"
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
msgid "Servers"
msgstr "Servers"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr "Instellen"
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
msgstr "Taal Instellen"
@@ -936,15 +957,18 @@ msgstr "Stabiele versie"
msgid "Standard"
msgstr "Standaard"
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
-#, fuzzy
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
msgid "Stream"
-msgstr "Audio Stream"
+msgstr "Stroom"
#: src/wx/isdcf_metadata_dialog.cc:47
msgid "Studio (e.g. TCF)"
msgstr "Studio (e.g. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr "Onderwerp"
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Ondertitel Taal (vb NL)"
@@ -953,7 +977,7 @@ msgstr "Ondertitel Taal (vb NL)"
msgid "Subtitles"
msgstr "Ondertitels"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Ondersteund door"
@@ -961,14 +985,13 @@ msgstr "Ondersteund door"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
msgstr "Doel pad"
#: src/wx/isdcf_metadata_dialog.cc:56
-#, fuzzy
msgid "Temp version"
-msgstr "Test Versie"
+msgstr "Tijdelijke Versie"
#: src/wx/isdcf_metadata_dialog.cc:41
msgid "Territory (e.g. UK)"
@@ -978,7 +1001,7 @@ msgstr "Grondgebied (vb NL)"
msgid "Test version "
msgstr "Test Versie"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
msgid "Tested by"
msgstr "Getest door"
@@ -992,7 +1015,7 @@ msgstr ""
"ontbrekende bestanden. Probeer opnieuw met de goede content of verwijder de "
"ontbrekende content. "
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "Er zijn geen tips, alles lijkt goed!"
@@ -1000,15 +1023,15 @@ msgstr "Er zijn geen tips, alles lijkt goed!"
msgid "There is not enough free memory to do that."
msgstr "Er is niet genoeg geheugen om dat te doen."
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
-msgstr ""
+msgstr "Dit is geen geldig CPL bestand"
#: src/wx/servers_list_dialog.cc:48
msgid "Threads"
msgstr "CPU belasting"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "CPU cores beschikbaar voor encoding op deze host"
@@ -1020,28 +1043,27 @@ msgstr "Tijd"
msgid "Timeline"
msgstr "Tijdlijn"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr "Tijdlijn..."
-#: src/wx/timing_panel.cc:35
-#, fuzzy
+#: src/wx/timing_panel.cc:37
msgid "Timing|Timing"
-msgstr "Timing"
+msgstr "Timing|Timing"
#: src/wx/video_panel.cc:110
msgid "Top crop"
msgstr "Top crop"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr "Vertaald door"
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
msgstr "Trim vanaf einde"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
msgstr "Trim vanaf begin"
@@ -1049,7 +1071,7 @@ msgstr "Trim vanaf begin"
msgid "Type"
msgstr "Type"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
msgid "Unexpected certificate filename form"
msgstr "Onverwachte certificaat bestandsnaam vorm"
@@ -1061,7 +1083,7 @@ msgstr "Onbekend"
msgid "Until"
msgstr "Totdat"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Omhoog"
@@ -1069,12 +1091,11 @@ msgstr "Omhoog"
msgid "Update"
msgstr "Update"
-#: src/wx/film_editor.cc:128
-#, fuzzy
+#: src/wx/film_editor.cc:123
msgid "Use ISDCF name"
-msgstr "Gebruik DCI naam"
+msgstr "Gebruik ISDCF naam"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
msgstr "Gebruik alle servers"
@@ -1086,7 +1107,7 @@ msgstr "Gebruik de beste"
msgid "Use preset"
msgstr "Gebruik preset"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Gebruikersnaam"
@@ -1098,19 +1119,19 @@ msgstr "VI"
msgid "Video"
msgstr "Video"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "Video frame rate"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
-msgstr ""
+msgstr "Waarschuwingen"
#: src/wx/subtitle_panel.cc:39
msgid "With Subtitles"
msgstr "Met ondertiteling"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Schrijf naar"
@@ -1122,11 +1143,21 @@ msgstr "Geschreven door"
msgid "X Offset"
msgstr "X offset"
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Schaal"
+
#: src/wx/subtitle_panel.cc:53
msgid "Y Offset"
msgstr "Y offset"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Schaal"
+
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1135,7 +1166,7 @@ msgstr ""
"U hebt %d bestanden die lijken op VOB bestanden van DVD. U moet deze "
"samenvoegen om soepele weergave mogelijk te maken."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1144,7 +1175,7 @@ msgstr ""
"Uw DCP frame rate (%d fps) kan mogelijk problemen veroorzaken met oudere "
"projectors. Gebruik 24 of 48 frames per seconde voor zekerheid."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
@@ -1152,7 +1183,7 @@ msgstr ""
"Uw DCP heeft een oneven aantal audio kanalen. Dit geeft hoogstwaarschijnlijk "
"problemen met weergave."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1177,11 +1208,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1197,6 +1228,9 @@ msgstr "tijden"
msgid "video"
msgstr "video"
+#~ msgid "Default creator"
+#~ msgstr "Standaard maker"
+
#~ msgid "Audio Gain"
#~ msgstr "Audio Gain"
diff --git a/src/wx/po/sv_SE.po b/src/wx/po/sv_SE.po
index 657fe847a..7a75403ab 100644
--- a/src/wx/po/sv_SE.po
+++ b/src/wx/po/sv_SE.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2014-06-24 14:53+0100\n"
+"POT-Creation-Date: 2014-10-03 22:31+0100\n"
"PO-Revision-Date: 2014-01-19 09:14+0100\n"
"Last-Translator: Adam Klotblixt <adam.klotblixt@gmail.com>\n"
"Language-Team: \n"
@@ -18,7 +18,7 @@ msgstr ""
"X-Generator: Poedit 1.6.3\n"
#: src/wx/subtitle_panel.cc:48 src/wx/subtitle_panel.cc:57
-#: src/wx/subtitle_panel.cc:66
+#: src/wx/subtitle_panel.cc:66 src/wx/subtitle_panel.cc:75
msgid "%"
msgstr "%"
@@ -28,11 +28,11 @@ msgid ""
msgstr ""
"(C) 2012-2014 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"
-#: src/wx/config_dialog.cc:666
+#: src/wx/config_dialog.cc:664
msgid "(password will be stored on disk in plaintext)"
msgstr "(lösenord sparas på disk i klartext)"
-#: src/wx/config_dialog.cc:98
+#: src/wx/config_dialog.cc:104
msgid "(restart DCP-o-matic to see language changes)"
msgstr "(starta om DCP-o-matic för att se språkändringar)"
@@ -106,11 +106,11 @@ msgstr "Lägg till Cinema..."
msgid "Add Screen..."
msgstr "Lägg till Skärm..."
-#: src/wx/film_editor.cc:279
+#: src/wx/film_editor.cc:280
msgid "Add file(s)..."
msgstr "Lägg till fil(er)..."
-#: src/wx/film_editor.cc:281
+#: src/wx/film_editor.cc:282
msgid "Add folder..."
msgstr "Lägg till folder..."
@@ -118,12 +118,28 @@ msgstr "Lägg till folder..."
msgid "Add..."
msgstr "Lägg till..."
-#: src/wx/config_dialog.cc:780
+#: src/wx/hints_dialog.cc:102
+msgid ""
+"All of your content is at 1.85:1 or narrower but your DCP's container is "
+"Scope (2.39:1). This will pillar-box your content inside a Flat (1.85:1) "
+"frame. You may prefer to set your DCP's container to Flat (1.85:1) in the "
+"\"DCP\" tab."
+msgstr ""
+
+#: src/wx/hints_dialog.cc:96
+msgid ""
+"All of your content is in Scope (2.39:1) but your DCP's container is Flat "
+"(1.85:1). This will letter-box your content inside a Flat (1.85:1) frame. "
+"You may prefer to set your DCP's container to Scope (2.39:1) in the \"DCP\" "
+"tab."
+msgstr ""
+
+#: src/wx/config_dialog.cc:799
#, fuzzy
msgid "Allow any DCP frame rate"
msgstr "bildhastighet"
-#: src/wx/about_dialog.cc:109
+#: src/wx/about_dialog.cc:111
msgid "Artwork by"
msgstr ""
@@ -156,7 +172,12 @@ msgstr ""
"Audio kommer att överföras från innehållskanal %d till DCP-kanal %d med "
"förstärkning %.1fdB."
-#: src/wx/job_wrapper.cc:38
+#: src/wx/config_dialog.cc:683
+#, fuzzy
+msgid "BCC address"
+msgstr "IP-adress"
+
+#: src/wx/job_wrapper.cc:37
#, c-format
msgid "Bad setting for %s (%s)"
msgstr "Felaktig inställning för %s (%s)"
@@ -185,7 +206,7 @@ msgstr "Men jag måste använda mixervolym"
msgid "C"
msgstr "C"
-#: src/wx/config_dialog.cc:677
+#: src/wx/config_dialog.cc:679
#, fuzzy
msgid "CC address"
msgstr "IP-adress"
@@ -207,7 +228,7 @@ msgstr ""
msgid "Calculate..."
msgstr "Beräkna..."
-#: src/wx/job_manager_view.cc:66
+#: src/wx/job_manager_view.cc:67
msgid "Cancel"
msgstr "Avbryt"
@@ -216,8 +237,8 @@ msgstr "Avbryt"
msgid "Certificate"
msgstr "Välj certifikatfil"
-#: src/wx/dolby_certificate_dialog.cc:157
-#: src/wx/doremi_certificate_dialog.cc:67
+#: src/wx/dolby_certificate_dialog.cc:191
+#: src/wx/doremi_certificate_dialog.cc:103
#, fuzzy
msgid "Certificate downloaded"
msgstr "Välj certifikatfil"
@@ -234,11 +255,11 @@ msgstr "Kanalförstärkning"
msgid "Channels"
msgstr "Kanaler"
-#: src/wx/config_dialog.cc:114
+#: src/wx/config_dialog.cc:120
msgid "Check for testing updates as well as stable ones"
msgstr "sök efter både test- och stabila uppdateringar"
-#: src/wx/config_dialog.cc:110
+#: src/wx/config_dialog.cc:116
msgid "Check for updates on startup"
msgstr "Sök efter uppdateringar vid start"
@@ -246,11 +267,11 @@ msgstr "Sök efter uppdateringar vid start"
msgid "Choose a file"
msgstr "Välj en fil"
-#: src/wx/film_editor.cc:788
+#: src/wx/film_editor.cc:810
msgid "Choose a file or files"
msgstr "Välj en fil eller filer"
-#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:811
+#: src/wx/content_menu.cc:175 src/wx/film_editor.cc:833
msgid "Choose a folder"
msgstr "Välj en folder"
@@ -259,7 +280,7 @@ msgstr "Välj en folder"
msgid "Cinema"
msgstr "Lägg till Cinema..."
-#: src/wx/config_dialog.cc:496
+#: src/wx/config_dialog.cc:498
#, fuzzy
msgid "Colour Conversions"
msgstr "Färgkonverteringar"
@@ -270,7 +291,7 @@ msgid "Colour conversion"
msgstr "Färgkonvertering"
# Svengelska
-#: src/wx/config_dialog.cc:793
+#: src/wx/config_dialog.cc:819
#, fuzzy
msgid "Config|Timing"
msgstr "Tajming"
@@ -301,6 +322,10 @@ msgstr "Innehållsversion"
msgid "Content video is %dx%d (%.2f:1)\n"
msgstr "Original-videon är %dx%d (%.2f:1)\n"
+#: src/wx/editable_list.h:64
+msgid "Copy..."
+msgstr ""
+
#: src/wx/audio_dialog.cc:151
msgid "Could not analyse audio."
msgstr "Kunde inte analysera audio."
@@ -310,7 +335,7 @@ msgstr "Kunde inte analysera audio."
msgid "Could not decode video for view (%s)"
msgstr "Kunde inte avkoda video för visning (%s)"
-#: src/wx/job_wrapper.cc:40
+#: src/wx/job_wrapper.cc:39
#, c-format
msgid "Could not make DCP: %s"
msgstr "Kunde inte skapa DCP: %s"
@@ -342,7 +367,7 @@ msgstr "Special"
msgid "DCP"
msgstr "DCP"
-#: src/wx/film_editor.cc:118
+#: src/wx/film_editor.cc:129
msgid "DCP Name"
msgstr "DCP-namn"
@@ -359,46 +384,45 @@ msgstr "DCP-o-matic"
msgid "DCP-o-matic audio - %s"
msgstr "DCP-o-matic audio - %s"
-#: src/wx/config_dialog.cc:266
+#: src/wx/config_dialog.cc:270
#, fuzzy
msgid "Default ISDCF name details"
msgstr "Detaljer om förvalda DCI-namn"
-#: src/wx/config_dialog.cc:279
+#: src/wx/config_dialog.cc:287
msgid "Default JPEG2000 bandwidth"
msgstr "Förvald JPEG2000-bandbredd"
-#: src/wx/config_dialog.cc:288
+#: src/wx/config_dialog.cc:296
msgid "Default audio delay"
msgstr "Förvald audiofördröjning"
-#: src/wx/config_dialog.cc:270
+#: src/wx/config_dialog.cc:278
msgid "Default container"
msgstr "Förvald innehållstyp"
-#: src/wx/config_dialog.cc:274
+#: src/wx/config_dialog.cc:282
msgid "Default content type"
msgstr "Förvald innehållstyp"
-#: src/wx/config_dialog.cc:300
-#, fuzzy
-msgid "Default creator"
-msgstr "Förvald innehållstyp"
-
-#: src/wx/config_dialog.cc:258
+#: src/wx/config_dialog.cc:262
msgid "Default directory for new films"
msgstr "Förvald katalog för nya filmer"
-#: src/wx/config_dialog.cc:250
+#: src/wx/config_dialog.cc:254
msgid "Default duration of still images"
msgstr "Förvald varaktighet på stillbilder"
-#: src/wx/config_dialog.cc:296
+#: src/wx/config_dialog.cc:304
#, fuzzy
msgid "Default issuer"
msgstr "Standardval"
-#: src/wx/config_dialog.cc:229
+#: src/wx/config_dialog.cc:274
+msgid "Default scale to"
+msgstr ""
+
+#: src/wx/config_dialog.cc:235
msgid "Defaults"
msgstr "Standardval"
@@ -407,7 +431,7 @@ msgstr "Standardval"
msgid "Delay"
msgstr "Audio Fördröjning"
-#: src/wx/film_editor.cc:130 src/wx/job_manager_view.cc:78
+#: src/wx/film_editor.cc:125 src/wx/job_manager_view.cc:79
msgid "Details..."
msgstr "Detaljer..."
@@ -425,11 +449,11 @@ msgstr ""
msgid "Doremi"
msgstr ""
-#: src/wx/doremi_certificate_dialog.cc:48
+#: src/wx/doremi_certificate_dialog.cc:50
msgid "Doremi serial numbers must have 6 digits"
msgstr ""
-#: src/wx/film_editor.cc:287
+#: src/wx/film_editor.cc:288
msgid "Down"
msgstr "Ner"
@@ -442,8 +466,8 @@ msgstr "Ner"
msgid "Download certificate"
msgstr ""
-#: src/wx/dolby_certificate_dialog.cc:132
-#: src/wx/doremi_certificate_dialog.cc:52
+#: src/wx/dolby_certificate_dialog.cc:157
+#: src/wx/doremi_certificate_dialog.cc:54
msgid "Downloading certificate"
msgstr ""
@@ -455,9 +479,9 @@ msgstr "Redigera Cinema..."
msgid "Edit Screen..."
msgstr "Redigera Skärm..."
-#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:267
+#: src/wx/audio_mapping_view.cc:135 src/wx/config_dialog.cc:271
#: src/wx/video_panel.cc:155 src/wx/video_panel.cc:172
-#: src/wx/editable_list.h:64
+#: src/wx/editable_list.h:66
msgid "Edit..."
msgstr "Redigera..."
@@ -473,7 +497,7 @@ msgstr "Kodningsservrar"
msgid "Encrypted"
msgstr "Krypterad"
-#: src/wx/config_dialog.cc:790
+#: src/wx/config_dialog.cc:817
msgid "Errors"
msgstr ""
@@ -481,8 +505,9 @@ msgstr ""
msgid "Facility (e.g. DLA)"
msgstr "Företag (ex. DLA)"
-#: src/wx/dolby_certificate_dialog.cc:76 src/wx/dolby_certificate_dialog.cc:91
-#: src/wx/dolby_certificate_dialog.cc:106
+#: src/wx/dolby_certificate_dialog.cc:76
+#: src/wx/dolby_certificate_dialog.cc:100
+#: src/wx/dolby_certificate_dialog.cc:123
#, fuzzy
msgid "Fetching..."
msgstr "räknar..."
@@ -524,7 +549,7 @@ msgstr "Fri, öppen-källkods DCP-generering från nästan vad som helst."
msgid "From"
msgstr "Avsändare"
-#: src/wx/config_dialog.cc:673
+#: src/wx/config_dialog.cc:675
#, fuzzy
msgid "From address"
msgstr "IP-adress"
@@ -533,7 +558,7 @@ msgstr "IP-adress"
msgid "Full"
msgstr "Full"
-#: src/wx/timing_panel.cc:43
+#: src/wx/timing_panel.cc:45
msgid "Full length"
msgstr "Full längd"
@@ -554,7 +579,7 @@ msgstr "Förstärkning för innehållskanal %d i DCP-kanal %d"
msgid "Gb"
msgstr "Gb"
-#: src/wx/config_dialog.cc:785
+#: src/wx/config_dialog.cc:813
msgid "General"
msgstr ""
@@ -562,7 +587,7 @@ msgstr ""
msgid "HI"
msgstr "HI"
-#: src/wx/hints_dialog.cc:26
+#: src/wx/hints_dialog.cc:30
msgid "Hints"
msgstr "Råd"
@@ -582,11 +607,11 @@ msgstr "Hz"
msgid "I want to play this back at fader"
msgstr "Jag vill spela upp detta med mixervolym"
-#: src/wx/config_dialog.cc:562
+#: src/wx/config_dialog.cc:560
msgid "IP address"
msgstr "IP-adress"
-#: src/wx/config_dialog.cc:454
+#: src/wx/config_dialog.cc:456
msgid "IP address / host name"
msgstr "IP-adress / datornamn"
@@ -611,11 +636,15 @@ msgstr "JPEG2000-bandbredd"
msgid "Join"
msgstr "Anslut"
-#: src/wx/config_dialog.cc:629
+#: src/wx/config_dialog.cc:627
#, fuzzy
msgid "KDM Email"
msgstr "KDM mejl"
+#: src/wx/kdm_dialog.cc:162
+msgid "KDM type"
+msgstr ""
+
# Svengelska
#: src/wx/kdm_dialog.cc:99
#, fuzzy
@@ -623,7 +652,7 @@ msgid "KDM|Timing"
msgstr "Tajming"
# "sekvens" eller "ordning"?
-#: src/wx/film_editor.cc:297
+#: src/wx/film_editor.cc:298
msgid "Keep video in sequence"
msgstr "Behåll video i sekvens"
@@ -651,23 +680,27 @@ msgstr "Linjärisera indatas gammakurva för låga värden"
msgid "Load from file..."
msgstr ""
-#: src/wx/config_dialog.cc:784
+#: src/wx/config_dialog.cc:807
msgid "Log"
msgstr ""
+#: src/wx/config_dialog.cc:804
+msgid "Log:"
+msgstr ""
+
#: src/wx/audio_mapping_view.cc:293
msgid "Ls"
msgstr "Vs"
-#: src/wx/film_editor.cc:762
+#: src/wx/film_editor.cc:784
msgid "MISSING: "
msgstr "SAKNAS:"
-#: src/wx/config_dialog.cc:662
+#: src/wx/config_dialog.cc:660
msgid "Mail password"
msgstr "Mejl-lösenord"
-#: src/wx/config_dialog.cc:658
+#: src/wx/config_dialog.cc:656
msgid "Mail user name"
msgstr "Mejl-användarnamn"
@@ -683,12 +716,12 @@ msgstr ""
msgid "Matrix"
msgstr "Matris"
-#: src/wx/config_dialog.cc:772
+#: src/wx/config_dialog.cc:791
#, fuzzy
msgid "Maximum JPEG2000 bandwidth"
msgstr "JPEG2000-bandbredd"
-#: src/wx/config_dialog.cc:283 src/wx/config_dialog.cc:776
+#: src/wx/config_dialog.cc:291 src/wx/config_dialog.cc:795
#: src/wx/film_editor.cc:185
msgid "Mbit/s"
msgstr ""
@@ -735,7 +768,7 @@ msgstr "Av"
msgid "Other"
msgstr ""
-#: src/wx/config_dialog.cc:654
+#: src/wx/config_dialog.cc:652
msgid "Outgoing mail server"
msgstr "Utgående mejlserver"
@@ -757,11 +790,11 @@ msgstr "Förpackningstyp (ex. OV)"
msgid "Padded with black to %dx%d (%.2f:1)\n"
msgstr "Svarta kanter tillagda för %dx%d (%.2f:1)\n"
-#: src/wx/config_dialog.cc:574
+#: src/wx/config_dialog.cc:572
msgid "Password"
msgstr "Lösenord"
-#: src/wx/job_manager_view.cc:72 src/wx/job_manager_view.cc:164
+#: src/wx/job_manager_view.cc:73 src/wx/job_manager_view.cc:165
msgid "Pause"
msgstr "Pausa"
@@ -773,7 +806,7 @@ msgstr "Topp"
msgid "Play"
msgstr "Spela"
-#: src/wx/timing_panel.cc:52
+#: src/wx/timing_panel.cc:54
msgid "Play length"
msgstr "Spellängd"
@@ -781,7 +814,7 @@ msgstr "Spellängd"
msgid "Please wait; audio is being analysed..."
msgstr "Vänligen vänta; audio analyseras..."
-#: src/wx/timing_panel.cc:40
+#: src/wx/timing_panel.cc:42
msgid "Position"
msgstr "Position"
@@ -809,8 +842,8 @@ msgstr "Hc"
msgid "Red band"
msgstr ""
-#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:283
-#: src/wx/editable_list.h:66
+#: src/wx/content_menu.cc:54 src/wx/film_editor.cc:284
+#: src/wx/editable_list.h:68
msgid "Remove"
msgstr "Ta bort"
@@ -835,7 +868,7 @@ msgstr "Repetera Innehåll"
msgid "Repeat..."
msgstr "Upprepa..."
-#: src/wx/config_dialog.cc:684
+#: src/wx/config_dialog.cc:690
msgid "Reset to default text"
msgstr ""
@@ -843,7 +876,7 @@ msgstr ""
msgid "Resolution"
msgstr "Upplösning"
-#: src/wx/job_manager_view.cc:167
+#: src/wx/job_manager_view.cc:168
msgid "Resume"
msgstr "Fortsätt"
@@ -863,11 +896,6 @@ msgstr "Hs"
msgid "SMPTE"
msgstr "SMPTE"
-#: src/wx/subtitle_panel.cc:62
-#, fuzzy
-msgid "Scale"
-msgstr "Omskalare"
-
#: src/wx/video_panel.cc:132
msgid "Scale to"
msgstr "Skala om till"
@@ -886,7 +914,7 @@ msgstr "Omskalare"
msgid "Screens"
msgstr "Lägg till Skärm..."
-#: src/wx/kdm_dialog.cc:515
+#: src/wx/kdm_dialog.cc:531
#, fuzzy
msgid "Select CPL XML file"
msgstr "Välj audiofil"
@@ -895,7 +923,7 @@ msgstr "Välj audiofil"
msgid "Select Certificate File"
msgstr "Välj certifikatfil"
-#: src/wx/kdm_dialog.cc:175
+#: src/wx/kdm_dialog.cc:185
msgid "Send by email"
msgstr "Skicka med mejl"
@@ -911,20 +939,20 @@ msgstr "Server"
msgid "Server manufacturer"
msgstr ""
-#: src/wx/doremi_certificate_dialog.cc:35
+#: src/wx/doremi_certificate_dialog.cc:37
msgid "Server serial number"
msgstr ""
-#: src/wx/config_dialog.cc:434
+#: src/wx/config_dialog.cc:438
#, fuzzy
msgid "Servers"
msgstr "Server"
-#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:61
+#: src/wx/timecode.cc:65 src/wx/timing_panel.cc:63
msgid "Set"
msgstr "Sätt"
-#: src/wx/config_dialog.cc:86
+#: src/wx/config_dialog.cc:92
msgid "Set language"
msgstr "Välj språk"
@@ -953,7 +981,7 @@ msgstr "Stabil version"
msgid "Standard"
msgstr "Standard"
-#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:70
+#: src/wx/audio_panel.cc:81 src/wx/subtitle_panel.cc:79
#, fuzzy
msgid "Stream"
msgstr "Audioström"
@@ -962,6 +990,10 @@ msgstr "Audioström"
msgid "Studio (e.g. TCF)"
msgstr "Studio (ex. TCF)"
+#: src/wx/config_dialog.cc:671
+msgid "Subject"
+msgstr ""
+
#: src/wx/isdcf_metadata_dialog.cc:38
msgid "Subtitle Language (e.g. FR)"
msgstr "Undertextspråk (ex. SV)"
@@ -970,7 +1002,7 @@ msgstr "Undertextspråk (ex. SV)"
msgid "Subtitles"
msgstr "Undertexter"
-#: src/wx/about_dialog.cc:153
+#: src/wx/about_dialog.cc:164
msgid "Supported by"
msgstr "Stöd från"
@@ -978,7 +1010,7 @@ msgstr "Stöd från"
msgid "TMS"
msgstr "TMS"
-#: src/wx/config_dialog.cc:566
+#: src/wx/config_dialog.cc:564
msgid "Target path"
msgstr "Målsökväg"
@@ -995,7 +1027,7 @@ msgstr "Område (ex. SV)"
msgid "Test version "
msgstr "Testversion"
-#: src/wx/about_dialog.cc:198
+#: src/wx/about_dialog.cc:209
#, fuzzy
msgid "Tested by"
msgstr "Översatt av"
@@ -1009,7 +1041,7 @@ msgstr ""
"Innehållsfilerna du angav är inte samma som de som saknas. Försök igen med "
"rätt innehållsfiler eller ta bort det saknade innehållet."
-#: src/wx/hints_dialog.cc:97
+#: src/wx/hints_dialog.cc:128
msgid "There are no hints: everything looks good!"
msgstr "Det finns inga råd: allt verkar bra!"
@@ -1017,7 +1049,7 @@ msgstr "Det finns inga råd: allt verkar bra!"
msgid "There is not enough free memory to do that."
msgstr ""
-#: src/wx/kdm_dialog.cc:537
+#: src/wx/kdm_dialog.cc:553
msgid "This is not a valid CPL file"
msgstr ""
@@ -1025,7 +1057,7 @@ msgstr ""
msgid "Threads"
msgstr "Trådar"
-#: src/wx/config_dialog.cc:105
+#: src/wx/config_dialog.cc:111
msgid "Threads to use for encoding on this host"
msgstr "Antal trådar att använda vid kodning på denna maskin"
@@ -1037,12 +1069,12 @@ msgstr "Tid"
msgid "Timeline"
msgstr "Tidslinje"
-#: src/wx/film_editor.cc:289
+#: src/wx/film_editor.cc:290
msgid "Timeline..."
msgstr "Tidslinje..."
# Svengelska
-#: src/wx/timing_panel.cc:35
+#: src/wx/timing_panel.cc:37
#, fuzzy
msgid "Timing|Timing"
msgstr "Tajming"
@@ -1051,15 +1083,15 @@ msgstr "Tajming"
msgid "Top crop"
msgstr "Övre beskärning"
-#: src/wx/about_dialog.cc:105
+#: src/wx/about_dialog.cc:107
msgid "Translated by"
msgstr "Översatt av"
-#: src/wx/timing_panel.cc:49
+#: src/wx/timing_panel.cc:51
msgid "Trim from end"
msgstr "Trimma från slut"
-#: src/wx/timing_panel.cc:46
+#: src/wx/timing_panel.cc:48
msgid "Trim from start"
msgstr "Trimma från start"
@@ -1067,7 +1099,7 @@ msgstr "Trimma från start"
msgid "Type"
msgstr "Typ"
-#: src/wx/dolby_certificate_dialog.cc:148
+#: src/wx/dolby_certificate_dialog.cc:182
#, fuzzy
msgid "Unexpected certificate filename form"
msgstr "Välj certifikatfil"
@@ -1082,7 +1114,7 @@ msgstr "okänt"
msgid "Until"
msgstr "Tills"
-#: src/wx/film_editor.cc:285
+#: src/wx/film_editor.cc:286
msgid "Up"
msgstr "Upp"
@@ -1090,12 +1122,12 @@ msgstr "Upp"
msgid "Update"
msgstr "Uppdatera"
-#: src/wx/film_editor.cc:128
+#: src/wx/film_editor.cc:123
#, fuzzy
msgid "Use ISDCF name"
msgstr "Använd DCI-namnet"
-#: src/wx/config_dialog.cc:450
+#: src/wx/config_dialog.cc:452
msgid "Use all servers"
msgstr "Använd alla servrar"
@@ -1107,7 +1139,7 @@ msgstr "Använd bästa"
msgid "Use preset"
msgstr "Använd förhandsinställning"
-#: src/wx/config_dialog.cc:570
+#: src/wx/config_dialog.cc:568
msgid "User name"
msgstr "Användarnamn"
@@ -1119,11 +1151,11 @@ msgstr "VI"
msgid "Video"
msgstr "Video"
-#: src/wx/timing_panel.cc:57
+#: src/wx/timing_panel.cc:59
msgid "Video frame rate"
msgstr "bildhastighet"
-#: src/wx/config_dialog.cc:787
+#: src/wx/config_dialog.cc:815
msgid "Warnings"
msgstr ""
@@ -1131,7 +1163,7 @@ msgstr ""
msgid "With Subtitles"
msgstr "Med Undertexter"
-#: src/wx/kdm_dialog.cc:162
+#: src/wx/kdm_dialog.cc:172
msgid "Write to"
msgstr "Skriv till"
@@ -1144,12 +1176,22 @@ msgstr "Skriven av"
msgid "X Offset"
msgstr "Undertext Förskjutning"
+#: src/wx/subtitle_panel.cc:62
+#, fuzzy
+msgid "X Scale"
+msgstr "Omskalare"
+
#: src/wx/subtitle_panel.cc:53
#, fuzzy
msgid "Y Offset"
msgstr "Undertext Förskjutning"
-#: src/wx/hints_dialog.cc:90
+#: src/wx/subtitle_panel.cc:71
+#, fuzzy
+msgid "Y Scale"
+msgstr "Omskalare"
+
+#: src/wx/hints_dialog.cc:121
#, c-format
msgid ""
"You have %d files that look like they are VOB files from DVD. You should "
@@ -1158,7 +1200,7 @@ msgstr ""
"Du har %d filer som verkar vara VOB-filer från DVD. Du borde sammanfoga dom "
"för att säkerställa jämna övergångar mellan filerna."
-#: src/wx/hints_dialog.cc:76
+#: src/wx/hints_dialog.cc:108
#, c-format
msgid ""
"Your DCP frame rate (%d fps) may cause problems in a few (mostly older) "
@@ -1167,7 +1209,7 @@ msgstr ""
"Din DCP-bildhastighet (%d bps) kan orsaka problem i några få (äldre) "
"projektorer. Använd 24 eller 48 bilder per sekund för att vara säker."
-#: src/wx/hints_dialog.cc:66
+#: src/wx/hints_dialog.cc:71
msgid ""
"Your DCP has an odd number of audio channels. This is very likely to cause "
"problems on playback."
@@ -1175,7 +1217,7 @@ msgstr ""
"Din DCP har udda antal audiokanaler. Detta kommer troligen att ge problem "
"vid uppspelning."
-#: src/wx/hints_dialog.cc:70
+#: src/wx/hints_dialog.cc:75
msgid ""
"Your DCP has fewer than 6 audio channels. This may cause problems on some "
"projectors."
@@ -1200,11 +1242,11 @@ msgid "dB"
msgstr "dB"
#. / TRANSLATORS: this is an abbreviation for milliseconds, the unit of time
-#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:292
+#: src/wx/audio_panel.cc:78 src/wx/config_dialog.cc:300
msgid "ms"
msgstr "ms"
-#: src/wx/config_dialog.cc:254
+#: src/wx/config_dialog.cc:258
msgid "s"
msgstr "s"
@@ -1221,6 +1263,10 @@ msgstr "tider"
msgid "video"
msgstr "video"
+#, fuzzy
+#~ msgid "Default creator"
+#~ msgstr "Förvald innehållstyp"
+
#~ msgid "Audio Gain"
#~ msgstr "Audio Förstärkning"
diff --git a/src/wx/properties_dialog.cc b/src/wx/properties_dialog.cc
index 28247bc33..53ca23755 100644
--- a/src/wx/properties_dialog.cc
+++ b/src/wx/properties_dialog.cc
@@ -22,11 +22,11 @@
#include <boost/bind.hpp>
#include "lib/film.h"
#include "lib/config.h"
+#include "lib/safe_stringstream.h"
#include "properties_dialog.h"
#include "wx_util.h"
using std::string;
-using std::stringstream;
using std::fixed;
using std::setprecision;
using boost::shared_ptr;
@@ -48,7 +48,7 @@ PropertiesDialog::PropertiesDialog (wxWindow* parent, shared_ptr<Film> film)
_frames->SetLabel (std_to_wx (lexical_cast<string> (_film->time_to_video_frames (_film->length()))));
double const disk = double (_film->required_disk_space()) / 1073741824.0f;
- stringstream s;
+ SafeStringStream s;
s << fixed << setprecision (1) << disk << wx_to_std (_("Gb"));
_disk->SetLabel (std_to_wx (s.str ()));
@@ -58,7 +58,7 @@ PropertiesDialog::PropertiesDialog (wxWindow* parent, shared_ptr<Film> film)
string
PropertiesDialog::frames_already_encoded () const
{
- stringstream u;
+ SafeStringStream u;
try {
u << _film->encoded_frames ();
} catch (boost::thread_interrupted &) {
diff --git a/src/wx/subtitle_panel.cc b/src/wx/subtitle_panel.cc
index 6470f657d..7953682fc 100644
--- a/src/wx/subtitle_panel.cc
+++ b/src/wx/subtitle_panel.cc
@@ -59,27 +59,37 @@ SubtitlePanel::SubtitlePanel (FilmEditor* e)
}
{
- add_label_to_sizer (grid, this, _("Scale"), true);
+ add_label_to_sizer (grid, this, _("X Scale"), true);
wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
- _scale = new wxSpinCtrl (this);
- s->Add (_scale);
+ _x_scale = new wxSpinCtrl (this);
+ s->Add (_x_scale);
add_label_to_sizer (s, this, _("%"), false);
grid->Add (s);
}
+ {
+ add_label_to_sizer (grid, this, _("Y Scale"), true);
+ wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _y_scale = new wxSpinCtrl (this);
+ s->Add (_y_scale);
+ add_label_to_sizer (s, this, _("%"), false);
+ grid->Add (s);
+ }
+
add_label_to_sizer (grid, this, _("Stream"), true);
_stream = new wxChoice (this, wxID_ANY);
grid->Add (_stream, 1, wxEXPAND);
_x_offset->SetRange (-100, 100);
_y_offset->SetRange (-100, 100);
- _scale->SetRange (1, 1000);
- _scale->SetValue (100);
+ _x_scale->SetRange (10, 1000);
+ _y_scale->SetRange (10, 1000);
_with_subtitles->Bind (wxEVT_COMMAND_CHECKBOX_CLICKED, boost::bind (&SubtitlePanel::with_subtitles_toggled, this));
_x_offset->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::x_offset_changed, this));
_y_offset->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::y_offset_changed, this));
- _scale->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::scale_changed, this));
+ _x_scale->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::x_scale_changed, this));
+ _y_scale->Bind (wxEVT_COMMAND_SPINCTRL_UPDATED, boost::bind (&SubtitlePanel::y_scale_changed, this));
_stream->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&SubtitlePanel::stream_changed, this));
}
@@ -134,8 +144,10 @@ SubtitlePanel::film_content_changed (int property)
checked_set (_x_offset, scs ? (scs->subtitle_x_offset() * 100) : 0);
} else if (property == SubtitleContentProperty::SUBTITLE_Y_OFFSET) {
checked_set (_y_offset, scs ? (scs->subtitle_y_offset() * 100) : 0);
- } else if (property == SubtitleContentProperty::SUBTITLE_SCALE) {
- checked_set (_scale, scs ? (scs->subtitle_scale() * 100) : 100);
+ } else if (property == SubtitleContentProperty::SUBTITLE_X_SCALE) {
+ checked_set (_x_scale, scs ? int (rint (scs->subtitle_x_scale() * 100)) : 100);
+ } else if (property == SubtitleContentProperty::SUBTITLE_Y_SCALE) {
+ checked_set (_y_scale, scs ? int (rint (scs->subtitle_y_scale() * 100)) : 100);
}
}
@@ -162,7 +174,8 @@ SubtitlePanel::setup_sensitivity ()
_with_subtitles->Enable (h);
_x_offset->Enable (j);
_y_offset->Enable (j);
- _scale->Enable (j);
+ _x_scale->Enable (j);
+ _y_scale->Enable (j);
_stream->Enable (j);
}
@@ -207,11 +220,20 @@ SubtitlePanel::y_offset_changed ()
}
void
-SubtitlePanel::scale_changed ()
+SubtitlePanel::x_scale_changed ()
+{
+ SubtitleContentList c = _editor->selected_subtitle_content ();
+ if (c.size() == 1) {
+ c.front()->set_subtitle_x_scale (_x_scale->GetValue() / 100.0);
+ }
+}
+
+void
+SubtitlePanel::y_scale_changed ()
{
SubtitleContentList c = _editor->selected_subtitle_content ();
if (c.size() == 1) {
- c.front()->set_subtitle_scale (_scale->GetValue() / 100.0);
+ c.front()->set_subtitle_y_scale (_y_scale->GetValue() / 100.0);
}
}
@@ -221,5 +243,6 @@ SubtitlePanel::content_selection_changed ()
film_content_changed (FFmpegContentProperty::SUBTITLE_STREAMS);
film_content_changed (SubtitleContentProperty::SUBTITLE_X_OFFSET);
film_content_changed (SubtitleContentProperty::SUBTITLE_Y_OFFSET);
- film_content_changed (SubtitleContentProperty::SUBTITLE_SCALE);
+ film_content_changed (SubtitleContentProperty::SUBTITLE_X_SCALE);
+ film_content_changed (SubtitleContentProperty::SUBTITLE_Y_SCALE);
}
diff --git a/src/wx/subtitle_panel.h b/src/wx/subtitle_panel.h
index 20d7c40c2..7f5d9239d 100644
--- a/src/wx/subtitle_panel.h
+++ b/src/wx/subtitle_panel.h
@@ -35,7 +35,8 @@ private:
void with_subtitles_toggled ();
void x_offset_changed ();
void y_offset_changed ();
- void scale_changed ();
+ void x_scale_changed ();
+ void y_scale_changed ();
void stream_changed ();
void setup_sensitivity ();
@@ -43,6 +44,7 @@ private:
wxCheckBox* _with_subtitles;
wxSpinCtrl* _x_offset;
wxSpinCtrl* _y_offset;
- wxSpinCtrl* _scale;
+ wxSpinCtrl* _x_scale;
+ wxSpinCtrl* _y_scale;
wxChoice* _stream;
};
diff --git a/src/wx/timecode.cc b/src/wx/timecode.cc
index ee5b5604b..166446d8c 100644
--- a/src/wx/timecode.cc
+++ b/src/wx/timecode.cc
@@ -122,6 +122,16 @@ Timecode::get (int fps) const
}
void
+Timecode::clear ()
+{
+ checked_set (_hours, "");
+ checked_set (_minutes, "");
+ checked_set (_seconds, "");
+ checked_set (_frames, "");
+ _fixed->SetLabel ("");
+}
+
+void
Timecode::changed ()
{
_set_button->Enable (true);
diff --git a/src/wx/timecode.h b/src/wx/timecode.h
index 880b44a31..d0e8176f2 100644
--- a/src/wx/timecode.h
+++ b/src/wx/timecode.h
@@ -28,6 +28,7 @@ public:
void set (Time, int);
Time get (int) const;
+ void clear ();
void set_editable (bool);
diff --git a/src/wx/timing_panel.cc b/src/wx/timing_panel.cc
index ef963bbfc..aa4f70a81 100644
--- a/src/wx/timing_panel.cc
+++ b/src/wx/timing_panel.cc
@@ -27,6 +27,7 @@
using std::cout;
using std::string;
+using std::set;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
using libdcp::raw_convert;
@@ -78,67 +79,118 @@ void
TimingPanel::film_content_changed (int property)
{
ContentList cl = _editor->selected_content ();
- shared_ptr<Content> content;
- if (cl.size() == 1) {
- content = cl.front ();
- }
-
int const film_video_frame_rate = _editor->film()->video_frame_rate ();
+
+ /* Here we check to see if we have exactly one different value of various
+ properties, and fill the controls with that value if so.
+ */
if (property == ContentProperty::POSITION) {
- if (content) {
- _position->set (content->position (), film_video_frame_rate);
+
+ set<Time> check;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ check.insert ((*i)->position ());
+ }
+
+ if (check.size() == 1) {
+ _position->set (cl.front()->position(), film_video_frame_rate);
} else {
- _position->set (0, 24);
+ _position->clear ();
}
+
} else if (
property == ContentProperty::LENGTH ||
property == VideoContentProperty::VIDEO_FRAME_RATE ||
property == VideoContentProperty::VIDEO_FRAME_TYPE
) {
- if (content) {
- _full_length->set (content->full_length (), film_video_frame_rate);
- _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+ set<Time> check;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ check.insert ((*i)->full_length ());
+ }
+
+ if (check.size() == 1) {
+ _full_length->set (cl.front()->full_length (), film_video_frame_rate);
} else {
- _full_length->set (0, 24);
- _play_length->set (0, 24);
+ _full_length->clear ();
}
+
} else if (property == ContentProperty::TRIM_START) {
- if (content) {
- _trim_start->set (content->trim_start (), film_video_frame_rate);
- _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+ set<Time> check;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ check.insert ((*i)->trim_start ());
+ }
+
+ if (check.size() == 1) {
+ _trim_start->set (cl.front()->trim_start (), film_video_frame_rate);
} else {
- _trim_start->set (0, 24);
- _play_length->set (0, 24);
+ _trim_start->clear ();
}
+
} else if (property == ContentProperty::TRIM_END) {
- if (content) {
- _trim_end->set (content->trim_end (), film_video_frame_rate);
- _play_length->set (content->length_after_trim (), film_video_frame_rate);
+
+ set<Time> check;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ check.insert ((*i)->trim_end ());
+ }
+
+ if (check.size() == 1) {
+ _trim_end->set (cl.front()->trim_end (), film_video_frame_rate);
} else {
_trim_end->set (0, 24);
- _play_length->set (0, 24);
+ }
+ }
+
+ if (
+ property == ContentProperty::LENGTH ||
+ property == ContentProperty::TRIM_START ||
+ property == ContentProperty::TRIM_END ||
+ property == VideoContentProperty::VIDEO_FRAME_RATE ||
+ property == VideoContentProperty::VIDEO_FRAME_TYPE
+ ) {
+
+ set<Time> check;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ check.insert ((*i)->length_after_trim ());
+ }
+
+ if (check.size() == 1) {
+ _play_length->set (cl.front()->length_after_trim (), film_video_frame_rate);
+ } else {
+ _play_length->clear ();
}
}
if (property == VideoContentProperty::VIDEO_FRAME_RATE) {
- if (content) {
- shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content);
- if (vc) {
- _video_frame_rate->SetValue (std_to_wx (raw_convert<string> (vc->video_frame_rate (), 5)));
- } else {
- _video_frame_rate->SetValue ("24");
+ set<float> check;
+ shared_ptr<VideoContent> vc;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ shared_ptr<VideoContent> t = dynamic_pointer_cast<VideoContent> (*i);
+ if (t) {
+ check.insert (t->video_frame_rate ());
+ vc = t;
}
+ }
+ if (check.size() == 1) {
+ _video_frame_rate->SetValue (std_to_wx (raw_convert<string> (vc->video_frame_rate (), 5)));
+ _video_frame_rate->Enable (true);
} else {
- _video_frame_rate->SetValue ("24");
+ _video_frame_rate->SetValue ("");
+ _video_frame_rate->Enable (false);
}
}
- shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (content);
- shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (content);
- _full_length->set_editable (ic && ic->still ());
- _play_length->set_editable (!ic || !ic->still ());
- _video_frame_rate->Enable (vc);
+ bool have_still = false;
+ for (ContentList::const_iterator i = cl.begin (); i != cl.end(); ++i) {
+ shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (*i);
+ if (ic && ic->still ()) {
+ have_still = true;
+ }
+ }
+
+ _full_length->set_editable (have_still);
+ _play_length->set_editable (!have_still);
_set_video_frame_rate->Enable (false);
}
@@ -146,8 +198,8 @@ void
TimingPanel::position_changed ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- c.front()->set_position (_position->get (_editor->film()->video_frame_rate ()));
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ (*i)->set_position (_position->get (_editor->film()->video_frame_rate ()));
}
}
@@ -155,8 +207,8 @@ void
TimingPanel::full_length_changed ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (c.front ());
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ shared_ptr<ImageContent> ic = dynamic_pointer_cast<ImageContent> (*i);
if (ic && ic->still ()) {
ic->set_video_length (rint (_full_length->get (_editor->film()->video_frame_rate()) * ic->video_frame_rate() / TIME_HZ));
}
@@ -167,8 +219,8 @@ void
TimingPanel::trim_start_changed ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- c.front()->set_trim_start (_trim_start->get (_editor->film()->video_frame_rate ()));
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ (*i)->set_trim_start (_trim_start->get (_editor->film()->video_frame_rate ()));
}
}
@@ -177,8 +229,8 @@ void
TimingPanel::trim_end_changed ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- c.front()->set_trim_end (_trim_end->get (_editor->film()->video_frame_rate ()));
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ (*i)->set_trim_end (_trim_end->get (_editor->film()->video_frame_rate ()));
}
}
@@ -186,8 +238,8 @@ void
TimingPanel::play_length_changed ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- c.front()->set_trim_end (c.front()->full_length() - _play_length->get (_editor->film()->video_frame_rate()) - c.front()->trim_start());
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ (*i)->set_trim_end ((*i)->full_length() - _play_length->get (_editor->film()->video_frame_rate()) - (*i)->trim_start());
}
}
@@ -201,8 +253,8 @@ void
TimingPanel::set_video_frame_rate ()
{
ContentList c = _editor->selected_content ();
- if (c.size() == 1) {
- shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (c.front ());
+ for (ContentList::iterator i = c.begin(); i != c.end(); ++i) {
+ shared_ptr<VideoContent> vc = dynamic_pointer_cast<VideoContent> (*i);
if (vc) {
vc->set_video_frame_rate (raw_convert<float> (wx_to_std (_video_frame_rate->GetValue ())));
}
@@ -213,16 +265,14 @@ TimingPanel::set_video_frame_rate ()
void
TimingPanel::content_selection_changed ()
{
- ContentList sel = _editor->selected_content ();
- bool const single = sel.size() == 1;
-
- /* Things that are only allowed with single selections */
- _position->Enable (single);
- _full_length->Enable (single);
- _trim_start->Enable (single);
- _trim_end->Enable (single);
- _play_length->Enable (single);
- _video_frame_rate->Enable (single);
+ bool const e = !_editor->selected_content().empty ();
+
+ _position->Enable (e);
+ _full_length->Enable (e);
+ _trim_start->Enable (e);
+ _trim_end->Enable (e);
+ _play_length->Enable (e);
+ _video_frame_rate->Enable (e);
film_content_changed (ContentProperty::POSITION);
film_content_changed (ContentProperty::LENGTH);
diff --git a/src/wx/video_panel.cc b/src/wx/video_panel.cc
index 2d874b959..b33a97591 100644
--- a/src/wx/video_panel.cc
+++ b/src/wx/video_panel.cc
@@ -332,7 +332,7 @@ VideoPanel::setup_description ()
d << wxString::Format (_("Content frame rate %.4f\n"), vcs->video_frame_rate ());
++lines;
FrameRateChange frc (vcs->video_frame_rate(), _editor->film()->video_frame_rate ());
- d << std_to_wx (frc.description) << "\n";
+ d << std_to_wx (frc.description ()) << "\n";
++lines;
for (int i = lines; i < 6; ++i) {
@@ -363,18 +363,19 @@ VideoPanel::edit_colour_conversion_clicked ()
void
VideoPanel::content_selection_changed ()
{
- VideoContentList sel = _editor->selected_video_content ();
- bool const single = sel.size() == 1;
-
- _left_crop->set_content (sel);
- _right_crop->set_content (sel);
- _top_crop->set_content (sel);
- _bottom_crop->set_content (sel);
- _frame_type->set_content (sel);
- _scale->set_content (sel);
-
- /* Things that are only allowed with single selections */
- _filters_button->Enable (single);
+ VideoContentList video_sel = _editor->selected_video_content ();
+ FFmpegContentList ffmpeg_sel = _editor->selected_ffmpeg_content ();
+
+ bool const single = video_sel.size() == 1;
+
+ _left_crop->set_content (video_sel);
+ _right_crop->set_content (video_sel);
+ _top_crop->set_content (video_sel);
+ _bottom_crop->set_content (video_sel);
+ _frame_type->set_content (video_sel);
+ _scale->set_content (video_sel);
+
+ _filters_button->Enable (single && !ffmpeg_sel.empty ());
_colour_conversion_button->Enable (single);
film_content_changed (VideoContentProperty::VIDEO_CROP);
diff --git a/src/wx/wscript b/src/wx/wscript
index f26a91cbc..8bf2451c2 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -67,6 +67,9 @@ def configure(conf):
conf.env.LIB_WXWIDGETS.append('Xxf86vm')
conf.env.LIB_WXWIDGETS.append('Xext')
conf.env.LIB_WXWIDGETS.append('X11')
+
+ if conf.env.TARGET_CENTOS_7:
+ conf.env.LIB_WXWIDGETS.append('Xxf86vm')
conf.in_msg = 1
wx_version = conf.check_cfg(package='', path=conf.options.wx_config, args='--version').strip()
diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc
index 218a786b2..7f15217f1 100644
--- a/src/wx/wx_util.cc
+++ b/src/wx/wx_util.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -193,7 +193,7 @@ void
checked_set (wxSpinCtrlDouble* widget, double value)
{
/* XXX: completely arbitrary epsilon */
- if (fabs (widget->GetValue() - value) < 1e-16) {
+ if (fabs (widget->GetValue() - value) > 1e-16) {
widget->SetValue (value);
}
}
@@ -280,6 +280,14 @@ dcpomatic_setup_i18n ()
locale->AddCatalogLookupPathPrefix (POSIX_LOCALE_PREFIX);
#endif
+#ifdef DCPOMATIC_LINUX
+ /* We have to include the wxWidgets .mo in our distribution,
+ so we rename it to avoid clashes with any other installation
+ of wxWidgets.
+ */
+ locale->AddCatalog (wxT ("dcpomatic-wxstd"));
+#endif
+
locale->AddCatalog (wxT ("libdcpomatic-wx"));
locale->AddCatalog (wxT ("dcpomatic"));
@@ -312,14 +320,6 @@ wx_get (wxSpinCtrlDouble* w)
return w->GetValue ();
}
-void
-run_gui_loop ()
-{
- while (wxTheApp->Pending ()) {
- wxTheApp->Dispatch ();
- }
-}
-
/** @param s String of the form Context|String
* @return translation, or String if no translation is available.
*/
diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h
index 6dfc0bf5c..f0e20be95 100644
--- a/src/wx/wx_util.h
+++ b/src/wx/wx_util.h
@@ -63,7 +63,6 @@ extern wxStaticText* add_label_to_grid_bag_sizer (wxGridBagSizer *, wxWindow *,
extern std::string wx_to_std (wxString);
extern wxString std_to_wx (std::string);
extern void dcpomatic_setup_i18n ();
-extern void run_gui_loop ();
extern wxString context_translation (wxString);
/** @class ThreadedStaticText