Put * in the title bar when the DCP-o-matic project is modified (#1938).
[dcpomatic.git] / src / tools / dcpomatic.cc
index 90c939a08308fde0bf9a0bb856e95587dbd63090..8455163bb608970691441b689b98df902cd4232a 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));
 
@@ -496,8 +495,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 +527,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 +1526,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;