From f30bd5d2355bc02d1b5c7772241e191b60028dd2 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Tue, 21 Aug 2018 23:03:04 +0100 Subject: [PATCH] Give a message when changed files are re-examined. --- src/lib/check_content_change_job.cc | 8 +++---- src/lib/job.cc | 14 +++++++++++ src/lib/job.h | 7 +++++- src/wx/job_view.cc | 7 ++++++ src/wx/message_dialog.cc | 37 +++++++++++++++++++++++++++++ src/wx/message_dialog.h | 27 +++++++++++++++++++++ src/wx/wscript | 1 + 7 files changed, 96 insertions(+), 5 deletions(-) create mode 100644 src/wx/message_dialog.cc create mode 100644 src/wx/message_dialog.h diff --git a/src/lib/check_content_change_job.cc b/src/lib/check_content_change_job.cc index 0862ab085..bb3674f27 100644 --- a/src/lib/check_content_change_job.cc +++ b/src/lib/check_content_change_job.cc @@ -61,19 +61,15 @@ CheckContentChangeJob::run () BOOST_FOREACH (shared_ptr 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(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); } diff --git a/src/lib/job.cc b/src/lib/job.cc index ec6d5d306..0cbf13640 100644 --- a/src/lib/job.cc +++ b/src/lib/job.cc @@ -570,3 +570,17 @@ Job::when_finished (boost::signals2::connection& connection, function fi connection = Finished.connect (finished); } } + +optional +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; +} diff --git a/src/lib/job.h b/src/lib/job.h index d2691a3cb..4fc61cb26 100644 --- a/src/lib/job.h +++ b/src/lib/job.h @@ -67,6 +67,8 @@ public: std::string error_summary () const; std::string error_details () const; + boost::optional 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 _message; /** time that this job was started */ time_t _start_time; diff --git a/src/wx/job_view.cc b/src/wx/job_view.cc index 43d6f2fed..5d3cc0f9c 100644 --- a/src/wx/job_view.cc +++ b/src/wx/job_view.cc @@ -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(_job) || dynamic_pointer_cast(_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 index 000000000..b3cbb53fc --- /dev/null +++ b/src/wx/message_dialog.cc @@ -0,0 +1,37 @@ +/* + Copyright (C) 2018 Carl Hetherington + + 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 . + +*/ + +#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 index 000000000..0f625907c --- /dev/null +++ b/src/wx/message_dialog.h @@ -0,0 +1,27 @@ +/* + Copyright (C) 2018 Carl Hetherington + + 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 . + +*/ + +#include + +class MessageDialog : public wxDialog +{ +public: + MessageDialog (wxWindow* parent, wxString title, wxString message); +}; diff --git a/src/wx/wscript b/src/wx/wscript index d50286bf4..9400b63e2 100644 --- a/src/wx/wscript +++ b/src/wx/wscript @@ -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 -- 2.30.2