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);
}
}
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);
}
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;
+}
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 {
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 ();
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;
#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"
_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);
--- /dev/null
+/*
+ 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);
+}
--- /dev/null
+/*
+ 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);
+};
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