4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
7 * \author Angus Leeming
8 * \author Lars Gullik Bjønnes
10 * Full author contact details are available in file CREDITS
13 #ifndef INSET_LATEXCOMMAND_H
14 #define INSET_LATEXCOMMAND_H
17 #include "insetbutton.h"
18 #include "insetcommandparams.h"
19 #include "mailinset.h"
20 #include <boost/utility.hpp>
22 // Created by Alejandro 970222
23 /** Used to insert a LaTeX command automatically
25 * Similar to InsetLaTeX but having control of the basic structure of a
26 * LaTeX command: \name[options]{contents}.
30 class InsetCommand : public InsetButton, boost::noncopyable {
34 InsetCommand(InsetCommandParams const &);
37 //InsetCommand(InsetCommandParams const &, bool same_id);
39 void write(Buffer const *, std::ostream & os) const
42 virtual void read(Buffer const *, LyXLex & lex)
44 /// Can remove one InsetBibKey is modified
45 void scanCommand(string const & c) { p_.scanCommand(c); };
47 virtual int latex(Buffer const *, std::ostream &,
48 LatexRunParams const &) const;
50 int ascii(Buffer const *, std::ostream &, int linelen) const;
52 virtual int linuxdoc(Buffer const *, std::ostream &) const;
54 virtual int docbook(Buffer const *, std::ostream &, bool) const;
56 Inset::Code lyxCode() const { return Inset::NO_CODE; }
59 string const getCommand() const { return p_.getCommand(); }
61 string const & getCmdName() const { return p_.getCmdName(); }
63 string const & getOptions() const { return p_.getOptions(); }
65 string const & getContents() const { return p_.getContents(); }
67 void setCmdName(string const & n) { p_.setCmdName(n); }
69 void setOptions(string const & o) { p_.setOptions(o); }
71 void setContents(string const & c) { p_.setContents(c); }
73 InsetCommandParams const & params() const { return p_; }
75 void setParams(InsetCommandParams const &);
77 virtual dispatch_result localDispatch(FuncRequest const & cmd);
81 InsetCommandParams p_;
85 class InsetCommandMailer : public MailInset {
88 InsetCommandMailer(string const & name, InsetCommand & inset);
90 virtual InsetBase & inset() const { return inset_; }
92 virtual string const & name() const { return name_; }
94 virtual string const inset2string() const;
96 static void string2params(string const &, InsetCommandParams &);
98 static string const params2string(string const & name,
99 InsetCommandParams const &);
104 InsetCommand & inset_;