* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author Jürgen Vigna
- * \author Lars Gullik Bjønnes
+ * \author Jürgen Vigna
+ * \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*/
-#ifndef INSETFLOAT_H
-#define INSETFLOAT_H
+#ifndef INSET_FLOAT_H
+#define INSET_FLOAT_H
-#include "InsetCollapsable.h"
-#include "MailInset.h"
+#include "InsetCaptionable.h"
namespace lyx {
+struct TexString;
-class InsetFloatParams {
+
+class InsetFloatParams
+{
public:
///
- InsetFloatParams() : wide(false), sideways(false), subfloat(false) {}
+ InsetFloatParams() : type("senseless"), wide(false), sideways(false), subfloat(false) {}
///
void write(std::ostream & os) const;
///
std::string type;
///
std::string placement;
- ///
+ /// span columns
bool wide;
///
bool sideways;
};
-/** The float inset
-*/
-class InsetFloat : public InsetCollapsable {
+/////////////////////////////////////////////////////////////////////////
+//
+// InsetFloat
+//
+/////////////////////////////////////////////////////////////////////////
+
+/// Used for "floating" objects like tables, figures etc.
+class InsetFloat : public InsetCaptionable
+{
public:
+ InsetFloat(Buffer * buffer, std::string params_str);
+ ///
+ static void string2params(std::string const &, InsetFloatParams &);
+ ///
+ static std::string params2string(InsetFloatParams const &);
+ ///
+ void setWide(bool w, bool update_label = true);
+ ///
+ void setSideways(bool s, bool update_label = true);
+ ///
+ void setSubfloat(bool s, bool update_label = true);
+ ///
+ void setNewLabel();
///
- InsetFloat(Buffer const &, std::string const &);
+ InsetFloatParams const & params() const { return params_; }
+ ///
+ bool allowsCaptionVariation(std::string const &) const;
+private:
///
- ~InsetFloat();
+ void setCaptionType(std::string const & type);
///
- docstring name() const { return name_; }
+ docstring layoutName() const;
+ ///
+ docstring toolTip(BufferView const & bv, int x, int y) const;
///
void write(std::ostream & os) const;
///
///
InsetCode lyxCode() const { return FLOAT_CODE; }
///
- int latex(odocstream &, OutputParams const &) const;
+ void latex(otexstream &, OutputParams const &) const;
///
- int plaintext(odocstream &, OutputParams const &) const;
+ int plaintext(odocstringstream & ods, OutputParams const & op,
+ size_t max_length = INT_MAX) const;
///
int docbook(odocstream &, OutputParams const &) const;
///
- docstring editMessage() const;
+ docstring xhtml(XHTMLStream &, OutputParams const &) const;
///
bool insetAllowed(InsetCode) const;
- /** returns true if, when outputing LaTeX, font changes should
+ /** returns false if, when outputing LaTeX, font changes should
be closed before generating this inset. This is needed for
insets that may contain several paragraphs */
- bool noFontChange() const { return true; }
- ///
- void wide(bool w, BufferParams const &);
- ///
- void sideways(bool s, BufferParams const &);
- ///
- void subfloat(bool s, BufferParams const &);
- ///
- bool showInsetDialog(BufferView *) const;
- ///
- InsetFloatParams const & params() const { return params_; }
-private:
+ bool inheritFont() const { return false; }
///
bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
- // Update the counters of this inset and of its contents
- void updateLabels(ParIterator const &);
+ ///
+ bool hasSubCaptions(ParIterator const & it) const;
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
///
Inset * clone() const { return new InsetFloat(*this); }
///
- docstring getCaption(OutputParams const &) const;
- ///
- InsetFloatParams params_;
- ///
- docstring name_;
-};
-
+ TexString getCaption(OutputParams const &) const;
-class InsetFloatMailer : public MailInset {
-public:
- ///
- InsetFloatMailer(InsetFloat & 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 &, InsetFloatParams &);
- ///
- static std::string const params2string(InsetFloatParams const &);
-private:
- ///
- static std::string const name_;
- ///
- InsetFloat & inset_;
+ InsetFloatParams params_;
};
} // namespace lyx
-#endif
+#endif // INSET_FLOAT_H