X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Finsets%2Finsetlabel.C;h=590b50a65dd85f6a5218a630da96d86c7524a6c1;hb=c130d5dbfd3f4d4a2721c9be786b7fa45b806aca;hp=665485d3eef20a4e2ca9b5f93a471227bfc01ad0;hpb=188833d864794c9c1ec42a8361b93aaa718874ea;p=lyx.git diff --git a/src/insets/insetlabel.C b/src/insets/insetlabel.C index 665485d3ee..590b50a65d 100644 --- a/src/insets/insetlabel.C +++ b/src/insets/insetlabel.C @@ -4,7 +4,7 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team. + * Copyright 1995-2001 The LyX Team. * * ====================================================== */ @@ -15,82 +15,84 @@ #endif #include "insetlabel.h" +#include "support/LOstream.h" +#include "frontends/Alert.h" +#include "support/lstrings.h" //frontStrip, strip +#include "lyxtext.h" +#include "buffer.h" +#include "gettext.h" +#include "BufferView.h" +#include "support/lstrings.h" + +using std::ostream; +using std::vector; +using std::pair; /* Label. Used to insert a label automatically */ -InsetLabel::InsetLabel(string const & cmd) -{ - scanCommand(cmd); -} +InsetLabel::InsetLabel(InsetCommandParams const & p, bool) + : InsetCommand(p) +{} -InsetLabel::~InsetLabel() +vector const InsetLabel::getLabelList() const { + return vector(1, getContents()); } -Inset * InsetLabel::Clone() +void InsetLabel::edit(BufferView * bv, int, int, unsigned int) { - InsetLabel * result = new InsetLabel(getCommand()); - return result; + pair result = Alert::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); + } + } } -int InsetLabel::GetNumberOfLabels() const +void InsetLabel::edit(BufferView * bv, bool) { - return 1; + edit(bv, 0, 0, 0); } -string InsetLabel::getLabel(int) const -{ - return contents; -} - -int InsetLabel::Latex(FILE * file, signed char /*fragile*/) +int InsetLabel::latex(Buffer const *, ostream & os, + bool /*fragile*/, bool /*fs*/) const { - fprintf(file, "%s", escape(getCommand()).c_str()); + os << escape(getCommand()); return 0; } - -int InsetLabel::Latex(string & file, signed char /*fragile*/) +int InsetLabel::ascii(Buffer const *, ostream & os, int) const { - file += escape(getCommand()); + os << "<" << getContents() << ">"; return 0; } -int InsetLabel::Linuxdoc(string & file) +int InsetLabel::linuxdoc(Buffer const *, ostream & os) const { - file += "