Use GetCommandLineW() to get a UTF16-encoded command line on Windows (#2248).
[dcpomatic.git] / src / tools / dcpomatic.cc
index 90c939a08308fde0bf9a0bb856e95587dbd63090..e9302c6a0a4a461b4b793f849f37c5b52b3908fc 100644 (file)
 #include "lib/util.h"
 #include "lib/version.h"
 #include "lib/video_content.h"
-#include "lib/warnings.h"
 #include <dcp/exceptions.h>
 #include <dcp/raw_convert.h>
-DCPOMATIC_DISABLE_WARNINGS
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
 #include <wx/cmdline.h>
 #include <wx/generic/aboutdlgg.h>
 #include <wx/preferences.h>
 #include <wx/splash.h>
 #include <wx/stdpaths.h>
 #include <wx/wxhtml.h>
-DCPOMATIC_ENABLE_WARNINGS
+LIBDCP_ENABLE_WARNINGS
 #ifdef __WXGTK__
 #include <X11/Xlib.h>
 #endif
@@ -368,9 +368,8 @@ public:
 
                set_menu_sensitivity ();
 
-               _film_editor->FileChanged.connect (bind (&DOMFrame::file_changed, this, _1));
                _film_editor->content_panel()->SelectionChanged.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this));
-               file_changed ("");
+               set_title ();
 
                JobManager::instance()->ActiveJobsChanged.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this));
 
@@ -390,7 +389,7 @@ public:
 #else
                int accelerators = 6;
 #endif
-               auto accel = new wxAcceleratorEntry[accelerators];
+               std::vector<wxAcceleratorEntry> accel(accelerators);
                /* [Shortcut] Ctrl+A:Add file(s) to the film */
                accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file);
                /* [Shortcut] Delete:Remove selected content from film */
@@ -412,9 +411,8 @@ public:
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::timeline_pressed, this), ID_timeline);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::back_frame, this), ID_back_frame);
                Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this), ID_forward_frame);
-               wxAcceleratorTable accel_table (accelerators, accel);
+               wxAcceleratorTable accel_table (accelerators, accel.data());
                SetAcceleratorTable (accel_table);
-               delete[] accel;
        }
 
        void remove_accelerators ()
@@ -496,8 +494,10 @@ public:
                if (_film) {
                        _film->Change.connect (boost::bind (&DOMFrame::film_change, this, _1));
                        _film->Message.connect (boost::bind(&DOMFrame::film_message, this, _1));
+                       _film->DirtyChange.connect (boost::bind(&DOMFrame::set_title, this));
                        dcpomatic_log = _film->log ();
                }
+               set_title ();
        }
 
        shared_ptr<Film> film () const {
@@ -526,16 +526,6 @@ private:
                }
        }
 
-       void file_changed (boost::filesystem::path f)
-       {
-               auto s = wx_to_std(_("DCP-o-matic"));
-               if (!f.empty ()) {
-                       s += " - " + f.string ();
-               }
-
-               SetTitle (std_to_wx (s));
-       }
-
        void file_new ()
        {
                auto d = new FilmNameLocationDialog (this, _("New Film"), true);
@@ -1535,6 +1525,21 @@ private:
                d->Destroy();
        }
 
+       void set_title ()
+       {
+               auto s = wx_to_std(_("DCP-o-matic"));
+               if (_film) {
+                       if (_film->directory()) {
+                               s += " - " + _film->directory()->string();
+                       }
+                       if (_film->dirty()) {
+                               s += " *";
+                       }
+               }
+
+               SetTitle (std_to_wx(s));
+       }
+
        FilmEditor* _film_editor;
        std::shared_ptr<FilmViewer> _film_viewer;
        StandardControls* _controls;