X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fbuffer.h;h=0c0262beab4892502c8f3122df3e40c573f60aef;hb=8d3a4fd463f6865eecf7fb9e2bd63c43f9438cfe;hp=870d697cdcbf6b50f7ee0c161701070d7ecac9fb;hpb=ee1229d7431f99788d04e99fcd8c57de69b4acaf;p=lyx.git diff --git a/src/buffer.h b/src/buffer.h index 870d697cdc..0c0262beab 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1,14 +1,14 @@ // -*- C++ -*- /* This file is part of -* ====================================================== -* -* LyX, The Document Processor -* Copyright (C) 1995 Matthias Ettrich -* -* This file is Copyleft (C) 1996 -* Lars Gullik Bjønnes -* -* ====================================================== */ + * ====================================================== + * + * LyX, The Document Processor + * Copyright 1995 Matthias Ettrich + * + * This file is Copyleft 1996 + * Lars Gullik Bjønnes + * + * ====================================================== */ // Change Log: // =========== @@ -26,22 +26,21 @@ #pragma interface #endif -#include "undo.h" +#include "LString.h" + #include "BufferView.h" #include "lyxvc.h" #include "bufferparams.h" #include "texrow.h" -#include "lyxtext.h" #include "support/filetools.h" +#include "lyx_gui_misc.h" -#define MOVE_TEXT 1 class LyXRC; class TeXErrors; class LaTeXFeatures; extern void updateAllVisibleBufferRelatedPopups(); -extern void WarnReadonly(); /// struct DEPCLEAN { @@ -50,7 +49,7 @@ struct DEPCLEAN { /// string master; /// - DEPCLEAN *next; + DEPCLEAN * next; }; /** The buffer object. @@ -63,7 +62,7 @@ public: /**@name Constructors and destructor */ //@{ /// - Buffer(string const & file, LyXRC * lyxrc = 0, bool b = false); + Buffer(string const & file, bool b = false); /// ~Buffer(); @@ -73,67 +72,52 @@ public: //@{ /** save the buffer's parameters as user default - This function saves a file 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 true on success. - */ + This function saves a file 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 true on success. + */ bool saveParamsAsDefaults(); /** high-level interface to buffer functionality - This function parses a command string and executes it - */ + This function parses a command string and executes it + */ void Dispatch(const string & command); /// Maybe we know the function already by number... void Dispatch(int ac, const string & argument); /// should be changed to work for a list. - void resize() - { + void resize() { if (users) { users->resize(); } -#ifndef MOVE_TEXT - else if (text) { - delete text; - text = 0; - } -#endif } /// Update window titles of all users - void updateTitles(); + void updateTitles() const; /// Reset autosave timers for all users - void resetAutosaveTimers(); + void resetAutosaveTimers() const; /** Adds the BufferView to the users list. - Later this func will insert the BufferView into a real list, - not just setting a pointer. - */ + Later this func will insert the BufferView into a real list, + not just setting a pointer. + */ void addUser(BufferView * u) { users = u; } /** Removes the BufferView from the users list. - Since we only can have one at the moment, we just reset it. - */ - void delUser(BufferView *){ users = 0; } + Since we only can have one at the moment, we just reset it. + */ + void delUser(BufferView *) { users = 0; } -#ifndef MOVE_TEXT - /// - void update(signed char f); -#endif - /// void redraw() { - users->redraw(); - users->fitCursor(); - users->updateScrollbar(); + users->redraw(); + users->fitCursor(); + users->updateScrollbar(); } - /// Open and lock an updatable inset - void open_new_inset(UpdatableInset *); - /// void loadAutoSaveFile(); @@ -147,11 +131,22 @@ public: If par is given, the file is inserted. */ bool readLyXformat2(LyXLex &, LyXParagraph * par = 0); - /// Inserts a lyx file at cursor position. Returns false if it fails. - bool insertLyXFile(string const & filename); - + /* This parses a single LyXformat-Token */ + bool parseSingleLyXformat2Token(LyXLex &, LyXParagraph *& par, + LyXParagraph *& return_par, + const string & token, int & pos, + char & depth, LyXFont &, + LyXParagraph::footnote_flag &, + LyXParagraph::footnote_kind &); + + /** Save file + Takes care of auto-save files and backup file if requested. + Returns true if the save is successful, false otherwise. + */ + bool save() const; + /// Write file. Returns false if unsuccesful. - bool writeFile(string const &, bool); + bool writeFile(string const &, bool) const; /// void writeFileAscii(string const & , int); @@ -187,7 +182,7 @@ public: bool isLyxClean() const { return lyx_clean; } /// changed Heinrich Bauer, 23/03/98 - bool isDviClean(); + bool isDviClean() const; /// bool isNwClean() const { return nw_clean; } @@ -199,7 +194,7 @@ public: bool isDepClean(string const & name) const; /// - void markLyxClean() { + void markLyxClean() const { if (!lyx_clean) { lyx_clean = true; updateTitles(); @@ -247,9 +242,11 @@ public: /// string const & fileName() const { return filename; } - /// A transformed version of the file name, adequate for LaTeX - string getLatexName() const { - return ChangeExtension(MakeLatexName(filename), ".tex", true); + /** A transformed version of the file name, adequate for LaTeX + The path is stripped if no_path is true (default) */ + string getLatexName(bool no_path = true) const { + return ChangeExtension(MakeLatexName(filename), + ".tex", no_path); } /// Change name of buffer. Updates "read-only" flag. @@ -259,18 +256,17 @@ public: void setParentName(string const &); /// Is buffer read-only? - bool isReadonly() { return read_only; } + bool isReadonly() const { return read_only; } /// Set buffer read-only flag - void setReadonly(bool flag = true) - { + void setReadonly(bool flag = true) { if (read_only != flag) { read_only = flag; updateTitles(); updateAllVisibleBufferRelatedPopups(); } if (read_only) { - WarnReadonly(); + WarnReadonly(filename); } } @@ -288,30 +284,15 @@ public: /// void setPaperStuff(); -#if 0 - /// - void setOldPaperStuff(); -#endif - /** Validate a buffer for LaTeX. - This validates the buffer, and returns a struct for use by - makeLaTeX and others. Its main use is to figure out what commands - and packages need to be included in the LaTeX file. It (should) - also check that the needed constructs are there (i.e. that the \refs - points to coresponding \labels). It should perhaps inset "error" - insets to help the user correct obvious mistakes. - */ - void validate(LaTeXFeatures &); //the correct parameters to be - //included later - - /** Insert an inset into the buffer - Insert inset into buffer, placing it in a layout of lout, - if no_table make sure that it doesn't end up in a table. */ - void insertInset(Inset *, string const & lout = string(), - bool no_table = false); - - /// - void setCursorFromRow (int); + This validates the buffer, and returns a struct for use by + makeLaTeX and others. Its main use is to figure out what commands + and packages need to be included in the LaTeX file. It (should) + also check that the needed constructs are there (i.e. that the \refs + points to coresponding \labels). It should perhaps inset "error" + insets to help the user correct obvious mistakes. + */ + void validate(LaTeXFeatures &) const; /// string getIncludeonlyList(char delim = ','); @@ -319,14 +300,9 @@ public: string getReferenceList(char delim = '|'); /// string getBibkeyList(char delim = '|'); - /// - bool gotoLabel(string const &); - - /// removes all autodeletable insets - bool removeAutoInsets(); /** This will clearly have to change later. Later we can have more - than one user per buffer. */ + than one user per buffer. */ BufferView * getUser() const { return users; } //@} @@ -344,15 +320,6 @@ public: */ LyXParagraph * paragraph; -#ifndef MOVE_TEXT - /** This holds the mapping between buffer paragraphs and screen rows. - Should be moved to BufferView. (Asger) - */ - LyXText * text; -#endif - /// per view not per buffer? - UpdatableInset * the_locking_inset; - /// RCS object LyXVC lyxvc; @@ -366,26 +333,9 @@ public: doing a 'nice' LaTeX file */ bool niceFile; - /// - void InsetUnlock(); - - /// - inline void InsetSleep(); - - /// - inline void InsetWakeup(); - - /// - bool inset_slept; - - /// - int slx; - /// - int sly; + /// Used when typesetting to place errorboxes. + TexRow texrow; private: - /// - void insertErrors(TeXErrors &); - /// void linuxDocHandleFootnote(ostream & os, LyXParagraph * & par, int const depth); @@ -408,7 +358,7 @@ private: void SimpleLinuxDocOnePar(ostream & os, LyXParagraph * par, int desc_on, int const depth); /// - void SimpleDocBookOnePar(string & file, string & extra, + void SimpleDocBookOnePar(ostream &, string & extra, LyXParagraph * par, int & desc_on, int const depth); @@ -419,15 +369,17 @@ private: /// LinuxDoc. void pop_tag(ostream & os, char const * tag, int & pos, char stack[5][3]); - + +#if 0 /// void RoffAsciiTable(ostream &, LyXParagraph * par); - +#endif + /// is save needed - bool lyx_clean; + mutable bool lyx_clean; /// is autosave needed - bool bak_clean; + mutable bool bak_clean; /** do we need to run LaTeX, changed 23/03/98, Heinrich Bauer We have to distinguish between TeX-runs executed in the original @@ -453,44 +405,20 @@ private: float format; /** A list of views using this buffer. - Why not keep a list of the BufferViews that use 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. - */ + 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; - - /// Used when typesetting to place errorboxes. - TexRow texrow; }; -inline -void Buffer::InsetSleep() -{ - if (the_locking_inset && !inset_slept) { - the_locking_inset->GetCursorPos(slx, sly); - the_locking_inset->InsetUnlock(); - inset_slept = true; - } -} - - -inline -void Buffer::InsetWakeup() -{ - if (the_locking_inset && inset_slept) { - the_locking_inset->Edit(slx, sly); - inset_slept = false; - } -} - - inline void Buffer::setParentName(string const & name) { - params.parentname = name; + params.parentname = name; } #endif