summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-08-25 16:56:17 +0100
committerCarl Hetherington <cth@carlh.net>2014-08-25 16:56:17 +0100
commit7b2054e2a73844450b5b55c5788c02af671812ce (patch)
tree5d5727a5bce89cdd32923c0c44841abd0585c8cb /src/lib
parentc497e601934e82425efef5dc981b12818a881990 (diff)
parent7edf8e601ed2ede5b6758840fb9d8940393cf7e2 (diff)
Merge master.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc25
-rw-r--r--src/lib/config.h16
-rw-r--r--src/lib/util.h2
3 files changed, 40 insertions, 3 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index d20536f14..7e3762587 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -42,10 +42,12 @@
#include "i18n.h"
using std::vector;
+using std::cout;
using std::ifstream;
using std::string;
using std::list;
using std::max;
+using std::remove;
using std::exception;
using std::cerr;
using boost::shared_ptr;
@@ -215,6 +217,11 @@ Config::read ()
_log_types = f.optional_number_child<int> ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR);
+ list<cxml::NodePtr> his = f.node_children ("History");
+ for (list<cxml::NodePtr>::const_iterator i = his.begin(); i != his.end(); ++i) {
+ _history.push_back ((*i)->content ());
+ }
+
cxml::NodePtr signer = f.optional_node_child ("Signer");
dcp::CertificateChain signer_chain;
if (signer) {
@@ -371,6 +378,10 @@ Config::write () const
root->add_child("DecryptionCertificate")->add_child_text (_decryption_certificate.certificate (true));
root->add_child("DecryptionPrivateKey")->add_child_text (_decryption_private_key);
+ for (vector<boost::filesystem::path>::const_iterator i = _history.begin(); i != _history.end(); ++i) {
+ root->add_child("History")->add_child_text (i->string ());
+ }
+
doc.write_to_file_formatted (file(false).string ());
}
@@ -416,3 +427,17 @@ Config::reset_kdm_email ()
"Best regards,\nDCP-o-matic"
);
}
+
+void
+Config::add_to_history (boost::filesystem::path p)
+{
+ /* Remove existing instances of this path in the history */
+ _history.erase (remove (_history.begin(), _history.end(), p), _history.end ());
+
+ _history.insert (_history.begin (), p);
+ if (_history.size() > HISTORY_SIZE) {
+ _history.pop_back ();
+ }
+
+ changed ();
+}
diff --git a/src/lib/config.h b/src/lib/config.h
index 3cfaa1200..05bc7945f 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -221,7 +221,11 @@ public:
int log_types () const {
return _log_types;
}
-
+
+ std::vector<boost::filesystem::path> history () const {
+ return _history;
+ }
+
/** @param n New number of local encoding threads */
void set_num_local_encoding_threads (int n) {
_num_local_encoding_threads = n;
@@ -414,6 +418,13 @@ public:
_log_types = t;
changed ();
}
+
+ void clear_history () {
+ _history.clear ();
+ changed ();
+ }
+
+ void add_to_history (boost::filesystem::path p);
void changed ();
boost::signals2::signal<void ()> Changed;
@@ -482,7 +493,8 @@ private:
/** maximum allowed J2K bandwidth in bits per second */
int _maximum_j2k_bandwidth;
int _log_types;
-
+ std::vector<boost::filesystem::path> _history;
+
/** Singleton instance, or 0 */
static Config* _instance;
};
diff --git a/src/lib/util.h b/src/lib/util.h
index 1bbdfb2cf..724e8937c 100644
--- a/src/lib/util.h
+++ b/src/lib/util.h
@@ -44,8 +44,8 @@ extern "C" {
/** The maximum number of audio channels that we can have in a DCP */
#define MAX_DCP_AUDIO_CHANNELS 12
-
#define DCPOMATIC_HELLO "Boys, you gotta learn not to talk to nuns that way"
+#define HISTORY_SIZE 10
class Job;
struct AVSubtitle;