]> git.lyx.org Git - lyx.git/blobdiff - src/Session.h
fix a visual cursor edge-case:
[lyx.git] / src / Session.h
index e395434d523c648ffcd4d6c888e3cb21b3904dff..8e18885259b785970f3a98418459045a1382d6aa 100644 (file)
 #ifndef SESSION_H
 #define SESSION_H
 
-#include "support/filename.h"
+#include "support/FileName.h"
 #include "support/types.h"
 
-#include <boost/utility.hpp>
-#include <boost/tuple/tuple.hpp>
-
 #include <string>
 #include <deque>
 #include <vector>
 #include <map>
 
-// used by at least frontends/qt2/QPref.C
+// used by at least frontends/qt4/GuiPref.cpp
 const long maxlastfiles = 20;
 
 /** This session file maintains
@@ -36,11 +33,13 @@ const long maxlastfiles = 20;
  */
 namespace lyx {
 
-/** base class for all sections in the session file
+/* base class for all sections in the session file
 */
-class SessionSection : boost::noncopyable {
-
+class SessionSection
+{
 public:
+       ///
+       SessionSection() {}
        ///
        virtual ~SessionSection() {}
 
@@ -49,6 +48,11 @@ public:
 
        /// write to std::ostream
        virtual void write(std::ostream & os) const = 0;
+
+private:
+       /// uncopiable
+       SessionSection(SessionSection const &);
+       void operator=(SessionSection const &);
 };
 
 
@@ -135,7 +139,11 @@ class LastFilePosSection : SessionSection
 {
 public:
        ///
-       typedef boost::tuple<pit_type, pos_type> FilePos;
+       struct FilePos {
+               FilePos() : pit(0), pos(0) {}
+               pit_type pit;
+               pos_type pos;
+       };
 
        ///
        typedef std::map<support::FileName, FilePos> FilePosMap;
@@ -154,7 +162,7 @@ public:
            @param fname file entry for which to save position information
            @param pos position of the cursor when the file is closed.
        */
-       void save(support::FileName const & fname, FilePos pos);
+       void save(support::FileName const & fname, FilePos const & pos);
 
        /** load saved cursor position from the fname entry in the filepos map
            @param fname file entry for which to load position information
@@ -182,7 +190,7 @@ public:
        /// top_id is determined when a bookmark is restored from session; and
        /// bottom_pit and bottom_pos are determined from top_id when a bookmark
        /// is save to session. (What a mess! :-)
-       /// 
+       ///
        /// TODO: bottom level pit and pos will be replaced by StableDocIterator
        class Bookmark {
        public:
@@ -203,7 +211,7 @@ public:
                        : filename(f), bottom_pit(pit), bottom_pos(pos), top_id(id), top_pos(tpos) {}
                /// set bookmark top_id, this is because newly loaded bookmark
                /// may have zero par_id and par_pit can change during editing, see bug 3092
-               void updatePos(pit_type pit, pos_type pos, int id) { 
+               void updatePos(pit_type pit, pos_type pos, int id) {
                        bottom_pit = pit;
                        bottom_pos = pos;
                        top_id = id;
@@ -265,15 +273,13 @@ public:
        {
        public:
                ///
-               ToolbarInfo() :
-                       state(ON), location(NOTSET), posx(0), posy(0) { }
+               ToolbarInfo()
+                       : state(ON), location(NOTSET), posx(0), posy(0)
+               {}
                ///
-               ToolbarInfo(int s, int loc, int x=0, int y=0) :
-                       state(static_cast<State>(s)), 
-                       location(static_cast<Location>(loc)),
-                       posx(x),
-                       posy(y)
-                       { }
+               //ToolbarInfo(int s, int loc, int x = 0, int y = 0)
+       //              : state(State(s)), location(Location(loc)), posx(x), posy(y)
+       //      {}
 
        public:
                enum State {
@@ -301,11 +307,14 @@ public:
 
                /// y-position of the toolbar
                int posy;
-               
+
                /// potentially, icons
        };
 
-       typedef boost::tuple<std::string, ToolbarInfo> ToolbarItem;
+       struct ToolbarItem {
+               std::string key;
+               ToolbarInfo info;
+       };
 
        /// info for each toolbar
        typedef std::vector<ToolbarItem> ToolbarList;
@@ -337,7 +346,8 @@ private:
 ///     TOP < BOTTOM < LEFT < RIGHT
 ///     Line at each side
 ///     order in each line
-bool operator< (ToolbarSection::ToolbarItem const & a, ToolbarSection::ToolbarItem const & b);
+bool operator<(ToolbarSection::ToolbarItem const & a,
+       ToolbarSection::ToolbarItem const & b);
 
 
 class SessionInfoSection : SessionSection
@@ -372,55 +382,43 @@ private:
 };
 
 
-class Session : boost::noncopyable {
-
+class Session
+{
 public:
-       /** Read the session file.
-           @param num length of lastfiles
-       */
+       /// Read the session file.  @param num length of lastfiles
        explicit Session(unsigned int num = 4);
-
-       /** Write the session file.
-       */
+       /// Write the session file.
        void writeFile() const;
-
        ///
        LastFilesSection & lastFiles() { return last_files; }
-       
        ///
        LastFilesSection const & lastFiles() const { return last_files; }
-
        ///
        LastOpenedSection & lastOpened() { return last_opened; }
-
        ///
        LastOpenedSection const & lastOpened() const { return last_opened; }
-       
        ///
        LastFilePosSection & lastFilePos() { return last_file_pos; }
-       
        ///
        LastFilePosSection const & lastFilePos() const { return last_file_pos; }
-
        ///
        BookmarksSection & bookmarks() { return bookmarks_; }
-
        ///
        BookmarksSection const & bookmarks() const { return bookmarks_; }
-
        ///
        ToolbarSection & toolbars() { return toolbars_; }
-
        ///
        ToolbarSection const & toolbars() const { return toolbars_; }
-
        ///
        SessionInfoSection & sessionInfo() { return session_info; }
-
        ///
        SessionInfoSection const & sessionInfo() const { return session_info; }
 
 private:
+       /// uncopiable
+       Session(Session const &);
+       void operator=(Session const &);
+
        /// file to save session, determined in the constructor.
        support::FileName session_file;
 
@@ -433,19 +431,14 @@ private:
 
        ///
        LastFilesSection last_files;
-
        ///
        LastOpenedSection last_opened;
-
        ///
        LastFilePosSection last_file_pos;
-
        ///
        BookmarksSection bookmarks_;
-
        ///
        ToolbarSection toolbars_;
-
        ///
        SessionInfoSection session_info;
 };