*
* 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);
-// setInsetName("Float");
- floatType = type;
- setInsetName(type.c_str());
- //floatPlacement = "H";
+ floatType_ = type;
+ setInsetName(type);
}
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);
string 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() const
+Inset * InsetFloat::Clone(Buffer const &) const
{
- InsetFloat * result = new InsetFloat(floatType);
+ InsetFloat * result = new InsetFloat(floatType_);
result->inset->init(inset);
result->collapsed = collapsed;
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;
}
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);
}
}