diff --git a/src/BufferView.cpp b/src/BufferView.cpp index 6a7568b856..d050da8228 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -59,7 +59,6 @@ #include "frontends/alert.h" #include "frontends/Delegates.h" -#include "frontends/FileDialog.h" #include "frontends/FontMetrics.h" #include "frontends/Painter.h" #include "frontends/Selection.h" @@ -894,16 +893,6 @@ Update::flags BufferView::dispatch(FuncRequest const & cmd) } break; - case LFUN_FILE_INSERT_PLAINTEXT_PARA: - // FIXME UNICODE - insertPlaintextFile(FileName(to_utf8(cmd.argument())), true); - break; - - case LFUN_FILE_INSERT_PLAINTEXT: - // FIXME UNICODE - insertPlaintextFile(FileName(to_utf8(cmd.argument())), false); - break; - case LFUN_FONT_STATE: cur.message(cur.currentState()); break; @@ -1955,28 +1944,8 @@ void BufferView::setGuiDelegate(frontend::GuiBufferViewDelegate * gui) // FIXME: Move this out of BufferView again -docstring BufferView::contentsOfPlaintextFile(FileName const & fname, - bool asParagraph) +docstring BufferView::contentsOfPlaintextFile(FileName const & fname) { - if (fname.empty()) { - FileDialog dlg(_("Select file to insert"), - ( asParagraph - ? LFUN_FILE_INSERT_PLAINTEXT_PARA - : LFUN_FILE_INSERT_PLAINTEXT) ); - - FileDialog::Result result = - dlg.open(from_utf8(buffer().filePath()), - FileFilterList(), docstring()); - - if (result.first == FileDialog::Later) - return docstring(); - - if (result.second.empty()) - return docstring(); - - return contentsOfPlaintextFile(FileName(to_utf8(result.second)), false); - } - if (!fname.isReadableFile()) { docstring const error = from_ascii(strerror(errno)); docstring const file = makeDisplayPath(fname.absFilename(), 50); @@ -2013,7 +1982,7 @@ docstring BufferView::contentsOfPlaintextFile(FileName const & fname, void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph) { - docstring const tmpstr = contentsOfPlaintextFile(f, asParagraph); + docstring const tmpstr = contentsOfPlaintextFile(f); if (tmpstr.empty()) return; @@ -2025,6 +1994,9 @@ void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph) cur.innerText()->insertStringAsParagraphs(cur, tmpstr); else cur.innerText()->insertStringAsLines(cur, tmpstr); + + updateMetrics(); + buffer_.changed(); } } // namespace lyx diff --git a/src/BufferView.h b/src/BufferView.h index 4f6ee458d6..31514e4808 100644 --- a/src/BufferView.h +++ b/src/BufferView.h @@ -241,8 +241,7 @@ public: void setGuiDelegate(frontend::GuiBufferViewDelegate *); /// - docstring contentsOfPlaintextFile(support::FileName const & f, - bool asParagraph); + docstring contentsOfPlaintextFile(support::FileName const & f); // Insert plain text file (if filename is empty, prompt for one) void insertPlaintextFile(support::FileName const & f, bool asParagraph); /// diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index c7f64a03ea..0788bebcab 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -1070,6 +1070,44 @@ void GuiView::insertLyXFile(docstring const & fname) } +void GuiView::insertPlaintextFile(docstring const & fname, + bool asParagraph) +{ + BufferView * bv = view(); + if (!bv) + return; + + // FIXME UNICODE + FileName filename(to_utf8(fname)); + + if (!filename.empty()) { + bv->insertPlaintextFile(filename, asParagraph); + return; + } + + FileDialog dlg(_("Select file to insert"), (asParagraph ? + LFUN_FILE_INSERT_PLAINTEXT_PARA : LFUN_FILE_INSERT_PLAINTEXT)); + + FileDialog::Result result = dlg.open(from_utf8(bv->buffer().filePath()), + FileFilterList(), docstring()); + + if (result.first == FileDialog::Later) + return; + + // FIXME UNICODE + filename.set(to_utf8(result.second)); + + // check selected filename + if (filename.empty()) { + // emit message signal. + message(_("Canceled.")); + return; + } + + bv->insertPlaintextFile(filename, asParagraph); +} + + bool GuiView::dispatch(FuncRequest const & cmd) { BufferView * bv = view(); @@ -1107,6 +1145,14 @@ bool GuiView::dispatch(FuncRequest const & cmd) case LFUN_FILE_INSERT: insertLyXFile(cmd.argument()); break; + case LFUN_FILE_INSERT_PLAINTEXT_PARA: + insertPlaintextFile(cmd.argument(), true); + break; + + case LFUN_FILE_INSERT_PLAINTEXT: + insertPlaintextFile(cmd.argument(), false); + break; + case LFUN_TOOLBAR_TOGGLE: { string const name = cmd.getArg(0); diff --git a/src/frontends/qt4/GuiView.h b/src/frontends/qt4/GuiView.h index c57a129b70..91f6eab076 100644 --- a/src/frontends/qt4/GuiView.h +++ b/src/frontends/qt4/GuiView.h @@ -236,6 +236,9 @@ private: /// void insertLyXFile(docstring const & fname); /// + void insertPlaintextFile(docstring const & fname, + bool asParagraph); + /// Inset * getOpenInset(std::string const & name) const; /// Is the dialog currently visible? diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index 76091c4e5d..8904bfc0b2 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -3411,7 +3411,7 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd) case LFUN_FILE_INSERT_PLAINTEXT: { // FIXME UNICODE docstring const tmpstr = cur.bv().contentsOfPlaintextFile( - FileName(to_utf8(cmd.argument())), false); + FileName(to_utf8(cmd.argument()))); if (tmpstr.empty()) break; cur.recordUndoInset(INSERT_UNDO);