X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetexternal.h;h=2e33880a20132fb3bb492464c2f6da0b2c9c1128;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=93d0e678c075fffde003f5a689a184c063b3aff8;hpb=dff822442ad64ea35cfa7ed7265f24624093a476;p=lyx.git diff --git a/src/insets/insetexternal.h b/src/insets/insetexternal.h index 93d0e678c0..2e33880a20 100644 --- a/src/insets/insetexternal.h +++ b/src/insets/insetexternal.h @@ -15,66 +15,88 @@ #include "inset.h" #include "ExternalTransforms.h" -#include "graphics/GraphicsTypes.h" - #include "support/filename.h" +#include "support/translator.h" #include #include +#include "mailinset.h" + /** No two InsetExternalParams variables can have the same temporary file. - * This struct has copy-semantics but the copy constructor + * This class 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 + * Use of this class enables us to use the compiler-generated * copy constructor and assignment operator for the - * InsetExternalParams struct. + * InsetExternalParams class. */ namespace lyx { + namespace external { -struct TempName { +class TempName { +public: TempName(); TempName(TempName const &); ~TempName(); TempName & operator=(TempName const &); - std::string const & operator()() const { return tempname_; } + support::FileName const & operator()() const { return tempname_; } private: - std::string tempname_; + 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 -} // namespace lyx /// hold parameters settable from the GUI -struct InsetExternalParams { +class InsetExternalParams { +public: InsetExternalParams(); void write(Buffer const &, std::ostream &) const; bool read(Buffer const &, LyXLex &); /// The name of the tempfile used for manipulations. - std::string const & tempname() const { return tempname_(); } + support::FileName const & tempname() const { return tempname_(); } /// The template currently in use. void settemplate(std::string const &); std::string const & templatename() const { return templatename_; } /// The external file. - lyx::support::FileName filename; + support::DocFileName filename; /// How the inset is to be displayed by LyX. - lyx::graphics::DisplayType display; + external::DisplayType display; /// The scale of the displayed graphic (if shown). unsigned int lyxscale; - lyx::external::ClipData clipdata; - lyx::external::ExtraData extradata; - lyx::external::ResizeData resizedata; - lyx::external::RotationData rotationdata; + external::ClipData clipdata; + external::ExtraData extradata; + external::ResizeData resizedata; + external::RotationData rotationdata; + + /** if \c true, simply output the filename, maybe wrapped in a + * box, rather than generate and display the image etc. + */ + bool draft; private: - lyx::external::TempName tempname_; + external::TempName tempname_; std::string templatename_; }; @@ -87,21 +109,14 @@ class InsetExternal : public InsetOld, public boost::signals::trackable public: InsetExternal(); /// - InsetExternal(InsetExternal const &); - /// virtual ~InsetExternal(); /// - virtual std::auto_ptr clone() const; - /// - virtual dispatch_result localDispatch(FuncRequest const & cmd); - - /// - virtual InsetOld::Code lyxCode() const { return EXTERNAL_CODE; } + virtual InsetBase::Code lyxCode() const { return EXTERNAL_CODE; } /// virtual EDITABLE editable() const { return IS_EDITABLE; } /// - void metrics(MetricsInfo &, Dimension &) const; + bool metrics(MetricsInfo &, Dimension &) const; /// void draw(PainterInfo & pi, int x, int y) const; /// @@ -110,29 +125,46 @@ public: virtual void read(Buffer const &, LyXLex & lex); /// \returns the number of rows (\n's) of generated code. - virtual int latex(Buffer const &, std::ostream &, - LatexRunParams const &) const; + virtual int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - virtual int ascii(Buffer const &, std::ostream &, int linelen) const; + virtual int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - virtual int linuxdoc(Buffer const &, std::ostream &) const; - /// - virtual int docbook(Buffer const &, std::ostream &, - bool mixcont) const; + virtual int docbook(Buffer const &, odocstream &, + OutputParams const &) const; /// Update needed features for this inset. virtual void validate(LaTeXFeatures & features) 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() 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. @@ -140,8 +172,6 @@ private: }; -#include "mailinset.h" - class InsetExternalMailer : public MailInset { public: /// @@ -165,4 +195,6 @@ private: InsetExternal & inset_; }; +} // namespace lyx + #endif