2 /* This file is part of*
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 1995 Matthias Ettrich
8 * Copyright 1995-2001 The LyX Team.
10 * ====================================================== */
12 #ifndef EXTERNALTEMPLATE_H
13 #define EXTERNALTEMPLATE_H
22 #include <boost/utility.hpp>
27 struct ExternalTemplate {
28 /// What is the name of this template in the LyX format?
30 /// What will the button in the GUI say?
34 /// A file extension regular expression for the file browser
36 /// What command should be executed to view the file?
38 /// What command should be executed to edit the file?
40 /// Should we do automatic production of the output?
41 bool automaticProduction;
42 /// This is the information needed to support a specific output format
43 struct FormatTemplate {
44 /// The text that should be inserted into the exported file
46 /// The shell command to produce a resulting file
48 /// The filename of the resulting file
50 /// What features does this external inset require?
52 /// What should be inserted into the preamble
55 void readFormat(LyXLex &);
56 /// This constructor has to default a command for safety reasons!
60 void readTemplate(LyXLex &);
62 typedef std::map<string, FormatTemplate> Formats;
66 void dumpFormats(std::ostream &) const;
68 /// We have to have default commands for safety reasons!
75 A singleton class that manages the external inset templates
77 class ExternalTemplateManager : boost::noncopyable {
79 /// Map from the LyX name of the template to the template structure
80 typedef std::map<string, ExternalTemplate> Templates;
82 static ExternalTemplateManager & get();
83 Templates & getTemplates();
84 Templates const & getTemplates() const;
85 /// return the template by LyX name
86 ExternalTemplate const & getTemplateByName(const string & name);
88 ExternalTemplateManager();
89 void readTemplates(string const & path);
90 void dumpTemplates() const;