* BufferView:

- dispatch(): transfer LFUN_FILE_INSERT_PLAINTEXT_* to GuiView::dispatch()
- insertPlaintextFile(): split in BufferView::insertPlaintextFile() and GuiView::insertPlaintextFile()

This patch get rid of FileDialog use in BufferView. Remains Buffer, Converters and LyXFunc.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21930 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2007-12-02 20:05:17 +00:00
parent 4b465cfc26
commit 0743f576cb
5 changed files with 56 additions and 36 deletions

View File

@ -59,7 +59,6 @@
#include "frontends/alert.h" #include "frontends/alert.h"
#include "frontends/Delegates.h" #include "frontends/Delegates.h"
#include "frontends/FileDialog.h"
#include "frontends/FontMetrics.h" #include "frontends/FontMetrics.h"
#include "frontends/Painter.h" #include "frontends/Painter.h"
#include "frontends/Selection.h" #include "frontends/Selection.h"
@ -894,16 +893,6 @@ Update::flags BufferView::dispatch(FuncRequest const & cmd)
} }
break; 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: case LFUN_FONT_STATE:
cur.message(cur.currentState()); cur.message(cur.currentState());
break; break;
@ -1955,28 +1944,8 @@ void BufferView::setGuiDelegate(frontend::GuiBufferViewDelegate * gui)
// FIXME: Move this out of BufferView again // FIXME: Move this out of BufferView again
docstring BufferView::contentsOfPlaintextFile(FileName const & fname, docstring BufferView::contentsOfPlaintextFile(FileName const & fname)
bool asParagraph)
{ {
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()) { if (!fname.isReadableFile()) {
docstring const error = from_ascii(strerror(errno)); docstring const error = from_ascii(strerror(errno));
docstring const file = makeDisplayPath(fname.absFilename(), 50); 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) void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph)
{ {
docstring const tmpstr = contentsOfPlaintextFile(f, asParagraph); docstring const tmpstr = contentsOfPlaintextFile(f);
if (tmpstr.empty()) if (tmpstr.empty())
return; return;
@ -2025,6 +1994,9 @@ void BufferView::insertPlaintextFile(FileName const & f, bool asParagraph)
cur.innerText()->insertStringAsParagraphs(cur, tmpstr); cur.innerText()->insertStringAsParagraphs(cur, tmpstr);
else else
cur.innerText()->insertStringAsLines(cur, tmpstr); cur.innerText()->insertStringAsLines(cur, tmpstr);
updateMetrics();
buffer_.changed();
} }
} // namespace lyx } // namespace lyx

View File

@ -241,8 +241,7 @@ public:
void setGuiDelegate(frontend::GuiBufferViewDelegate *); void setGuiDelegate(frontend::GuiBufferViewDelegate *);
/// ///
docstring contentsOfPlaintextFile(support::FileName const & f, docstring contentsOfPlaintextFile(support::FileName const & f);
bool asParagraph);
// Insert plain text file (if filename is empty, prompt for one) // Insert plain text file (if filename is empty, prompt for one)
void insertPlaintextFile(support::FileName const & f, bool asParagraph); void insertPlaintextFile(support::FileName const & f, bool asParagraph);
/// ///

View File

@ -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) bool GuiView::dispatch(FuncRequest const & cmd)
{ {
BufferView * bv = view(); BufferView * bv = view();
@ -1107,6 +1145,14 @@ bool GuiView::dispatch(FuncRequest const & cmd)
case LFUN_FILE_INSERT: case LFUN_FILE_INSERT:
insertLyXFile(cmd.argument()); insertLyXFile(cmd.argument());
break; 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: { case LFUN_TOOLBAR_TOGGLE: {
string const name = cmd.getArg(0); string const name = cmd.getArg(0);

View File

@ -236,6 +236,9 @@ private:
/// ///
void insertLyXFile(docstring const & fname); void insertLyXFile(docstring const & fname);
/// ///
void insertPlaintextFile(docstring const & fname,
bool asParagraph);
///
Inset * getOpenInset(std::string const & name) const; Inset * getOpenInset(std::string const & name) const;
/// Is the dialog currently visible? /// Is the dialog currently visible?

View File

@ -3411,7 +3411,7 @@ void InsetTabular::doDispatch(Cursor & cur, FuncRequest & cmd)
case LFUN_FILE_INSERT_PLAINTEXT: { case LFUN_FILE_INSERT_PLAINTEXT: {
// FIXME UNICODE // FIXME UNICODE
docstring const tmpstr = cur.bv().contentsOfPlaintextFile( docstring const tmpstr = cur.bv().contentsOfPlaintextFile(
FileName(to_utf8(cmd.argument())), false); FileName(to_utf8(cmd.argument())));
if (tmpstr.empty()) if (tmpstr.empty())
break; break;
cur.recordUndoInset(INSERT_UNDO); cur.recordUndoInset(INSERT_UNDO);