X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetExternal.h;h=f124445f5eea4723d50612b0f6abb2bf361365d9;hb=f24bb4a91980a17c00c12ec0bbb457e0f182215f;hp=155cf82d66d1f20b2cce8bc987e03b8c51109da1;hpb=51fbea02a8f7dc1e360a61bdc95d5ac9200cb5f6;p=lyx.git diff --git a/src/insets/InsetExternal.h b/src/insets/InsetExternal.h index 155cf82d66..f124445f5e 100644 --- a/src/insets/InsetExternal.h +++ b/src/insets/InsetExternal.h @@ -12,17 +12,17 @@ #ifndef INSET_EXTERNAL_H #define INSET_EXTERNAL_H -#include "InsetBase.h" -#include "ExternalTransforms.h" +#include "Inset.h" + +#include "ExternalTemplate.h" #include "support/FileName.h" -#include "support/Translator.h" +#include "support/unique_ptr.h" -#include -#include -#include "MailInset.h" +namespace lyx { +namespace external { /** No two InsetExternalParams variables can have the same temporary file. * This class has copy-semantics but the copy constructor @@ -31,35 +31,17 @@ * copy constructor and assignment operator for the * InsetExternalParams class. */ -namespace lyx { - -namespace external { - class TempName { public: TempName(); TempName(TempName const &); ~TempName(); TempName & operator=(TempName const &); - support::FileName const & operator()() const { return tempname_; } + support::FileName operator()() const; private: support::FileName tempname_; }; -/// How is the image to be displayed on the LyX screen? -enum DisplayType { - DefaultDisplay, - MonochromeDisplay, - GrayscaleDisplay, - ColorDisplay, - PreviewDisplay, - NoDisplay -}; - - -/// The translator between the Display enum and corresponding lyx string. -Translator const & displayTranslator(); - } // namespace external @@ -72,7 +54,7 @@ public: bool read(Buffer const &, Lexer &); /// The name of the tempfile used for manipulations. - support::FileName const & tempname() const { return tempname_(); } + support::FileName tempname() const { return tempname_(); } /// The template currently in use. void settemplate(std::string const &); @@ -80,8 +62,10 @@ public: /// The external file. support::DocFileName filename; - /// How the inset is to be displayed by LyX. - external::DisplayType display; + /// If the inset is to be displayed by LyX. + bool display; + /// If the inset is to use the preview mechanism. + PreviewMode preview_mode; /// The scale of the displayed graphic (if shown). unsigned int lyxscale; @@ -104,97 +88,104 @@ private: class RenderBase; /// -class InsetExternal : public InsetBase, 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(); + explicit InsetExternal(Buffer *); /// - virtual ~InsetExternal(); + ~InsetExternal(); /// - virtual InsetBase::Code lyxCode() const { return EXTERNAL_CODE; } + static void string2params(std::string const &, Buffer const &, + InsetExternalParams &); /// - virtual EDITABLE editable() const { return IS_EDITABLE; } - + static std::string params2string(InsetExternalParams const &, + Buffer const &); /// - bool metrics(MetricsInfo &, Dimension &) const; + InsetExternalParams const & params() const; /// - void draw(PainterInfo & pi, int x, int y) const; + void setParams(InsetExternalParams const &); + /// Update not loaded previews + void updatePreview() const; + /// \returns the number of rows (\n's) of generated code. + void latex(otexstream &, OutputParams const &) const override; /// - virtual void write(Buffer const &, std::ostream &) const; + std::string contextMenuName() const override; /// - virtual void read(Buffer const &, Lexer & lex); - - /// \returns the number of rows (\n's) of generated code. - int latex(Buffer const &, odocstream &, - OutputParams const &) const; + bool setMouseHover(BufferView const * bv, bool mouse_hover) const override; + /// + bool clickable(BufferView const &, int, int) const override { return true; } /// - int plaintext(Buffer const &, odocstream &, - OutputParams const &) const; + void addToToc(DocIterator const & di, bool output_active, + UpdateType utype, TocBackend & backend) const override; /// - int docbook(Buffer const &, odocstream &, - OutputParams const &) const; + InsetCode lyxCode() const override { return EXTERNAL_CODE; } + /// + bool hasSettings() const override { return true; } - /// Update needed features for this inset. - virtual void validate(LaTeXFeatures & features) const; + /// + int topOffset(BufferView const *) const override { return 0; } + /// + int bottomOffset(BufferView const *) const override { return 0; } + /// + int leftOffset(BufferView const *) const override { return 0; } + /// + int rightOffset(BufferView const *) const override { return 0; } /// - InsetExternalParams const & params() const; + void metrics(MetricsInfo &, Dimension &) const override; /// - void setParams(InsetExternalParams const &, Buffer const &); + void draw(PainterInfo & pi, int x, int y) const override; /// - void addPreview(graphics::PreviewLoader &) const; + void write(std::ostream &) const override; /// - void edit(Cursor & cur, bool left); + void read(Lexer & lex) override; /// - bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; - -protected: - InsetExternal(InsetExternal const &); + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const override; /// - virtual void doDispatch(Cursor & cur, FuncRequest & cmd); -private: - virtual std::auto_ptr doClone() const; - - /** This method is connected to the graphics loader, so we are - * informed when the image has been loaded. - */ - void statusChanged() const; - - /** Slot receiving a signal that the external file has changed - * and the preview should be regenerated. - */ - void fileChanged() const; - - /// The current params - InsetExternalParams params_; - /// The thing that actually draws the image on LyX's screen. - boost::scoped_ptr renderer_; -}; - - -class InsetExternalMailer : public MailInset { -public: + void generateXML(XMLStream &, OutputParams const &, std::string const &) const; /// - InsetExternalMailer(InsetExternal & inset); + 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(XMLStream &, OutputParams const &) const override; + /// Update needed features for this inset. + void validate(LaTeXFeatures & features) const override; /// - virtual InsetBase & inset() const { return inset_; } + void addPreview(DocIterator const &, graphics::PreviewLoader &) const override; /// - virtual std::string const & name() const { return name_; } + bool showInsetDialog(BufferView * bv) const override; /// - virtual std::string const inset2string(Buffer const &) const; + bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const override; /// - static void string2params(std::string const &, Buffer const &, - InsetExternalParams &); + void doDispatch(Cursor & cur, FuncRequest & cmd) override; /// - static std::string const params2string(InsetExternalParams const &, - Buffer 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: /// - static std::string const name_; - /// - InsetExternal & inset_; + 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; + + /// The current params + InsetExternalParams params_; + /// The thing that actually draws the image on LyX's screen. + mutable unique_ptr renderer_; + /// changes color of the button when mouse enters/leaves this inset + mutable std::map mouse_hover_; }; } // namespace lyx -#endif +#endif // INSET_EXTERNAL_H