/* This file is part of
* ======================================================
- *
+ *
* LyX, The Document Processor
- *
+ *
* Copyright 1998 The LyX Team.
*
*======================================================*/
#include "gettext.h"
#include "lyxfont.h"
#include "BufferView.h"
-#include "LyXView.h"
+#include "frontends/LyXView.h"
#include "frontends/Dialogs.h"
#include "lyxtext.h"
#include "insets/insettext.h"
// have to output "" for minipages.
// (Lgb)
-InsetMinipage::InsetMinipage()
- : InsetCollapsable(), pos_(center),
- inner_pos_(inner_center)
+InsetMinipage::InsetMinipage(BufferParams const & bp)
+ : InsetCollapsable(bp), pos_(center),
+ inner_pos_(inner_center), width_(100, LyXLength::PW)
{
setLabel(_("minipage"));
LyXFont font(LyXFont::ALL_SANE);
#if 0
setAutoCollapse(false);
#endif
+
+#if 0
#ifdef WITH_WARNINGS
#warning Remove this color definitions before 1.2.0 final!
#endif
// just for experimentation :)
setBackgroundColor(LColor::green);
+#endif
+
inset.setFrameColor(0, LColor::blue);
setInsetName("Minipage");
- width_ = "100%"; // set default to 100% of column_width
}
}
-void InsetMinipage::write(Buffer const * buf, ostream & os) const
+void InsetMinipage::write(Buffer const * buf, ostream & os) const
{
os << getInsetName() << "\n"
<< "position " << pos_ << "\n"
<< "inner_position " << inner_pos_ << "\n"
- << "height \"" << height_ << "\"\n"
- << "width \"" << width_ << "\"\n";
+ << "height \"" << height_.asString() << "\"\n"
+ << "width \"" << width_.asString() << "\"\n";
InsetCollapsable::write(buf, os);
}
string const token = lex.getString();
if (token == "height") {
lex.next();
- height_ = lex.getString();
+ height_ = LyXLength(lex.getString());
} else {
lyxerr << "InsetMinipage::Read: Missing 'height'-tag!"
<< endl;
string const token = lex.getString();
if (token == "width") {
lex.next();
- width_ = lex.getString();
+ width_ = LyXLength(lex.getString());
} else {
lyxerr << "InsetMinipage::Read: Missing 'width'-tag!"
<< endl;
break;
}
os << "\\begin{minipage}[" << s_pos << "]{"
- << LyXLength(width_).asLatexString() << "}%\n";
-
+ << width_.asLatexString() << "}%\n";
+
int i = inset.latex(buf, os, fragile, fp);
os << "\\end{minipage}%\n";
}
-InsetMinipage::Position InsetMinipage::pos() const
+InsetMinipage::Position InsetMinipage::pos() const
{
return pos_;
}
}
-string const & InsetMinipage::pageHeight() const
+LyXLength const & InsetMinipage::pageHeight() const
{
return height_;
}
-void InsetMinipage::pageHeight(string const & ll)
+void InsetMinipage::pageHeight(LyXLength const & ll)
{
if (height_ != ll) {
height_ = ll;
}
-string const & InsetMinipage::pageWidth() const
+LyXLength const & InsetMinipage::pageWidth() const
{
return width_;
}
-void InsetMinipage::pageWidth(string const & ll)
+void InsetMinipage::pageWidth(LyXLength const & ll)
{
if (ll != width_) {
width_ = ll;
const
{
if (owner() &&
- (static_cast<UpdatableInset*>(owner())->getMaxWidth(bv, inset) < 0))
- {
+ static_cast<UpdatableInset*>(owner())->getMaxWidth(bv, inset) < 0) {
return -1;
}
- if (!width_.empty()) {
- LyXLength len(width_);
- switch(len.unit()) {
- case LyXLength::PW: // Always % of workarea
- case LyXLength::PE:
- case LyXLength::PP:
- case LyXLength::PL:
- return (InsetCollapsable::getMaxWidth(bv, inset) * (int)len.value()) / 100;
- default:
- {
- int ww1 = VSpace(width_).inPixels(bv);
- int ww2 = InsetCollapsable::getMaxWidth(bv, inset);
- if (ww2 > 0 && ww2 < ww1) {
- return ww2;
- }
- return ww1;
- }
+ if (!width_.zero()) {
+ int ww1 = latexTextWidth(bv);
+ int ww2 = InsetCollapsable::getMaxWidth(bv, inset);
+ if (ww2 > 0 && ww2 < ww1) {
+ return ww2;
}
+ return ww1;
}
// this should not happen!
return InsetCollapsable::getMaxWidth(bv, inset);
}
+
+
+int InsetMinipage::latexTextWidth(BufferView * bv) const
+{
+ return width_.inPixels(InsetCollapsable::latexTextWidth(bv),
+ bv->text->defaultHeight());
+}