// -*- C++ -*- /** * \file insetinclude.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Lars Gullik Bjønnes * * Full author contact details are available in file CREDITS. */ #ifndef INSET_INCLUDE_H #define INSET_INCLUDE_H #include "insetcommand.h" #include "renderers.h" #include class Buffer; class Dimension; struct LaTeXFeatures; // Created by AAS 970521 /// for including tex/lyx files class InsetInclude: public InsetOld { public: struct Params { Params(InsetCommandParams const & cp = InsetCommandParams("input"), string const & name = string()) : cparams(cp), masterFilename_(name) {} InsetCommandParams cparams; string masterFilename_; }; /// InsetInclude(Params const &); InsetInclude(InsetCommandParams const &, Buffer const &); InsetInclude(InsetInclude const &); ~InsetInclude(); /// virtual dispatch_result localDispatch(FuncRequest const & cmd); /// Override these InsetButton methods if Previewing void metrics(MetricsInfo & mi, Dimension & dim) const; /// void draw(PainterInfo & pi, int x, int y) const; /// virtual BufferView * view() const; /// get the parameters Params const & params(void) const; /// set the parameters void set(Params const & params); /// virtual std::auto_ptr clone() const; /// InsetOld::Code lyxCode() const { return InsetOld::INCLUDE_CODE; } /** Fills \c list * \param buffer the Buffer containing this inset. * \param list the list of labels in the child buffer. */ void getLabelList(Buffer const & buffer, std::vector & list) const; /** Fills \c keys * \param buffer the Buffer containing this inset. * \param keys the list of bibkeys in the child buffer. */ /// void fillWithBibKeys(Buffer const & buffer, std::vector > & keys) const; /// EDITABLE editable() const { return IS_EDITABLE; } /// void write(Buffer const &, std::ostream &) const; /// void read(Buffer const &, LyXLex &); /// int latex(Buffer const &, std::ostream &, LatexRunParams const &) const; /// int ascii(Buffer const &, std::ostream &, int linelen) const; /// int linuxdoc(Buffer const &, std::ostream &) const; /// int docbook(Buffer const &, std::ostream &, bool mixcont) const; /// void validate(LaTeXFeatures &) const; /// void addPreview(lyx::graphics::PreviewLoader &) const; private: friend class InsetIncludeMailer; /// return true if the file is or got loaded. bool loadIfNeeded() const; /// void write(std::ostream &) const; /// void read(LyXLex &); /// get the text displayed on the button string const getScreenLabel(Buffer const &) const; /// get the filename of the master buffer string const getMasterFilename() const; /// get the included file name string const getFileName() const; /// the parameters Params params_; /// holds the entity name that defines the file location (SGML) string const include_label; /// Use the Pimpl idiom to hide the internals of the previewer. class PreviewImpl; friend class PreviewImpl; /// The pointer never changes although *preview_'s contents may. boost::scoped_ptr const preview_; /// cache mutable bool set_label_; mutable ButtonRenderer button_; }; #include "mailinset.h" class InsetIncludeMailer : public MailInset { public: /// InsetIncludeMailer(InsetInclude & inset); /// virtual InsetBase & inset() const { return inset_; } /// virtual string const & name() const { return name_; } /// virtual string const inset2string(Buffer const &) const; /// static void string2params(string const &, InsetInclude::Params &); /// static string const params2string(InsetInclude::Params const &); private: /// static string const name_; /// InsetInclude & inset_; }; #endif // INSETINCLUDE_H