Partial addition of DCP audio channel count to Film.
[dcpomatic.git] / src / wx / wx_util.cc
index bf78ff4d7029c1e3acf38f6a6c8ff28574ea362b..5691d341a0eba0ff0bd501c666c5032e050648cb 100644 (file)
@@ -25,6 +25,8 @@
 #include <wx/filepicker.h>
 #include <wx/spinctrl.h>
 #include "wx_util.h"
+#include "config.h"
+#include "util.h"
 
 using namespace std;
 using namespace boost;
@@ -43,6 +45,14 @@ add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, int prop)
        return m;
 }
 
+wxStaticText *
+add_label_to_grid_bag_sizer (wxGridBagSizer* s, wxWindow* p, wxString t, wxGBPosition pos, wxGBSpan span)
+{
+       wxStaticText* m = new wxStaticText (p, wxID_ANY, t);
+       s->Add (m, pos, span, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+       return m;
+}
+
 /** Pop up an error dialogue box.
  *  @param parent Parent.
  *  @param m Message.
@@ -50,11 +60,21 @@ add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, int prop)
 void
 error_dialog (wxWindow* parent, wxString m)
 {
-       wxMessageDialog* d = new wxMessageDialog (parent, m, _("DVD-o-matic"), wxOK);
+       wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK);
        d->ShowModal ();
        d->Destroy ();
 }
 
+bool
+confirm_dialog (wxWindow* parent, wxString m)
+{
+       wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxYES_NO | wxICON_QUESTION);
+       int const r = d->ShowModal ();
+       d->Destroy ();
+       return r == wxID_YES;
+}
+       
+
 /** @param s wxWidgets string.
  *  @return Corresponding STL string.
  */
@@ -193,3 +213,39 @@ checked_set (wxRadioButton* widget, bool value)
                widget->SetValue (value);
        }
 }
+
+void
+dcpomatic_setup_i18n ()
+{
+       int language = wxLANGUAGE_DEFAULT;
+
+       boost::optional<string> config_lang = Config::instance()->language ();
+       if (config_lang && !config_lang->empty ()) {
+               wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (config_lang.get ()));
+               if (li) {
+                       language = li->Language;
+               }
+       }
+
+       wxLocale* locale = 0;
+       if (wxLocale::IsAvailable (language)) {
+               locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT);
+
+#ifdef DCPOMATIC_WINDOWS
+               locale->AddCatalogLookupPathPrefix (std_to_wx (mo_path().string()));
+#endif         
+
+               locale->AddCatalog (wxT ("libdcpomatic-wx"));
+               locale->AddCatalog (wxT ("dcpomatic"));
+               
+               if (!locale->IsOk()) {
+                       delete locale;
+                       locale = new wxLocale (wxLANGUAGE_ENGLISH);
+                       language = wxLANGUAGE_ENGLISH;
+               }
+       }
+
+       if (locale) {
+               dcpomatic_setup_gettext_i18n (wx_to_std (locale->GetCanonicalName ()));
+       }
+}