Author: vfr
Date: Thu Oct 27 22:00:06 2011
New Revision: 40043
URL: http://www.lyx.org/trac/changeset/40043
Log:
Let Buffer::doExport return an error value
TODO:
- Also let the public function return an error value,
- Move all user interaction (Alerts etc.) out of Buffer.
Modified:
lyx-devel/trunk/src/Buffer.cpp
lyx-devel/trunk/src/Buffer.h
Modified: lyx-devel/trunk/src/Buffer.cpp
==============================================================================
--- lyx-devel/trunk/src/Buffer.cpp Thu Oct 27 22:00:02 2011 (r40042)
+++ lyx-devel/trunk/src/Buffer.cpp Thu Oct 27 22:00:06 2011 (r40043)
@@ -2095,9 +2095,9 @@
break;
case LFUN_BUFFER_EXPORT: {
- bool success = doExport(argument, false, false);
- dr.setError(!success);
- if (!success)
+ ExportStatus const status = doExport(argument, false, false);
+ dr.setError(status != ExportSuccess);
+ if (status != ExportSuccess)
dr.setMessage(bformat(_("Error exporting to format:
%1$s."),
func.argument()));
break;
@@ -3488,10 +3488,10 @@
bool const update_unincluded =
params().maintain_unincluded_children
&& !params().getIncludedChildren().empty();
- return doExport(target, put_in_tempdir, update_unincluded);
+ return (doExport(target, put_in_tempdir, update_unincluded) ==
ExportSuccess);
}
-bool Buffer::doExport(string const & target, bool put_in_tempdir,
+Buffer::ExportStatus Buffer::doExport(string const & target, bool
put_in_tempdir,
bool includeall, string & result_file) const
{
LYXERR(Debug::FILES, "target=" << target);
@@ -3533,7 +3533,7 @@
_("No information for exporting the
format %1$s."),
formats.prettyName(format)));
}
- return false;
+ return ExportNoPathToFormat;
}
runparams.flavor = converters.getFlavor(path);
@@ -3595,13 +3595,13 @@
d->cloned_buffer_->d->errorLists["Export"] =
d->errorLists["Export"];
}
- return false;
+ return ExportError;
}
} else if (!lyxrc.tex_allows_spaces
&& contains(filePath(), ' ')) {
Alert::error(_("File name error"),
_("The directory path to the document cannot contain
spaces."));
- return false;
+ return ExportTexPathHasSpaces;
} else {
runparams.nice = false;
if (!makeLaTeXFile(FileName(filename), filePath(), runparams)) {
@@ -3609,7 +3609,7 @@
d->cloned_buffer_->d->errorLists["Export"] =
d->errorLists["Export"];
}
- return false;
+ return ExportError;
}
}
@@ -3658,11 +3658,11 @@
}
if (!success)
- return false;
+ return ExportConverterError;
if (put_in_tempdir) {
result_file = tmp_result_file.absFileName();
- return true;
+ return ExportSuccess;
}
if (dest_filename.empty())
@@ -3719,17 +3719,21 @@
formats.prettyName(format)));
}
- return true;
+ return ExportSuccess;
}
-bool Buffer::doExport(string const & target, bool put_in_tempdir,
+Buffer::ExportStatus Buffer::doExport(string const & target, bool
put_in_tempdir,
bool includeall) const
{
string result_file;
// (1) export with all included children (omit \includeonly)
- if (includeall && !doExport(target, put_in_tempdir, true, result_file))
- return false;
+ if (includeall) {
+ ExportStatus const status =
+ doExport(target, put_in_tempdir, true, result_file);
+ if (status != ExportSuccess)
+ return status;
+ }
// (2) export with included children only
return doExport(target, put_in_tempdir, false, result_file);
}
@@ -3748,10 +3752,10 @@
MarkAsExporting exporting(this);
string result_file;
// (1) export with all included children (omit \includeonly)
- if (includeall && !doExport(format, true, true))
+ if (includeall && (doExport(format, true, true) != ExportSuccess))
return false;
// (2) export with included children only
- if (!doExport(format, true, false, result_file))
+ if (doExport(format, true, false, result_file) != ExportSuccess)
return false;
return formats.view(*this, FileName(result_file), format);
}
Modified: lyx-devel/trunk/src/Buffer.h
==============================================================================
--- lyx-devel/trunk/src/Buffer.h Thu Oct 27 22:00:02 2011 (r40042)
+++ lyx-devel/trunk/src/Buffer.h Thu Oct 27 22:00:06 2011 (r40043)
@@ -122,6 +122,13 @@
ReadOriginal
};
+ enum ExportStatus {
+ ExportSuccess,
+ ExportError,
+ ExportNoPathToFormat,
+ ExportTexPathHasSpaces,
+ ExportConverterError
+ };
/// Method to check if a file is externally modified, used by
/// isExternallyModified()
@@ -610,10 +617,10 @@
private:
/// target is a format name optionally followed by a space
/// and a destination file-name
- bool doExport(std::string const & target, bool put_in_tempdir,
+ ExportStatus doExport(std::string const & target, bool put_in_tempdir,
bool includeall, std::string & result_file) const;
///
- bool doExport(std::string const & target, bool put_in_tempdir,
+ ExportStatus doExport(std::string const & target, bool put_in_tempdir,
bool includeall) const;
///
bool preview(std::string const & format, bool includeall = false) const;