diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-08-25 16:33:55 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-08-25 16:33:55 +0100 |
| commit | 7edf8e601ed2ede5b6758840fb9d8940393cf7e2 (patch) | |
| tree | a3c5b068c226cd503219ba0bf6a02a4209dad6cd /src/lib | |
| parent | 49e401f651ccf6c409fc84f57aa205f1920ef070 (diff) | |
Basic recent files list in the File menu.
Suggested-by: Carsten Kurz
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/config.cc | 25 | ||||
| -rw-r--r-- | src/lib/config.h | 16 | ||||
| -rw-r--r-- | src/lib/util.h | 2 |
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; |
