Give a message when changed files are re-examined.
authorCarl Hetherington <cth@carlh.net>
Tue, 21 Aug 2018 22:03:04 +0000 (23:03 +0100)
committerCarl Hetherington <cth@carlh.net>
Tue, 21 Aug 2018 22:03:04 +0000 (23:03 +0100)
src/lib/check_content_change_job.cc
src/lib/job.cc
src/lib/job.h
src/wx/job_view.cc
src/wx/message_dialog.cc [new file with mode: 0644]
src/wx/message_dialog.h [new file with mode: 0644]
src/wx/wscript

index 0862ab085323eaac5966b34358b0760a1d5ebf5b..bb3674f27b42471fa1518f04abd8508ae7a1db9d 100644 (file)
@@ -61,19 +61,15 @@ CheckContentChangeJob::run ()
        BOOST_FOREACH (shared_ptr<Content> i, _film->content()) {
                bool ic = false;
                for (size_t j = 0; j < i->number_of_paths(); ++j) {
-                       cout << boost::filesystem::last_write_time(i->path(j)) << " " << i->last_write_time(j) << "\n";
                        if (boost::filesystem::last_write_time(i->path(j)) != i->last_write_time(j)) {
-                               cout << "last write differs.\n";
                                ic = true;
                                break;
                        }
                }
                if (!ic && i->calculate_digest() != i->digest()) {
-                       cout << "digest differs.\n";
                        ic = true;
                }
                if (ic) {
-                       cout << i->path(0) << " changed.\n";
                        changed.push_back (i);
                }
        }
@@ -82,6 +78,10 @@ CheckContentChangeJob::run ()
                JobManager::instance()->add(shared_ptr<Job>(new ExamineContentJob(_film, i)));
        }
 
+       if (!changed.empty()) {
+               set_message (_("Some files were changed since they were added to the project.\n\nThese files will now be re-examined, so you may need to check their settings."));
+       }
+
        set_progress (1);
        set_state (FINISHED_OK);
 }
index ec6d5d306e21e5c5bbe50834d50fee05d4fbee24..0cbf13640ccfa5f91ee876e84ec80d3d7568998e 100644 (file)
@@ -570,3 +570,17 @@ Job::when_finished (boost::signals2::connection& connection, function<void()> fi
                connection = Finished.connect (finished);
        }
 }
+
+optional<string>
+Job::message () const
+{
+       boost::mutex::scoped_lock lm (_state_mutex);
+       return _message;
+}
+
+void
+Job::set_message (string m)
+{
+       boost::mutex::scoped_lock lm (_state_mutex);
+       _message = m;
+}
index d2691a3cbcc66e677400e914bcdbebdf2307ee1a..4fc61cb266d2a7810ba42714dfeaaa618a0447ce 100644 (file)
@@ -67,6 +67,8 @@ public:
        std::string error_summary () const;
        std::string error_details () const;
 
+       boost::optional<std::string> message () const;
+
        virtual std::string status () const;
        std::string json_status () const;
        std::string sub_name () const {
@@ -105,6 +107,7 @@ protected:
 
        void set_state (State);
        void set_error (std::string s, std::string d);
+       void set_message (std::string m);
        int elapsed_sub_time () const;
        void check_for_interruption_or_pause ();
 
@@ -117,13 +120,15 @@ private:
 
        boost::thread* _thread;
 
-       /** mutex for _state and _error */
+       /** mutex for _state, _error*, _message */
        mutable boost::mutex _state_mutex;
        /** current state of the job */
        State _state;
        /** summary of an error that has occurred (when state == FINISHED_ERROR) */
        std::string _error_summary;
        std::string _error_details;
+       /** a message that should be given to the user when the job finishes */
+       boost::optional<std::string> _message;
 
        /** time that this job was started */
        time_t _start_time;
index 43d6f2fedd9ca90f44d4ec3e191fb673af560f2f..5d3cc0f9cf74ad2c0eabb5ea2824d268168f9fa1 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "job_view.h"
 #include "wx_util.h"
+#include "message_dialog.h"
 #include "lib/job.h"
 #include "lib/job_manager.h"
 #include "lib/compose.hpp"
@@ -134,6 +135,12 @@ JobView::finished ()
                _details->Enable (true);
        }
 
+       if (_job->message()) {
+               MessageDialog* d = new MessageDialog (_parent, _job->name(), _job->message().get());
+               d->ShowModal ();
+               d->Destroy ();
+       }
+
        if ((dynamic_pointer_cast<TranscodeJob>(_job) || dynamic_pointer_cast<AnalyseAudioJob>(_job)) && _notify->GetValue()) {
                if (Config::instance()->notification(Config::MESSAGE_BOX)) {
                        wxMessageBox (std_to_wx(_job->name() + ": " + _job->status()), _("DCP-o-matic"), wxICON_INFORMATION);
diff --git a/src/wx/message_dialog.cc b/src/wx/message_dialog.cc
new file mode 100644 (file)
index 0000000..b3cbb53
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+    Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "message_dialog.h"
+#include "wx_util.h"
+
+MessageDialog::MessageDialog (wxWindow* parent, wxString title, wxString message)
+       : wxDialog (parent, wxID_ANY, title)
+{
+       wxSizer* sizer = new wxBoxSizer (wxVERTICAL);
+       wxStaticText* text = new wxStaticText (this, wxID_ANY, message);
+       sizer->Add (text, 1, wxALL, DCPOMATIC_DIALOG_BORDER);
+       wxSizer* buttons = CreateSeparatedButtonSizer (wxCLOSE);
+       if (buttons) {
+               sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder());
+        }
+       SetSizer (sizer);
+       sizer->Layout ();
+       sizer->SetSizeHints (this);
+}
diff --git a/src/wx/message_dialog.h b/src/wx/message_dialog.h
new file mode 100644 (file)
index 0000000..0f62590
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+    Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+
+    This file is part of DCP-o-matic.
+
+    DCP-o-matic is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    DCP-o-matic is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with DCP-o-matic.  If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include <wx/wx.h>
+
+class MessageDialog : public wxDialog
+{
+public:
+       MessageDialog (wxWindow* parent, wxString title, wxString message);
+};
index d50286bf4cfdfa1e115ec54f364a4c45d1726860..9400b63e29c6976378207751df5823eb4348b25b 100644 (file)
@@ -80,6 +80,7 @@ sources = """
           kdm_timing_panel.cc
           key_dialog.cc
           make_chain_dialog.cc
+          message_dialog.cc
           move_to_dialog.cc
           nag_dialog.cc
           name_format_editor.cc