X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetinclude.h;h=c42159e30ce4fdfd0297565ac483ea11d2638921;hb=e28331ed63062dea10d0a21b9ec12034b4b17b9a;hp=b08010c063d3f608e00152dfd7901cab5f8db7a9;hpb=62df753a2e70a2f05e72d59ecb79daf44f1673d2;p=lyx.git diff --git a/src/insets/insetinclude.h b/src/insets/insetinclude.h index b08010c063..c42159e30c 100644 --- a/src/insets/insetinclude.h +++ b/src/insets/insetinclude.h @@ -12,129 +12,130 @@ #ifndef INSET_INCLUDE_H #define INSET_INCLUDE_H -#include "insetcommand.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; class Dimension; -struct LaTeXFeatures; +class LaTeXFeatures; +class RenderMonitoredPreview; -// Created by AAS 970521 /// for including tex/lyx files -class InsetInclude: public InsetOld { +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(InsetCommandParams const &); ~InsetInclude(); - /// - virtual dispatch_result localDispatch(FuncRequest const & cmd); - /// 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; /// - virtual std::auto_ptr clone() const; - /// - InsetOld::Code lyxCode() const { return InsetOld::INCLUDE_CODE; } + 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; + 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; + 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; - } + 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 latex(Buffer const &, odocstream &, + OutputParams const &) const; /// - int ascii(Buffer const &, std::ostream &, int linelen) const; + int plaintext(Buffer const &, odocstream &, + OutputParams const &) const; /// - int linuxdoc(Buffer const &, std::ostream &) const; - /// - int docbook(Buffer const &, std::ostream &, bool mixcont) const; + int docbook(Buffer const &, odocstream &, + OutputParams const &) const; /// void validate(LaTeXFeatures &) const; - /// - void addPreview(lyx::graphics::PreviewLoader &) const; - + void addPreview(graphics::PreviewLoader &) const; + /// + void addToToc(TocList &, Buffer const &) const; + /// + void updateLabels(Buffer const & buffer) const; + /// + bool getStatus(LCursor &, FuncRequest const &, FuncStatus &) const; +protected: + InsetInclude(InsetInclude const &); + /// + virtual void doDispatch(LCursor & cur, FuncRequest & cmd); private: - friend class InsetIncludeMailer; + virtual std::auto_ptr doClone() const; - /// return true if the file is or got loaded. - bool loadIfNeeded() 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; - /// 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_; }; -#include "mailinset.h" - class InsetIncludeMailer : public MailInset { public: /// @@ -142,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