]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetfloat.C
reformatting and remove using delc
[lyx.git] / src / insets / insetfloat.C
index b4777149246274b0a985609ca98b89cf21012bd5..e4f9803d484882f3a47c8d96e59ae5fca8cd728a 100644 (file)
@@ -3,9 +3,9 @@
  * 
  *           LyX, The Document Processor
  *      
- *          Copyright 1998 The LyX Team.
+ *          Copyright 1998-2000 The LyX Team.
  *
- *======================================================*/
+ * ====================================================== */
 
 #include <config.h>
 
@@ -76,10 +76,27 @@ using std::endl;
 //   \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;
@@ -90,22 +107,21 @@ InsetFloat::InsetFloat(string const & 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);
@@ -116,10 +132,10 @@ void InsetFloat::Read(Buffer const * buf, LyXLex & lex)
 {
        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;
@@ -131,14 +147,14 @@ void InsetFloat::Read(Buffer const * buf, LyXLex & lex)
 
 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;
@@ -154,19 +170,29 @@ string const InsetFloat::EditMessage() const
 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) ||
@@ -179,7 +205,7 @@ bool InsetFloat::InsertInsetAllowed(Inset * in) const
 
 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
@@ -187,6 +213,7 @@ void InsetFloat::InsetButtonRelease(BufferView * bv, int x, int y, int button)
                // 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);
        }
@@ -195,7 +222,22 @@ void InsetFloat::InsetButtonRelease(BufferView * bv, int x, int y, int 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_;
 }
 
 
@@ -204,12 +246,12 @@ void InsetFloat::wide(bool w)
        wide_ = w;
        if (wide_) {
                string lab(_("float:"));
-               lab += floatType;
+               lab += floatType_;
                lab += "*";
                setLabel(lab);
        } else {
                string lab(_("float:"));
-               lab += floatType;
+               lab += floatType_;
                setLabel(lab);
        }
 }