pot/merge.
[dcpomatic.git] / src / wx / wx_util.cc
index dd4ec3948765bbcdbf9946c8d0a923c3a669f24e..4fde32674c2129721c3b8c87839c2f14227238e7 100644 (file)
@@ -46,12 +46,11 @@ using dcp::locale_convert;
  */
 wxStaticText *
 #ifdef __WXOSX__
-add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool left, int prop)
+add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool left, int prop, int flags)
 #else
-add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool, int prop)
+add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool, int prop, int flags)
 #endif
 {
-       int flags = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT;
 #ifdef __WXOSX__
        if (left) {
                flags |= wxALIGN_RIGHT;
@@ -85,11 +84,15 @@ add_label_to_sizer (wxGridBagSizer* s, wxWindow* p, wxString t, bool, wxGBPositi
 /** Pop up an error dialogue box.
  *  @param parent Parent.
  *  @param m Message.
+ *  @param e Extended message.
  */
 void
-error_dialog (wxWindow* parent, wxString m)
+error_dialog (wxWindow* parent, wxString m, optional<wxString> e)
 {
        wxMessageDialog* d = new wxMessageDialog (parent, m, _("DCP-o-matic"), wxOK | wxICON_ERROR);
+       if (e) {
+               d->SetExtendedMessage (*e);
+       }
        d->ShowModal ();
        d->Destroy ();
 }
@@ -404,3 +407,32 @@ maybe_show_splash ()
 
        return splash;
 }
+
+boost::filesystem::path
+path_from_file_dialog (wxFileDialog* dialog, string extension)
+{
+       return boost::filesystem::path(wx_to_std(dialog->GetPath())).replace_extension(extension);
+}
+
+double
+calculate_mark_interval (double mark_interval)
+{
+       if (mark_interval > 5) {
+               mark_interval -= lrint (mark_interval) % 5;
+       }
+       if (mark_interval > 10) {
+               mark_interval -= lrint (mark_interval) % 10;
+       }
+       if (mark_interval > 60) {
+               mark_interval -= lrint (mark_interval) % 60;
+       }
+       if (mark_interval > 3600) {
+               mark_interval -= lrint (mark_interval) % 3600;
+       }
+
+       if (mark_interval < 1) {
+               mark_interval = 1;
+       }
+
+       return mark_interval;
+}