X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlabel.C;h=3d995c3ea0085da9053c82672d54dbf8df5de48e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=032a015746d5812b3bf2304caed2381f77c9e36b;hpb=db78dbfa042037997d764adca41d4a3c46ed981b;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index 032a015746..3d995c3ea0 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -12,114 +12,103 @@ #include "insetlabel.h" +#include "buffer.h" #include "BufferView.h" #include "dispatchresult.h" #include "funcrequest.h" - -#include "frontends/LyXView.h" +#include "InsetList.h" +#include "lyxtext.h" +#include "paragraph.h" +#include "pariterator.h" +#include "sgml.h" #include "support/lstrings.h" - +#include "support/lyxalgo.h" #include "support/std_ostream.h" -using lyx::support::escape; + +namespace lyx { + +using support::escape; using std::string; using std::ostream; +using std::vector; InsetLabel::InsetLabel(InsetCommandParams const & p) - : InsetCommand(p) + : InsetCommand(p, "label") {} -InsetLabel::~InsetLabel() -{ - InsetCommandMailer("label", *this).hideDialog(); -} - - -std::auto_ptr InsetLabel::clone() const +std::auto_ptr InsetLabel::doClone() const { return std::auto_ptr(new InsetLabel(params())); } -void InsetLabel::getLabelList(Buffer const &, std::vector & list) const +void InsetLabel::getLabelList(Buffer const &, std::vector & list) const { - list.push_back(getContents()); + list.push_back(getParam("name")); } -string const InsetLabel::getScreenLabel(Buffer const &) const +docstring const InsetLabel::getScreenLabel(Buffer const &) const { - return getContents(); + return getParam("name"); } -DispatchResult -InsetLabel::priv_dispatch(FuncRequest const & cmd, - idx_type & idx, pos_type & pos) +void InsetLabel::doDispatch(LCursor & cur, FuncRequest & cmd) { - BOOST_ASSERT(cmd.view()); - BufferView * const bv = cmd.view(); - switch (cmd.action) { - case LFUN_MOUSE_RELEASE: - InsetCommandMailer("label", *this).showDialog(bv); - return DispatchResult(true, true); - case LFUN_INSET_MODIFY: { - InsetCommandParams p; - InsetCommandMailer::string2params(cmd.argument, p); - if (p.getCmdName().empty()) - return DispatchResult(false); - - bool clean = true; - if (bv && p.getContents() != params().getContents()) { - clean = bv->ChangeRefsIfUnique(params().getContents(), - p.getContents()); + InsetCommandParams p("label"); + // FIXME UNICODE + InsetCommandMailer::string2params("label", to_utf8(cmd.argument()), p); + if (p.getCmdName().empty()) { + cur.noUpdate(); + break; } - + if (p["name"] != params()["name"]) + cur.bv().buffer()->changeRefsIfUnique(params()["name"], + p["name"], InsetBase::REF_CODE); setParams(p); - bv->updateInset(this); - return DispatchResult(true, true); + break; } default: - return InsetCommand::priv_dispatch(cmd, idx, pos); + InsetCommand::doDispatch(cur, cmd); + break; } } -int InsetLabel::latex(Buffer const &, ostream & os, - LatexRunParams const &) const +int InsetLabel::latex(Buffer const &, odocstream & os, + OutputParams const &) const { os << escape(getCommand()); return 0; } -int InsetLabel::ascii(Buffer const &, ostream & os, - LatexRunParams const &) const +int InsetLabel::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { - os << '<' << getContents() << '>'; + os << '<' << getParam("name") << '>'; return 0; } -int InsetLabel::linuxdoc(Buffer const &, ostream & os, - LatexRunParams const &) const +int InsetLabel::docbook(Buffer const & buf, odocstream & os, + OutputParams const & runparams) const { - os << "