X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLayoutFile.cpp;h=9c76e5bad0c9abaa9355899bcd8b55e151c90144;hb=bb277747d2fc128d65edb55662d075ce44100bc7;hp=771a9c49263e0d637534c37b0ed5ac163d011eaa;hpb=489dca71cd99bbc78780fa40311a2eb042c0320e;p=lyx.git diff --git a/src/LayoutFile.cpp b/src/LayoutFile.cpp index 771a9c4926..9c76e5bad0 100644 --- a/src/LayoutFile.cpp +++ b/src/LayoutFile.cpp @@ -41,9 +41,10 @@ namespace lyx { LayoutFile::LayoutFile(string const & fn, string const & cln, string const & desc, string const & prereq, - string const & category, bool texclassavail) + string const & category, bool texclassavail) { - name_ = fn; + name_ = onlyFileName(fn); + path_ = fn.rfind('/') == string::npos ? string() : onlyPath(fn); latexname_ = cln; description_ = desc; prerequisites_ = prereq; @@ -62,7 +63,7 @@ LayoutFileList::~LayoutFileList() } -LayoutFileList & LayoutFileList::get() +LayoutFileList & LayoutFileList::get() { static LayoutFileList baseclasslist; return baseclasslist; @@ -128,23 +129,23 @@ bool LayoutFileList::read() default: string const fname = lex.getString(); LYXERR(Debug::TCLASS, "Fname: " << fname); - if (!lex.next()) + if (!lex.next()) break; string const clname = lex.getString(); LYXERR(Debug::TCLASS, "Clname: " << clname); - if (!lex.next()) + if (!lex.next()) break; string const desc = lex.getString(); LYXERR(Debug::TCLASS, "Desc: " << desc); - if (!lex.next()) + if (!lex.next()) break; bool avail = lex.getBool(); LYXERR(Debug::TCLASS, "Avail: " << avail); - if (!lex.next()) + if (!lex.next()) break; string const prereq = lex.getString(); LYXERR(Debug::TCLASS, "Prereq: " << prereq); - if (!lex.next()) + if (!lex.next()) break; string const category = lex.getString(); LYXERR(Debug::TCLASS, "Category: " << category); @@ -189,7 +190,7 @@ void LayoutFileList::reset(LayoutFileIndex const & classname) LATTEST(haveClass(classname)); // safe to continue, since we will make an empty LayoutFile LayoutFile * tc = classmap_[classname]; - LayoutFile * tmpl = + LayoutFile * tmpl = new LayoutFile(tc->name(), tc->latexname(), tc->description(), tc->prerequisites(), tc->category(), tc->isTeXClassAvailable()); @@ -200,7 +201,7 @@ void LayoutFileList::reset(LayoutFileIndex const & classname) namespace { -string layoutpost = +string layoutpost = "Columns 1\n" "Sides 1\n" "SecNumDepth 2\n" @@ -217,7 +218,7 @@ string layoutpost = " AlignPossible Block, Left, Right, Center\n" " LabelType No_Label\n" "End\n"; - + } @@ -228,7 +229,7 @@ LayoutFileIndex LayoutFileList::addEmptyClass(string const & textclass) TempFile tempfile("basicXXXXXX.layout"); FileName const tempLayout = tempfile.name(); ofstream ofs(tempLayout.toFilesystemEncoding().c_str()); - // This writes a very basic class, but it also attempts to include + // This writes a very basic class, but it also attempts to include // stdclass.inc. That would give us something moderately usable. ofs << "# This layout is automatically generated\n" "# \\DeclareLaTeXClass{" << textclass << "}\n\n" @@ -240,13 +241,13 @@ LayoutFileIndex LayoutFileList::addEmptyClass(string const & textclass) // We do not know if a LaTeX class is available for this document, but setting // the last parameter to true will suppress a warning message about missing // tex class. - LayoutFile * tc = new LayoutFile(textclass, textclass, + LayoutFile * tc = new LayoutFile(textclass, textclass, "Unknown text class " + textclass, textclass + ".cls", "", true); if (!tc->load(tempLayout.absFileName())) { - // The only way this happens is because the hardcoded layout file - // above is wrong or stdclass.inc cannot be found. So try again - // without stdclass.inc and without stdinsets.inc. + // The only way this happens is because the hardcoded layout file + // above is wrong or stdclass.inc cannot be found. So try again + // without stdclass.inc and without stdinsets.inc. ofstream ofs2(tempLayout.toFilesystemEncoding().c_str()); ofs2 << "# This layout is automatically generated\n" "# \\DeclareLaTeXClass{" << textclass << "}\n\n" @@ -272,10 +273,10 @@ LayoutFileIndex LayoutFileList::addLocalLayout( // FIXME There is a bug here: 4593 // // only check for textclass.layout file, .cls can be anywhere in $TEXINPUTS - // NOTE: latex class name is defined in textclass.layout, which can be + // NOTE: latex class name is defined in textclass.layout, which can be // different from textclass string fullName = addName(path, textclass + ".layout"); - + FileName layout_file(fullName); bool moved = false; @@ -331,7 +332,8 @@ LayoutFileIndex LayoutFileList::addLocalLayout( return string(); LayoutFile * tmpl = - new LayoutFile(textclass, class_name, textclass, class_prereq, category, true); + new LayoutFile(addName(moved ? oldpath : path, textclass), + class_name, textclass, class_prereq, category, true); //FIXME: The prerequisites are available from the layout file and // can be extracted from the above regex, but for now this // field is simply set to class_name + ".cls"