*/
_frames_in_memory_multiplier = 3;
_decode_reduction = optional<int>();
+ _default_notify = false;
_allowed_dcp_frame_rates.clear ();
_allowed_dcp_frame_rates.push_back (24);
}
_frames_in_memory_multiplier = f.optional_number_child<int>("FramesInMemoryMultiplier").get_value_or(3);
_decode_reduction = f.optional_number_child<int>("DecodeReduction");
+ _default_notify = f.optional_bool_child("DefaultNotify").get_value_or(false);
/* Replace any cinemas from config.xml with those from the configured file */
if (boost::filesystem::exists (_cinemas_file)) {
root->add_child("DecodeReduction")->add_child_text(raw_convert<string>(_decode_reduction.get()));
}
+ /* [XML] DefaultNotify 1 to default jobs to notify when complete, otherwise 0 */
+ root->add_child("DefaultNotify")->add_child_text(_default_notify ? "1" : "0");
+
try {
doc.write_to_file_formatted(config_file().string());
} catch (xmlpp::exception& e) {
return _decode_reduction;
}
+ bool default_notify () const {
+ return _default_notify;
+ }
+
/* SET (mostly) */
void set_master_encoding_threads (int n) {
maybe_set (_decode_reduction, r);
}
+ void set_default_notify (bool n) {
+ maybe_set (_default_notify, n);
+ }
+
void clear_history () {
_history.clear ();
changed ();
/** If set, this overrides the standard path (in home, Library, AppData or wherever) for config.xml and cinemas.xml */
static boost::optional<boost::filesystem::path> override_path;
-
+
private:
Config ();
static boost::filesystem::path path (std::string file, bool create_directories = true);
boost::optional<DKDMWriteType> _last_dkdm_write_type;
int _frames_in_memory_multiplier;
boost::optional<int> _decode_reduction;
+ bool _default_notify;
static int const _current_version;
/*
- Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "wx_util.h"
#include "lib/job.h"
#include "lib/compose.hpp"
+#include "lib/config.h"
#include <wx/wx.h>
using std::string;
using std::min;
using boost::shared_ptr;
+using boost::bind;
JobView::JobView (shared_ptr<Job> job, wxWindow* parent, wxWindow* container, wxFlexGridSizer* table)
: _job (job)
finish_setup (_container, _buttons);
- _table->Insert (n, _buttons, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3);
+ _controls = new wxBoxSizer (wxVERTICAL);
+ _controls->Add (_buttons);
+ _notify = new wxCheckBox (_container, wxID_ANY, _("Notify when complete"));
+ _notify->Bind (wxEVT_CHECKBOX, bind (&JobView::notify_clicked, this));
+ _notify->SetValue (Config::instance()->default_notify());
+ _controls->Add (_notify);
+
+ _table->Insert (n, _controls, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3);
_progress_connection = _job->Progress.connect (boost::bind (&JobView::progress, this));
_finished_connection = _job->Finished.connect (boost::bind (&JobView::finished, this));
}
_cancel->Enable (false);
+ _notify->Enable (false);
if (!_job->error_details().empty ()) {
_details->Enable (true);
}
+
+ if (_notify->GetValue ()) {
+ wxMessageBox (std_to_wx(_job->name() + ": " + _job->status()), _("DCP-o-matic"), wxICON_INFORMATION);
+ }
}
void
JobView::insert (int pos)
{
_table->Insert (pos, _gauge_message, 1, wxEXPAND | wxLEFT | wxRIGHT);
- _table->Insert (pos + 1, _buttons, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3);
+ _table->Insert (pos + 1, _controls, 1, wxALIGN_CENTER_VERTICAL | wxALL, 3);
_table->Layout ();
}
JobView::detach ()
{
_table->Detach (_gauge_message);
- _table->Detach (_buttons);
+ _table->Detach (_controls);
+}
+
+void
+JobView::notify_clicked ()
+{
+ Config::instance()->set_default_notify (_notify->GetValue ());
}
class wxStaticText;
class wxButton;
class wxSizer;
+class wxCheckBox;
class JobView : public boost::noncopyable
{
boost::shared_ptr<Job> _job;
wxFlexGridSizer* _table;
+ /** sizer for buttons (cancel, details, pause etc.) */
wxBoxSizer* _buttons;
+ /** sizer for the guage and the message underneath it */
wxBoxSizer* _gauge_message;
private:
void progress ();
void details_clicked (wxCommandEvent &);
void cancel_clicked (wxCommandEvent &);
+ void notify_clicked ();
wxWindow* _parent;
wxWindow* _container;
wxStaticText* _message;
wxButton* _cancel;
wxButton* _details;
+ wxCheckBox* _notify;
+ /** sizer for all right-hand-size controls */
+ wxBoxSizer* _controls;
std::string _last_message;
boost::signals2::scoped_connection _progress_connection;