2 /* This file is part of*
3 * ======================================================
5 * LyX, The Document Processor
7 * Copyright 1995 Matthias Ettrich
8 * Copyright 1995-2000 The LyX Team.
10 * ====================================================== */
12 #ifndef EXTERNALTEMPLATE_H
13 #define EXTERNALTEMPLATE_H
25 struct ExternalTemplate {
26 /// What is the name of this template in the LyX format?
28 /// What will the button in the GUI say?
32 /// A file extension regular expression for the file browser
34 /// What command should be executed to view the file?
36 /// What command should be executed to edit the file?
38 /// Should we do automatic production of the output?
39 bool automaticProduction;
40 /// This is the information needed to support a specific output format
41 struct FormatTemplate {
42 /// The text that should be inserted into the exported file
44 /// The shell command to produce a resulting file
46 /// What features does this external inset require?
48 /// What should be inserted into the preamble
51 void readFormat(LyXLex &);
52 /// This constructor has to default a command for safety reasons!
55 void readTemplate(LyXLex &);
57 typedef std::map<string, FormatTemplate> Formats;
61 void dumpFormats(std::ostream &) const;
63 /// We have to have default commands for safety reasons!
70 * A singleton class that manages the external inset templates
72 class ExternalTemplateManager {
74 /// Map from the LyX name of the template to the template structure
75 typedef std::map<string, ExternalTemplate> Templates;
77 static ExternalTemplateManager & get();
78 Templates & getTemplates();
79 Templates const & getTemplates() const;
81 ExternalTemplateManager();
82 void readTemplates(string const & path);
83 void dumpTemplates() const;