]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/PreviewedInset.C
If the graphics loader has a copy c-tor it should have copy assignment that does...
[lyx.git] / src / graphics / PreviewedInset.C
index 1350396f6f03278dce53ad834ca207298405da44..468d1f65ce0249efbde5901931c2873a2f8cbea8 100644 (file)
@@ -1,29 +1,32 @@
 // -*- C++ -*-
 /**
  *  \file PreviewedInset.C
- *  Copyright 2002 the LyX Team
- *  Read the file COPYING
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- * \author Angus Leeming <leeming@lyx.org>
+ * \author Angus Leeming
+ *
+ * Full author contact details are available in file CREDITS
  */
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
 #include <config.h>
 
 #include "PreviewedInset.h"
-
-#include "BufferView.h"
-
 #include "GraphicsImage.h"
 #include "PreviewLoader.h"
 #include "PreviewImage.h"
 #include "Previews.h"
 
+#include "buffer.h"
+#include "BufferView.h"
+
+#include "frontends/LyXView.h"
+
+#include "support/lstrings.h"
+
 #include <boost/bind.hpp>
 
+#include "debug.h"    // temporary
 
 namespace grfx {
 
@@ -33,6 +36,12 @@ bool PreviewedInset::activated()
 }
 
 
+BufferView * PreviewedInset::view() const
+{
+       return inset_.view();
+}
+
+
 void PreviewedInset::generatePreview()
 {
        if (!Previews::activated() || !previewWanted() ||
@@ -42,7 +51,8 @@ void PreviewedInset::generatePreview()
        grfx::Previews & previews = grfx::Previews::get();
        grfx::PreviewLoader & loader = previews.loader(view()->buffer());
        addPreview(loader);
-       loader.startLoading();
+       if (!snippet_.empty())
+               loader.startLoading();
 }
 
 
@@ -51,7 +61,9 @@ void PreviewedInset::addPreview(grfx::PreviewLoader & ploader)
        if (!Previews::activated() || !previewWanted())
                return;
 
-       snippet_ = latexString();
+       snippet_ = trim(latexString());
+       if (snippet_.empty())
+               return;
 
        pimage_ = ploader.preview(snippet_);
        if (pimage_)
@@ -69,9 +81,22 @@ void PreviewedInset::addPreview(grfx::PreviewLoader & ploader)
 }
 
 
+void PreviewedInset::removePreview()
+{
+       if (!view() || !view()->buffer() || snippet_.empty())
+               return;
+
+       grfx::Previews & previews = grfx::Previews::get();
+       grfx::PreviewLoader & loader = previews.loader(view()->buffer());
+       loader.remove(snippet_);
+       snippet_.erase();
+       pimage_ = 0;
+}
+
+
 bool PreviewedInset::previewReady() const
 {
-       if (!grfx::Previews::activated() || !previewWanted() ||
+       if (!Previews::activated() || !previewWanted() ||
            !view() || !view()->buffer())
                return false;
 
@@ -84,7 +109,7 @@ bool PreviewedInset::previewReady() const
        if (!pimage_)
                return false;
 
-       return pimage_->image(inset_, *view());
+       return pimage_->image();
 }
 
 
@@ -95,8 +120,9 @@ void PreviewedInset::imageReady(grfx::PreviewImage const & pimage) const
                return;
 
        pimage_ = &pimage;
+
        if (view())
-               view()->updateInset(&inset_, false);
+               view()->updateInset(&inset_);
 }
 
 } // namespace grfx