+2018-05-29 Carl Hetherington <cth@carlh.net>
+
+ * Updated fr_FR translation from Thierry Journet.
+
2018-05-27 Carl Hetherington <cth@carlh.net>
* Support notifications on jobs finishing (#1286).
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/colour_conversions.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/defaults.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/kdm_email.png "$dest"
+ cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/email.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/servers.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/tms.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/keys.png "$dest"
cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/cover_sheet.png "$dest"
+ cp $ROOT/32/src/dcpomatic/graphics/osx/preferences/notifications.png "$dest"
cp $ROOT/32/src/dcpomatic/fonts/LiberationSans-Regular.ttf "$dest"
cp $ROOT/32/src/dcpomatic/fonts/LiberationSans-Italic.ttf "$dest"
cp $ROOT/32/src/dcpomatic/fonts/LiberationSans-Bold.ttf "$dest"
return j;
}
+shared_ptr<Job>
+JobManager::add_after (shared_ptr<Job> after, shared_ptr<Job> j)
+{
+ {
+ boost::mutex::scoped_lock lm (_mutex);
+ list<shared_ptr<Job> >::iterator i = find (_jobs.begin(), _jobs.end(), after);
+ DCPOMATIC_ASSERT (i != _jobs.end());
+ _jobs.insert (i, j);
+ }
+
+ emit (boost::bind (boost::ref (JobAdded), weak_ptr<Job> (j)));
+
+ return j;
+}
+
list<shared_ptr<Job> >
JobManager::get () const
{
{
public:
boost::shared_ptr<Job> add (boost::shared_ptr<Job>);
+ boost::shared_ptr<Job> add_after (boost::shared_ptr<Job> after, boost::shared_ptr<Job> j);
std::list<boost::shared_ptr<Job> > get () const;
bool work_to_do () const;
bool errors () const;
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-20 20:14+0100\n"
-"PO-Revision-Date: 2018-04-24 22:27+0100\n"
+"PO-Revision-Date: 2018-05-29 23:36+0100\n"
"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
#: src/lib/ffmpeg_content.cc:578
msgid "BT2100"
-msgstr ""
+msgstr "BT2100"
#: src/lib/ffmpeg_content.cc:515
msgid "BT470BG"
msgstr "Recherche de données images existantes"
#: src/lib/ffmpeg_content.cc:577
-#, fuzzy
msgid "Chroma-derived constant luminance"
-msgstr "BT2020 luminance constante"
+msgstr "Luminance constante dérivée de la chrominance"
#: src/lib/ffmpeg_content.cc:576
-#, fuzzy
msgid "Chroma-derived non-constant luminance"
-msgstr "BT2020 luminance non-constante"
+msgstr "Luminance non constante dérivée de la chrominance"
#: src/lib/ffmpeg_content.cc:536
msgid "Colour primaries"
#: src/lib/ffmpeg_content.cc:532
msgid "JEDEC P22"
-msgstr ""
+msgstr "JEDEC P22"
#: src/lib/config.cc:308 src/lib/config.cc:821
msgid "KDM delivery: $CPL_NAME"
#: src/lib/dcp_content.cc:521
msgid "There is no video in this DCP"
-msgstr ""
+msgstr "Il n'y a aucune vidéo dans ce DCP"
#: src/lib/job.cc:173
msgid ""
string ap;
- bool const hours = h > 0;
- bool const minutes = h < 6 && m > 0;
- bool const seconds = h == 0 && m < 10 && s > 0;
+ bool hours = h > 0;
+ bool minutes = h < 6 && m > 0;
+ bool seconds = h == 0 && m < 10 && s > 0;
- if (hours) {
- if (m > 30 && !minutes) {
- /// TRANSLATORS: h here is an abbreviation for hours
- ap += locale_convert<string>(h + 1) + _("h");
- } else {
- /// TRANSLATORS: h here is an abbreviation for hours
- ap += locale_convert<string>(h) + _("h");
+ if (m > 30 && !minutes) {
+ /* round up the hours */
+ ++h;
+ }
+ if (s > 30 && !seconds) {
+ /* round up the minutes */
+ ++m;
+ if (m == 60) {
+ m = 0;
+ minutes = false;
+ ++h;
}
+ }
+
+ if (hours) {
+ /// TRANSLATORS: h here is an abbreviation for hours
+ ap += locale_convert<string>(h) + _("h");
if (minutes || seconds) {
ap += N_(" ");
}
if (minutes) {
- /* Minutes */
- if (s > 30 && !seconds) {
- /// TRANSLATORS: m here is an abbreviation for minutes
- ap += locale_convert<string>(m + 1) + _("m");
- } else {
- /// TRANSLATORS: m here is an abbreviation for minutes
- ap += locale_convert<string>(m) + _("m");
- }
+ /// TRANSLATORS: m here is an abbreviation for minutes
+ ap += locale_convert<string>(m) + _("m");
if (seconds) {
ap += N_(" ");
setup_menu (bar);
SetMenuBar (bar);
+ Config::instance()->Changed.connect (boost::bind (&DOMFrame::config_changed, this, _1));
+
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_add_film, this), ID_file_add_film);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_quit, this), wxID_EXIT);
Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_preferences, this), wxID_PREFERENCES);
c->Destroy ();
}
+ void config_changed (Config::Property what)
+ {
+ /* Instantly save any config changes when using the DCP-o-matic GUI */
+ if (what == Config::CINEMAS) {
+ try {
+ Config::instance()->write_cinemas();
+ } catch (exception& e) {
+ error_dialog (
+ this,
+ wxString::Format (
+ _("Could not write to cinemas file at %s. Your changes have not been saved."),
+ std_to_wx (Config::instance()->cinemas_file().string()).data()
+ )
+ );
+ }
+ } else {
+ try {
+ Config::instance()->write_config();
+ } catch (exception& e) {
+ error_dialog (
+ this,
+ wxString::Format (
+ _("Could not write to config file at %s. Your changes have not been saved."),
+ std_to_wx (Config::instance()->cinemas_file().string()).data()
+ )
+ );
+ }
+ }
+ }
+
boost::optional<boost::filesystem::path> _last_parent;
wxSizer* _sizer;
wxPreferencesEditor* _config_dialog;
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-20 20:14+0100\n"
-"PO-Revision-Date: 2018-04-24 22:31+0100\n"
+"PO-Revision-Date: 2018-05-29 23:42+0100\n"
"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
{
public:
EmailPage (wxSize panel_size, int border)
-#ifdef DCPOMATIC_OSX
- /* We have to force both width and height of this one */
- : StandardPage (wxSize (480, 128), border)
-#else
: StandardPage (panel_size, border)
-#endif
{}
wxString GetName () const
KDMEmailPage (wxSize panel_size, int border)
#ifdef DCPOMATIC_OSX
/* We have to force both width and height of this one */
- : StandardPage (wxSize (480, 128), border)
+ : StandardPage (wxSize (panel_size.GetWidth(), 128), border)
#else
: StandardPage (panel_size, border)
#endif
NotificationsPage (wxSize panel_size, int border)
#ifdef DCPOMATIC_OSX
/* We have to force both width and height of this one */
- : StandardPage (wxSize (480, 128), border)
+ : StandardPage (wxSize (panel_size.GetWidth(), 128), border)
#else
: StandardPage (panel_size, border)
#endif
CoverSheetPage (wxSize panel_size, int border)
#ifdef DCPOMATIC_OSX
/* We have to force both width and height of this one */
- : StandardPage (wxSize (480, 128), border)
+ : StandardPage (wxSize (panel_size.GetWidth(), 128), border)
#else
: StandardPage (panel_size, border)
#endif
the containing window doesn't shrink too much when we select those panels.
This is obviously an unpleasant hack.
*/
- wxSize ps = wxSize (520, -1);
+ wxSize ps = wxSize (600, -1);
int const border = 16;
#else
wxSize ps = wxSize (-1, -1);
string body = Config::instance()->notification_email();
boost::algorithm::replace_all (body, "$JOB_NAME", _job->name());
boost::algorithm::replace_all (body, "$JOB_STATUS", _job->status());
- JobManager::instance()->add (shared_ptr<Job> (new SendNotificationEmailJob (body)));
+ JobManager::instance()->add_after (_job, shared_ptr<Job> (new SendNotificationEmailJob (body)));
}
}
}
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
-#: src/wx/audio_panel.cc:56 src/wx/subtitle_panel.cc:56
-#: src/wx/video_panel.cc:82
msgid ""
msgstr ""
"Project-Id-Version: DCP-o-matic FRENCH\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-05-20 20:14+0100\n"
-"PO-Revision-Date: 2018-04-24 22:35+0100\n"
+"PO-Revision-Date: 2018-05-29 23:41+0100\n"
"Last-Translator: Grégoire AUSINA <gregoire@gisele-productions.eu>\n"
"Language-Team: \n"
"Language: fr_FR\n"
#: src/wx/film_name_location_dialog.cc:130
msgid "%1 already exists as a file, so you cannot use it for a film."
msgstr ""
-"%1 existe déjà comme nom de fichier. VOus ne pouvez pas l'utiliser pour un "
+"%1 existe déjà comme nom de fichier. Vous ne pouvez pas l'utiliser pour un "
"projet."
#: src/wx/kdm_dialog.cc:153
#: src/wx/isdcf_metadata_dialog.cc:40
msgid "Audio Language (e.g. EN)"
-msgstr "Langue audio (ex. FR)"
+msgstr "Langue audio (par ex. : FR)"
#: src/wx/player_information.cc:132
#, c-format
#: src/wx/full_config_dialog.cc:760
msgid "BCC address"
-msgstr "Adresse BCC"
+msgstr "Adresse CCI"
#: src/wx/colour_conversion_editor.cc:144
msgid "Blue chromaticity"
msgstr "FIchiers MOV (*.mov)|*.mov"
#: src/wx/export_dialog.cc:33
-#, fuzzy
msgid "MP4 / H.264"
-msgstr "H.264"
+msgstr "MP4 / H.264"
#: src/wx/export_dialog.cc:38
msgid "MP4 files (*.mp4)|*.mp4"
msgid "NEEDS OV: "
msgstr "OV Nécessaire:"
-#: src/wx/cinema_dialog.cc:50 src/wx/dcp_panel.cc:72 src/wx/screen_dialog.cc:68
+#: src/wx/cinema_dialog.cc:50 src/wx/dcp_panel.cc:72
+#: src/wx/screen_dialog.cc:68
msgid "Name"
msgstr "Nom"
BOOST_CHECK_EQUAL (seconds_to_approximate_hms (17 * 60 + 20), "17m");
BOOST_CHECK_EQUAL (seconds_to_approximate_hms (1 * 3600), "1h");
BOOST_CHECK_EQUAL (seconds_to_approximate_hms (3600 + 40 * 60), "1h 40m");
+ BOOST_CHECK_EQUAL (seconds_to_approximate_hms (2 * 3600), "2h");
+ BOOST_CHECK_EQUAL (seconds_to_approximate_hms (2 * 3600 - 1), "2h");
BOOST_CHECK_EQUAL (seconds_to_approximate_hms (13 * 3600 + 40 * 60), "14h");
}