* 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 "Format.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
+#include "InsetIterator.h"
#include "LaTeXFeatures.h"
#include "Length.h"
#include "Lexer.h"
#include "OutputParams.h"
#include "sgml.h"
#include "TocBackend.h"
-#include "InsetIterator.h"
#include "frontends/alert.h"
#include "frontends/Application.h"
#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:
case LFUN_INSET_EDIT:
case LFUN_INSET_MODIFY:
case LFUN_INSET_DIALOG_UPDATE:
- flag.enabled(true);
+ flag.setEnabled(true);
return true;
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.
}
-void InsetGraphics::addToToc(ParConstIterator const & cpit) const
+void InsetGraphics::addToToc(DocIterator const & cpit)
{
TocBackend & backend = buffer().tocBackend();
return data.str();
}
+namespace graphics {
-void InsetGraphics::getGraphicsGroups(Buffer const & b, std::set<string> & ids)
+void getGraphicsGroups(Buffer const & b, set<string> & ids)
{
Inset & inset = b.inset();
InsetIterator it = inset_iterator_begin(inset);
if (it->lyxCode() == GRAPHICS_CODE) {
InsetGraphics & ins = static_cast<InsetGraphics &>(*it);
InsetGraphicsParams inspar = ins.getParams();
- if (!inspar.groupId.empty()) {
+ if (!inspar.groupId.empty())
ids.insert(inspar.groupId);
- }
}
}
-string InsetGraphics::getGroupParams(Buffer const & b, std::string const & groupId)
+int countGroupMembers(Buffer const & b, string const & groupId)
{
- if (groupId.empty()) return string();
+ 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())
+ return string();
Inset & inset = b.inset();
InsetIterator it = inset_iterator_begin(inset);
InsetIterator const end = inset_iterator_end(inset);
if (inspar.groupId == groupId) {
InsetGraphicsParams tmp = inspar;
tmp.filename.erase();
- return params2string(tmp, b);
+ return InsetGraphics::params2string(tmp, b);
}
}
return string();
}
-void InsetGraphics::unifyGraphicsGroups(Buffer const & b, std::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();
}
-InsetGraphics * InsetGraphics::getCurrentGraphicsInset(Cursor const & cur)
+InsetGraphics * getCurrentGraphicsInset(Cursor const & cur)
{
Inset * instmp = &cur.inset();
- if (instmp->lyxCode() != GRAPHICS_CODE) instmp = cur.nextInset();
- if (!instmp || instmp->lyxCode() != GRAPHICS_CODE) return 0;
+ if (instmp->lyxCode() != GRAPHICS_CODE)
+ instmp = cur.nextInset();
+ if (!instmp || instmp->lyxCode() != GRAPHICS_CODE)
+ return 0;
- InsetGraphics & ins = static_cast<InsetGraphics &>(*instmp);
- return &ins;
+ return static_cast<InsetGraphics *>(instmp);
}
+} // namespace graphics
+
} // namespace lyx