Add Uwe Dittes as translator.
[dcpomatic.git] / src / wx / language_tag_widget.cc
index f2f59f6888adcc5eef19ad22da9bf6888122d055..f0766c9d659832102265ba6d8f57c7d4156d26c1 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2020 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2020-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #include <wx/wx.h>
 
 
-LanguageTagWidget::LanguageTagWidget (wxWindow* parent, wxString tooltip, dcp::LanguageTag tag)
+using boost::optional;
+
+
+LanguageTagWidget::LanguageTagWidget (wxWindow* parent, wxString tooltip, optional<dcp::LanguageTag> tag, optional<wxString> size_to_fit)
        : _parent (parent)
        , _sizer (new wxBoxSizer(wxHORIZONTAL))
 {
-       _language = new wxStaticText (parent, wxID_ANY, wxT(""));
+       _language = new wxStaticText (parent, wxID_ANY, wxT(""), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
        _language->SetToolTip (tooltip);
        set (tag);
+
+       if (size_to_fit) {
+               int w;
+               int h;
+               _language->GetTextExtent (*size_to_fit, &w, &h);
+               _language->SetMinSize (wxSize(w, -1));
+       }
+
        _sizer->Add (_language, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
        _edit = new Button (parent, _("Edit..."));
        _sizer->Add (_edit, 0, wxLEFT, DCPOMATIC_SIZER_GAP);
@@ -41,10 +52,17 @@ LanguageTagWidget::LanguageTagWidget (wxWindow* parent, wxString tooltip, dcp::L
 }
 
 
+LanguageTagWidget::~LanguageTagWidget ()
+{
+       _language->Destroy ();
+       _edit->Destroy ();
+}
+
+
 void
 LanguageTagWidget::edit ()
 {
-       LanguageTagDialog* d = new LanguageTagDialog(_parent, _tag);
+       auto d = new LanguageTagDialog(_parent, _tag.get_value_or(dcp::LanguageTag("en")));
        d->ShowModal ();
        set (d->get());
        Changed (d->get());
@@ -53,8 +71,20 @@ LanguageTagWidget::edit ()
 
 
 void
-LanguageTagWidget::set (dcp::LanguageTag tag)
+LanguageTagWidget::set (optional<dcp::LanguageTag> tag)
 {
        _tag = tag;
-       checked_set (_language, std_to_wx(tag.to_string()));
+       if (tag) {
+               checked_set (_language, std_to_wx(tag->to_string()));
+       } else {
+               checked_set (_language, wxT(""));
+       }
+}
+
+
+void
+LanguageTagWidget::enable (bool e)
+{
+       _language->Enable (e);
+       _edit->Enable (e);
 }