3 * \file insetexternal.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Asger Alstrup Nielsen
9 * Full author contact details are available in file CREDITS
12 #ifndef INSET_EXTERNAL_H
13 #define INSET_EXTERNAL_H
15 #include "insetbutton.h"
16 #include "ExternalTemplate.h"
20 class InsetExternal : public InsetButton {
22 /// hold parameters settable from the GUI
24 Params(string const & f = string(),
25 string const & p = string(),
26 ExternalTemplate const & t = ExternalTemplate())
27 : filename(f), parameters(p), templ(t) {}
30 /// the parameters of the current choice
32 /// the current template used
33 ExternalTemplate templ;
38 virtual ~InsetExternal();
40 virtual dispatch_result localDispatch(FuncRequest const & cmd);
41 /// what appears in the minibuffer when opening
42 virtual string const editMessage() const;
44 virtual EDITABLE editable() const { return IS_EDITABLE; }
46 virtual void write(Buffer const *, std::ostream &) const;
48 virtual void read(Buffer const *, LyXLex & lex);
50 /** returns the number of rows (\n's) of generated tex code.
51 fragile == true means, that the inset should take care about
52 fragile commands by adding a \protect before.
53 If the free_spc (freespacing) variable is set, then this inset
54 is in a free-spacing paragraph.
56 virtual int latex(Buffer const *, std::ostream &,
57 LatexRunParams const &,
59 /// write ASCII output to the ostream
60 virtual int ascii(Buffer const *, std::ostream &, int linelen) const;
61 /// write LinuxDoc output to the ostream
62 virtual int linuxdoc(Buffer const *, std::ostream &) const;
63 /// write DocBook output to the ostream
64 virtual int docbook(Buffer const *, std::ostream &, bool mixcont) const;
66 /// Updates needed features for this inset.
67 virtual void validate(LaTeXFeatures & features) const;
69 /// returns LyX code associated with the inset. Used for TOC, ...)
70 virtual Inset::Code lyxCode() const { return EXTERNAL_CODE; }
73 virtual Inset * clone(Buffer const &, bool same_id = false) const;
75 /// returns the text of the button
76 virtual string const getScreenLabel(Buffer const *) const;
78 // The following public members are used from the frontends code
80 /// set the parameters from a Params structure
81 virtual void setFromParams(Params const &);
84 void updateExternal() const;
86 /// update the file represented by the template
87 void updateExternal(string const &, Buffer const *) const;
89 /// edit file of this template
90 void editExternal() const;
92 /// view file of this template
93 void viewExternal() const;
95 /// return a copy of our current params
96 Params const & params() const;
99 void setView(BufferView * bv) { view_ = bv; }
102 /// Write the output for a specific file format
103 int write(string const & format, Buffer const *,
104 std::ostream &) const;
106 /// Execute this command in the directory of this document
107 void executeCommand(string const & s, Buffer const * buf) const;
109 /// Substitute meta-variables in this string
110 string const doSubstitution(Buffer const *, string const & s) const;
115 /// the current params
123 #include "mailinset.h"
125 class InsetExternalMailer : public MailInset {
128 InsetExternalMailer(InsetExternal & inset);
130 virtual InsetBase & inset() const { return inset_; }
132 virtual string const & name() const { return name_; }
134 virtual string const inset2string() const;
136 static void string2params(string const &, InsetExternal::Params &);
138 static string const params2string(InsetExternal::Params const &);
141 static string const name_;
143 InsetExternal & inset_;