mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
ControlPrint.cpp
LyXFunc.cpp Quote file paths in printer dialog Fix bug 3915: http://bugzilla.lyx.org/show_bug.cgi?id=3915 (patch from Jürgen and JMarc) git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18934 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
6e3ecc8a2f
commit
e729c5ffee
@ -989,21 +989,22 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
|
||||
case LFUN_BUFFER_PRINT: {
|
||||
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
|
||||
string target;
|
||||
string target_name;
|
||||
string command = split(split(argument, target, ' '),
|
||||
target_name, ' ');
|
||||
// FIXME: cmd.getArg() might fail if one of the arguments
|
||||
// contains double quotes
|
||||
string target = cmd.getArg(0);
|
||||
string target_name = cmd.getArg(1);
|
||||
string command = cmd.getArg(2);
|
||||
|
||||
if (target.empty()
|
||||
|| target_name.empty()
|
||||
|| command.empty()) {
|
||||
lyxerr << "Unable to parse \""
|
||||
<< argument << '"' << std::endl;
|
||||
<< argument << '"' << endl;
|
||||
break;
|
||||
}
|
||||
if (target != "printer" && target != "file") {
|
||||
lyxerr << "Unrecognized target \""
|
||||
<< target << '"' << std::endl;
|
||||
<< target << '"' << endl;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1035,7 +1036,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
// case 3: print using a spool
|
||||
string const psname =
|
||||
changeExtension(dviname,".ps");
|
||||
command += lyxrc.print_to_file
|
||||
command += ' ' + lyxrc.print_to_file
|
||||
+ quoteName(psname)
|
||||
+ ' '
|
||||
+ quoteName(dviname);
|
||||
@ -1061,7 +1062,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
} else {
|
||||
// case 2: print directly to a printer
|
||||
if (target_name != "default")
|
||||
command += lyxrc.print_to_printer + target_name + ' ';
|
||||
command += ' ' + lyxrc.print_to_printer + target_name + ' ';
|
||||
res = one.startscript(
|
||||
Systemcall::DontWait,
|
||||
command + quoteName(dviname));
|
||||
@ -1069,7 +1070,9 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
|
||||
} else {
|
||||
// case 1: print to a file
|
||||
FileName const filename(makeAbsPath(target_name, path));
|
||||
FileName const filename(makeAbsPath(target_name,
|
||||
lyx_view_->buffer()->filePath()));
|
||||
FileName const dvifile(makeAbsPath(dviname, path));
|
||||
if (fs::exists(filename.toFilesystemEncoding())) {
|
||||
docstring text = bformat(
|
||||
_("The file %1$s already exists.\n\n"
|
||||
@ -1079,10 +1082,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
text, 0, 1, _("&Overwrite"), _("&Cancel")) != 0)
|
||||
break;
|
||||
}
|
||||
command += lyxrc.print_to_file
|
||||
command += ' ' + lyxrc.print_to_file
|
||||
+ quoteName(filename.toFilesystemEncoding())
|
||||
+ ' '
|
||||
+ quoteName(dviname);
|
||||
+ quoteName(dvifile.toFilesystemEncoding());
|
||||
res = one.startscript(Systemcall::DontWait,
|
||||
command);
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ void ControlPrint::dispatchParams()
|
||||
command += lyxrc.print_extra_options + ' ';
|
||||
}
|
||||
|
||||
command += kernel().buffer().params().dvips_options() + ' ';
|
||||
command += kernel().buffer().params().dvips_options();
|
||||
|
||||
string const target = (pp.target == PrinterParams::PRINTER) ?
|
||||
"printer" : "file";
|
||||
@ -138,7 +138,7 @@ void ControlPrint::dispatchParams()
|
||||
(pp.printer_name.empty() ? "default" : pp.printer_name) :
|
||||
pp.file_name;
|
||||
|
||||
string const data = target + " " + target_name + " " + command;
|
||||
string const data = target + " \"" + target_name + "\" \"" + command + '"';
|
||||
kernel().dispatch(FuncRequest(getLfun(), data));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user