C++11 tidying.
[dcpomatic.git] / src / wx / language_tag_dialog.cc
index 1c3ab2f30453a773e3bcd2a1e6ea556bcf1883ac..e0f6ef883b7d9eabc9c90306bcd8c5318c9f3c11 100644 (file)
 #include <wx/srchctrl.h>
 #include <wx/wx.h>
 #include <boost/algorithm/string.hpp>
-#include <boost/bind.hpp>
-#include <boost/foreach.hpp>
+#include <boost/bind/bind.hpp>
 #include <boost/optional.hpp>
-#include <boost/shared_ptr.hpp>
 #include <boost/signals2.hpp>
 #include <iostream>
 #include <iterator>
@@ -42,8 +40,8 @@ using std::pair;
 using std::string;
 using std::vector;
 using boost::optional;
-using boost::shared_ptr;
-using boost::weak_ptr;
+using std::shared_ptr;
+using std::weak_ptr;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
 #endif
@@ -86,7 +84,7 @@ public:
                        _matching_subtags.clear ();
 
                        boost::algorithm::to_lower(search);
-                       BOOST_FOREACH (dcp::LanguageTag::SubtagData const& i, _all_subtags) {
+                       for (auto const& i: _all_subtags) {
                                if (
                                        (boost::algorithm::to_lower_copy(i.subtag).find(search) != string::npos) ||
                                        (boost::algorithm::to_lower_copy(i.description).find(search) != string::npos)) {
@@ -207,7 +205,7 @@ LanguageTagDialog::LanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag)
        button_sizer->Add (_remove, 0, wxTOP | wxBOTTOM | wxEXPAND, 2);
 
        _choose_subtag_panel = new LanguageSubtagPanel (this);
-       _choose_subtag_panel->set (dcp::LanguageTag::LANGUAGE, "");
+       _choose_subtag_panel->set (dcp::LanguageTag::SubtagType::LANGUAGE, "");
 
        wxBoxSizer* ltor_sizer = new wxBoxSizer (wxHORIZONTAL);
        ltor_sizer->Add (_current_tag_list, 1, wxALL, 8);
@@ -224,23 +222,12 @@ LanguageTagDialog::LanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag)
 
        SetSizerAndFit (overall_sizer);
 
-       bool have_language = false;
-       vector<pair<dcp::LanguageTag::SubtagType, dcp::LanguageTag::SubtagData> > subtags = tag.subtags();
-       for (vector<pair<dcp::LanguageTag::SubtagType, dcp::LanguageTag::SubtagData> >::const_iterator i = subtags.begin(); i != subtags.end(); ++i) {
-               add_to_current_tag (i->first, i->second);
-               if (i->first == dcp::LanguageTag::LANGUAGE) {
-                       have_language = true;
-               }
-       }
-
-       if (!have_language) {
-               add_to_current_tag (dcp::LanguageTag::LANGUAGE, dcp::LanguageTag::SubtagData("en", "English"));
-       }
+       set (tag);
 
-       _add_script->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SCRIPT, boost::optional<dcp::LanguageTag::SubtagData>()));
-       _add_region->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::REGION, boost::optional<dcp::LanguageTag::SubtagData>()));
-       _add_variant->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::VARIANT, boost::optional<dcp::LanguageTag::SubtagData>()));
-       _add_external->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::EXTLANG, boost::optional<dcp::LanguageTag::SubtagData>()));
+       _add_script->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::SCRIPT, boost::optional<dcp::LanguageTag::SubtagData>()));
+       _add_region->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::REGION, boost::optional<dcp::LanguageTag::SubtagData>()));
+       _add_variant->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::VARIANT, boost::optional<dcp::LanguageTag::SubtagData>()));
+       _add_external->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::EXTLANG, boost::optional<dcp::LanguageTag::SubtagData>()));
        _remove->Bind (wxEVT_BUTTON, boost::bind(&LanguageTagDialog::remove_from_current_tag, this));
        _choose_subtag_panel->SelectionChanged.connect(bind(&LanguageTagDialog::chosen_subtag_changed, this, _1));
        _choose_subtag_panel->SearchChanged.connect(bind(&LanguageTagDialog::search_changed, this, _1));
@@ -274,24 +261,24 @@ dcp::LanguageTag LanguageTagDialog::get () const
        vector<dcp::LanguageTag::VariantSubtag> variants;
        vector<dcp::LanguageTag::ExtlangSubtag> extlangs;
 
-       BOOST_FOREACH (Subtag i, _current_tag_subtags) {
+       for (auto i: _current_tag_subtags) {
                if (!i.subtag) {
                        continue;
                }
                switch (i.type) {
-                       case dcp::LanguageTag::LANGUAGE:
+                       case dcp::LanguageTag::SubtagType::LANGUAGE:
                                tag.set_language (i.subtag->subtag);
                                break;
-                       case dcp::LanguageTag::SCRIPT:
+                       case dcp::LanguageTag::SubtagType::SCRIPT:
                                tag.set_script (i.subtag->subtag);
                                break;
-                       case dcp::LanguageTag::REGION:
+                       case dcp::LanguageTag::SubtagType::REGION:
                                tag.set_region (i.subtag->subtag);
                                break;
-                       case dcp::LanguageTag::VARIANT:
+                       case dcp::LanguageTag::SubtagType::VARIANT:
                                variants.push_back (i.subtag->subtag);
                                break;
-                       case dcp::LanguageTag::EXTLANG:
+                       case dcp::LanguageTag::SubtagType::EXTLANG:
                                extlangs.push_back (i.subtag->subtag);
                                break;
                }
@@ -303,18 +290,38 @@ dcp::LanguageTag LanguageTagDialog::get () const
 }
 
 
+void
+LanguageTagDialog::set (dcp::LanguageTag tag)
+{
+       _current_tag_subtags.clear ();
+       _current_tag_list->DeleteAllItems ();
+
+       bool have_language = false;
+       for (auto const& i: tag.subtags()) {
+               add_to_current_tag (i.first, i.second);
+               if (i.first == dcp::LanguageTag::SubtagType::LANGUAGE) {
+                       have_language = true;
+               }
+       }
+
+       if (!have_language) {
+               add_to_current_tag (dcp::LanguageTag::SubtagType::LANGUAGE, dcp::LanguageTag::SubtagData("en", "English"));
+       }
+}
+
+
 string LanguageTagDialog::subtag_type_name (dcp::LanguageTag::SubtagType type)
 {
        switch (type) {
-               case dcp::LanguageTag::LANGUAGE:
+               case dcp::LanguageTag::SubtagType::LANGUAGE:
                        return "Language";
-               case dcp::LanguageTag::SCRIPT:
+               case dcp::LanguageTag::SubtagType::SCRIPT:
                        return "Script";
-               case dcp::LanguageTag::REGION:
+               case dcp::LanguageTag::SubtagType::REGION:
                        return "Region";
-               case dcp::LanguageTag::VARIANT:
+               case dcp::LanguageTag::SubtagType::VARIANT:
                        return "Variant";
-               case dcp::LanguageTag::EXTLANG:
+               case dcp::LanguageTag::SubtagType::EXTLANG:
                        return "External";
        }
 
@@ -392,18 +399,18 @@ LanguageTagDialog::setup_sensitivity ()
        _add_region->Enable ();
        _add_variant->Enable ();
        _add_external->Enable ();
-       BOOST_FOREACH (Subtag const& i, _current_tag_subtags) {
+       for (auto const& i: _current_tag_subtags) {
                switch (i.type) {
-                       case dcp::LanguageTag::SCRIPT:
+                       case dcp::LanguageTag::SubtagType::SCRIPT:
                                _add_script->Enable (false);
                                break;
-                       case dcp::LanguageTag::REGION:
+                       case dcp::LanguageTag::SubtagType::REGION:
                                _add_region->Enable (false);
                                break;
-                       case dcp::LanguageTag::VARIANT:
+                       case dcp::LanguageTag::SubtagType::VARIANT:
                                _add_variant->Enable (false);
                                break;
-                       case dcp::LanguageTag::EXTLANG:
+                       case dcp::LanguageTag::SubtagType::EXTLANG:
                                _add_external->Enable (false);
                                break;
                        default:
@@ -429,7 +436,7 @@ RegionSubtagDialog::RegionSubtagDialog (wxWindow* parent, dcp::LanguageTag::Regi
 
        SetSizer (sizer);
 
-       _panel->set (dcp::LanguageTag::REGION, "", *dcp::LanguageTag::get_subtag_data(region));
+       _panel->set (dcp::LanguageTag::SubtagType::REGION, "", *dcp::LanguageTag::get_subtag_data(region));
 }