X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetgraphics.C;h=56d990bda04622110fd3bbeac131ce8b7aee81cb;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=82c0876aa1bd24f013ca0701263cbb81201e0cc6;hpb=354fb450c2c0e63dc96c1764bbbc5233ecae21d9;p=lyx.git diff --git a/src/insets/insetgraphics.C b/src/insets/insetgraphics.C index 82c0876aa1..56d990bda0 100644 --- a/src/insets/insetgraphics.C +++ b/src/insets/insetgraphics.C @@ -64,7 +64,6 @@ TODO #include "FuncStatus.h" #include "gettext.h" #include "LaTeXFeatures.h" -#include "lyx_main.h" #include "lyxlength.h" #include "lyxlex.h" #include "metricsinfo.h" @@ -90,11 +89,11 @@ TODO namespace lyx { -using support::absolutePath; using support::bformat; using support::changeExtension; using support::compare_timestamps; using support::contains; +using support::DocFileName; using support::FileName; using support::float_equal; using support::getExtension; @@ -148,7 +147,7 @@ string findTargetFormat(string const & format, OutputParams const & runparams) InsetGraphics::InsetGraphics() - : graphic_label(sgml::uniqueID("graph")), + : graphic_label(sgml::uniqueID(from_ascii("graph"))), graphic_(new RenderGraphic(this)) {} @@ -156,7 +155,7 @@ InsetGraphics::InsetGraphics() InsetGraphics::InsetGraphics(InsetGraphics const & ig) : InsetOld(ig), boost::signals::trackable(), - graphic_label(sgml::uniqueID("graph")), + graphic_label(sgml::uniqueID(from_ascii("graph"))), graphic_(new RenderGraphic(*ig.graphic_, this)) { setParams(ig.params()); @@ -234,10 +233,12 @@ void InsetGraphics::edit(LCursor & cur, bool) } -void InsetGraphics::metrics(MetricsInfo & mi, Dimension & dim) const +bool InsetGraphics::metrics(MetricsInfo & mi, Dimension & dim) const { graphic_->metrics(mi, dim); + bool const changed = dim_ != dim; dim_ = dim; + return changed; } @@ -453,12 +454,9 @@ enum CopyStatus { }; -std::pair const -copyFileIfNeeded(string const & file_in, string const & file_out) +std::pair const +copyFileIfNeeded(FileName const & file_in, FileName const & file_out) { - BOOST_ASSERT(absolutePath(file_in)); - BOOST_ASSERT(absolutePath(file_out)); - unsigned long const checksum_in = support::sum(file_in); unsigned long const checksum_out = support::sum(file_out); @@ -466,14 +464,14 @@ copyFileIfNeeded(string const & file_in, string const & file_out) // Nothing to do... return std::make_pair(IDENTICAL_CONTENTS, file_out); - Mover const & mover = movers(formats.getFormatFromFile(file_in)); + Mover const & mover = getMover(formats.getFormatFromFile(file_in)); bool const success = mover.copy(file_in, file_out); if (!success) { // FIXME UNICODE lyxerr[Debug::GRAPHICS] << to_utf8(support::bformat(_("Could not copy the file\n%1$s\n" "into the temporary directory."), - from_utf8(file_in))) + from_utf8(file_in.absFilename()))) << std::endl; } @@ -482,8 +480,8 @@ copyFileIfNeeded(string const & file_in, string const & file_out) } -std::pair const -copyToDirIfNeeded(FileName const & file, string const & dir) +std::pair const +copyToDirIfNeeded(DocFileName const & file, string const & dir) { using support::rtrim; @@ -504,9 +502,9 @@ copyToDirIfNeeded(FileName const & file, string const & dir) string::size_type const ext_len = file_in.length() - base.length(); mangled[mangled.length() - ext_len] = '.'; } - string const file_out = support::makeAbsPath(mangled, dir); + FileName const file_out(support::makeAbsPath(mangled, dir)); - return copyFileIfNeeded(file_in, file_out); + return copyFileIfNeeded(file, file_out); } @@ -563,7 +561,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf, // temp_file will contain the file for LaTeX to act on if, for example, // we move it to a temp dir or uncompress it. - string temp_file = orig_file; + FileName temp_file = params().filename; // The master buffer. This is useful when there are multiple levels // of include files @@ -573,7 +571,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf, // not exist. // We are not going to change the extension or using the name of the // temporary file, the code is already complicated enough. - if (runparams.inComment || !isFileReadable(orig_file)) + if (runparams.inComment || !isFileReadable(params().filename)) return params().filename.outputFilename(m_buffer->filePath()); // We place all temporary files in the master buffer's temp dir. @@ -594,8 +592,8 @@ string const InsetGraphics::prepareFile(Buffer const & buf, // run through the LaTeX compiler. string output_file = support::os::external_path(runparams.nice ? params().filename.outputFilename(m_buffer->filePath()) : - onlyFilename(temp_file)); - string source_file = runparams.nice ? orig_file : temp_file; + onlyFilename(temp_file.absFilename())); + FileName source_file = runparams.nice ? FileName(params().filename) : temp_file; string const tex_format = (runparams.flavor == OutputParams::LATEX) ? "latex" : "pdflatex"; @@ -611,7 +609,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf, lyxerr[Debug::GRAPHICS] << "\tpass zipped file to LaTeX.\n"; - string const bb_orig_file = changeExtension(orig_file, "bb"); + FileName const bb_orig_file = FileName(changeExtension(orig_file, "bb")); if (runparams.nice) { runparams.exportdata->addExternalFile(tex_format, bb_orig_file, @@ -619,7 +617,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf, } else { // LaTeX needs the bounding box file in the // tmp dir - string bb_file = changeExtension(temp_file, "bb"); + FileName bb_file = FileName(changeExtension(temp_file.absFilename(), "bb")); boost::tie(status, bb_file) = copyFileIfNeeded(bb_orig_file, bb_file); if (status == FAILURE) @@ -637,9 +635,10 @@ string const InsetGraphics::prepareFile(Buffer const & buf, support::EXCLUDE_EXTENSION); } - string const unzipped_temp_file = unzippedFileName(temp_file); + FileName const unzipped_temp_file = + FileName(unzippedFileName(temp_file.absFilename())); output_file = unzippedFileName(output_file); - source_file = unzippedFileName(source_file); + source_file = FileName(unzippedFileName(source_file.absFilename())); if (compare_timestamps(unzipped_temp_file, temp_file) > 0) { // temp_file has been unzipped already and // orig_file has not changed in the meantime. @@ -673,15 +672,15 @@ string const InsetGraphics::prepareFile(Buffer const & buf, << "\tthe orig file is: " << orig_file << endl; if (from == to) { - if (!runparams.nice && getExtension(temp_file) != ext) { + if (!runparams.nice && getExtension(temp_file.absFilename()) != ext) { // The LaTeX compiler will not be able to determine // the file format from the extension, so we must // change it. - string const new_file = changeExtension(temp_file, ext); + FileName const new_file = FileName(changeExtension(temp_file.absFilename(), ext)); if (support::rename(temp_file, new_file)) { temp_file = new_file; output_file = changeExtension(output_file, ext); - source_file = changeExtension(source_file, ext); + source_file = FileName(changeExtension(source_file.absFilename(), ext)); } else lyxerr[Debug::GRAPHICS] << "Could not rename file `" @@ -696,7 +695,7 @@ string const InsetGraphics::prepareFile(Buffer const & buf, return stripExtensionIfPossible(output_file, to); } - string const to_file = changeExtension(temp_file, ext); + FileName const to_file = FileName(changeExtension(temp_file.absFilename(), ext)); string const output_to_file = changeExtension(output_file, ext); // Do we need to perform the conversion? @@ -722,7 +721,9 @@ string const InsetGraphics::prepareFile(Buffer const & buf, // FIXME (Abdel 12/08/06): Is there a need to show these errors? ErrorList el; - if (converters.convert(&buf, temp_file, temp_file, from, to, el, true)) { + if (theConverters().convert(&buf, temp_file, to_file, params().filename, + from, to, el, + Converters::try_default | Converters::try_cache)) { runparams.exportdata->addExternalFile(tex_format, to_file, output_to_file); runparams.exportdata->addExternalFile("dvi", @@ -745,8 +746,8 @@ int InsetGraphics::latex(Buffer const & buf, odocstream & os, string const relative_file = params().filename.relFilename(buf.filePath()); - string const file_ = params().filename.absFilename(); - bool const file_exists = !file_.empty() && isFileReadable(file_); + bool const file_exists = !params().filename.empty() && + isFileReadable(params().filename); string const message = file_exists ? string() : string("bb = 0 0 200 100, draft, type=eps"); // if !message.empty() then there was no existing file @@ -864,10 +865,10 @@ int InsetGraphics::docbook(Buffer const &, odocstream & os, // easier to use. if (runparams.flavor == OutputParams::XML) { runparams.exportdata->addExternalFile("docbook-xml", - params().filename.absFilename()); + params().filename); } else { runparams.exportdata->addExternalFile("docbook", - params().filename.absFilename()); + params().filename); } os << ""; @@ -932,9 +933,8 @@ InsetGraphicsParams const & InsetGraphics::params() const void InsetGraphics::editGraphics(InsetGraphicsParams const & p, Buffer const & buffer) const { - string const file_with_path = p.filename.absFilename(); - formats.edit(buffer, file_with_path, - formats.getFormatFromFile(file_with_path)); + formats.edit(buffer, p.filename, + formats.getFormatFromFile(p.filename)); }