summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-08-25 16:33:55 +0100
committerCarl Hetherington <cth@carlh.net>2014-08-25 16:33:55 +0100
commit7edf8e601ed2ede5b6758840fb9d8940393cf7e2 (patch)
treea3c5b068c226cd503219ba0bf6a02a4209dad6cd /src/lib
parent49e401f651ccf6c409fc84f57aa205f1920ef070 (diff)
Basic recent files list in the File menu.
Suggested-by: Carsten Kurz
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 d11bcf983..04f28579b 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -39,10 +39,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;
@@ -204,6 +206,11 @@ Config::read ()
_allow_any_dcp_frame_rate = f.optional_bool_child ("AllowAnyDCPFrameRate");
_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 ());
+ }
}
void
@@ -388,6 +395,10 @@ Config::write () const
root->add_child("MaximumJ2KBandwidth")->add_child_text (raw_convert<string> (_maximum_j2k_bandwidth));
root->add_child("AllowAnyDCPFrameRate")->add_child_text (_allow_any_dcp_frame_rate ? "1" : "0");
root->add_child("LogTypes")->add_child_text (raw_convert<string> (_log_types));
+
+ 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 ());
}
@@ -434,3 +445,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 0ce6b8351..aa3c06356 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -208,7 +208,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;
@@ -386,6 +390,13 @@ public:
_log_types = t;
changed ();
}
+
+ void clear_history () {
+ _history.clear ();
+ changed ();
+ }
+
+ void add_to_history (boost::filesystem::path p);
boost::filesystem::path signer_chain_directory () const;
@@ -453,7 +464,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 70bf495c6..675c8d03e 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
namespace libdcp {
class Signer;