X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetcommand.h;h=a2397dba654e02ac2d2895395e20f89506e32522;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=ed473534ea618d94ed1185ec915d7515c63dce53;hpb=474b65cd25930b5745dc7aca27f346cd5766ddd9;p=lyx.git diff --git a/src/insets/insetcommand.h b/src/insets/insetcommand.h index ed473534ea..a2397dba65 100644 --- a/src/insets/insetcommand.h +++ b/src/insets/insetcommand.h @@ -1,117 +1,164 @@ // -*- 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 "inset.h" +#include "insetcommandparams.h" +#include "render_button.h" +#include "mailinset.h" +#include "cursor.h" + + +namespace lyx { -#include "lyxinset.h" -#include "LString.h" // 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 InsetCommand: public Inset { + +/// +class InsetCommand : public InsetOld { public: /// - InsetCommand(); + InsetCommand(InsetCommandParams const &, std::string const & mailer_name); /// - explicit - InsetCommand(string const & name, string const & arg = string(), - string const & opt = string()); + ~InsetCommand(); /// - int ascent(Painter &, LyXFont const &) const; + bool metrics(MetricsInfo &, Dimension &) const; /// - int descent(Painter &, LyXFont const &) const; + void draw(PainterInfo & pi, int x, int y) const; /// - int width(Painter &, LyXFont const &) const; + void write(Buffer const &, std::ostream & os) const + { p_.write(os); } /// - void draw(Painter &, LyXFont const &, int baseline, float & x) const; + virtual void read(Buffer const &, LyXLex & lex) + { p_.read(lex); } /// - void Write(std::ostream &) const; - /// Parse the command. - void scanCommand(string const & cmd); - /// Will not be used when lyxf3 - void Read(LyXLex & lex); - /// - virtual int Latex(std::ostream &, - bool fragile, bool free_spc) const; + virtual int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - int Ascii(std::ostream &) const; + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - virtual int Linuxdoc(std::ostream &) const; + virtual int docbook(Buffer const &, odocstream &, + OutputParams const & runparams) const; /// - virtual int DocBook(std::ostream &) const; + InsetBase::Code lyxCode() const { return InsetBase::NO_CODE; } + /// - Inset * Clone() const; - /// - Inset::Code LyxCode() const + InsetCommandParams const & params() const { return p_; } + /// FIXME remove + std::string const getContents() const { return p_.getContents(); } + /// FIXME remove + void setContents(std::string const & c) { - return Inset::NO_CODE; + updateButtonLabel_ = true; + p_.setContents(c); } - - /** 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 + /// + void setParam(std::string const & name, docstring const & value) { - return getCommand(); + updateButtonLabel_ = true; + p_[name] = value; } - - /// Build the complete LaTeX command - string getCommand() const; /// - string const & getCmdName() const { - return cmdname; + docstring const & getParam(std::string const & name) const + { + return p_[name]; } + /// FIXME remove + virtual void replaceContents(std::string const & from, std::string const & to); + /// FIXME remove + std::string const getOptions() const { return p_.getOptions(); } + /// FIXME remove + std::string const getSecOptions() const { return p_.getSecOptions(); } /// - string const & getOptions() const { - return options; - } + RenderButton & button() const { return button_; } /// - string const & getContents() const { - return contents; - } + bool setMouseHover(bool mouse_hover); + +protected: /// - void setCmdName(string const & n) { - cmdname = n; - } + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); + /// + bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const; + /// + docstring const getCommand() const { return p_.getCommand(); } /// - void setOptions(string const & o) { - options = o; + std::string const & getCmdName() const { return p_.getCmdName(); } + /// + void setCmdName(std::string const & n) + { + updateButtonLabel_ = true; + p_.setCmdName(n); } /// - virtual void setContents(string const & c) { - contents = c; + void setOptions(std::string const & o) + { + updateButtonLabel_ = true; + p_.setOptions(o); } /// - void addContents(string const & c) { - contents += c; + void setSecOptions(std::string const & s) + { + updateButtonLabel_ = true; + p_.setSecOptions(s); } + /// + void setParams(InsetCommandParams const &); + /// This should provide the text for the button + virtual docstring const getScreenLabel(Buffer const &) const = 0; + private: - /// - string cmdname; - /// - string options; - /// - string contents; + /// + InsetCommandParams p_; + std::string mailer_name_; + /// changes color when mouse enters/leaves this inset + bool mouse_hover_; + mutable bool updateButtonLabel_; + mutable RenderButton button_; }; + +class InsetCommandMailer : public MailInset { +public: + /// + InsetCommandMailer(std::string const & name, InsetCommand & inset); + /// + virtual InsetBase & inset() const { return inset_; } + /// + virtual std::string const & name() const { return name_; } + /// + virtual std::string const inset2string(Buffer const &) const; + /// + static void string2params(std::string const &, std::string const & name, + InsetCommandParams &); + /// + static std::string const params2string(std::string const & name, + InsetCommandParams const &); +private: + /// + std::string const name_; + /// + InsetCommand & inset_; +}; + + + +} // namespace lyx + #endif