X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fconverter.C;h=604e4d70f4048428c34125581fcfeaae90758d22;hb=15271fce0705ea5611647b5b3d1e993362ff5284;hp=01fe135b0b2e84756fdffd9c85741d142ca19adb;hpb=a5948ae476948e5fcfa872b49df08a2807dff7dc;p=lyx.git diff --git a/src/converter.C b/src/converter.C index 01fe135b0b..604e4d70f4 100644 --- a/src/converter.C +++ b/src/converter.C @@ -25,10 +25,10 @@ #include "bufferview_funcs.h" #include "LaTeX.h" #include "LyXView.h" -#include "minibuffer.h" #include "lyx_gui_misc.h" #include "lyx_cb.h" // ShowMessage() #include "support/lyxfunctional.h" +#include "gettext.h" using std::vector; using std::queue; @@ -38,13 +38,15 @@ using std::find_if; using std::reverse; using std::sort; -static string const token_from("$$i"); -static string const token_base("$$b"); -static string const token_to("$$o"); +namespace { + +string const token_from("$$i"); +string const token_base("$$b"); +string const token_to("$$o"); ////////////////////////////////////////////////////////////////////////////// -static inline +inline string const add_options(string const & command, string const & options) { string head; @@ -52,6 +54,8 @@ string const add_options(string const & command, string const & options) return head + ' ' + options + ' ' + tail; } +} // namespace anon + ////////////////////////////////////////////////////////////////////////////// bool Format::dummy() const @@ -81,7 +85,7 @@ Format const * Formats::GetFormat(string const & name) const { FormatList::const_iterator cit = find_if(formatlist.begin(), formatlist.end(), - compare_memfun(&Format::name, name)); + lyx::compare_memfun(&Format::name, name)); if (cit != formatlist.end()) return &(*cit); else @@ -93,7 +97,7 @@ int Formats::GetNumber(string const & name) const { FormatList::const_iterator cit = find_if(formatlist.begin(), formatlist.end(), - compare_memfun(&Format::name, name)); + lyx::compare_memfun(&Format::name, name)); if (cit != formatlist.end()) return cit - formatlist.begin(); else @@ -113,7 +117,7 @@ void Formats::Add(string const & name, string const & extension, { FormatList::iterator it = find_if(formatlist.begin(), formatlist.end(), - compare_memfun(&Format::name, name)); + lyx::compare_memfun(&Format::name, name)); if (it == formatlist.end()) formatlist.push_back(Format(name, extension, prettyname, shortcut, "")); @@ -128,7 +132,7 @@ void Formats::Delete(string const & name) { FormatList::iterator it = find_if(formatlist.begin(), formatlist.end(), - compare_memfun(&Format::name, name)); + lyx::compare_memfun(&Format::name, name)); if (it != formatlist.end()) formatlist.erase(it); } @@ -145,7 +149,7 @@ void Formats::SetViewer(string const & name, string const & command) Add(name); FormatList::iterator it = find_if(formatlist.begin(), formatlist.end(), - compare_memfun(&Format::name, name)); + lyx::compare_memfun(&Format::name, name)); if (it != formatlist.end()) it->setViewer(command); } @@ -173,7 +177,10 @@ bool Formats::View(Buffer const * buffer, string const & filename, if (format_name == "dvi" && !lyxrc.view_dvi_paper_option.empty()) { command += " " + lyxrc.view_dvi_paper_option; - command += " " + converters.dvi_papersize(buffer); + string paper_size = converters.papersize(buffer); + if (paper_size == "letter") + paper_size = "us"; + command += " " + paper_size; if (buffer->params.orientation == BufferParams::ORIENTATION_LANDSCAPE) command += 'r'; @@ -606,6 +613,9 @@ bool Converters::Convert(Buffer const * buffer, if (conv.from == "dvi" && conv.to == "ps") command = add_options(command, dvips_options(buffer)); + else if (conv.from == "dvi" && prefixIs(conv.to, "pdf")) + command = add_options(command, + dvipdfm_options(buffer)); lyxerr << "Calling " << command << endl; if (buffer) @@ -807,7 +817,7 @@ bool Converters::runLaTeX(Buffer const * buffer, string const & command) if (bv) { ProhibitInput(bv); - bv->owner()->getMiniBuffer()->Set(_("Running LaTeX...")); + bv->owner()->message(_("Running LaTeX...")); // Remove all error insets need_redraw = bv->removeAutoInsets(); } @@ -817,7 +827,7 @@ bool Converters::runLaTeX(Buffer const * buffer, string const & command) TeXErrors terr; LaTeX latex(command, name, buffer->filepath); int result = latex.run(terr, - bv ? bv->owner()->getMiniBuffer() : 0); + bv ? bv->owner()->getLyXFunc() : 0); if (bv) { @@ -872,7 +882,7 @@ bool Converters::runLaTeX(Buffer const * buffer, string const & command) } -string const Converters::dvi_papersize(Buffer const * buffer) +string const Converters::papersize(Buffer const * buffer) { char real_papersize = buffer->params.papersize; if (real_papersize == BufferParams::PAPER_DEFAULT) @@ -893,7 +903,7 @@ string const Converters::dvi_papersize(Buffer const * buffer) return "legal"; case BufferParams::PAPER_USLETTER: default: - return "us"; + return "letter"; } } @@ -914,9 +924,7 @@ string const Converters::dvips_options(Buffer const * buffer) result += ' ' + buffer->params.paperwidth; result += ',' + buffer->params.paperheight; } else { - string paper_option = dvi_papersize(buffer); - if (paper_option == "us") - paper_option = "letter"; + string paper_option = papersize(buffer); if (paper_option != "letter" || buffer->params.orientation != BufferParams::ORIENTATION_LANDSCAPE) { // dvips won't accept -t letter -t landscape. In all other @@ -925,11 +933,32 @@ string const Converters::dvips_options(Buffer const * buffer) result += ' ' + paper_option; } } - if (buffer->params.orientation == BufferParams::ORIENTATION_LANDSCAPE) + if (buffer->params.orientation == BufferParams::ORIENTATION_LANDSCAPE && + buffer->params.papersize2 != BufferParams::VM_PAPER_CUSTOM) result += ' ' + lyxrc.print_landscape_flag; return result; } + +string const Converters::dvipdfm_options(Buffer const * buffer) +{ + string result; + if (!buffer) + return result; + + if (buffer->params.papersize2 != BufferParams::VM_PAPER_CUSTOM) { + string paper_size = papersize(buffer); + if (paper_size != "b5" && paper_size != "foolscap") + result = "-p "+ paper_size; + + if (buffer->params.orientation == BufferParams::ORIENTATION_LANDSCAPE) + result += " -l"; + } + + return result; +} + + vector Converters::vertices;