Extract LanguageSubtagPanel to its own files.
authorCarl Hetherington <cth@carlh.net>
Thu, 24 Nov 2022 22:45:31 +0000 (23:45 +0100)
committerCarl Hetherington <cth@carlh.net>
Thu, 24 Nov 2022 22:45:31 +0000 (23:45 +0100)
src/wx/full_language_tag_dialog.cc
src/wx/language_subtag_panel.cc [new file with mode: 0644]
src/wx/language_subtag_panel.h [new file with mode: 0644]
src/wx/subtag_list_ctrl.h
src/wx/wscript

index c181e53fb6f86e001c31d9cfb90ccca415c9e693..c88044088733b8bc86e60d64d31ef2fc2616a0bb 100644 (file)
@@ -20,6 +20,7 @@
 
 
 #include "full_language_tag_dialog.h"
+#include "language_subtag_panel.h"
 #include "subtag_list_ctrl.h"
 #include "lib/dcpomatic_assert.h"
 #include <dcp/language_tag.h>
@@ -50,70 +51,6 @@ using namespace boost::placeholders;
 #endif
 
 
-class LanguageSubtagPanel : public wxPanel
-{
-public:
-       LanguageSubtagPanel (wxWindow* parent)
-               : wxPanel (parent, wxID_ANY)
-       {
-#ifdef __WXGTK3__
-               int const height = 30;
-#else
-               int const height = -1;
-#endif
-
-               _search = new wxSearchCtrl (this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(200, height));
-               _list = new SubtagListCtrl (this);
-
-               auto sizer = new wxBoxSizer (wxVERTICAL);
-               sizer->Add (_search, 0, wxALL, 8);
-               sizer->Add (_list, 1, wxALL, 8);
-               SetSizer (sizer);
-
-               _search->Bind (wxEVT_TEXT, boost::bind(&LanguageSubtagPanel::search_changed, this));
-               _list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind(&LanguageSubtagPanel::selection_changed, this));
-               _list->Bind (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&LanguageSubtagPanel::selection_changed, this));
-       }
-
-       void set (dcp::LanguageTag::SubtagType type, string search, optional<dcp::LanguageTag::SubtagData> subtag = optional<dcp::LanguageTag::SubtagData>())
-       {
-               _list->set (type, search, subtag);
-               _search->SetValue (wxString(search));
-       }
-
-       optional<dcp::LanguageTag::RegionSubtag> get () const
-       {
-               if (!_list->selected_subtag()) {
-                       return {};
-               }
-
-               return dcp::LanguageTag::RegionSubtag(_list->selected_subtag()->subtag);
-       }
-
-       boost::signals2::signal<void (optional<dcp::LanguageTag::SubtagData>)> SelectionChanged;
-       boost::signals2::signal<void (string)> SearchChanged;
-
-private:
-       void search_changed ()
-       {
-               auto search = _search->GetValue();
-               _list->set_search (search.ToStdString());
-               if (search.Length() > 0 && _list->GetItemCount() > 0) {
-                       _list->EnsureVisible (0);
-               }
-               SearchChanged (_search->GetValue().ToStdString());
-       }
-
-       void selection_changed ()
-       {
-               SelectionChanged (_list->selected_subtag());
-       }
-
-       wxSearchCtrl* _search;
-       SubtagListCtrl* _list;
-};
-
-
 FullLanguageTagDialog::FullLanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag)
        : wxDialog (parent, wxID_ANY, _("Language Tag"), wxDefaultPosition, wxSize(-1, 500))
 {
diff --git a/src/wx/language_subtag_panel.cc b/src/wx/language_subtag_panel.cc
new file mode 100644 (file)
index 0000000..b5cff80
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+    Copyright (C) 2021 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include "language_subtag_panel.h"
+#include <wx/srchctrl.h>
+#include <wx/wx.h>
+
+
+using std::string;
+using boost::optional;
+
+
+LanguageSubtagPanel::LanguageSubtagPanel(wxWindow* parent)
+       : wxPanel (parent, wxID_ANY)
+{
+#ifdef __WXGTK3__
+       int const height = 30;
+#else
+       int const height = -1;
+#endif
+
+       _search = new wxSearchCtrl(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(200, height));
+       _list = new SubtagListCtrl(this);
+
+       auto sizer = new wxBoxSizer(wxVERTICAL);
+       sizer->Add(_search, 0, wxALL, 8);
+       sizer->Add(_list, 1, wxALL, 8);
+       SetSizer(sizer);
+
+       _search->Bind(wxEVT_TEXT, boost::bind(&LanguageSubtagPanel::search_changed, this));
+       _list->Bind(wxEVT_LIST_ITEM_SELECTED, boost::bind(&LanguageSubtagPanel::selection_changed, this));
+       _list->Bind(wxEVT_LIST_ITEM_DESELECTED, boost::bind(&LanguageSubtagPanel::selection_changed, this));
+}
+
+
+void
+LanguageSubtagPanel::set(dcp::LanguageTag::SubtagType type, string search, optional<dcp::LanguageTag::SubtagData> subtag)
+{
+       _list->set(type, search, subtag);
+       _search->SetValue(wxString(search));
+}
+
+
+optional<dcp::LanguageTag::RegionSubtag>
+LanguageSubtagPanel::get() const
+{
+       if (!_list->selected_subtag()) {
+               return {};
+       }
+
+       return dcp::LanguageTag::RegionSubtag(_list->selected_subtag()->subtag);
+}
+
+
+void
+LanguageSubtagPanel::search_changed()
+{
+       auto search = _search->GetValue();
+       _list->set_search(search.ToStdString());
+       if (search.Length() > 0 && _list->GetItemCount() > 0) {
+               _list->EnsureVisible (0);
+       }
+       SearchChanged(_search->GetValue().ToStdString());
+}
+
+
+void
+LanguageSubtagPanel::selection_changed()
+{
+       SelectionChanged(_list->selected_subtag());
+}
+
diff --git a/src/wx/language_subtag_panel.h b/src/wx/language_subtag_panel.h
new file mode 100644 (file)
index 0000000..14d5bab
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+    Copyright (C) 2021 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+
+#include "subtag_list_ctrl.h"
+#include <wx/srchctrl.h>
+#include <wx/wx.h>
+#include <boost/signals2.hpp>
+
+
+class LanguageSubtagPanel : public wxPanel
+{
+public:
+       LanguageSubtagPanel(wxWindow* parent);
+
+       void set(dcp::LanguageTag::SubtagType type, std::string search, boost::optional<dcp::LanguageTag::SubtagData> subtag = boost::optional<dcp::LanguageTag::SubtagData>());
+       boost::optional<dcp::LanguageTag::RegionSubtag> get() const;
+
+       boost::signals2::signal<void (boost::optional<dcp::LanguageTag::SubtagData>)> SelectionChanged;
+       boost::signals2::signal<void (std::string)> SearchChanged;
+
+private:
+       void search_changed();
+       void selection_changed();
+
+       wxSearchCtrl* _search;
+       SubtagListCtrl* _list;
+};
index b1413b361d521753cace12492cb800436fe87050..65071b5f53e5e7eb133978deedd20ce0b3abd6c0 100644 (file)
 */
 
 
+#ifndef DCPOMATIC_SUBTAG_LIST_CTRL_H
+#define DCPOMATIC_SUBTAG_LIST_CTRL_H
+
+
 #include <dcp/language_tag.h>
 #include <wx/listctrl.h>
 #include <vector>
@@ -41,5 +45,4 @@ private:
 };
 
 
-
-
+#endif
index 6bbae6b743e80e961bb9a9d8ffec3f45a057c59a..adbdcad44a582cacf35589ace01c71ca74b268b3 100644 (file)
@@ -96,6 +96,7 @@ sources = """
           kdm_dialog.cc
           kdm_output_panel.cc
           kdm_timing_panel.cc
+          language_subtag_panel.cc
           language_tag_dialog.cc
           language_tag_widget.cc
           kdm_choice.cc