summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/wx/full_language_tag_dialog.cc65
-rw-r--r--src/wx/language_subtag_panel.cc90
-rw-r--r--src/wx/language_subtag_panel.h45
-rw-r--r--src/wx/subtag_list_ctrl.h7
-rw-r--r--src/wx/wscript1
5 files changed, 142 insertions, 66 deletions
diff --git a/src/wx/full_language_tag_dialog.cc b/src/wx/full_language_tag_dialog.cc
index c181e53fb..c88044088 100644
--- a/src/wx/full_language_tag_dialog.cc
+++ b/src/wx/full_language_tag_dialog.cc
@@ -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
index 000000000..b5cff8051
--- /dev/null
+++ b/src/wx/language_subtag_panel.cc
@@ -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
index 000000000..14d5bab11
--- /dev/null
+++ b/src/wx/language_subtag_panel.h
@@ -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;
+};
diff --git a/src/wx/subtag_list_ctrl.h b/src/wx/subtag_list_ctrl.h
index b1413b361..65071b5f5 100644
--- a/src/wx/subtag_list_ctrl.h
+++ b/src/wx/subtag_list_ctrl.h
@@ -19,6 +19,10 @@
*/
+#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
diff --git a/src/wx/wscript b/src/wx/wscript
index 6bbae6b74..adbdcad44 100644
--- a/src/wx/wscript
+++ b/src/wx/wscript
@@ -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