+//
+// preview stuff
+//
+
+namespace {
+
+bool preview_wanted(InsetExternalParams const & params)
+{
+ return params.display == external::PreviewDisplay &&
+ support::isFileReadable(params.filename);
+}
+
+
+docstring const latex_string(InsetExternal const & inset, Buffer const & buffer)
+{
+ odocstringstream os;
+ OutputParams runparams;
+ runparams.flavor = OutputParams::LATEX;
+ inset.latex(buffer, os, runparams);
+ return os.str();
+}
+
+
+void add_preview_and_start_loading(RenderMonitoredPreview & renderer,
+ InsetExternal const & inset,
+ Buffer const & buffer)
+{
+ InsetExternalParams const & params = inset.params();
+
+ if (RenderPreview::status() != LyXRC::PREVIEW_OFF &&
+ preview_wanted(params)) {
+ renderer.setAbsFile(params.filename);
+ docstring const snippet = latex_string(inset, buffer);
+ renderer.addPreview(snippet, buffer);
+ renderer.startLoading(buffer);
+ }
+}
+
+} // namespace anon
+
+
+void InsetExternal::addPreview(graphics::PreviewLoader & ploader) const
+{
+ RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview();
+ if (!ptr)
+ return;
+
+ if (preview_wanted(params())) {
+ ptr->setAbsFile(params_.filename);
+ docstring const snippet = latex_string(*this, ploader.buffer());
+ ptr->addPreview(snippet, ploader);
+ }
+}
+
+
+/// Mailer stuff
+