]> git.lyx.org Git - lyx.git/blobdiff - src/buffer.C
- Correct library name in release build
[lyx.git] / src / buffer.C
index fb100eb570dd8ea76a2c6b7b4153b5ebf37e93d5..de2a6ac83bbeec15adb00b3a1c6fb8a3ba1bbedc 100644 (file)
 
 #include "support/FileInfo.h"
 #include "support/filetools.h"
-#include "support/gzstream.h"
+#ifdef USE_COMPRESSION
+# include "support/gzstream.h"
+#endif
 #include "support/lyxlib.h"
 #include "support/os.h"
 #include "support/path.h"
 #include "support/textutils.h"
-#include "support/tostr.h"
+#include "support/convert.h"
 
 #include <boost/bind.hpp>
 
 #include <iomanip>
 #include <stack>
 #include <sstream>
+#include <fstream>
 
 
 using lyx::pos_type;
-using lyx::par_type;
+using lyx::pit_type;
 
 using lyx::support::AddName;
 using lyx::support::bformat;
@@ -136,15 +139,16 @@ extern BufferList bufferlist;
 
 namespace {
 
-const int LYX_FORMAT = 237;
+int const LYX_FORMAT = 240;
 
 } // namespace anon
 
 
 typedef std::map<string, bool> DepClean;
 
-struct Buffer::Impl
+class Buffer::Impl
 {
+public:
        Impl(Buffer & parent, string const & file, bool readonly);
 
        limited_stack<Undo> undostack;
@@ -319,7 +323,7 @@ TexRow const & Buffer::texrow() const
 }
 
 
-string const Buffer::getLatexName(bool no_path) const
+string const Buffer::getLatexName(bool const no_path) const
 {
        string const name = ChangeExtension(MakeLatexName(fileName()), ".tex");
        return no_path ? OnlyFilename(name) : name;
@@ -358,7 +362,7 @@ pair<Buffer::LogType, string> const Buffer::getLogName() const
 }
 
 
-void Buffer::setReadonly(bool flag)
+void Buffer::setReadonly(bool const flag)
 {
        if (pimpl_->read_only != flag) {
                pimpl_->read_only = flag;
@@ -416,7 +420,7 @@ int Buffer::readHeader(LyXLex & lex)
 
                string unknown = params().readToken(lex, token);
                if (!unknown.empty()) {
-                       if (unknown[0] != '\\' and token == "\\textclass") {
+                       if (unknown[0] != '\\' && token == "\\textclass") {
                                unknownClass(unknown);
                        } else {
                                ++unknown_tokens;
@@ -473,8 +477,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();
 
@@ -483,7 +487,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') {
@@ -549,7 +552,7 @@ bool Buffer::readFile(string const & filename)
 }
 
 
-bool Buffer::readFile(string const & filename, par_type pit)
+bool Buffer::readFile(string const & filename, pit_type const pit)
 {
        LyXLex lex(0, 0);
        lex.setFile(filename);
@@ -563,13 +566,13 @@ bool Buffer::fully_loaded() const
 }
 
 
-void Buffer::fully_loaded(bool value)
+void Buffer::fully_loaded(bool const value)
 {
        pimpl_->file_fully_loaded = value;
 }
 
 
-bool Buffer::readFile(LyXLex & lex, string const & filename, par_type pit)
+bool Buffer::readFile(LyXLex & lex, string const & filename, pit_type const pit)
 {
        BOOST_ASSERT(!filename.empty());
 
@@ -620,7 +623,8 @@ bool Buffer::readFile(LyXLex & lex, string const & filename, par_type pit)
                                              filename));
                        return false;
                }
-               string command = LibFileSearch("lyx2lyx", "lyx2lyx");
+               string command =
+                       "python " + LibFileSearch("lyx2lyx", "lyx2lyx");
                if (command.empty()) {
                        Alert::error(_("Conversion script not found"),
                                     bformat(_("%1$s is from an earlier"
@@ -631,7 +635,7 @@ bool Buffer::readFile(LyXLex & lex, string const & filename, par_type pit)
                        return false;
                }
                command += " -t"
-                       + tostr(LYX_FORMAT)
+                       + convert<string>(LYX_FORMAT)
                        + " -o " + tmpfile + ' '
                        + QuoteName(filename);
                lyxerr[Debug::INFO] << "Running '"
@@ -682,7 +686,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.
@@ -757,12 +761,15 @@ bool Buffer::writeFile(string const & fname) const
        bool retval = false;
 
        if (params().compressed) {
+#ifdef USE_COMPRESSION
                gz::ogzstream ofs(fname.c_str());
                if (!ofs)
                        return false;
 
                retval = do_writeFile(ofs);
-
+#else
+               return false;
+#endif
        } else {
                ofstream ofs(fname.c_str());
                if (!ofs)
@@ -847,7 +854,7 @@ void Buffer::makeLaTeXFile(string const & fname,
 void Buffer::makeLaTeXFile(ostream & os,
                           string const & original_path,
                           OutputParams const & runparams_in,
-                          bool output_preamble, bool output_body)
+                          bool const output_preamble, bool const output_body)
 {
        OutputParams runparams = runparams_in;
 
@@ -1001,7 +1008,7 @@ bool Buffer::isSGML() const
 
 void Buffer::makeLinuxDocFile(string const & fname,
                              OutputParams const & runparams,
-                             bool body_only)
+                             bool const body_only)
 {
        ofstream ofs;
        if (!openFileWrite(ofs, fname))
@@ -1014,7 +1021,7 @@ void Buffer::makeLinuxDocFile(string const & fname,
 
        LyXTextClass const & tclass = params().getLyXTextClass();
 
-       string top_element = tclass.latexname();
+       string const & top_element = tclass.latexname();
 
        if (!body_only) {
                ofs << tclass.class_header();
@@ -1059,7 +1066,7 @@ void Buffer::makeLinuxDocFile(string const & fname,
 
 void Buffer::makeDocBookFile(string const & fname,
                             OutputParams const & runparams,
-                            bool only_body)
+                            bool const only_body)
 {
        ofstream ofs;
        if (!openFileWrite(ofs, fname))
@@ -1071,7 +1078,7 @@ void Buffer::makeDocBookFile(string const & fname,
        texrow().reset();
 
        LyXTextClass const & tclass = params().getLyXTextClass();
-       string top_element = tclass.latexname();
+       string const & top_element = tclass.latexname();
 
        if (!only_body) {
                if (runparams.flavor == OutputParams::XML)
@@ -1158,7 +1165,7 @@ int Buffer::runChktex()
 
        TeXErrors terr;
        Chktex chktex(lyxrc.chktex_command, name, filePath());
-       int res = chktex.run(terr); // run chktex
+       int const res = chktex.run(terr); // run chktex
 
        if (res == -1) {
                Alert::error(_("chktex failure"),
@@ -1178,7 +1185,8 @@ void Buffer::validate(LaTeXFeatures & features) const
 {
        LyXTextClass const & tclass = params().getLyXTextClass();
 
-       if (params().tracking_changes) {
+       if (features.isAvailable("dvipost") && params().tracking_changes 
+               && params().output_changes) {
                features.require("dvipost");
                features.require("color");
        }
@@ -1221,7 +1229,7 @@ void Buffer::validate(LaTeXFeatures & features) const
 }
 
 
-void Buffer::getLabelList(std::vector<string> & list) const
+void Buffer::getLabelList(vector<string> & list) const
 {
        /// if this is a child document and the parent is already loaded
        /// Use the parent's list instead  [ale990407]
@@ -1241,7 +1249,7 @@ void Buffer::getLabelList(std::vector<string> & list) const
 
 
 // This is also a buffer property (ale)
-void Buffer::fillWithBibKeys(std::vector<std::pair<string, string> > & keys)
+void Buffer::fillWithBibKeys(vector<pair<string, string> > & keys)
        const
 {
        /// if this is a child document and the parent is already loaded
@@ -1254,15 +1262,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();
@@ -1277,7 +1285,7 @@ void Buffer::fillWithBibKeys(std::vector<std::pair<string, string> > & keys)
 
 bool Buffer::isDepClean(string const & name) const
 {
-       DepClean::const_iterator it = pimpl_->dep_clean.find(name);
+       DepClean::const_iterator const it = pimpl_->dep_clean.find(name);
        if (it == pimpl_->dep_clean.end())
                return true;
        return it->second;
@@ -1317,6 +1325,9 @@ bool Buffer::dispatch(FuncRequest const & func, bool * result)
 
 void Buffer::changeLanguage(Language const * from, Language const * to)
 {
+       BOOST_ASSERT(from);
+       BOOST_ASSERT(to);
+
        lyxerr << "Changing Language!" << endl;
 
        // Take care of l10n/i18n
@@ -1330,6 +1341,8 @@ void Buffer::changeLanguage(Language const * from, Language const * to)
 
 void Buffer::updateDocLang(Language const * nlang)
 {
+       BOOST_ASSERT(nlang);
+
        pimpl_->messages.reset(new Messages(nlang->code()));
 }
 
@@ -1345,10 +1358,10 @@ bool Buffer::isMultiLingual() const
 }
 
 
-ParIterator Buffer::getParFromID(int id) const
+ParIterator Buffer::getParFromID(int const id) const
 {
        ParConstIterator it = par_iterator_begin();
-       ParConstIterator end = par_iterator_end();
+       ParConstIterator const end = par_iterator_end();
 
        if (id < 0) {
                // John says this is called with id == -1 from undo
@@ -1364,9 +1377,9 @@ ParIterator Buffer::getParFromID(int id) const
 }
 
 
-bool Buffer::hasParWithID(int id) const
+bool Buffer::hasParWithID(int const id) const
 {
-       ParConstIterator it = getParFromID(id);
+       ParConstIterator const it = getParFromID(id);
        return it != par_iterator_end();
 }
 
@@ -1453,6 +1466,9 @@ bool Buffer::isUnnamed() const
 }
 
 
+#ifdef WITH_WARNINGS
+#warning this function should be moved to buffer_pimpl.C
+#endif
 void Buffer::markDirty()
 {
        if (pimpl_->lyx_clean) {