X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdvdomatic.cc;h=6c27892b0806760a950d5559facbc3e26abe8286;hb=d62877ae6c4e316e43f4052e4b9ba673610012cf;hp=230e02c88f8e2f8a587257c5bb77be7fe040fdd5;hpb=bb95f333f15ace7c032bb5b5761b512b6fe2e84e;p=dcpomatic.git diff --git a/src/tools/dvdomatic.cc b/src/tools/dvdomatic.cc index 230e02c88..6c27892b0 100644 --- a/src/tools/dvdomatic.cc +++ b/src/tools/dvdomatic.cc @@ -71,7 +71,7 @@ public: { _dialog = new wxMessageDialog ( 0, - std_to_wx (String::compose ("Save changes to film \"%1\" before closing?", film->name())), + std_to_wx (String::compose (wx_to_std (_("Save changes to film \"%1\" before closing?")), film->name())), _("Film changed"), wxYES_NO | wxYES_DEFAULT | wxICON_QUESTION ); @@ -236,9 +236,6 @@ public: set_menu_sensitivity (); - /* XXX: calling these here is a bit of a hack */ - film_editor->setup_visibility (); - film_editor->FileChanged.connect (bind (&Frame::file_changed, this, _1)); if (film) { file_changed (film->directory ()); @@ -284,7 +281,7 @@ private: void file_changed (string f) { stringstream s; - s << _("DVD-o-matic"); + s << wx_to_std (_("DVD-o-matic")); if (!f.empty ()) { s << " - " << f; } @@ -300,7 +297,7 @@ private: if (r == wxID_OK) { if (boost::filesystem::exists (d->get_path())) { - error_dialog (this, wxString::Format (_("The directory %s already exists."), d->get_path().c_str())); + error_dialog (this, std_to_wx (String::compose (wx_to_std (_("The directory %1 already exists.")), d->get_path().c_str()))); return; } @@ -317,8 +314,16 @@ private: void file_open (wxCommandEvent &) { wxDirDialog* c = new wxDirDialog (this, _("Select film to open"), wxStandardPaths::Get().GetDocumentsDir(), wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST); - int const r = c->ShowModal (); - + int r; + while (1) { + r = c->ShowModal (); + if (r == wxID_OK && c->GetPath() == wxStandardPaths::Get().GetDocumentsDir()) { + error_dialog (this, _("You did not select a folder. Make sure that you select a folder before clicking Open.")); + } else { + break; + } + } + if (r == wxID_OK) { maybe_save_then_delete_film (); try { @@ -328,7 +333,7 @@ private: } 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(), e.what())); + error_dialog (this, wxString::Format (_("Could not open film at %s (%s)"), p.data(), std_to_wx (e.what()).data())); } } @@ -416,7 +421,12 @@ private: info.SetDevelopers (authors); wxArrayString translators; - translators.Add (wxT ("Olivier (freedcp.net)")); + 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/dvdomatic")); @@ -447,17 +457,16 @@ setup_i18n () if (Config::instance()->language()) { wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (Config::instance()->language().get())); - language = li->Language; + if (li) { + language = li->Language; + } } if (wxLocale::IsAvailable (language)) { locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT); -#ifdef __WXGTK__ - locale->AddCatalogLookupPathPrefix (wxT (LOCALE_PREFIX "/locale")); -#endif -#ifdef __WXMSW__ - locale->AddCatalogLookupPathPrefix (wxT ("../locale")); +#ifdef DVDOMATIC_WINDOWS + locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string())); #endif locale->AddCatalog (wxT ("libdvdomatic-wx")); @@ -469,6 +478,10 @@ setup_i18n () language = wxLANGUAGE_ENGLISH; } } + + if (locale) { + dvdomatic_setup_i18n (wx_to_std (locale->GetCanonicalName ())); + } } class App : public wxApp @@ -483,15 +496,26 @@ class App : public wxApp unsetenv ("UBUNTU_MENUPROXY"); #endif - /* This needs to be before setup_i18n, as setup_i18n() will - create a Config object, which needs Scalers to have - been created. + wxInitAllImageHandlers (); + + /* Enable i18n; this will create a Config object + to look for a force-configured language. This Config + object will be wrong, however, because dvdomatic_setup + hasn't yet been called and there aren't any scalers, filters etc. + set up yet. + */ + setup_i18n (); + + /* Set things up, including scalers / filters etc. + which will now be internationalised correctly. */ dvdomatic_setup (); - wxInitAllImageHandlers (); - setup_i18n (); - + /* Force the configuration to be re-loaded correctly next + time it is needed. + */ + Config::drop (); + if (!film_to_load.empty() && boost::filesystem::is_directory (film_to_load)) { try { film.reset (new Film (film_to_load));