X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlabel.C;h=3d995c3ea0085da9053c82672d54dbf8df5de48e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=5be50470dbe5f66f6618e33f05a4850997dd9f58;hpb=d1182f17daa1a164d9527ccbe6500840d7ac6bc8;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index 5be50470db..3d995c3ea0 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -1,116 +1,114 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2001 The LyX Team. +/** + * \file insetlabel.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Lars Gullik Bjønnes + * + * Full author contact details are available in file CREDITS. + */ #include -#ifdef __GNUG__ -#pragma implementation -#endif - #include "insetlabel.h" -#include "support/LOstream.h" -#include "lyx_gui_misc.h" //askForText -#include "support/lstrings.h" //frontStrip, strip -#include "lyxtext.h" + #include "buffer.h" -#include "gettext.h" #include "BufferView.h" +#include "dispatchresult.h" +#include "funcrequest.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" + +namespace lyx { + +using support::escape; + +using std::string; using std::ostream; using std::vector; -using std::pair; - -/* Label. Used to insert a label automatically */ InsetLabel::InsetLabel(InsetCommandParams const & p) - : InsetCommand(p) + : InsetCommand(p, "label") {} -vector const InsetLabel::getLabelList() const +std::auto_ptr InsetLabel::doClone() const { - return vector(1, getContents()); + return std::auto_ptr(new InsetLabel(params())); } -void InsetLabel::Edit(BufferView * bv, int, int, unsigned int) +void InsetLabel::getLabelList(Buffer const &, std::vector & list) const { - if (bv->buffer()->isReadonly()) { - WarnReadonly(bv->buffer()->fileName()); - return; - } + list.push_back(getParam("name")); +} - pair result = askForText(_("Enter label:"), getContents()); - if (result.first) { - string new_contents = frontStrip(strip(result.second)); - if (!new_contents.empty() && - getContents() != new_contents) { - bv->buffer()->markDirty(); - bool flag = bv->ChangeRefsIfUnique(getContents(), - new_contents); - setContents(new_contents); - bv->text->redoParagraph(bv); - if (flag) { - bv->redraw(); - bv->fitCursor(getLyXText(bv)); - } else - bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); - } - } + +docstring const InsetLabel::getScreenLabel(Buffer const &) const +{ + return getParam("name"); } -int InsetLabel::Latex(Buffer const *, ostream & os, - bool /*fragile*/, bool /*fs*/) const +void InsetLabel::doDispatch(LCursor & cur, FuncRequest & cmd) { - os << escape(getCommand()); - return 0; + 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; + } + + default: + InsetCommand::doDispatch(cur, cmd); + break; + } } -int InsetLabel::Ascii(Buffer const *, ostream & os, int) const + +int InsetLabel::latex(Buffer const &, odocstream & os, + OutputParams const &) const { - os << "<" << getContents() << ">"; + os << escape(getCommand()); return 0; } -int InsetLabel::Linuxdoc(Buffer const *, ostream & os) const +int InsetLabel::plaintext(Buffer const &, odocstream & os, + OutputParams const &) const { - os << "