X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2FLiason.C;h=1c962dec523d303d6868d2ebc30581d2758c25b4;hb=ca3ee9394ad7c6cc0a345255b1147628ce9ca991;hp=dd9be1651d6233037c38a2b03016ea692326d5d1;hpb=66088f1487d2e84fbd90109498c76852a9c6938b;p=lyx.git diff --git a/src/frontends/Liason.C b/src/frontends/Liason.C index dd9be1651d..1c962dec52 100644 --- a/src/frontends/Liason.C +++ b/src/frontends/Liason.C @@ -1,12 +1,12 @@ -/* This file is part of - * ====================================================== - * - * LyX, The Document Processor - * - * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. +/** + * \file Liason.C + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * ====================================================== */ + * \author Allan Rae + * + * Full author contact details are available in file CREDITS + */ #include @@ -15,32 +15,26 @@ #endif #include "Liason.h" -#include "LyXView.h" -#include "BufferView.h" -#include "buffer.h" #include "lyxrc.h" #include "PrinterParams.h" -#include "lyx_gui_misc.h" + +#include "frontends/LyXView.h" +#include "BufferView.h" +#include "buffer.h" +#include "exporter.h" +#include "converter.h" + +#include "support/LAssert.h" #include "support/lstrings.h" #include "support/filetools.h" #include "support/path.h" -#include "exporter.h" -#include "converter.h" -#include "minibuffer.h" -#include "support/syscall.h" +#include "support/systemcall.h" -using std::endl; +#include "debug.h" // for lyxerr -extern LyXRC lyxrc; -#ifndef NEW_EXPORT -extern bool RunScript(Buffer * buffer, bool wait, string const & command, - string const & orgname = string(), bool need_shell=true); -#endif +using std::endl; -#ifdef CXX_WORKING_NAMESPACES -namespace Liason -{ -#endif +namespace Liason { PrinterParams getPrinterParams(Buffer * buffer) { @@ -51,13 +45,10 @@ PrinterParams getPrinterParams(Buffer * buffer) } -bool printBuffer(Buffer * buffer, PrinterParams const & pp) +bool printBuffer(Buffer * buffer, PrinterParams const & pp) { -#ifndef NEW_EXPORT - bool result(false); -#endif string command(lyxrc.print_command + ' '); - + if (pp.target == PrinterParams::PRINTER && lyxrc.print_adapt_output // dvips wants a printer name && !pp.printer_name.empty()) {// printer name given @@ -66,59 +57,53 @@ bool printBuffer(Buffer * buffer, PrinterParams const & pp) + ' '; } - switch (pp.which_pages) { - case PrinterParams::EVEN: - command += lyxrc.print_evenpage_flag + ' '; - break; - - case PrinterParams::ODD: - command += lyxrc.print_oddpage_flag + ' '; - break; - - default: - // only option left is print all of them - break; - } - - if (!pp.from_page.empty()) { + if (!pp.all_pages && pp.from_page) { command += lyxrc.print_pagerange_flag + ' '; - command += pp.from_page; + command += tostr(pp.from_page); if (pp.to_page) { - // we have a range "from-to" + // we have a range "from-to" command += '-'; command += tostr(pp.to_page); } command += ' '; } - if (pp.reverse_order) { - command += lyxrc.print_reverse_flag + ' '; + // If both are, or both are not selected, then skip the odd/even printing + if (pp.odd_pages != pp.even_pages) { + if (pp.odd_pages) { + command += lyxrc.print_oddpage_flag + ' '; + } else if (pp.even_pages) { + command += lyxrc.print_evenpage_flag + ' '; + } } - if (1 < pp.count_copies) { - if (pp.unsorted_copies) { - command += lyxrc.print_copies_flag; - } else { + if (pp.count_copies > 1) { + if (pp.sorted_copies) { command += lyxrc.print_collcopies_flag; + } else { + command += lyxrc.print_copies_flag; } command += ' '; command += tostr(pp.count_copies); command += ' '; } + + if (pp.reverse_order) { + command += lyxrc.print_reverse_flag + ' '; + } if (!lyxrc.print_extra_options.empty()) { command += lyxrc.print_extra_options + ' '; } - command += Converter::dvips_options(buffer) + ' '; + command += converters.dvips_options(buffer) + ' '; -#ifdef NEW_EXPORT if (!Exporter::Export(buffer, "dvi", true)) return false; // Push directory path. - string path = OnlyPath(buffer->fileName()); - if (lyxrc.use_tempdir || (IsDirWriteable(path) < 1)) { + string path = buffer->filePath(); + if (lyxrc.use_tempdir || !IsDirWriteable(path)) { path = buffer->tmppath; } Path p(path); @@ -127,7 +112,7 @@ bool printBuffer(Buffer * buffer, PrinterParams const & pp) // 1. we print to a file // 2. we print direct to a printer // 3. we print using a spool command (print to file first) - Systemcalls one; + Systemcall one; int res = 0; string dviname = ChangeExtension(buffer->getLatexName(true), "dvi"); switch (pp.target) { @@ -145,15 +130,14 @@ bool printBuffer(Buffer * buffer, PrinterParams const & pp) command2 += QuoteName(psname); // First run dvips. // If successful, then spool command - lyxerr << "command1 = " << command << endl; - lyxerr << "command2 = " << command2 << endl; - res = one.startscript(Systemcalls::System, command); + res = one.startscript(Systemcall::Wait, command); if (res == 0) - res = one.startscript(Systemcalls::SystemDontWait, + res = one.startscript(Systemcall::DontWait, command2); } else // case 2 - res = one.startscript(Systemcalls::SystemDontWait, command); + res = one.startscript(Systemcall::DontWait, + command + QuoteName(dviname)); break; case PrinterParams::FILE: @@ -161,70 +145,20 @@ bool printBuffer(Buffer * buffer, PrinterParams const & pp) command += lyxrc.print_to_file + QuoteName(MakeAbsPath(pp.file_name, path)); command += ' ' + QuoteName(dviname); - lyxerr << "command1 = " << command << endl; - res = one.startscript(Systemcalls::SystemDontWait, command); + res = one.startscript(Systemcall::DontWait, command); break; } - return res == 0; -#else - // Push directory path if necessary. - // PS file should go where the source file is unless it's a - // read-only directory in which case we write it to tmpdir. - // All temporary files go in tmpdir (like spool files). - string path = OnlyPath(buffer->fileName()); - if ((pp.target != PrinterParams::FILE - && lyxrc.use_tempdir) - || (IsDirWriteable(path) < 1)) { - path = buffer->tmppath; - } - Path p(path); - // there are three cases here: - // 1. we print to a file - // 2. we print direct to a printer - // 3. we print using a spool command (print to file first) - switch (pp.target) { - case PrinterParams::PRINTER: - if (!lyxrc.print_spool_command.empty()) { - // case 3 - command += lyxrc.print_to_file - + QuoteName(pp.file_name); - string command2 = lyxrc.print_spool_command - + ' '; - if (!pp.printer_name.empty()) { - command2 += lyxrc.print_spool_printerprefix - + pp.printer_name; - } - // First run dvips. - // If successful, then spool command - if (result = RunScript(buffer, true, command)) { - result = RunScript(buffer, false, - command2, - QuoteName(pp.file_name)); - } - } else { - // case 2 - result = RunScript(buffer, false, command); - } - break; + lyxerr[Debug::LATEX] << "printBuffer: \"" << command << "\"\n"; - case PrinterParams::FILE: - // case 1 - command += lyxrc.print_to_file - + QuoteName(MakeAbsPath(pp.file_name, path)); - result = RunScript(buffer, false, command); - break; - } - return result; -#endif + return res == 0; } -void setMinibuffer(LyXView * lv, char const * msg) -{ - lv->getMiniBuffer()->Set(msg); -} -#ifdef CXX_WORKING_NAMESPACES +void setMinibuffer(LyXView * lv, string const & msg) +{ + lyx::Assert(lv); + lv->message(msg); } -#endif +} // namespace Liason