/// Note that \p format may be unknown (i. e. an empty string)
string findTargetFormat(string const & format, OutputParams const & runparams)
{
- // Are we using latex or XeTeX/pdflatex?
+ // Are we using latex or XeTeX/LuaTeX/pdflatex?
if (runparams.flavor == OutputParams::PDFLATEX
- || runparams.flavor == OutputParams::XETEX) {
+ || runparams.flavor == OutputParams::XETEX
+ || runparams.flavor == OutputParams::LUATEX) {
LYXERR(Debug::GRAPHICS, "findTargetFormat: PDF mode");
Format const * const f = formats.getFormat(format);
// Convert vector graphics to pdf
if (f && f->vectorFormat())
- return "pdf";
+ return "pdf6";
// pdflatex can use jpeg, png and pdf directly
if (format == "jpg")
return format;
}
case LFUN_INSET_MODIFY: {
+ if (cmd.getArg(0) != "graphics") {
+ Inset::doDispatch(cur, cmd);
+ break;
+ }
+
InsetGraphicsParams p;
string2params(to_utf8(cmd.argument()), buffer(), p);
if (p.filename.empty()) {
break;
}
+ cur.recordUndo();
setParams(p);
// if the inset is part of a graphics group, all the
// other members should be updated too.
FuncStatus & flag) const
{
switch (cmd.action()) {
- case LFUN_INSET_EDIT:
case LFUN_INSET_MODIFY:
+ if (cmd.getArg(0) != "graphics")
+ return Inset::getStatus(cur, cmd, flag);
+ // fall through
+ case LFUN_INSET_EDIT:
case LFUN_INSET_DIALOG_UPDATE:
case LFUN_GRAPHICS_RELOAD:
flag.setEnabled(true);
string const file_in = file.absFileName();
string const only_path = onlyPath(file_in);
if (rtrim(onlyPath(file_in) , "/") == rtrim(dir, "/"))
- return make_pair(IDENTICAL_PATHS, file_in);
+ return make_pair(IDENTICAL_PATHS, FileName(file_in));
string mangled = file.mangledFileName();
- if (file.isZipped()) {
+ if (formats.isZippedFile(file)) {
// We need to change _eps.gz to .eps.gz. The mangled name is
// still unique because of the counter in mangledFileName().
// We can't just call mangledFileName() with the zip
params().filename.outputFileName(masterBuffer->filePath()) :
onlyFileName(temp_file.absFileName());
- if (runparams.nice && !isValidLaTeXFileName(output_file)) {
- frontend::Alert::warning(_("Invalid filename"),
- _("The following filename is likely to cause trouble "
- "when running the exported file through LaTeX: ") +
- from_utf8(output_file));
+ if (runparams.nice) {
+ if (!isValidLaTeXFileName(output_file)) {
+ frontend::Alert::warning(_("Invalid filename"),
+ _("The following filename will cause troubles "
+ "when running the exported file through LaTeX: ") +
+ from_utf8(output_file));
+ }
+ // only show DVI-specific warning when export format is plain latex
+ if (!isValidDVIFileName(output_file)
+ && runparams.flavor == OutputParams::LATEX) {
+ frontend::Alert::warning(_("Problematic filename for DVI"),
+ _("The following filename can cause troubles "
+ "when running the exported file through LaTeX "
+ "and opening the resulting DVI: ") +
+ from_utf8(output_file), true);
+ }
}
FileName source_file = runparams.nice ? FileName(params().filename) : temp_file;
- string const tex_format = (runparams.flavor == OutputParams::LATEX) ?
- "latex" : "pdflatex";
+ // determine the export format
+ string const tex_format = flavor2format(runparams.flavor);
// If the file is compressed and we have specified that it
// should not be uncompressed, then just return its name and
// let LaTeX do the rest!
- if (params().filename.isZipped()) {
+ if (formats.isZippedFile(params().filename)) {
if (params().noUnzip) {
// We don't know whether latex can actually handle
// this file, but we can't check, because that would
}
-int InsetGraphics::latex(odocstream & os,
- OutputParams const & runparams) const
+void InsetGraphics::latex(otexstream & os,
+ OutputParams const & runparams) const
{
// If there is no file specified or not existing,
// just output a message about it in the latex output.
bool const file_exists = !params().filename.empty()
&& params().filename.isReadableFile();
- string const message = file_exists ?
- string() : string("bb = 0 0 200 100, draft, type=eps");
- // if !message.empty() then there was no existing file
- // "filename" found. In this case LaTeX
+ string message;
+ if (!file_exists) {
+ if (params().bb.empty())
+ message = "bb = 0 0 200 100";
+ if (!params().draft) {
+ if (!message.empty())
+ message += ", ";
+ message += "draft";
+ }
+ if (!message.empty())
+ message += ", ";
+ message += "type=eps";
+ }
+ // If no existing file "filename" was found LaTeX
// draws only a rectangle with the above bb and the
// not found filename in it.
LYXERR(Debug::GRAPHICS, "\tMessage = \"" << message << '\"');
// Convert the file if necessary.
// Remove the extension so LaTeX will use whatever is appropriate
// (when there are several versions in different formats)
- latex_str += prepareFile(runparams);
+ string file_path = prepareFile(runparams);
+ latex_str += file_path;
latex_str += '}' + after;
// FIXME UNICODE
os << from_utf8(latex_str);
LYXERR(Debug::GRAPHICS, "InsetGraphics::latex outputting:\n" << latex_str);
- // Return how many newlines we issued.
- return int(count(latex_str.begin(), latex_str.end(),'\n'));
}
-int InsetGraphics::plaintext(odocstream & os, OutputParams const &) const
+int InsetGraphics::plaintext(odocstringstream & os,
+ OutputParams const &, size_t) const
{
// No graphics in ascii output. Possible to use gifscii to convert
// images to ascii approximation.
docstring InsetGraphics::xhtml(XHTMLStream & xs, OutputParams const & op) const
{
string const output_file = prepareHTMLFile(op);
+
if (output_file.empty()) {
LYXERR0("InsetGraphics::xhtml: Unable to prepare file `"
<< params().filename << "' for output. File missing?");
}
// FIXME XHTML
- // Do we want to do something with the parameters, other than use them to
- // crop, etc, the image?
- // Speaking of which: Do the cropping, rotating, etc.
- string const attr = "src='" + output_file + "' alt='image: "
+ // We aren't doing anything with the crop and rotate parameters, and it would
+ // really be better to do width and height conversion, rather than to output
+ // these parameters here.
+ string imgstyle;
+ if (!params().width.zero())
+ imgstyle += "width:" + params().width.asHTMLString() + ";";
+ if (!params().height.zero())
+ imgstyle += " height:" + params().height.asHTMLString() + ";";
+ if (!imgstyle.empty())
+ imgstyle = "style='" + imgstyle + "' ";
+
+ string const attr = imgstyle + "src='" + output_file + "' alt='image: "
+ output_file + "'";
xs << html::CompTag("img", attr);
return docstring();
features.require("graphicx");
if (features.runparams().nice) {
- Buffer const * masterBuffer = features.buffer().masterBuffer();
- string const rel_file = removeExtension(
- params().filename.relFileName(masterBuffer->filePath()));
+ string const rel_file = params().filename.onlyFileNameWithoutExt();
if (contains(rel_file, "."))
features.require("lyxdot");
}
}
-void InsetGraphics::addToToc(DocIterator const & cpit)
+void InsetGraphics::addToToc(DocIterator const & cpit, bool output_active) const
{
- TocBackend & backend = buffer().tocBackend();
-
//FIXME UNICODE
docstring const str = from_utf8(params_.filename.onlyFileName());
- backend.toc("graphics").push_back(TocItem(cpit, 0, str));
+ buffer().tocBackend().toc("graphics").push_back(TocItem(cpit, 0, str, output_active));
}
-docstring InsetGraphics::contextMenu(BufferView const &, int, int) const
+string InsetGraphics::contextMenuName() const
{
- return from_ascii("context-graphics");
+ return "context-graphics";
}
return data.str();
}
+
+docstring InsetGraphics::toolTip(BufferView const &, int, int) const
+{
+ return from_utf8(params().filename.onlyFileName());
+}
+
namespace graphics {
void getGraphicsGroups(Buffer const & b, set<string> & ids)
InsetGraphics & ins = static_cast<InsetGraphics &>(*it);
InsetGraphicsParams inspar = ins.getParams();
if (params.groupId == inspar.groupId) {
- b.undo().recordUndo(it);
+ b.undo().recordUndo(CursorData(it));
params.filename = inspar.filename;
ins.setParams(params);
}