X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetexternal.h;h=2e33880a20132fb3bb492464c2f6da0b2c9c1128;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=9e955d1b76214a8105be3d99ea154e86e3d863b8;hpb=44cd0fc9a1687cc63911c7f98d978594458e7813;p=lyx.git diff --git a/src/insets/insetexternal.h b/src/insets/insetexternal.h index 9e955d1b76..2e33880a20 100644 --- a/src/insets/insetexternal.h +++ b/src/insets/insetexternal.h @@ -13,142 +13,165 @@ #define INSET_EXTERNAL_H #include "inset.h" - -#include "graphics/GraphicsTypes.h" +#include "ExternalTransforms.h" #include "support/filename.h" +#include "support/translator.h" #include #include +#include "mailinset.h" -class RenderInset; -/// -class InsetExternal : public InsetOld, public boost::signals::trackable -{ - /** No two Params variables can have the same temporary file. - * This struct has copy-semantics but the copy constructor - * and assignment operator simply call the default constructor. - * Use of this struct enables us to use the compiler-generated - * copy constructor and assignment operator for the Params struct. - */ - struct TempName { - TempName(); - TempName(TempName const &); - ~TempName(); - TempName & operator=(TempName const &); - std::string const & operator()() const { return tempname_; } - private: - std::string tempname_; - }; +/** No two InsetExternalParams variables can have the same temporary file. + * This class has copy-semantics but the copy constructor + * and assignment operator simply call the default constructor. + * Use of this class enables us to use the compiler-generated + * 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_; } +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 + + +/// hold parameters settable from the GUI +class InsetExternalParams { public: - /// hold parameters settable from the GUI - struct Params { - Params(); + InsetExternalParams(); + + void write(Buffer const &, std::ostream &) const; + bool read(Buffer const &, LyXLex &); + + /// The name of the tempfile used for manipulations. + support::FileName const & tempname() const { return tempname_(); } + + /// The template currently in use. + void settemplate(std::string const &); + std::string const & templatename() const { return templatename_; } - void write(Buffer const &, std::ostream &) const; - bool read(Buffer const &, LyXLex &); + /// The external file. + support::DocFileName filename; + /// How the inset is to be displayed by LyX. + external::DisplayType display; + /// The scale of the displayed graphic (if shown). + unsigned int lyxscale; - /// The name of the tempfile used for manipulations. - std::string const & tempname() const { return tempname_(); } + external::ClipData clipdata; + external::ExtraData extradata; + external::ResizeData resizedata; + external::RotationData rotationdata; - /// the current template used - void settemplate(std::string const &); - std::string const & templatename() const { return templatename_; } + /** if \c true, simply output the filename, maybe wrapped in a + * box, rather than generate and display the image etc. + */ + bool draft; + +private: + external::TempName tempname_; + std::string templatename_; +}; - /// the filename - lyx::support::FileName filename; - /// how the inset is displayed by LyX - lyx::graphics::DisplayType display; - /// The scale of the displayed graphic (If shown). - unsigned int lyxscale; - private: - TempName tempname_; - std::string templatename_; - }; +class RenderBase; +/// +class InsetExternal : public InsetOld, public boost::signals::trackable +{ +public: InsetExternal(); /// - InsetExternal(InsetExternal const &); - /// virtual ~InsetExternal(); /// - virtual dispatch_result localDispatch(FuncRequest const & cmd); + virtual InsetBase::Code lyxCode() const { return EXTERNAL_CODE; } /// - void metrics(MetricsInfo &, Dimension &) const; + virtual EDITABLE editable() const { return IS_EDITABLE; } + /// - void draw(PainterInfo & pi, int x, int y) const; + bool metrics(MetricsInfo &, Dimension &) const; /// - virtual EDITABLE editable() const { return IS_EDITABLE; } + void draw(PainterInfo & pi, int x, int y) const; /// virtual void write(Buffer const &, std::ostream &) const; /// virtual void read(Buffer const &, LyXLex & lex); - /** returns the number of rows (\n's) of generated tex code. - fragile == true means, that the inset should take care about - fragile commands by adding a \protect before. - If the free_spc (freespacing) variable is set, then this inset - is in a free-spacing paragraph. - */ - virtual int latex(Buffer const &, std::ostream &, - LatexRunParams const &) const; - /// write ASCII output to the ostream - virtual int ascii(Buffer const &, std::ostream &, int linelen) const; - /// write LinuxDoc output to the ostream - virtual int linuxdoc(Buffer const &, std::ostream &) const; - /// write DocBook output to the ostream - virtual int docbook(Buffer const &, std::ostream &, bool mixcont) const; - - /// Updates needed features for this inset. - virtual void validate(LaTeXFeatures & features) const; - - /// returns LyX code associated with the inset. Used for TOC, ...) - virtual InsetOld::Code lyxCode() const { return EXTERNAL_CODE; } - + /// \returns the number of rows (\n's) of generated code. + virtual int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - virtual std::auto_ptr clone() const; - - /// return a copy of our current params - Params const & params() const; + virtual int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; + /// + virtual int docbook(Buffer const &, odocstream &, + OutputParams const &) const; - /// Set the inset parameters. - virtual void setParams(Params const &, Buffer const &); + /// Update needed features for this inset. + virtual void validate(LaTeXFeatures & features) const; - /** update the file represented by the template. - If \param external_in_tmpdir == true, then the generated file is - place in the buffer's temporary directory. - */ - void updateExternal(std::string const &, Buffer const &, - bool external_in_tmpdir) const; + /// + InsetExternalParams const & params() const; + /// + void setParams(InsetExternalParams const &, Buffer const &); + /// + void addPreview(graphics::PreviewLoader &) const; + /// + void edit(LCursor & cur, bool left); + /// + bool getStatus(LCursor &, FuncRequest const &, FuncStatus &) const; +protected: + InsetExternal(InsetExternal const &); + /// + virtual void doDispatch(LCursor & 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(); + void statusChanged() const; - /** Write the output for a specific file format - and generate any external data files. - If \param external_in_tmpdir == true, then the generated file is - place in the buffer's temporary directory. - */ - int write(std::string const & format, Buffer const &, std::ostream &, - bool external_in_tmpdir = false) const; - - /// the current params - Params params_; + /** 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_; + boost::scoped_ptr renderer_; }; -#include "mailinset.h" - class InsetExternalMailer : public MailInset { public: /// @@ -161,10 +184,10 @@ public: virtual std::string const inset2string(Buffer const &) const; /// static void string2params(std::string const &, Buffer const &, - InsetExternal::Params &); + InsetExternalParams &); /// - static std::string const params2string(InsetExternal::Params const &, - Buffer const &); + static std::string const params2string(InsetExternalParams const &, + Buffer const &); private: /// static std::string const name_; @@ -172,4 +195,6 @@ private: InsetExternal & inset_; }; +} // namespace lyx + #endif