X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fimporter.C;h=6b27af5191ffbd19048abb7ce2ff46d388061659;hb=3d2184730a436d56dd4e3ddad1f067d8bb14200e;hp=a21fd655bf41fb9e53728557216ac9c9865ac528;hpb=4c6e0fe4226ce3b55d13726977f1e579f17c2ad1;p=lyx.git diff --git a/src/importer.C b/src/importer.C index a21fd655bf..6b27af5191 100644 --- a/src/importer.C +++ b/src/importer.C @@ -17,63 +17,77 @@ #include "format.h" #include "frontends/LyXView.h" #include "funcrequest.h" +#include "lyx_cb.h" -#include "bufferlist.h" #include "support/filetools.h" + #include "frontends/Alert.h" + #include "gettext.h" #include "BufferView.h" +#include "buffer_funcs.h" -using namespace lyx::support; -using std::find; -using std::vector; +namespace lyx { +using support::bformat; +using support::changeExtension; +using support::FileName; +using support::makeDisplayPath; -extern BufferList bufferlist; -extern void InsertAsciiFile(BufferView *, string const &, bool); +using std::find; +using std::string; +using std::vector; -bool Importer::Import(LyXView * lv, string const & filename, - string const & format) +bool Importer::Import(LyXView * lv, FileName const & filename, + string const & format, ErrorList & errorList) { - string const displaypath = MakeDisplayPath(filename); + docstring const displaypath = makeDisplayPath(filename.absFilename()); lv->message(bformat(_("Importing %1$s..."), displaypath)); - string const lyxfile = ChangeExtension(filename, ".lyx"); + FileName const lyxfile(changeExtension(filename.absFilename(), ".lyx")); string loader_format; vector loaders = Loaders(); if (find(loaders.begin(), loaders.end(), format) == loaders.end()) { for (vector::const_iterator it = loaders.begin(); it != loaders.end(); ++it) { - if (converters.isReachable(format, *it)) { - if (!converters.convert(0, filename, filename, - format, *it)) + if (theConverters().isReachable(format, *it)) { + string const tofile = + changeExtension(filename.absFilename(), + formats.extension(*it)); + if (!theConverters().convert(0, filename, FileName(tofile), + filename, format, *it, errorList)) return false; loader_format = *it; break; } } if (loader_format.empty()) { - Alert::error(_("Couldn't import file"), + frontend::Alert::error(_("Couldn't import file"), bformat(_("No information for importing the format %1$s."), - formats.prettyName(format))); + formats.prettyName(format))); return false; } - } else + } else { loader_format = format; + } if (loader_format == "lyx") { - lv->view()->loadLyXFile(lyxfile); + lv->loadLyXFile(lyxfile); } else { - lv->view()->newFile(lyxfile, string(), true); + Buffer * const b = newFile(lyxfile.absFilename(), string(), true); + if (b) + lv->setBuffer(b); + else + return false; bool as_paragraphs = loader_format == "textparagraph"; - string filename2 = (loader_format == format) ? filename - : ChangeExtension(filename, + string filename2 = (loader_format == format) ? filename.absFilename() + : changeExtension(filename.absFilename(), formats.extension(loader_format)); - InsertAsciiFile(lv->view().get(), filename2, as_paragraphs); + insertPlaintextFile(lv->view(), filename2, as_paragraphs); lv->dispatch(FuncRequest(LFUN_MARK_OFF)); } @@ -87,11 +101,11 @@ vector const Importer::GetImportableFormats() { vector loaders = Loaders(); vector result = - converters.getReachableTo(loaders[0], true); + theConverters().getReachableTo(loaders[0], true); for (vector::const_iterator it = loaders.begin() + 1; it != loaders.end(); ++it) { vector r = - converters.getReachableTo(*it, false); + theConverters().getReachableTo(*it, false); result.insert(result.end(), r.begin(), r.end()); } return result; @@ -106,3 +120,6 @@ vector const Importer::Loaders() v.push_back("textparagraph"); return v; } + + +} // namespace lyx