X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlabel.C;h=3d995c3ea0085da9053c82672d54dbf8df5de48e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=edffe585ade7da28aff342fa2d4f14670d5c5708;hpb=183239b7def8ca0e51432f2d88891d4b9f055953;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index edffe585ad..3d995c3ea0 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -22,13 +22,14 @@ #include "pariterator.h" #include "sgml.h" -#include "frontends/LyXView.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; @@ -46,66 +47,33 @@ std::auto_ptr InsetLabel::doClone() const } -void InsetLabel::getLabelList(Buffer const &, std::vector & list) const -{ - list.push_back(getContents()); -} - - -string const InsetLabel::getScreenLabel(Buffer const &) const +void InsetLabel::getLabelList(Buffer const &, std::vector & list) const { - return getContents(); + list.push_back(getParam("name")); } -namespace { - -void changeRefsIfUnique(BufferView & bv, string const & from, string const & to) +docstring const InsetLabel::getScreenLabel(Buffer const &) const { - // Check if the label 'from' appears more than once - vector labels; - bv.buffer()->getLabelList(labels); - - if (lyx::count(labels.begin(), labels.end(), from) > 1) - return; - - InsetBase::Code code = InsetBase::REF_CODE; - - ParIterator it = bv.buffer()->par_iterator_begin(); - ParIterator end = bv.buffer()->par_iterator_end(); - for ( ; it != end; ++it) { - bool changed_inset = false; - for (InsetList::iterator it2 = it->insetlist.begin(); - it2 != it->insetlist.end(); ++it2) { - if (it2->inset->lyxCode() == code) { - InsetCommand * inset = static_cast(it2->inset); - if (inset->getContents() == from) { - inset->setContents(to); - //inset->setButtonLabel(); - changed_inset = true; - } - } - } - } + return getParam("name"); } -} // namespace anon - void InsetLabel::doDispatch(LCursor & cur, FuncRequest & cmd) { switch (cmd.action) { case LFUN_INSET_MODIFY: { - InsetCommandParams p; - InsetCommandMailer::string2params("label", cmd.argument, p); + InsetCommandParams p("label"); + // FIXME UNICODE + InsetCommandMailer::string2params("label", to_utf8(cmd.argument()), p); if (p.getCmdName().empty()) { - cur.undispatched(); + cur.noUpdate(); break; } - if (p.getContents() != params().getContents()) - changeRefsIfUnique(cur.bv(), params().getContents(), - p.getContents()); + if (p["name"] != params()["name"]) + cur.bv().buffer()->changeRefsIfUnique(params()["name"], + p["name"], InsetBase::REF_CODE); setParams(p); break; } @@ -117,7 +85,7 @@ void InsetLabel::doDispatch(LCursor & cur, FuncRequest & cmd) } -int InsetLabel::latex(Buffer const &, ostream & os, +int InsetLabel::latex(Buffer const &, odocstream & os, OutputParams const &) const { os << escape(getCommand()); @@ -125,25 +93,22 @@ int InsetLabel::latex(Buffer const &, ostream & os, } -int InsetLabel::plaintext(Buffer const &, ostream & os, +int InsetLabel::plaintext(Buffer const &, odocstream & os, OutputParams const &) const { - os << '<' << getContents() << '>'; + os << '<' << getParam("name") << '>'; return 0; } -int InsetLabel::linuxdoc(Buffer const & buf, ostream & os, - OutputParams const & runparams) const +int InsetLabel::docbook(Buffer const & buf, odocstream & os, + OutputParams const & runparams) const { - os << "