]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetGraphics.h
Fix bug #11180
[lyx.git] / src / insets / InsetGraphics.h
index 884f03c51a16fb56677c8ffe9f1519eae8e26d21..27f9cf1caf8583e56e78c78d7c159b2ad3641c98 100644 (file)
@@ -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.
  */
 
 #include "Inset.h"
 #include "InsetGraphicsParams.h"
-#include "MailInset.h"
-
-#include <boost/scoped_ptr.hpp>
-#include <boost/signals/trackable.hpp>
 
+#include <set>
 
 namespace lyx {
 
 class RenderGraphic;
 class LaTeXFeatures;
 
-///
-class InsetGraphics : public Inset, public boost::signals::trackable {
+/////////////////////////////////////////////////////////////////////////
+//
+// InsetGraphics
+//
+/////////////////////////////////////////////////////////////////////////
+
+/// Used for images etc.
+class InsetGraphics : public Inset
+{
 public:
        ///
-       InsetGraphics();
+       InsetGraphics(Buffer * buf);
        ///
        ~InsetGraphics();
+
        ///
-       void 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; };
+
+private:
        ///
-       void read(Buffer const &, Lexer & lex);
+       InsetGraphics(InsetGraphics const &);
 
+       ///
+       bool isLabeled() const { return true; }
+       void metrics(MetricsInfo &, Dimension &) const;
+       ///
+       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, ...)
        InsetCode lyxCode() const { return 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);
-
+       ///
+       docstring layoutName() const { return from_ascii("Graphics"); }
        /// Get the inset parameters, used by the GUIndependent dialog.
        InsetGraphicsParams const & params() 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;
-       /// all graphics can be embedded
-       void registerEmbeddedFiles(Buffer const &, EmbeddedFiles &) const;
        ///
-       void updateEmbeddedFile(Buffer const &, EmbeddedFile const &);
-protected:
-       InsetGraphics(InsetGraphics const &);
+       void addToToc(DocIterator const & di, bool output_active,
+                                 UpdateType utype, TocBackend & backend) const;
        ///
-       virtual void doDispatch(Cursor & cur, FuncRequest & cmd);
-private:
-       friend class InsetGraphicsMailer;
-
-       virtual Inset * clone() const;
-
-       /// Read the inset native format
-       void readInsetGraphics(Lexer & lex, std::string const & bufpath);
-
+       std::string contextMenuName() const;
+       /// Force inset into LTR environment if surroundings are RTL
+       bool forceLTR() 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(Length 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;
 
        ///
        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<RenderGraphic> const graphic_;
+       RenderGraphic * graphic_;
 };
 
+namespace graphics {
 
-class InsetGraphicsMailer : public MailInset {
-public:
-       ///
-       InsetGraphicsMailer(InsetGraphics & inset);
-       ///
-       virtual Inset & 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<std::string> &);
+
+       /// 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