X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSession.h;h=25172b3094f582e4e120f60d4f7dc1124042e3e5;hb=489b80aef4d7904d667aeb06a32f2cc4ecbb75fa;hp=8756c00430e500656b15fe4511f95f7a3f21e1e2;hpb=c51ae2651cc46d0133960b649092a1ea4ecbf72c;p=lyx.git diff --git a/src/Session.h b/src/Session.h index 8756c00430..25172b3094 100644 --- a/src/Session.h +++ b/src/Session.h @@ -27,6 +27,7 @@ 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 { @@ -105,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: /// @@ -120,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 */ @@ -263,11 +274,59 @@ private: }; +class LastCommandsSection : SessionSection +{ +public: + /// + typedef std::vector LastCommands; + +public: + /// + LastCommandsSection(unsigned int num); + /// + void read(std::istream & is); + + /// + void write(std::ostream & os) const; + + /// Return lastcommands container (vector) + LastCommands const getcommands() const { return lastcommands; } + + /** add command to lastcommands list + @param command command to add + */ + void add(std::string const & command); + + /** clear lastcommands list + */ + void clear(); + +private: + /// 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; +}; + + 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; /// @@ -286,6 +345,10 @@ public: BookmarksSection & bookmarks() { return bookmarks_; } /// BookmarksSection const & bookmarks() const { return bookmarks_; } + /// + LastCommandsSection & lastCommands() { return last_commands; } + /// + LastCommandsSection const & lastCommands() const { return last_commands; } private: friend class LyX; @@ -311,6 +374,8 @@ private: LastFilePosSection last_file_pos; /// BookmarksSection bookmarks_; + /// + LastCommandsSection last_commands; }; /// This is a singleton class. Get the instance.