X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetERT.cpp;h=e3863ea09df1e244be261d2f92f1e1dd4dafa7b6;hb=ebc2b1295a0464dde6c20a09ddc249c463a21c79;hp=d120a58114d783aad6dacf6ce94048d0cf7dee9d;hpb=f061d66c2fd0a3d5f45128446d6f2bcf7d6932ad;p=lyx.git diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index d120a58114..e3863ea09d 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -27,10 +27,11 @@ #include "OutputParams.h" #include "ParagraphParameters.h" #include "Paragraph.h" -#include "TextClass.h" +#include "support/docstream.h" #include "support/gettext.h" #include "support/lstrings.h" +#include "support/TempFile.h" #include @@ -40,20 +41,26 @@ using namespace lyx::support; namespace lyx { InsetERT::InsetERT(Buffer * buf, CollapseStatus status) - : InsetCollapsable(buf) + : InsetCollapsible(buf) { status_ = status; } +InsetERT::InsetERT(InsetERT const & old) + : InsetCollapsible(old) +{} + + void InsetERT::write(ostream & os) const { os << "ERT" << "\n"; - InsetCollapsable::write(os); + InsetCollapsible::write(os); } -int InsetERT::plaintext(odocstream & os, OutputParams const & rp) const +int InsetERT::plaintext(odocstringstream & os, + OutputParams const & rp, size_t max_length) const { if (!rp.inIndexEntry) // do not output TeX code @@ -62,7 +69,7 @@ int InsetERT::plaintext(odocstream & os, OutputParams const & rp) const ParagraphList::const_iterator par = paragraphs().begin(); ParagraphList::const_iterator end = paragraphs().end(); - while (par != end) { + while (par != end && os.str().size() <= max_length) { pos_type siz = par->size(); for (pos_type i = 0; i < siz; ++i) { char_type const c = par->getChar(i); @@ -110,13 +117,13 @@ void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd) switch (cmd.action()) { case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "ert") { - cur.recordUndoInset(ATOMIC_UNDO, this); + cur.recordUndoInset(this); setStatus(cur, string2params(to_utf8(cmd.argument()))); break; } //fall-through default: - InsetCollapsable::doDispatch(cur, cmd); + InsetCollapsible::doDispatch(cur, cmd); break; } @@ -127,6 +134,9 @@ bool InsetERT::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const { switch (cmd.action()) { + case LFUN_INSET_INSERT: + status.setEnabled(false); + return true; case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "ert") { status.setEnabled(true); @@ -135,11 +145,12 @@ bool InsetERT::getStatus(Cursor & cur, FuncRequest const & cmd, //fall through default: - return InsetCollapsable::getStatus(cur, cmd, status); + return InsetCollapsible::getStatus(cur, cmd, status); } } + docstring const InsetERT::buttonLabel(BufferView const & bv) const { if (decoration() == InsetLayout::CLASSIC) @@ -149,7 +160,7 @@ docstring const InsetERT::buttonLabel(BufferView const & bv) const } -InsetCollapsable::CollapseStatus InsetERT::string2params(string const & in) +InsetCollapsible::CollapseStatus InsetERT::string2params(string const & in) { if (in.empty()) return Collapsed;