* Licence details can be found in the file COPYING.
*
* \author Baruch Even
- * \author Herbert Voß
+ * \author Herbert Voß
*
* Full author contact details are available in file CREDITS.
*/
#include "support/os.h"
#include "support/Systemcall.h"
-#include <boost/bind.hpp>
#include <boost/tuple/tuple.hpp>
#include <algorithm>
/// 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 pdflatex?
- if (runparams.flavor == OutputParams::PDFLATEX) {
+ // Are we using latex or XeTeX/pdflatex?
+ if (runparams.flavor == OutputParams::PDFLATEX
+ || runparams.flavor == OutputParams::XETEX) {
LYXERR(Debug::GRAPHICS, "findTargetFormat: PDF mode");
Format const * const f = formats.getFormat(format);
// Convert vector graphics to pdf
InsetGraphics::InsetGraphics(InsetGraphics const & ig)
: Inset(ig),
- boost::signals::trackable(),
- graphic_label(sgml::uniqueID(from_ascii("graph"))),
+ graphic_label(sgml::uniqueID(from_ascii("graph"))),
graphic_(new RenderGraphic(*ig.graphic_, this))
{
setParams(ig.params());
InsetGraphics::~InsetGraphics()
{
hideDialogs("graphics", this);
+ delete graphic_;
}
case LFUN_INSET_MODIFY: {
InsetGraphicsParams p;
string2params(to_utf8(cmd.argument()), buffer(), p);
- if (!p.filename.empty())
- setParams(p);
- else
+ if (p.filename.empty()) {
cur.noUpdate();
+ break;
+ }
+
+ setParams(p);
+ // if the inset is part of a graphics group, all the
+ // other members should be updated too.
+ if (!params_.groupId.empty())
+ graphics::unifyGraphicsGroups(buffer(),
+ to_utf8(cmd.argument()));
break;
}
case LFUN_INSET_DIALOG_UPDATE:
- cur.bv().updateDialog("graphics", params2string(params(),
- cur.bv().buffer()));
- break;
-
- case LFUN_MOUSE_RELEASE:
- if (!cur.selection() && cmd.button() == mouse_button::button1)
- cur.bv().showDialog("graphics", params2string(params(),
- cur.bv().buffer()), this);
+ cur.bv().updateDialog("graphics", params2string(params(), buffer()));
break;
default:
}
-void InsetGraphics::edit(Cursor & cur, bool, EntryDirection)
+bool InsetGraphics::showInsetDialog(BufferView * bv) const
{
- cur.bv().showDialog("graphics", params2string(params(),
- cur.bv().buffer()), this);
+ bv->showDialog("graphics", params2string(params(), bv->buffer()),
+ const_cast<InsetGraphics *>(this));
+ return true;
}
+
void InsetGraphics::metrics(MetricsInfo & mi, Dimension & dim) const
{
graphic_->metrics(mi, dim);
}
-Inset::EDITABLE InsetGraphics::editable() const
-{
- return IS_EDITABLE;
-}
-
-
void InsetGraphics::write(ostream & os) const
{
os << "Graphics\n";
LYXERR(Debug::GRAPHICS, "\tthe orig file is: " << orig_file);
if (from == to) {
- if (!runparams.nice && getExtension(temp_file.absFilename()) != ext) {
+ if (!runparams.nice && !FileName(temp_file).hasExtension(ext)) {
// The LaTeX compiler will not be able to determine
// the file format from the extension, so we must
// change it.
}
+int countGroupMembers(Buffer const & b, string const & groupId)
+{
+ int n = 0;
+ if (groupId.empty())
+ return n;
+ Inset & inset = b.inset();
+ InsetIterator it = inset_iterator_begin(inset);
+ InsetIterator const end = inset_iterator_end(inset);
+ for (; it != end; ++it)
+ if (it->lyxCode() == GRAPHICS_CODE) {
+ InsetGraphics & ins = static_cast<InsetGraphics &>(*it);
+ if (ins.getParams().groupId == groupId)
+ ++n;
+ }
+ return n;
+}
+
+
string getGroupParams(Buffer const & b, string const & groupId)
{
if (groupId.empty())
}
-void unifyGraphicsGroups(Buffer const & b, string const & argument)
+void unifyGraphicsGroups(Buffer & b, string const & argument)
{
InsetGraphicsParams params;
InsetGraphics::string2params(argument, b, params);
+ b.undo().beginUndoGroup();
Inset & inset = b.inset();
InsetIterator it = inset_iterator_begin(inset);
InsetIterator const end = inset_iterator_end(inset);
InsetGraphics & ins = static_cast<InsetGraphics &>(*it);
InsetGraphicsParams inspar = ins.getParams();
if (params.groupId == inspar.groupId) {
+ b.undo().recordUndo(it);
params.filename = inspar.filename;
ins.setParams(params);
}
}
}
-
+ b.undo().endUndoGroup();
}