3 * \file math_hullinset.h
4 * This file is part of LyX, the document processor.
5 * Licence details can be found in the file COPYING.
9 * Full author contact details are available in file CREDITS.
12 #ifndef MATH_HULLINSET_H
13 #define MATH_HULLINSET_H
15 #include "math_gridinset.h"
18 /// This provides an interface between "LyX insets" and "LyX math insets"
19 class MathHullInset : public MathGridInset {
24 explicit MathHullInset(std::string const & type);
26 std::auto_ptr<InsetBase> clone() const;
28 mode_type currentMode() const;
30 void metrics(MetricsInfo & mi, Dimension & dim) const;
32 void draw(PainterInfo &, int x, int y) const;
34 void metricsT(TextMetricsInfo const & mi, Dimension & dim) const;
36 void drawT(TextPainter &, int x, int y) const;
38 std::string label(row_type row) const;
40 void label(row_type row, std::string const & label);
42 void numbered(row_type row, bool num);
44 bool numbered(row_type row) const;
46 bool numberedType() const;
49 /// Appends \c list with all labels found within this inset.
50 void getLabelList(Buffer const &,
51 std::vector<std::string> & list) const;
53 void validate(LaTeXFeatures & features) const;
54 /// identifies MatrixInsets
55 MathHullInset const * asHullInset() const { return this; }
56 /// identifies HullInset
57 MathHullInset * asHullInset() { return this; }
60 void addRow(row_type row);
62 void delRow(row_type row);
64 void swapRow(row_type row);
66 void addCol(col_type col);
68 void delCol(col_type col);
71 std::string const & getType() const;
73 void mutate(std::string const &);
76 int defaultColSpace(col_type col);
78 char defaultColAlign(col_type col);
80 bool idxFirst(LCursor &) const;
82 bool idxLast(LCursor &) const;
85 void write(WriteStream & os) const;
87 void mathmlize(MathMLStream &) const;
89 void normalize(NormalStream &) const;
91 void infoize(std::ostream & os) const;
94 void write(Buffer const &, std::ostream & os) const;
96 void read(Buffer const &, LyXLex & lex);
98 int plaintext(Buffer const &, std::ostream &,
99 OutputParams const &) const;
101 int linuxdoc(Buffer const &, std::ostream &,
102 OutputParams const &) const;
104 int docbook(Buffer const &, std::ostream &,
105 OutputParams const &) const;
108 //bool insetAllowed(Code code) const;
110 //void addPreview(lyx::graphics::PreviewLoader &) const;
115 void priv_dispatch(LCursor & cur, FuncRequest & cmd);
116 /// do we want to handle this event?
117 bool getStatus(LCursor & cur, FuncRequest const & cmd,
118 FuncStatus & status) const;
120 std::string eolString(row_type row, bool fragile) const;
124 void setType(std::string const & type);
126 void validate1(LaTeXFeatures & features);
128 void header_write(WriteStream &) const;
130 void footer_write(WriteStream &) const;
132 std::string nicelabel(row_type row) const;
134 void doExtern(LCursor & cur, FuncRequest & func);
138 char const * standardFont() const;
139 /// consistency check
141 /// can this change its number of cols?
142 bool colChangeOK() const;
144 /// "none", "simple", "display", "eqnarray",...
147 std::vector<int> nonum_;
149 std::vector<std::string> label_;
155 /// what appears in the minibuffer when opening
156 virtual std::string const editMessage() const;
158 virtual void getCursorDim(int &, int &) const;
160 /// To allow transparent use of math editing functions
161 //virtual void status(FuncRequest &);
164 virtual bool searchForward(BufferView *, std::string const &,
165 bool = true, bool = false);
167 virtual bool searchBackward(BufferView *, std::string const &,
168 bool = true, bool = false);
170 virtual bool isTextInset() const { return true; }
172 virtual void mutateToText();
174 virtual void revealCodes(LCursor & cur) const;
176 virtual EDITABLE editable() const { return HIGHLY_EDITABLE; }
178 void edit(LCursor & cur, bool left);
180 bool display() const;
182 Code lyxCode() const;
186 void handleFont(LCursor &, std::string const & arg, std::string const & font);
188 void handleFont2(LCursor &, std::string const & arg);