]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.h
GUI-indep toolbar and menus mostly work !
[lyx.git] / src / buffer.h
index 32f669e59acb8021c94f9a5c34719d2d8eb3bcfc..1d5609a86e4177df95321d5abc6b128820ecf16a 100644 (file)
@@ -37,8 +37,7 @@
 class LyXRC;
 class TeXErrors;
 class LaTeXFeatures;
-
-extern void updateAllVisibleBufferRelatedPopups();
+class auto_mem_buffer;
 
 ///
 struct DEPCLEAN {
@@ -85,12 +84,12 @@ public:
        /// Maybe we know the function already by number...
        bool Dispatch(int ac, string const & argument);
 
+       /// and have an xtl buffer to work with.
+       bool Dispatch(int, auto_mem_buffer &);
+
        /// should be changed to work for a list.
-       void resize() {
-               if (users) {
-                       users->resize();
-               }
-       }
+       void resize();
+       void resizeInsets(BufferView *);
 
        /// Update window titles of all users
        void updateTitles() const;
@@ -133,9 +132,12 @@ public:
        bool parseSingleLyXformat2Token(LyXLex &, LyXParagraph *& par,
                                        LyXParagraph *& return_par,
                                        string const & token, int & pos,
-                                       char & depth, LyXFont &,
-                                       LyXParagraph::footnote_flag &,
-                                       LyXParagraph::footnote_kind &);
+                                       char & depth, LyXFont &
+#ifndef NEW_INSETS
+                                       ,LyXParagraph::footnote_flag &,
+                                       LyXParagraph::footnote_kind &
+#endif
+               );
 
        /** Save file
            Takes care of auto-save files and backup file if requested.
@@ -153,6 +155,12 @@ public:
        void makeLaTeXFile(string const & filename,
                           string const & original_path,
                           bool nice, bool only_body = false);
+       //
+       // LaTeX all paragraphs from par to endpar,
+       // if endpar == 0 then to the end
+       //
+       void latexParagraphs(std::ostream & os, LyXParagraph *par,
+                            LyXParagraph *endpar, TexRow & texrow) const;
 
        ///
        int runLaTeX();
@@ -167,9 +175,11 @@ public:
        int runChktex();
 
        ///
-       void makeLinuxDocFile(string const & filename, int column);
+       void makeLinuxDocFile(string const & filename,
+                             bool nice, bool only_body = false);
        ///
-       void makeDocBookFile(string const & filename, int column);
+       void makeDocBookFile(string const & filename,
+                            bool nice, bool only_body = false);
 
        /// returns the main language for the buffer (document)
        string GetLanguage() const {
@@ -179,9 +189,6 @@ public:
        ///
        bool isLyxClean() const { return lyx_clean; }
        
-       /// changed Heinrich Bauer, 23/03/98
-       bool isDviClean() const;
-       
         ///
         bool isNwClean() const { return nw_clean; }
        
@@ -202,9 +209,6 @@ public:
                bak_clean = true;
        }
 
-       /// changed Heinrich Bauer, 23/03/98
-       void markDviClean();
-       
         ///
         void markNwClean() { nw_clean = true; }
        
@@ -214,9 +218,6 @@ public:
        ///
        void markDepClean(string const & name);
        
-       ///
-       void markDviDirty();
-       
         ///
         void markNwDirty() { nw_clean = false; }
        
@@ -226,9 +227,7 @@ public:
                        lyx_clean = false;
                        updateTitles();
                }
-               dvi_clean_tmpd = false;
-               dvi_clean_orgd = false;
-                nw_clean = false;
+               nw_clean = false;
                bak_clean = false;
                DEPCLEAN * tmp = dep_clean;
                while (tmp) {
@@ -285,9 +284,28 @@ public:
        ///
        string getIncludeonlyList(char delim = ',');
        ///
-       string getReferenceList(char delim = '|');
+       std::vector<std::pair<string,string> > getBibkeyList();
        ///
-       string getBibkeyList(char delim = '|');
+       struct TocItem {
+               LyXParagraph * par;
+               int depth;
+               string str;
+       };
+       ///
+       enum TocType {
+               ///
+               TOC_TOC = 0,
+               ///
+               TOC_LOF,
+               ///
+               TOC_LOT,
+               ///
+               TOC_LOA
+       };
+       ///
+       std::vector<std::vector<TocItem> > getTocList();
+       ///
+       std::vector<string> getLabelList();
 
        /** This will clearly have to change later. Later we can have more
            than one user per buffer. */
@@ -329,16 +347,20 @@ public:
        /// Used when typesetting to place errorboxes.
        TexRow texrow;
 private:
+#ifndef NEW_INSETS
         ///
         void linuxDocHandleFootnote(std::ostream & os,
                                    LyXParagraph * & par, int const depth);
+#endif
         ///
        void DocBookHandleCaption(std::ostream & os, string & inner_tag,
                                  int const depth, int desc_on,
                                  LyXParagraph * & par);
+#ifndef NEW_INSETS
         ///
        void DocBookHandleFootnote(std::ostream & os,
                                   LyXParagraph * & par, int const depth);
+#endif
        ///
         void sgmlOpenTag(std::ostream & os, int depth,
                         string const & latexname) const;
@@ -363,25 +385,12 @@ private:
        void pop_tag(std::ostream & os, char const * tag,
                     int & pos, char stack[5][3]);
 
-#if 0
-       ///
-       void RoffAsciiTable(std::ostream &, LyXParagraph * par);
-#endif
-       
        /// is save needed
        mutable bool lyx_clean;
        
        /// is autosave needed
        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
-           directory (in which the original LyX-file resides) and TeX-runs
-           executed in a temporary directory. The first situation is valid
-           for a dvi-export, the latter one for printing or previewing. */
-       bool dvi_clean_orgd;
-       bool dvi_clean_tmpd;
-
         /// do we need to run weave/tangle
         bool nw_clean;
 
@@ -405,6 +414,53 @@ private:
            of the buffers in the list of users to do a updateLayoutChoice.
        */
        BufferView * users;
+
+public:
+       class inset_iterator {
+       public:
+               inset_iterator() : par(0) /*, it(0)*/ {}
+               inset_iterator(LyXParagraph * paragraph) : par(paragraph) {
+                       SetParagraph();
+               }
+               inset_iterator(LyXParagraph * paragraph, LyXParagraph::size_type pos);
+               inset_iterator & operator++() {
+                       if (par) {
+                               ++it;
+                               if (it == par->inset_iterator_end()) {
+                                       par = par->next;
+                                       SetParagraph();
+                               }
+                       }
+                       return *this;
+               }
+               Inset * operator*() {return *it; }
+               LyXParagraph * getPar() { return par; }
+               LyXParagraph::size_type getPos() {return it.getPos(); }
+               friend
+               bool operator==(inset_iterator const & iter1,
+                               inset_iterator const & iter2) {
+                       return iter1.par == iter2.par
+                               && (iter1.par == 0 || iter1.it == iter2.it);
+               }
+               friend
+               bool operator!=(inset_iterator const & iter1,
+                               inset_iterator const & iter2) {
+                       return !(iter1 == iter2);
+               }
+       private:
+               void SetParagraph();
+               LyXParagraph * par;
+               LyXParagraph::inset_iterator it;
+       };
+
+       ///
+       inset_iterator inset_iterator_begin() {
+               return inset_iterator(paragraph);
+       }
+       ///
+       inset_iterator inset_iterator_end() {
+               return inset_iterator();
+       }
 };
 
 
@@ -414,4 +470,17 @@ void Buffer::setParentName(string const & name)
        params.parentname = name;    
 }
 
+inline
+bool operator==(Buffer::TocItem const & a, Buffer::TocItem const & b) {
+       return a.par == b.par && a.str == b.str;
+       // No need to compare depth.
+}
+
+
+inline
+bool operator!=(Buffer::TocItem const & a, Buffer::TocItem const & b) {
+       return !(a == b);
+       // No need to compare depth.
+}
+
 #endif