X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fconverter.C;h=7b37f0a68d7450f1e85384c6f492ae156f31d7cd;hb=a9c2dd92df8c538e6ab39bbd136c2da9a0315eb1;hp=1e09a7c8695b883f17404edfb8f07947b3570202;hpb=8283e978f8d621041c432b9b88a476bfd567385c;p=lyx.git diff --git a/src/converter.C b/src/converter.C index 1e09a7c869..7b37f0a68d 100644 --- a/src/converter.C +++ b/src/converter.C @@ -14,26 +14,32 @@ #pragma implementation #endif -#include - #include "converter.h" #include "lyxrc.h" #include "buffer.h" #include "bufferview_funcs.h" #include "LaTeX.h" -#include "LyXView.h" #include "lyx_cb.h" // ShowMessage() #include "gettext.h" #include "BufferView.h" #include "debug.h" #include "frontends/Alert.h" +#include "frontends/LyXView.h" #include "support/filetools.h" #include "support/lyxfunctional.h" #include "support/path.h" #include "support/systemcall.h" +#include "BoostFormat.h" + +#include + +#ifndef CXX_GLOBAL_CSTD +using std::isdigit; +#endif + using std::vector; using std::queue; using std::endl; @@ -47,6 +53,7 @@ namespace { string const token_from("$$i"); string const token_base("$$b"); string const token_to("$$o"); +string const token_path("$$p"); ////////////////////////////////////////////////////////////////////////////// @@ -170,9 +177,15 @@ bool Formats::view(Buffer const * buffer, string const & filename, format->isChildFormat()) format = getFormat(format->parentFormat()); if (!format || format->viewer().empty()) { +#if USE_BOOST_FORMAT Alert::alert(_("Cannot view file"), - _("No information for viewing ") - + prettyName(format_name)); + boost::io::str(boost::format(_("No information for viewing %1$s")) + % prettyName(format_name))); +#else + Alert::alert(_("Cannot view file"), + _("No information for viewing ") + + prettyName(format_name)); +#endif return false; } @@ -190,7 +203,12 @@ bool Formats::view(Buffer const * buffer, string const & filename, command += 'r'; } - command += " " + QuoteName(OnlyFilename((filename))); + if (!contains(command, token_from)) + command += " " + token_from; + + command = subst(command, token_from, + QuoteName(OnlyFilename(filename))); + command = subst(command, token_path, QuoteName(OnlyPath(filename))); lyxerr[Debug::FILES] << "Executing command: " << command << endl; ShowMessage(buffer, _("Executing command:"), command); @@ -260,10 +278,13 @@ void Converter::readFlags() bool operator<(Converter const & a, Converter const & b) { - int const i = compare_no_case(a.From->prettyname(), - b.From->prettyname()); + // use the compare_ascii_no_case instead of compare_no_case, + // because in turkish, 'i' is not the lowercase version of 'I', + // and thus turkish locale breaks parsing of tags. + int const i = compare_ascii_no_case(a.From->prettyname(), + b.From->prettyname()); if (i == 0) - return compare_no_case(a.To->prettyname(), b.To->prettyname()) + return compare_ascii_no_case(a.To->prettyname(), b.To->prettyname()) < 0; else return i < 0; @@ -576,10 +597,6 @@ bool Converters::convert(Buffer const * buffer, EdgePath edgepath = getPath(from_format, to_format); if (edgepath.empty()) { - Alert::alert(_("Cannot convert file"), - _("No information for converting from ") - + formats.prettyName(from_format) + _(" to ") - + formats.prettyName(to_format)); return false; } @@ -630,6 +647,7 @@ bool Converters::convert(Buffer const * buffer, command = subst(command, token_from, QuoteName(infile2)); command = subst(command, token_base, QuoteName(from_base)); command = subst(command, token_to, QuoteName(outfile2)); + command = LibScriptSearch(command); if (!conv.parselog.empty()) command += " 2> " + QuoteName(infile2 + ".out"); @@ -657,11 +675,7 @@ bool Converters::convert(Buffer const * buffer, if (!conv.parselog.empty()) { string const logfile = infile2 + ".log"; - string script = - LibFileSearch("scripts", - conv.parselog); - if (script.empty()) - script = conv.parselog; + string const script = LibScriptSearch(conv.parselog); string const command2 = script + " < " + QuoteName(infile2 + ".out") + " > " + QuoteName(logfile); @@ -676,7 +690,7 @@ bool Converters::convert(Buffer const * buffer, _("You should try to fix them.")); else Alert::alert(_("Cannot convert file"), - "Error while executing", + _("Error while executing"), command.substr(0, 50)); return false; } @@ -698,8 +712,13 @@ bool Converters::convert(Buffer const * buffer, string to = subst(conv.result_dir, token_base, to_base); if (!lyx::rename(from, to)) { +#if USE_BOOST_FORMAT + Alert::alert(_("Error while trying to move directory:"), + from, boost::io::str(boost::format(_("to %1$s")) % to)); +#else Alert::alert(_("Error while trying to move directory:"), - from, ("to ") + to); + from, _("to ") + to); +#endif return false; } } @@ -708,6 +727,7 @@ bool Converters::convert(Buffer const * buffer, return move(outfile, to_file, conv.latex); } + // If from = /path/file.ext and to = /path2/file2.ext2 then this method // moves each /path/file*.ext file to /path2/file2*.ext2' bool Converters::move(string const & from, string const & to, bool copy) @@ -725,17 +745,22 @@ bool Converters::move(string const & from, string const & to, bool copy) for (vector::const_iterator it = files.begin(); it != files.end(); ++it) if (prefixIs(*it, base)) { - string from2 = path + *it; + string const from2 = path + *it; string to2 = to_base + it->substr(base.length()); to2 = ChangeExtension(to2, to_extension); lyxerr[Debug::FILES] << "moving " << from2 << " to " << to2 << endl; - bool moved = (copy) + bool const moved = (copy) ? lyx::copy(from2, to2) : lyx::rename(from2, to2); if (!moved && no_errors) { +#if USE_BOOST_FORMAT + Alert::alert(_("Error while trying to move file:"), + from2, boost::io::str(boost::format(_("to %1$s")) % to2)); +#else Alert::alert(_("Error while trying to move file:"), from2, _("to ") + to2); +#endif no_errors = false; } } @@ -800,7 +825,8 @@ bool Converters::scanLog(Buffer const * buffer, string const & command, if ((result & LaTeX::ERRORS)) { // Insert all errors as errors boxes bv->insertErrors(terr); - bv->redraw(); +#warning repaint() or update() or nothing ? + bv->repaint(); bv->fitCursor(); } bv->owner()->allowInput(); @@ -820,8 +846,13 @@ bool Converters::scanLog(Buffer const * buffer, string const & command, } string head; split(command, head, ' '); +#if USE_BOOST_FORMAT + Alert::alert(boost::io::str(boost::format(_("There were errors during running of %1$s")) % head), + s, t); +#else Alert::alert(_("There were errors during running of ") + head, s, t); +#endif return false; } else if (result & LaTeX::NO_OUTPUT) { string const s = _("The operation resulted in"); @@ -851,13 +882,14 @@ bool Converters::runLaTeX(Buffer const * buffer, string const & command) LaTeX latex(command, name, buffer->filePath()); TeXErrors terr; int result = latex.run(terr, - bv ? bv->owner()->getLyXFunc() : 0); + bv ? &bv->owner()->getLyXFunc() : 0); if (bv) { if ((result & LaTeX::ERRORS)) { // Insert all errors as errors boxes bv->insertErrors(terr); - bv->redraw(); +#warning repaint() or update() or nothing ? + bv->repaint(); bv->fitCursor(); } }