Merge master.
[dcpomatic.git] / src / tools / dcpomatic.cc
index 196045a9b94642fb4005ce010f93b158142bcc7e..ac39d4fedb823ccdf76c83de4f35f5cd04871dfc 100644 (file)
 #ifdef __WXMSW__
 #include <shellapi.h>
 #endif
-#include <wx/aboutdlg.h>
+#ifdef __WXOSX__
+#include <ApplicationServices/ApplicationServices.h>
+#endif
+#include <wx/generic/aboutdlgg.h>
 #include <wx/stdpaths.h>
 #include <wx/cmdline.h>
 #include "wx/film_viewer.h"
 #include "wx/new_film_dialog.h"
 #include "wx/properties_dialog.h"
 #include "wx/wx_ui_signaller.h"
+#include "wx/about_dialog.h"
 #include "lib/film.h"
-#include "lib/format.h"
 #include "lib/config.h"
-#include "lib/filter.h"
 #include "lib/util.h"
-#include "lib/scaler.h"
-#include "lib/exceptions.h"
 #include "lib/version.h"
 #include "lib/ui_signaller.h"
 #include "lib/log.h"
@@ -146,13 +146,9 @@ enum {
        ID_file_open,
        ID_file_save,
        ID_file_properties,
-       ID_file_quit,
-       ID_edit_preferences,
        ID_jobs_make_dcp,
        ID_jobs_send_dcp_to_tms,
        ID_jobs_show_dcp,
-       ID_jobs_analyse_audio,
-       ID_help_about
 };
 
 void
@@ -165,24 +161,34 @@ setup_menu (wxMenuBar* m)
        add_item (file, _("&Save"), ID_file_save, NEEDS_FILM);
        file->AppendSeparator ();
        add_item (file, _("&Properties..."), ID_file_properties, NEEDS_FILM);
+#ifndef __WXOSX__      
        file->AppendSeparator ();
-       add_item (file, _("&Quit"), ID_file_quit, ALWAYS);
+#endif
+       add_item (file, _("&Exit"), wxID_EXIT, ALWAYS);
 
+#ifdef __WXOSX__       
+       add_item (file, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
+#else
        wxMenu* edit = new wxMenu;
-       add_item (edit, _("&Preferences..."), ID_edit_preferences, ALWAYS);
+       add_item (edit, _("&Preferences..."), wxID_PREFERENCES, ALWAYS);
+#endif 
 
        jobs_menu = new wxMenu;
        add_item (jobs_menu, _("&Make DCP"), ID_jobs_make_dcp, NEEDS_FILM);
        add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM);
        add_item (jobs_menu, _("S&how DCP"), ID_jobs_show_dcp, NEEDS_FILM);
-       jobs_menu->AppendSeparator ();
-       add_item (jobs_menu, _("&Analyse audio"), ID_jobs_analyse_audio, NEEDS_FILM);
 
        wxMenu* help = new wxMenu;
-       add_item (help, _("About"), ID_help_about, ALWAYS);
+#ifdef __WXOSX__       
+       add_item (help, _("About DCP-o-matic"), wxID_ABOUT, ALWAYS);
+#else  
+       add_item (help, _("About"), wxID_ABOUT, ALWAYS);
+#endif 
 
        m->Append (file, _("&File"));
+#ifndef __WXOSX__      
        m->Append (edit, _("&Edit"));
+#endif 
        m->Append (jobs_menu, _("&Jobs"));
        m->Append (help, _("&Help"));
 }
@@ -208,13 +214,12 @@ public:
                Connect (ID_file_open, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_open));
                Connect (ID_file_save, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_save));
                Connect (ID_file_properties, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_properties));
-               Connect (ID_file_quit, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_quit));
-               Connect (ID_edit_preferences, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::edit_preferences));
+               Connect (wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::file_exit));
+               Connect (wxID_PREFERENCES, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::edit_preferences));
                Connect (ID_jobs_make_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_make_dcp));
                Connect (ID_jobs_send_dcp_to_tms, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_send_dcp_to_tms));
                Connect (ID_jobs_show_dcp, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_show_dcp));
-               Connect (ID_jobs_analyse_audio, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::jobs_analyse_audio));
-               Connect (ID_help_about, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about));
+               Connect (wxID_ABOUT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler (Frame::help_about));
 
                Connect (wxID_ANY, wxEVT_MENU_OPEN, wxMenuEventHandler (Frame::menu_opened));
 
@@ -346,7 +351,7 @@ private:
                d->Destroy ();
        }
        
-       void file_quit (wxCommandEvent &)
+       void file_exit (wxCommandEvent &)
        {
                maybe_save_then_delete_film ();
                Close (true);
@@ -390,41 +395,11 @@ private:
 #endif         
        }
 
-       void jobs_analyse_audio (wxCommandEvent &)
-       {
-               film->analyse_audio ();
-       }
-       
        void help_about (wxCommandEvent &)
        {
-               wxAboutDialogInfo info;
-               info.SetName (_("DCP-o-matic"));
-               if (strcmp (dcpomatic_git_commit, "release") == 0) {
-                       info.SetVersion (std_to_wx (String::compose ("version %1", dcpomatic_version)));
-               } else {
-                       info.SetVersion (std_to_wx (String::compose ("version %1 git %2", dcpomatic_version, dcpomatic_git_commit)));
-               }
-               info.SetDescription (_("Free, open-source DCP generation from almost anything."));
-               info.SetCopyright (_("(C) 2012-2013 Carl Hetherington, Terrence Meiczinger, Paul Davis, Ole Laursen"));
-
-               wxArrayString authors;
-               authors.Add (wxT ("Carl Hetherington"));
-               authors.Add (wxT ("Terrence Meiczinger"));
-               authors.Add (wxT ("Paul Davis"));
-               authors.Add (wxT ("Ole Laursen"));
-               info.SetDevelopers (authors);
-
-               wxArrayString translators;
-               translators.Add (wxT ("Olivier Perriere"));
-               translators.Add (wxT ("Lilian Lefranc"));
-               translators.Add (wxT ("Thierry Journet"));
-               translators.Add (wxT ("Massimiliano Broggi"));
-               translators.Add (wxT ("Manuel AC"));
-               translators.Add (wxT ("Adam Klotblixt"));
-               info.SetTranslators (translators);
-               
-               info.SetWebSite (wxT ("http://carlh.net/software/dcpomatic"));
-               wxAboutBox (info);
+               AboutDialog* d = new AboutDialog (this);
+               d->ShowModal ();
+               d->Destroy ();
        }
 };
 
@@ -452,8 +427,14 @@ class App : public wxApp
                        return false;
                }
                
-#ifdef DCPOMATIC_POSIX         
+#ifdef DCPOMATIC_LINUX 
                unsetenv ("UBUNTU_MENUPROXY");
+#endif
+
+#ifdef __WXOSX__               
+               ProcessSerialNumber serial;
+               GetCurrentProcess (&serial);
+               TransformProcessType (&serial, kProcessTransformToForegroundApplication);
 #endif         
 
                wxInitAllImageHandlers ();