X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbufferlist.h;h=4cedb64c9b5e0e2334626d521c1230861df352b2;hb=09e01879979643949f1f2c7216023f1f35d5ada2;hp=1c59ea8c3a5585c2bc731049f21ea900fb93d2fa;hpb=db54977b71c7e052b53dc97b5f539aaa86e24342;p=lyx.git diff --git a/src/bufferlist.h b/src/bufferlist.h index 1c59ea8c3a..4cedb64c9b 100644 --- a/src/bufferlist.h +++ b/src/bufferlist.h @@ -1,154 +1,89 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team +/** + * \file bufferlist.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * This file is Copyright 1996 - * Lars Gullik Bjønnes + * \author Lars Gullik Bjønnes * - * ====================================================== */ + * Full author contact details are available in file CREDITS + */ #ifndef BUFFER_LIST_H #define BUFFER_LIST_H -#ifdef __GNUG__ -#pragma interface -#endif - -#include "buffer.h" -#include "debug.h" +#include "LString.h" -/** A class to hold all the buffers in a structure - The point of this class is to hide from bufferlist what kind - of structure the buffers are stored in. Should be no concern for - bufferlist if the buffers is in a array or in a linked list. +#include - This class should ideally be enclosed inside class BufferList, but that - gave me an "internal gcc error". - */ -class BufferStorage { -public: - /// - typedef vector Container; - /// - typedef Container::iterator iterator; - /// - typedef Container::const_iterator const_iterator; - /// - bool empty() const { return container.empty(); } - /// - void release(Buffer * buf); - /// - Buffer * newBuffer(string const & s, LyXRC *, bool = false); - /// - Container::iterator begin() { return container.begin(); } - /// - Container::iterator end() { return container.end(); } - /// - Container::const_iterator begin() const { return container.begin(); } - /// - Container::const_iterator end() const { return container.end(); } - /// - Buffer * front() { return container.front(); } - /// - Buffer * operator[](int c) { return container[c]; } - /// - int size() const { return container.size(); } -private: - /// - Container container; -}; +#include +class Buffer; +class LatexRunParams; -/** The class governing all the open buffers - This class governs all the currently open buffers. Currently all the buffer - are located in a static array, soon this will change and we will have a - linked list instead. +/** + * The class holds all all open buffers, and handles construction + * and deletions of new ones. */ -class BufferList { +class BufferList : boost::noncopyable { public: - /// - BufferList(); - - /// state info - enum list_state { - /// - OK, - /// - CLOSING - }; - - /// returns the state of the bufferlist - list_state getState() { return state_; } - - /** loads a LyX file or... - If the optional argument tolastfiles is false (default is - true), the file name will not be added to the last opened - files list - */ - Buffer * loadLyXFile(string const & filename, - bool tolastfiles = true); - - /// - bool empty(); - - /// Saves buffer. Returns false if unsuccesful. - bool write(Buffer *, bool makeBackup); - - /// - bool QwriteAll(); + BufferList(); - /// Close all open buffers. - void closeAll(); + /// write all buffers, asking the user, returns false if cancelled + bool quitWriteAll(); - /// - void resize(); + /// create a new buffer + Buffer * newBuffer(string const & s, bool ronly = false); - /// Read a file into a buffer readonly or not. - Buffer * readFile(string const &, bool ro); + /// delete a buffer + void release(Buffer * b); - /// Make a new file (buffer) using a template - Buffer * newFile(string const &, string); - /// returns a vector with all the buffers filenames - vector getFileNames() const; - - /// - void updateInset(Inset *, bool = true); + /// Close all open buffers. + void closeAll(); - /// - int unlockInset(UpdatableInset *); + /// returns a vector with all the buffers filenames + std::vector const getFileNames() const; - /// - void updateIncludedTeXfiles(string const &); + /// FIXME + void updateIncludedTeXfiles(string const &, LatexRunParams const &); - /// + /// emergency save for all buffers void emergencyWriteAll(); - /** closes buffer - Returns false if operation was canceled - */ - bool close(Buffer *); + /// close buffer. Returns false if cancelled by user + bool close(Buffer * buf, bool ask); + + /// return true if no buffers loaded + bool empty() const; - /// + /// return head of buffer list if any Buffer * first(); - + /// returns true if the buffer exists already - bool exists(string const &); + bool exists(string 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(string const &); /// returns a pointer to the buffer with the given number. - Buffer * getBuffer(int); + Buffer * getBuffer(unsigned int); + + /// reset current author for all buffers + void setCurrentAuthor(string const & name, string const & email); private: - /// + /// ask to save a buffer on quit, returns false if should cancel + bool quitWriteBuffer(Buffer * buf); + + typedef std::vector BufferStorage; + + /// storage of all buffers BufferStorage bstore; - - /// - list_state state_; + + /// save emergency file for the given buffer + void emergencyWrite(Buffer * buf); }; -#endif +#endif // BUFFERLIST_H