mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 21:21:32 +00:00
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:
parent
9601279dbb
commit
b90919e48b
@ -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
|
||||
|
@ -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()),
|
||||
|
@ -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()));
|
||||
|
51
src/Mover.h
51
src/Mover.h
@ -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) {}
|
||||
|
Loading…
Reference in New Issue
Block a user