#include "pariterator.h"
#include "sgml.h"
#include "texrow.h"
+#include "TocBackend.h"
#include "undo.h"
#include "version.h"
using support::cmd_ret;
using support::createBufferTmpDir;
using support::destroyDir;
+using support::FileName;
using support::getFormatFromContents;
using support::isDirWriteable;
using support::libFileSearch;
namespace {
-int const LYX_FORMAT = 253;
+int const LYX_FORMAT = 255;
} // namespace anon
///
MacroTable macros;
+
+ ///
+ TocBackend toc_backend;
};
Buffer::Impl::Impl(Buffer & parent, string const & file, bool readonly_)
: lyx_clean(true), bak_clean(true), unnamed(false), read_only(readonly_),
- filename(file), file_fully_loaded(false),
- inset(params)
+ filename(file), file_fully_loaded(false), inset(params),
+ toc_backend(&parent)
{
inset.setAutoBreakRows(true);
lyxvc.buffer(&parent);
}
+TocBackend & Buffer::tocBackend()
+{
+ return pimpl_->toc_backend;
+}
+
+
+TocBackend const & Buffer::tocBackend() const
+{
+ return pimpl_->toc_backend;
+}
+
+
string const Buffer::getLatexName(bool const no_path) const
{
string const name = changeExtension(makeLatexName(fileName()), ".tex");
docstring const s = bformat(_("Unknown token: "
"%1$s %2$s\n"),
from_utf8(token),
- from_utf8(lex.getString()));
+ lex.getDocString());
errorList.push_back(ErrorItem(_("Document header error"),
s, -1, 0, 0));
}
}
space_inserted = true;
}
-/* FIXME: not needed anymore?
} else if (!isPrintable(*cit)) {
// Ignore unprintables
continue;
-*/
} else {
// just insert the character
par.insertChar(pos, *cit, font, params().trackChanges);
bool Buffer::readFile(string const & filename)
{
// Check if the file is compressed.
- string const format = getFormatFromContents(filename);
+ FileName const name(makeAbsPath(filename));
+ string const format = getFormatFromContents(name);
if (format == "gzip" || format == "zip" || format == "compress") {
params().compressed = true;
}
// remove dummy empty par
paragraphs().clear();
LyXLex lex(0, 0);
- lex.setFile(filename);
+ lex.setFile(name);
if (!readFile(lex, filename))
return false;
from_utf8(filename)));
return false;
}
- string const lyx2lyx = libFileSearch("lyx2lyx", "lyx2lyx");
+ FileName const lyx2lyx = libFileSearch("lyx2lyx", "lyx2lyx");
if (lyx2lyx.empty()) {
Alert::error(_("Conversion script not found"),
bformat(_("%1$s is from an earlier"
return false;
}
ostringstream command;
- command << os::python() << ' ' << quoteName(lyx2lyx)
+ command << os::python() << ' ' << quoteName(lyx2lyx.toFilesystemEncoding())
<< " -t " << convert<string>(LYX_FORMAT)
<< " -o " << quoteName(tmpfile) << ' '
<< quoteName(filename);
} else {
// Saving failed, so backup is not backup
if (lyxrc.make_backup)
- rename(s, fileName());
+ rename(FileName(s), FileName(fileName()));
return false;
}
return true;
features.require("dvipost");
// AMS Style is at document level
- if (params().use_amsmath == BufferParams::AMS_ON
+ if (params().use_amsmath == BufferParams::package_on
|| tclass.provides(LyXTextClass::amsmath))
features.require("amsmath");
+ if (params().use_esint == BufferParams::package_on)
+ features.require("esint");
for_each(paragraphs().begin(), paragraphs().end(),
boost::bind(&Paragraph::validate, _1, boost::ref(features)));
}
+docstring const Buffer::translateLabel(docstring const & label) const
+{
+ if (support::isAscii(label))
+ // Probably standard layout, try to translate
+ return B_(to_ascii(label));
+ else
+ // This must be a user defined layout. We cannot translate
+ // this, since gettext accepts only ascii keys.
+ return label;
+}
+
+
bool Buffer::isClean() const
{
return pimpl_->lyx_clean;
} else
getLabelList(labels);
- // FIXME UNICODE
if (lyx::count(labels.begin(), labels.end(), from) > 1)
return;