X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxtextclass.C;h=3df1271e40147b24f52fe9389a143c5a5d2380cb;hb=fe390e9da1538e20eabbc98977d845295f8e563d;hp=61b2b1f44c8654a39a13acde1061245433e69a3a;hpb=0f59ec12963c2f5ec2ddb5b3d4ff3e8298925e01;p=lyx.git diff --git a/src/lyxtextclass.C b/src/lyxtextclass.C index 61b2b1f44c..3df1271e40 100644 --- a/src/lyxtextclass.C +++ b/src/lyxtextclass.C @@ -24,6 +24,8 @@ #include +using namespace lyx::support; + using std::endl; using std::find_if; using std::remove_if; @@ -50,9 +52,9 @@ struct compare_name { LyXTextClass::LyXTextClass(string const & fn, string const & cln, - string const & desc) + string const & desc, bool texClassAvail ) : name_(fn), latexname_(cln), description_(desc), - floatlist_(new FloatList), ctrs_(new Counters) + floatlist_(new FloatList), ctrs_(new Counters), texClassAvail_(texClassAvail) { outputType_ = LATEX; columns_ = 1; @@ -71,6 +73,12 @@ LyXTextClass::LyXTextClass(string const & fn, string const & cln, } +bool LyXTextClass::isTeXClassAvailable() const +{ + return texClassAvail_; +} + + bool LyXTextClass::do_readStyle(LyXLex & lexrc, LyXLayout & lay) { lyxerr[Debug::TCLASS] << "Reading style " << lay.name() << endl; @@ -209,6 +217,7 @@ bool LyXTextClass::Read(string const & filename, bool merge) } break; + case TC_ENVIRONMENT: case TC_STYLE: if (lexrc.next()) { string const name = subst(lexrc.getString(), @@ -219,6 +228,8 @@ bool LyXTextClass::Read(string const & filename, bool merge) } else { LyXLayout lay; lay.setName(name); + if (le == TC_ENVIRONMENT) + lay.is_environment = true; if (!(error = do_readStyle(lexrc, lay))) layoutlist_.push_back (boost::shared_ptr(new LyXLayout(lay))); @@ -237,29 +248,6 @@ bool LyXTextClass::Read(string const & filename, bool merge) } break; - case TC_ENVIRONMENT: - if (lexrc.next()) { - string const name = subst(lexrc.getString(), - '_', ' '); - if (hasLayout(name)) { - LyXLayout * lay = operator[](name).get(); - error = do_readStyle(lexrc, *lay); - } else { - LyXLayout lay; - lay.setName(name); - if (!(error = do_readStyle(lexrc, lay))) - envlist_.push_back - (boost::shared_ptr(new LyXLayout(lay))); - else - lexrc.printError("Problems reading environment: `$$Token'."); - } - } - else { - lexrc.printError("No name given for style: `$$Token'."); - error = true; - } - break; - case TC_NOSTYLE: if (lexrc.next()) { string const style = subst(lexrc.getString(), @@ -766,20 +754,10 @@ bool LyXTextClass::hasLayout(string const & n) const } -LyXLayout_ptr const & LyXTextClass::operator[](string const & n) const -{ - lyx::Assert(!n.empty()); - - if (n.empty()) - lyxerr << "LyXTextClass::operator[] called with empty n" << endl; - string const name = (n.empty() ? defaultLayoutName() : n); - - static string lastLayoutName; - static LayoutList::difference_type lastLayoutIndex; - - if (name == lastLayoutName) - return layoutlist_[lastLayoutIndex]; +LyXLayout_ptr const & LyXTextClass::operator[](string const & name) const +{ + Assert(!name.empty()); LayoutList::const_iterator cit = find_if(layoutlist_.begin(), @@ -790,39 +768,18 @@ LyXLayout_ptr const & LyXTextClass::operator[](string const & n) const lyxerr << "We failed to find the layout '" << name << "' in the layout list. You MUST investigate!" << endl; + for (LayoutList::const_iterator it = layoutlist_.begin(); + it != layoutlist_.end(); ++it) + lyxerr << " " << it->get()->name() << endl; // we require the name to exist - lyx::Assert(false); + Assert(false); } - lastLayoutName = name; - lastLayoutIndex = std::distance(layoutlist_.begin(), cit); - return (*cit); } -LyXLayout_ptr const & LyXTextClass::getEnv(string const & name) const -{ - lyx::Assert(!name.empty()); - - if (name.empty()) - lyxerr << "LyXTextClass::getEnv() called with empty n" << endl; - - LayoutList::const_iterator cit = - find_if(envlist_.begin(), envlist_.end(), compare_name(name)); - - if (cit == envlist_.end()) { - lyxerr << "We failed to find the environment '" << name - << "' in the layout list. You MUST investigate!" - << endl; - // we require the name to exist - lyx::Assert(false); - } - - return *cit; -} - bool LyXTextClass::delete_layout(string const & name) {