X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetExternal.cpp;h=5e04597b3a8eb355ce315a7bb14d71ee6b6becc8;hb=06254d11dfdf670fab3548dc2a2674e7a261262c;hp=06733efdd9ebc48489fa656e37bdd5ed35c849e7;hpb=8c622e4ff04765c786cbe9ccc9824f4429aee4e7;p=lyx.git diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp index 06733efdd9..5e04597b3a 100644 --- a/src/insets/InsetExternal.cpp +++ b/src/insets/InsetExternal.cpp @@ -19,14 +19,13 @@ #include "Buffer.h" #include "Cursor.h" -#include "debug.h" +#include "support/debug.h" #include "DispatchResult.h" #include "Exporter.h" #include "FuncStatus.h" #include "FuncRequest.h" -#include "gettext.h" +#include "support/gettext.h" #include "LaTeXFeatures.h" -#include "LyX.h" #include "Lexer.h" #include "LyXRC.h" #include "MetricsInfo.h" @@ -44,14 +43,8 @@ #include -using std::endl; -using std::string; -using std::auto_ptr; -using std::istringstream; -using std::ostream; -using std::ostringstream; -using std::vector; - +using namespace std; +using namespace lyx::support; namespace { @@ -59,22 +52,24 @@ lyx::external::DisplayType const defaultDisplayType = lyx::external::NoDisplay; unsigned int const defaultLyxScale = 100; -string defaultTemplateName = "RasterImage"; +string defaultTemplateName; } // namespace anon namespace lyx { +extern bool use_gui; + namespace external { TempName::TempName() { - support::FileName const tempname(support::tempName(support::FileName(), "lyxext")); + FileName const tempname = FileName::tempName("lyxext"); // FIXME: This is unsafe - support::unlink(tempname); + tempname.removeFile(); // must have an extension for the converter code to work correctly. - tempname_ = support::FileName(tempname.absFilename() + ".tmp"); + tempname_ = FileName(tempname.absFilename() + ".tmp"); } @@ -86,12 +81,11 @@ TempName::TempName(TempName const &) TempName::~TempName() { - support::unlink(tempname_); + tempname_.removeFile(); } -TempName & -TempName::operator=(TempName const & other) +TempName & TempName::operator=(TempName const & other) { if (this != &other) tempname_ = TempName()(); @@ -132,9 +126,15 @@ Translator const & displayTranslator() InsetExternalParams::InsetExternalParams() : display(defaultDisplayType), lyxscale(defaultLyxScale), - draft(false), - templatename_(defaultTemplateName) -{} + draft(false) +{ + if (defaultTemplateName.empty()) { + external::TemplateManager const & etm = + external::TemplateManager::get(); + templatename_ = etm.getTemplates().begin()->first; + } else + templatename_ = defaultTemplateName; +} namespace { @@ -148,7 +148,7 @@ void clearIfNotFound(T & data, external::TransformID value, const_iterator it = ids.begin(); const_iterator end = ids.end(); - it = std::find(it, end, value); + it = find(it, end, value); if (it == end) data = T(); } @@ -183,9 +183,7 @@ void InsetExternalParams::write(Buffer const & buffer, ostream & os) const << "\ttemplate " << templatename() << '\n'; if (!filename.empty()) - os << "\tfilename " - << filename.outputFilename(buffer.filePath()) - << '\n'; + os << "\tfilename " << filename.outputFilename(buffer.filePath()) << '\n'; if (display != defaultDisplayType) os << "\tdisplay " @@ -219,7 +217,6 @@ void InsetExternalParams::write(Buffer const & buffer, ostream & os) const } if (!resizedata.no_resize()) { - using support::float_equal; double const scl = convert(resizedata.scale); if (!float_equal(scl, 0.0, 0.05)) { if (!float_equal(scl, 100.0, 0.05)) @@ -369,8 +366,7 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer & lex) break; default: - lex.printError("ExternalInset::read: " - "Wrong tag: $$Token"); + lex.printError("ExternalInset::read: Wrong tag: $$Token"); read_error = true; break; } @@ -400,16 +396,16 @@ InsetExternal::InsetExternal() InsetExternal::InsetExternal(InsetExternal const & other) - : InsetOld(other), + : Inset(other), boost::signals::trackable(), params_(other.params_), renderer_(other.renderer_->clone(this)) {} -auto_ptr InsetExternal::doClone() const +Inset * InsetExternal::clone() const { - return auto_ptr(new InsetExternal(*this)); + return new InsetExternal(*this); } @@ -421,7 +417,7 @@ InsetExternal::~InsetExternal() void InsetExternal::statusChanged() const { - LyX::cref().updateInset(this); + updateFrontend(); } @@ -450,11 +446,12 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd) break; case LFUN_MOUSE_RELEASE: - InsetExternalMailer(*this).showDialog(&cur.bv()); + if (!cur.selection()) + InsetExternalMailer(*this).showDialog(&cur.bv()); break; default: - InsetBase::doDispatch(cur, cmd); + Inset::doDispatch(cur, cmd); } } @@ -471,29 +468,33 @@ bool InsetExternal::getStatus(Cursor & cur, FuncRequest const & cmd, return true; default: - return InsetBase::getStatus(cur, cmd, flag); + return Inset::getStatus(cur, cmd, flag); } } +void InsetExternal::registerEmbeddedFiles(Buffer const &, + EmbeddedFiles & files) const +{ + // temporarily disable embedding for this inset + /* files.registerFile(params_.filename, this); */ +} + + void InsetExternal::edit(Cursor & cur, bool) { InsetExternalMailer(*this).showDialog(&cur.bv()); } -bool InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const +void InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const { renderer_->metrics(mi, dim); - bool const changed = dim_ != dim; - dim_ = dim; - return changed; } void InsetExternal::draw(PainterInfo & pi, int x, int y) const { - setPosCache(pi, x, y); renderer_->draw(pi, x, y); } @@ -557,7 +558,7 @@ graphics::Params get_grfx_params(InsetExternalParams const & eparams) BOOST_ASSERT(false); } if (gparams.display == graphics::DefaultDisplay) - gparams.display = lyxrc.display_graphics; + gparams.display = graphics::DisplayType(lyxrc.display_graphics); // Override the above if we're not using a gui if (!use_gui) gparams.display = graphics::NoDisplay; @@ -573,11 +574,12 @@ docstring const getScreenLabel(InsetExternalParams const & params, external::getTemplatePtr(params); if (!ptr) // FIXME UNICODE - return support::bformat((_("External template %1$s is not installed")), + return bformat((_("External template %1$s is not installed")), from_utf8(params.templatename())); // FIXME UNICODE + docstring gui = _(ptr->guiName); return from_utf8(external::doSubstitution(params, buffer, - ptr->guiName, false)); + to_utf8(gui), false)); } void add_preview_and_start_loading(RenderMonitoredPreview &, @@ -612,8 +614,9 @@ void InsetExternal::setParams(InsetExternalParams const & p, button_ptr->update(getScreenLabel(params_, buffer), true); break; + } - } case RENDERGRAPHIC: { + case RENDERGRAPHIC: { RenderGraphic * graphic_ptr = renderer_->asGraphic(); if (!graphic_ptr) { renderer_.reset(new RenderGraphic(this)); @@ -623,8 +626,9 @@ void InsetExternal::setParams(InsetExternalParams const & p, graphic_ptr->update(get_grfx_params(params_)); break; + } - } case RENDERPREVIEW: { + case RENDERPREVIEW: { RenderMonitoredPreview * preview_ptr = renderer_->asMonitoredPreview(); if (!preview_ptr) { @@ -646,16 +650,15 @@ void InsetExternal::setParams(InsetExternalParams const & p, void InsetExternal::fileChanged() const { - Buffer const * const buffer_ptr = LyX::cref().updateInset(this); - if (!buffer_ptr) + Buffer const * const buffer = updateFrontend(); + if (!buffer) return; RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview(); BOOST_ASSERT(ptr); - Buffer const & buffer = *buffer_ptr; - ptr->removePreview(buffer); - add_preview_and_start_loading(*ptr, *this, buffer); + ptr->removePreview(*buffer); + add_preview_and_start_loading(*ptr, *this, *buffer); } @@ -674,7 +677,7 @@ void InsetExternal::read(Buffer const & buffer, Lexer & lex) int InsetExternal::latex(Buffer const & buf, odocstream & os, - OutputParams const & runparams) const + OutputParams const & runparams) const { if (params_.draft) { // FIXME UNICODE @@ -705,37 +708,37 @@ int InsetExternal::latex(Buffer const & buf, odocstream & os, if (cit != et.formats.end()) { return external::writeExternal(params_, "PDFLaTeX", - buf, os, - *(runparams.exportdata), - external_in_tmpdir, - dryrun); - } + buf, os, + *(runparams.exportdata), + external_in_tmpdir, + dryrun); + } } return external::writeExternal(params_, "LaTeX", buf, os, - *(runparams.exportdata), - external_in_tmpdir, - dryrun); + *(runparams.exportdata), + external_in_tmpdir, + dryrun); } int InsetExternal::plaintext(Buffer const & buf, odocstream & os, - OutputParams const & runparams) const + OutputParams const & runparams) const { os << '\n'; // output external material on a new line external::writeExternal(params_, "Ascii", buf, os, - *(runparams.exportdata), false, - runparams.dryrun || runparams.inComment); + *(runparams.exportdata), false, + runparams.dryrun || runparams.inComment); return PLAINTEXT_NEWLINE; } int InsetExternal::docbook(Buffer const & buf, odocstream & os, - OutputParams const & runparams) const + OutputParams const & runparams) const { return external::writeExternal(params_, "DocBook", buf, os, *(runparams.exportdata), false, - runparams.dryrun || runparams.inComment); + runparams.dryrun || runparams.inComment); } @@ -796,7 +799,7 @@ namespace { bool preview_wanted(InsetExternalParams const & params) { return params.display == external::PreviewDisplay && - support::isFileReadable(params.filename); + params.filename.isReadableFile(); } @@ -877,7 +880,7 @@ void InsetExternalMailer::string2params(string const & in, return print_mailer_error("InsetExternalMailer", in, 1, name_); // This is part of the inset proper that is usually swallowed - // by LyXText::readInset + // by Text::readInset string id; lex >> id; if (!lex || id != "External")