X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferList.h;h=ff5156657b95e84331a5882bf19991b09d1ff100;hb=5cb80b867f4a59c3253487652ba74a29ad5b3f0f;hp=895dc46ee55211daf779c3fc6f154e878bb9b14a;hpb=fad47c0fe0a45da4ac4a395817a0ad73425ef275;p=lyx.git diff --git a/src/BufferList.h b/src/BufferList.h index 895dc46ee5..ff5156657b 100644 --- a/src/BufferList.h +++ b/src/BufferList.h @@ -4,7 +4,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * * Full author contact details are available in file CREDITS. */ @@ -12,29 +12,34 @@ #ifndef BUFFER_LIST_H #define BUFFER_LIST_H -#include "support/docstring.h" - -#include +#include "support/strfwd.h" #include namespace lyx { +class Author; class Buffer; class OutputParams; +namespace support { +class FileName; +class FileNameList; +} // namespace support + /** * The class holds all all open buffers, and handles construction * and deletions of new ones. */ -class BufferList : boost::noncopyable { +class BufferList { public: typedef std::vector::iterator iterator; typedef std::vector::const_iterator const_iterator; public: BufferList(); + ~BufferList(); iterator begin(); const_iterator begin() const; @@ -42,11 +47,18 @@ public: iterator end(); const_iterator end() const; - /// write all buffers, asking the user, returns false if cancelled - bool quitWriteAll(); + /// create a new buffer and add it to the buffer list + /// \return 0 if the Buffer creation is not possible for whatever reason. + Buffer * newBuffer(std::string const & s); - /// create a new buffer - Buffer * newBuffer(std::string const & s, bool ronly = false); + /// create an internal buffer and add it to the internal buffer list + /// \return 0 if the Buffer creation is not possible for whatever reason. + Buffer * newInternalBuffer(std::string const & s); + + /// Is child a child of some Buffer other than parent? + /// NOTE: child must be a child of parent, and both must be non-null. + /// Otherwise we assert. + bool isOthersChild(Buffer * parent, Buffer * child) const; /// delete a buffer void release(Buffer * b); @@ -55,16 +67,7 @@ public: void closeAll(); /// returns a vector with all the buffers filenames - std::vector const getFileNames() const; - - /// FIXME - void updateIncludedTeXfiles(std::string const &, OutputParams const &); - - /// emergency save for all buffers - void emergencyWriteAll(); - - /// close buffer. Returns false if cancelled by user - bool close(Buffer * buf, bool ask); + support::FileNameList fileNames() const; /// return true if no buffers loaded bool empty() const; @@ -76,17 +79,30 @@ public: Buffer * last(); /// returns true if the buffer exists already - bool exists(std::string const &) const; + bool exists(support::FileName const &) const; /// returns true if the buffer is loaded bool isLoaded(Buffer const * b) const; - /// returns a pointer to the buffer with the given name. - Buffer * getBuffer(std::string const &); - /// returns a pointer to the buffer with the given number. + /// returns true if the buffer is known as internal buffer + bool isInternal(Buffer const * b) const; + + /// \return index of named buffer in buffer list + int bufferNum(support::FileName const & name) const; + + /** returns a pointer to the buffer with the given name + * + * \param internal + * If true, the buffer is searched also among internal buffers + */ + Buffer * getBuffer(support::FileName const & name, bool internal = false) const; + + /// \return a pointer to the buffer with the given number Buffer * getBuffer(unsigned int); - /// returns a pointer to the buffer whose temppath matches the string - Buffer * getBufferFromTmp(std::string const &); + + /// \return a pointer to the buffer whose temppath matches the given \p path + /// If optional \p realpath is \c true the lookup is done with real path names + Buffer * getBufferFromTmp(std::string const & path, bool realpath = false); /** returns a pointer to the buffer that follows argument in * buffer list. The buffer following the last in list is the @@ -100,20 +116,37 @@ public: */ Buffer * previous(Buffer const *) const; + /// \name Functions that just operate on all buffers + //@{ /// reset current author for all buffers - void setCurrentAuthor(docstring const & name, docstring const & email); + void recordCurrentAuthor(Author const & author); + /// update previews for all buffers, e.g. for Prefs update + void updatePreviews(); + /// Call changed() on all buffers, internal or not + void changed(bool update_metrics) const; + /// emergency save for all buffers + void emergencyWriteAll(); + /// FIXME + void updateIncludedTeXfiles(std::string const &, OutputParams const &); + /// + void invalidateConverterCache() const; + //@} private: - /// ask to save a buffer on quit, returns false if should cancel - bool quitWriteBuffer(Buffer * buf); + /// create a new buffer + /// \return 0 if the Buffer creation is not possible for whatever reason. + Buffer * createNewBuffer(std::string const & s); + + /// noncopiable + BufferList(BufferList const &); + void operator=(BufferList const &); typedef std::vector BufferStorage; /// storage of all buffers BufferStorage bstore; - - /// save emergency file for the given buffer - void emergencyWrite(Buffer * buf); + /// storage of all internal buffers used for cut&paste, etc. + BufferStorage binternal; }; /// Implementation is in LyX.cpp