* \author Baruch Even
* \author Herbert Voss
*
- * Full author contact details are available in file CREDITS
+ * Full author contact details are available in file CREDITS.
*/
/*
#include "Lsstream.h"
#include "lyxlex.h"
#include "lyxrc.h"
+#include "paragraph_funcs.h"
+#include "lyxtext.h"
#include "frontends/Alert.h"
#include "frontends/Dialogs.h"
#include <algorithm> // For the std::max
-extern string system_tempdir;
// set by Exporters
using namespace lyx::support;
using std::ostream;
using std::endl;
+using std::auto_ptr;
namespace {
{
// Are we using latex or pdflatex).
if (runparams.flavor == LatexRunParams::PDFLATEX) {
- lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode\n";
+ lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode" << endl;
if (contains(suffix, "ps") || suffix == "pdf")
return "pdf";
if (suffix == "jpg") // pdflatex can use jpeg
return "png"; // and also png
}
// If it's postscript, we always do eps.
- lyxerr[Debug::GRAPHICS] << "findTargetFormat: PostScript mode\n";
+ lyxerr[Debug::GRAPHICS] << "findTargetFormat: PostScript mode" << endl;
if (suffix != "ps") // any other than ps
return "eps"; // is changed to eps
return suffix; // let ps untouched
InsetGraphics::InsetGraphics(InsetGraphics const & ig)
- : Inset(ig),
+ : InsetOld(ig),
boost::signals::trackable(),
graphic_label(uniqueID()),
graphic_(new GraphicRenderer(*ig.graphic_))
}
-InsetBase * InsetGraphics::clone() const
+auto_ptr<InsetBase> InsetGraphics::clone() const
{
- return new InsetGraphics(*this);
+ return auto_ptr<InsetBase>(new InsetGraphics(*this));
}
{
switch (cmd.action) {
case LFUN_INSET_MODIFY: {
- string const bufpath = cmd.view()->buffer()->filePath();
+ Buffer const & buffer = *cmd.view()->buffer();
InsetGraphicsParams p;
- InsetGraphicsMailer::string2params(cmd.argument, bufpath, p);
+ InsetGraphicsMailer::string2params(cmd.argument, buffer, p);
if (!p.filename.empty()) {
setParams(p);
cmd.view()->updateInset(this);
return DISPATCHED;
default:
- return Inset::localDispatch(cmd);
+ return InsetOld::localDispatch(cmd);
}
}
}
-Inset::EDITABLE InsetGraphics::editable() const
+InsetOld::EDITABLE InsetGraphics::editable() const
{
return IS_EDITABLE;
}
-void InsetGraphics::write(Buffer const * buf, ostream & os) const
+void InsetGraphics::write(Buffer const & buf, ostream & os) const
{
os << "Graphics\n";
- params().Write(os, buf->filePath());
+ params().Write(os, buf.filePath());
}
-void InsetGraphics::read(Buffer const * buf, LyXLex & lex)
+void InsetGraphics::read(Buffer const & buf, LyXLex & lex)
{
string const token = lex.getString();
if (token == "Graphics")
- readInsetGraphics(lex, buf->filePath());
+ readInsetGraphics(lex, buf.filePath());
else
- lyxerr[Debug::GRAPHICS] << "Not a Graphics inset!\n";
+ lyxerr[Debug::GRAPHICS] << "Not a Graphics inset!" << endl;
graphic_->update(params().as_grfxParams());
}
string const token = lex.getString();
lyxerr[Debug::GRAPHICS] << "Token: '" << token << '\''
- << std::endl;
+ << endl;
if (token.empty()) {
continue;
<< "This document was created with a newer Graphics widget"
", You should use a newer version of LyX to read this"
" file."
- << std::endl;
+ << endl;
// TODO: Possibly open up a dialog?
}
else {
}
-string const InsetGraphics::prepareFile(Buffer const * buf,
+string const InsetGraphics::prepareFile(Buffer const & buf,
LatexRunParams const & runparams) const
{
// LaTeX can cope if the graphics file doesn't exist, so just return the
// filename.
- string orig_file = params().filename;
- string const rel_file = MakeRelPath(orig_file, buf->filePath());
+ string orig_file = params().filename.absFilename();
+ string const rel_file = params().filename.relFilename(buf.filePath());
if (!IsFileReadable(orig_file)) {
lyxerr[Debug::GRAPHICS]
// Uncompress the file if necessary.
// If it has been uncompressed in a previous call to
// prepareFile, do nothing.
- temp_file = MakeAbsPath(OnlyFilename(temp_file), buf->tmppath);
+ temp_file = MakeAbsPath(OnlyFilename(temp_file), buf.tmppath);
lyxerr[Debug::GRAPHICS]
<< "\ttemp_file: " << temp_file << endl;
if (graphic_->hasFileChanged() || !IsFileReadable(temp_file)) {
<< "\tthe orig file is: " << orig_file << endl;
if (lyxrc.use_tempdir) {
- temp_file = copyFileToDir(buf->tmppath, orig_file);
+ temp_file = copyFileToDir(buf.tmppath, orig_file);
if (temp_file.empty()) {
string str = bformat(_("Could not copy the file\n%1$s\n"
"into the temporary directory."),
// if no special converter defined, than we take the default one
// from ImageMagic: convert from:inname.from to:outname.to
- if (!converters.convert(buf, temp_file, outfile_base, from, to)) {
+ if (!converters.convert(&buf, temp_file, outfile_base, from, to)) {
string const command =
- LibFileSearch("scripts", "convertDefault.sh") +
+ "sh " + LibFileSearch("scripts", "convertDefault.sh") +
' ' + from + ':' + temp_file + ' ' +
to + ':' + outfile_base + '.' + to;
lyxerr[Debug::GRAPHICS]
}
-int InsetGraphics::latex(Buffer const * buf, ostream & os,
+int InsetGraphics::latex(Buffer const & buf, ostream & os,
LatexRunParams const & runparams) const
{
// If there is no file specified or not existing,
// just output a message about it in the latex output.
lyxerr[Debug::GRAPHICS]
<< "insetgraphics::latex: Filename = "
- << params().filename << endl;
+ << params().filename.absFilename() << endl;
- string const relative_file = MakeRelPath(params().filename, buf->filePath());
+ string const relative_file =
+ params().filename.relFilename(buf.filePath());
// A missing (e)ps-extension is no problem for LaTeX, so
// we have to test three different cases
#warning uh, but can our cache handle it ? no.
- string const file_ = params().filename;
+ string const file_ = params().filename.absFilename();
bool const file_exists =
!file_.empty() &&
(IsFileReadable(file_) || // original
}
-int InsetGraphics::ascii(Buffer const *, ostream & os, int) const
+int InsetGraphics::ascii(Buffer const &, ostream & os, int) const
{
// No graphics in ascii output. Possible to use gifscii to convert
// images to ascii approximation.
// 1. Convert file to ascii using gifscii
// 2. Read ascii output file and add it to the output stream.
// at least we send the filename
- os << '<' << bformat(_("Graphics file: %1$s"), params().filename) << ">\n";
+ os << '<' << bformat(_("Graphics file: %1$s"),
+ params().filename.absFilename()) << ">\n";
return 0;
}
-int InsetGraphics::linuxdoc(Buffer const *, ostream &) const
+int InsetGraphics::linuxdoc(Buffer const & buf, ostream & os) const
{
- // No graphics in LinuxDoc output. Should check how/what to add.
+ string const file_name = buf.niceFile ?
+ params().filename.relFilename(buf.filePath()):
+ params().filename.absFilename();
+
+ os << "<eps file=\"" << file_name << "\">\n";
+ os << "<img src=\"" << file_name << "\">";
return 0;
}
// For explanation on inserting graphics into DocBook checkout:
// http://en.tldp.org/LDP/LDP-Author-Guide/inserting-pictures.html
// See also the docbook guide at http://www.docbook.org/
-int InsetGraphics::docbook(Buffer const *, ostream & os,
+int InsetGraphics::docbook(Buffer const &, ostream & os,
bool /*mixcont*/) const
{
// In DocBook v5.0, the graphic tag will be eliminated from DocBook, will
if (params().filename.empty())
return;
- features.includeFile(graphic_label, RemoveExtension(params().filename));
+ features.includeFile(graphic_label,
+ RemoveExtension(params().filename.absFilename()));
features.require("graphicx");
}
-BufferView * InsetGraphics::view() const
-{
- return graphic_->view();
-}
-
-
string const InsetGraphicsMailer::name_("graphics");
InsetGraphicsMailer::InsetGraphicsMailer(InsetGraphics & inset)
{}
-string const InsetGraphicsMailer::inset2string() const
+string const InsetGraphicsMailer::inset2string(Buffer const & buffer) const
{
- BufferView * bv = inset_.view();
- if (bv)
- return params2string(inset_.params(), bv->buffer()->filePath());
- return string();
+ return params2string(inset_.params(), buffer);
}
void InsetGraphicsMailer::string2params(string const & in,
- string const & buffer_path,
- InsetGraphicsParams & params)
+ Buffer const & buffer,
+ InsetGraphicsParams & params)
{
params = InsetGraphicsParams();
if (lex.isOK()) {
InsetGraphics inset;
- inset.readInsetGraphics(lex, buffer_path);
+ inset.readInsetGraphics(lex, buffer.filePath());
params = inset.params();
}
}
string const
InsetGraphicsMailer::params2string(InsetGraphicsParams const & params,
- string const & buffer_path)
+ Buffer const & buffer)
{
ostringstream data;
data << name_ << ' ';
- params.Write(data, buffer_path);
+ params.Write(data, buffer.filePath());
data << "\\end_inset\n";
return STRCONV(data.str());
}