X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetGraphics.h;h=be4a31773ada009df95bac9eedfcfbaa50fd3f6b;hb=2d48072e664099385b2442f7166b3c57129799bb;hp=0a90f90d1cb7190bbbf6192559261ea91686483c;hpb=42123ab8a71080b6d15fca4e0c43ae76abf00a1e;p=lyx.git diff --git a/src/insets/InsetGraphics.h b/src/insets/InsetGraphics.h index 0a90f90d1c..be4a31773a 100644 --- a/src/insets/InsetGraphics.h +++ b/src/insets/InsetGraphics.h @@ -5,7 +5,7 @@ * Licence details can be found in the file COPYING. * * \author Baruch Even - * \author Herbert Voß + * \author Herbert Voß * * Full author contact details are available in file CREDITS. */ @@ -15,129 +15,167 @@ #include "Inset.h" #include "InsetGraphicsParams.h" -#include "MailInset.h" - -#include -#include +#include namespace lyx { -class Dialogs; class RenderGraphic; class LaTeXFeatures; -/// -class InsetGraphics : public InsetOld, public boost::signals::trackable { +///////////////////////////////////////////////////////////////////////// +// +// InsetGraphics +// +///////////////////////////////////////////////////////////////////////// + +/// Used for images etc. +class InsetGraphics : public Inset +{ public: /// - InsetGraphics(); + explicit InsetGraphics(Buffer * buf); /// ~InsetGraphics(); + /// - bool metrics(MetricsInfo &, Dimension &) const; + static void string2params(std::string const & data, + Buffer const & buffer, + InsetGraphicsParams &); + /// + static std::string params2string(InsetGraphicsParams const &, + Buffer const &); + + /** Set the inset parameters, used by the GUIndependent dialog. + Return true of new params are different from what was so far. + */ + bool setParams(InsetGraphicsParams const & params); + + InsetGraphicsParams getParams() const { return params_;} /// - EDITABLE editable() const; + bool clickable(BufferView const &, int, int) const { return true; } /// - void write(Buffer const &, std::ostream &) const; + bool canPaintChange(BufferView const &) const { return true; } /// - void read(Buffer const &, Lexer & lex); + InsetGraphics * asInsetGraphics() { return this; } + /// + InsetGraphics const * asInsetGraphics() const { return this; } + /// + bool isLabeled() const { return true; } + /// + bool hasSettings() const { return true; } + /// + void write(std::ostream &) const; + /// + void read(Lexer & 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. */ - int latex(Buffer const &, odocstream &, - OutputParams const &) const; + void latex(otexstream &, OutputParams const &) const; /// - int plaintext(Buffer const &, odocstream &, - OutputParams const &) const; + int plaintext(odocstringstream & ods, OutputParams const & op, + size_t max_length = INT_MAX) const; /// - int docbook(Buffer const &, odocstream &, - OutputParams const &) const; - + int docbook(odocstream &, OutputParams const &) const; + /// + docstring xhtml(XHTMLStream & os, OutputParams const &) const; /** Tell LyX what the latex features you need i.e. what latex packages you need to be included. */ void validate(LaTeXFeatures & features) const; - /// returns LyX code associated with the inset. Used for TOC, ...) - InsetBase::Code lyxCode() const { return InsetBase::GRAPHICS_CODE; } - - /** Set the inset parameters, used by the GUIndependent dialog. - Return true of new params are different from what was so far. - */ - bool setParams(InsetGraphicsParams const & params); - + InsetCode lyxCode() const { return GRAPHICS_CODE; } + /// + docstring layoutName() const { return from_ascii("Graphics"); } /// Get the inset parameters, used by the GUIndependent dialog. InsetGraphicsParams const & params() const; + + /// + int topOffset(BufferView const *) const { return 0; } + /// + int bottomOffset(BufferView const *) const { return 0; } + /// + int leftOffset(BufferView const *) const { return 0; } + /// + int rightOffset(BufferView const *) const { return 0; } + + /// + void metrics(MetricsInfo &, Dimension &) const; /// void draw(PainterInfo & pi, int x, int y) const; /// - void edit(Cursor & cur, bool left); + bool showInsetDialog(BufferView * bv) const; /// - void editGraphics(InsetGraphicsParams const &, Buffer const &) const; + void editGraphics(InsetGraphicsParams const &) const; /// bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const; -protected: - InsetGraphics(InsetGraphics const &); /// - virtual void doDispatch(Cursor & cur, FuncRequest & cmd); -private: - friend class InsetGraphicsMailer; - - virtual std::auto_ptr doClone() const; - - /// Read the inset native format - void readInsetGraphics(Lexer & lex, std::string const & bufpath); - + void addToToc(DocIterator const & di, bool output_active, + UpdateType utype, TocBackend & backend) const; + /// + std::string contextMenuName() const; + /// Force inset into LTR environment if surroundings are RTL + bool forceLTR(OutputParams const &) const { return true; } + /// + void doDispatch(Cursor & cur, FuncRequest & cmd); + /// + Inset * clone() const; /// Get the status message, depends on the image loading status. - std::string const statusMessage() const; + std::string statusMessage() const; + /// Get the output bounding box accounting for raster formats. + void outBoundingBox(graphics::BoundingBox &) const; /// Create the options for the latex command. - std::string const createLatexOptions() const; + std::string createLatexOptions(bool const ps) const; /// Create length values for docbook export. - docstring const toDocbookLength(LyXLength const & len) const; + docstring toDocbookLength(Length const & len) const; /// Create the atributes for docbook export. - docstring const createDocBookAttributes() const; + docstring createDocBookAttributes() const; /// Convert the file if needed, and return the location of the file. - std::string const prepareFile(Buffer const & buf, OutputParams const &) const; + /// This version is for use with LaTeX-style output. + std::string prepareFile(OutputParams const &) const; + /// Convert the file if needed, and return the location of the file. + /// This version is for use with HTML-style output. + /// \return the new filename, relative to the location of the HTML file, + /// or an empty string on error. + std::string prepareHTMLFile(OutputParams const & runparams) const; + /// + OutputParams::CtObject CtObject(OutputParams const &) const { return OutputParams::CT_OBJECT; } +private: /// - InsetGraphicsParams params_; + InsetGraphics(InsetGraphics const &); + /// + InsetGraphicsParams params_; /// holds the entity name that defines the graphics location (SGML). docstring const graphic_label; - + /// + docstring toolTip(BufferView const & bv, int x, int y) const; /// The thing that actually draws the image on LyX's screen. - boost::scoped_ptr const graphic_; + RenderGraphic * graphic_; }; +namespace graphics { -class InsetGraphicsMailer : public MailInset { -public: - /// - InsetGraphicsMailer(InsetGraphics & inset); - /// - virtual InsetBase & inset() const { return inset_; } - /// - virtual std::string const & name() const { return name_; } - /// - virtual std::string const inset2string(Buffer const &) const; - /// - static void string2params(std::string const & data, - Buffer const & buffer, - InsetGraphicsParams &); - /// - static std::string const params2string(InsetGraphicsParams const &, - Buffer const &); -private: - /// - static std::string const name_; - /// - InsetGraphics & inset_; -}; + /// Saves the list of currently used groups in the document. + void getGraphicsGroups(Buffer const &, std::set &); + + /// how many members has the current group? + int countGroupMembers(Buffer const &, std::string const &); + + /// Returns parameters of a given graphics group (except filename). + std::string getGroupParams(Buffer const &, std::string const &); + + /** Synchronize all Graphics insets of the group. + Both groupId and params are taken from argument. + */ + void unifyGraphicsGroups(Buffer &, std::string const &); + InsetGraphics * getCurrentGraphicsInset(Cursor const &); +} // namespace graphics } // namespace lyx -#endif +#endif // INSET_GRAPHICS_H