lyx_mirror/src/insets/InsetBox.h
Richard Heck dc88d6ecd2 Restore XHTML for InsetBox.
I guess that this should be "inline", that is, appear where it appears
in the LyX file, as opposed to being deferred until after the current
paragraph is output. But I'm not sure about this. If anyone has a view,
let me know.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@32215 a592a061-630c-0410-9148-cb99ea01b6c8
2009-11-26 16:38:26 +00:00

145 lines
2.8 KiB
C++

// -*- C++ -*-
/**
* \file InsetBox.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Angus Leeming
* \author Martin Vermeer
*
* Full author contact details are available in file CREDITS.
*/
#ifndef INSETBOX_H
#define INSETBOX_H
#include "InsetCollapsable.h"
#include "Length.h"
namespace lyx {
class InsetBoxParams
{
public:
///
InsetBoxParams(std::string const &);
///
void write(std::ostream & os) const;
///
void read(Lexer & lex);
///
std::string type;
/// Use a parbox (true) or minipage (false)
bool use_parbox;
/// Do we have an inner parbox or minipage to format paragraphs to
/// columnwidth?
bool inner_box;
///
Length width;
/// "special" widths, see usrguide.dvi §3.5
std::string special;
///
char pos;
///
char hor_pos;
///
char inner_pos;
///
Length height;
///
std::string height_special;
};
///////////////////////////////////////////////////////////////////////
//
// The fbox/fancybox inset
//
///////////////////////////////////////////////////////////////////////
class InsetBox : public InsetCollapsable
{
public:
///
enum BoxType {
Frameless,
Boxed,
Framed,
ovalbox,
Ovalbox,
Shadowbox,
Shaded,
Doublebox
};
///
InsetBox(Buffer *, std::string const &);
///
~InsetBox();
///
static std::string params2string(InsetBoxParams const &);
///
static void string2params(std::string const &, InsetBoxParams &);
private:
///
friend class InsetBoxParams;
///
InsetCode lyxCode() const { return BOX_CODE; }
///
docstring name() const;
///
void write(std::ostream &) const;
///
void read(Lexer & lex);
///
void setButtonLabel();
///
void metrics(MetricsInfo &, Dimension &) const;
/// show the Box dialog
bool showInsetDialog(BufferView * bv) const;
///
DisplayType display() const { return Inline; }
///
bool allowParagraphCustomization(idx_type = 0) const { return !forcePlainLayout(); }
///
bool forcePlainLayout(idx_type = 0) const;
///
bool neverIndent() const { return true; }
///
bool noFontChange() const { return true; }
///
int latex(odocstream &, OutputParams const &) const;
///
int plaintext(odocstream &, OutputParams const &) const;
///
int docbook(odocstream &, OutputParams const &) const;
///
docstring xhtml(XHTMLStream &, OutputParams const &) const;
///
void validate(LaTeXFeatures &) const;
///
InsetBoxParams const & params() const { return params_; }
///
bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const;
///
void doDispatch(Cursor & cur, FuncRequest & cmd);
/// Is the width forced to some value?
bool hasFixedWidth() const;
///
Inset * clone() const { return new InsetBox(*this); }
/// used by the constructors
void init();
///
docstring contextMenu(BufferView const & bv, int x, int y) const;
///
InsetBoxParams params_;
};
} // namespace lyx
#endif // INSETBOX_H