From 04f8ba59d17e726570b4c1f361f10c7548fbe5c2 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 16 Jan 2022 17:35:15 +0100 Subject: [PATCH] Put * in the title bar when the DCP-o-matic project is modified (#1938). --- src/lib/film.cc | 8 ++++++-- src/lib/film.h | 6 ++++-- src/tools/dcpomatic.cc | 10 ++++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/lib/film.cc b/src/lib/film.cc index 1ea03a8d9..e49b7f78e 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -482,7 +482,7 @@ Film::write_metadata (boost::filesystem::path path) const /** Write state to our `metadata' file */ void -Film::write_metadata () const +Film::write_metadata () { DCPOMATIC_ASSERT (directory()); boost::filesystem::create_directories (directory().get()); @@ -2178,8 +2178,12 @@ Film::set_sign_language_video_language (optional lang) void -Film::set_dirty (bool dirty) const +Film::set_dirty (bool dirty) { + auto const changed = dirty != _dirty; _dirty = dirty; + if (changed) { + emit (boost::bind(boost::ref(DirtyChange), _dirty)); + } } diff --git a/src/lib/film.h b/src/lib/film.h index 9be6c5771..d42eb5626 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -131,7 +131,7 @@ public: void use_template (std::string name); std::list read_metadata (boost::optional path = boost::optional ()); - void write_metadata () const; + void write_metadata (); void write_metadata (boost::filesystem::path path) const; void write_template (boost::filesystem::path path) const; std::shared_ptr metadata (bool with_content_paths = true) const; @@ -481,6 +481,8 @@ public: */ mutable boost::signals2::signal LengthChange; + boost::signals2::signal DirtyChange; + /** Emitted when we have something important to tell the user */ boost::signals2::signal Message; @@ -507,7 +509,7 @@ private: void audio_analysis_finished (); void check_settings_consistency (); void maybe_set_container_and_resolution (); - void set_dirty (bool dirty) const; + void set_dirty (bool dirty); /** Log to write to */ std::shared_ptr _log; diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index a14a27343..8455163bb 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -495,6 +495,7 @@ 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 (); @@ -1528,8 +1529,13 @@ private: void set_title () { auto s = wx_to_std(_("DCP-o-matic")); - if (_film && _film->directory()) { - s += " - " + _film->directory()->string(); + if (_film) { + if (_film->directory()) { + s += " - " + _film->directory()->string(); + } + if (_film->dirty()) { + s += " *"; + } } SetTitle (std_to_wx(s)); -- 2.30.2