X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetERT.cpp;h=e3863ea09df1e244be261d2f92f1e1dd4dafa7b6;hb=ebc2b1295a0464dde6c20a09ddc249c463a21c79;hp=25665471038b733c7c063e838b72a380136902f4;hpb=f17f5617e05ea8a7f179586cc16c5bb05a0e9e2d;p=lyx.git diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index 2566547103..e3863ea09d 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -17,9 +17,7 @@ #include "BufferParams.h" #include "BufferView.h" #include "Cursor.h" -#include "CutAndPaste.h" #include "DispatchResult.h" -#include "Format.h" #include "FuncRequest.h" #include "FuncStatus.h" #include "Language.h" @@ -29,10 +27,8 @@ #include "OutputParams.h" #include "ParagraphParameters.h" #include "Paragraph.h" -#include "TextClass.h" #include "support/docstream.h" -#include "support/FileName.h" #include "support/gettext.h" #include "support/lstrings.h" #include "support/TempFile.h" @@ -51,21 +47,11 @@ InsetERT::InsetERT(Buffer * buf, CollapseStatus status) } -// Do not copy the temp file on purpose: If a copy of an inset which is -// currently being edited is made, then we simply copy the current contents. -InsetERT::InsetERT(InsetERT const & that) : InsetCollapsible(that) +InsetERT::InsetERT(InsetERT const & old) + : InsetCollapsible(old) {} -InsetERT & InsetERT::operator=(InsetERT const & that) -{ - if (&that == this) - return *this; - tempfile_.reset(); - return *this; -} - - void InsetERT::write(ostream & os) const { os << "ERT" << "\n"; @@ -129,40 +115,6 @@ int InsetERT::docbook(odocstream & os, OutputParams const &) const void InsetERT::doDispatch(Cursor & cur, FuncRequest & cmd) { switch (cmd.action()) { - case LFUN_INSET_EDIT: { - cur.push(*this); - text().selectAll(cur); - string const format = - cur.buffer()->params().documentClass().outputFormat(); - string const ext = theFormats().extension(format); - tempfile_.reset(new TempFile("ert_editXXXXXX." + ext)); - FileName const tempfilename = tempfile_->name(); - string const name = tempfilename.toFilesystemEncoding(); - ofdocstream os(name.c_str()); - os << cur.selectionAsString(false); - os.close(); - // Since we lock the inset while the external file is edited, - // we need to move the cursor outside and clear any selection inside - cur.clearSelection(); - cur.pop(); - cur.leaveInset(*this); - theFormats().edit(buffer(), tempfilename, format); - break; - } - case LFUN_INSET_END_EDIT: { - FileName const tempfilename = tempfile_->name(); - docstring const s = tempfilename.fileContents("UTF-8"); - cur.recordUndoInset(this); - cur.push(*this); - text().selectAll(cur); - cap::replaceSelection(cur); - cur.text()->insertStringAsLines(cur, s, cur.current_font); - // FIXME it crashes without this - cur.fixIfBroken(); - tempfile_.reset(); - cur.pop(); - break; - } case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "ert") { cur.recordUndoInset(this); @@ -182,11 +134,8 @@ bool InsetERT::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const { switch (cmd.action()) { - case LFUN_INSET_EDIT: - status.setEnabled(tempfile_ == 0); - return true; - case LFUN_INSET_END_EDIT: - status.setEnabled(tempfile_ != 0); + case LFUN_INSET_INSERT: + status.setEnabled(false); return true; case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "ert") { @@ -201,21 +150,6 @@ bool InsetERT::getStatus(Cursor & cur, FuncRequest const & cmd, } -bool InsetERT::editable() const -{ - if (tempfile_) - return false; - return InsetCollapsible::editable(); -} - - -bool InsetERT::descendable(BufferView const & bv) const -{ - if (tempfile_) - return false; - return InsetCollapsible::descendable(bv); -} - docstring const InsetERT::buttonLabel(BufferView const & bv) const {