]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.C
Implement os::current_root for native Win32 builds.
[lyx.git] / src / buffer.C
index 67127e1ef850efcdf663daf949467057ea5bbc4b..daf0f402832c33b76315bced7793c384e5b537c7 100644 (file)
 
 
 using lyx::pos_type;
-using lyx::par_type;
+using lyx::pit_type;
 
 using lyx::support::AddName;
-using lyx::support::atoi;
 using lyx::support::bformat;
 using lyx::support::ChangeExtension;
 using lyx::support::cmd_ret;
@@ -93,7 +92,7 @@ using lyx::support::createBufferTmpDir;
 using lyx::support::destroyDir;
 using lyx::support::FileInfo;
 using lyx::support::FileInfo;
-using lyx::support::getExtFromContents;
+using lyx::support::getFormatFromContents;
 using lyx::support::IsDirWriteable;
 using lyx::support::IsFileWriteable;
 using lyx::support::LibFileSearch;
@@ -137,7 +136,7 @@ extern BufferList bufferlist;
 
 namespace {
 
-const int LYX_FORMAT = 236;
+const int LYX_FORMAT = 238;
 
 } // namespace anon
 
@@ -474,8 +473,8 @@ bool Buffer::readDocument(LyXLex & lex)
 
 // needed to insert the selection
 void Buffer::insertStringAsLines(ParagraphList & pars,
-       par_type & par, pos_type & pos,
-       LyXFont const & fn, string const & str)
+       pit_type & par, pos_type & pos,
+       LyXFont const & fn, string const & str, bool autobreakrows)
 {
        LyXLayout_ptr const & layout = pars[par].layout();
 
@@ -484,7 +483,6 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
        pars[par].checkInsertChar(font);
        // insert the string, don't insert doublespace
        bool space_inserted = true;
-       bool autobreakrows = pars[par].autoBreakRows();
        for (string::const_iterator cit = str.begin();
            cit != str.end(); ++cit) {
                if (*cit == '\n') {
@@ -532,7 +530,7 @@ void Buffer::insertStringAsLines(ParagraphList & pars,
 bool Buffer::readFile(string const & filename)
 {
        // Check if the file is compressed.
-       string const format = getExtFromContents(filename);
+       string const format = getFormatFromContents(filename);
        if (format == "gzip" || format == "zip" || format == "compress") {
                params().compressed = true;
        }
@@ -550,7 +548,7 @@ bool Buffer::readFile(string const & filename)
 }
 
 
-bool Buffer::readFile(string const & filename, par_type pit)
+bool Buffer::readFile(string const & filename, pit_type pit)
 {
        LyXLex lex(0, 0);
        lex.setFile(filename);
@@ -570,7 +568,7 @@ void Buffer::fully_loaded(bool value)
 }
 
 
-bool Buffer::readFile(LyXLex & lex, string const & filename, par_type pit)
+bool Buffer::readFile(LyXLex & lex, string const & filename, pit_type pit)
 {
        BOOST_ASSERT(!filename.empty());
 
@@ -683,7 +681,7 @@ bool Buffer::save() const
                s = fileName() + '~';
                if (!lyxrc.backupdir_path.empty())
                        s = AddName(lyxrc.backupdir_path,
-                                   subst(os::slashify_path(s),'/','!'));
+                                   subst(os::internal_path(s),'/','!'));
 
                // Rename is the wrong way of making a backup,
                // this is the correct way.
@@ -795,7 +793,7 @@ bool Buffer::do_writeFile(ostream & ofs) const
        ofs << "\\begin_header\n";
        params().writeFile(ofs);
        ofs << "\\end_header\n";
-       
+
        // write the text
        ofs << "\n\\begin_body\n";
        text().write(*this, ofs);
@@ -1002,7 +1000,7 @@ bool Buffer::isSGML() const
 
 void Buffer::makeLinuxDocFile(string const & fname,
                              OutputParams const & runparams,
-                              bool body_only)
+                             bool body_only)
 {
        ofstream ofs;
        if (!openFileWrite(ofs, fname))
@@ -1032,12 +1030,12 @@ void Buffer::makeLinuxDocFile(string const & fname,
                ofs << ">\n\n";
 
                if (params().options.empty())
-                       sgml::openTag(ofs, 0, false, top_element);
+                       sgml::openTag(ofs, top_element);
                else {
                        string top = top_element;
                        top += ' ';
                        top += params().options;
-                       sgml::openTag(ofs, 0, false, top);
+                       sgml::openTag(ofs, top);
                }
        }
 
@@ -1049,7 +1047,7 @@ void Buffer::makeLinuxDocFile(string const & fname,
 
        if (!body_only) {
                ofs << "\n\n";
-               sgml::closeTag(ofs, 0, false, top_element);
+               sgml::closeTag(ofs, top_element);
        }
 
        ofs.close();
@@ -1089,6 +1087,13 @@ void Buffer::makeDocBookFile(string const & fname,
                        ofs << " PUBLIC \"-//OASIS//DTD DocBook V4.2//EN\"";
 
                string preamble = params().preamble;
+               if (runparams.flavor != OutputParams::XML ) {
+                       preamble += "<!ENTITY % output.print.png \"IGNORE\">\n";
+                       preamble += "<!ENTITY % output.print.pdf \"IGNORE\">\n";
+                       preamble += "<!ENTITY % output.print.eps \"IGNORE\">\n";
+                       preamble += "<!ENTITY % output.print.bmp \"IGNORE\">\n";
+               }
+
                string const name = runparams.nice ? ChangeExtension(pimpl_->filename, ".sgml")
                         : fname;
                preamble += features.getIncludedFiles(name);
@@ -1112,17 +1117,17 @@ void Buffer::makeDocBookFile(string const & fname,
                top += ' ';
                top += params().options;
        }
-       sgml::openTag(ofs, 0, false, top);
 
        ofs << "<!-- " << ((runparams.flavor == OutputParams::XML)? "XML" : "SGML")
            << " file was created by LyX " << lyx_version
            << "\n  See http://www.lyx.org/ for more information -->\n";
 
        params().getLyXTextClass().counters().reset();
-       docbookParagraphs(*this, paragraphs(), ofs, runparams);
 
-       ofs << "\n\n";
-       sgml::closeTag(ofs, 0, false, top_element);
+       sgml::openTag(ofs, top);
+       ofs << '\n';
+       docbookParagraphs(paragraphs(), *this, ofs, runparams);
+       sgml::closeTag(ofs, top_element);
 
        ofs.close();
        if (ofs.fail())
@@ -1248,15 +1253,15 @@ void Buffer::fillWithBibKeys(std::vector<std::pair<string, string> > & keys)
        }
 
        for (InsetIterator it = inset_iterator_begin(inset()); it; ++it) {
-               if (it->lyxCode() == InsetOld::BIBTEX_CODE) {
+               if (it->lyxCode() == InsetBase::BIBTEX_CODE) {
                        InsetBibtex const & inset =
                                dynamic_cast<InsetBibtex const &>(*it);
                        inset.fillWithBibKeys(*this, keys);
-               } else if (it->lyxCode() == InsetOld::INCLUDE_CODE) {
+               } else if (it->lyxCode() == InsetBase::INCLUDE_CODE) {
                        InsetInclude const & inset =
                                dynamic_cast<InsetInclude const &>(*it);
                        inset.fillWithBibKeys(*this, keys);
-               } else if (it->lyxCode() == InsetOld::BIBITEM_CODE) {
+               } else if (it->lyxCode() == InsetBase::BIBITEM_CODE) {
                        InsetBibitem const & inset =
                                dynamic_cast<InsetBibitem const &>(*it);
                        string const key = inset.getContents();
@@ -1316,9 +1321,9 @@ void Buffer::changeLanguage(Language const * from, Language const * to)
        // Take care of l10n/i18n
        updateDocLang(to);
 
-       ParIterator end = par_iterator_end();
-       for (ParIterator it = par_iterator_begin(); it != end; ++it)
-               it->changeLanguage(params(), from, to);
+       for_each(par_iterator_begin(),
+                par_iterator_end(),
+                bind(&Paragraph::changeLanguage, _1, params(), from, to));
 }
 
 
@@ -1360,20 +1365,8 @@ ParIterator Buffer::getParFromID(int id) const
 
 bool Buffer::hasParWithID(int id) const
 {
-       ParConstIterator it = par_iterator_begin();
-       ParConstIterator end = par_iterator_end();
-
-       if (id < 0) {
-               // John says this is called with id == -1 from undo
-               lyxerr << "hasParWithID(), id: " << id << endl;
-               return 0;
-       }
-
-       for (; it != end; ++it)
-               if (it->id() == id)
-                       return true;
-
-       return false;
+       ParConstIterator it = getParFromID(id);
+       return it != par_iterator_end();
 }