3 * \file PreviewedInset.C
4 * Copyright 2002 the LyX Team
5 * Read the file COPYING
7 * \author Angus Leeming <leeming@lyx.org>
11 #pragma implementation
16 #include "PreviewedInset.h"
18 #include "BufferView.h"
20 #include "GraphicsImage.h"
21 #include "PreviewLoader.h"
22 #include "PreviewImage.h"
25 #include <boost/bind.hpp>
30 bool PreviewedInset::activated()
32 return Previews::activated();
36 void PreviewedInset::generatePreview()
38 if (!Previews::activated() || !previewWanted() ||
39 !view() || !view()->buffer())
42 grfx::Previews & previews = grfx::Previews::get();
43 grfx::PreviewLoader & loader = previews.loader(view()->buffer());
45 loader.startLoading();
49 void PreviewedInset::addPreview(grfx::PreviewLoader & ploader)
51 if (!Previews::activated() || !previewWanted())
54 snippet_ = latexString();
56 pimage_ = ploader.preview(snippet_);
60 // If this is the first time of calling, connect to the
61 // grfx::PreviewLoader signal that'll inform us when the preview image
62 // is ready for loading.
63 if (!connection_.connected()) {
64 connection_ = ploader.connect(
65 boost::bind(&PreviewedInset::imageReady, this, _1));
68 ploader.add(snippet_);
72 bool PreviewedInset::previewReady() const
74 if (!grfx::Previews::activated() || !previewWanted() ||
75 !view() || !view()->buffer())
78 if (!pimage_ || snippet_ != pimage_->snippet()) {
79 grfx::PreviewLoader & ploader =
80 grfx::Previews::get().loader(view()->buffer());
81 pimage_ = ploader.preview(snippet_);
87 return pimage_->image(inset_, *view());
91 void PreviewedInset::imageReady(grfx::PreviewImage const & pimage) const
93 // Check snippet against the Inset's current contents
94 if (snippet_ != pimage.snippet())
99 view()->updateInset(&inset_, false);