X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.h;h=aa8d63a7951f2f4ab3d8b830e34c2266a000d26e;hb=35204f8f33d7400a5fefeffea533fb4cb4097211;hp=e3cfed8285235cd3ab4f1c3934f1c271d450dcad;hpb=b884dee79e469c42a567d90dd3c870a8be589d02;p=lyx.git diff --git a/src/session.h b/src/session.h index e3cfed8285..aa8d63a795 100644 --- a/src/session.h +++ b/src/session.h @@ -173,32 +173,127 @@ private: class BookmarksSection : SessionSection { public: - /// - typedef boost::tuple Bookmark; + /// bookmarks + class Bookmark { + public: + /// Filename + std::string filename; + /// Cursor paragraph Id + int par_id; + /// Cursor position + pos_type par_pos; + /// + Bookmark() : par_id(0), par_pos(0) {} + /// + Bookmark(std::string const & f, int id, pos_type pos) + : filename(f), par_id(id), par_pos(pos) {} + }; + + /// + typedef std::deque BookmarkList; + +public: + /// constructor, set max_bookmarks + /// allow 20 regular bookmarks + 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); + + /// return bookmark, return temp_bookmark if i==0 + Bookmark const & bookmark(unsigned int i) const; + + /// does the given bookmark have a saved position ? + bool isValid(unsigned int i) const; /// - typedef std::vector BookmarkList; + unsigned int size() const { return bookmarks.size(); } + + /// clear all bookmarks + void clear() { bookmarks.clear(); } -public: /// void read(std::istream & is); /// void write(std::ostream & os) const; - /** save a bookmark - @bookmark bookmark to be saved - */ - void save(Bookmark const & bookmark); - /** return bookmark list. Non-const container is used since bookmarks will be cleaned after use. */ BookmarkList & load() { return bookmarks; } private: + /// temp bookmark (previously saved_positions[0]), this is really ugly + /// c.f. ./frontends/controllers/ControlRef.C + /// FIXME: a separate LFUN may be a better solution + Bookmark temp_bookmark; + /// a list of bookmarks BookmarkList bookmarks; + + /// + unsigned int const max_bookmarks; +}; + + +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(s)), location(static_cast(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 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; }; @@ -247,34 +342,40 @@ public: void writeFile() const; /// - LastFilesSection & LastFiles() { return last_files; } + LastFilesSection & lastFiles() { return last_files; } /// - LastFilesSection const & LastFiles() const { return last_files; } + LastFilesSection const & lastFiles() const { return last_files; } /// - LastOpenedSection & LastOpened() { return last_opened; } + LastOpenedSection & lastOpened() { return last_opened; } /// - LastOpenedSection const & LastOpened() const { return last_opened; } + LastOpenedSection const & lastOpened() const { return last_opened; } /// - LastFilePosSection & LastFilePos() { return last_file_pos; } + LastFilePosSection & lastFilePos() { return last_file_pos; } /// - LastFilePosSection const & LastFilePos() const { return last_file_pos; } + LastFilePosSection const & lastFilePos() const { return last_file_pos; } + + /// + BookmarksSection & bookmarks() { return bookmarks_; } /// - BookmarksSection & Bookmarks() { return bookmarks; } + BookmarksSection const & bookmarks() const { return bookmarks_; } /// - BookmarksSection const & Bookmarks() const { return bookmarks; } + ToolbarSection & toolbars() { return toolbars_; } /// - SessionInfoSection & SessionInfo() { return session_info; } + ToolbarSection const & toolbars() const { return toolbars_; } /// - SessionInfoSection const & SessionInfo() const { return session_info; } + SessionInfoSection & sessionInfo() { return session_info; } + + /// + SessionInfoSection const & sessionInfo() const { return session_info; } private: /// file to save session, determined in the constructor. @@ -297,7 +398,10 @@ private: LastFilePosSection last_file_pos; /// - BookmarksSection bookmarks; + BookmarksSection bookmarks_; + + /// + ToolbarSection toolbars_; /// SessionInfoSection session_info;