]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetcommand.h
fix #832
[lyx.git] / src / insets / insetcommand.h
index e287d7929ffe1839e6fe58db4c97c7c3e69c0a11..08a05823dd720b563274dfa03ac68a6a0b0bd15e 100644 (file)
 // -*- C++ -*-
-/* This file is part of*
- * ====================================================== 
+/**
+ * \file insetcommand.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           LyX, The Document Processor
- *      
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2000 The LyX Team.
+ * \author Angus Leeming
+ * \author Lars Gullik Bjønnes
  *
- * ====================================================== */
+ * Full author contact details are available in file CREDITS
+ */
 
 #ifndef INSET_LATEXCOMMAND_H
 #define INSET_LATEXCOMMAND_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
 
 #include "insetbutton.h"
+#include "insetcommandparams.h"
+#include "mailinset.h"
+#include <boost/utility.hpp>
 
 // Created by Alejandro 970222
 /** Used to insert a LaTeX command automatically
  *
  * Similar to InsetLaTeX but having control of the basic structure of a
- *   LaTeX command: \name[options]{contents}. 
+ *   LaTeX command: \name[options]{contents}.
  */
-class InsetCommandParams {
+
+///
+class InsetCommand : public InsetButton, boost::noncopyable {
 public:
-       ///
-       InsetCommandParams();
        ///
        explicit
-       InsetCommandParams( string const & n,
-                           string const & c = string(),
-                           string const & o = string());
-       ///
-       string const & getCmdName() const { return cmdname; }
-       ///
-       string const & getOptions() const { return options; }
-       ///
-       string const & getContents() const { return contents; }
-       ///
-       void setCmdName( string const & n ) { cmdname = n; }
-       ///
-       void setOptions(string const & o) { options = o; }
+       InsetCommand(InsetCommandParams const &, bool same_id = false);
        ///
-       void setContents(string const & c) { contents = c; }
+       void write(Buffer const *, std::ostream & os) const
+               { p_.write(os); }
        ///
-       string getAsString() const;
+       virtual void read(Buffer const *, LyXLex & lex)
+               { p_.read(lex); }
+       /// Can remove one InsetBibKey is modified
+       void scanCommand(string const & c) { p_.scanCommand(c); };
        ///
-       void setFromString( string const & );
-
-private:
-       ///    
-       string cmdname;
-       ///    
-       string contents;
-       ///    
-       string options;
-};
-
-
-class InsetCommand : public InsetButton {
-public:
+       virtual int latex(Buffer const *, std::ostream &,
+                         bool fragile, bool free_spc) const;
        ///
-       InsetCommand();
+       int ascii(Buffer const *, std::ostream &, int linelen) const;
        ///
-       explicit
-       InsetCommand(string const & n,
-                    string const & c = string(), 
-                    string const & o = string());
+       virtual int linuxdoc(Buffer const *, std::ostream &) const;
        ///
-       explicit
-       InsetCommand(InsetCommandParams const &);
+       virtual int docbook(Buffer const *, std::ostream &, bool) const;
        ///
-       void Write(Buffer const *, std::ostream &) const;
+       Inset::Code lyxCode() const { return Inset::NO_CODE; }
 
-       /// Parse the command.
-       void scanCommand(string const & cmd);
        ///
-       virtual void Read(Buffer const *, LyXLex & lex);
-       /// 
-       virtual int Latex(Buffer const *, std::ostream &,
-                         bool fragile, bool free_spc) const;
-       ///
-       int Ascii(Buffer const *, std::ostream &) const;
-       ///
-       virtual int Linuxdoc(Buffer const *, std::ostream &) const;
-       ///
-       virtual int DocBook(Buffer const *, std::ostream &) const;
-       ///
-       Inset * Clone() const;
-       ///  
-       Inset::Code LyxCode() const
-       {
-               return Inset::NO_CODE;
-       }
-       
-       /** Get the label that appears at screen.
-         
-         I thought it was enough to eliminate the argument to avoid
-         confusion with lyxinset::getLabel(int), but I've seen that
-         it wasn't. I hope you never confuse again both methods.  (ale)
-        */
-       virtual string getScreenLabel() const { return getCommand(); }
-       /// Build the complete LaTeX command
-       string getCommand() const;
+       string const getCommand() const { return p_.getCommand(); }
        ///
        string const & getCmdName() const { return p_.getCmdName(); }
        ///
@@ -121,9 +70,36 @@ public:
        InsetCommandParams const & params() const { return p_; }
        ///
        void setParams(InsetCommandParams const &);
+       ///
+       virtual dispatch_result localDispatch(FuncRequest const & cmd);
+
 private:
        ///
        InsetCommandParams p_;
 };
 
+
+class InsetCommandMailer : public MailInset {
+public:
+       ///
+       InsetCommandMailer(string const & name, InsetCommand & inset);
+       ///
+       virtual InsetBase & inset() const { return inset_; }
+       ///
+       virtual string const & name() const { return name_; }
+       ///
+       virtual string const inset2string() const;
+       ///
+       static void string2params(string const &, InsetCommandParams &);
+       ///
+       static string const params2string(string const & name,
+                                         InsetCommandParams const &);
+private:
+       ///
+       string const name_;
+       ///
+       InsetCommand & inset_;
+};
+
+
 #endif