Fix error when opening the right-click content menu.
[dcpomatic.git] / src / wx / dcpomatic_choice.cc
index 168d76430bfc3822fce2a2685c6980fbf74d6142..2f1a6f0e9b782b34d006912afd71b9cc5350fc13 100644 (file)
@@ -70,6 +70,18 @@ Choice::add(wxString const& entry, wxClientData* data)
 }
 
 
+void
+Choice::add(wxString const& entry, wxString const& data)
+{
+       if (_needs_clearing) {
+               Clear();
+               _needs_clearing = false;
+       }
+
+       Append(entry, new wxStringClientData(data));
+}
+
+
 void
 Choice::set(int index)
 {
@@ -77,6 +89,20 @@ Choice::set(int index)
 }
 
 
+void
+Choice::set_by_data(wxString const& data)
+{
+       for (unsigned int i = 0; i < GetCount(); ++i) {
+               if (auto client_data = dynamic_cast<wxStringClientData*>(GetClientObject(i))) {
+                       if (client_data->GetData() == data) {
+                               set(i);
+                               return;
+                       }
+               }
+       }
+}
+
+
 optional<int>
 Choice::get() const
 {
@@ -88,3 +114,15 @@ Choice::get() const
        return sel;
 }
 
+
+optional<wxString>
+Choice::get_data() const
+{
+       auto index = get();
+       if (!index) {
+               return {};
+       }
+
+       return dynamic_cast<wxStringClientData*>(GetClientObject(*index))->GetData();
+}
+