[Libreoffice-commits] core.git: desktop/qa test/Package_unittest.mk test/user-template

Pranav Kant pranavk at collabora.com
Wed Apr 13 16:48:19 UTC 2016


 desktop/qa/data/sheet_with_image.ods                                          |binary
 desktop/qa/desktop_lib/test_desktop_lib.cxx                                   |  244 +++++++++-
 test/Package_unittest.mk                                                      |    3 
 test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml |   13 
 test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml   |   40 -
 test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml   |   69 ++
 6 files changed, 323 insertions(+), 46 deletions(-)

New commits:
commit f00fd79f8a66d3ff78509421dd7c8257832e913f
Author: Pranav Kant <pranavk at collabora.com>
Date:   Tue Apr 12 11:04:56 2016 +0530

    lok context menu: Add module specific unit tests
    
    For calc, now click on the image to have more diverse context
    menu with checkbuttons etc.
    
    Change-Id: Ibe2471348b2572523f2684144bd18664ab48a2bb
    Reviewed-on: https://gerrit.libreoffice.org/24006
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: pranavk <pranavk at collabora.com>

diff --git a/desktop/qa/data/sheet_with_image.ods b/desktop/qa/data/sheet_with_image.ods
new file mode 100644
index 0000000..94dbb37
Binary files /dev/null and b/desktop/qa/data/sheet_with_image.ods differ
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index fd57c11..c73e680 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -942,22 +942,39 @@ namespace {
 
     }
 
+    boost::optional<boost::property_tree::ptree>
+    getContextMenuItem(boost::property_tree::ptree& aMenu, std::string unoSelector)
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem;
+        for (const auto& aItemPair: aMenu)
+        {
+            boost::property_tree::ptree aItemValue = aItemPair.second;
+
+            boost::optional<boost::property_tree::ptree&> aCommand = aItemValue.get_child_optional("command");
+            if (aCommand && aCommand.get().data() == unoSelector )
+            {
+                aMenuItem = aItemValue;
+                break;
+            }
+        }
+
+        return aMenuItem;
+    }
+
 } // end anonymous namespace
 
 void DesktopLOKTest::testContextMenuCalc()
 {
     comphelper::LibreOfficeKit::setActive();
-    LibLODocument_Impl* pDocument = loadDoc("sheets.ods", LOK_DOCTYPE_SPREADSHEET);
+    LibLODocument_Impl* pDocument = loadDoc("sheet_with_image.ods", LOK_DOCTYPE_SPREADSHEET);
     pDocument->pClass->initializeForRendering(pDocument, nullptr);
     pDocument->pClass->registerCallback(pDocument, &DesktopLOKTest::callback, this);
 
     // Values in twips
-    int row5 = 1150;
-    int col1 = 1100;
-
+    Point aPointOnImage(1150, 1100);
     pDocument->pClass->postMouseEvent(pDocument,
                                       LOK_MOUSEEVENT_MOUSEBUTTONDOWN,
-                                      col1, row5,
+                                      aPointOnImage.X(), aPointOnImage.Y(),
                                       1, 4, 0);
 
     TimeValue aTimeValue = {2 , 0}; // 2 seconds max
@@ -968,6 +985,91 @@ void DesktopLOKTest::testContextMenuCalc()
     CPPUNIT_ASSERT( aMenu );
     verifyContextMenuStructure( aMenu.get() );
 
+    // tests for calc specific context menu
+    // Cut is enabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Cut");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("true"));
+    }
+
+    // Copy is enabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Copy");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("true"));
+    }
+
+    // Paste is enabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Paste");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("true"));
+    }
+
+    // Remove hyperlink is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:DeleteShapeHyperlink");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // open hyperlink is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:OpenHyperlinkOnCursor");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // checkbutton tests
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:AnchorMenu");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aSubmenu = aMenuItem.get().get_child_optional("menu");
+        CPPUNIT_ASSERT(aSubmenu);
+
+        boost::optional<boost::property_tree::ptree> aMenuItemToPage = getContextMenuItem(aSubmenu.get(), ".uno:SetAnchorToPage");
+        CPPUNIT_ASSERT(aMenuItemToPage);
+
+        boost::optional<boost::property_tree::ptree> aMenuItemToCell = getContextMenuItem(aSubmenu.get(), ".uno:SetAnchorToCell");
+        CPPUNIT_ASSERT(aMenuItemToCell);
+
+        // these are radio buttons
+        boost::optional<boost::property_tree::ptree&> aChecktypeToPage = aMenuItemToPage.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktypeToPage);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktypeToPage.get().data()), std::string("radio"));
+
+        boost::optional<boost::property_tree::ptree&> aChecktypeToCell = aMenuItemToCell.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktypeToCell);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktypeToCell.get().data()), std::string("radio"));
+
+        // ToPage is checked
+        boost::optional<boost::property_tree::ptree&> aCheckedToPage = aMenuItemToPage.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aCheckedToPage);
+        CPPUNIT_ASSERT_EQUAL(std::string(aCheckedToPage.get().data()), std::string("true"));
+
+        // ToCell is unchecked
+        boost::optional<boost::property_tree::ptree&> aCheckedToCell = aMenuItemToCell.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aCheckedToCell);
+        CPPUNIT_ASSERT_EQUAL(std::string(aCheckedToCell.get().data()), std::string("false"));
+    }
+
     comphelper::LibreOfficeKit::setActive(false);
 }
 
@@ -992,6 +1094,37 @@ void DesktopLOKTest::testContextMenuWriter()
     CPPUNIT_ASSERT( aMenu );
     verifyContextMenuStructure( aMenu.get() );
 
+    // tests for writer specific context menu
+   // Cut is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Cut");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // Copy is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Copy");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // Paste is enabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Paste");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("true"));
+    }
+
     comphelper::LibreOfficeKit::setActive(false);
 }
 
@@ -1016,6 +1149,107 @@ void DesktopLOKTest::testContextMenuImpress()
     CPPUNIT_ASSERT( aMenu );
     verifyContextMenuStructure( aMenu.get() );
 
+    // tests for impress specific context menu
+    // Cut is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Cut");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // Copy is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Copy");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // Paste is enabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:Paste");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("true"));
+    }
+
+    // SaveBackground is disabled
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:SaveBackground");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aEnabled = aMenuItem.get().get_child_optional("enabled");
+        CPPUNIT_ASSERT(aEnabled);
+        CPPUNIT_ASSERT_EQUAL(std::string(aEnabled.get().data()), std::string("false"));
+    }
+
+    // checkbutton tests
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:ShowRuler");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aChecktype = aMenuItem.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktype);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktype.get().data()), std::string("checkmark"));
+
+        boost::optional<boost::property_tree::ptree&> aChecked = aMenuItem.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aChecked);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecked.get().data()), std::string("false"));
+    }
+
+    // Checkbutton tests inside SnapLines submenu
+    {
+        boost::optional<boost::property_tree::ptree> aMenuItem = getContextMenuItem(aMenu.get(), ".uno:SnapLinesMenu");
+        CPPUNIT_ASSERT(aMenuItem);
+
+        boost::optional<boost::property_tree::ptree&> aSubmenu = aMenuItem.get().get_child_optional("menu");
+        CPPUNIT_ASSERT(aSubmenu);
+
+        boost::optional<boost::property_tree::ptree> aMenuItemHelpVis = getContextMenuItem(aSubmenu.get(), ".uno:HelplinesVisible");
+        CPPUNIT_ASSERT(aMenuItemHelpVis);
+
+        boost::optional<boost::property_tree::ptree> aMenuItemHelpUse = getContextMenuItem(aSubmenu.get(), ".uno:HelplinesUse");
+        CPPUNIT_ASSERT(aMenuItemHelpUse);
+
+        boost::optional<boost::property_tree::ptree> aMenuItemHelpFront = getContextMenuItem(aSubmenu.get(), ".uno:HelplinesFront");
+        CPPUNIT_ASSERT(aMenuItemHelpFront);
+
+        // these are checkmarks
+        boost::optional<boost::property_tree::ptree&> aChecktypeHelpVis = aMenuItemHelpVis.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktypeHelpVis);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktypeHelpVis.get().data()), std::string("checkmark"));
+
+        boost::optional<boost::property_tree::ptree&> aChecktypeHelpUse = aMenuItemHelpUse.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktypeHelpUse);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktypeHelpUse.get().data()), std::string("checkmark"));
+
+        boost::optional<boost::property_tree::ptree&> aChecktypeHelpFront = aMenuItemHelpFront.get().get_child_optional("checktype");
+        CPPUNIT_ASSERT(aChecktypeHelpFront);
+        CPPUNIT_ASSERT_EQUAL(std::string(aChecktypeHelpFront.get().data()), std::string("checkmark"));
+
+        // HelplineVisible is unchecked
+        boost::optional<boost::property_tree::ptree&> aCheckedHelpVis = aMenuItemHelpVis.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aCheckedHelpVis);
+        CPPUNIT_ASSERT_EQUAL(std::string(aCheckedHelpVis.get().data()), std::string("false"));
+
+        // HelplineUse is checked
+        boost::optional<boost::property_tree::ptree&> aCheckedHelpUse = aMenuItemHelpUse.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aCheckedHelpUse);
+        CPPUNIT_ASSERT_EQUAL(std::string(aCheckedHelpUse.get().data()), std::string("true"));
+
+        // HelplineFront is checked
+        boost::optional<boost::property_tree::ptree&> aCheckedHelpFront = aMenuItemHelpFront.get().get_child_optional("checked");
+        CPPUNIT_ASSERT(aCheckedHelpFront);
+        CPPUNIT_ASSERT_EQUAL(std::string(aCheckedHelpFront.get().data()), std::string("true"));
+    }
+
     comphelper::LibreOfficeKit::setActive(false);
 }
 
diff --git a/test/Package_unittest.mk b/test/Package_unittest.mk
index 8001731..084456e 100644
--- a/test/Package_unittest.mk
+++ b/test/Package_unittest.mk
@@ -21,7 +21,8 @@ $(eval $(call gb_Package_add_file,test_unittest,unittest/user/autotext/en-US/sta
 $(eval $(call gb_Package_add_file,test_unittest,unittest/user/autotext/en-US/crdbus50.bau,user/autotext/en-US/crdbus50.bau))
 $(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/.dummy,empty-directory-dummy))
 $(eval $(call gb_Package_add_file,test_unittest,unittest/user/autocorr/acor_en-US.dat,user/autocorr/acor_fr.dat))
-$(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml,user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml))
+$(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml,user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml))
+$(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml,user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml))
 $(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/modules/swriter/popupmenu/text.xml,user/config/soffice.cfg/modules/swriter/popupmenu/text.xml))
 $(eval $(call gb_Package_add_file,test_unittest,unittest/user/config/soffice.cfg/modules/simpress/popupmenu/page.xml,user/config/soffice.cfg/modules/simpress/popupmenu/page.xml))
 
diff --git a/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml b/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml
new file mode 100644
index 0000000..c269bef
--- /dev/null
+++ b/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/anchor.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<menu:menupopup xmlns:menu="http://openoffice.org/2001/menu">
+  <menu:menuitem menu:id=".uno:SetAnchorToPage" menu:style="radio"/>
+  <menu:menuitem menu:id=".uno:SetAnchorToCell" menu:style="radio"/>
+</menu:menupopup>
diff --git a/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml b/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml
deleted file mode 100644
index 57ecd28..0000000
--- a/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/cell.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
--->
-<menu:menupopup xmlns:menu="http://openoffice.org/2001/menu">
-  <menu:menuitem menu:id=".uno:Cut"/>
-  <menu:menuitem menu:id=".uno:Copy"/>
-  <menu:menuitem menu:id=".uno:Paste"/>
-  <menu:menuitem menu:id=".uno:PasteSpecial"/>
-  <menu:menu menu:id=".uno:PasteOnly">
-    <menu:menupopup>
-      <menu:menuitem menu:id=".uno:PasteOnlyText"/>
-      <menu:menuitem menu:id=".uno:PasteOnlyValue"/>
-      <menu:menuitem menu:id=".uno:PasteOnlyFormula"/>
-    </menu:menupopup>
-  </menu:menu>
-  <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:ResetAttributes"/>
-  <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:FormatCellDialog"/>
-  <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:InsertCell"/>
-  <menu:menuitem menu:id=".uno:DeleteCell"/>
-  <menu:menuitem menu:id=".uno:Delete"/>
-  <menu:menuitem menu:id=".uno:MergeCells"/>
-  <menu:menuitem menu:id=".uno:SplitCell"/>
-  <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:InsertAnnotation"/>
-  <menu:menuitem menu:id=".uno:EditAnnotation"/>
-  <menu:menuitem menu:id=".uno:DeleteNote"/>
-  <menu:menuitem menu:id=".uno:ShowNote"/>
-  <menu:menuitem menu:id=".uno:HideNote"/>
-  <menu:menuseparator/>
-  <menu:menuitem menu:id=".uno:DataSelect"/>
-</menu:menupopup>
diff --git a/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml b/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml
new file mode 100644
index 0000000..daeb44d
--- /dev/null
+++ b/test/user-template/user/config/soffice.cfg/modules/scalc/popupmenu/draw.xml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+-->
+<menu:menupopup xmlns:menu="http://openoffice.org/2001/menu">
+  <menu:menuitem menu:id=".uno:Cut"/>
+  <menu:menuitem menu:id=".uno:Copy"/>
+  <menu:menuitem menu:id=".uno:Paste"/>
+  <menu:menuseparator/>
+  <menu:menuitem menu:id=".uno:FormatLine"/>
+  <menu:menuitem menu:id=".uno:FormatArea"/>
+  <menu:menuitem menu:id=".uno:TextAttributes"/>
+  <menu:menuitem menu:id=".uno:TransformDialog"/>
+  <menu:menuseparator/>
+  <menu:menuitem menu:id=".uno:ObjectTitleDescription"/>
+  <menu:menuitem menu:id=".uno:RenameObject"/>
+  <menu:menuseparator/>
+  <menu:menu menu:id=".uno:FlipMenu">
+    <menu:menupopup>
+      <menu:menuitem menu:id=".uno:ObjectMirrorVertical"/>
+      <menu:menuitem menu:id=".uno:ObjectMirrorHorizontal"/>
+    </menu:menupopup>
+  </menu:menu>
+  <menu:menu menu:id=".uno:ArrangeMenu">
+    <menu:menupopup>
+      <menu:menuitem menu:id=".uno:BringToFront"/>
+      <menu:menuitem menu:id=".uno:ObjectForwardOne"/>
+      <menu:menuitem menu:id=".uno:ObjectBackOne"/>
+      <menu:menuitem menu:id=".uno:SendToBack"/>
+      <menu:menuseparator/>
+      <menu:menuitem menu:id=".uno:SetObjectToForeground"/>
+      <menu:menuitem menu:id=".uno:SetObjectToBackground"/>
+    </menu:menupopup>
+  </menu:menu>
+  <menu:menu menu:id=".uno:ObjectAlign">
+    <menu:menupopup>
+      <menu:menuitem menu:id=".uno:ObjectAlignLeft"/>
+      <menu:menuitem menu:id=".uno:AlignCenter"/>
+      <menu:menuitem menu:id=".uno:ObjectAlignRight"/>
+      <menu:menuseparator/>
+      <menu:menuitem menu:id=".uno:AlignUp"/>
+      <menu:menuitem menu:id=".uno:AlignMiddle"/>
+      <menu:menuitem menu:id=".uno:AlignDown"/>
+    </menu:menupopup>
+  </menu:menu>
+  <menu:menuitem menu:id=".uno:AnchorMenu"/>
+  <menu:menuitem menu:id=".uno:AssignMacro"/>
+  <menu:menuseparator/>
+  <menu:menuitem menu:id=".uno:ToggleObjectBezierMode"/>
+  <menu:menuitem menu:id=".uno:FontWork"/>
+  <menu:menuseparator/>
+  <menu:menu menu:id=".uno:GroupMenu">
+    <menu:menupopup>
+      <menu:menuitem menu:id=".uno:FormatGroup"/>
+      <menu:menuitem menu:id=".uno:FormatUngroup"/>
+      <menu:menuitem menu:id=".uno:EnterGroup"/>
+      <menu:menuitem menu:id=".uno:LeaveGroup"/>
+    </menu:menupopup>
+  </menu:menu>
+  <menu:menuseparator/>
+  <menu:menuitem menu:id=".uno:EditShapeHyperlink"/>
+  <menu:menuitem menu:id=".uno:DeleteShapeHyperlink"/>
+  <menu:menuitem menu:id=".uno:OpenHyperlinkOnCursor"/>
+</menu:menupopup>


More information about the Libreoffice-commits mailing list