#include "Dimension.h"
#include "DispatchResult.h"
#include "FloatList.h"
+#include "FuncRequest.h"
#include "FuncStatus.h"
#include "InsetLayout.h"
#include "Language.h"
#include "LaTeXFeatures.h"
#include "Lexer.h"
-#include "FuncRequest.h"
#include "MetricsInfo.h"
#include "ParagraphParameters.h"
#include "TextClass.h"
#include "support/debug.h"
#include "support/docstream.h"
#include "support/gettext.h"
+#include "support/lassert.h"
using namespace std;
-namespace lyx {
+namespace lyx {
InsetCollapsable::CollapseStatus InsetCollapsable::status() const
{
{
Dimension dim = dimensionCollapsed();
if (geometry() == NoButton)
- return layout_->labelstring();
+ return translateIfPossible(layout_->labelstring());
if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des)
return docstring();
+ docstring default_tip;
switch (status_) {
case Open:
- return _("Left-click to collapse the inset");
+ default_tip = _("Left-click to collapse the inset");
+ break;
case Collapsed:
- return _("Left-click to open the inset");
+ default_tip = _("Left-click to open the inset");
+ break;
}
- return docstring();
+
+ OutputParams rp(&buffer().params().encoding());
+ odocstringstream ods;
+ InsetText::plaintext(ods, rp);
+ docstring content_tip = ods.str();
+ // shorten it if necessary
+ if (content_tip.size() > 200)
+ content_tip = content_tip.substr(0, 200) + "...";
+ if (!isOpen() && !content_tip.empty())
+ return content_tip + '\n' + default_tip;
+ return default_tip;
}
{
if (dc) {
layout_ = &(dc->insetLayout(name()));
- labelstring_ = layout_->labelstring();
+ labelstring_ = translateIfPossible(layout_->labelstring());
} else {
layout_ = &DocumentClass::emptyInsetLayout();
labelstring_ = _("UNDEFINED");
Dimension InsetCollapsable::dimensionCollapsed() const
{
- BOOST_ASSERT(layout_);
+ LASSERT(layout_, /**/);
Dimension dim;
theFontMetrics(layout_->labelfont()).buttonText(
labelstring_, dim.wid, dim.asc, dim.des);
void InsetCollapsable::metrics(MetricsInfo & mi, Dimension & dim) const
{
- BOOST_ASSERT(layout_);
+ LASSERT(layout_, /**/);
autoOpen_ = mi.base.bv->cursor().isInside(this);
void InsetCollapsable::draw(PainterInfo & pi, int x, int y) const
{
- BOOST_ASSERT(layout_);
+ LASSERT(layout_, /**/);
autoOpen_ = pi.base.bv->cursor().isInside(this);
ColorCode const old_color = pi.background_color;
{
if (geometry() == ButtonOnly)
status_ = Open;
- BOOST_ASSERT(geometry() != ButtonOnly);
+ LASSERT(geometry() != ButtonOnly, /**/);
InsetText::cursorPos(bv, sl, boundary, x, y);
Dimension const textdim = InsetText::dimension(bv);
}
-void InsetCollapsable::edit(
- Cursor & cur, bool front, EntryDirection entry_from)
+void InsetCollapsable::edit(Cursor & cur, bool front, EntryDirection entry_from)
{
//lyxerr << "InsetCollapsable: edit left/right" << endl;
cur.push(*this);
case LFUN_ACCENT_HUNGARIAN_UMLAUT:
case LFUN_ACCENT_MACRON:
case LFUN_ACCENT_OGONEK:
- case LFUN_ACCENT_SPECIAL_CARON:
case LFUN_ACCENT_TIE:
case LFUN_ACCENT_TILDE:
case LFUN_ACCENT_UMLAUT:
case LFUN_ACCENT_UNDERBAR:
case LFUN_ACCENT_UNDERDOT:
case LFUN_APPENDIX:
- case LFUN_BIBITEM_INSERT:
case LFUN_BOX_INSERT:
case LFUN_BRANCH_INSERT:
case LFUN_NEWLINE_INSERT:
case LFUN_CAPTION_INSERT:
case LFUN_DEPTH_DECREMENT:
case LFUN_DEPTH_INCREMENT:
- case LFUN_ENVIRONMENT_INSERT:
case LFUN_ERT_INSERT:
case LFUN_FILE_INSERT:
case LFUN_FLEX_INSERT:
case LFUN_FLOAT_INSERT:
- case LFUN_FLOAT_LIST:
+ case LFUN_FLOAT_LIST_INSERT:
case LFUN_FLOAT_WIDE_INSERT:
case LFUN_FONT_BOLD:
case LFUN_FONT_TYPEWRITER:
case LFUN_FONT_DEFAULT:
case LFUN_FONT_EMPH:
- case LFUN_FONT_FREE_APPLY:
- case LFUN_FONT_FREE_UPDATE:
+ case LFUN_TEXTSTYLE_APPLY:
+ case LFUN_TEXTSTYLE_UPDATE:
case LFUN_FONT_NOUN:
case LFUN_FONT_ROMAN:
case LFUN_FONT_SANS:
case LFUN_TOC_INSERT:
case LFUN_WRAP_INSERT:
if (layout_->isPassThru()) {
- flag.enabled(false);
+ flag.setEnabled(false);
return true;
}
return InsetText::getStatus(cur, cmd, flag);
case LFUN_INSET_TOGGLE:
- if ((cmd.argument() == "open" && status_ != Open)
- || (cmd.argument() == "close" && status_ == Open)
- || cmd.argument() == "toggle" || cmd.argument().empty())
- flag.enabled(true);
- else
- flag.enabled(false);
+ if (cmd.argument() == "open")
+ flag.setEnabled(status_ != Open);
+ else if (cmd.argument() == "close")
+ flag.setEnabled(status_ == Open);
+ else if (cmd.argument() == "toggle" || cmd.argument().empty()) {
+ flag.setEnabled(true);
+ flag.setOnOff(status_ == Open);
+ } else
+ flag.setEnabled(false);
return true;
case LFUN_LANGUAGE:
- flag.enabled(!layout_->isForceLtr());
+ flag.setEnabled(!layout_->isForceLtr());
return InsetText::getStatus(cur, cmd, flag);
case LFUN_BREAK_PARAGRAPH:
- case LFUN_BREAK_PARAGRAPH_SKIP:
- flag.enabled(layout_->isMultiPar());
+ flag.setEnabled(layout_->isMultiPar());
return true;
default:
{
status_ = status;
setButtonLabel();
- if (status_ == Collapsed)
+ if (status_ == Collapsed) {
cur.leaveInset(*this);
+ mouse_hover_ = false;
+ }
}