InsetCaption const * InsetText::getCaptionInset() const { ParagraphList::const_iterator pit = paragraphs().begin(); for (; pit != paragraphs().end(); ++pit) { InsetList::const_iterator it = pit->insetList().begin(); for (; it != pit->insetList().end(); ++it) { Inset & inset = *it->inset; if (inset.lyxCode() == CAPTION_CODE) { InsetCaption const * ins = static_cast<InsetCaption const *>(it->inset); return ins; } } } return 0; }
void InsetText::setMacrocontextPositionRecursive(DocIterator const & pos) { text_.setMacrocontextPosition(pos); ParagraphList::const_iterator pit = paragraphs().begin(); ParagraphList::const_iterator pend = paragraphs().end(); for (; pit != pend; ++pit) { InsetList::const_iterator iit = pit->insetList().begin(); InsetList::const_iterator end = pit->insetList().end(); for (; iit != end; ++iit) { if (InsetText * txt = iit->inset->asInsetText()) { DocIterator ppos(pos); ppos.push_back(CursorSlice(*txt)); iit->inset->asInsetText()->setMacrocontextPositionRecursive(ppos); } } } }
void InsetText::addPreview(DocIterator const & text_inset_pos, PreviewLoader & loader) const { ParagraphList::const_iterator pit = paragraphs().begin(); ParagraphList::const_iterator pend = paragraphs().end(); int pidx = 0; DocIterator inset_pos = text_inset_pos; inset_pos.push_back(CursorSlice(*const_cast<InsetText *>(this))); for (; pit != pend; ++pit, ++pidx) { InsetList::const_iterator it = pit->insetList().begin(); InsetList::const_iterator end = pit->insetList().end(); inset_pos.pit() = pidx; for (; it != end; ++it) { inset_pos.pos() = it->pos; it->inset->addPreview(inset_pos, loader); } } }
bool InsetText::getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus & status) const { switch (cmd.action()) { case LFUN_INSET_DISSOLVE: { bool const main_inset = &buffer().inset() == this; bool const target_inset = cmd.argument().empty() || cmd.getArg(0) == insetName(lyxCode()); bool const one_cell = nargs() == 1; if (target_inset) status.setEnabled(!main_inset && one_cell); return target_inset; } case LFUN_ARGUMENT_INSERT: { string const arg = cmd.getArg(0); if (arg.empty()) { status.setEnabled(false); return true; } if (&buffer().inset() == this || !cur.paragraph().layout().args().empty()) return text_.getStatus(cur, cmd, status); Layout::LaTeXArgMap args = getLayout().args(); Layout::LaTeXArgMap::const_iterator const lait = args.find(arg); if (lait != args.end()) { status.setEnabled(true); ParagraphList::const_iterator pit = paragraphs().begin(); for (; pit != paragraphs().end(); ++pit) { InsetList::const_iterator it = pit->insetList().begin(); InsetList::const_iterator end = pit->insetList().end(); for (; it != end; ++it) { if (it->inset->lyxCode() == ARG_CODE) { InsetArgument const * ins = static_cast<InsetArgument const *>(it->inset); if (ins->name() == arg) { // we have this already status.setEnabled(false); return true; } } } } } else status.setEnabled(false); return true; } default: // Dispatch only to text_ if the cursor is inside // the text_. It is not for context menus (bug 5797). bool ret = false; if (cur.text() == &text_) ret = text_.getStatus(cur, cmd, status); if (!ret) ret = Inset::getStatus(cur, cmd, status); return ret; } }