summaryrefslogtreecommitdiff
path: root/officecfg/util
diff options
context:
space:
mode:
authorNiklas Johansson <sleeping.pillow@gmail.com>2016-02-02 15:06:58 +0100
committerJan Holesovsky <kendy@collabora.com>2016-04-04 07:42:53 +0000
commite667bcfa1749e6a9179b0900305f3179076dc63c (patch)
treea2440bb38446cfe58cf72fb2c5e5f3f5a0b5ed30 /officecfg/util
parent62967a0afc596811fe308640acdd90a6df57185f (diff)
Add tool to check for duplicate accelerators
The tool mentioned in tdf#94865. It should be possible to use in any installed locale. It uses the accessibility api to read the menus and retrieve the menu items and it's associated accelerator keys. Change-Id: I3abe1bff526db15e40c5cf792588c5eda1fbedad Reviewed-on: https://gerrit.libreoffice.org/22039 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Jan Holesovsky <kendy@collabora.com>
Diffstat (limited to 'officecfg/util')
-rw-r--r--officecfg/util/AcceleratorKeyChecker.fodt771
1 files changed, 771 insertions, 0 deletions
diff --git a/officecfg/util/AcceleratorKeyChecker.fodt b/officecfg/util/AcceleratorKeyChecker.fodt
new file mode 100644
index 000000000000..f6aba7ae97ff
--- /dev/null
+++ b/officecfg/util/AcceleratorKeyChecker.fodt
@@ -0,0 +1,771 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
+ <office:meta><meta:creation-date>2015-09-24T00:23:17.450000000</meta:creation-date><dc:date>2016-02-12T08:27:37.426000000</dc:date><meta:editing-duration>PT2H10M43S</meta:editing-duration><meta:editing-cycles>75</meta:editing-cycles><meta:generator>LibreOfficeDev/5.2.0.0.alpha0$Windows_x86 LibreOffice_project/f14d271d31e75de09821cf1766c7ab2a9c6e0461</meta:generator><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="11" meta:word-count="235" meta:character-count="1250" meta:non-whitespace-character-count="1030"/></office:meta>
+ <office:settings>
+ <config:config-item-set config:name="ooo:view-settings">
+ <config:config-item config:name="ViewAreaTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="ViewAreaWidth" config:type="long">26407</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">15162</config:config-item>
+ <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item>
+ <config:config-item-map-indexed config:name="Views">
+ <config:config-item-map-entry>
+ <config:config-item config:name="ViewId" config:type="string">view2</config:config-item>
+ <config:config-item config:name="ViewLeft" config:type="long">11382</config:config-item>
+ <config:config-item config:name="ViewTop" config:type="long">4362</config:config-item>
+ <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">0</config:config-item>
+ <config:config-item config:name="VisibleRight" config:type="long">26405</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">15161</config:config-item>
+ <config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ViewLayoutColumns" config:type="short">1</config:config-item>
+ <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ZoomFactor" config:type="short">100</config:config-item>
+ <config:config-item config:name="IsSelectedFrame" config:type="boolean">false</config:config-item>
+ </config:config-item-map-entry>
+ </config:config-item-map-indexed>
+ </config:config-item-set>
+ <config:config-item-set config:name="ooo:configuration-settings">
+ <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterName" config:type="string"/>
+ <config:config-item config:name="EmbeddedDatabaseName" config:type="string"/>
+ <config:config-item config:name="CurrentDatabaseDataSource" config:type="string">Bröllopsgäster</config:config-item>
+ <config:config-item config:name="LinkUpdateMode" config:type="short">1</config:config-item>
+ <config:config-item config:name="AddParaTableSpacingAtStart" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="FloattableNomargins" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnbreakableNumberings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="FieldAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="BackgroundParaOverDrawings" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaTableSpacing" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="ChartAutoUpdate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommand" config:type="string"/>
+ <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrinterSetup" config:type="base64Binary"/>
+ <config:config-item config:name="IsKernAsianPunctuation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CharacterCompressionType" config:type="short">0</config:config-item>
+ <config:config-item config:name="ApplyUserData" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SurroundTextWrapSmall" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SmallCapsPercentage66" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item>
+ <config:config-item config:name="SaveVersionOnClose" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UpdateFromTemplate" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintSingleJobs" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrinterIndependentLayout" config:type="string">high-resolution</config:config-item>
+ <config:config-item config:name="EmbedSystemFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotCaptureDrawObjsOnPage" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseFormerObjectPositioning" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IsLabelDocument" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddFrameOffsets" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddExternalLeading" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseOldNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="OutlineLevelYieldsNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotResetParaAttrsForNumFont" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="IgnoreFirstLineIndentInNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AllowPrintJobCancel" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerLineSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="AddParaSpacingToTableCells" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="UseFormerTextWrapping" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/>
+ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="DoNotJustifyLinesWithManualBreak" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="EmbedFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TableRowKeep" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="IgnoreTabsAndBlanksForLineCalculation" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="RsidRoot" config:type="int">1854555</config:config-item>
+ <config:config-item config:name="LoadReadonly" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClipAsCharacterAnchoredWriterFlyFrames" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UnxForceZeroExtLeading" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="UseOldPrinterMetrics" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabAtLeftIndentForParagraphsInList" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">3406469</config:config-item>
+ <config:config-item config:name="ApplyParagraphMarkFormatToNumbering" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="MathBaselineAlignment" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PropLineSpacingShrinksFirstLine" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="CollapseEmptyCellPara" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="TabOverflow" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="StylesNoDefault" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="SubtractFlysAnchoredAtFlys" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="ClippedPictures" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="TabOverMargin" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintAnnotationMode" config:type="short">0</config:config-item>
+ <config:config-item config:name="PrintGraphics" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintBlackFonts" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintProspect" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintLeftPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintControls" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintPageBackground" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintTextPlaceholder" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintDrawings" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintHiddenText" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintTables" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintReversed" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintRightPages" config:type="boolean">true</config:config-item>
+ <config:config-item config:name="PrintFaxName" config:type="string"/>
+ <config:config-item config:name="PrintPaperFromSetup" config:type="boolean">false</config:config-item>
+ <config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
+ </config:config-item-set>
+ </office:settings>
+ <office:scripts>
+ <office:script script:language="ooo:Basic">
+ <ooo:libraries xmlns:ooo="http://openoffice.org/2004/office" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <ooo:library-embedded ooo:name="Standard"/>
+ <ooo:library-embedded ooo:name="AcceleratorKeyCheck">
+ <ooo:module ooo:name="AccNameProvider">
+ <ooo:source-code>REM ***** BASIC *****
+Dim ROLEMAP As Object
+
+Sub Main
+&apos; msgbox getNameOfAccessibleRole(40)
+&apos; msgbox getNameOfAccessibleRole(57)
+End Sub
+
+Function getNameOfAccessibleRole(sID As Integer)
+ If IsNull(ROLEMAP) Then
+ initializeRoleMap
+ End If
+ If ROLEMAP.containsKey(sID) Then
+ getNameOfAccessibleRole = ROLEMAP.get(sID)
+ Else
+ MsgBox &quot;Could not find the name for the AccessibleRole: &quot; &amp; sID
+ End If
+End Function
+
+Sub initializeRoleMap
+ ROLEMAP = com.sun.star.container.EnumerableMap.create(&quot;short&quot;, &quot;string&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.UNKNOWN, &quot;UNKNOWN&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.ALERT, &quot;ALERT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COLUMN_HEADER, &quot;COLUMN_HEADER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.CANVAS, &quot;CANVAS&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.CHECK_BOX, &quot;CHECK_BOX&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.CHECK_MENU_ITEM, &quot;CHECK_MENU_ITEM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COLOR_CHOOSER, &quot;COLOR_CHOOSER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COMBO_BOX, &quot;COMBO_BOX&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DATE_EDITOR, &quot;DATE_EDITOR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DESKTOP_ICON, &quot;DESKTOP_ICON&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DESKTOP_PANE, &quot;DESKTOP_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DIRECTORY_PANE, &quot;DIRECTORY_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DIALOG, &quot;DIALOG&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.DOCUMENT, &quot;DOCUMENT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.EMBEDDED_OBJECT, &quot;EMBEDDED_OBJECT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.END_NOTE, &quot;END_NOTE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FILE_CHOOSER, &quot;FILE_CHOOSER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FILLER, &quot;FILLER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FONT_CHOOSER, &quot;FONT_CHOOSER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FOOTER, &quot;FOOTER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FOOTNOTE, &quot;FOOTNOTE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FRAME, &quot;FRAME&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.GLASS_PANE, &quot;GLASS_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.GRAPHIC, &quot;GRAPHIC&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.GROUP_BOX, &quot;GROUP_BOX&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.HEADER, &quot;HEADER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.HEADING, &quot;HEADING&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.HYPER_LINK, &quot;HYPER_LINK&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.ICON, &quot;ICON&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.INTERNAL_FRAME, &quot;INTERNAL_FRAME&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.LABEL, &quot;LABEL&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.LAYERED_PANE, &quot;LAYERED_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.LIST, &quot;LIST&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.LIST_ITEM, &quot;LIST_ITEM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.MENU, &quot;MENU&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.MENU_BAR, &quot;MENU_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.MENU_ITEM, &quot;MENU_ITEM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.OPTION_PANE, &quot;OPTION_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PAGE_TAB, &quot;PAGE_TAB&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PAGE_TAB_LIST, &quot;PAGE_TAB_LIST&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PANEL, &quot;PANEL&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PARAGRAPH, &quot;PARAGRAPH&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PASSWORD_TEXT, &quot;PASSWORD_TEXT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.POPUP_MENU, &quot;POPUP_MENU&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PUSH_BUTTON, &quot;PUSH_BUTTON&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PROGRESS_BAR, &quot;PROGRESS_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.RADIO_BUTTON, &quot;RADIO_BUTTON&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.RADIO_MENU_ITEM, &quot;RADIO_MENU_ITEM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.ROW_HEADER, &quot;ROW_HEADER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.ROOT_PANE, &quot;ROOT_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SCROLL_BAR, &quot;SCROLL_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SCROLL_PANE, &quot;SCROLL_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SHAPE, &quot;SHAPE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SEPARATOR, &quot;SEPARATOR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SLIDER, &quot;SLIDER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SPIN_BOX, &quot;SPIN_BOX&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SPLIT_PANE, &quot;SPLIT_PANE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.STATUS_BAR, &quot;STATUS_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TABLE, &quot;TABLE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TABLE_CELL, &quot;TABLE_CELL&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TEXT, &quot;TEXT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TEXT_FRAME, &quot;TEXT_FRAME&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TOGGLE_BUTTON, &quot;TOGGLE_BUTTON&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TOOL_BAR, &quot;TOOL_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TOOL_TIP, &quot;TOOL_TIP&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TREE, &quot;TREE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.VIEW_PORT, &quot;VIEW_PORT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.WINDOW, &quot;WINDOW&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.BUTTON_DROPDOWN, &quot;BUTTON_DROPDOWN&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.BUTTON_MENU, &quot;BUTTON_MENU&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.CAPTION, &quot;CAPTION&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.CHART, &quot;CHART&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.EDIT_BAR, &quot;EDIT_BAR&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.FORM, &quot;FORM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.IMAGE_MAP, &quot;IMAGE_MAP&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.NOTE, &quot;NOTE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.PAGE, &quot;PAGE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.RULER, &quot;RULER&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.SECTION, &quot;SECTION&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TREE_ITEM, &quot;TREE_ITEM&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.TREE_TABLE, &quot;TREE_TABLE&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COMMENT, &quot;COMMENT&quot;)
+ ROLEMAP.put (com.sun.star.accessibility.AccessibleRole.COMMENT_END, &quot;COMMENT_END&quot;)
+End Sub
+
+ </ooo:source-code>
+ </ooo:module>
+ <ooo:module ooo:name="__testMenu">
+ <ooo:source-code>REM ***** BASIC *****
+Option Explicit
+
+Dim oReportCursor As Object
+Dim oReportDoc As Object
+Dim oReportTable As Object
+Dim oComponentName As String
+Dim sMenuName As String
+Dim hasSubMenu As String
+Dim keybinding1 As Object
+Dim keybinding2 As Object
+Dim accKeyBinding As String
+
+Sub testmenus
+Dim sAccName As String
+Dim i As Integer, j As Integer, iMenuBarIndex As Integer
+Dim oAccChild As Object, oAccContext As Object, accMenu As Object
+Dim ComponentsToCheck As Variant, oComponent As Object
+
+ GlobalScope.BasicLibraries.LoadLibrary(&quot;Tools&quot;)
+
+ oReportDoc = CreateNewDocument(&quot;swriter&quot;)
+ oReportCursor = oReportDoc.getText().createTextCursor()
+
+ ComponentsToCheck() = Array(&quot;Writer&quot;, &quot;Calc&quot;, &quot;Impress&quot;,&quot;Draw&quot;, &quot;Math&quot;)
+ For Each oComponentName In ComponentsToCheck
+ oComponent = CreateNewDocument(&quot;s&quot; &amp; LCase(oComponentName))
+ AccReportHeading(oComponentName, 1)
+
+ oAccContext = getAccessibleContextOfDocument(oComponent)
+
+ For i = 0 To oAccContext.getAccessibleChildCount -1
+ oAccChild = oAccContext.getAccessibleChild(i).getAccessibleContext()
+ sAccName = getNameOfAccessibleRole(oAccChild.AccessibleRole)
+ If sAccName = &quot;MENU_BAR&quot; Then
+ iMenuBarIndex = i
+ AccReportHeading(&quot;Top Level Menu&quot;)
+ insertReportTable(Array(&quot;Name&quot;, &quot;Accelerator key&quot;, &quot;Has submenu&quot;), oComponentName &amp; &quot;-Top_Level_Menu&quot;)
+ For j = 0 To oAccChild.getAccessibleChildCount -1
+ hasSubMenu = &quot;&quot;
+ accMenu = oAccChild.getAccessibleChild(j).getAccessibleContext()
+ sMenuName = accMenu.AccessibleName
+ keybinding1 = accMenu.getAccessibleActionKeyBinding(0).getAccessibleKeyBinding(0)
+ If accMenu.getAccessibleActionKeyBinding(0).getAccessibleKeyBindingCount() &gt; 1 Then
+ keybinding2 = accMenu.getAccessibleActionKeyBinding(0).getAccessibleKeyBinding(1)
+ End If
+ accKeyBinding = makeKeyStrokeReadable(keybinding1(0), True)
+ If accMenu.AccessibleChildCount &gt; 0 Then hasSubMenu = &quot;Yes&quot;
+ insertReportTableContent(Array(sMenuName, accKeyBinding, hasSubMenu))
+ Next
+ End If
+ Next
+ AddMenuTables oAccContext.getAccessibleChild(iMenuBarIndex).getAccessibleContext
+
+ DisposeDocument(oComponent)
+ Next
+ CheckTableAndMarkupDuplicates
+End Sub
+
+Sub AddMenuTables(accMenuBar)
+Dim i As Integer, accMenu As Object
+ For i = 0 To accMenuBar.getAccessibleChildCount-1
+ accMenu = accMenuBar.getAccessibleChild(i)
+ sMenuName = accMenu.AccessibleName
+ AccReportHeading(accMenu.AccessibleName)
+ insertReportTable(Array(&quot;Name&quot;, &quot;Accelerator key&quot;, &quot;Has submenu&quot;), oComponentName &amp; &quot;-&quot; &amp; sMenuName)
+ FillMenuTable accMenu, 2
+ HandleSubMenues accMenu
+ Next
+End Sub
+
+Sub HandleSubMenues(accMenu, Optional HeadingLevel as Integer)
+Dim i As Integer, accMenuItem As Object, sSubMenuName As String
+ If isMissing(HeadingLevel) Then HeadingLevel = 3
+ For i = 0 To accMenu.getAccessibleChildCount-1
+ accMenuItem = accMenu.getAccessibleChild(i)
+ If getNameOfAccessibleRole(accMenuItem.getAccessibleRole) = &quot;MENU&quot; Then
+ sSubMenuName = accMenuItem.AccessibleName
+ AccReportHeading(sSubMenuName, HeadingLevel)
+ insertReportTable(Array(&quot;Name&quot;, &quot;Accelerator key&quot;, &quot;Has submenu&quot;), oComponentName &amp; &quot;-&quot; &amp; sMenuName &amp; &quot;-&quot; &amp; sSubMenuName)
+ FillMenuTable accMenuItem
+ &apos; Take care of submenues of submenues
+ &apos; Example in Writer: Insert - Shape - Line
+ HandleSubMenues accMenuItem, HeadingLevel + 1
+ End If
+ Next
+End Sub
+
+Sub FillMenuTable(accMenu)
+Dim i As Integer, accMenuItem As Object
+ &apos;Check if it is a menu, and open it
+ If getNameOfAccessibleRole(accMenu.getAccessibleRole) = &quot;MENU&quot; Then
+ accMenu.doAccessibleAction(0)
+ End If
+ For i = 0 To accMenu.getAccessibleChildCount-1
+ accMenuItem = accMenu.getAccessibleChild(i)
+ Select Case getNameOfAccessibleRole(accMenuItem.getAccessibleRole)
+ Case &quot;MENU_ITEM&quot;, &quot;CHECK_MENU_ITEM&quot;, &quot;RADIO_MENU_ITEM&quot;
+ hasSubMenu = &quot;&quot;
+ sMenuName = accMenuItem.AccessibleName
+ keybinding1 = accMenuItem.getAccessibleActionKeyBinding(0).getAccessibleKeyBinding(0)
+ accKeyBinding = makeKeyStrokeReadable(keybinding1(0))
+ insertReportTableContent(Array(sMenuName, accKeyBinding, hasSubMenu))
+ Case &quot;MENU&quot;
+ hasSubMenu = &quot;Yes&quot;
+ sMenuName = accMenuItem.AccessibleName
+ keybinding1 = accMenuItem.getAccessibleActionKeyBinding(0).getAccessibleKeyBinding(0)
+ accKeyBinding = makeKeyStrokeReadable(keybinding1(0))
+ insertReportTableContent(Array(sMenuName, accKeyBinding, hasSubMenu))
+ End Select
+ Next
+End Sub
+
+Function getAccessibleContextOfDocument(oDoc)
+Dim oContainerWindow As Object
+ oContainerWindow = oDoc.getCurrentController().getFrame().getContainerWindow()
+ getAccessibleContextOfDocument = oContainerWindow.getAccessibleContext()
+End Function
+
+Function makeKeyStrokeReadable(oKeyStroke, Optional bIgnoreAltModifier)
+Dim sModifiers As String, sMod As String
+ If isMissing(bIgnoreAltModifier) Then bIgnoreAltModifier = false
+
+ sModifiers = cStr(oKeyStroke.Modifiers)
+ Select Case sModifiers
+ Case &quot;1&quot;
+ sMod = &quot;Shift + &quot;
+ Case &quot;2&quot;
+ sMod = &quot;Ctrl + &quot;
+ Case &quot;3&quot;
+ sMod = &quot;Ctrl + Shift + &quot;
+ Case &quot;4&quot;
+ If bIgnoreAltModifier Then
+ sMod = &quot;&quot;
+ Else
+ sMod = &quot;Alt + &quot;
+ End If
+ Case &quot;5&quot;
+ sMod = &quot;Shift + Alt + &quot;
+ Case &quot;6&quot;
+ sMod = &quot;Ctrl + Alt + &quot;
+ Case &quot;7&quot;
+ sMod = &quot;Ctrl + Shift + Alt + &quot;
+ Case &quot;0&quot;
+ sMod = &quot;&quot;
+ Case Else
+ sMod = &quot;Are you using Mac? Not sure if this is supported on Mac? Your modifier is: &quot; &amp; sModifiers
+ End Select
+ makeKeyStrokeReadable = sMod &amp; UCase(oKeyStroke.KeyChar)
+End Function
+
+Sub AccReport(sString)
+ oReportCursor.setString(sString)
+ oReportCursor.collapseToEnd()
+End Sub
+
+Sub AccReportHeading(sString as string, Optional HeadingLevel as integer)
+If IsMissing(HeadingLevel) Then HeadingLevel = 2
+ oReportCursor.collapseToEnd()
+ oReportCursor.ParaStyleName = &quot;Heading &quot; &amp; HeadingLevel
+ oReportCursor.setString(sString &amp; chr(13))
+ oReportCursor.collapseToEnd()
+End Sub
+
+Sub insertReportTable(sColumns(), sTableName As String)
+Dim noColumns As Integer, i As Integer
+Dim oCell As Object
+ noColumns = UBound(sColumns)
+ oReportTable = oReportDoc.createInstance (&quot;com.sun.star.text.TextTable&quot;)
+ oReportTable.initialize(2, noColumns+1)
+ oReportTable.HeaderRowCount = 1
+ oReportTable.RepeatHeadline = true
+ sTableName = Replace(sTableName, &quot; &quot;, &quot;_&quot;)
+ sTableName = Replace(sTableName, &quot;.&quot;, &quot;&quot;)
+ oReportTable.Name = sTableName
+ oReportCursor.getText().insertTextContent(oReportCursor, oReportTable, False)
+
+ For i = 0 To noColumns
+ oCell = oReportTable.getCellByPosition( i, 0 )
+ oCell.setString(sColumns(i))
+ Next
+End Sub
+
+Sub insertReportTableContent(sColumns())
+Dim noColumns As Integer, iRows As Integer, i As Integer
+Dim oCell As Object
+ noColumns = UBound(sColumns)
+ iRows = oReportTable.getRows().Count
+ If iRows = 2 Then
+ oCell = oReportTable.getCellByPosition(0, iRows-1)
+ If oCell.getString() &lt;&gt; &quot;&quot; Then
+ oReportTable.getRows().insertByIndex(iRows,1)
+ Else
+ iRows = iRows-1
+ End If
+ Else
+ oReportTable.getRows().insertByIndex(iRows,1)
+ End If
+
+ For i = 0 To noColumns
+ oCell = oReportTable.getCellByPosition( i, iRows )
+ oCell.setString(sColumns(i))
+ Next
+End Sub
+
+Sub CheckTableAndMarkupDuplicates
+Dim iTable As Integer, oTable As Object
+Dim i As Integer, j As Integer
+Dim sAccKey1 As String, sAccKey2 As String
+ For iTable = 0 To oReportDoc.TextTables.Count-1
+ oTable = oReportDoc.TextTables(iTable)
+ &apos;First row is a header so we can start at the second row (1)
+ For i = 1 To oTable.getRows.Count-1
+ For j = i + 1 To oTable.getRows.Count-1
+ sAccKey1 = oTable.getCellByPosition(1, i).getString()
+ sAccKey2 = oTable.getCellByPosition(1, j).getString()
+ If sAccKey1 = sAccKey2 Then
+ If oTable.getCellByPosition(2, i).getString() = &quot;Yes&quot; Then
+ oTable.getRows().getByIndex(i).BackColor = RGB(255, 0, 0)
+ Else
+ oTable.getRows().getByIndex(i).BackColor = RGB(255, 255, 0)
+ End If
+ If oTable.getCellByPosition(2, j).getString() = &quot;Yes&quot; Then
+ oTable.getRows().getByIndex(j).BackColor = RGB(255, 0, 0)
+ Else
+ oTable.getRows().getByIndex(j).BackColor = RGB(255, 255,0)
+ End If
+ End If
+ Next
+ Next
+ Next
+End Sub
+
+ </ooo:source-code>
+ </ooo:module>
+ </ooo:library-embedded>
+ </ooo:libraries>
+ </office:script>
+ </office:scripts>
+ <office:font-face-decls>
+ <style:font-face style:name="OpenSymbol" svg:font-family="OpenSymbol" style:font-charset="x-symbol"/>
+ <style:font-face style:name="Lucida Sans1" svg:font-family="&apos;Lucida Sans&apos;" style:font-family-generic="swiss"/>
+ <style:font-face style:name="Liberation Serif" svg:font-family="&apos;Liberation Serif&apos;" style:font-family-generic="roman" style:font-pitch="variable"/>
+ <style:font-face style:name="Liberation Sans" svg:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable"/>
+ <style:font-face style:name="Lucida Sans" svg:font-family="&apos;Lucida Sans&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="Microsoft YaHei" svg:font-family="&apos;Microsoft YaHei&apos;" style:font-family-generic="system" style:font-pitch="variable"/>
+ <style:font-face style:name="SimSun" svg:font-family="SimSun" style:font-family-generic="system" style:font-pitch="variable"/>
+ </office:font-face-decls>
+ <office:styles>
+ <style:default-style style:family="graphic">
+ <style:graphic-properties svg:stroke-color="#3465a4" draw:fill-color="#729fcf" fo:wrap-option="no-wrap" draw:shadow-offset-x="0.3cm" draw:shadow-offset-y="0.3cm" draw:start-line-spacing-horizontal="0.283cm" draw:start-line-spacing-vertical="0.283cm" draw:end-line-spacing-horizontal="0.283cm" draw:end-line-spacing-vertical="0.283cm" style:flow-with-text="false"/>
+ <style:paragraph-properties style:text-autospace="ideograph-alpha" style:line-break="strict" style:writing-mode="lr-tb" style:font-independent-line-spacing="false">
+ <style:tab-stops/>
+ </style:paragraph-properties>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="sv" fo:country="SE" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN"/>
+ </style:default-style>
+ <style:default-style style:family="paragraph">
+ <style:paragraph-properties fo:hyphenation-ladder-count="no-limit" style:text-autospace="ideograph-alpha" style:punctuation-wrap="hanging" style:line-break="strict" style:tab-stop-distance="1.251cm" style:writing-mode="page"/>
+ <style:text-properties style:use-window-font-color="true" style:font-name="Liberation Serif" fo:font-size="12pt" fo:language="sv" fo:country="SE" style:letter-kerning="true" style:font-name-asian="SimSun" style:font-size-asian="10.5pt" style:language-asian="zh" style:country-asian="CN" style:font-name-complex="Lucida Sans" style:font-size-complex="12pt" style:language-complex="hi" style:country-complex="IN" fo:hyphenate="false" fo:hyphenation-remain-char-count="2" fo:hyphenation-push-char-count="2"/>
+ </style:default-style>
+ <style:default-style style:family="table">
+ <style:table-properties table:border-model="collapsing"/>
+ </style:default-style>
+ <style:default-style style:family="table-row">
+ <style:table-row-properties fo:keep-together="auto"/>
+ </style:default-style>
+ <style:style style:name="Standard" style:family="paragraph" style:class="text">
+ <style:text-properties fo:language="en" fo:country="US" style:font-size-asian="10.5pt"/>
+ </style:style>
+ <style:style style:name="Heading" style:family="paragraph" style:parent-style-name="Standard" style:next-style-name="Text_20_body" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:keep-with-next="always"/>
+ <style:text-properties style:font-name="Liberation Sans" fo:font-family="&apos;Liberation Sans&apos;" style:font-family-generic="swiss" style:font-pitch="variable" fo:font-size="14pt" style:font-name-asian="Microsoft YaHei" style:font-family-asian="&apos;Microsoft YaHei&apos;" style:font-family-generic-asian="system" style:font-pitch-asian="variable" style:font-size-asian="14pt" style:font-name-complex="Lucida Sans" style:font-family-complex="&apos;Lucida Sans&apos;" style:font-family-generic-complex="system" style:font-pitch-complex="variable" style:font-size-complex="14pt"/>
+ </style:style>
+ <style:style style:name="Text_20_body" style:display-name="Text body" style:family="paragraph" style:parent-style-name="Standard" style:class="text">
+ <style:paragraph-properties fo:margin-top="0cm" fo:margin-bottom="0.247cm" loext:contextual-spacing="false" fo:line-height="120%"/>
+ </style:style>
+ <style:style style:name="List" style:family="paragraph" style:parent-style-name="Text_20_body" style:class="list">
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lucida Sans1" style:font-family-complex="&apos;Lucida Sans&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="Caption" style:family="paragraph" style:parent-style-name="Standard" style:class="extra">
+ <style:paragraph-properties fo:margin-top="0.212cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" text:number-lines="false" text:line-number="0"/>
+ <style:text-properties fo:font-size="12pt" fo:font-style="italic" style:font-size-asian="12pt" style:font-style-asian="italic" style:font-name-complex="Lucida Sans1" style:font-family-complex="&apos;Lucida Sans&apos;" style:font-family-generic-complex="swiss" style:font-size-complex="12pt" style:font-style-complex="italic"/>
+ </style:style>
+ <style:style style:name="Index" style:family="paragraph" style:parent-style-name="Standard" style:class="index">
+ <style:paragraph-properties text:number-lines="false" text:line-number="0"/>
+ <style:text-properties style:font-size-asian="12pt" style:font-name-complex="Lucida Sans1" style:font-family-complex="&apos;Lucida Sans&apos;" style:font-family-generic-complex="swiss"/>
+ </style:style>
+ <style:style style:name="Heading_20_1" style:display-name="Heading 1" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="1" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.423cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false"/>
+ <style:text-properties fo:font-size="130%" fo:font-weight="bold" style:font-size-asian="130%" style:font-weight-asian="bold" style:font-size-complex="130%" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Quotations" style:family="paragraph" style:parent-style-name="Standard" style:class="html">
+ <style:paragraph-properties fo:margin-left="1cm" fo:margin-right="1cm" fo:margin-top="0cm" fo:margin-bottom="0.499cm" loext:contextual-spacing="false" fo:text-indent="0cm" style:auto-text-indent="false"/>
+ </style:style>
+ <style:style style:name="Title" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
+ <style:text-properties fo:font-size="28pt" fo:font-weight="bold" style:font-size-asian="28pt" style:font-weight-asian="bold" style:font-size-complex="28pt" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Subtitle" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:class="chapter">
+ <style:paragraph-properties fo:margin-top="0.106cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false" fo:text-align="center" style:justify-single-word="false"/>
+ <style:text-properties fo:font-size="18pt" style:font-size-asian="18pt" style:font-size-complex="18pt"/>
+ </style:style>
+ <style:style style:name="Heading_20_2" style:display-name="Heading 2" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="2" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.353cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false"/>
+ <style:text-properties fo:font-size="115%" fo:font-weight="bold" style:font-size-asian="115%" style:font-weight-asian="bold" style:font-size-complex="115%" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Heading_20_3" style:display-name="Heading 3" style:family="paragraph" style:parent-style-name="Heading" style:next-style-name="Text_20_body" style:default-outline-level="3" style:class="text">
+ <style:paragraph-properties fo:margin-top="0.247cm" fo:margin-bottom="0.212cm" loext:contextual-spacing="false"/>
+ <style:text-properties fo:font-size="101%" fo:font-weight="bold" style:font-size-asian="101%" style:font-weight-asian="bold" style:font-size-complex="101%" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="Bullet_20_Symbols" style:display-name="Bullet Symbols" style:family="text">
+ <style:text-properties style:font-name="OpenSymbol" fo:font-family="OpenSymbol" style:font-charset="x-symbol" style:font-name-asian="OpenSymbol" style:font-family-asian="OpenSymbol" style:font-charset-asian="x-symbol" style:font-name-complex="OpenSymbol" style:font-family-complex="OpenSymbol" style:font-charset-complex="x-symbol"/>
+ </style:style>
+ <text:outline-style style:name="Outline">
+ <text:outline-level-style text:level="1" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="0.762cm" fo:text-indent="-0.762cm" fo:margin-left="0.762cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="2" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.016cm" fo:text-indent="-1.016cm" fo:margin-left="1.016cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="3" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-1.27cm" fo:margin-left="1.27cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="4" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.524cm" fo:text-indent="-1.524cm" fo:margin-left="1.524cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="5" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.778cm" fo:text-indent="-1.778cm" fo:margin-left="1.778cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="6" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.032cm" fo:text-indent="-2.032cm" fo:margin-left="2.032cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="7" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.286cm" fo:text-indent="-2.286cm" fo:margin-left="2.286cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="8" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-2.54cm" fo:margin-left="2.54cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="9" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.794cm" fo:text-indent="-2.794cm" fo:margin-left="2.794cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ <text:outline-level-style text:level="10" style:num-format="">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.048cm" fo:text-indent="-3.048cm" fo:margin-left="3.048cm"/>
+ </style:list-level-properties>
+ </text:outline-level-style>
+ </text:outline-style>
+ <text:notes-configuration text:note-class="footnote" style:num-format="1" text:start-value="0" text:footnotes-position="page" text:start-numbering-at="document"/>
+ <text:notes-configuration text:note-class="endnote" style:num-format="i" text:start-value="0"/>
+ <text:linenumbering-configuration text:number-lines="false" text:offset="0.499cm" style:num-format="1" text:number-position="left" text:increment="5"/>
+ </office:styles>
+ <office:automatic-styles>
+ <style:style style:name="P1" style:family="paragraph" style:parent-style-name="Text_20_body">
+ <style:text-properties officeooo:rsid="001c4c5b" officeooo:paragraph-rsid="001c4c5b"/>
+ </style:style>
+ <style:style style:name="P2" style:family="paragraph" style:parent-style-name="Text_20_body">
+ <style:text-properties officeooo:rsid="0027107a" officeooo:paragraph-rsid="0027107a"/>
+ </style:style>
+ <style:style style:name="P3" style:family="paragraph" style:parent-style-name="Text_20_body">
+ <style:text-properties fo:font-weight="normal" officeooo:rsid="0027b74d" officeooo:paragraph-rsid="0027b74d" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="P4" style:family="paragraph" style:parent-style-name="Text_20_body">
+ <style:text-properties fo:font-weight="normal" officeooo:rsid="0027107a" officeooo:paragraph-rsid="0027107a" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="P5" style:family="paragraph" style:parent-style-name="Heading_20_1">
+ <style:text-properties officeooo:rsid="001c4c5b" officeooo:paragraph-rsid="001c4c5b"/>
+ </style:style>
+ <style:style style:name="P6" style:family="paragraph" style:parent-style-name="Standard">
+ <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/>
+ <style:text-properties style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-size="12pt" fo:font-style="normal" style:text-underline-style="none" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="P7" style:family="paragraph" style:parent-style-name="Heading_20_1">
+ <style:text-properties officeooo:rsid="001c4c5b" officeooo:paragraph-rsid="001c4c5b"/>
+ </style:style>
+ <style:style style:name="P8" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
+ <style:text-properties officeooo:rsid="0027107a" officeooo:paragraph-rsid="0027107a"/>
+ </style:style>
+ <style:style style:name="P9" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
+ <style:text-properties fo:font-weight="normal" officeooo:rsid="0027107a" officeooo:paragraph-rsid="0027107a" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="P10" style:family="paragraph" style:parent-style-name="Text_20_body" style:list-style-name="L1">
+ <style:text-properties fo:font-weight="normal" officeooo:rsid="0027b74d" officeooo:paragraph-rsid="0027b74d" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="P11" style:family="paragraph">
+ <style:paragraph-properties fo:text-align="center"/>
+ <style:text-properties style:text-line-through-style="none" style:text-line-through-type="none" style:font-name="Liberation Sans" fo:font-size="12pt" fo:font-style="normal" style:text-underline-style="none" fo:font-weight="normal"/>
+ </style:style>
+ <style:style style:name="T1" style:family="text">
+ <style:text-properties officeooo:rsid="0023a8b2"/>
+ </style:style>
+ <style:style style:name="T2" style:family="text">
+ <style:text-properties fo:font-weight="bold" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="T3" style:family="text">
+ <style:text-properties fo:font-weight="bold" officeooo:rsid="002ae357" style:font-weight-asian="bold" style:font-weight-complex="bold"/>
+ </style:style>
+ <style:style style:name="T4" style:family="text">
+ <style:text-properties fo:font-weight="normal" style:font-weight-asian="normal" style:font-weight-complex="normal"/>
+ </style:style>
+ <style:style style:name="T5" style:family="text">
+ <style:text-properties officeooo:rsid="00290da0"/>
+ </style:style>
+ <style:style style:name="T6" style:family="text">
+ <style:text-properties officeooo:rsid="002ae357"/>
+ </style:style>
+ <style:style style:name="T7" style:family="text">
+ <style:text-properties officeooo:rsid="002c2869"/>
+ </style:style>
+ <text:list-style style:name="L1">
+ <text:list-level-style-bullet text:level="1" text:style-name="Bullet_20_Symbols" text:bullet-char="•">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.27cm" fo:text-indent="-0.635cm" fo:margin-left="1.27cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="2" text:style-name="Bullet_20_Symbols" text:bullet-char="◦">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="1.905cm" fo:text-indent="-0.635cm" fo:margin-left="1.905cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="3" text:style-name="Bullet_20_Symbols" text:bullet-char="▪">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="2.54cm" fo:text-indent="-0.635cm" fo:margin-left="2.54cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="4" text:style-name="Bullet_20_Symbols" text:bullet-char="•">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.175cm" fo:text-indent="-0.635cm" fo:margin-left="3.175cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="5" text:style-name="Bullet_20_Symbols" text:bullet-char="◦">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="3.81cm" fo:text-indent="-0.635cm" fo:margin-left="3.81cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="6" text:style-name="Bullet_20_Symbols" text:bullet-char="▪">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="4.445cm" fo:text-indent="-0.635cm" fo:margin-left="4.445cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="7" text:style-name="Bullet_20_Symbols" text:bullet-char="•">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.08cm" fo:text-indent="-0.635cm" fo:margin-left="5.08cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="8" text:style-name="Bullet_20_Symbols" text:bullet-char="◦">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="5.715cm" fo:text-indent="-0.635cm" fo:margin-left="5.715cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="9" text:style-name="Bullet_20_Symbols" text:bullet-char="▪">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.35cm" fo:text-indent="-0.635cm" fo:margin-left="6.35cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ <text:list-level-style-bullet text:level="10" text:style-name="Bullet_20_Symbols" text:bullet-char="•">
+ <style:list-level-properties text:list-level-position-and-space-mode="label-alignment">
+ <style:list-level-label-alignment text:label-followed-by="listtab" text:list-tab-stop-position="6.985cm" fo:text-indent="-0.635cm" fo:margin-left="6.985cm"/>
+ </style:list-level-properties>
+ </text:list-level-style-bullet>
+ </text:list-style>
+ <style:style style:name="gr1" style:family="graphic">
+ <style:graphic-properties style:wrap="run-through" style:number-wrapped-paragraphs="no-limit" style:vertical-pos="from-top" style:horizontal-pos="from-left" style:horizontal-rel="paragraph" draw:wrap-influence-on-position="once-concurrent" style:flow-with-text="false"/>
+ </style:style>
+ <style:page-layout style:name="pm1">
+ <style:page-layout-properties fo:page-width="21.001cm" fo:page-height="29.7cm" style:num-format="1" style:print-orientation="portrait" fo:margin-top="2cm" fo:margin-bottom="2cm" fo:margin-left="2cm" fo:margin-right="2cm" style:writing-mode="lr-tb" style:footnote-max-height="0cm">
+ <style:footnote-sep style:width="0.018cm" style:distance-before-sep="0.101cm" style:distance-after-sep="0.101cm" style:line-style="solid" style:adjustment="left" style:rel-width="25%" style:color="#000000"/>
+ </style:page-layout-properties>
+ <style:header-style/>
+ <style:footer-style/>
+ </style:page-layout>
+ </office:automatic-styles>
+ <office:master-styles>
+ <style:master-page style:name="Standard" style:page-layout-name="pm1"/>
+ </office:master-styles>
+ <office:body>
+ <office:text>
+ <office:forms form:automatic-focus="false" form:apply-design-mode="false">
+ <form:form form:name="Form" form:apply-filter="true" form:command-type="table" form:control-implementation="ooo:com.sun.star.form.component.Form" office:target-frame="" xlink:href="" xlink:type="simple">
+ <form:properties>
+ <form:property form:property-name="PropertyChangeNotificationEnabled" office:value-type="boolean" office:boolean-value="true"/>
+ </form:properties>
+ <form:button form:name="Push Button 1" form:control-implementation="ooo:com.sun.star.form.component.CommandButton" xml:id="control1" form:id="control1" form:label="Generate report" office:target-frame="" xlink:href="" form:image-data="" form:delay-for-repeat="PT0.050000000S" form:image-position="center">
+ <form:properties>
+ <form:property form:property-name="DefaultControl" office:value-type="string" office:string-value="com.sun.star.form.control.CommandButton"/>
+ </form:properties>
+ <office:event-listeners>
+ <script:event-listener script:language="ooo:script" script:event-name="form:performaction" xlink:href="vnd.sun.star.script:AcceleratorKeyCheck.__testMenu.testmenus?language=Basic&amp;location=document" xlink:type="simple"/>
+ </office:event-listeners>
+ </form:button>
+ </form:form>
+ </office:forms>
+ <text:sequence-decls>
+ <text:sequence-decl text:display-outline-level="0" text:name="Illustration"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Table"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Text"/>
+ <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/>
+ </text:sequence-decls>
+ <text:h text:style-name="P5" text:outline-level="1">Accelerator key check</text:h>
+ <text:p text:style-name="P1">This document contains some code to traverse the menus and generate a reports the contents of the main menu items and it&apos;s accelerator keys. If there is a duplicate and the menu item has a sub menu then that means that the user wont be able to reach the second menu item with the same accelerator key. Therefore it will be marked with a <text:span text:style-name="T2">red</text:span> background color. If it has the same key <text:span text:style-name="T6">but don&apos;t have a sub-menu it is marked with a </text:span><text:span text:style-name="T3">yellow</text:span><text:span text:style-name="T6"> background, this is still a problem </text:span>that should be fixed but the <text:span text:style-name="T7">problem</text:span> is just not <text:span text:style-name="T1">quite </text:span>as severe.</text:p>
+ <text:p text:style-name="P1"><draw:control text:anchor-type="as-char" svg:y="0cm" draw:z-index="0" draw:style-name="gr1" draw:text-style-name="P11" svg:width="3.89cm" svg:height="1.324cm" draw:control="control1"/></text:p>
+ <text:p text:style-name="P2">If nothing happens when you press Generate report then the macros have probably been blocked for security reasons. To allow the report tobe generated you need change this setting. To do this:</text:p>
+ <text:list xml:id="list8718540425442089522" text:style-name="L1">
+ <text:list-item>
+ <text:p text:style-name="P8">Go to <text:span text:style-name="T2">Tools</text:span> → <text:span text:style-name="T2">Options</text:span> (or if your&apos;e using Mac <text:span text:style-name="T2">LibreOffice → Preferences...</text:span><text:span text:style-name="T4">)</text:span></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P8"><text:span text:style-name="T4">In the tree list to the left of the dialog navigate to </text:span><text:span text:style-name="T2">LibreOffice → Security</text:span></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P8">Click on the button <text:span text:style-name="T2">Macro security</text:span><text:span text:style-name="T4">...</text:span></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P8"><text:span text:style-name="T4">Set the Security Level to </text:span><text:span text:style-name="T2">Medium</text:span></text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P9">Close and reopen this document</text:p>
+ </text:list-item>
+ <text:list-item>
+ <text:p text:style-name="P10">You will get a warning that the document contains macros, click the button <text:span text:style-name="T2">Enable Macros</text:span>. </text:p>
+ </text:list-item>
+ </text:list>
+ <text:p text:style-name="P3">Of course you need to pay attention when this dialog shows up and don&apos;t <text:span text:style-name="T5">blindly </text:span>allow macros to run if you don&apos;t know where it comes from and what it does.</text:p>
+ </office:text>
+ </office:body>
+</office:document> \ No newline at end of file