#include <config.h>
-
#include "insets/insetgraphics.h"
#include "insets/insetgraphicsParams.h"
#include "graphics/GraphicsParams.h"
#include "lyxtext.h"
+#include "dimension.h"
#include "buffer.h"
#include "BufferView.h"
#include "converter.h"
#include "funcrequest.h"
#include "gettext.h"
#include "LaTeXFeatures.h"
+#include "latexrunparams.h"
+#include "Lsstream.h"
#include "lyxlex.h"
#include "lyxrc.h"
-#include "frontends/lyx_gui.h"
+#include "Lsstream.h"
+#include "frontends/lyx_gui.h"
#include "frontends/Alert.h"
#include "frontends/Dialogs.h"
#include "frontends/font_metrics.h"
#include "support/lyxalgo.h" // lyx::count
#include "support/lyxlib.h" // float_equal
#include "support/path.h"
+#include "support/tostr.h"
#include "support/systemcall.h"
#include "support/os.h"
+#include "support/lstrings.h"
#include <boost/weak_ptr.hpp>
#include <boost/bind.hpp>
#include <boost/signals/trackable.hpp>
-#include "support/BoostFormat.h"
#include <algorithm> // For the std::max
extern string system_tempdir;
// set by Exporters
-extern bool pdf_mode;
using std::ostream;
using std::endl;
string const uniqueID()
{
static unsigned int seed = 1000;
-
- ostringstream ost;
- ost << "graph" << ++seed;
-
- // Needed if we use lyxstring.
- return STRCONV(ost.str());
+ return "graph" + tostr(++seed);
}
-string findTargetFormat(string const & suffix)
+string findTargetFormat(string const & suffix, LatexRunParams const & runparams)
{
- // pdf_mode means:
- // Are we creating a PDF or a PS file?
- // (Should actually mean, are we using latex or pdflatex).
- if (pdf_mode) {
+ // Are we using latex or pdflatex).
+ if (runparams.flavor == LatexRunParams::PDFLATEX) {
lyxerr[Debug::GRAPHICS] << "findTargetFormat: PDF mode\n";
if (contains(suffix, "ps") || suffix == "pdf")
return "pdf";
dispatch_result InsetGraphics::localDispatch(FuncRequest const & cmd)
{
- dispatch_result result = UNDISPATCHED;
-
switch (cmd.action) {
case LFUN_INSET_MODIFY: {
InsetGraphicsParams p;
InsetGraphicsMailer::string2params(cmd.argument, p);
- if (p.filename.empty())
- break;
-
- string const filepath = cmd.view()->buffer()->filePath();
- setParams(p, filepath);
- cmd.view()->updateInset(this);
- result = DISPATCHED;
+ if (!p.filename.empty()) {
+ string const filepath = cmd.view()->buffer()->filePath();
+ setParams(p, filepath);
+ cmd.view()->updateInset(this);
+ }
+ return DISPATCHED;
}
- break;
- case LFUN_INSET_DIALOG_UPDATE: {
- InsetGraphicsMailer mailer(*this);
- mailer.updateDialog(cmd.view());
- }
- break;
+ case LFUN_INSET_DIALOG_UPDATE:
+ InsetGraphicsMailer(*this).updateDialog(cmd.view());
+ return DISPATCHED;
+ case LFUN_INSET_EDIT:
case LFUN_MOUSE_RELEASE:
- edit(cmd.view(), cmd.x, cmd.y, cmd.button());
- break;
+ InsetGraphicsMailer(*this).showDialog(cmd.view());
+ return DISPATCHED;
default:
- result = DISPATCHED;
- break;
+ return Inset::localDispatch(cmd);
}
-
- return result;
}
}
-int InsetGraphics::ascent(BufferView *, LyXFont const &) const
+void InsetGraphics::dimension(BufferView *, LyXFont const & font,
+ Dimension & dim) const
{
cache_->old_ascent = 50;
if (imageIsDrawable())
cache_->old_ascent = cache_->loader.image()->getHeight();
- return cache_->old_ascent;
-}
-
-
-int InsetGraphics::descent(BufferView *, LyXFont const &) const
-{
- return 0;
-}
-
-
-int InsetGraphics::width(BufferView *, LyXFont const & font) const
-{
+ dim.a = cache_->old_ascent;
+ dim.d = 0;
if (imageIsDrawable())
- return cache_->loader.image()->getWidth() + 2 * TEXT_TO_INSET_OFFSET;
+ dim.w = cache_->loader.image()->getWidth() + 2 * TEXT_TO_INSET_OFFSET;
+ else {
+ int font_width = 0;
- int font_width = 0;
+ LyXFont msgFont(font);
+ msgFont.setFamily(LyXFont::SANS_FAMILY);
- LyXFont msgFont(font);
- msgFont.setFamily(LyXFont::SANS_FAMILY);
+ string const justname = OnlyFilename(params().filename);
+ if (!justname.empty()) {
+ msgFont.setSize(LyXFont::SIZE_FOOTNOTE);
+ font_width = font_metrics::width(justname, msgFont);
+ }
- string const justname = OnlyFilename (params().filename);
- if (!justname.empty()) {
- msgFont.setSize(LyXFont::SIZE_FOOTNOTE);
- font_width = font_metrics::width(justname, msgFont);
- }
+ string const msg = statusMessage();
+ if (!msg.empty()) {
+ msgFont.setSize(LyXFont::SIZE_TINY);
+ font_width = std::max(font_width, font_metrics::width(msg, msgFont));
+ }
- string const msg = statusMessage();
- if (!msg.empty()) {
- msgFont.setSize(LyXFont::SIZE_TINY);
- int const msg_width = font_metrics::width(msg, msgFont);
- font_width = std::max(font_width, msg_width);
+ dim.w = std::max(50, font_width + 15);
}
-
- return std::max(50, font_width + 15);
}
}
-void InsetGraphics::edit(BufferView * bv, int, int, mouse_button::state)
-{
- InsetGraphicsMailer mailer(*this);
- mailer.showDialog(bv);
-}
-
-
-void InsetGraphics::edit(BufferView * bv, bool)
-{
- edit(bv, 0, 0, mouse_button::none);
-}
-
-
Inset::EDITABLE InsetGraphics::editable() const
{
return IS_EDITABLE;
}
-string const InsetGraphics::prepareFile(Buffer const * buf) const
+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 const from = getExtFromContents(orig_file_with_path);
- string const to = findTargetFormat(from);
+ string const to = findTargetFormat(from, runparams);
lyxerr[Debug::GRAPHICS]
<< "\t we have: from " << from << " to " << to << '\n';
<< temp_file
<< (success ? " succeeded\n" : " failed\n");
if (!success) {
-#if USE_BOOST_FORMAT
- boost::format fmt(_("Could not copy the file\n%1$s\ninto the temporary directory."));
- fmt % orig_file_with_path;
- string str = fmt.str();
-#else
- string str = _("Could not copy the file\n");
- str += orig_file_with_path;
- str += _("\ninto the temporary directory.");
-#endif
+ string str = bformat(_("Could not copy the file\n%1$s\n"
+ "into the temporary directory."), orig_file_with_path);
Alert::error(_("Graphics display failed"), str);
return orig_file;
}
Systemcall one;
one.startscript(Systemcall::Wait, command);
if (!IsFileReadable(ChangeExtension(outfile_base, to))) {
-#if USE_BOOST_FORMAT
- boost::format fmt(_("No information for converting %1$s format files to %1$s.\n"
- "Try defining a convertor in the preferences."));
- fmt % from % to;
- string str = fmt.str();
-#else
- string str = _("No information for converting ");
- str += from + _(" format files to ") + to;
- str += _(".\nTry defining a convertor in the preferences.");
-#endif
+ string str = bformat(_("No information for converting %1$s "
+ "format files to %1$s.\n"
+ "Try defining a convertor in the preferences."), from, to);
Alert::error(_("Could not convert image"), str);
}
}
int InsetGraphics::latex(Buffer const * buf, ostream & os,
- bool /*fragile*/, bool/*fs*/) const
+ LatexRunParams const & runparams) const
{
// If there is no file specified or not existing,
// just output a message about it in the latex output.
// "nice" means that the buffer is exported to LaTeX format but not
// run through the LaTeX compiler.
- if (buf->niceFile) {
+ if (runparams.nice) {
os << before <<'{' << params().filename << '}' << after;
return 1;
}
// and remove the extension so the LaTeX will use whatever is
// appropriate (when there are several versions in different formats)
string const latex_str = message.empty() ?
- (before + '{' + os::external_path(prepareFile(buf)) + '}' + after) :
+ (before + '{' + os::external_path(prepareFile(buf, runparams)) + '}' + after) :
(before + '{' + params().filename + " not found!}" + after);
os << latex_str;
// 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
-#if USE_BOOST_FORMAT
- os << '<'
- << boost::format(_("Graphics file: %1$s")) % params().filename
- << ">\n";
-#else
- os << '<'
- << _("Graphics file: ") << params().filename
- << ">\n";
-#endif
+ os << '<' << bformat(_("Graphics file: %1$s"), params().filename) << ">\n";
return 0;
}
if (in.empty())
return;
- istringstream data(in);
+ istringstream data(STRCONV(in));
LyXLex lex(0,0);
lex.setStream(data);
data << name_ << ' ';
params.Write(data);
data << "\\end_inset\n";
-
- return data.str();
+ return STRCONV(data.str());
}