diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-11-15 22:36:59 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-11-15 22:37:07 +0100 |
| commit | d53acba795613b4adea62017561599fbf1d6d96d (patch) | |
| tree | dec0312291069d88fd9c909a687390379b5803d7 /src | |
| parent | 5b4b0381872a81821f216fb407c73710c77b5d7a (diff) | |
Add Remove button to language tag dialogue.
Diffstat (limited to 'src')
| -rw-r--r-- | src/wx/language_tag_dialog.cc | 26 | ||||
| -rw-r--r-- | src/wx/language_tag_dialog.h | 2 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/wx/language_tag_dialog.cc b/src/wx/language_tag_dialog.cc index 2854479a7..0d0203e90 100644 --- a/src/wx/language_tag_dialog.cc +++ b/src/wx/language_tag_dialog.cc @@ -37,6 +37,7 @@ #include <vector> +using std::min; using std::pair; using std::string; using std::vector; @@ -197,6 +198,8 @@ LanguageTagDialog::LanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag) button_sizer->Add (_add_variant, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _add_external = new wxButton(this, wxID_ANY, "Add external"); button_sizer->Add (_add_external, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); + _remove = new wxButton(this, wxID_ANY, "Remove"); + button_sizer->Add (_remove, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _choose_subtag_panel = new LanguageSubtagPanel (this); _choose_subtag_panel->set (dcp::LanguageTag::LANGUAGE, ""); @@ -233,6 +236,7 @@ LanguageTagDialog::LanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag) _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>())); + _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)); _current_tag_list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind(&LanguageTagDialog::current_tag_selection_changed, this)); @@ -240,6 +244,24 @@ LanguageTagDialog::LanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag) } +void +LanguageTagDialog::remove_from_current_tag () +{ + long int selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + if (selected <= 0) { + return; + } + + _current_tag_subtags.erase (_current_tag_subtags.begin() + selected); + _current_tag_list->DeleteItem (selected); + + _current_tag_list->SetItemState (min(selected, _current_tag_list->GetItemCount() - 1L), wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + + setup_sensitivity (); + current_tag_selection_changed (); +} + + dcp::LanguageTag LanguageTagDialog::get () const { dcp::LanguageTag tag; @@ -354,6 +376,8 @@ LanguageTagDialog::chosen_subtag_changed (optional<dcp::LanguageTag::SubtagData> _current_tag_list->SetItem (selected, 0, subtag_type_name(_current_tag_subtags[selected].type)); _current_tag_list->SetItem (selected, 1, selection->description); } + + setup_sensitivity (); } void @@ -381,6 +405,8 @@ LanguageTagDialog::setup_sensitivity () break; } } + long int selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + _remove->Enable (selected > 0); } diff --git a/src/wx/language_tag_dialog.h b/src/wx/language_tag_dialog.h index 1199e2d53..cd6f2c8b3 100644 --- a/src/wx/language_tag_dialog.h +++ b/src/wx/language_tag_dialog.h @@ -56,6 +56,7 @@ private: std::string subtag_type_name (dcp::LanguageTag::SubtagType type); void search_changed (std::string search); void add_to_current_tag (dcp::LanguageTag::SubtagType type, boost::optional<dcp::LanguageTag::SubtagData> subtag); + void remove_from_current_tag (); void current_tag_selection_changed (); void chosen_subtag_changed (boost::optional<dcp::LanguageTag::SubtagData> selection); void setup_sensitivity (); @@ -67,6 +68,7 @@ private: wxButton* _add_region; wxButton* _add_variant; wxButton* _add_external; + wxButton* _remove; }; |
