#include "support/filetools.h"
#include "support/lstrings.h"
+#include "support/package.h"
#include "support/path.h"
-#include "support/path_defines.h"
-
-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<TransformID, string> 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()
TemplateManager::TemplateManager()
{
- readTemplates(support::user_lyxdir());
+ readTemplates(support::package().user_support());
if (lyxerr.debugging(Debug::EXTERNAL)) {
dumpPreambleDefs(lyxerr);
lyxerr << '\n';
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<string>::const_iterator qit = ft.requirements.begin();
+ vector<string>::const_iterator qend = ft.requirements.end();
+ for (; qit != qend; ++qit) {
+ lyxerr << "req:" << *qit << std::endl;
+ ost << "\t\tRequirement " << *qit << '\n';
+ }
typedef vector<Template::Option> Options;
Options::const_iterator oit = ft.options.begin();
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<string>::const_iterator fit = rit->second.begin();
+ vector<string>::const_iterator fend = rit->second.end();
+ for (; fit != fend; ++fit) {
+ ost << "\t\tReferencedFile " << rit->first
+ << " \"" << *fit << "\"\n";
+ }
+ }
+
ost << "\tFormatEnd\n";
}
private:
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");
FO_PREAMBLE,
FO_TRANSFORMCOMMAND,
FO_TRANSFORMOPTION,
+ FO_REFERENCEDFILE,
FO_END
};
{ "option", FO_OPTION },
{ "preamble", FO_PREAMBLE },
{ "product", FO_PRODUCT },
+ { "referencedfile", FO_REFERENCEDFILE },
{ "requirement", FO_REQUIREMENT },
{ "transformcommand", FO_TRANSFORMCOMMAND },
{ "transformoption", FO_TRANSFORMOPTION },
case FO_REQUIREMENT:
lex.next(true);
- requirement = lex.getString();
+ requirements.push_back(lex.getString());
break;
case FO_PREAMBLE:
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