X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Frender_preview.h;h=52bb7ffe0489234ceb62e5024824fcc91665360e;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=391ff05955aebdb2142fbdb780dea916a4a1e5e5;hpb=1c4ae33f9a115c8c878b4099f4f518bb58c3fa32;p=lyx.git diff --git a/src/insets/render_preview.h b/src/insets/render_preview.h index 391ff05955..52bb7ffe04 100644 --- a/src/insets/render_preview.h +++ b/src/insets/render_preview.h @@ -8,7 +8,7 @@ * * Full author contact details are available in file CREDITS. * - * lyx::graphics::RenderPreview is an abstract base class that can help + * graphics::RenderPreview is an abstract base class that can help * insets to generate previews. The daughter class must instantiate two small * methods. The Inset would own an instance of this daughter class. */ @@ -19,103 +19,115 @@ #include "render_base.h" #include "support/FileMonitor.h" +#include "support/docstring.h" -#include +#include #include #include +namespace lyx { + class Buffer; -class BufferView; +class LyXRC_PreviewStatus; class MetricsInfo; class PainterInfo; -namespace lyx { +namespace support { class FileName; } + namespace graphics { class PreviewImage; class PreviewLoader; } // namespace graphics -} // namespace lyx class RenderPreview : public RenderBase, public boost::signals::trackable { public: - /// a wrapper for Previews::activated() - static bool activated(); + /// a wrapper for Previews::status() + static LyXRC_PreviewStatus status(); - RenderPreview(); - RenderPreview(RenderPreview const &); - RenderBase * clone() const; + RenderPreview(InsetBase const *); + RenderPreview(RenderPreview const &, InsetBase const *); + std::auto_ptr clone(InsetBase const *) const; /// Compute the size of the object, returned in dim - void metrics(MetricsInfo &, Dimension & dim) const; + bool metrics(MetricsInfo &, Dimension & dim) const; /// void draw(PainterInfo & pi, int x, int y) const; - /** Find the PreviewLoader, add a LaTeX snippet to it and - * start the loading process. + /** Find the PreviewLoader and add a LaTeX snippet to it. + * Do not start the loading process. */ - void generatePreview(std::string const & latex_snippet, - Buffer const &); + void addPreview(docstring const & latex_snippet, Buffer const &); - /** Add a LaTeX snippet to the PreviewLoader but do not start the - * loading process. + /** Add a LaTeX snippet to the PreviewLoader. + * Do not start the loading process. */ - void addPreview(std::string const & latex_snippet, - lyx::graphics::PreviewLoader & ploader); + void addPreview(docstring const & latex_snippet, + graphics::PreviewLoader & ploader); + + /// Begin the loading process. + void startLoading(Buffer const & buffer) const; /** Remove a snippet from the cache of previews. * Useful if previewing the contents of a file that has changed. */ void removePreview(Buffer const &); - /// The preview has been generated and is ready to use. - bool previewReady() const; + /** \returns a pointer to the PreviewImage associated with this snippet + * of latex. + */ + graphics::PreviewImage const * + getPreviewImage(Buffer const & buffer) const; - /// Connect and you'll be informed when the preview is ready. - typedef boost::signal0::slot_type slot_type; - boost::signals::connection connect(slot_type const &); + /// equivalent to dynamic_cast + virtual RenderPreview * asPreview() { return this; } private: /// Not implemented. - void operator=(RenderPreview const &); + RenderPreview & operator=(RenderPreview const &); /// This method is connected to the PreviewLoader::imageReady signal. - void imageReady(lyx::graphics::PreviewImage const &); + void imageReady(graphics::PreviewImage const &); /// The thing that we're trying to generate a preview of. std::string snippet_; - /// We don't own this. Cached for efficiency reasons. - lyx::graphics::PreviewImage const * pimage_; - /** Store the connection to the preview loader so that we connect * only once. */ boost::signals::connection ploader_connection_; - /// This signal is emitted when the preview is ready for display. - boost::signal0 preview_ready_signal_; + /// Inform the core that the inset has changed. + InsetBase const * parent_; }; class RenderMonitoredPreview : public RenderPreview { public: - RenderMonitoredPreview() : monitor_(std::string(), 2000) {} + RenderMonitoredPreview(InsetBase const *); /// - bool monitoring() const { return monitor_.monitoring(); } + void draw(PainterInfo & pi, int x, int y) const; /// - void startMonitoring(std::string const & file); + void setAbsFile(support::FileName const & file); /// - void stopMonitoring() { monitor_.stop(); } + bool monitoring() const { return monitor_.monitoring(); } + void startMonitoring() const { monitor_.start(); } + void stopMonitoring() const { monitor_.stop(); } /// Connect and you'll be informed when the file changes. + typedef support::FileMonitor::slot_type slot_type; boost::signals::connection fileChanged(slot_type const &); + /// equivalent to dynamic_cast + virtual RenderMonitoredPreview * asMonitoredPreview() { return this; } + private: /// - lyx::support::FileMonitor monitor_; + mutable support::FileMonitor monitor_; }; +} // namespace lyx + #endif // RENDERPREVIEW_H