X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetlabel.C;h=66963db35005b0d03398cbd7e78de312fdfb6f78;hb=6ce86e2bfe0a403e0e811b66fdddb2d56cfe0f83;hp=b7065f4a8d5ff5758a2f327909176d4f0af4d397;hpb=2470d9297d3f2c303f555c8f235d022b19396679;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index b7065f4a8d..66963db350 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -1,77 +1,91 @@ -/* 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 "funcrequest.h" +#include "gettext.h" +#include "lyxtext.h" + #include "support/lstrings.h" +#include "support/LOstream.h" +#include "support/lstrings.h" //frontStrip, strip using std::ostream; using std::vector; using std::pair; -/* Label. Used to insert a label automatically */ - InsetLabel::InsetLabel(InsetCommandParams const & p, bool) : InsetCommand(p) {} +InsetLabel::~InsetLabel() +{ + InsetCommandMailer mailer("label", *this); + mailer.hideDialog(); +} + + vector const InsetLabel::getLabelList() const { return vector(1, getContents()); } -void InsetLabel::edit(BufferView * bv, int, int, unsigned int) +void InsetLabel::edit(BufferView * bv, int, int, mouse_button::state) { - if (bv->buffer()->isReadonly()) { - WarnReadonly(bv->buffer()->fileName()); - return; - } + InsetCommandMailer mailer("label", *this); + mailer.showDialog(bv); +} + - 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(); - } else - bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); +dispatch_result InsetLabel::localDispatch(FuncRequest const & cmd) +{ + Inset::RESULT result = UNDISPATCHED; + + switch (cmd.action) { + case LFUN_INSET_MODIFY: { + 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()); } + + setParams(p); + cmd.view()->updateInset(this); + result = DISPATCHED; + } + break; + + default: + result = InsetCommand::localDispatch(cmd); } + + return result; } void InsetLabel::edit(BufferView * bv, bool) { - edit(bv, 0, 0, 0); + edit(bv, 0, 0, mouse_button::none); } @@ -82,9 +96,10 @@ int InsetLabel::latex(Buffer const *, ostream & os, return 0; } + int InsetLabel::ascii(Buffer const *, ostream & os, int) const { - os << "<" << getContents() << ">"; + os << '<' << getContents() << '>'; return 0; } @@ -96,8 +111,8 @@ int InsetLabel::linuxdoc(Buffer const *, ostream & os) const } -int InsetLabel::docbook(Buffer const *, ostream & os) const +int InsetLabel::docbook(Buffer const *, ostream & os, bool) const { - os << ""; + os << ""; return 0; }