C++11 tidying.
[dcpomatic.git] / src / wx / name_format_editor.h
index 1ca4c0b719864b0ae9adcb934f30fbed18130f8d..596b427409c2447ec621a80d66abe3b8906d62d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2016 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2016-2021 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 
 */
 
+
 #ifndef DCPOMATIC_NAME_FORMAT_EDITOR_H
 #define DCPOMATIC_NAME_FORMAT_EDITOR_H
 
+
 #include "lib/compose.hpp"
+#include "lib/warnings.h"
 #include <dcp/name_format.h>
+DCPOMATIC_DISABLE_WARNINGS
 #include <wx/wx.h>
-#include <boost/foreach.hpp>
+DCPOMATIC_ENABLE_WARNINGS
+#include <boost/signals2.hpp>
+
 
-template <class T>
 class NameFormatEditor
 {
 public:
-       NameFormatEditor (wxWindow* parent, T name)
-               : _panel (new wxPanel (parent))
-               , _example (new wxStaticText (_panel, wxID_ANY, ""))
-               , _sizer (new wxBoxSizer (wxVERTICAL))
-               , _specification (new wxTextCtrl (_panel, wxID_ANY, ""))
-               , _name (name)
-       {
-               _sizer->Add (_specification, 0, wxEXPAND, DCPOMATIC_SIZER_Y_GAP);
-               _sizer->Add (_example, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP);
-               _panel->SetSizer (_sizer);
-
-               BOOST_FOREACH (dcp::NameFormat::Component c, name.components ()) {
-                       wxStaticText* t = new wxStaticText (_panel, wxID_ANY, std_to_wx (String::compose ("%%%1 %2", c.placeholder, c.title)));
-                       _sizer->Add (t);
-                       wxFont font = t->GetFont();
-                       font.SetStyle (wxFONTSTYLE_ITALIC);
-                       font.SetPointSize (font.GetPointSize() - 1);
-                       t->SetFont (font);
-                       t->SetForegroundColour (wxColour (0, 0, 204));
-               }
-
-               _specification->SetValue (std_to_wx (_name.specification ()));
-               _specification->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&NameFormatEditor::changed, this));
-
-               update_example ();
-       }
+       NameFormatEditor (wxWindow* parent, dcp::NameFormat name, dcp::NameFormat::Map titles, dcp::NameFormat::Map examples, std::string suffix);
 
-       wxPanel* panel () const
-       {
+       wxPanel* panel () const {
                return _panel;
        }
 
-       void set_example (dcp::NameFormat::Map v) {
-               _example_values = v;
-               update_example ();
-       }
-
-       T get () const {
+       dcp::NameFormat get () const {
                return _name;
        }
 
@@ -75,35 +49,18 @@ public:
 
 private:
 
-       void changed ()
-       {
-               update_example ();
-               Changed ();
-       }
-
-       virtual void update_example ()
-       {
-               _name.set_specification (wx_to_std (_specification->GetValue ()));
-
-               wxString example = wxString::Format (_("e.g. %s"), _name.get (_example_values));
-               wxString wrapped;
-               for (size_t i = 0; i < example.Length(); ++i) {
-                       if (i > 0 && (i % 30) == 0) {
-                               wrapped += "\n";
-                       }
-                       wrapped += example[i];
-               }
-
-               _example->SetLabel (wrapped);
-       }
+       void changed ();
+       void update_example ();
 
        wxPanel* _panel;
        wxStaticText* _example;
        wxSizer* _sizer;
        wxTextCtrl* _specification;
 
-       T _name;
-       dcp::NameFormat::Map _example_values;
+       dcp::NameFormat _name;
+       dcp::NameFormat::Map _examples;
+       std::string _suffix;
 };
 
+
 #endif