include/sfx2/devtools/DevelopmentToolDockingWindow.hxx | 2 include/sfx2/devtools/DocumentModelTreeHandler.hxx | 3 + sfx2/source/devtools/DevelopmentToolDockingWindow.cxx | 14 ++++- sfx2/source/devtools/DocumentModelTreeHandler.cxx | 14 +++++ sfx2/uiconfig/ui/developmenttool.ui | 47 +++++++++++++++-- 5 files changed, 74 insertions(+), 6 deletions(-)
New commits: commit a873ef61534353df3251dd879f8deabde9295145 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Tue Mar 16 23:12:51 2021 +0900 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Wed Mar 17 00:27:11 2021 +0100 devtools: add refresh button for the DocumentObjectTreeView Change-Id: I4fea7dd2a12bc04649ff62e0d04e3058cf09c884 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112579 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/include/sfx2/devtools/DevelopmentToolDockingWindow.hxx b/include/sfx2/devtools/DevelopmentToolDockingWindow.hxx index 1c4826f975f6..171ff96ad5fb 100644 --- a/include/sfx2/devtools/DevelopmentToolDockingWindow.hxx +++ b/include/sfx2/devtools/DevelopmentToolDockingWindow.hxx @@ -38,6 +38,7 @@ private: std::unique_ptr<ObjectInspectorWidgets> mpObjectInspectorWidgets; std::unique_ptr<weld::TreeView> mpDocumentModelTreeView; std::unique_ptr<weld::ToggleButton> mpSelectionToggle; + std::unique_ptr<weld::Toolbar> mpDomToolbar; // Reference to the root object for the current document css::uno::Reference<css::uno::XInterface> mxRoot; @@ -53,6 +54,7 @@ private: DECL_LINK(DocumentModelTreeViewSelectionHandler, weld::TreeView&, void); DECL_LINK(SelectionToggled, weld::ToggleButton&, void); + DECL_LINK(DomToolbarButtonClicked, const OString&, void); void updateSelection(); diff --git a/include/sfx2/devtools/DocumentModelTreeHandler.hxx b/include/sfx2/devtools/DocumentModelTreeHandler.hxx index 17b853b36c6f..c63986ad1476 100644 --- a/include/sfx2/devtools/DocumentModelTreeHandler.hxx +++ b/include/sfx2/devtools/DocumentModelTreeHandler.hxx @@ -33,6 +33,9 @@ private: // identified by the input tree iter. void clearChildren(weld::TreeIter const& rParent); + // Clear all tree view nodes. + void clearAll(); + public: DocumentModelTreeHandler(std::unique_ptr<weld::TreeView>& pDocumentModelTree, css::uno::Reference<css::uno::XInterface> const& xDocument); diff --git a/sfx2/source/devtools/DevelopmentToolDockingWindow.cxx b/sfx2/source/devtools/DevelopmentToolDockingWindow.cxx index 6fcbcc68812d..32ef347eded7 100644 --- a/sfx2/source/devtools/DevelopmentToolDockingWindow.cxx +++ b/sfx2/source/devtools/DevelopmentToolDockingWindow.cxx @@ -29,7 +29,8 @@ DevelopmentToolDockingWindow::DevelopmentToolDockingWindow(SfxBindings* pInputBi "sfx/ui/developmenttool.ui") , mpObjectInspectorWidgets(new ObjectInspectorWidgets(m_xBuilder)) , mpDocumentModelTreeView(m_xBuilder->weld_tree_view("leftside_treeview_id")) - , mpSelectionToggle(m_xBuilder->weld_toggle_button("selection_toggle")) + , mpSelectionToggle(m_xBuilder->weld_toggle_button("dom_selection_toggle")) + , mpDomToolbar(m_xBuilder->weld_toolbar("dom_toolbar")) , maDocumentModelTreeHandler( mpDocumentModelTreeView, pInputBindings->GetDispatcher()->GetFrame()->GetObjectShell()->GetBaseModel()) @@ -38,6 +39,8 @@ DevelopmentToolDockingWindow::DevelopmentToolDockingWindow(SfxBindings* pInputBi mpDocumentModelTreeView->connect_changed( LINK(this, DevelopmentToolDockingWindow, DocumentModelTreeViewSelectionHandler)); mpSelectionToggle->connect_toggled(LINK(this, DevelopmentToolDockingWindow, SelectionToggled)); + mpDomToolbar->connect_clicked( + LINK(this, DevelopmentToolDockingWindow, DomToolbarButtonClicked)); auto* pViewFrame = pInputBindings->GetDispatcher()->GetFrame(); @@ -69,6 +72,14 @@ IMPL_LINK_NOARG(DevelopmentToolDockingWindow, SelectionToggled, weld::ToggleButt updateSelection(); } +IMPL_LINK(DevelopmentToolDockingWindow, DomToolbarButtonClicked, const OString&, rSelectionId, void) +{ + if (rSelectionId == "dom_refresh_button") + { + maDocumentModelTreeHandler.inspectDocument(); + } +} + DevelopmentToolDockingWindow::~DevelopmentToolDockingWindow() { disposeOnce(); } void DevelopmentToolDockingWindow::dispose() @@ -86,6 +97,7 @@ void DevelopmentToolDockingWindow::dispose() // dispose welded objects mpObjectInspectorWidgets.reset(); mpSelectionToggle.reset(); + mpDomToolbar.reset(); mpDocumentModelTreeView.reset(); SfxDockingWindow::dispose(); diff --git a/sfx2/source/devtools/DocumentModelTreeHandler.cxx b/sfx2/source/devtools/DocumentModelTreeHandler.cxx index 047b1d97b19d..7645fc327686 100644 --- a/sfx2/source/devtools/DocumentModelTreeHandler.cxx +++ b/sfx2/source/devtools/DocumentModelTreeHandler.cxx @@ -719,6 +719,18 @@ uno::Reference<uno::XInterface> DocumentModelTreeHandler::getObjectByID(OUString return pEntry->getMainObject(); } +void DocumentModelTreeHandler::clearAll() +{ + // destroy all DocumetModelTreeEntries from the tree + mpDocumentModelTree->all_foreach([this](weld::TreeIter& rEntry) { + OUString sID = mpDocumentModelTree->get_id(rEntry); + auto* pEntry = reinterpret_cast<DocumentModelTreeEntry*>(sID.toInt64()); + delete pEntry; + return false; + }); + mpDocumentModelTree->clear(); +} + void DocumentModelTreeHandler::clearChildren(weld::TreeIter const& rParent) { bool bChild = false; @@ -783,6 +795,8 @@ void DocumentModelTreeHandler::selectObject( void DocumentModelTreeHandler::inspectDocument() { + clearAll(); + uno::Reference<lang::XServiceInfo> xDocumentServiceInfo(mxDocument, uno::UNO_QUERY_THROW); lclAppend(mpDocumentModelTree, new DocumentRootEntry(SfxResId(STR_DOCUMENT_ENTRY), mxDocument)); diff --git a/sfx2/uiconfig/ui/developmenttool.ui b/sfx2/uiconfig/ui/developmenttool.ui index 94f96dcdd334..62df00e9d708 100644 --- a/sfx2/uiconfig/ui/developmenttool.ui +++ b/sfx2/uiconfig/ui/developmenttool.ui @@ -66,7 +66,7 @@ <property name="can-focus">True</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="position">250</property> + <property name="position">270</property> <property name="wide-handle">True</property> <child> <!-- n-columns=1 n-rows=2 --> @@ -119,11 +119,48 @@ </packing> </child> <child> - <object class="GtkToggleButton" id="selection_toggle"> - <property name="label" translatable="yes" context="developmenttool|selection_toggle">Current Selection</property> + <object class="GtkBox"> <property name="visible">True</property> - <property name="can-focus">True</property> - <property name="receives-default">True</property> + <property name="can-focus">False</property> + <property name="border-width">3</property> + <property name="spacing">12</property> + <child> + <object class="GtkToggleButton" id="dom_selection_toggle"> + <property name="label" translatable="yes" context="developmenttool|dom_selection_toggle">Current Selection</property> + <property name="visible">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkToolbar" id="dom_toolbar"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <child> + <object class="GtkToolButton" id="dom_refresh_button"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="developmenttool|dom_refresh_button">Refresh</property> + <property name="use-underline">True</property> + <property name="icon-name">cmd/lc_reload.png</property> + </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> </object> <packing> <property name="left-attach">0</property> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits