Fix error when OK-ing a text track dialog with no language (#2430).
[dcpomatic.git] / src / wx / dcp_text_track_dialog.cc
index b884aba51e387c9f1cc7cfb48a8bc2561bfee4b4..d033541d24e5d736b2d8de7b3bce34786a973a78 100644 (file)
@@ -33,9 +33,12 @@ DCPTextTrackDialog::DCPTextTrackDialog (wxWindow* parent)
        add (_("Name"), true);
        add (_name = new wxTextCtrl (this, wxID_ANY, wxT(""), wxDefaultPosition, wxSize(300, -1)));
        add (_("Language"), true);
-       _language = new LanguageTagWidget (this, wxT(""), dcp::LanguageTag("en-US"));
+       _language = new LanguageTagWidget (this, wxT(""), boost::none);
        add (_language->sizer());
 
+       _language->Changed.connect(boost::bind(&DCPTextTrackDialog::set_sensitivity, this));
+
+       set_sensitivity();
        layout ();
 }
 
@@ -44,5 +47,15 @@ DCPTextTrack
 DCPTextTrackDialog::get () const
 {
        DCPOMATIC_ASSERT (_language->get());
-       return DCPTextTrack(wx_to_std(_name->GetValue()), _language->get()->to_string());
+       return DCPTextTrack(wx_to_std(_name->GetValue()), _language->get());
+}
+
+
+void
+DCPTextTrackDialog::set_sensitivity()
+{
+       if (auto ok = dynamic_cast<wxButton *>(FindWindowById(wxID_OK, this))) {
+               ok->Enable(static_cast<bool>(_language->get()));
+       }
 }
+