Revert r26683 and add some comments making it a little clearer what

is going on here.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26814 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Richard Heck 2008-10-08 15:07:09 +00:00
parent 9601279dbb
commit b90919e48b
4 changed files with 53 additions and 18 deletions

View File

@ -287,7 +287,8 @@ void ConverterCache::add(FileName const & orig_from, string const & to_format,
return;
}
item->checksum = checksum;
if (!mover.copy(converted_file, item->cache_name)) {
if (!mover.copy(converted_file, item->cache_name,
onlyFilename(item->cache_name.absFilename()))) {
LYXERR(Debug::FILES, "Could not copy file " << orig_from << " to "
<< item->cache_name);
} else if (!item->cache_name.changePermission(0600)) {
@ -297,7 +298,8 @@ void ConverterCache::add(FileName const & orig_from, string const & to_format,
} else {
CacheItem new_item(orig_from, to_format, timestamp,
orig_from.checksum());
if (mover.copy(converted_file, new_item.cache_name)) {
if (mover.copy(converted_file, new_item.cache_name,
onlyFilename(new_item.cache_name.absFilename()))) {
if (!new_item.cache_name.changePermission(0600)) {
LYXERR(Debug::FILES, "Could not change file mode"
<< new_item.cache_name);
@ -433,7 +435,8 @@ bool ConverterCache::copy(FileName const & orig_from, string const & to_format,
CacheItem * const item = pimpl_->find(orig_from, to_format);
LASSERT(item, /**/);
Mover const & mover = getMover(to_format);
return mover.copy(item->cache_name, dest);
return mover.copy(item->cache_name, dest,
onlyFilename(dest.absFilename()));
}
} // namespace lyx

View File

@ -86,7 +86,7 @@ CopyStatus copyFile(string const & format,
}
Mover const & mover = getMover(format);
if (!mover.copy(sourceFile, destFile))
if (!mover.copy(sourceFile, destFile, latexFile))
Alert::error(_("Couldn't copy file"),
bformat(_("Copying %1$s to %2$s failed."),
makeDisplayPath(sourceFile.absFilename()),

View File

@ -27,6 +27,13 @@ namespace lyx {
bool Mover::copy(FileName const & from, FileName const & to) const
{
return do_copy(from, to, to.absFilename());
}
bool Mover::do_copy(FileName const & from, FileName const & to,
string const &) const
{
return from.copyTo(to);
}
@ -50,7 +57,7 @@ bool SpecialisedMover::do_copy(FileName const & from, FileName const & to,
string const & latex) const
{
if (command_.empty())
return Mover::copy(from, to);
return Mover::do_copy(from, to, latex);
string command = libScriptSearch(command_);
command = subst(command, "$$i", quoteName(from.toFilesystemEncoding()));

View File

@ -31,17 +31,35 @@ public:
/** Copy file @c from to @c to.
* This version should be used to copy files from the original
* location to the temporary directory, since @c to and @c latex
* would be equal in this case.
* location to the temporary directory.
* \returns true if successful.
*/
bool
copy(support::FileName const & from, support::FileName const & to) const;
/** Copy file @c from to @c to.
* \see SpecialisedMover::SpecialisedMover() for an explanation of
* @c latex.
* This version should be used to copy files from the temporary
* directory to the export location, since @c to and @c latex may
* not be equal in this case.
* \returns true if successful.
* NOTE: Although this routine simply calls do_copy() and
* Mover::do_copy() does not itself make any use of the @c latex argument,
* SpecialisedMover overrides do_copy(), so SpecialisedMover::copy(), which
* is just Mover::copy(), calls SpecialisedMover::do_copy(), and the @c latex
* argument IS in that case used.
*/
bool
copy(support::FileName const & from, support::FileName const & to,
std::string const & latex) const
{
return do_copy(from, to, latex);
}
/** Rename file @c from as @c to.
* This version should be used to move files from the original
* location to the temporary directory, since @c to and @c latex
* would be equal in this case.
* location to the temporary directory.
* \returns true if successful.
*/
bool
@ -63,6 +81,10 @@ public:
}
protected:
virtual bool
do_copy(support::FileName const & from, support::FileName const & to,
std::string const &) const;
virtual bool
do_rename(support::FileName const & from, support::FileName const & to,
std::string const &) const;
@ -76,7 +98,13 @@ protected:
* For example, an Xfig .fig file can contain references to external
* picture files. If such a reference has a relative path, then the
* copied .fig file will require a transformation of the picture file
* reference if it is to be found by Xfig.
* reference if it is to be found by Xfig.
*
* So, in this case, we need three arguments:
* (i) @c from the location of the file to be moved
* (ii) @c to the location to which it should be moved
* (iii) @c latex the identifier that should be used in the sort of
* transformation just mentioned.
*/
class SpecialisedMover : public Mover
{
@ -92,14 +120,11 @@ public:
* where $$s is a placeholder for the lyx support directory,
* $$i is a placeholder for the name of the file to be moved,
* $$o is a placeholder for the name of the file after moving,
* $$l is a placeholder for the name of the file after moving,
* suitable as argument to a latex include command. This is
* either an absolute filename or relative to the master
* document.
* $$o and $$l can only differ if the file is copied from the
* temporary directory to the export location. If it is copied
* from the original location to the temporary directory, they
* are the same, so $$l may be ommitted in this case.
* $$l is a placeholder for the latex argument, as explained above.
* $$o and $$l can only differ if the file is copied from the temporary
* directory to the export location. If it is copied from the original
* location to the temporary directory, they are the same, so $$l may be
* ignored in this case, as it is in the Mover baseclass.
*/
SpecialisedMover(std::string const & command)
: command_(command) {}