// Do not remove the comment below, so we get merge conflict in
// independent branches. Instead add your own.
-int const LYX_FORMAT = 378; // ps: rev insetinfo
+int const LYX_FORMAT = 385; // uwestoehr: support to change the shaded box color
typedef map<string, bool> DepClean;
typedef map<docstring, pair<InsetLabel const *, Buffer::References> > RefCache;
}
///
void setParent(Buffer const * pb) {
- if (parent_buffer && pb && parent_buffer != pb)
+ if (!cloned_buffer_
+ && parent_buffer && pb && parent_buffer != pb)
LYXERR0("Warning: a buffer should not have two parents!");
parent_buffer = pb;
}
params().pdfoptions().clear();
params().indiceslist().clear();
params().backgroundcolor = lyx::rgbFromHexName("#ffffff");
+ params().isbackgroundcolor = false;
+ params().fontcolor = lyx::rgbFromHexName("#000000");
+ params().isfontcolor = false;
+ params().notefontcolor = lyx::rgbFromHexName("#cccccc");
+ params().boxbgcolor = lyx::rgbFromHexName("#ff0000");
for (int i = 0; i < 4; ++i) {
params().user_defined_bullet(i) = ITEMIZE_DEFAULTS[i];
// Should probably be moved to somewhere else: BufferView? GuiView?
bool Buffer::save() const
{
+ // ask if the disk file has been externally modified (use checksum method)
+ if (fileName().exists() && isExternallyModified(checksum_method)) {
+ docstring const file = makeDisplayPath(absFileName(), 20);
+ docstring text = bformat(_("Document %1$s has been externally modified. Are you sure "
+ "you want to overwrite this file?"), file);
+ int const ret = Alert::prompt(_("Overwrite modified file?"),
+ text, 1, 1, _("&Overwrite"), _("&Cancel"));
+ if (ret == 1)
+ return false;
+ }
+
// We don't need autosaves in the immediate future. (Asger)
resetAutosaveTimers();
backupName = FileName(addName(lyxrc.backupdir_path,
mangledName));
}
- if (fileName().copyTo(backupName)) {
+ if (fileName().moveTo(backupName)) {
madeBackup = true;
} else {
Alert::error(_("Backup failure"),
}
}
- // ask if the disk file has been externally modified (use checksum method)
- if (fileName().exists() && isExternallyModified(checksum_method)) {
- docstring const file = makeDisplayPath(absFileName(), 20);
- docstring text = bformat(_("Document %1$s has been externally modified. Are you sure "
- "you want to overwrite this file?"), file);
- int const ret = Alert::prompt(_("Overwrite modified file?"),
- text, 1, 1, _("&Overwrite"), _("&Cancel"));
- if (ret == 1)
- return false;
- }
-
if (writeFile(d->filename)) {
markClean();
return true;
return false;
}
- removeAutosaveFile();
+ // see bug 6587
+ // removeAutosaveFile();
saveCheckSum(d->filename);
message(str + _(" done."));
if (!original_path.empty()) {
// FIXME UNICODE
// We don't know the encoding of inputpath
- docstring const inputpath = from_utf8(latex_path(original_path));
+ docstring const inputpath = from_utf8(support::latex_path(original_path));
docstring uncodable_glyphs;
Encoding const * const enc = runparams.encoding;
if (enc) {
"contains glyphs that are unknown in the\n"
"current document encoding (namely %2$s).\n"
"This will likely result in incomplete output.\n\n"
- "Chose an appropriate document encoding (such as utf8)\n"
+ "Choose an appropriate document encoding (such as utf8)\n"
"or change the file path name."), inputpath, uncodable_glyphs));
} else {
os << "\\makeatletter\n"
updateMacroInstances();
if (!only_body) {
- os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
- os << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\">\n";
- // FIXME Language should be set properly.
- os << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
- os << "<head>\n";
- // FIXME Presumably need to set this right
- os << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\" />\n";
- os << "<title>" << features.htmlTitle() << "</title>\n";
+ os << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
+ << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN\" \"http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd\">\n"
+ // FIXME Language should be set properly.
+ << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"
+ << "<head>\n"
+ << "<meta name=\"GENERATOR\" content=\"" << PACKAGE_STRING << "\" />\n"
+ // FIXME Presumably need to set this right
+ << "<meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\" />\n";
+
+ docstring const & doctitle = features.htmlTitle();
+ os << "<title>"
+ << (doctitle.empty() ? from_ascii("LyX Document") : doctitle)
+ << "</title>\n";
os << "\n<!-- Text Class Preamble -->\n"
- << features.getTClassHTMLPreamble()
- << "\n<!-- Premable Snippets -->\n"
- << from_utf8(features.getPreambleSnippets());
+ << features.getTClassHTMLPreamble()
+ << "\n<!-- Premable Snippets -->\n"
+ << from_utf8(features.getPreambleSnippets());
os << "\n<!-- Layout-provided Styles -->\n";
docstring const styleinfo = features.getTClassHTMLStyles();
clist.push_back(child);
if (grand_children) {
// there might be grandchildren
- std::vector<Buffer *> glist = child->getChildren();
- for (vector<Buffer *>::const_iterator git = glist.begin();
- git != glist.end(); ++git)
- clist.push_back(*git);
+ vector<Buffer *> glist = child->getChildren();
+ clist.insert(clist.end(), glist.begin(), glist.end());
}
}
}
-std::vector<Buffer *> Buffer::getChildren(bool grand_children) const
+vector<Buffer *> Buffer::getChildren(bool grand_children) const
{
- std::vector<Buffer *> v;
+ vector<Buffer *> v;
getChildren(v, grand_children);
return v;
}
ErrorList & Buffer::errorList(string const & type) const
{
static ErrorList emptyErrorList;
- map<string, ErrorList>::iterator I = d->errorLists.find(type);
- if (I == d->errorLists.end())
+ map<string, ErrorList>::iterator it = d->errorLists.find(type);
+ if (it == d->errorLists.end())
return emptyErrorList;
- return I->second;
+ return it->second;
}
// HTML backend
else if (backend_format == "xhtml") {
runparams.flavor = OutputParams::HTML;
+ switch (params().html_math_output) {
+ case BufferParams::MathML:
+ runparams.math_flavor = OutputParams::MathAsMathML;
+ break;
+ case BufferParams::HTML:
+ runparams.math_flavor = OutputParams::MathAsHTML;
+ break;
+ case BufferParams::Images:
+ runparams.math_flavor = OutputParams::MathAsImages;
+ break;
+ case BufferParams::LaTeX:
+ runparams.math_flavor = OutputParams::MathAsLaTeX;
+ break;
+ }
+
makeLyXHTMLFile(FileName(filename), runparams);
} else if (backend_format == "lyx")
writeFile(FileName(filename));
bool const success = theConverters().convert(this, FileName(filename),
tmp_result_file, FileName(absFileName()), backend_format, format,
error_list);
- // Emit the signal to show the error list.
+
+ // Emit the signal to show the error list or copy it back to the
+ // cloned Buffer so that it cab be emitted afterwards.
if (format != backend_format) {
- errors(error_type);
+ if (d->cloned_buffer_) {
+ d->cloned_buffer_->d->errorLists[error_type] =
+ d->errorLists[error_type];
+ } else
+ errors(error_type);
// also to the children, in case of master-buffer-view
std::vector<Buffer *> clist = getChildren();
for (vector<Buffer *>::const_iterator cit = clist.begin();
- cit != clist.end(); ++cit)
- (*cit)->errors(error_type, true);
+ cit != clist.end(); ++cit) {
+ if (d->cloned_buffer_) {
+ (*cit)->d->cloned_buffer_->d->errorLists[error_type] =
+ (*cit)->d->errorLists[error_type];
+ } else
+ (*cit)->errors(error_type, true);
+ }
}
- if (!success)
- return false;
if (d->cloned_buffer_) {
// Enable reverse dvi or pdf to work by copying back the texrow
// FIXME: There is a possibility of concurrent access to texrow
// here from the main GUI thread that should be securized.
d->cloned_buffer_->d->texrow = d->texrow;
+ string const error_type = bufferFormat();
+ d->cloned_buffer_->d->errorLists[error_type] = d->errorLists[error_type];
}
+ if (!success)
+ return false;
+
if (put_in_tempdir) {
result_file = tmp_result_file.absFilename();
return true;
bool Buffer::reload()
{
setBusy(true);
+ // c.f. bug 6587
+ removeAutosaveFile();
// e.g., read-only status could have changed due to version control
d->filename.refresh();
docstring const disp_fn = makeDisplayPath(d->filename.absFilename());
message(bformat(_("Could not reload document %1$s."), disp_fn));
}
setBusy(false);
+ thePreviews().removeLoader(*this);
+ if (graphics::Previews::status() != LyXRC::PREVIEW_OFF)
+ thePreviews().generateBufferPreviews(*this);
errors("Parse");
return success;
}
+// FIXME We could do better here, but it is complicated. What would be
+// nice is to offer either (a) to save the child buffer to an appropriate
+// location, so that it would "move with the master", or else (b) to update
+// the InsetInclude so that it pointed to the same file. But (a) is a bit
+// complicated, because the code for this lives in GuiView.
+void Buffer::checkChildBuffers()
+{
+ Impl::BufferPositionMap::iterator it = d->children_positions.begin();
+ Impl::BufferPositionMap::iterator const en = d->children_positions.end();
+ for (; it != en; ++it) {
+ DocIterator dit = it->second;
+ Buffer * cbuf = const_cast<Buffer *>(it->first);
+ if (!cbuf || !theBufferList().isLoaded(cbuf))
+ continue;
+ Inset * inset = dit.nextInset();
+ LASSERT(inset && inset->lyxCode() == INCLUDE_CODE, continue);
+ InsetInclude * inset_inc = static_cast<InsetInclude *>(inset);
+ docstring const & incfile = inset_inc->getParam("filename");
+ string oldloc = cbuf->absFileName();
+ string newloc = makeAbsPath(to_utf8(incfile),
+ onlyPath(absFileName())).absFilename();
+ if (oldloc == newloc)
+ continue;
+ // the location of the child file is incorrect.
+ Alert::warning(_("Included File Invalid"),
+ bformat(_("Saving this document to a new location has made the file:\n"
+ " %1$s\n"
+ "inaccessible. You will need to update the included filename."),
+ from_utf8(oldloc)));
+ cbuf->setParent(0);
+ inset_inc->setChildBuffer(0);
+ }
+ // invalidate cache of children
+ d->children_positions.clear();
+ d->position_to_children.clear();
+}
+
} // namespace lyx