X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FExternalTemplate.C;h=b27255d48dabffac411b0459834242459655f2eb;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=0bffe07c0fdc1f8612fee3fe58586ee0a63d870d;hpb=da61af2b8ef95ab206d02deb9c52f03335682d9e;p=lyx.git diff --git a/src/insets/ExternalTemplate.C b/src/insets/ExternalTemplate.C index 0bffe07c0f..b27255d48d 100644 --- a/src/insets/ExternalTemplate.C +++ b/src/insets/ExternalTemplate.C @@ -18,34 +18,36 @@ #include "support/filetools.h" #include "support/lstrings.h" +#include "support/package.h" #include "support/path.h" -#include "support/path_defines.h" -#include "support/translator.h" - -#include - -#include - -namespace support = lyx::support; using std::endl; using std::for_each; - using std::string; using std::ostream; using std::vector; - namespace lyx { namespace external { -namespace { typedef Translator TransformIDTranslator; -TransformIDTranslator const & transformIDTranslator(); -} // namespace anon +static TransformIDTranslator const initIDTranslator() +{ + TransformIDTranslator translator(TransformID(-1), ""); + translator.addPair(Rotate, "Rotate"); + translator.addPair(Resize, "Resize"); + translator.addPair(Clip, "Clip"); + translator.addPair(Extra, "Extra"); + return translator; +} +static TransformIDTranslator const & transformIDTranslator() +{ + static TransformIDTranslator const translator = initIDTranslator(); + return translator; +} // We have to have dummy default commands for security reasons! Template::Template() @@ -59,7 +61,7 @@ Template::Format::Format() TemplateManager::TemplateManager() { - readTemplates(support::user_lyxdir()); + readTemplates(support::package().user_support()); if (lyxerr.debugging(Debug::EXTERNAL)) { dumpPreambleDefs(lyxerr); lyxerr << '\n'; @@ -131,8 +133,14 @@ public: ost << "\tFormat " << vt.first << '\n' << "\t\tProduct " << ft.product << '\n' << "\t\tUpdateFormat " << ft.updateFormat << '\n' - << "\t\tUpdateResult " << ft.updateResult << '\n' - << "\t\tRequirement " << ft.requirement << '\n'; + << "\t\tUpdateResult " << ft.updateResult << '\n'; + + vector::const_iterator qit = ft.requirements.begin(); + vector::const_iterator qend = ft.requirements.end(); + for (; qit != qend; ++qit) { + lyxerr << "req:" << *qit << std::endl; + ost << "\t\tRequirement " << *qit << '\n'; + } typedef vector Options; Options::const_iterator oit = ft.options.begin(); @@ -151,6 +159,18 @@ public: ost << "\t\tPreamble " << *pit << '\n'; } + typedef Template::Format::FileMap FileMap; + FileMap::const_iterator rit = ft.referencedFiles.begin(); + FileMap::const_iterator rend = ft.referencedFiles.end(); + for (; rit != rend; ++rit) { + vector::const_iterator fit = rit->second.begin(); + vector::const_iterator fend = rit->second.end(); + for (; fit != fend; ++fit) { + ost << "\t\tReferencedFile " << rit->first + << " \"" << *fit << "\"\n"; + } + } + ost << "\tFormatEnd\n"; } private: @@ -233,7 +253,7 @@ void TemplateManager::readTemplates(string const & path) LyXLex lex(templatetags, TM_TEMPLATE_END); - string filename = support::LibFileSearch("", "external_templates"); + support::FileName const filename = support::libFileSearch("", "external_templates"); if (filename.empty() || !lex.setFile(filename)) { lex.printError("external::TemplateManager::readTemplates: " "No template file"); @@ -457,6 +477,7 @@ void Template::Format::readFormat(LyXLex & lex) FO_PREAMBLE, FO_TRANSFORMCOMMAND, FO_TRANSFORMOPTION, + FO_REFERENCEDFILE, FO_END }; @@ -465,6 +486,7 @@ void Template::Format::readFormat(LyXLex & lex) { "option", FO_OPTION }, { "preamble", FO_PREAMBLE }, { "product", FO_PRODUCT }, + { "referencedfile", FO_REFERENCEDFILE }, { "requirement", FO_REQUIREMENT }, { "transformcommand", FO_TRANSFORMCOMMAND }, { "transformoption", FO_TRANSFORMOPTION }, @@ -493,7 +515,7 @@ void Template::Format::readFormat(LyXLex & lex) case FO_REQUIREMENT: lex.next(true); - requirement = lex.getString(); + requirements.push_back(lex.getString()); break; case FO_PREAMBLE: @@ -526,32 +548,20 @@ void Template::Format::readFormat(LyXLex & lex) break; } + case FO_REFERENCEDFILE: { + lex.next(true); + string const format = lex.getString(); + lex.next(true); + string const file = lex.getString(); + referencedFiles[format].push_back(file); + break; + } + case FO_END: return; } } } -namespace { - -TransformIDTranslator const initIDTranslator() -{ - TransformIDTranslator translator(TransformID(-1), ""); - translator.addPair(Rotate, "Rotate"); - translator.addPair(Resize, "Resize"); - translator.addPair(Clip, "Clip"); - translator.addPair(Extra, "Extra"); - return translator; -} - - -TransformIDTranslator const & transformIDTranslator() -{ - static TransformIDTranslator const translator = initIDTranslator(); - return translator; -} - -} // namespace anon - } // namespace external } // namespace lyx