if (const SwField* const pCurrentField = rShell.GetCurField();
!rShell.HasReadonlySel() && pCurrentField != nullptr
&& pCurrentField->GetTyp()->Which() == SwFieldIds::TableOfAuthorities)
{ // Since the cursor is on a bibliography mark (e.g. "[1]"), open the edit dialog as usual
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(
pFact->CreateSwAutoMarkDialog(GetView().GetFrameWeld(), rShell));
pDlg->Execute();
} elseif (const SwTOXBase* const pCurrentTOX = rShell.GetCurTOX();
pCurrentTOX != nullptr && pCurrentTOX->GetType() == TOX_AUTHORITIES
&& (rShell.GetCursor()->GetPoint()->GetNode()
.FindSectionNode()->GetSection().GetType()
== SectionType::ToxContent))
{ // Since the cursor is in the bibliography table, find the first mark that would match the given row const SwNode* const pTableRowNode = &rShell.GetCursor()->GetPoint()->GetNode(); const OUString& rTableRowText
= static_cast<const SwTextNode*>(pTableRowNode)->GetText();
if (sMarkText == rTableRowText)
{ // Since the text generated from the mark would match the given row // move cursor to it, set bMatchingMarkFound and break
rShell.GotoFormatField(*pFormatField);
bMatchingMarkFound = true; break;
}
}
}
}
if (bMatchingMarkFound)
{ // Since matching mark has been found and cursor has been moved to it, // open the edit dialog
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(
pFact->CreateSwAutoMarkDialog(GetView().GetFrameWeld(), rShell));
pDlg->Execute();
// Refresh TOX
rShell.GetCursor_()->GetPoint()->Assign(*pTableRowNode);
rShell.UpdateTableOf(*pCurrentTOX);
} else
{ // I think this ideally should be a pop-up warning, right?
SAL_WARN("sw", "No matching bibliography mark found. " "This feature is only guaranteed to work if the bibliography table is up to date.");
}
}
}
if (!bWasViewLocked)
rShell.LockView(false);
} break; case FN_INSERT_AUTH_ENTRY_DLG:
{ // no BASIC support
rVFrame.ToggleChildWindow(FN_INSERT_AUTH_ENTRY_DLG);
Invalidate(rReq.GetSlot());
} break; case FN_INSERT_IDX_ENTRY_DLG:
{
rVFrame.ToggleChildWindow(FN_INSERT_IDX_ENTRY_DLG);
Invalidate(rReq.GetSlot());
} break; case FN_EDIT_IDX_ENTRY_DLG:
{
SwTOXMgr aMgr(GetShellPtr()); short nRet = RET_OK; if(aMgr.GetTOXMarkCount() > 1)
{ // Several marks, which should it be?
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pMultDlg(pFact->CreateMultiTOXMarkDlg(GetView().GetFrameWeld(), aMgr));
nRet = pMultDlg->Execute();
} if( nRet == RET_OK)
{
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
ScopedVclPtr<VclAbstractDialog> pDlg(pFact->CreateIndexMarkModalDlg(GetView().GetFrameWeld(), GetShell(), aMgr.GetCurTOXMark()));
pDlg->Execute();
} break;
} case FN_IDX_MARK_TO_IDX:
{
GetShell().GotoTOXMarkBase(); break;
} case FN_INSERT_MULTI_TOX:
{
SfxItemSet aSet(SfxItemSet::makeFixedSfxItemSet<RES_FRM_SIZE, RES_FRM_SIZE,
RES_LR_SPACE, RES_LR_SPACE,
RES_BACKGROUND, RES_BACKGROUND,
RES_COL, RES_COL,
XATTR_FILL_FIRST, XATTR_FILL_LAST,
SID_ATTR_PAGE_SIZE, SID_ATTR_PAGE_SIZE,
FN_PARAM_TOX_TYPE, FN_PARAM_TOX_TYPE>(GetPool()));
SwWrtShell& rSh = GetShell();
SwRect aRect;
rSh.CalcBoundRect(aRect, RndStdIds::FLY_AS_CHAR);
rSet.DisableItem( FN_EDIT_IDX_ENTRY_DLG ); if(pBase == nullptr // tdf#72955: Hide the "Bibliography Entry" command if there is no TOX in the selection
|| pBase->GetType() != TOX_AUTHORITIES // or if it is not a bibliography table
|| (rSh.GetCursor()->GetPoint()->GetNode().FindSectionNode()->GetSection().GetType() != SectionType::ToxContent)) // or if it's the heading
rSet.DisableItem(FN_EDIT_AUTH_ENTRY_DLG);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.