See in particular comment 6.

We forcibly load stdinsets.inc unless the TextClass declares:
  Provides stdinsets 1
There isn't really any such package, of course. We're just using this
(per a suggestion by JMarc) to say we've loaded relevant info about the
standard insets.



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22802 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2008-02-05 22:57:33 +00:00
parent 78080c1dc2
commit 8fec5f512d
2 changed files with 56 additions and 29 deletions

View File

@ -16,7 +16,7 @@
# Font Nothing to put here, below are descriptions of the different
# allowable adjustments for the font used to draw the text
# appearing within the inset text. All these items are optional.
# Color Color of
# Color Color of text
# Size Font size of the textallowed value: Small, Smaller, ...
# FIXME defined in FontSize in FontEnums.h
# Family FIXME defined in FontFamily in FontEnums.h
@ -31,7 +31,7 @@
# optional.
# Color see definition above (in the Font node).
# Size see definition above (in the Font node).
# ...
#
# EndFont Nothing to put here, it's just a markup to indicate that we are
# finished with the LabelFont definition.
# MultiPar Indicates that multiple paragraphs are allowed within the inset
@ -49,6 +49,8 @@
Format 6
Provides stdinsets 1
InsetLayout Marginal
LabelString margin
LatexType command

View File

@ -454,13 +454,40 @@ bool TextClass::read(FileName const & filename, ReadType rt)
LYXERR(Debug::TCLASS, "Finished reading " + translateRT(rt) + ": " +
to_utf8(makeDisplayPath(filename.absFilename())));
if (rt == BASECLASS) {
if (rt != BASECLASS)
return error;
if (defaultlayout_.empty()) {
lyxerr << "Error: Textclass '" << name_
<< "' is missing a defaultstyle." << endl;
error = true;
}
//Try to erase "stdinsets" from the provides_ set.
//The
// Provides stdinsets 1
//declaration simply tells us that the standard insets have been
//defined. (It's found in stdinsets.inc but could also be used in
//user-defined files.) There isn't really any such package. So we
//might as well go ahead and erase it.
//If we do not succeed, then it was not there, which means that
//the textclass did not provide the definitions of the standard
//insets. So we need to try to load them.
int erased = provides_.erase("stdinsets");
if (!erased) {
FileName tmp = libFileSearch("layouts", "stdinsets.inc");
if (tmp.empty()) {
frontend::Alert::warning(_("Missing File"),
_("Could not find stdinsets.inc! This may lead to data loss!"));
error = true;
} else if (read(tmp, MERGE)) {
frontend::Alert::warning(_("Corrupt File"),
_("Could not read stdinsets.inc! This may lead to data loss!"));
error = true;
}
}
min_toclevel_ = Layout::NOT_IN_TOC;
max_toclevel_ = Layout::NOT_IN_TOC;
const_iterator cit = begin();
@ -480,8 +507,6 @@ bool TextClass::read(FileName const & filename, ReadType rt)
LYXERR(Debug::TCLASS, "Minimum TocLevel is " << min_toclevel_
<< ", maximum is " << max_toclevel_);
}
return error;
}