X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlabel.C;h=3d995c3ea0085da9053c82672d54dbf8df5de48e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=015504e96bc41b3d99db5adfb06a91036f729650;hpb=e5cd3ce1a4bf54a2c02b82274992b2e0dcb40cb6;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index 015504e96b..3d995c3ea0 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -5,117 +5,110 @@ * * \author Lars Gullik Bjønnes * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include - #include "insetlabel.h" + #include "buffer.h" #include "BufferView.h" +#include "dispatchresult.h" #include "funcrequest.h" -#include "gettext.h" +#include "InsetList.h" #include "lyxtext.h" +#include "paragraph.h" +#include "pariterator.h" +#include "sgml.h" #include "support/lstrings.h" -#include "support/LOstream.h" -#include "support/lstrings.h" //frontStrip, strip +#include "support/lyxalgo.h" +#include "support/std_ostream.h" + + +namespace lyx { +using support::escape; + +using std::string; using std::ostream; using std::vector; -using std::pair; -InsetLabel::InsetLabel(InsetCommandParams const & p, bool) - : InsetCommand(p) +InsetLabel::InsetLabel(InsetCommandParams const & p) + : InsetCommand(p, "label") {} -InsetLabel::~InsetLabel() +std::auto_ptr InsetLabel::doClone() const { - InsetCommandMailer mailer("label", *this); - mailer.hideDialog(); + return std::auto_ptr(new InsetLabel(params())); } -vector const InsetLabel::getLabelList() const +void InsetLabel::getLabelList(Buffer const &, std::vector & list) const { - return vector(1, getContents()); + list.push_back(getParam("name")); } -void InsetLabel::edit(BufferView *, int, int, mouse_button::state) +docstring const InsetLabel::getScreenLabel(Buffer const &) const { - InsetCommandMailer mailer("label", *this); - mailer.showDialog(); + return getParam("name"); } -dispatch_result InsetLabel::localDispatch(FuncRequest const & cmd) +void InsetLabel::doDispatch(LCursor & cur, FuncRequest & cmd) { - if (cmd.action != LFUN_INSET_MODIFY) - return UNDISPATCHED; - - InsetCommandParams p; - InsetCommandMailer::string2params(cmd.argument, p); - if (p.getCmdName().empty()) - return UNDISPATCHED; - - bool clean = true; - if (view() && p.getContents() != params().getContents()) { - clean = view()->ChangeRefsIfUnique(params().getContents(), - p.getContents()); + switch (cmd.action) { + + case LFUN_INSET_MODIFY: { + 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); + break; } - setParams(p); - if (view()) - view()->updateInset(this, !clean); - - return DISPATCHED; -// if (result.first) { -// string new_contents = trim(result.second); -// if (!new_contents.empty() && -// getContents() != new_contents) { -// bv->buffer()->markDirty(); -// bool flag = bv->ChangeRefsIfUnique(getContents(), -// new_contents); -// setContents(new_contents); -// bv->updateInset(this, !flag); -// } -// } -} - - -void InsetLabel::edit(BufferView * bv, bool) -{ - edit(bv, 0, 0, mouse_button::none); + default: + InsetCommand::doDispatch(cur, cmd); + break; + } } -int InsetLabel::latex(Buffer const *, ostream & os, - bool /*fragile*/, bool /*fs*/) const +int InsetLabel::latex(Buffer const &, odocstream & os, + OutputParams const &) const { os << escape(getCommand()); return 0; } -int InsetLabel::ascii(Buffer const *, ostream & os, int) 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) const +int InsetLabel::docbook(Buffer const & buf, odocstream & os, + OutputParams const & runparams) const { - os << "