X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetExternal.cpp;h=426aee5891405250b8e60c1359ab10d540d51615;hb=12c7e7dde3851ad894380fd42ba741dd3d0cbcc7;hp=1fafc96a6e26500e353513de873a7ebf9f63969b;hpb=8195925175605a47d55f53a4d313ccf48a6b29d1;p=lyx.git diff --git a/src/insets/InsetExternal.cpp b/src/insets/InsetExternal.cpp index 1fafc96a6e..426aee5891 100644 --- a/src/insets/InsetExternal.cpp +++ b/src/insets/InsetExternal.cpp @@ -29,6 +29,7 @@ #include "LyXRC.h" #include "MetricsInfo.h" #include "OutputParams.h" +#include "output_latex.h" #include "frontends/alert.h" #include "frontends/Application.h" @@ -44,7 +45,7 @@ #include "support/lyxlib.h" #include "support/Translator.h" -#include +#include "support/bind.h" #include @@ -70,7 +71,7 @@ TempName::TempName() { FileName const tempname = FileName::tempName("lyxext"); // must have an extension for the converter code to work correctly. - tempname_ = FileName(tempname.absFilename() + ".tmp"); + tempname_ = FileName(tempname.absFileName() + ".tmp"); } @@ -104,7 +105,8 @@ InsetExternalParams::InsetExternalParams() if (defaultTemplateName.empty()) { external::TemplateManager const & etm = external::TemplateManager::get(); - templatename_ = etm.getTemplates().begin()->first; + if (!etm.getTemplates().empty()) + templatename_ = etm.getTemplates().begin()->first; } else templatename_ = defaultTemplateName; } @@ -159,7 +161,7 @@ void InsetExternalParams::write(Buffer const & buf, ostream & os) const << "\ttemplate " << templatename() << '\n'; if (!filename.empty()) - os << "\tfilename " << filename.outputFilename(buf.filePath()) << '\n'; + os << "\tfilename " << filename.outputFileName(buf.filePath()) << '\n'; if (!display) os << "\tdisplay false\n"; @@ -363,13 +365,13 @@ bool InsetExternalParams::read(Buffer const & buffer, Lexer & lex) } -InsetExternal::InsetExternal(Buffer & buf) - : renderer_(new RenderButton) +InsetExternal::InsetExternal(Buffer * buf) + : Inset(buf), renderer_(new RenderButton) { - Inset::setBuffer(buf); } +// Mouse hover is not copied and remains empty InsetExternal::InsetExternal(InsetExternal const & other) : Inset(other), boost::signals::trackable(), @@ -381,6 +383,19 @@ InsetExternal::InsetExternal(InsetExternal const & other) InsetExternal::~InsetExternal() { hideDialogs("external", this); + + map::iterator it = mouse_hover_.begin(); + map::iterator end = mouse_hover_.end(); + for (; it != end; ++it) + if (it->second) + it->first->clearLastInset(this); +} + + +bool InsetExternal::setMouseHover(BufferView const * bv, bool mouse_hover) +{ + mouse_hover_[bv] = mouse_hover; + return true; } @@ -392,7 +407,7 @@ void InsetExternal::statusChanged() const void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd) { - switch (cmd.action) { + switch (cmd.action()) { case LFUN_INSET_EDIT: { InsetExternalParams p = params(); @@ -414,13 +429,6 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd) params2string(params(), cur.bv().buffer())); break; - case LFUN_MOUSE_RELEASE: - if (!cur.selection() && cmd.button() == mouse_button::button1) - cur.bv().showDialog("external", - params2string(params(), cur.bv().buffer()), - this); - break; - default: Inset::doDispatch(cur, cmd); } @@ -430,7 +438,7 @@ void InsetExternal::doDispatch(Cursor & cur, FuncRequest & cmd) bool InsetExternal::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & flag) const { - switch (cmd.action) { + switch (cmd.action()) { case LFUN_INSET_EDIT: case LFUN_INSET_MODIFY: @@ -444,11 +452,11 @@ bool InsetExternal::getStatus(Cursor & cur, FuncRequest const & cmd, } -void InsetExternal::edit(Cursor & cur, bool, EntryDirection) +bool InsetExternal::showInsetDialog(BufferView * bv) const { - cur.bv().showDialog("external", - params2string(params(), cur.bv().buffer()), - this); + bv->showDialog("external", params2string(params(), bv->buffer()), + const_cast(this)); + return true; } @@ -460,6 +468,8 @@ void InsetExternal::metrics(MetricsInfo & mi, Dimension & dim) const void InsetExternal::draw(PainterInfo & pi, int x, int y) const { + if (renderer_->asButton()) + renderer_->setRenderState(mouse_hover_[pi.base.bv]); renderer_->draw(pi, x, y); } @@ -539,6 +549,12 @@ InsetExternalParams const & InsetExternal::params() const } +void InsetExternal::updatePreview() +{ + setParams(params_); +} + + void InsetExternal::setParams(InsetExternalParams const & p) { params_ = p; @@ -571,7 +587,7 @@ void InsetExternal::setParams(InsetExternalParams const & p) RenderMonitoredPreview * preview_ptr = renderer_->asMonitoredPreview(); renderer_.reset(new RenderMonitoredPreview(this)); preview_ptr = renderer_->asMonitoredPreview(); - preview_ptr->fileChanged(boost::bind(&InsetExternal::fileChanged, this)); + preview_ptr->fileChanged(bind(&InsetExternal::fileChanged, this)); if (preview_ptr->monitoring()) preview_ptr->stopMonitoring(); add_preview_and_start_loading(*preview_ptr, *this, buffer()); @@ -623,7 +639,7 @@ int InsetExternal::latex(odocstream & os, OutputParams const & runparams) const if (params_.draft) { // FIXME UNICODE os << "\\fbox{\\ttfamily{}" - << from_utf8(params_.filename.outputFilename(buffer().filePath())) + << from_utf8(params_.filename.outputFileName(buffer().filePath())) << "}\n"; return 1; } @@ -683,6 +699,16 @@ int InsetExternal::docbook(odocstream & os, } +docstring InsetExternal::xhtml(XHTMLStream & /*xs*/, + OutputParams const & /*rp*/) const +{ +// external::writeExternal(params_, "XHTML", buffer(), os, +// *(runparams.exportdata), false, +// runparams.dryrun || runparams.inComment); + return docstring(); +} + + void InsetExternal::validate(LaTeXFeatures & features) const { if (params_.draft) @@ -700,11 +726,18 @@ void InsetExternal::validate(LaTeXFeatures & features) const format = "LaTeX"; break; case OutputParams::PDFLATEX: + case OutputParams::XETEX: format = "PDFLaTeX"; break; case OutputParams::XML: format = "DocBook"; break; + case OutputParams::HTML: + format = "html"; + break; + case OutputParams::TEXT: + format = "text"; + break; } external::Template::Formats::const_iterator cit = et.formats.find(format); @@ -740,7 +773,8 @@ void InsetExternal::validate(LaTeXFeatures & features) const } -void InsetExternal::addPreview(graphics::PreviewLoader & ploader) const +void InsetExternal::addPreview(DocIterator const & /*inset_pos*/, + graphics::PreviewLoader & ploader) const { RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview(); if (!ptr)