#include "BufferView.h"
#include "buffer_funcs.h"
#include "cursor.h"
+#include "CutAndPaste.h"
#include "debug.h"
#include "gettext.h"
#include "session.h"
#include "lyxrc.h"
#include "lyxtext.h"
#include "paragraph.h"
+#include "undo.h"
#include "frontends/Alert.h"
#include "frontends/Application.h"
#include "support/filefilterlist.h"
#include "support/filetools.h"
-#include "support/fontutils.h"
#include "support/forkedcall.h"
#include "support/fs_extras.h"
#include "support/lyxlib.h"
namespace lyx {
-using support::addName;
using support::bformat;
using support::FileFilterList;
using support::FileName;
// Split argument by :
string name;
string tmpname = split(filename, name, ':');
- lyxerr[Debug::INFO] << "Arg is " << filename
+ LYXERR(Debug::INFO) << "Arg is " << filename
<< "\nName is " << name
<< "\nTemplate is " << tmpname << endl;
}
-// Insert ascii file (if filename is empty, prompt for one)
-void insertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
+// Insert plain text file (if filename is empty, prompt for one)
+void insertPlaintextFile(BufferView * bv, string const & f, bool asParagraph)
{
if (!bv->buffer())
return;
- // FIXME: We don't know the encoding of the file
- docstring const tmpstr = from_utf8(getContentsOfAsciiFile(bv, f, asParagraph));
+ docstring const tmpstr = getContentsOfPlaintextFile(bv, f, asParagraph);
if (tmpstr.empty())
return;
- // clear the selection
- LyXText const & text = bv->buffer()->text();
- if (&text == bv->getLyXText())
- bv->cursor().clearSelection();
+ LCursor & cur = bv->cursor();
+ cap::replaceSelection(cur);
+ recordUndo(cur);
if (asParagraph)
- bv->getLyXText()->insertStringAsParagraphs(bv->cursor(), tmpstr);
+ cur.innerText()->insertStringAsParagraphs(cur, tmpstr);
else
- bv->getLyXText()->insertStringAsLines(bv->cursor(), tmpstr);
- bv->update();
+ cur.innerText()->insertStringAsLines(cur, tmpstr);
}
-// Insert ascii file (if filename is empty, prompt for one)
-string getContentsOfAsciiFile(BufferView * bv, string const & f, bool asParagraph)
+docstring const getContentsOfPlaintextFile(BufferView * bv, string const & f,
+ bool asParagraph)
{
FileName fname(f);
if (fname.empty()) {
FileDialog fileDlg(_("Select file to insert"),
- (asParagraph) ? LFUN_FILE_INSERT_ASCII_PARA : LFUN_FILE_INSERT_ASCII);
+ (asParagraph) ? LFUN_FILE_INSERT_PLAINTEXT_PARA : LFUN_FILE_INSERT_PLAINTEXT);
FileDialog::Result result =
fileDlg.open(from_utf8(bv->buffer()->filePath()),
FileFilterList(), docstring());
if (result.first == FileDialog::Later)
- return string();
+ return docstring();
fname = makeAbsPath(to_utf8(result.second));
if (fname.empty())
- return string();
+ return docstring();
}
if (!fs::is_readable(fname.toFilesystemEncoding())) {
docstring const text = bformat(_("Could not read the specified document\n"
"%1$s\ndue to the error: %2$s"), file, error);
Alert::error(_("Could not read file"), text);
- return string();
+ return docstring();
}
ifstream ifs(fname.toFilesystemEncoding().c_str());
docstring const text = bformat(_("Could not open the specified document\n"
"%1$s\ndue to the error: %2$s"), file, error);
Alert::error(_("Could not open file"), text);
- return string();
+ return docstring();
}
ifs.unsetf(ios::skipws);
copy(ii, end, back_inserter(tmpstr));
#endif
- return tmpstr;
+ // FIXME UNICODE: We don't know the encoding of the file
+ return normalize_kc(from_utf8(tmpstr));
}