Merge branch 'master' into 1.0
[dcpomatic.git] / src / wx / wx_util.cc
index bc444e4bc2a6370ed54d100cb51f864f17345229..e0d7d843ff51fb31f06881592e670f3adab6dbce 100644 (file)
@@ -36,25 +36,43 @@ using namespace boost;
  *  @param prop Proportion to pass when calling Add() on the wxSizer.
  */
 wxStaticText *
-add_label_to_sizer (wxSizer* s, wxWindow* p, string t, int prop)
+add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, int prop)
 {
-       wxStaticText* m = new wxStaticText (p, wxID_ANY, std_to_wx (t));
+       wxStaticText* m = new wxStaticText (p, wxID_ANY, t);
        s->Add (m, prop, wxALIGN_CENTER_VERTICAL | wxALL, 6);
        return m;
 }
 
+wxStaticText *
+add_label_to_grid_bag_sizer (wxGridBagSizer* s, wxWindow* p, wxString t, wxGBPosition pos, wxGBSpan span)
+{
+       wxStaticText* m = new wxStaticText (p, wxID_ANY, t);
+       s->Add (m, pos, span, wxALIGN_CENTER_VERTICAL | wxALL, 6);
+       return m;
+}
+
 /** Pop up an error dialogue box.
  *  @param parent Parent.
  *  @param m Message.
  */
 void
-error_dialog (wxWindow* parent, string m)
+error_dialog (wxWindow* parent, wxString m)
 {
-       wxMessageDialog* d = new wxMessageDialog (parent, std_to_wx (m), wxT ("DVD-o-matic"), wxOK);
+       wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK);
        d->ShowModal ();
        d->Destroy ();
 }
 
+bool
+confirm_dialog (wxWindow* parent, wxString m)
+{
+       wxMessageDialog* d = new wxMessageDialog (parent, m, _("DVD-o-matic"), wxYES_NO | wxICON_QUESTION);
+       int const r = d->ShowModal ();
+       d->Destroy ();
+       return r == wxID_YES;
+}
+       
+
 /** @param s wxWidgets string.
  *  @return Corresponding STL string.
  */
@@ -79,8 +97,8 @@ int const ThreadedStaticText::_update_event_id = 10000;
  *  @param initial Initial text for the wxStaticText while the computation is being run.
  *  @param fn Function which works out what the wxStaticText content should be and returns it.
  */
-ThreadedStaticText::ThreadedStaticText (wxWindow* parent, string initial, function<string ()> fn)
-       : wxStaticText (parent, wxID_ANY, std_to_wx (initial))
+ThreadedStaticText::ThreadedStaticText (wxWindow* parent, wxString initial, function<string ()> fn)
+       : wxStaticText (parent, wxID_ANY, initial)
 {
        Connect (_update_event_id, wxEVT_COMMAND_TEXT_UPDATED, wxCommandEventHandler (ThreadedStaticText::thread_finished), 0, this);
        _thread = new thread (bind (&ThreadedStaticText::run, this, fn));
@@ -138,22 +156,15 @@ checked_set (wxSpinCtrl* widget, int value)
 }
 
 void
-checked_set (wxComboBox* widget, int value)
+checked_set (wxChoice* widget, int value)
 {
        if (widget->GetSelection() != value) {
-               if (value == wxNOT_FOUND) {
-                       /* Work around an apparent wxWidgets bug; SetSelection (wxNOT_FOUND)
-                          appears not to work sometimes.
-                       */
-                       widget->SetValue (wxT (""));
-               } else {
-                       widget->SetSelection (value);
-               }
+               widget->SetSelection (value);
        }
 }
 
 void
-checked_set (wxComboBox* widget, string value)
+checked_set (wxChoice* widget, string value)
 {
        wxClientData* o = 0;
        if (widget->GetSelection() != -1) {
@@ -177,6 +188,14 @@ checked_set (wxTextCtrl* widget, string value)
        }
 }
 
+void
+checked_set (wxStaticText* widget, string value)
+{
+       if (widget->GetLabel() != std_to_wx (value)) {
+               widget->SetLabel (std_to_wx (value));
+       }
+}
+
 void
 checked_set (wxCheckBox* widget, bool value)
 {