X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.h;h=880cff61b3d91dbbeb4706985e469e5747b8782e;hb=98c966c64594611e469313314abd1e59524adb4a;hp=ae9cbb0ce2d0092e723ca8ba9169401cf0be3408;hpb=85a5ea7bfc80e179a61a99f2955455e84d3384cc;p=lyx.git diff --git a/src/buffer.h b/src/buffer.h index ae9cbb0ce2..880cff61b3 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1,15 +1,15 @@ // -*- C++ -*- /* This file is part of - * ====================================================== - * - * LyX, The Document Processor + * ====================================================== + * + * LyX, The Document Processor * Copyright 1995 Matthias Ettrich * * This file is Copyleft 1996 * Lars Gullik Bjønnes * * ====================================================== */ - + #ifndef BUFFER_H #define BUFFER_H @@ -30,6 +30,12 @@ class LyXRC; class TeXErrors; class LaTeXFeatures; class Language; +class ParIterator; + +// When lyx 1.3.x starts we should enable this +// btw. we should also test this with 1.2 so that we +// do not get any surprises. (Lgb) +//#define NO_COMPABILITY 1 /// struct DEPCLEAN { @@ -60,18 +66,10 @@ public: \param b optional \c false by default */ explicit Buffer(string const & file, bool b = false); - + /// Destructor ~Buffer(); - /** Save the buffer's parameters as user default. - This function saves a file \c user_lyxdir/templates/defaults.lyx - which parameters are those of the current buffer. This file - is used as a default template when creating a new - file. Returns \c true on success. - */ - bool saveParamsAsDefaults(); - /** High-level interface to buffer functionality. This function parses a command string and executes it */ @@ -80,7 +78,7 @@ public: /// Maybe we know the function already by number... bool dispatch(int ac, string const & argument); - /// + /// void resizeInsets(BufferView *); /// Update window titles of all users. @@ -99,19 +97,19 @@ public: Since we only can have one at the moment, we just reset it. */ void delUser(BufferView *); - + /// void redraw(); /// Load the autosaved file. void loadAutoSaveFile(); - - /** Reads a file. + + /** Reads a file. \param par if != 0 insert the file. \return \c false if method fails. */ bool readFile(LyXLex &, Paragraph * par = 0); - + /** Reads a file without header. \param par if != 0 insert the file. \return \c false if file is not completely read. @@ -122,8 +120,18 @@ public: bool parseSingleLyXformat2Token(LyXLex &, Paragraph *& par, Paragraph *& return_par, string const & token, int & pos, - Paragraph::depth_type & depth, + Paragraph::depth_type & depth, LyXFont &); + /// + void insertStringAsLines(Paragraph *&, lyx::pos_type &, + LyXFont const &, string const &) const; +#ifndef NO_COMPABILITY + /// + void insertErtContents(Paragraph * par, int & pos, + bool set_inactive = true); +#endif + /// + Paragraph * getParFromID(int id) const; private: /// Parse a single inset. void readInset(LyXLex &, Paragraph *& par, int & pos, LyXFont &); @@ -133,17 +141,17 @@ public: Returns \c true if the save is successful, \c false otherwise. */ bool save() const; - + /// Write file. Returns \c false if unsuccesful. bool writeFile(string const &, bool) const; - + /// void writeFileAscii(string const & , int); /// void writeFileAscii(std::ostream &, int); /// - string const asciiParagraph(Paragraph const *, - unsigned int linelen) const; + string const asciiParagraph(Paragraph const *, unsigned int linelen, + bool noparbreak = false) const; /// void makeLaTeXFile(string const & filename, string const & original_path, @@ -153,40 +161,48 @@ public: */ void latexParagraphs(std::ostream & os, Paragraph * par, Paragraph * endpar, TexRow & texrow) const; - - /// - void simpleDocBookOnePar(std::ostream &, string & extra, + /// + void simpleDocBookOnePar(std::ostream &, Paragraph * par, int & desc_on, Paragraph::depth_type depth) const ; - /// - int runChktex(); - + void simpleLinuxDocOnePar(std::ostream & os, Paragraph * par, + Paragraph::depth_type depth); /// void makeLinuxDocFile(string const & filename, bool nice, bool only_body = false); /// void makeDocBookFile(string const & filename, bool nice, bool only_body = false); + /// Open SGML/XML tag. + void sgmlOpenTag(std::ostream & os, Paragraph::depth_type depth, + string const & latexname) const; + /// Closes SGML/XML tag. + void sgmlCloseTag(std::ostream & os, Paragraph::depth_type depth, + string const & latexname) const; + /// + void sgmlError(Paragraph * par, int pos, string const & message) const; /// returns the main language for the buffer (document) Language const * getLanguage() const; /// + int runChktex(); + /// bool isLyxClean() const; /// bool isBakClean() const; /// bool isDepClean(string const & name) const; - + /// void markLyxClean() const; /// void markBakClean(); - + /// void markDepClean(string const & name); - + /// void setUnnamed(bool flag = true); @@ -196,9 +212,13 @@ public: /// Mark this buffer as dirty. void markDirty(); - /// Returns the buffers filename. + /// Returns the buffer's filename. It is always an absolute path. string const & fileName() const; + /// Returns the the path where the buffer lives. + /// It is always an absolute path. + string const & filePath() const; + /** A transformed version of the file name, adequate for LaTeX. \param no_path optional if \c true then the path is stripped. */ @@ -206,7 +226,7 @@ public: /// Get the name and type of the log. std::pair const getLogName() const; - + /// Change name of buffer. Updates "read-only" flag. void setFileName(string const & newfile); @@ -228,11 +248,8 @@ public: /** returns \c true if the buffer contains either a LinuxDoc or DocBook document */ bool isSGML() const; - /// returns \c true if the buffer contains a Wed document - bool isLiterate() const; - - /// - void setPaperStuff(); + /// returns \c true if the buffer contains a Wed document + bool isLiterate() const; /** Validate a buffer for LaTeX. This validates the buffer, and returns a struct for use by @@ -279,14 +296,14 @@ public: bool isMultiLingual(); /// Does this mean that this is buffer local? - UndoStack undostack; - - /// Does this mean that this is buffer local? - UndoStack redostack; - + UndoStack undostack; + + /// Does this mean that this is buffer local? + UndoStack redostack; + /// BufferParams params; - + /** The list of paragraphs. This is a linked list of paragraph, this list holds the whole contents of the document. @@ -299,9 +316,6 @@ public: /// Where to put temporary files. string tmppath; - /// The path to the document file. - string filepath; - /** If we are writing a nice LaTeX file or not. While writing as LaTeX, tells whether we are doing a 'nice' LaTeX file */ @@ -310,29 +324,12 @@ public: /// Used when typesetting to place errorboxes. TexRow texrow; private: - /// - void docBookHandleCaption(std::ostream & os, string & inner_tag, - Paragraph::depth_type depth, int desc_on, - Paragraph * & par); - /// Open SGML/XML tag. - void sgmlOpenTag(std::ostream & os, Paragraph::depth_type depth, - string const & latexname) const; - /// Closes SGML/XML tag. - void sgmlCloseTag(std::ostream & os, Paragraph::depth_type depth, - string const & latexname) const; - /// - void linuxDocError(Paragraph * par, int pos, - string const & message); - /// - void simpleLinuxDocOnePar(std::ostream & os, Paragraph * par, - Paragraph::depth_type depth); - /// is save needed mutable bool lyx_clean; - + /// is autosave needed mutable bool bak_clean; - + /// is this a unnamed file (New...) bool unnamed; @@ -343,7 +340,10 @@ private: bool read_only; /// name of the file the buffer is associated with. - string filename; + string filename_; + + /// The path to the document file. + string filepath_; /// Format number of buffer int file_format; @@ -365,8 +365,8 @@ public: typedef ptrdiff_t difference_type; typedef Inset * pointer; typedef Inset & reference; - - + + /// inset_iterator() : par(0) /*, it(0)*/ {} // @@ -374,8 +374,7 @@ public: setParagraph(); } /// - inset_iterator(Paragraph * paragraph, - Paragraph::size_type pos); + inset_iterator(Paragraph * paragraph, lyx::pos_type pos); /// inset_iterator & operator++() { // prefix ++ if (par) { @@ -401,11 +400,11 @@ public: } /// Inset * operator*() { return *it; } - + /// Paragraph * getPar() { return par; } /// - Paragraph::size_type getPos() const { return it.getPos(); } + lyx::pos_type getPos() const { return it.getPos(); } /// friend bool operator==(inset_iterator const & iter1, @@ -427,6 +426,22 @@ public: inset_iterator inset_iterator_end() { return inset_iterator(); } + /// + inset_iterator inset_const_iterator_begin() const { + return inset_iterator(paragraph); + } + /// + inset_iterator inset_const_iterator_end() const { + return inset_iterator(); + } + + /// + ParIterator par_iterator_begin(); + /// + ParIterator par_iterator_end(); + + /// + Inset * getInsetFromID(int id_arg) const; }; @@ -442,21 +457,21 @@ void Buffer::delUser(BufferView *) { users = 0; } - + inline Language const * Buffer::getLanguage() const { return params.language; } - + inline bool Buffer::isLyxClean() const { return lyx_clean; } - + inline bool Buffer::isBakClean() const @@ -467,13 +482,13 @@ bool Buffer::isBakClean() const inline void Buffer::markLyxClean() const -{ +{ if (!lyx_clean) { - lyx_clean = true; + lyx_clean = true; updateTitles(); } // if the .lyx file has been saved, we don't need an - // autosave + // autosave bak_clean = true; } @@ -518,7 +533,14 @@ void Buffer::markDirty() inline string const & Buffer::fileName() const { - return filename; + return filename_; +} + + +inline +string const & Buffer::filePath() const +{ + return filepath_; } @@ -536,16 +558,17 @@ BufferView * Buffer::getUser() const } -inline +inline void Buffer::setParentName(string const & name) { - params.parentname = name; + params.parentname = name; } /// inline -bool operator==(Buffer::TocItem const & a, Buffer::TocItem const & b) { +bool operator==(Buffer::TocItem const & a, Buffer::TocItem const & b) +{ return a.par == b.par && a.str == b.str; // No need to compare depth. } @@ -553,7 +576,8 @@ bool operator==(Buffer::TocItem const & a, Buffer::TocItem const & b) { /// inline -bool operator!=(Buffer::TocItem const & a, Buffer::TocItem const & b) { +bool operator!=(Buffer::TocItem const & a, Buffer::TocItem const & b) +{ return !(a == b); // No need to compare depth. } @@ -562,7 +586,8 @@ bool operator!=(Buffer::TocItem const & a, Buffer::TocItem const & b) { /// inline bool operator==(Buffer::inset_iterator const & iter1, - Buffer::inset_iterator const & iter2) { + Buffer::inset_iterator const & iter2) +{ return iter1.par == iter2.par && (iter1.par == 0 || iter1.it == iter2.it); } @@ -571,7 +596,9 @@ bool operator==(Buffer::inset_iterator const & iter1, /// inline bool operator!=(Buffer::inset_iterator const & iter1, - Buffer::inset_iterator const & iter2) { + Buffer::inset_iterator const & iter2) +{ return !(iter1 == iter2); } + #endif