*
* LyX, The Document Processor
*
- * Copyright 1998 The LyX Team.
+ * Copyright 1998-2000 The LyX Team.
*
- *======================================================*/
+ * ====================================================== */
#include <config.h>
// \newfloat{algorithm}{htbp}{loa}[<sect>]
// \floatname{algorithm}{Algorithm}
//
+// The intention is that floats should be definable from two places:
+// - layout files
+// - the "gui" (i.e. by the user)
+//
+// From layout files.
+// This should only be done for floats defined in a documentclass and that
+// does not need any additional packages. The two most known floats in this
+// category is "table" and "figure". Floats defined in layout files are only
+// stored in lyx files if the user modifies them.
+//
+// By the user.
+// There should be a gui dialog (and also a collection of lyxfuncs) where
+// the user can modify existing floats and/or create new ones.
+//
+// The individual floats will also have some settable
+// variables: wide and placement.
+//
// Lgb
InsetFloat::InsetFloat(string const & type)
- : InsetCollapsable()
+ : InsetCollapsable(), wide_(false)
{
string lab(_("float:"));
lab += type;
font.setColor(LColor::footnote);
setLabelFont(font);
setAutoCollapse(false);
- floatType = type;
+ floatType_ = type;
setInsetName(type);
- //floatPlacement = "H";
}
void InsetFloat::Write(Buffer const * buf, ostream & os) const
{
os << "Float " // getInsetName()
- << floatType << '\n';
+ << floatType_ << '\n';
- if (floatPlacement.empty()) {
+ if (floatPlacement_.empty()) {
os << "placement "
- << floatList.getType(floatType).placement << "\n";
+ << floatList.getType(floatType_).placement() << "\n";
} else {
- os << "placement " << floatPlacement << "\n";
+ os << "placement " << floatPlacement_ << "\n";
}
InsetCollapsable::Write(buf, os);
{
if (lex.IsOK()) {
lex.next();
- string token = lex.GetString();
+ string const token = lex.GetString();
if (token == "placement") {
lex.next();
- floatPlacement = lex.GetString();
+ floatPlacement_ = lex.GetString();
} else {
lyxerr << "InsetFloat::Read: Missing placement!"
<< endl;
void InsetFloat::Validate(LaTeXFeatures & features) const
{
- features.usedFloats.insert(floatType);
+ features.usedFloats.insert(floatType_);
}
Inset * InsetFloat::Clone(Buffer const &) const
{
- InsetFloat * result = new InsetFloat(floatType);
- result->inset->init(inset);
+ InsetFloat * result = new InsetFloat(floatType_);
+ result->inset.init(&inset);
result->collapsed = collapsed;
return result;
int InsetFloat::Latex(Buffer const * buf,
ostream & os, bool fragile, bool fp) const
{
- os << "\\begin{" << floatType << "}";
- if (!floatPlacement.empty()
- && floatPlacement != floatList.defaultPlacement(floatType))
- os << "[" << floatPlacement << "]";
+ os << "\\begin{" << floatType_ << "}";
+ if (!floatPlacement_.empty()
+ && floatPlacement_ != floatList.defaultPlacement(floatType_))
+ os << "[" << floatPlacement_ << "]";
os << "%\n";
- int i = inset->Latex(buf, os, fragile, fp);
- os << "\\end{" << floatType << "}%\n";
+ int const i = inset.Latex(buf, os, fragile, fp);
+ os << "\\end{" << floatType_ << "}%\n";
return i + 2;
}
+int InsetFloat::DocBook(Buffer const * buf, ostream & os) const
+{
+ os << "<" << floatType_ << ">";
+ int const i = inset.DocBook(buf, os);
+ os << "</" << floatType_ << ">";
+
+ return i;
+}
+
+
bool InsetFloat::InsertInsetAllowed(Inset * in) const
{
if ((in->LyxCode() == Inset::FOOT_CODE) ||
void InsetFloat::InsetButtonRelease(BufferView * bv, int x, int y, int button)
{
- if (x >= 0
+ if (x >= top_x
&& x < button_length
&& y >= button_top_y
&& y < button_bottom_y
// This obviously need to change.
lyxerr << "InsetFloat: Let's edit this floats parameters!"
<< endl;
+ //bv->owner()->getDialogs()->showFloat(this);
} else {
InsetCollapsable::InsetButtonRelease(bv, x, y, button);
}
string const & InsetFloat::type() const
{
- return floatType;
+ return floatType_;
+}
+
+
+void InsetFloat::placement(string const & p)
+{
+ // Here we should only allow the placement to be set
+ // if a valid value.
+#warning FIX!
+ floatPlacement_ = p;
+}
+
+
+string const & InsetFloat::placement() const
+{
+ return floatPlacement_;
}
wide_ = w;
if (wide_) {
string lab(_("float:"));
- lab += floatType;
+ lab += floatType_;
lab += "*";
setLabel(lab);
} else {
string lab(_("float:"));
- lab += floatType;
+ lab += floatType_;
setLabel(lab);
}
}