X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetcommand.h;h=a2397dba654e02ac2d2895395e20f89506e32522;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=99f0592dd8ac7ddeedc33c058019e4e0b49bbcf0;hpb=df199d6d567dd0a9bfdd08fcf1f4846d244daa2c;p=lyx.git diff --git a/src/insets/insetcommand.h b/src/insets/insetcommand.h index 99f0592dd8..a2397dba65 100644 --- a/src/insets/insetcommand.h +++ b/src/insets/insetcommand.h @@ -1,136 +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 "insetbutton.h" -#include -#include // 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 InsetOld { public: /// - InsetCommandParams(); - /// - explicit - InsetCommandParams( string const & n, - string const & c = string(), - string const & o = string()); - /// - bool operator==(InsetCommandParams const &) const; - /// - bool operator!=(InsetCommandParams const &) const; + InsetCommand(InsetCommandParams const &, std::string const & mailer_name); /// - void Read(LyXLex &); - /// Parse the command - void scanCommand(string const &); + ~InsetCommand(); /// - void Write(std::ostream &) const; - /// Build the complete LaTeX command - string const getCommand() const; + bool metrics(MetricsInfo &, Dimension &) const; /// - string const & getCmdName() const { return cmdname; } + void draw(PainterInfo & pi, int x, int y) const; /// - string const & getOptions() const { return options; } + void write(Buffer const &, std::ostream & os) const + { p_.write(os); } /// - string const & getContents() const { return contents; } + virtual void read(Buffer const &, LyXLex & lex) + { p_.read(lex); } /// - void setCmdName( string const & n) { cmdname = n; } + virtual int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - void setOptions(string const & o) { options = o; } + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - void setContents(string const & c) { contents = c; } + virtual int docbook(Buffer const &, odocstream &, + OutputParams const & runparams) const; /// - string const getAsString() const; - /// - void setFromString( string const & ); -private: - /// - string cmdname; - /// - string contents; - /// - string options; -}; - + InsetBase::Code lyxCode() const { return InsetBase::NO_CODE; } -/// -class InsetCommand : public InsetButton, boost::noncopyable { -public: - /// - explicit - InsetCommand(InsetCommandParams const &); - /// - virtual ~InsetCommand() { hideDialog(); } /// - void Write(Buffer const *, std::ostream & os) const - { p_.Write( os ); } + InsetCommandParams const & params() const { return p_; } + /// FIXME remove + std::string const getContents() const { return p_.getContents(); } + /// FIXME remove + void setContents(std::string const & c) + { + updateButtonLabel_ = true; + p_.setContents(c); + } + /// + void setParam(std::string const & name, docstring const & value) + { + updateButtonLabel_ = true; + p_[name] = value; + } + /// + 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(); } + /// + RenderButton & button() const { return button_; } + /// + bool setMouseHover(bool mouse_hover); + +protected: /// - virtual void Read(Buffer const *, LyXLex & lex) - { p_.Read( lex ); } - /// Can remove one InsetBibKey is modified - void scanCommand(string const & c) { p_.scanCommand( c ); }; - /// - virtual int Latex(Buffer const *, std::ostream &, - bool fragile, bool free_spc) const; + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); /// - int Ascii(Buffer const *, std::ostream &, int linelen) const; + bool getStatus(LCursor & cur, FuncRequest const & cmd, FuncStatus &) const; /// - virtual int Linuxdoc(Buffer const *, std::ostream &) const; + docstring const getCommand() const { return p_.getCommand(); } /// - virtual int DocBook(Buffer const *, std::ostream &) const; + std::string const & getCmdName() const { return p_.getCmdName(); } /// - 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 const getScreenLabel() const = 0; + void setCmdName(std::string const & n) + { + updateButtonLabel_ = true; + p_.setCmdName(n); + } /// - string const getCommand() const { return p_.getCommand(); } + void setOptions(std::string const & o) + { + updateButtonLabel_ = true; + p_.setOptions(o); + } /// - string const & getCmdName() const { return p_.getCmdName(); } + void setSecOptions(std::string const & s) + { + updateButtonLabel_ = true; + p_.setSecOptions(s); + } /// - string const & getOptions() const { return p_.getOptions(); } + void setParams(InsetCommandParams const &); + /// This should provide the text for the button + virtual docstring const getScreenLabel(Buffer const &) const = 0; + +private: /// - string const & getContents() const { return p_.getContents(); } + 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: /// - void setCmdName(string const & n) { p_.setCmdName(n); } + InsetCommandMailer(std::string const & name, InsetCommand & inset); /// - void setOptions(string const & o) { p_.setOptions(o); } + virtual InsetBase & inset() const { return inset_; } /// - void setContents(string const & c) { p_.setContents(c); } + virtual std::string const & name() const { return name_; } /// - InsetCommandParams const & params() const { return p_; } + virtual std::string const inset2string(Buffer const &) const; /// - void setParams(InsetCommandParams const &); + static void string2params(std::string const &, std::string const & name, + InsetCommandParams &); /// - SigC::Signal0 hideDialog; + static std::string const params2string(std::string const & name, + InsetCommandParams const &); private: /// - InsetCommandParams p_; + std::string const name_; + /// + InsetCommand & inset_; }; + + +} // namespace lyx + #endif