X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.h;h=75f6e0530f2a0c35e10c1c8100ac8d6f75b6169c;hb=09e01879979643949f1f2c7216023f1f35d5ada2;hp=46cd4b0afb8e1f604e2c461961f9d9514cfbd914;hpb=9c7d4387f249a7d258f99dceee47820aea1890cc;p=lyx.git diff --git a/src/buffer.h b/src/buffer.h index 46cd4b0afb..75f6e0530f 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1,14 +1,13 @@ // -*- C++ -*- -/* This file is part of - * ====================================================== +/** + * \file buffer.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * LyX, The Document Processor - * Copyright 1995 Matthias Ettrich + * \author Lars Gullik Bjønnes * - * This file is Copyleft 1996 - * Lars Gullik Bjønnes - * - * ====================================================== */ + * Full author contact details are available in file CREDITS + */ #ifndef BUFFER_H #define BUFFER_H @@ -21,18 +20,22 @@ #include "bufferparams.h" #include "texrow.h" #include "ParagraphList.h" -#include "paragraph.h" #include "author.h" +#include "iterators.h" +#include "errorlist.h" -#include +#include +#include +#include -class BufferView; class LyXRC; class TeXErrors; class LaTeXFeatures; +class LatexRunParams; class Language; class ParIterator; class ParConstIterator; +class Messages; /** The buffer object. @@ -66,29 +69,6 @@ public: /// Maybe we know the function already by number... bool dispatch(int ac, string const & argument, bool * result = 0); - /// - void resizeInsets(BufferView *); - - /// Update window titles of all users. - void updateTitles() const; - - /// Reset autosave timers for all users. - void resetAutosaveTimers() const; - - /** Adds the BufferView to the users list. - Later this func will insert the \c BufferView into a real list, - not just setting a pointer. - */ - void addUser(BufferView * u); - - /** Removes the #BufferView# from the users list. - Since we only can have one at the moment, we just reset it. - */ - void delUser(BufferView *); - - /// - void redraw(); - /// Load the autosaved file. void loadAutoSaveFile(); @@ -100,7 +80,7 @@ public: // FIXME: it's very silly to pass a lex in here /// load a new file - bool readFile(LyXLex &, string const &); + bool readFile(string const &); /// read the header, returns number of unknown tokens int readHeader(LyXLex & lex); @@ -112,23 +92,35 @@ public: bool readBody(LyXLex &, ParagraphList::iterator pit); /// This parses a single token - int readToken(LyXLex &, ParagraphList & pars, - ParagraphList::iterator & pit, - string const & token, int & pos, - Paragraph::depth_type & depth, - LyXFont &); + int readParagraph(LyXLex &, string const & token, + ParagraphList & pars, ParagraphList::iterator & pit, + Paragraph::depth_type & depth); /// - void insertStringAsLines(Paragraph *&, lyx::pos_type &, + void insertStringAsLines(ParagraphList::iterator &, lyx::pos_type &, LyXFont const &, string const &); /// - Paragraph * getParFromID(int id) const; - -private: - /// Parse a single inset. - void readInset(LyXLex &, ParagraphList::iterator pit, int & pos, LyXFont &, Change current_change); + ParIterator getParFromID(int id) const; + /// do we have a paragraph with this id? + bool hasParWithID(int id) const; public: + /// This signal is emitted when a parsing error shows up. + boost::signal1 error; + /// This signal is emitted when some message shows up. + boost::signal1 message; + /// This signal is emitted when the buffer busy status change. + boost::signal1 busy; + /// This signal is emitted when the buffer readonly status change. + boost::signal1 readonly; + /// Update window titles of all users. + boost::signal0 updateTitles; + /// Reset autosave timers for all users. + boost::signal0 resetAutosaveTimers; + /// This signal is emitting if the buffer is being closed. + boost::signal0 closing; + + /** Save file. Takes care of auto-save files and backup file if requested. Returns \c true if the save is successful, \c false otherwise. @@ -148,33 +140,34 @@ public: /// Just a wrapper for the method below, first creating the ofstream. void makeLaTeXFile(string const & filename, string const & original_path, - bool nice, - bool only_body = false, - bool only_preamble = false); + LatexRunParams const &, + bool output_preamble = true, + bool output_body = true); /// void makeLaTeXFile(std::ostream & os, string const & original_path, - bool nice, - bool only_body = false, - bool only_preamble = false); + LatexRunParams const &, + bool output_preamble = true, + bool output_body = true); /// void simpleDocBookOnePar(std::ostream &, - Paragraph * par, int & desc_on, - Paragraph::depth_type depth) const ; + ParagraphList::iterator par, int & desc_on, + Paragraph::depth_type depth) const; /// - void simpleLinuxDocOnePar(std::ostream & os, Paragraph * par, - Paragraph::depth_type depth); + void simpleLinuxDocOnePar(std::ostream & os, + ParagraphList::iterator par, + Paragraph::depth_type depth) const; /// void makeLinuxDocFile(string const & filename, bool nice, bool only_body = false); /// void makeDocBookFile(string const & filename, bool nice, bool only_body = false); - /// - void sgmlError(Paragraph * par, int pos, string const & message) const; - /// returns the main language for the buffer (document) Language const * getLanguage() const; + /// get l10n translated to the buffers language + string const B_(string const & l10n) const; + /// int runChktex(); /// return true if the main lyx file does not need saving @@ -255,22 +248,22 @@ public: /// return all bibkeys from buffer and its childs void fillWithBibKeys(std::vector > & keys) const; /// - std::vector const getLabelList() const; - - /** This will clearly have to change later. Later we can have more - than one user per buffer. */ - BufferView * getUser() const; + void getLabelList(std::vector &) const; /// void changeLanguage(Language const * from, Language const * to); + + /// + void updateDocLang(Language const * nlang); + /// bool isMultiLingual(); /// Does this mean that this is buffer local? - limited_stack > undostack; + limited_stack undostack; /// Does this mean that this is buffer local? - limited_stack > redostack; + limited_stack redostack; /// BufferParams params; @@ -299,6 +292,8 @@ public: AuthorList & authors(); private: + bool do_writeFile(std::ostream & ofs) const; + typedef std::map DepClean; /// need to regenerate .tex ? @@ -322,25 +317,17 @@ private: /// The path to the document file. string filepath_; - /// Format number of buffer - int file_format; - /** A list of views using this buffer. - Why not keep a list of the BufferViews that use this buffer? - - At least then we don't have to do a lot of magic like: - #buffer->lyx_gui->bufferview->updateLayoutChoice#. Just ask each - of the buffers in the list of users to do a #updateLayoutChoice#. - */ - BufferView * users; + /// + boost::scoped_ptr messages_; public: /// class inset_iterator { public: typedef std::input_iterator_tag iterator_category; - typedef Inset value_type; + typedef InsetOld value_type; typedef ptrdiff_t difference_type; - typedef Inset * pointer; - typedef Inset & reference; + typedef InsetOld * pointer; + typedef InsetOld & reference; typedef ParagraphList::iterator base_type; /// @@ -360,7 +347,7 @@ public: pointer operator->(); /// - Paragraph * getPar(); + ParagraphList::iterator getPar() const; /// lyx::pos_type getPos() const; /// @@ -378,25 +365,17 @@ public: InsetList::iterator it; }; - /// - inset_iterator inset_iterator_begin() { - return inset_iterator(paragraphs.begin(), paragraphs.end()); - } + /// return an iterator to all *top-level* insets in the buffer + inset_iterator inset_iterator_begin(); - /// - inset_iterator inset_iterator_end() { - return inset_iterator(); - } + /// return the end of all *top-level* insets in the buffer + inset_iterator inset_iterator_end(); - /// - inset_iterator inset_const_iterator_begin() const { - return inset_iterator(paragraphs.begin(), paragraphs.end()); - } + /// return a const iterator to all *top-level* insets in the buffer + inset_iterator inset_const_iterator_begin() const; - /// - inset_iterator inset_const_iterator_end() const { - return inset_iterator(); - } + /// return the const end of all *top-level* insets in the buffer + inset_iterator inset_const_iterator_end() const; /// ParIterator par_iterator_begin(); @@ -408,7 +387,7 @@ public: ParConstIterator par_iterator_end() const; /// - Inset * getInsetFromID(int id_arg) const; + InsetOld * getInsetFromID(int id_arg) const; }; bool operator==(Buffer::inset_iterator const & iter1,