Some C++11 stuff.
[dcpomatic.git] / src / tools / dcpomatic_disk.cc
index 92429aa53238c43a75a57bae33328750c895696a..17a24d4c102e651099d0b8ef0f9f33bb27ba3f5f 100644 (file)
@@ -51,13 +51,20 @@ using std::string;
 using std::exception;
 using std::cout;
 using std::cerr;
-using boost::shared_ptr;
+using std::shared_ptr;
 using boost::optional;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
 #endif
 
 
+#ifdef DCPOMATIC_OSX
+enum {
+       ID_tools_uninstall = 1,
+};
+#endif
+
+
 class DOMFrame : public wxFrame
 {
 public:
@@ -66,6 +73,15 @@ public:
                , _nanomsg (true)
                , _sizer (new wxBoxSizer(wxVERTICAL))
        {
+#ifdef DCPOMATIC_OSX
+               wxMenuBar* bar = new wxMenuBar;
+               wxMenu* tools = new wxMenu;
+               tools->Append(ID_tools_uninstall, _("Uninstall..."));
+               bar->Append(tools, _("Tools"));
+               SetMenuBar (bar);
+               Bind (wxEVT_MENU, boost::bind(&DOMFrame::uninstall, this), ID_tools_uninstall);
+#endif
+
                /* Use a panel as the only child of the Frame so that we avoid
                   the dark-grey background on Windows.
                */
@@ -113,7 +129,7 @@ public:
                _sizer->Add (grid, 1, wxALL | wxEXPAND, DCPOMATIC_DIALOG_BORDER);
                overall_panel->SetSizer (_sizer);
                Fit ();
-               SetSize (768, GetSize().GetHeight() + 32);
+               SetSize (1024, GetSize().GetHeight() + 32);
 
                /* XXX: this is a hack, but I expect we'll need logs and I'm not sure if there's
                 * a better place to put them.
@@ -163,6 +179,14 @@ private:
        }
 
 
+#ifdef DCPOMATIC_OSX
+       void uninstall()
+       {
+               system(String::compose("osascript \"%1/uninstall_disk.applescript\"", resources_path().string()).c_str());
+       }
+#endif
+
+
        bool should_close ()
        {
                if (!JobManager::instance()->work_to_do()) {
@@ -293,7 +317,7 @@ private:
                int re_select = wxNOT_FOUND;
                int j = 0;
                _drives = Drive::get ();
-               BOOST_FOREACH (Drive i, _drives) {
+               for (auto i: _drives) {
                        wxString const s = std_to_wx(i.description());
                        if (s == current) {
                                re_select = j;
@@ -349,6 +373,7 @@ public:
 #endif
 
 #ifdef DCPOMATIC_OSX
+                       dcpomatic_sleep_seconds (1);
                        make_foreground_application ();
 #endif