2006-04-05 22:56:18 +00:00
|
|
|
// -*- C++ -*-
|
|
|
|
/**
|
2007-04-26 04:41:58 +00:00
|
|
|
* \file Session.h
|
2006-04-05 22:56:18 +00:00
|
|
|
* This file is part of LyX, the document processor.
|
|
|
|
* Licence details can be found in the file COPYING.
|
|
|
|
*
|
|
|
|
* \author Lars Gullik Bjønnes
|
|
|
|
* \author Bo Peng
|
|
|
|
*
|
|
|
|
* Full author contact details are available in file CREDITS.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef SESSION_H
|
|
|
|
#define SESSION_H
|
|
|
|
|
Rename files in src/support, step one.
src/support/package.h src/support/Package.h Package
src/support/package.C.in src/support/Package.C.in Package
src/support/path.h src/support/Path.h Path
src/support/fs_extras.h src/support/fs_extras.h NOCLASSES
src/support/RandomAccessList.h src/support/RandomAccessList.h RandomAccessList
src/support/lyxmanip.h src/support/lyxmanip.h NOCLASSES
src/support/rename.C src/support/rename.cpp NOCLASSES
src/support/abort.C src/support/abort.cpp NOCLASSES
src/support/lyxlib.h src/support/lyxlib.h NOCLASSES
src/support/ExceptionMessage.h src/support/ExceptionMessage.h ExceptionMessage
src/support/copy.C src/support/copy.cpp NOCLASSES
src/support/limited_stack.h src/support/limited_stack.h limited_stack
src/support/filefilterlist.C src/support/FileFilterList.cpp ['FileFilterList', 'Filter']
src/support/cow_ptr.h src/support/cow_ptr.h cow_ptr
src/support/os_unix.C src/support/os_unix.cpp NOCLASSES
src/support/socktools.h src/support/socktools.h NOCLASSES
src/support/forkedcontr.h src/support/ForkedcallsController.h ForkedcallsController
src/support/os.h src/support/os.h NOCLASSES
src/support/FileMonitor.h src/support/FileMonitor.h FileMonitor
src/support/copied_ptr.h src/support/copied_ptr.h copied_ptr
src/support/translator.h src/support/Translator.h Translator
src/support/filetools.C src/support/filetools.cpp NOCLASSES
src/support/unlink.C src/support/unlink.cpp NOCLASSES
src/support/os_win32.C src/support/os_win32.cpp GetFolderPath
src/support/lstrings.C src/support/lstrings.cpp NOCLASSES
src/support/qstring_helpers.C src/support/qstring_helpers.cpp NOCLASSES
src/support/getcwd.C src/support/getcwd.cpp NOCLASSES
src/support/systemcall.C src/support/Systemcall.cpp Systemcall
src/support/lyxalgo.h src/support/lyxalgo.h NOCLASSES
src/support/filefilterlist.h src/support/FileFilterList.h ['FileFilterList', 'Filter']
src/support/unicode.C src/support/unicode.cpp IconvProcessor
src/support/userinfo.C src/support/userinfo.cpp NOCLASSES
src/support/lyxtime.C src/support/lyxtime.cpp NOCLASSES
src/support/kill.C src/support/kill.cpp NOCLASSES
src/support/docstring.C src/support/docstring.cpp to_local8bit_failure
src/support/os_cygwin.C src/support/os_cygwin.cpp NOCLASSES
src/support/lyxsum.C src/support/lyxsum.cpp NOCLASSES
src/support/environment.C src/support/environment.cpp NOCLASSES
src/support/filetools.h src/support/filetools.h NOCLASSES
src/support/textutils.C src/support/textutils.cpp NOCLASSES
src/support/mkdir.C src/support/mkdir.cpp NOCLASSES
src/support/forkedcall.C src/support/Forkedcall.cpp ['ForkedProcess', 'Forkedcall']
src/support/tempname.C src/support/tempname.cpp NOCLASSES
src/support/os_win32.h src/support/os_win32.h GetFolderPath
src/support/types.h src/support/types.h NOCLASSES
src/support/lstrings.h src/support/lstrings.h NOCLASSES
src/support/forkedcallqueue.C src/support/ForkedCallQueue.cpp ForkedCallQueue
src/support/qstring_helpers.h src/support/qstring_helpers.h NOCLASSES
src/support/convert.C src/support/convert.cpp NOCLASSES
src/support/filename.C src/support/FileName.cpp ['FileName', 'DocFileName']
src/support/tests/convert.C src/support/tests/convert.cpp NOCLASSES
src/support/tests/filetools.C src/support/tests/filetools.cpp NOCLASSES
src/support/tests/lstrings.C src/support/tests/lstrings.cpp NOCLASSES
src/support/tests/boost.C src/support/tests/boost.cpp NOCLASSES
src/support/docstream.C src/support/docstream.cpp ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/std_istream.h src/support/std_istream.h NOCLASSES
src/support/systemcall.h src/support/Systemcall.h Systemcall
src/support/chdir.C src/support/chdir.cpp NOCLASSES
src/support/std_ostream.h src/support/std_ostream.h NOCLASSES
src/support/unicode.h src/support/unicode.h IconvProcessor
src/support/path.C src/support/Path.cpp Path
src/support/fs_extras.C src/support/fs_extras.cpp NOCLASSES
src/support/userinfo.h src/support/userinfo.h NOCLASSES
src/support/lyxtime.h src/support/lyxtime.h NOCLASSES
src/support/docstring.h src/support/docstring.h to_local8bit_failure
src/support/debugstream.h src/support/debugstream.h basic_debugstream
src/support/environment.h src/support/environment.h NOCLASSES
src/support/textutils.h src/support/textutils.h NOCLASSES
src/support/forkedcall.h src/support/Forkedcall.h ['ForkedProcess', 'Forkedcall']
src/support/socktools.C src/support/socktools.cpp NOCLASSES
src/support/forkedcallqueue.h src/support/ForkedCallQueue.h ForkedCallQueue
src/support/forkedcontr.C src/support/ForkedcallsController.cpp ForkedcallsController
src/support/os.C src/support/os.cpp NOCLASSES
src/support/convert.h src/support/convert.h NOCLASSES
src/support/filename.h src/support/FileName.h ['FileName', 'DocFileName']
src/support/docstream.h src/support/docstream.h ['iconv_codecvt_facet_exception', 'idocfstream', 'odocfstream']
src/support/FileMonitor.C src/support/FileMonitor.cpp FileMonitor
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18024 a592a061-630c-0410-9148-cb99ea01b6c8
2007-04-26 05:12:52 +00:00
|
|
|
#include "support/FileName.h"
|
2006-12-02 16:07:15 +00:00
|
|
|
#include "support/types.h"
|
2006-04-05 22:56:18 +00:00
|
|
|
|
2019-10-20 09:47:04 +00:00
|
|
|
#include <list>
|
2010-12-03 22:39:18 +00:00
|
|
|
#include <string>
|
|
|
|
#include <vector>
|
2006-04-05 22:56:18 +00:00
|
|
|
|
|
|
|
/** 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)
|
2006-04-05 23:56:29 +00:00
|
|
|
4. bookmarks
|
2006-04-05 22:56:18 +00:00
|
|
|
5. general purpose session info in the form of key/value pairs
|
2009-01-18 21:50:23 +00:00
|
|
|
6. the latest commands entered in the command buffer (lastcommands)
|
2006-04-05 22:56:18 +00:00
|
|
|
*/
|
|
|
|
namespace lyx {
|
|
|
|
|
2007-11-02 19:59:08 +00:00
|
|
|
/* base class for all sections in the session file
|
2006-10-27 14:18:03 +00:00
|
|
|
*/
|
2007-11-02 19:59:08 +00:00
|
|
|
class SessionSection
|
|
|
|
{
|
2006-04-05 22:56:18 +00:00
|
|
|
public:
|
2007-11-02 19:59:08 +00:00
|
|
|
///
|
|
|
|
SessionSection() {}
|
2006-10-28 15:14:28 +00:00
|
|
|
///
|
|
|
|
virtual ~SessionSection() {}
|
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
/// read section from std::istream
|
|
|
|
virtual void read(std::istream & is) = 0;
|
|
|
|
|
|
|
|
/// write to std::ostream
|
|
|
|
virtual void write(std::ostream & os) const = 0;
|
2007-11-02 19:59:08 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
/// uncopiable
|
|
|
|
SessionSection(SessionSection const &);
|
|
|
|
void operator=(SessionSection const &);
|
2006-10-27 14:18:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class LastFilesSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
2006-04-05 22:56:18 +00:00
|
|
|
///
|
2010-12-04 23:18:52 +00:00
|
|
|
typedef std::vector<support::FileName> LastFiles;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
public:
|
2006-04-05 22:56:18 +00:00
|
|
|
///
|
2006-10-27 14:18:03 +00:00
|
|
|
explicit LastFilesSection(unsigned int num = 4);
|
|
|
|
|
2006-04-05 22:56:18 +00:00
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2006-04-05 22:56:18 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2006-04-05 22:56:18 +00:00
|
|
|
|
2010-12-04 23:18:52 +00:00
|
|
|
/// Return lastfiles container (vector)
|
2006-10-27 14:18:03 +00:00
|
|
|
LastFiles const lastFiles() const { return lastfiles; }
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2010-12-04 23:18:52 +00:00
|
|
|
/** Insert #file# into the lastfile vector.
|
2006-04-05 22:56:18 +00:00
|
|
|
This funtion inserts #file# into the last files list. If the file
|
|
|
|
already exists it is moved to the top of the list, else exist it
|
|
|
|
is placed on the top of the list. If the list is full the last
|
|
|
|
file in the list is popped from the end.
|
|
|
|
@param file the file to insert in the lastfile list.
|
|
|
|
*/
|
2006-12-02 16:07:15 +00:00
|
|
|
void add(support::FileName const & file);
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
private:
|
|
|
|
/// Default number of lastfiles.
|
|
|
|
unsigned int const default_num_last_files;
|
|
|
|
|
|
|
|
/// Max number of lastfiles.
|
|
|
|
unsigned int const absolute_max_last_files;
|
|
|
|
|
|
|
|
/// a list of lastfiles
|
|
|
|
LastFiles lastfiles;
|
|
|
|
|
|
|
|
/// number of files in the lastfiles list.
|
|
|
|
unsigned int num_lastfiles;
|
|
|
|
|
|
|
|
/** Used by the constructor to set the number of stored last files.
|
|
|
|
@param num the number of lastfiles to set.
|
2006-04-05 22:56:18 +00:00
|
|
|
*/
|
2006-10-27 14:18:03 +00:00
|
|
|
void setNumberOfLastFiles(unsigned int num);
|
|
|
|
};
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
class LastOpenedSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
///
|
2009-05-05 12:47:44 +00:00
|
|
|
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<LastOpenedFile> LastOpened;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
/// Return lastopened container (vector)
|
|
|
|
LastOpened const getfiles() const { return lastopened; }
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-04-28 14:29:38 +00:00
|
|
|
/** add file to lastopened file list
|
|
|
|
@param file filename to add
|
2006-04-05 22:56:18 +00:00
|
|
|
*/
|
2009-05-05 12:47:44 +00:00
|
|
|
void add(support::FileName const & file, bool active = false);
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
/** clear lastopened file list
|
|
|
|
*/
|
|
|
|
void clear();
|
|
|
|
|
|
|
|
private:
|
|
|
|
/// a list of lastopened files
|
|
|
|
LastOpened lastopened;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class LastFilePosSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
///
|
2007-11-02 19:59:08 +00:00
|
|
|
struct FilePos {
|
|
|
|
FilePos() : pit(0), pos(0) {}
|
2019-10-20 09:47:04 +00:00
|
|
|
support::FileName file;
|
2007-11-02 19:59:08 +00:00
|
|
|
pit_type pit;
|
|
|
|
pos_type pos;
|
|
|
|
};
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
///
|
2019-10-20 09:47:04 +00:00
|
|
|
typedef std::list<FilePos> FilePosList;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
LastFilePosSection() : num_lastfilepos(100) {}
|
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
2019-10-20 09:47:04 +00:00
|
|
|
/** add cursor position to the fname entry in the filepos list
|
|
|
|
@param pos file name and position of the cursor when the BufferView is closed.
|
2006-10-27 14:18:03 +00:00
|
|
|
*/
|
2019-10-20 09:47:04 +00:00
|
|
|
void save(FilePos const & pos);
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2019-10-20 09:47:04 +00:00
|
|
|
/** load saved cursor position from the fname entry in the filepos list
|
2006-04-05 22:56:18 +00:00
|
|
|
@param fname file entry for which to load position information
|
|
|
|
*/
|
2006-12-02 16:07:15 +00:00
|
|
|
FilePos load(support::FileName const & fname) const;
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
private:
|
|
|
|
/// default number of lastfilepos to save */
|
|
|
|
unsigned int const num_lastfilepos;
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
|
2019-10-20 09:47:04 +00:00
|
|
|
/// a list of file positions
|
|
|
|
FilePosList lastfilepos;
|
2006-10-27 14:18:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class BookmarksSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
2007-04-16 19:01:32 +00:00
|
|
|
/// A bookmark is composed of three parts
|
|
|
|
/// 1. filename
|
|
|
|
/// 2. bottom (whole document) level pit and pos, used to (inaccurately) save/restore a bookmark
|
|
|
|
/// 3. top level id and pos, used to accurately locate bookmark when lyx is running
|
|
|
|
/// top and bottom level information sometimes needs to be sync'ed. In particular,
|
|
|
|
/// 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! :-)
|
2007-05-28 22:27:45 +00:00
|
|
|
///
|
2007-04-16 19:01:32 +00:00
|
|
|
/// TODO: bottom level pit and pos will be replaced by StableDocIterator
|
2006-11-01 15:55:17 +00:00
|
|
|
class Bookmark {
|
|
|
|
public:
|
|
|
|
/// Filename
|
2006-12-02 16:07:15 +00:00
|
|
|
support::FileName filename;
|
2007-04-16 19:01:32 +00:00
|
|
|
/// Bottom level cursor pit, will be saved/restored by .lyx/session
|
|
|
|
pit_type bottom_pit;
|
|
|
|
/// Bottom level cursor position, will be saved/restore by .lyx/session
|
|
|
|
pos_type bottom_pos;
|
|
|
|
/// Top level cursor id, used to lcoate bookmarks for opened files
|
|
|
|
int top_id;
|
|
|
|
/// Top level cursor position within a paragraph
|
|
|
|
pos_type top_pos;
|
2006-11-01 15:55:17 +00:00
|
|
|
///
|
2007-04-16 19:01:32 +00:00
|
|
|
Bookmark() : bottom_pit(0), bottom_pos(0), top_id(0), top_pos(0) {}
|
2006-11-01 15:55:17 +00:00
|
|
|
///
|
2007-04-16 19:01:32 +00:00
|
|
|
Bookmark(support::FileName const & f, pit_type pit, pos_type pos, int id, pos_type tpos)
|
|
|
|
: filename(f), bottom_pit(pit), bottom_pos(pos), top_id(id), top_pos(tpos) {}
|
|
|
|
/// set bookmark top_id, this is because newly loaded bookmark
|
2007-01-11 16:01:10 +00:00
|
|
|
/// may have zero par_id and par_pit can change during editing, see bug 3092
|
2007-05-28 22:27:45 +00:00
|
|
|
void updatePos(pit_type pit, pos_type pos, int id) {
|
2007-04-16 19:01:32 +00:00
|
|
|
bottom_pit = pit;
|
|
|
|
bottom_pos = pos;
|
|
|
|
top_id = id;
|
2007-01-11 16:01:10 +00:00
|
|
|
}
|
2006-11-01 15:55:17 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
///
|
2007-03-29 03:41:55 +00:00
|
|
|
typedef std::vector<Bookmark> BookmarkList;
|
2006-11-01 15:55:17 +00:00
|
|
|
|
|
|
|
public:
|
2021-01-06 13:18:25 +00:00
|
|
|
///
|
|
|
|
BookmarksSection() : bookmarks(max_bookmarks + 1) {}
|
2006-11-01 15:55:17 +00:00
|
|
|
|
|
|
|
/// Save the current position as bookmark
|
2007-04-16 19:01:32 +00:00
|
|
|
void save(support::FileName const & fname, pit_type bottom_pit, pos_type bottom_pos,
|
|
|
|
int top_id, pos_type top_pos, unsigned int idx);
|
2006-11-01 15:55:17 +00:00
|
|
|
|
2007-03-29 03:41:55 +00:00
|
|
|
/// return bookmark 0-9, bookmark 0 is the temporary bookmark
|
2006-11-01 15:55:17 +00:00
|
|
|
Bookmark const & bookmark(unsigned int i) const;
|
|
|
|
|
|
|
|
/// does the given bookmark have a saved position ?
|
|
|
|
bool isValid(unsigned int i) const;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
2009-01-07 01:48:47 +00:00
|
|
|
/// is there at least one bookmark that has a saved position ?
|
|
|
|
bool hasValid() const;
|
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2007-03-29 03:41:55 +00:00
|
|
|
unsigned int size() const { return max_bookmarks; }
|
2006-11-01 15:55:17 +00:00
|
|
|
|
|
|
|
/// clear all bookmarks
|
2007-03-29 03:41:55 +00:00
|
|
|
void clear();
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2006-04-05 22:56:18 +00:00
|
|
|
|
2006-04-05 23:56:29 +00:00
|
|
|
/** return bookmark list. Non-const container is used since
|
2006-04-05 22:56:18 +00:00
|
|
|
bookmarks will be cleaned after use.
|
|
|
|
*/
|
2006-10-27 14:18:03 +00:00
|
|
|
BookmarkList & load() { return bookmarks; }
|
|
|
|
|
|
|
|
private:
|
2006-11-01 15:55:17 +00:00
|
|
|
|
2021-01-06 13:18:25 +00:00
|
|
|
/// allow 9 regular bookmarks, bookmark 0 is temporary
|
|
|
|
unsigned int const max_bookmarks = 9;
|
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
/// a list of bookmarks
|
|
|
|
BookmarkList bookmarks;
|
2006-11-01 15:55:17 +00:00
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2009-01-18 21:50:23 +00:00
|
|
|
class LastCommandsSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
typedef std::vector<std::string> LastCommands;
|
|
|
|
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
LastCommandsSection(unsigned int num);
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2009-01-18 21:50:23 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2009-01-18 21:50:23 +00:00
|
|
|
|
|
|
|
/// 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;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-11-23 21:17:13 +00:00
|
|
|
class AuthFilesSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
explicit AuthFilesSection();
|
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2016-11-23 21:17:13 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2016-11-23 21:17:13 +00:00
|
|
|
|
|
|
|
///
|
2017-08-03 11:07:41 +00:00
|
|
|
bool find(std::string const & name) const;
|
|
|
|
|
|
|
|
///
|
|
|
|
void insert(std::string const & name);
|
2016-11-23 21:17:13 +00:00
|
|
|
|
|
|
|
private:
|
|
|
|
/// set of document files authorized for external conversion
|
|
|
|
std::set<std::string> auth_files_;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2017-08-03 11:07:41 +00:00
|
|
|
class ShellEscapeSection : SessionSection
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
///
|
|
|
|
explicit ShellEscapeSection() {};
|
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void read(std::istream & is) override;
|
2017-08-03 11:07:41 +00:00
|
|
|
|
|
|
|
///
|
2020-10-01 07:42:11 +00:00
|
|
|
void write(std::ostream & os) const override;
|
2017-08-03 11:07:41 +00:00
|
|
|
|
|
|
|
///
|
|
|
|
bool find(std::string const & name) const;
|
|
|
|
|
|
|
|
///
|
|
|
|
bool findAuth(std::string const & name) const;
|
|
|
|
|
|
|
|
///
|
|
|
|
void insert(std::string const & name, bool auth = false);
|
|
|
|
|
|
|
|
///
|
|
|
|
void remove(std::string const & name);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/// set of document files authorized for external conversion
|
|
|
|
std::set<std::string> shellescape_files_;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2007-11-02 19:59:08 +00:00
|
|
|
class Session
|
|
|
|
{
|
2006-10-27 14:18:03 +00:00
|
|
|
public:
|
2007-11-02 19:59:08 +00:00
|
|
|
/// Read the session file. @param num length of lastfiles
|
2009-01-18 21:50:23 +00:00
|
|
|
explicit Session(unsigned int num_last_files = 4,
|
|
|
|
unsigned int num_last_commands = 30);
|
2007-11-02 19:59:08 +00:00
|
|
|
/// Write the session file.
|
2006-10-27 14:18:03 +00:00
|
|
|
void writeFile() const;
|
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastFilesSection & lastFiles() { return last_files; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastFilesSection const & lastFiles() const { return last_files; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastOpenedSection & lastOpened() { return last_opened; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastOpenedSection const & lastOpened() const { return last_opened; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastFilePosSection & lastFilePos() { return last_file_pos; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
LastFilePosSection const & lastFilePos() const { return last_file_pos; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
BookmarksSection & bookmarks() { return bookmarks_; }
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
BookmarksSection const & bookmarks() const { return bookmarks_; }
|
2009-01-18 21:50:23 +00:00
|
|
|
///
|
|
|
|
LastCommandsSection & lastCommands() { return last_commands; }
|
|
|
|
///
|
|
|
|
LastCommandsSection const & lastCommands() const { return last_commands; }
|
2016-11-23 21:17:13 +00:00
|
|
|
///
|
|
|
|
AuthFilesSection & authFiles() { return auth_files; }
|
|
|
|
///
|
|
|
|
AuthFilesSection const & authFiles() const { return auth_files; }
|
2017-08-03 11:07:41 +00:00
|
|
|
///
|
|
|
|
ShellEscapeSection & shellescapeFiles() { return shellescape_files; }
|
|
|
|
///
|
|
|
|
ShellEscapeSection const & shellescapeFiles() const { return shellescape_files; }
|
2006-10-27 14:18:03 +00:00
|
|
|
|
|
|
|
private:
|
2008-07-14 08:35:00 +00:00
|
|
|
friend class LyX;
|
2007-11-02 19:59:08 +00:00
|
|
|
/// uncopiable
|
|
|
|
Session(Session const &);
|
|
|
|
void operator=(Session const &);
|
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
/// file to save session, determined in the constructor.
|
2006-12-02 16:07:15 +00:00
|
|
|
support::FileName session_file;
|
2006-04-05 23:56:29 +00:00
|
|
|
|
2006-04-05 22:56:18 +00:00
|
|
|
/** Read the session file.
|
|
|
|
Reads the #.lyx/session# at the beginning of the LyX session.
|
2006-04-05 23:56:29 +00:00
|
|
|
This will read the session file (usually #.lyx/session#).
|
2006-04-05 22:56:18 +00:00
|
|
|
@param file the file containing the session.
|
|
|
|
*/
|
|
|
|
void readFile();
|
|
|
|
|
2006-10-27 14:18:03 +00:00
|
|
|
///
|
|
|
|
LastFilesSection last_files;
|
|
|
|
///
|
|
|
|
LastOpenedSection last_opened;
|
|
|
|
///
|
|
|
|
LastFilePosSection last_file_pos;
|
|
|
|
///
|
2006-10-29 20:01:00 +00:00
|
|
|
BookmarksSection bookmarks_;
|
2009-01-18 21:50:23 +00:00
|
|
|
///
|
|
|
|
LastCommandsSection last_commands;
|
2016-11-23 21:17:13 +00:00
|
|
|
///
|
|
|
|
AuthFilesSection auth_files;
|
2017-08-03 11:07:41 +00:00
|
|
|
///
|
|
|
|
ShellEscapeSection shellescape_files;
|
2006-04-05 22:56:18 +00:00
|
|
|
};
|
|
|
|
|
2008-07-14 08:35:00 +00:00
|
|
|
/// This is a singleton class. Get the instance.
|
|
|
|
/// Implemented in LyX.cpp.
|
|
|
|
Session & theSession();
|
|
|
|
|
2017-07-23 11:11:54 +00:00
|
|
|
} // namespace lyx
|
2006-04-05 22:56:18 +00:00
|
|
|
|
|
|
|
#endif
|