summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2018-08-21 23:03:04 +0100
committerCarl Hetherington <cth@carlh.net>2018-08-21 23:03:04 +0100
commitf30bd5d2355bc02d1b5c7772241e191b60028dd2 (patch)
tree1cc79d8ce0724ff77500d4e75c2262a565609fca /src
parent0646c5404d535158d3f3d47004fa8dde444a936b (diff)
Give a message when changed files are re-examined.
Diffstat (limited to 'src')
-rw-r--r--src/lib/check_content_change_job.cc8
-rw-r--r--src/lib/job.cc14
-rw-r--r--src/lib/job.h7
-rw-r--r--src/wx/job_view.cc7
-rw-r--r--src/wx/message_dialog.cc37
-rw-r--r--src/wx/message_dialog.h27
-rw-r--r--src/wx/wscript1
7 files changed, 96 insertions, 5 deletions
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<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);
}
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<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;
+}
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<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;
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<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
index 000000000..b3cbb53fc
--- /dev/null
+++ b/src/wx/message_dialog.cc
@@ -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
index 000000000..0f625907c
--- /dev/null
+++ b/src/wx/message_dialog.h
@@ -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);
+};
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