sw/source/uibase/utlui/content.cxx | 134 +++++++++++++++++++++---- sw/uiconfig/swriter/ui/navigatorcontextmenu.ui | 125 +++++++++++++++++++++-- 2 files changed, 228 insertions(+), 31 deletions(-)
New commits: commit d5143c058bfdc0f5674c3e0a88fae2f9cbe28a0a Author: Jim Raykowski <[email protected]> AuthorDate: Wed Jul 17 12:52:54 2024 -0800 Commit: Jim Raykowski <[email protected]> CommitDate: Sun Aug 18 01:38:55 2024 +0200 tdf#156926 related: Ability to Delete all images in Writer Adds the ability to delete all content of a content type, excluding the Headings content type, using the content type's context menu in Writer Navigator. Change-Id: Ie5666b6b9b7ef2f3cdb63957b1b42b236b8674db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170643 Reviewed-by: Jim Raykowski <[email protected]> Tested-by: Jenkins diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 9877ef40b676..9c7f1acff11e 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1695,25 +1695,38 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bool bRemovePostItEntries = true; bool bRemoveUpdateIndexEntry = true; - bool bRemoveReadonlyIndexEntry = true; bool bRemoveCopyEntry = true; + bool bRemoveReadonlyIndexEntry = true; + bool bRemoveCopyEntry = true; bool bRemoveEditEntry = true; bool bRemoveUnprotectEntry = true; bool bRemoveDeleteChapterEntry = true, + bRemoveDeleteAllTablesEntry = true, bRemoveDeleteTableEntry = true, + bRemoveDeleteAllFramesEntry = true, bRemoveDeleteFrameEntry = true, + bRemoveDeleteAllImagesEntry = true, bRemoveDeleteImageEntry = true, + bRemoveDeleteAllOLEObjectsEntry = true, bRemoveDeleteOLEObjectEntry = true, + bRemoveDeleteAllBookmarksEntry = true, bRemoveDeleteBookmarkEntry = true, + bRemoveDeleteAllRegionsEntry = true, bRemoveDeleteRegionEntry = true, + bRemoveDeleteAllHyperlinksEntry = true, bRemoveDeleteHyperlinkEntry = true, + bRemoveDeleteAllReferencesEntry = true, bRemoveDeleteReferenceEntry = true, + bRemoveDeleteAllIndexesEntry = true, bRemoveDeleteIndexEntry= true, + bRemoveDeleteAllCommentsEntry = true, bRemoveDeleteCommentEntry = true, + bRemoveDeleteAllDrawingObjectsEntry = true, bRemoveDeleteDrawingObjectEntry = true, + bRemoveDeleteAllFieldsEntry = true, bRemoveDeleteFieldEntry = true, bRemoveDeleteAllFootnotesEntry = true, - bRemoveDeleteAllEndnotesEntry = true, bRemoveDeleteFootnoteEntry = true, + bRemoveDeleteAllEndnotesEntry = true, bRemoveDeleteEndnoteEntry = true; bool bRemoveRenameEntry = true; bool bRemoveSelectEntry = true; @@ -1976,6 +1989,56 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) && !m_pActiveShell->GetView().GetDocShell()->IsReadOnly() && pType->GetMemberCount() > 0) { + // Choose which Delete All entry to show. + if (pType->IsDeletable() && IsDeletable(*xEntry)) + { + switch (nContentType) + { + case ContentTypeId::TABLE: + bRemoveDeleteAllTablesEntry = false; + break; + case ContentTypeId::FRAME: + bRemoveDeleteAllFramesEntry = false; + break; + case ContentTypeId::GRAPHIC: + bRemoveDeleteAllImagesEntry = false; + break; + case ContentTypeId::OLE: + bRemoveDeleteAllOLEObjectsEntry = false; + break; + case ContentTypeId::BOOKMARK: + bRemoveDeleteAllBookmarksEntry = false; + break; + case ContentTypeId::REGION: + bRemoveDeleteAllRegionsEntry = false; + break; + case ContentTypeId::URLFIELD: + bRemoveDeleteAllHyperlinksEntry = false; + break; + case ContentTypeId::REFERENCE: + bRemoveDeleteAllReferencesEntry = false; + break; + case ContentTypeId::INDEX: + bRemoveDeleteAllIndexesEntry = false; + break; + case ContentTypeId::POSTIT: + bRemoveDeleteAllCommentsEntry = false; + break; + case ContentTypeId::DRAWOBJECT: + bRemoveDeleteAllDrawingObjectsEntry = false; + break; + case ContentTypeId::TEXTFIELD: + bRemoveDeleteAllFieldsEntry = false; + break; + case ContentTypeId::FOOTNOTE: + bRemoveDeleteAllFootnotesEntry = false; + break; + case ContentTypeId::ENDNOTE: + bRemoveDeleteAllEndnotesEntry = false; + break; + default: break; + } + } if (nContentType == ContentTypeId::POSTIT) { const SwViewOption* m_pViewOpt = m_pActiveShell->GetViewOptions(); @@ -1983,10 +2046,6 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) xPop->set_active(u"showresolvedcomments"_ustr, m_pViewOpt->IsResolvedPostIts()); bRemovePostItEntries = false; } - else if (nContentType == ContentTypeId::FOOTNOTE) - bRemoveDeleteAllFootnotesEntry = false; - else if (nContentType == ContentTypeId::ENDNOTE) - bRemoveDeleteAllEndnotesEntry = false; } } } @@ -2015,41 +2074,64 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) { xPop->remove(u"showcomments"_ustr); xPop->remove(u"showresolvedcomments"_ustr); - xPop->remove(OUString::number(602)); } if (bRemoveDeleteChapterEntry) xPop->remove(u"deletechapter"_ustr); + if (bRemoveDeleteAllTablesEntry) + xPop->remove(u"deletealltables"_ustr); if (bRemoveDeleteTableEntry) xPop->remove(u"deletetable"_ustr); + if (bRemoveDeleteAllFramesEntry) + xPop->remove(u"deleteallframes"_ustr); if (bRemoveDeleteFrameEntry) xPop->remove(u"deleteframe"_ustr); + if (bRemoveDeleteAllImagesEntry) + xPop->remove(u"deleteallimages"_ustr); if (bRemoveDeleteImageEntry) xPop->remove(u"deleteimage"_ustr); + if (bRemoveDeleteAllOLEObjectsEntry) + xPop->remove(u"deletealloleobjects"_ustr); if (bRemoveDeleteOLEObjectEntry) xPop->remove(u"deleteoleobject"_ustr); + if (bRemoveDeleteAllBookmarksEntry) + xPop->remove(u"deleteallbookmarks"_ustr); if (bRemoveDeleteBookmarkEntry) xPop->remove(u"deletebookmark"_ustr); + if (bRemoveDeleteAllRegionsEntry) + xPop->remove(u"deleteallregions"_ustr); if (bRemoveDeleteRegionEntry) xPop->remove(u"deleteregion"_ustr); + if (bRemoveDeleteAllHyperlinksEntry) + xPop->remove(u"deleteallhyperlinks"_ustr); if (bRemoveDeleteHyperlinkEntry) xPop->remove(u"deletehyperlink"_ustr); + if (bRemoveDeleteAllReferencesEntry) + xPop->remove(u"deleteallreferences"_ustr); if (bRemoveDeleteReferenceEntry) xPop->remove(u"deletereference"_ustr); + if (bRemoveDeleteAllIndexesEntry) + xPop->remove(u"deleteallindexes"_ustr); if (bRemoveDeleteIndexEntry) xPop->remove(u"deleteindex"_ustr); + if (bRemoveDeleteAllCommentsEntry) + xPop->remove(u"deleteallcomments"_ustr); if (bRemoveDeleteCommentEntry) xPop->remove(u"deletecomment"_ustr); + if (bRemoveDeleteAllDrawingObjectsEntry) + xPop->remove(u"deletealldrawingobjects"_ustr); if (bRemoveDeleteDrawingObjectEntry) xPop->remove(u"deletedrawingobject"_ustr); + if (bRemoveDeleteAllFieldsEntry) + xPop->remove(u"deleteallfields"_ustr); if (bRemoveDeleteFieldEntry) xPop->remove(u"deletefield"_ustr); if (bRemoveDeleteAllFootnotesEntry) xPop->remove(u"deleteallfootnotes"_ustr); - if (bRemoveDeleteAllEndnotesEntry) - xPop->remove(u"deleteallendnotes"_ustr); if (bRemoveDeleteFootnoteEntry) xPop->remove(u"deletefootnote"_ustr); + if (bRemoveDeleteAllEndnotesEntry) + xPop->remove(u"deleteallendnotes"_ustr); if (bRemoveDeleteEndnoteEntry) xPop->remove(u"deleteendnote"_ustr); @@ -2068,10 +2150,22 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) bRemoveDeleteCommentEntry && bRemoveDeleteDrawingObjectEntry && bRemoveDeleteFieldEntry && - bRemoveDeleteAllFootnotesEntry && - bRemoveDeleteAllEndnotesEntry && bRemoveDeleteFootnoteEntry && - bRemoveDeleteEndnoteEntry; + bRemoveDeleteEndnoteEntry && + bRemoveDeleteAllTablesEntry && + bRemoveDeleteAllFramesEntry && + bRemoveDeleteAllImagesEntry && + bRemoveDeleteAllOLEObjectsEntry && + bRemoveDeleteAllBookmarksEntry && + bRemoveDeleteAllRegionsEntry && + bRemoveDeleteAllHyperlinksEntry && + bRemoveDeleteAllReferencesEntry && + bRemoveDeleteAllIndexesEntry && + bRemoveDeleteCommentEntry && + bRemoveDeleteAllDrawingObjectsEntry && + bRemoveDeleteAllFieldsEntry && + bRemoveDeleteAllFootnotesEntry && + bRemoveDeleteAllEndnotesEntry; if (bRemoveRenameEntry) xPop->remove(OUString::number(502)); @@ -5356,7 +5450,15 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry if (!m_xTreeView->get_selected(xFirst.get())) return; // this shouldn't happen, but better to be safe than ... - if (rSelectedPopupEntry == "deleteallfootnotes" || rSelectedPopupEntry == "deleteallendnotes") + if (rSelectedPopupEntry == "deletealltables" || rSelectedPopupEntry == "deleteallframes" + || rSelectedPopupEntry == "deleteallimages" || rSelectedPopupEntry == "deletealloleobjects" + || rSelectedPopupEntry == "deleteallbookmarks" || rSelectedPopupEntry == "deleteallregions" + || rSelectedPopupEntry == "deleteallhyperlinks" + || rSelectedPopupEntry == "deleteallreferences" || rSelectedPopupEntry == "deleteallindexes" + || rSelectedPopupEntry == "deleteallcomments" + || rSelectedPopupEntry == "deletealldrawingobjects" + || rSelectedPopupEntry == "deleteallfields" || rSelectedPopupEntry == "deleteallfootnotes" + || rSelectedPopupEntry == "deleteallendnotes") { DeleteAllContentOfEntryContentType(*xFirst); return; @@ -5523,12 +5625,6 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry case 502 : EditEntry(*xFirst, EditEntryMode::RENAME); break; - case 602: - { - m_pActiveShell->GetView().GetPostItMgr()->SetActiveSidebarWin(nullptr); - m_pActiveShell->GetView().GetPostItMgr()->Delete(); - break; - } case 700: { m_pActiveShell->GetView().GetViewFrame().GetDispatcher()->Execute(FN_OUTLINE_TO_CLIPBOARD); diff --git a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui index 3cbbb2bd23ff..da10303b7ca0 100644 --- a/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui +++ b/sw/uiconfig/swriter/ui/navigatorcontextmenu.ui @@ -130,6 +130,15 @@ <property name="use-underline">True</property> </object> </child> + <child> + <object class="GtkMenuItem" id="deletealltables"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_TABLES">Delete All Tables</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletetable"> <property name="visible">True</property> @@ -139,6 +148,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallframes"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_FRAMES">Delete All Frames</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deleteframe"> <property name="visible">True</property> @@ -148,6 +166,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallimages"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_IMAGES">Delete All Images</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deleteimage"> <property name="visible">True</property> @@ -157,6 +184,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deletealloleobjects"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_OLE_OBJECTS">Delete All OLE objects</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deleteoleobject"> <property name="visible">True</property> @@ -166,6 +202,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallbookmarks"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_BOOKMARKS">Delete All Bookmarks</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletebookmark"> <property name="visible">True</property> @@ -175,6 +220,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallregions"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_SECTIONS">Delete All Sections</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deleteregion"> <property name="visible">True</property> @@ -184,6 +238,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallhyperlinks"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_HYPERLINKS">Delete All Hyperlinks</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletehyperlink"> <property name="visible">True</property> @@ -193,6 +256,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallreferences"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_REFERENCES">Delete All References</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletereference"> <property name="visible">True</property> @@ -201,6 +273,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallindexes"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_INDEXES">Delete All Indexes</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deleteindex"> <property name="visible">True</property> @@ -210,6 +291,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallcomments"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_COMMENTS">Delete All Comments</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletecomment"> <property name="visible">True</property> @@ -219,6 +309,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deletealldrawingobjects"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_DRAWING_OBJECTS">Delete All Drawing objects</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletedrawingobject"> <property name="visible">True</property> @@ -228,6 +327,15 @@ <accelerator key="Delete" signal="activate"/> </object> </child> + <child> + <object class="GtkMenuItem" id="deleteallfields"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_FIELDS">Delete All Fields</property> + <property name="use-underline">True</property> + <accelerator key="Delete" signal="activate"/> + </object> + </child> <child> <object class="GtkMenuItem" id="deletefield"> <property name="visible">True</property> @@ -242,23 +350,24 @@ <property name="visible">True</property> <property name="can-focus">False</property> <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_FOOTNOTES">Delete All Footnotes</property> + <property name="use-underline">True</property> <accelerator key="Delete" signal="activate"/> </object> </child> <child> - <object class="GtkMenuItem" id="deleteallendnotes"> + <object class="GtkMenuItem" id="deletefootnote"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_ENDNOTES">Delete All Endnotes</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_FOOTNOTE">Delete Footnote</property> <property name="use-underline">True</property> <accelerator key="Delete" signal="activate"/> </object> </child> <child> - <object class="GtkMenuItem" id="deletefootnote"> + <object class="GtkMenuItem" id="deleteallendnotes"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_FOOTNOTE">Delete Footnote</property> + <property name="label" translatable="yes" context="navigatorcontextmenu|STR_DELETE_ALL_ENDNOTES">Delete All Endnotes</property> <property name="use-underline">True</property> <accelerator key="Delete" signal="activate"/> </object> @@ -312,14 +421,6 @@ <property name="use-underline">True</property> </object> </child> - <child> - <object class="GtkMenuItem" id="602"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label" translatable="yes" context="navigatorcontextmenu|STR_POSTIT_DELETE">Delete All</property> - <property name="use-underline">True</property> - </object> - </child> <child> <object class="GtkSeparatorMenuItem" id="separator2"> <property name="visible">True</property>
