X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.h;h=c42159e30ce4fdfd0297565ac483ea11d2638921;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=7e0ee9fdd3885f164e26cd4193dfa087867345e7;hpb=781e0ef62e262a633b094917eb40a5b840fea913;p=lyx.git diff --git a/src/insets/insetinclude.h b/src/insets/insetinclude.h index 7e0ee9fdd3..c42159e30c 100644 --- a/src/insets/insetinclude.h +++ b/src/insets/insetinclude.h @@ -12,142 +12,130 @@ #ifndef INSET_INCLUDE_H #define INSET_INCLUDE_H -#include "insetcommand.h" -#include "dimension.h" -#include "renderers.h" +#include "inset.h" +#include "insetcommandparams.h" +#include "render_button.h" +#include "mailinset.h" + +#include "support/filename.h" + #include +namespace lyx { class Buffer; -struct LaTeXFeatures; +class Dimension; +class LaTeXFeatures; +class RenderMonitoredPreview; -// Created by AAS 970521 /// for including tex/lyx files -class InsetInclude: public InsetOld { +class InsetInclude : public InsetOld { public: - /// the type of inclusion - enum Flags { - INCLUDE = 0, //< - VERB = 1, //< - INPUT = 2, //< - VERBAST = 3 //< - }; - - struct Params { - Params(InsetCommandParams const & cp = InsetCommandParams("input"), - Flags f = INPUT, - string const & name = string()) - : cparams(cp), flag(f), - masterFilename_(name) {} - - InsetCommandParams cparams; - Flags flag; - string masterFilename_; - - /// - bool operator==(Params const &) const; - /// - bool operator!=(Params const &) const; - }; - - /// - InsetInclude(Params const &); - InsetInclude(InsetCommandParams const &, Buffer const &); - InsetInclude(InsetInclude const &); - - ~InsetInclude(); - /// - virtual dispatch_result localDispatch(FuncRequest const & cmd); + InsetInclude(InsetCommandParams const &); + ~InsetInclude(); /// Override these InsetButton methods if Previewing - void metrics(MetricsInfo & mi, Dimension & dim) const; + bool metrics(MetricsInfo & mi, Dimension & dim) const; /// void draw(PainterInfo & pi, int x, int y) const; /// - virtual BufferView * view() const; + virtual bool display() const; /// get the parameters - Params const & params(void) const; - /// set the parameters - void set(Params const & params); - + InsetCommandParams const & params() const; + + /// + InsetBase::Code lyxCode() const { return InsetBase::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; + /** Update the cache with all bibfiles in use of the child buffer + * (including bibfiles of grandchild documents). + * Does nothing if the child document is not loaded to prevent + * automatic loading of all child documents upon loading the master. + * \param buffer the Buffer containing this inset. + */ + void updateBibfilesCache(Buffer const & buffer); + /** Return the cache with all bibfiles in use of the child buffer + * (including bibfiles of grandchild documents). + * Return an empty vector if the child doc is not loaded. + * \param buffer the Buffer containing this inset. + */ + std::vector const & + getBibfilesCache(Buffer const & buffer) const; + /// + EDITABLE editable() const { return IS_EDITABLE; } /// - virtual std::auto_ptr clone() const; + void write(Buffer const &, std::ostream &) const; /// - InsetOld::Code lyxCode() const { return InsetOld::INCLUDE_CODE; } - /// This returns the list of labels on the child buffer - void getLabelList(std::vector &) const; - /// This returns the list of bibkeys on the child buffer - void fillWithBibKeys(std::vector > & keys) const; + void read(Buffer const &, LyXLex &); /// - EDITABLE editable() const - { - return IS_EDITABLE; - } + int latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - void write(Buffer const &, std::ostream &) const; + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - void read(Buffer const &, LyXLex &); + int docbook(Buffer const &, odocstream &, + OutputParams const &) const; /// - int latex(Buffer const &, std::ostream &, - LatexRunParams const &) const; + void validate(LaTeXFeatures &) const; /// - int ascii(Buffer const &, std::ostream &, int linelen) const; + void addPreview(graphics::PreviewLoader &) const; /// - int linuxdoc(Buffer const &, std::ostream &) const; + void addToToc(TocList &, Buffer const &) const; /// - int docbook(Buffer const &, std::ostream &, bool mixcont) const; + void updateLabels(Buffer const & buffer) const; /// - void validate(LaTeXFeatures &) const; - - /// return true if the file is or got loaded. - bool loadIfNeeded() const; - + bool getStatus(LCursor &, FuncRequest const &, FuncStatus &) const; +protected: + InsetInclude(InsetInclude const &); /// - void addPreview(lyx::graphics::PreviewLoader &) const; - + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); private: + virtual std::auto_ptr doClone() const; + + /** Slot receiving a signal that the external file has changed + * and the preview should be regenerated. + */ + void fileChanged() const; + friend class InsetIncludeMailer; - + + /// set the parameters + void set(InsetCommandParams const & params, Buffer const &); + /// get the text displayed on the button + docstring const getScreenLabel(Buffer const &) const; /// void write(std::ostream &) const; /// void read(LyXLex &); - /// get the text displayed on the button - string const getScreenLabel(Buffer const &) const; - /// is this a verbatim include ? - bool isVerbatim() 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_; + InsetCommandParams params_; /// holds the entity name that defines the file location (SGML) - string const include_label; + docstring 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_; + boost::scoped_ptr const preview_; /// cache mutable bool set_label_; - mutable ButtonRenderer button_; + mutable RenderButton button_; }; -inline bool InsetInclude::isVerbatim() const -{ - return params_.flag == VERB || params_.flag == VERBAST; -} - -#include "mailinset.h" - class InsetIncludeMailer : public MailInset { public: /// @@ -155,18 +143,21 @@ public: /// virtual InsetBase & inset() const { return inset_; } /// - virtual string const & name() const { return name_; } + virtual std::string const & name() const { return name_; } /// - virtual string const inset2string(Buffer const &) const; + virtual std::string const inset2string(Buffer const &) const; /// - static void string2params(string const &, InsetInclude::Params &); + static void string2params(std::string const &, InsetCommandParams &); /// - static string const params2string(InsetInclude::Params const &); + static std::string const params2string(InsetCommandParams const &); private: /// - static string const name_; + static std::string const name_; /// InsetInclude & inset_; }; + +} // namespace lyx + #endif // INSETINCLUDE_H