#include <vector>
#include <map>
-// 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 {
/// 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; }
};
-class SessionInfoSection : SessionSection
+class LastCommandsSection : SessionSection
{
public:
///
- typedef std::map<std::string, std::string> MiscInfo;
+ typedef std::vector<std::string> 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;
};
{
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;
///
///
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;
///
BookmarksSection bookmarks_;
///
- SessionInfoSection session_info;
+ LastCommandsSection last_commands;
};
/// This is a singleton class. Get the instance.