X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetExternal.h;h=ce71c94df344edf2f19681f139788dab892eff85;hb=8124e6c02ea1fd6779bb6c47ffe2bca2c8bd2d97;hp=a6167b5dd901d46c19b4611014112736313ac96c;hpb=f09a9fe2e60e4aeaca23b42b2bf30f5d64cfd9b1;p=lyx.git diff --git a/src/insets/InsetExternal.h b/src/insets/InsetExternal.h index a6167b5dd9..ce71c94df3 100644 --- a/src/insets/InsetExternal.h +++ b/src/insets/InsetExternal.h @@ -17,10 +17,12 @@ #include "ExternalTemplate.h" #include "support/FileName.h" +#include "support/unique_ptr.h" -#include -#include +namespace lyx { + +namespace external { /** No two InsetExternalParams variables can have the same temporary file. * This class has copy-semantics but the copy constructor @@ -29,14 +31,6 @@ * copy constructor and assignment operator for the * InsetExternalParams class. */ -namespace lyx { - -namespace support { -class TempFile; -} - -namespace external { - class TempName { public: TempName(); @@ -45,7 +39,7 @@ public: TempName & operator=(TempName const &); support::FileName operator()() const; private: - support::TempFile * tempfile_; + support::FileName tempname_; }; } // namespace external @@ -94,10 +88,13 @@ private: class RenderBase; /// -class InsetExternal : public Inset, public boost::signals::trackable +class InsetExternal : public Inset { + // Disable assignment operator, since it is not used, and it is too + // complicated to implement it consistently with the copy constructor + InsetExternal & operator=(InsetExternal const &); public: - InsetExternal(Buffer *); + explicit InsetExternal(Buffer *); /// ~InsetExternal(); /// @@ -111,63 +108,81 @@ public: /// void setParams(InsetExternalParams const &); /// Update not loaded previews - void updatePreview(); + void updatePreview() const; /// \returns the number of rows (\n's) of generated code. - void latex(otexstream &, OutputParams const &) const; + void latex(otexstream &, OutputParams const &) const override; /// - std::string contextMenuName() const; + std::string contextMenuName() const override; /// - bool setMouseHover(BufferView const * bv, bool mouse_hover) const; + bool setMouseHover(BufferView const * bv, bool mouse_hover) const override; /// - bool clickable(int, int) const { return true; } -private: + bool clickable(BufferView const &, int, int) const override { return true; } /// - InsetExternal(InsetExternal const &); + void addToToc(DocIterator const & di, bool output_active, + UpdateType utype, TocBackend & backend) const override; /// - InsetCode lyxCode() const { return EXTERNAL_CODE; } + InsetCode lyxCode() const override { return EXTERNAL_CODE; } /// - bool hasSettings() const { return true; } + bool hasSettings() const override { return true; } + /// - void metrics(MetricsInfo &, Dimension &) const; + int topOffset(BufferView const *) const override { return 0; } /// - void draw(PainterInfo & pi, int x, int y) const; + int bottomOffset(BufferView const *) const override { return 0; } /// - void write(std::ostream &) const; + int leftOffset(BufferView const *) const override { return 0; } /// - void read(Lexer & lex); + int rightOffset(BufferView const *) const override { return 0; } + + /// + void metrics(MetricsInfo &, Dimension &) const override; + /// + void draw(PainterInfo & pi, int x, int y) const override; + /// + void write(std::ostream &) const override; + /// + void read(Lexer & lex) override; /// int plaintext(odocstringstream & ods, OutputParams const & op, - size_t max_length = INT_MAX) const; + size_t max_length = INT_MAX) const override; + /// + void generateXML(XMLStream &, OutputParams const &, std::string const &) const; /// - int docbook(odocstream &, OutputParams const &) const; + void docbook(XMLStream &, OutputParams const &) const override; /// For now, this does nothing. Someone who knows about this /// should see what needs doing for XHTML output. - docstring xhtml(XHTMLStream &, OutputParams const &) const; + docstring xhtml(XMLStream &, OutputParams const &) const override; /// Update needed features for this inset. - void validate(LaTeXFeatures & features) const; + void validate(LaTeXFeatures & features) const override; /// - void addPreview(DocIterator const &, graphics::PreviewLoader &) const; + void addPreview(DocIterator const &, graphics::PreviewLoader &) const override; /// - bool showInsetDialog(BufferView * bv) const; + bool showInsetDialog(BufferView * bv) const override; /// - bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; + bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const override; /// - void doDispatch(Cursor & cur, FuncRequest & cmd); + void doDispatch(Cursor & cur, FuncRequest & cmd) override; /// - Inset * clone() const { return new InsetExternal(*this); } - /** This method is connected to the graphics loader, so we are - * informed when the image has been loaded. - */ - void statusChanged() const; + Inset * clone() const override { return new InsetExternal(*this); } /** Slot receiving a signal that the external file has changed * and the preview should be regenerated. */ void fileChanged() const; +private: + /// + InsetExternal(InsetExternal const &); + + /// Is this inset using (instant or graphics) preview? + bool isPreviewed() const; + /// Do we have the right renderer (button, graphic or monitored preview)? + bool isRendererValid() const; + /// + docstring toolTip(BufferView const & bv, int x, int y) const override; /// The current params InsetExternalParams params_; /// The thing that actually draws the image on LyX's screen. - boost::scoped_ptr renderer_; + mutable unique_ptr renderer_; /// changes color of the button when mouse enters/leaves this inset mutable std::map mouse_hover_; };