]> git.lyx.org Git - lyx.git/blobdiff - src/insets/insetfloat.C
fix #832
[lyx.git] / src / insets / insetfloat.C
index 7565a0d5261115df5de12fad5109da05f99480a4..54295b4d8ddb688be3c8a46bcc8ccc3f7434290e 100644 (file)
@@ -8,8 +8,8 @@
  *
  * Full author contact details are available in file CREDITS
  */
-#include <config.h>
 
+#include <config.h>
 
 #include "insetfloat.h"
 #include "insettext.h"
 #include "gettext.h"
 #include "iterators.h"
 #include "LaTeXFeatures.h"
+#include "Lsstream.h"
 #include "lyxfont.h"
 #include "lyxlex.h"
 #include "lyxtext.h"
+#include "Lsstream.h"
 
 #include "support/LOstream.h"
 #include "support/lstrings.h"
+#include "support/tostr.h"
 
 #include "frontends/LyXView.h"
 #include "frontends/Dialogs.h"
@@ -36,6 +39,7 @@
 using std::ostream;
 using std::endl;
 
+
 // With this inset it will be possible to support the latex package
 // float.sty, and I am sure that with this and some additional support
 // classes we can support similar functionality in other formats
@@ -137,7 +141,7 @@ InsetFloat::InsetFloat(BufferParams const & bp, string const & type)
        setInsetName(type);
        LyXTextClass const & tclass = bp.getLyXTextClass();
        if (tclass.hasLayout(caplayout))
-               inset.paragraph()->layout(tclass[caplayout]);
+               inset.paragraphs.begin()->layout(tclass[caplayout]);
 }
 
 
@@ -165,14 +169,15 @@ dispatch_result InsetFloat::localDispatch(FuncRequest const & cmd)
                params_.placement = params.placement;
                params_.wide      = params.wide;
 
-               cmd.view()->updateInset(this, true);
+               wide(params_.wide, cmd.view()->buffer()->params);
+               cmd.view()->updateInset(this);
                result = DISPATCHED;
        }
        break;
 
        case LFUN_INSET_DIALOG_UPDATE: {
                InsetFloatMailer mailer(*this);
-               mailer.updateDialog();
+               mailer.updateDialog(cmd.view());
        }
        break;
 
@@ -245,7 +250,7 @@ void InsetFloat::read(Buffer const * buf, LyXLex & lex)
 
 void InsetFloat::validate(LaTeXFeatures & features) const
 {
-       if (contains(placement(), "H")) {
+       if (contains(params_.placement, "H")) {
                features.require("float");
        }
 
@@ -335,32 +340,12 @@ bool InsetFloat::showInsetDialog(BufferView * bv) const
        if (!inset.showInsetDialog(bv)) {
                InsetFloat * tmp = const_cast<InsetFloat *>(this);
                InsetFloatMailer mailer(*tmp);
-               mailer.showDialog();
+               mailer.showDialog(bv);
        }
        return true;
 }
 
 
-string const & InsetFloat::type() const
-{
-       return params_.type;
-}
-
-
-void InsetFloat::placement(string const & p)
-{
-       // FIX: Here we should only allow the placement to be set
-       // if a valid value.
-       params_.placement = p;
-}
-
-
-string const & InsetFloat::placement() const
-{
-       return params_.placement;
-}
-
-
 void InsetFloat::wide(bool w, BufferParams const & bp)
 {
        params_.wide = w;
@@ -375,15 +360,9 @@ void InsetFloat::wide(bool w, BufferParams const & bp)
 }
 
 
-bool InsetFloat::wide() const
-{
-       return params_.wide;
-}
-
-
 void InsetFloat::addToToc(toc::TocList & toclist, Buffer const * buf) const
 {
-       ParIterator pit(inset.paragraph());
+       ParIterator pit(&*inset.paragraphs.begin());
        ParIterator end;
 
        // Find a caption layout in one of the (child inset's) pars
@@ -391,7 +370,7 @@ void InsetFloat::addToToc(toc::TocList & toclist, Buffer const * buf) const
                Paragraph * tmp = *pit;
 
                if (tmp->layout()->name() == caplayout) {
-                       string const name = floatname(type(), buf->params);
+                       string const name = floatname(params_.type, buf->params);
                        string const str =
                                tostr(toclist[name].size() + 1)
                                + ". " + tmp->asString(buf, false);
@@ -420,7 +399,10 @@ void InsetFloatMailer::string2params(string const & in,
 {
        params = InsetFloatParams();
 
-       istringstream data(in);
+       if (in.empty())
+               return;
+       
+       istringstream data(STRCONV(in));
        LyXLex lex(0,0);
        lex.setStream(data);
 
@@ -440,16 +422,16 @@ void InsetFloatMailer::string2params(string const & in,
                        return;
        }
 
-       params.read(lex);
+       if (lex.isOK()) {
+               params.read(lex);
+       }
 }
 
 
-string const
-InsetFloatMailer::params2string(InsetFloatParams const & params)
+string const InsetFloatMailer::params2string(InsetFloatParams const & params)
 {
        ostringstream data;
        data << name_ << ' ';
        params.write(data);
-
-       return data.str();
+       return STRCONV(data.str());
 }