#ifndef SESSION_H
#define SESSION_H
-#include <support/types.h>
+#include "support/filename.h"
+#include "support/types.h"
#include <boost/utility.hpp>
#include <boost/tuple/tuple.hpp>
{
public:
///
- typedef std::deque<std::string> LastFiles;
+ typedef std::deque<support::FileName> LastFiles;
public:
///
file in the list is popped from the end.
@param file the file to insert in the lastfile list.
*/
- void add(std::string const & file);
+ void add(support::FileName const & file);
private:
/// Default number of lastfiles.
{
public:
///
- typedef std::vector<std::string> LastOpened;
+ typedef std::vector<support::FileName> LastOpened;
public:
///
/** add file to lastopened file list
@param file filename to add
*/
- void add(std::string const & file);
+ void add(support::FileName const & file);
/** clear lastopened file list
*/
typedef boost::tuple<pit_type, pos_type> FilePos;
///
- typedef std::map<std::string, FilePos> FilePosMap;
+ typedef std::map<support::FileName, FilePos> FilePosMap;
public:
///
@param fname file entry for which to save position information
@param pos position of the cursor when the file is closed.
*/
- void save(std::string const & fname, FilePos pos);
+ void save(support::FileName const & fname, FilePos pos);
/** load saved cursor position from the fname entry in the filepos map
@param fname file entry for which to load position information
*/
- FilePos load(std::string const & fname) const;
+ FilePos load(support::FileName const & fname) const;
private:
/// default number of lastfilepos to save */
class Bookmark {
public:
/// Filename
- std::string filename;
+ support::FileName filename;
/// Cursor paragraph Id
int par_id;
/// Cursor position
///
Bookmark() : par_id(0), par_pos(0) {}
///
- Bookmark(std::string const & f, int id, pos_type pos)
+ Bookmark(support::FileName const & f, int id, pos_type pos)
: filename(f), par_id(id), par_pos(pos) {}
};
public:
/// constructor, set max_bookmarks
/// allow 20 regular bookmarks
- BookmarksSection() : max_bookmarks(20), bookmarks(0) {}
+ BookmarksSection() : bookmarks(0), max_bookmarks(20) {}
/// Save the current position as bookmark
/// if save==false, save to temp_bookmark
- void save(std::string const & fname, int par_id, pos_type par_pos, bool persistent);
+ void save(support::FileName const & fname, int par_id, pos_type par_pos, bool persistent);
/// return bookmark, return temp_bookmark if i==0
Bookmark const & bookmark(unsigned int i) const;
};
+class ToolbarSection : SessionSection
+{
+public:
+ /// information about a toolbar, not all information can be
+ /// saved/restored by all frontends, but this class provides
+ /// a superset of things that can be managed by session.
+ class ToolbarInfo
+ {
+ public:
+ ///
+ ToolbarInfo() :
+ state(ON), location(NOTSET) { }
+ ///
+ ToolbarInfo(int s, int loc) :
+ state(static_cast<State>(s)), location(static_cast<Location>(loc)) { }
+
+ public:
+ enum State {
+ ON,
+ OFF,
+ AUTO
+ };
+
+ /// on/off/auto
+ State state;
+
+ /// location: this can be intepreted differently.
+ enum Location {
+ TOP,
+ BOTTOM,
+ LEFT,
+ RIGHT,
+ NOTSET
+ };
+
+ Location location;
+
+ /// potentially, icons
+ };
+
+ /// info for each toolbar
+ typedef std::map<std::string, ToolbarInfo> ToolbarMap;
+
+public:
+ ///
+ void read(std::istream & is);
+
+ ///
+ void write(std::ostream & os) const;
+
+ /// return reference to toolbar info, create a new one if needed
+ ToolbarInfo & load(std::string const & name);
+
+private:
+ /// toolbar information
+ ToolbarMap toolbars;
+};
+
+
class SessionInfoSection : SessionSection
{
public:
///
BookmarksSection const & bookmarks() const { return bookmarks_; }
+ ///
+ ToolbarSection & toolbars() { return toolbars_; }
+
+ ///
+ ToolbarSection const & toolbars() const { return toolbars_; }
+
///
SessionInfoSection & sessionInfo() { return session_info; }
private:
/// file to save session, determined in the constructor.
- std::string session_file;
+ support::FileName session_file;
/** Read the session file.
Reads the #.lyx/session# at the beginning of the LyX session.
///
BookmarksSection bookmarks_;
+ ///
+ ToolbarSection toolbars_;
+
///
SessionInfoSection session_info;
};