X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSession.h;h=25172b3094f582e4e120f60d4f7dc1124042e3e5;hb=489b80aef4d7904d667aeb06a32f2cc4ecbb75fa;hp=772027ec80c4c340de12093e267641870c2ee677;hpb=79beb91e3a3538e204c436a664efdbeb28d15eb9;p=lyx.git diff --git a/src/Session.h b/src/Session.h index 772027ec80..25172b3094 100644 --- a/src/Session.h +++ b/src/Session.h @@ -21,15 +21,13 @@ #include #include -// used by at least frontends/qt4/GuiPref.cpp -const long maxlastfiles = 20; - /** This session file maintains 1. the latest documents loaded (lastfiles) 2. cursor positions of files closed (lastfilepos) 3. opened files when a lyx session is closed (lastopened) 4. bookmarks 5. general purpose session info in the form of key/value pairs + 6. the latest commands entered in the command buffer (lastcommands) */ namespace lyx { @@ -108,7 +106,17 @@ class LastOpenedSection : SessionSection { public: /// - typedef std::vector LastOpened; + struct LastOpenedFile { + LastOpenedFile() : file_name(), active(false) {} + + LastOpenedFile(support::FileName file_name_, bool active_) + : file_name(file_name_), active(active_) {} + + support::FileName file_name; + bool active; + }; + /// + typedef std::vector LastOpened; public: /// @@ -123,7 +131,7 @@ public: /** add file to lastopened file list @param file filename to add */ - void add(support::FileName const & file); + void add(support::FileName const & file, bool active = false); /** clear lastopened file list */ @@ -236,6 +244,9 @@ public: /// does the given bookmark have a saved position ? bool isValid(unsigned int i) const; + /// is there at least one bookmark that has a saved position ? + bool hasValid() const; + /// unsigned int size() const { return max_bookmarks; } @@ -263,35 +274,50 @@ private: }; -class SessionInfoSection : SessionSection +class LastCommandsSection : SessionSection { public: /// - typedef std::map MiscInfo; + typedef std::vector LastCommands; public: + /// + LastCommandsSection(unsigned int num); /// void read(std::istream & is); /// void write(std::ostream & os) const; - /** set session info - @param key key of the value to store - @param value value, a string without newline ('\n') - */ - void save(std::string const & key, std::string const & value); + /// Return lastcommands container (vector) + LastCommands const getcommands() const { return lastcommands; } - /** load session info - @param key a key to extract value from the session file - @param release whether or not clear the value. Default to true - since most of such values are supposed to be used only once. + /** add command to lastcommands list + @param command command to add */ - std::string const load(std::string const & key, bool release = true); + void add(std::string const & command); + + /** clear lastcommands list + */ + void clear(); private: - /// a map to save session info - MiscInfo sessioninfo; + /// number of commands in the lastcommands list. + unsigned int num_lastcommands; + + /** Used by the constructor to set the number of stored last commands. + @param num the number of lastcommands to set. + */ + void setNumberOfLastCommands(unsigned int num); + + /// a list of lastopened commands + LastCommands lastcommands; + + /// Default number of lastcommands. + unsigned int const default_num_last_commands; + + /// Max number of lastcommands. + unsigned int const absolute_max_last_commands; }; @@ -299,7 +325,8 @@ class Session { public: /// Read the session file. @param num length of lastfiles - explicit Session(unsigned int num = 4); + explicit Session(unsigned int num_last_files = 4, + unsigned int num_last_commands = 30); /// Write the session file. void writeFile() const; /// @@ -319,9 +346,9 @@ public: /// BookmarksSection const & bookmarks() const { return bookmarks_; } /// - SessionInfoSection & sessionInfo() { return session_info; } + LastCommandsSection & lastCommands() { return last_commands; } /// - SessionInfoSection const & sessionInfo() const { return session_info; } + LastCommandsSection const & lastCommands() const { return last_commands; } private: friend class LyX; @@ -348,7 +375,7 @@ private: /// BookmarksSection bookmarks_; /// - SessionInfoSection session_info; + LastCommandsSection last_commands; }; /// This is a singleton class. Get the instance.