X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FSession.h;h=25172b3094f582e4e120f60d4f7dc1124042e3e5;hb=21514ad5129df123605cc11b1dc04d525ce4a295;hp=2b1e216570481b3258708fafcf349c4d818bb2cd;hpb=da1de0055e2c0e77acf7c5e3e2c6f19c7ee28baf;p=lyx.git diff --git a/src/Session.h b/src/Session.h index 2b1e216570..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,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.