Fix bug #6672 (part 2): Add tooltips to the outliner.

At some point we should implement that the tooltips are only shown when they are not completely shown in the outliner. However, this requires extending the QTreeView class. 

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@34287 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Vincent van Ravesteijn 2010-04-26 00:43:08 +00:00
parent acff67f259
commit c6c0559be0
11 changed files with 43 additions and 15 deletions

View File

@ -503,14 +503,16 @@ void Changes::addToToc(DocIterator const & cdit, Buffer const & buffer) const
Toc::iterator it = change_list.item(0, author); Toc::iterator it = change_list.item(0, author);
if (it == change_list.end()) { if (it == change_list.end()) {
change_list.push_back(TocItem(dit, 0, author)); change_list.push_back(TocItem(dit, 0, author));
change_list.push_back(TocItem(dit, 1, str)); change_list.push_back(TocItem(dit, 1, str,
support::wrapParas(str, 4)));
continue; continue;
} }
for (++it; it != change_list.end(); ++it) { for (++it; it != change_list.end(); ++it) {
if (it->depth() == 0 && it->str() != author) if (it->depth() == 0 && it->str() != author)
break; break;
} }
change_list.insert(it, TocItem(dit, 1, str)); change_list.insert(it, TocItem(dit, 1, str,
support::wrapParas(str, 4)));
} }
} }

View File

@ -44,8 +44,8 @@ namespace lyx {
// //
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
TocItem::TocItem(DocIterator const & dit, int d, docstring const & s) TocItem::TocItem(DocIterator const & dit, int d, docstring const & s,
: dit_(dit), depth_(d), str_(s) docstring const & t) : dit_(dit), depth_(d), str_(s), tooltip_(t)
{ {
} }
@ -68,6 +68,12 @@ docstring const & TocItem::str() const
} }
docstring const & TocItem::tooltip() const
{
return tooltip_;
}
docstring const TocItem::asString() const docstring const TocItem::asString() const
{ {
return docstring(4 * depth_, ' ') + str_; return docstring(4 * depth_, ' ') + str_;

View File

@ -42,7 +42,8 @@ public:
/// ///
TocItem(DocIterator const & dit, TocItem(DocIterator const & dit,
int depth, int depth,
docstring const & s docstring const & s,
docstring const & t = docstring()
); );
/// ///
~TocItem() {} ~TocItem() {}
@ -53,6 +54,8 @@ public:
/// ///
docstring const & str() const; docstring const & str() const;
/// ///
docstring const & tooltip() const;
///
docstring const asString() const; docstring const asString() const;
/// ///
DocIterator const & dit() const; DocIterator const & dit() const;
@ -69,6 +72,9 @@ protected:
/// Full item string /// Full item string
docstring str_; docstring str_;
/// The tooltip string
docstring tooltip_;
}; };

View File

@ -148,6 +148,7 @@ void TocModel::updateItem(DocIterator const & dit)
QModelIndex index = modelIndex(dit); QModelIndex index = modelIndex(dit);
TocItem const & toc_item = tocItem(index); TocItem const & toc_item = tocItem(index);
model_->setData(index, toqstr(toc_item.str()), Qt::DisplayRole); model_->setData(index, toqstr(toc_item.str()), Qt::DisplayRole);
model_->setData(index, toqstr(toc_item.tooltip()), Qt::ToolTipRole);
} }
@ -177,6 +178,7 @@ void TocModel::reset(Toc const & toc)
QModelIndex top_level_item = model_->index(current_row, 0); QModelIndex top_level_item = model_->index(current_row, 0);
model_->setData(top_level_item, toqstr(item.str()), Qt::DisplayRole); model_->setData(top_level_item, toqstr(item.str()), Qt::DisplayRole);
model_->setData(top_level_item, index, Qt::UserRole); model_->setData(top_level_item, index, Qt::UserRole);
model_->setData(top_level_item, toqstr(item.tooltip()), Qt::ToolTipRole);
LYXERR(Debug::GUI, "Toc: at depth " << item.depth() LYXERR(Debug::GUI, "Toc: at depth " << item.depth()
<< ", added item " << item.str()); << ", added item " << item.str());
@ -218,6 +220,7 @@ void TocModel::populate(unsigned int & index, QModelIndex const & parent)
child_item = model_->index(current_row, 0, parent); child_item = model_->index(current_row, 0, parent);
model_->setData(child_item, toqstr(item.str()), Qt::DisplayRole); model_->setData(child_item, toqstr(item.str()), Qt::DisplayRole);
model_->setData(child_item, index, Qt::UserRole); model_->setData(child_item, index, Qt::UserRole);
model_->setData(child_item, toqstr(item.tooltip()), Qt::ToolTipRole);
populate(index, child_item); populate(index, child_item);
if (index >= end) if (index >= end)
break; break;

View File

@ -286,7 +286,7 @@ void InsetBranch::addToToc(DocIterator const & cpit)
Toc & toc = buffer().tocBackend().toc("branch"); Toc & toc = buffer().tocBackend().toc("branch");
docstring const str = params_.branch + ": " + text().getPar(0).asString(); docstring const str = params_.branch + ": " + text().getPar(0).asString();
toc.push_back(TocItem(pit, 0, str)); toc.push_back(TocItem(pit, 0, str, toolTipText()));
// Proceed with the rest of the inset. // Proceed with the rest of the inset.
InsetCollapsable::addToToc(cpit); InsetCollapsable::addToToc(cpit);
} }

View File

@ -128,11 +128,7 @@ docstring InsetCollapsable::toolTip(BufferView const & bv, int x, int y) const
if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des || isOpen(bv)) if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des || isOpen(bv))
return docstring(); return docstring();
OutputParams rp(&buffer().params().encoding()); return toolTipText();
odocstringstream ods;
InsetText::plaintext(ods, rp);
docstring const content_tip = ods.str();
return support::wrapParas(content_tip, 4);
} }

View File

@ -67,7 +67,7 @@ void InsetFoot::addToToc(DocIterator const & cpit)
Toc & toc = buffer().tocBackend().toc("footnote"); Toc & toc = buffer().tocBackend().toc("footnote");
docstring str; docstring str;
str = custom_label_ + ": " + text().getPar(0).asString(); str = custom_label_ + ": " + text().getPar(0).asString();
toc.push_back(TocItem(pit, 0, str)); toc.push_back(TocItem(pit, 0, str, toolTipText()));
// Proceed with the rest of the inset. // Proceed with the rest of the inset.
InsetFootlike::addToToc(cpit); InsetFootlike::addToToc(cpit);
} }

View File

@ -59,7 +59,7 @@ void InsetMarginal::addToToc(DocIterator const & cpit)
Toc & toc = buffer().tocBackend().toc("marginalnote"); Toc & toc = buffer().tocBackend().toc("marginalnote");
docstring str; docstring str;
str = text().getPar(0).asString(); str = text().getPar(0).asString();
toc.push_back(TocItem(pit, 0, str)); toc.push_back(TocItem(pit, 0, str, toolTipText()));
// Proceed with the rest of the inset. // Proceed with the rest of the inset.
InsetFootlike::addToToc(cpit); InsetFootlike::addToToc(cpit);
} }

View File

@ -224,7 +224,7 @@ void InsetNote::addToToc(DocIterator const & cpit)
docstring str; docstring str;
str = notetranslator_loc().find(params_.type) + from_ascii(": ") str = notetranslator_loc().find(params_.type) + from_ascii(": ")
+ text().getPar(0).asString(); + text().getPar(0).asString();
toc.push_back(TocItem(pit, 0, str)); toc.push_back(TocItem(pit, 0, str, toolTipText()));
// Proceed with the rest of the inset. // Proceed with the rest of the inset.
InsetCollapsable::addToToc(cpit); InsetCollapsable::addToToc(cpit);
} }

View File

@ -721,7 +721,8 @@ void InsetText::addToToc(DocIterator const & cdit)
// insert this into the table of contents // insert this into the table of contents
if (tocstring.empty()) if (tocstring.empty())
tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS); tocstring = par.asString(AS_STR_LABEL | AS_STR_INSETS);
toc.push_back(TocItem(dit, toclevel - min_toclevel, tocstring)); toc.push_back(TocItem(dit, toclevel - min_toclevel,
tocstring, tocstring));
} }
// And now the list of changes. // And now the list of changes.
@ -818,6 +819,18 @@ docstring InsetText::contextMenu(BufferView const &, int, int) const
} }
docstring InsetText::toolTipText() const
{
OutputParams rp(&buffer().params().encoding());
odocstringstream ods;
// do not remove InsetText::, otherwise there
// will be no tooltip text for InsetNotes
InsetText::plaintext(ods, rp);
docstring const content_tip = ods.str();
return support::wrapParas(content_tip, 4);
}
InsetCaption const * InsetText::getCaptionInset() const InsetCaption const * InsetText::getCaptionInset() const
{ {
ParagraphList::const_iterator pit = paragraphs().begin(); ParagraphList::const_iterator pit = paragraphs().begin();

View File

@ -190,6 +190,8 @@ public:
bool insertCompletion(Cursor & cur, docstring const & s, bool finished); bool insertCompletion(Cursor & cur, docstring const & s, bool finished);
/// ///
void completionPosAndDim(Cursor const &, int & x, int & y, Dimension & dim) const; void completionPosAndDim(Cursor const &, int & x, int & y, Dimension & dim) const;
/// returns the text to be used as tooltip
docstring toolTipText() const;
/// ///
virtual docstring contextMenu(BufferView const & bv, int x, int y) const; virtual docstring contextMenu(BufferView const & bv, int x, int y) const;