X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2Finsetfloat.C;h=7c164979a50f4fa3d838fdab20450524cc26a35c;hb=b1fb034c3be30101b06286f74815a708142d52e8;hp=2eddcad7794d65543bc9d70e0e23034ea9eb737a;hpb=e22ee4208daabef736f94ff479701a66e07255f9;p=lyx.git diff --git a/src/insets/insetfloat.C b/src/insets/insetfloat.C index 2eddcad779..7c164979a5 100644 --- a/src/insets/insetfloat.C +++ b/src/insets/insetfloat.C @@ -8,8 +8,8 @@ * * Full author contact details are available in file CREDITS */ -#include +#include #include "insetfloat.h" #include "insettext.h" @@ -23,12 +23,15 @@ #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,10 +169,18 @@ 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(cmd.view()); + } + break; + default: result = InsetCollapsable::localDispatch(cmd); } @@ -238,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"); } @@ -328,32 +340,12 @@ bool InsetFloat::showInsetDialog(BufferView * bv) const if (!inset.showInsetDialog(bv)) { InsetFloat * tmp = const_cast(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; @@ -368,27 +360,19 @@ 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 end; + ParIterator pit(inset.paragraphs.begin(), inset.paragraphs); + ParIterator end(inset.paragraphs.end(), inset.paragraphs); - // Find a caption layout in one of the (child inset's) pars +a // Find a caption layout in one of the (child inset's) pars for (; pit != end; ++pit) { - Paragraph * tmp = *pit; - - if (tmp->layout()->name() == caplayout) { - string const name = floatname(type(), buf->params); + if (pit->layout()->name() == caplayout) { + string const name = floatname(params_.type, buf->params); string const str = tostr(toclist[name].size() + 1) - + ". " + tmp->asString(buf, false); - toc::TocItem const item(tmp->id(), 0 , str); + + ". " + pit->asString(buf, false); + toc::TocItem const item(pit->id(), 0 , str); toclist[name].push_back(item); } } @@ -413,7 +397,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); @@ -433,16 +420,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()); }