X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetERT.cpp;h=d120a58114d783aad6dacf6ce94048d0cf7dee9d;hb=dbb1ac30e9a87007af7c53f0f93ec9e21826f90b;hp=4c396a1b9d964192df985a14a77840dc0c68e82d;hpb=78c45693ef3f99a7671443238b448f4a69fd7717;p=lyx.git diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index 4c396a1b9d..d120a58114 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -24,15 +24,11 @@ #include "Layout.h" #include "Lexer.h" #include "LyXAction.h" -#include "MetricsInfo.h" +#include "OutputParams.h" #include "ParagraphParameters.h" #include "Paragraph.h" #include "TextClass.h" -#include "frontends/alert.h" -#include "frontends/Application.h" - -#include "support/debug.h" #include "support/gettext.h" #include "support/lstrings.h" @@ -43,19 +39,13 @@ using namespace lyx::support; namespace lyx { -InsetERT::InsetERT(Buffer const & buf, CollapseStatus status) +InsetERT::InsetERT(Buffer * buf, CollapseStatus status) : InsetCollapsable(buf) { status_ = status; } -InsetERT::~InsetERT() -{ - hideDialogs("ert", this); -} - - void InsetERT::write(ostream & os) const { os << "ERT" << "\n"; @@ -63,9 +53,33 @@ void InsetERT::write(ostream & os) const } -int InsetERT::plaintext(odocstream &, OutputParams const &) const +int InsetERT::plaintext(odocstream & os, OutputParams const & rp) const { - return 0; // do not output TeX code + if (!rp.inIndexEntry) + // do not output TeX code + return 0; + + ParagraphList::const_iterator par = paragraphs().begin(); + ParagraphList::const_iterator end = paragraphs().end(); + + while (par != end) { + pos_type siz = par->size(); + for (pos_type i = 0; i < siz; ++i) { + char_type const c = par->getChar(i); + // output the active characters + switch (c) { + case '|': + case '!': + case '@': + os.put(c); + break; + default: + break; + } + } + ++par; + } + return 0; } @@ -93,26 +107,33 @@ int InsetERT::docbook(odocstream & os, OutputParams const &) const void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd) { - switch (cmd.action) { - case LFUN_INSET_MODIFY: { - setStatus(cur, string2params(to_utf8(cmd.argument()))); - break; - } + switch (cmd.action()) { + case LFUN_INSET_MODIFY: + if (cmd.getArg(0) == "ert") { + cur.recordUndoInset(ATOMIC_UNDO, this); + setStatus(cur, string2params(to_utf8(cmd.argument()))); + break; + } + //fall-through default: InsetCollapsable::doDispatch(cur, cmd); break; } + } bool InsetERT::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const { - switch (cmd.action) { + switch (cmd.action()) { case LFUN_INSET_MODIFY: - status.setEnabled(true); - return true; - + if (cmd.getArg(0) == "ert") { + status.setEnabled(true); + return true; + } + //fall through + default: return InsetCollapsable::getStatus(cur, cmd, status); } @@ -128,20 +149,6 @@ docstring const InsetERT::buttonLabel(BufferView const & bv) const } -bool InsetERT::insetAllowed(InsetCode /* code */) const -{ - return false; -} - - -bool InsetERT::showInsetDialog(BufferView * bv) const -{ - bv->showDialog("ert", params2string(status(*bv)), - const_cast(this)); - return true; -} - - InsetCollapsable::CollapseStatus InsetERT::string2params(string const & in) { if (in.empty()) @@ -165,7 +172,7 @@ string InsetERT::params2string(CollapseStatus status) } -docstring InsetERT::xhtml(odocstream &, OutputParams const &) const +docstring InsetERT::xhtml(XHTMLStream &, OutputParams const &) const { return docstring(); }