]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetexternal.C
insetcharstyle drawing cosmetics
[lyx.git] / src / insets / insetexternal.C
index 9e27a11dfbf61ad910941d4e4c500b7fb1052788..b4548c62501c2d17680b1ce274221969e4645035 100644 (file)
@@ -22,6 +22,7 @@
 #include "cursor.h"
 #include "debug.h"
 #include "dispatchresult.h"
+#include "exporter.h"
 #include "funcrequest.h"
 #include "gettext.h"
 #include "LaTeXFeatures.h"
 #include "support/lyxlib.h"
 #include "support/tostr.h"
 #include "support/translator.h"
-#include "support/std_sstream.h"
 
 #include <boost/bind.hpp>
 
+#include <sstream>
 
 namespace support = lyx::support;
 namespace external = lyx::external;
@@ -410,18 +411,8 @@ InsetExternal::InsetExternal(InsetExternal const & other)
        : InsetOld(other),
          boost::signals::trackable(),
          params_(other.params_),
-         renderer_(other.renderer_->clone())
-{
-       if (renderer_->asMonitoredPreview() != 0) {
-               RenderMonitoredPreview * const ptr = renderer_->asMonitoredPreview();
-               ptr->connect(boost::bind(&InsetExternal::statusChanged, this));
-               ptr->fileChanged(boost::bind(&InsetExternal::fileChanged, this));
-
-       } else if (renderer_->asGraphic() != 0 ) {
-               RenderGraphic * const ptr = renderer_->asGraphic();
-               ptr->connect(boost::bind(&InsetExternal::statusChanged, this));
-       }
-}
+         renderer_(other.renderer_->clone(this))
+{}
 
 
 auto_ptr<InsetBase> InsetExternal::clone() const
@@ -442,12 +433,12 @@ void InsetExternal::statusChanged() const
 }
 
 
-void InsetExternal::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
+void InsetExternal::priv_dispatch(LCursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action) {
 
        case LFUN_EXTERNAL_EDIT: {
-               Buffer const & buffer = *cur.bv().buffer();
+               Buffer const & buffer = cur.buffer();
                InsetExternalParams p;
                InsetExternalMailer::string2params(cmd.argument, buffer, p);
                external::editExternal(p, buffer);
@@ -455,11 +446,10 @@ void InsetExternal::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
        }
 
        case LFUN_INSET_MODIFY: {
-               Buffer const & buffer = *cur.bv().buffer();
+               Buffer const & buffer = cur.buffer();
                InsetExternalParams p;
                InsetExternalMailer::string2params(cmd.argument, buffer, p);
                setParams(p, buffer);
-               cur.bv().update();
                break;
        }
 
@@ -472,7 +462,7 @@ void InsetExternal::priv_dispatch(LCursor & cur, FuncRequest const & cmd)
                break;
 
        default:
-               InsetOld::dispatch(cur, cmd);
+               InsetOld::priv_dispatch(cur, cmd);
        }
 }
 
@@ -514,7 +504,7 @@ RenderType getRenderType(InsetExternalParams const & p)
                return RENDERBUTTON;
 
        if (p.display == external::PreviewDisplay) {
-               if (RenderPreview::activated())
+               if (RenderPreview::status() != LyXRC::PREVIEW_OFF)
                        return RENDERPREVIEW;
                return RENDERBUTTON;
        }
@@ -576,7 +566,9 @@ string const getScreenLabel(InsetExternalParams const & params,
        return external::doSubstitution(params, buffer, ptr->guiName);
 }
 
-void add_preview(RenderMonitoredPreview &, InsetExternal const &, Buffer const &);
+void add_preview_and_start_loading(RenderMonitoredPreview &,
+                                  InsetExternal const &,
+                                  Buffer const &);
 
 } // namespace anon
 
@@ -610,10 +602,8 @@ void InsetExternal::setParams(InsetExternalParams const & p,
        } case RENDERGRAPHIC: {
                RenderGraphic * graphic_ptr = renderer_->asGraphic();
                if (!graphic_ptr) {
-                       renderer_.reset(new RenderGraphic);
+                       renderer_.reset(new RenderGraphic(this));
                        graphic_ptr = renderer_->asGraphic();
-                       graphic_ptr->connect(
-                               boost::bind(&InsetExternal::statusChanged, this));
                }
 
                graphic_ptr->update(get_grfx_params(params_));
@@ -624,17 +614,15 @@ void InsetExternal::setParams(InsetExternalParams const & p,
                RenderMonitoredPreview * preview_ptr =
                        renderer_->asMonitoredPreview();
                if (!preview_ptr) {
-                       renderer_.reset(new RenderMonitoredPreview);
+                       renderer_.reset(new RenderMonitoredPreview(this));
                        preview_ptr = renderer_->asMonitoredPreview();
-                       preview_ptr->connect(
-                               boost::bind(&InsetExternal::statusChanged, this));
                        preview_ptr->fileChanged(
                                boost::bind(&InsetExternal::fileChanged, this));
                }
 
                if (preview_ptr->monitoring())
                        preview_ptr->stopMonitoring();
-               add_preview(*preview_ptr, *this, buffer);
+               add_preview_and_start_loading(*preview_ptr, *this, buffer);
 
                break;
        }
@@ -653,8 +641,7 @@ void InsetExternal::fileChanged() const
 
        Buffer const & buffer = *buffer_ptr;
        ptr->removePreview(buffer);
-       add_preview(*ptr, *this, buffer);
-       ptr->startLoading(buffer);
+       add_preview_and_start_loading(*ptr, *this, buffer);
 }
 
 
@@ -701,32 +688,37 @@ int InsetExternal::latex(Buffer const & buf, ostream & os,
                        et.formats.find("PDFLaTeX");
                if (cit != et.formats.end())
                        return external::writeExternal(params_, "PDFLaTeX",
-                                            buf, os, external_in_tmpdir);
+                                                      buf, os,
+                                                      *(runparams.exportdata),
+                                                      external_in_tmpdir);
        }
-
-       return external::writeExternal(params_, "LaTeX",
-                                      buf, os, external_in_tmpdir);
+       return external::writeExternal(params_, "LaTeX", buf, os,
+                                      *(runparams.exportdata),
+                                      external_in_tmpdir);
 }
 
 
 int InsetExternal::plaintext(Buffer const & buf, ostream & os,
-                        OutputParams const &) const
+                        OutputParams const & runparams) const
 {
-       return external::writeExternal(params_, "Ascii", buf, os);
+       return external::writeExternal(params_, "Ascii", buf, os,
+                                      *(runparams.exportdata));
 }
 
 
 int InsetExternal::linuxdoc(Buffer const & buf, ostream & os,
-                           OutputParams const &) const
+                           OutputParams const & runparams) const
 {
-       return external::writeExternal(params_, "LinuxDoc", buf, os);
+       return external::writeExternal(params_, "LinuxDoc", buf, os,
+                                      *(runparams.exportdata));
 }
 
 
 int InsetExternal::docbook(Buffer const & buf, ostream & os,
-                          OutputParams const &) const
+                          OutputParams const & runparams) const
 {
-       return external::writeExternal(params_, "DocBook", buf, os);
+       return external::writeExternal(params_, "DocBook", buf, os,
+                                      *(runparams.exportdata));
 }
 
 
@@ -787,14 +779,18 @@ string const latex_string(InsetExternal const & inset, Buffer const & buffer)
 }
 
 
-void add_preview(RenderMonitoredPreview & renderer, InsetExternal const & inset,
-                Buffer const & buffer)
+void add_preview_and_start_loading(RenderMonitoredPreview & renderer,
+                                  InsetExternal const & inset,
+                                  Buffer const & buffer)
 {
        InsetExternalParams const & params = inset.params();
-       if (RenderPreview::activated() && preview_wanted(params)) {
+
+       if (RenderPreview::status() != LyXRC::PREVIEW_OFF &&
+           preview_wanted(params)) {
                renderer.setAbsFile(params.filename.absFilename());
                string const snippet = latex_string(inset, buffer);
                renderer.addPreview(snippet, buffer);
+               renderer.startLoading(buffer);
        }
 }