summaryrefslogtreecommitdiff
path: root/scripting/workben/bindings
diff options
context:
space:
mode:
Diffstat (limited to 'scripting/workben/bindings')
-rwxr-xr-xscripting/workben/bindings/EditDebug.xdl36
-rwxr-xr-xscripting/workben/bindings/EventsBinding.xdl61
-rwxr-xr-xscripting/workben/bindings/HelpBinding.xdl30
-rwxr-xr-xscripting/workben/bindings/Highlight.xdl14
-rwxr-xr-xscripting/workben/bindings/KeyBinding.xdl59
-rwxr-xr-xscripting/workben/bindings/MacroEditor.xdl10
-rwxr-xr-xscripting/workben/bindings/MenuBinding.xdl65
-rwxr-xr-xscripting/workben/bindings/ScriptBinding.xba2093
-rwxr-xr-xscripting/workben/bindings/calckeybinding.xml94
-rwxr-xr-xscripting/workben/bindings/calcmenubar.xml318
-rwxr-xr-xscripting/workben/bindings/dialog.xlb6
-rwxr-xr-xscripting/workben/bindings/drawkeybinding.xml58
-rwxr-xr-xscripting/workben/bindings/drawmenubar.xml353
-rwxr-xr-xscripting/workben/bindings/eventbindings.xml4
-rwxr-xr-xscripting/workben/bindings/impresskeybinding.xml62
-rwxr-xr-xscripting/workben/bindings/impressmenubar.xml327
-rwxr-xr-xscripting/workben/bindings/manifest.xml14
-rwxr-xr-xscripting/workben/bindings/script.xlb4
-rwxr-xr-xscripting/workben/bindings/writerkeybinding.xml101
-rwxr-xr-xscripting/workben/bindings/writermenubar.xml280
20 files changed, 3989 insertions, 0 deletions
diff --git a/scripting/workben/bindings/EditDebug.xdl b/scripting/workben/bindings/EditDebug.xdl
new file mode 100755
index 000000000000..226104b2d746
--- /dev/null
+++ b/scripting/workben/bindings/EditDebug.xdl
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="EditDebugDialog" dlg:left="64" dlg:top="89" dlg:width="179" dlg:height="151" dlg:closeable="true" dlg:moveable="true" dlg:title="Edit/Debug Scripts">
+ <dlg:bulletinboard>
+ <dlg:combobox dlg:id="LocationCombo" dlg:tab-index="0" dlg:left="64" dlg:top="17" dlg:width="110" dlg:height="13" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:combobox dlg:id="LanguageCombo" dlg:tab-index="1" dlg:left="64" dlg:top="33" dlg:width="110" dlg:height="13" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:checkbox dlg:id="detail" dlg:tab-index="2" dlg:left="12" dlg:top="70" dlg:width="45" dlg:height="10" dlg:value="Detailed view" dlg:checked="false">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ </dlg:checkbox>
+ <dlg:menulist dlg:id="ScriptList" dlg:tab-index="3" dlg:left="64" dlg:top="50" dlg:width="110" dlg:height="44"/>
+ <dlg:button dlg:id="OK" dlg:tab-index="5" dlg:left="58" dlg:top="131" dlg:width="36" dlg:height="14" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.DoEdit" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Cancel" dlg:tab-index="6" dlg:left="97" dlg:top="131" dlg:width="36" dlg:height="14" dlg:value="Cancel">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuCancelButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Help" dlg:tab-index="7" dlg:left="138" dlg:top="131" dlg:width="36" dlg:height="14" dlg:value="Help">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuHelpButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="8" dlg:left="42" dlg:top="6" dlg:width="131" dlg:height="7"/>
+ <dlg:text dlg:id="Label1" dlg:tab-index="9" dlg:left="5" dlg:top="6" dlg:width="36" dlg:height="9" dlg:value="Select script"/>
+ <dlg:text dlg:id="Label7" dlg:tab-index="10" dlg:left="12" dlg:top="18" dlg:width="29" dlg:height="11" dlg:value="Location"/>
+ <dlg:text dlg:id="Label8" dlg:tab-index="11" dlg:left="12" dlg:top="31" dlg:width="35" dlg:height="9" dlg:value="Language"/>
+ <dlg:text dlg:id="Label9" dlg:tab-index="12" dlg:left="12" dlg:top="53" dlg:width="24" dlg:height="14" dlg:value="Script"/>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="13" dlg:left="7" dlg:top="120" dlg:width="167" dlg:height="7"/>
+ <dlg:button dlg:id="Browse" dlg:tab-index="4" dlg:disabled="true" dlg:left="136" dlg:top="101" dlg:width="36" dlg:height="14" dlg:value="Browse...">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.DoBrowseAndEdit" script:language="StarBasic"/>
+ </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/scripting/workben/bindings/EventsBinding.xdl b/scripting/workben/bindings/EventsBinding.xdl
new file mode 100755
index 000000000000..fe980b5ddfdb
--- /dev/null
+++ b/scripting/workben/bindings/EventsBinding.xdl
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="EventBindingDialog" dlg:left="64" dlg:top="99" dlg:width="179" dlg:height="209" dlg:closeable="true" dlg:moveable="true" dlg:title="Assign Script To Event">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-height="7"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:combobox dlg:id="LocationCombo" dlg:tab-index="0" dlg:left="63" dlg:top="19" dlg:width="108" dlg:height="12" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:combobox dlg:id="LanguageCombo" dlg:tab-index="1" dlg:left="63" dlg:top="31" dlg:width="108" dlg:height="12" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:checkbox dlg:id="detail" dlg:tab-index="2" dlg:left="17" dlg:top="57" dlg:width="44" dlg:height="10" dlg:value="Detailed view" dlg:checked="false">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ </dlg:checkbox>
+ <dlg:menulist dlg:id="ScriptList" dlg:tab-index="3" dlg:left="63" dlg:top="48" dlg:width="108" dlg:height="44"/>
+ <dlg:button dlg:id="Browse" dlg:tab-index="4" dlg:disabled="true" dlg:left="17" dlg:top="71" dlg:width="36" dlg:height="14" dlg:value="Browse...">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.BrowseButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:radiogroup>
+ <dlg:radio dlg:id="AllAppsOption" dlg:tab-index="5" dlg:left="12" dlg:top="107" dlg:width="51" dlg:height="10" dlg:value="All Applications">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.AppDocEventListener" script:language="StarBasic"/>
+ </dlg:radio>
+ <dlg:radio dlg:id="DocumentOption" dlg:tab-index="6" dlg:left="12" dlg:top="119" dlg:width="46" dlg:height="10" dlg:value="Document" dlg:checked="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.AppDocEventListener" script:language="StarBasic"/>
+ </dlg:radio>
+ </dlg:radiogroup>
+ <dlg:menulist dlg:id="EventList" dlg:tab-index="7" dlg:left="64" dlg:top="109" dlg:width="108" dlg:height="64">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.EventListListener" script:language="StarBasic"/>
+ </dlg:menulist>
+ <dlg:button dlg:id="Delete" dlg:tab-index="8" dlg:left="17" dlg:top="131" dlg:width="36" dlg:height="13" dlg:value="Delete">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.EventDeleteButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="NewButton" dlg:tab-index="9" dlg:left="17" dlg:top="159" dlg:width="36" dlg:height="13" dlg:value="Assign">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.EventNewButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="OK" dlg:tab-index="10" dlg:left="57" dlg:top="192" dlg:width="36" dlg:height="13" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.EventOKButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Cancel" dlg:tab-index="11" dlg:left="96" dlg:top="192" dlg:width="36" dlg:height="13" dlg:value="Cancel">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuCancelButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Help" dlg:tab-index="12" dlg:left="136" dlg:top="192" dlg:width="36" dlg:height="13" dlg:value="Help">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuHelpButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="13" dlg:left="9" dlg:top="182" dlg:width="167" dlg:height="6"/>
+ <dlg:fixedline dlg:id="FixedLine4" dlg:tab-index="14" dlg:left="76" dlg:top="99" dlg:width="98" dlg:height="5"/>
+ <dlg:text dlg:id="Label4" dlg:tab-index="15" dlg:left="5" dlg:top="97" dlg:width="71" dlg:height="8" dlg:value="Choose Event to assign to"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="16" dlg:left="42" dlg:top="7" dlg:width="132" dlg:height="6"/>
+ <dlg:text dlg:id="Label1" dlg:tab-index="17" dlg:left="5" dlg:top="7" dlg:width="36" dlg:height="8" dlg:value="Select script"/>
+ <dlg:text dlg:id="Label7" dlg:tab-index="18" dlg:left="12" dlg:top="17" dlg:width="28" dlg:height="7" dlg:value="Location"/>
+ <dlg:text dlg:id="Label8" dlg:tab-index="19" dlg:left="12" dlg:top="32" dlg:width="35" dlg:height="9" dlg:value="Language"/>
+ <dlg:text dlg:id="Label9" dlg:tab-index="20" dlg:left="12" dlg:top="49" dlg:width="23" dlg:height="8" dlg:value="Script"/>
+ <dlg:text dlg:id="Label10" dlg:tab-index="21" dlg:left="103" dlg:top="-19" dlg:width="3" dlg:height="0" dlg:value="Label10"/>
+ <dlg:text dlg:style-id="0" dlg:id="AddOn" dlg:tab-index="22" dlg:disabled="true" dlg:left="17" dlg:top="144" dlg:width="38" dlg:height="10" dlg:value="[Add-on&apos;s only]"/>
+ <dlg:text dlg:id="fsonly" dlg:tab-index="23" dlg:disabled="true" dlg:left="13" dlg:top="86" dlg:width="45" dlg:height="8" dlg:value="[Filesystem only]"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/scripting/workben/bindings/HelpBinding.xdl b/scripting/workben/bindings/HelpBinding.xdl
new file mode 100755
index 000000000000..7d39670097ec
--- /dev/null
+++ b/scripting/workben/bindings/HelpBinding.xdl
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="HelpBinding" dlg:left="100" dlg:top="8" dlg:width="213" dlg:height="388" dlg:closeable="true" dlg:moveable="true" dlg:title="Office Help - Help about the Assign Script Dialogs">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:text-color="0xff"/>
+ <dlg:style dlg:style-id="1" dlg:font-height="10"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:text dlg:id="Label2" dlg:tab-index="0" dlg:left="14" dlg:top="6" dlg:width="179" dlg:height="12" dlg:value="Integrated Help For Scripting Framework is not currently available." dlg:multiline="true"/>
+ <dlg:text dlg:id="Label1" dlg:tab-index="1" dlg:left="14" dlg:top="24" dlg:width="185" dlg:height="34" dlg:value="Assign Script Dialogs for Menus, Keys and Events allow you to bind a script written in a supported language (currently Java and BeanShell) to a menu item, key combo, Office event or document event." dlg:multiline="true"/>
+ <dlg:text dlg:id="Label3" dlg:tab-index="2" dlg:left="14" dlg:top="66" dlg:width="185" dlg:height="26" dlg:value="The location combo box will be populated with User, Share or Document. The default value will be User which will display all scripts (with the selected language type) in the User area.&#x0a;" dlg:multiline="true"/>
+ <dlg:titledbox dlg:id="FrameControl1" dlg:tab-index="3" dlg:left="9" dlg:top="20" dlg:width="196" dlg:height="346"/>
+ <dlg:text dlg:id="Label4" dlg:tab-index="4" dlg:left="14" dlg:top="92" dlg:width="185" dlg:height="18" dlg:value="The language combo box is populated with the list of supported languages. The default language is set to Java." dlg:multiline="true"/>
+ <dlg:button dlg:id="HelpOKButton" dlg:tab-index="5" dlg:left="167" dlg:top="371" dlg:width="36" dlg:height="13" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.HelpOKButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:text dlg:id="Label5" dlg:tab-index="6" dlg:left="14" dlg:top="144" dlg:width="185" dlg:height="34" dlg:value="In the Script combo box the script&apos;s display name will always be visible, if two or more scripts have the same display name (or if the Detailed View check box is selected) the script will be displayed as follows: display name [function name]" dlg:multiline="true"/>
+ <dlg:text dlg:id="Label6" dlg:tab-index="7" dlg:left="14" dlg:top="342" dlg:width="185" dlg:height="10" dlg:value="For further information see the User Guide at:" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="0" dlg:id="Label7" dlg:tab-index="8" dlg:left="14" dlg:top="351" dlg:width="185" dlg:height="10" dlg:value="http://framework.openoffice.org/scripting/user-guide.html" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="1" dlg:id="Label8" dlg:tab-index="9" dlg:left="14" dlg:top="55" dlg:width="185" dlg:height="11" dlg:value="Information common to all dialogs" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="1" dlg:id="Label9" dlg:tab-index="10" dlg:left="14" dlg:top="198" dlg:width="185" dlg:height="18" dlg:value="Assign Script to Menu Dialog" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="1" dlg:id="Label10" dlg:tab-index="11" dlg:left="14" dlg:top="247" dlg:width="185" dlg:height="16" dlg:value="Assign Script to Key Dialog" dlg:multiline="true"/>
+ <dlg:text dlg:style-id="1" dlg:id="Label11" dlg:tab-index="12" dlg:left="14" dlg:top="285" dlg:width="185" dlg:height="12" dlg:value="Assign Script to Event Dialog" dlg:multiline="true"/>
+ <dlg:text dlg:id="Label12" dlg:tab-index="13" dlg:left="14" dlg:top="211" dlg:width="185" dlg:height="36" dlg:value="To assign, select the Top-Level menu and Sub-Menu under which you wish to add the new script menu. Enter the script menu name and click New. To delete a script menu, select the script menu and click Delete." dlg:multiline="true"/>
+ <dlg:text dlg:id="Label13" dlg:tab-index="14" dlg:left="14" dlg:top="259" dlg:width="185" dlg:height="26" dlg:value="To assign, select the Key group and the Shortcut key, then click Assign. To delete, select the Shortcut to which the script is assigned and click Delete." dlg:multiline="true"/>
+ <dlg:text dlg:id="Label14" dlg:tab-index="15" dlg:left="14" dlg:top="297" dlg:width="185" dlg:height="42" dlg:value="To assign scripts to an event, select the Event then click Assign. Scripts can be assigned to application wide events or to the current document by selecting the appropriate application or document radio button. To delete, select the Event to which the script is assigned and click Delete." dlg:multiline="true"/>
+ <dlg:text dlg:id="Label16" dlg:tab-index="16" dlg:left="14" dlg:top="177" dlg:width="185" dlg:height="22" dlg:value="To assign a script, first you must select the script from the Script combo box, then follow the appropriate instructions below. " dlg:multiline="true"/>
+ <dlg:text dlg:id="Label15" dlg:tab-index="17" dlg:left="14" dlg:top="110" dlg:width="185" dlg:height="34" dlg:value="When the location is set to &quot;filesystem&quot;, and the language is set to something other than &quot;Java&quot;, the &quot;Browse&quot; button is enabled. This allows open a filechooser and populate the Script combo box with scripts located on the filesystem." dlg:multiline="true"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/scripting/workben/bindings/Highlight.xdl b/scripting/workben/bindings/Highlight.xdl
new file mode 100755
index 000000000000..2d65de42283e
--- /dev/null
+++ b/scripting/workben/bindings/Highlight.xdl
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="Highlight" dlg:left="68" dlg:top="23" dlg:width="135" dlg:height="48" dlg:closeable="true" dlg:moveable="true">
+ <dlg:bulletinboard>
+ <dlg:text dlg:id="Label1" dlg:tab-index="2" dlg:left="3" dlg:top="8" dlg:width="33" dlg:height="9" dlg:value="Find What:"/>
+ <dlg:textfield dlg:id="HighlightTextField" dlg:tab-index="3" dlg:left="39" dlg:top="6" dlg:width="93" dlg:height="12"/>
+ <dlg:button dlg:id="HighlightButton" dlg:tab-index="0" dlg:left="20" dlg:top="24" dlg:width="46" dlg:height="18" dlg:value="Highlight">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Highlight.ButtonPressHandler.bsh?language=BeanShell&amp;location=share" script:language="Script"/>
+ </dlg:button>
+ <dlg:button dlg:id="ExitButton" dlg:tab-index="1" dlg:left="72" dlg:top="24" dlg:width="46" dlg:height="18" dlg:value="Exit">
+ <script:event script:event-name="on-performaction" script:macro-name="vnd.sun.star.script:Highlight.ButtonPressHandler.bsh?language=BeanShell&amp;location=share" script:language="Script"/>
+ </dlg:button>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/scripting/workben/bindings/KeyBinding.xdl b/scripting/workben/bindings/KeyBinding.xdl
new file mode 100755
index 000000000000..107adf2f1dd4
--- /dev/null
+++ b/scripting/workben/bindings/KeyBinding.xdl
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="MenuBindingDialog" dlg:left="64" dlg:top="89" dlg:width="179" dlg:height="217" dlg:closeable="true" dlg:moveable="true" dlg:title="Assign Script To Key">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-height="7"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:combobox dlg:id="LocationCombo" dlg:tab-index="0" dlg:left="64" dlg:top="18" dlg:width="108" dlg:height="12" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:combobox dlg:id="LanguageCombo" dlg:tab-index="1" dlg:left="64" dlg:top="34" dlg:width="108" dlg:height="12" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:checkbox dlg:id="detail" dlg:tab-index="2" dlg:left="17" dlg:top="57" dlg:width="44" dlg:height="10" dlg:value="Detailed view" dlg:checked="false">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ </dlg:checkbox>
+ <dlg:menulist dlg:id="ScriptList" dlg:tab-index="3" dlg:left="63" dlg:top="49" dlg:width="108" dlg:height="44"/>
+ <dlg:button dlg:id="Browse" dlg:tab-index="4" dlg:disabled="true" dlg:left="17" dlg:top="71" dlg:width="36" dlg:height="14" dlg:value="Browse...">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.BrowseButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:combobox dlg:id="KeyCombo" dlg:tab-index="5" dlg:left="63" dlg:top="110" dlg:width="108" dlg:height="12" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.KeyComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireKeyComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:menulist dlg:id="KeyList" dlg:tab-index="6" dlg:left="63" dlg:top="125" dlg:width="108" dlg:height="59">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.KeyListListener" script:language="StarBasic"/>
+ </dlg:menulist>
+ <dlg:button dlg:id="Delete" dlg:tab-index="7" dlg:left="17" dlg:top="141" dlg:width="38" dlg:height="13" dlg:value="Delete">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.KeyDeleteButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="NewButton" dlg:tab-index="8" dlg:left="17" dlg:top="171" dlg:width="38" dlg:height="13" dlg:value="Assign">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.KeyNewButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="OK" dlg:tab-index="9" dlg:left="57" dlg:top="200" dlg:width="36" dlg:height="13" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuOKButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Cancel" dlg:tab-index="10" dlg:left="96" dlg:top="200" dlg:width="36" dlg:height="13" dlg:value="Cancel">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuCancelButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Help" dlg:tab-index="11" dlg:left="136" dlg:top="200" dlg:width="36" dlg:height="13" dlg:value="Help">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuHelpButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="12" dlg:left="9" dlg:top="190" dlg:width="167" dlg:height="6"/>
+ <dlg:fixedline dlg:id="FixedLine4" dlg:tab-index="13" dlg:left="94" dlg:top="99" dlg:width="81" dlg:height="5"/>
+ <dlg:text dlg:id="Label4" dlg:tab-index="14" dlg:left="5" dlg:top="97" dlg:width="90" dlg:height="8" dlg:value="Choose shortcut key to assign to"/>
+ <dlg:text dlg:id="Label5" dlg:tab-index="15" dlg:left="12" dlg:top="112" dlg:width="40" dlg:height="10" dlg:value="Key Group"/>
+ <dlg:text dlg:id="Label6" dlg:tab-index="16" dlg:left="12" dlg:top="127" dlg:width="40" dlg:height="10" dlg:value="Shortcut Key"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="17" dlg:left="43" dlg:top="7" dlg:width="132" dlg:height="6"/>
+ <dlg:text dlg:id="Label1" dlg:tab-index="18" dlg:left="5" dlg:top="7" dlg:width="36" dlg:height="8" dlg:value="Select script"/>
+ <dlg:text dlg:id="Label7" dlg:tab-index="19" dlg:left="12" dlg:top="17" dlg:width="28" dlg:height="7" dlg:value="Location"/>
+ <dlg:text dlg:id="Label8" dlg:tab-index="20" dlg:left="12" dlg:top="32" dlg:width="35" dlg:height="9" dlg:value="Language"/>
+ <dlg:text dlg:id="Label9" dlg:tab-index="21" dlg:left="12" dlg:top="49" dlg:width="23" dlg:height="8" dlg:value="Script"/>
+ <dlg:text dlg:id="Label10" dlg:tab-index="22" dlg:left="103" dlg:top="-9" dlg:width="3" dlg:height="0" dlg:value="Label10"/>
+ <dlg:text dlg:style-id="0" dlg:id="AddOn" dlg:tab-index="23" dlg:disabled="true" dlg:left="17" dlg:top="154" dlg:width="38" dlg:height="10" dlg:value="[Add-on&apos;s only]"/>
+ <dlg:text dlg:id="fsonly" dlg:tab-index="24" dlg:disabled="true" dlg:left="13" dlg:top="86" dlg:width="45" dlg:height="8" dlg:value="[Filesystem only]"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/scripting/workben/bindings/MacroEditor.xdl b/scripting/workben/bindings/MacroEditor.xdl
new file mode 100755
index 000000000000..b724bbb64add
--- /dev/null
+++ b/scripting/workben/bindings/MacroEditor.xdl
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="MacroEditor" dlg:left="105" dlg:top="117" dlg:width="240" dlg:height="320" dlg:closeable="true" dlg:moveable="true" dlg:title="Python Macro Editor">
+ <dlg:bulletinboard>
+ <dlg:button dlg:id="RunButton" dlg:tab-index="0" dlg:left="57" dlg:top="300" dlg:width="40" dlg:height="14" dlg:value="Run"/>
+ <dlg:button dlg:id="SaveButton" dlg:tab-index="1" dlg:left="100" dlg:top="300" dlg:width="40" dlg:height="14" dlg:value="Save"/>
+ <dlg:button dlg:id="CloseButton" dlg:tab-index="2" dlg:left="143" dlg:top="300" dlg:width="40" dlg:height="14" dlg:value="Close" dlg:button-type="cancel"/>
+ <dlg:textfield dlg:id="EditorTextField" dlg:tab-index="3" dlg:left="6" dlg:top="6" dlg:width="228" dlg:height="288" dlg:hscroll="true" dlg:vscroll="true" dlg:multiline="true"/>
+ </dlg:bulletinboard>
+</dlg:window>
diff --git a/scripting/workben/bindings/MenuBinding.xdl b/scripting/workben/bindings/MenuBinding.xdl
new file mode 100755
index 000000000000..b4e0b0e753de
--- /dev/null
+++ b/scripting/workben/bindings/MenuBinding.xdl
@@ -0,0 +1,65 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "dialog.dtd">
+<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="MenuBindingDialog" dlg:left="64" dlg:top="89" dlg:width="179" dlg:height="236" dlg:closeable="true" dlg:moveable="true" dlg:title="Assign Script To Menu">
+ <dlg:styles>
+ <dlg:style dlg:style-id="0" dlg:font-height="7"/>
+ </dlg:styles>
+ <dlg:bulletinboard>
+ <dlg:combobox dlg:id="LocationCombo" dlg:tab-index="0" dlg:left="63" dlg:top="17" dlg:width="108" dlg:height="13" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:combobox dlg:id="LanguageCombo" dlg:tab-index="1" dlg:left="63" dlg:top="32" dlg:width="108" dlg:height="13" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireLangLocComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:checkbox dlg:id="detail" dlg:tab-index="2" dlg:left="17" dlg:top="57" dlg:width="44" dlg:height="10" dlg:value="Detailed view" dlg:checked="false">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.LangLocComboListener" script:language="StarBasic"/>
+ </dlg:checkbox>
+ <dlg:menulist dlg:id="ScriptList" dlg:tab-index="3" dlg:left="63" dlg:top="49" dlg:width="108" dlg:height="44"/>
+ <dlg:button dlg:id="Browse" dlg:tab-index="4" dlg:disabled="true" dlg:left="17" dlg:top="71" dlg:width="36" dlg:height="14" dlg:value="Browse...">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.BrowseButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:combobox dlg:id="MenuCombo" dlg:tab-index="5" dlg:left="63" dlg:top="109" dlg:width="108" dlg:height="13" dlg:spin="true">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuComboListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.fireMenuComboListernerOnRet" script:language="StarBasic"/>
+ </dlg:combobox>
+ <dlg:menulist dlg:id="SubMenuList" dlg:tab-index="6" dlg:left="63" dlg:top="125" dlg:width="108" dlg:height="44">
+ <script:event script:event-name="on-itemstatechange" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.SubMenuListListener" script:language="StarBasic"/>
+ </dlg:menulist>
+ <dlg:button dlg:id="Delete" dlg:tab-index="7" dlg:left="17" dlg:top="142" dlg:width="36" dlg:height="14" dlg:value="Delete">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuDeleteButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="NewButton" dlg:tab-index="8" dlg:left="17" dlg:top="186" dlg:width="36" dlg:height="14" dlg:value="New">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuNewButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:textfield dlg:id="MenuLabelBox" dlg:tab-index="9" dlg:left="63" dlg:top="187" dlg:width="108" dlg:height="13">
+ <script:event script:event-name="on-blur" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuLabelBoxListener" script:language="StarBasic"/>
+ <script:event script:event-name="on-keydown" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuLabelBoxListener" script:language="StarBasic"/>
+ </dlg:textfield>
+ <dlg:button dlg:id="OK" dlg:tab-index="10" dlg:left="57" dlg:top="216" dlg:width="36" dlg:height="14" dlg:value="OK">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuOKButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Cancel" dlg:tab-index="11" dlg:left="96" dlg:top="216" dlg:width="36" dlg:height="14" dlg:value="Cancel">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuCancelButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:button dlg:id="Help" dlg:tab-index="12" dlg:left="136" dlg:top="216" dlg:width="36" dlg:height="14" dlg:value="Help">
+ <script:event script:event-name="on-performaction" script:location="application" script:macro-name="ScriptBindingLibrary.ScriptBinding.MenuHelpButton" script:language="StarBasic"/>
+ </dlg:button>
+ <dlg:fixedline dlg:id="FixedLine2" dlg:tab-index="13" dlg:left="8" dlg:top="206" dlg:width="167" dlg:height="7"/>
+ <dlg:fixedline dlg:id="FixedLine3" dlg:tab-index="14" dlg:left="73" dlg:top="174" dlg:width="102" dlg:height="6"/>
+ <dlg:text dlg:id="Label2" dlg:tab-index="15" dlg:left="5" dlg:top="172" dlg:width="73" dlg:height="9" dlg:value="Assign script to new menu"/>
+ <dlg:fixedline dlg:id="FixedLine4" dlg:tab-index="16" dlg:left="75" dlg:top="99" dlg:width="100" dlg:height="6"/>
+ <dlg:text dlg:id="Label4" dlg:tab-index="17" dlg:left="5" dlg:top="97" dlg:width="75" dlg:height="8" dlg:value="Choose menu to insert after"/>
+ <dlg:text dlg:id="Label5" dlg:tab-index="18" dlg:left="12" dlg:top="111" dlg:width="40" dlg:height="11" dlg:value="Toplevel Menu"/>
+ <dlg:text dlg:id="Label6" dlg:tab-index="19" dlg:left="12" dlg:top="127" dlg:width="40" dlg:height="11" dlg:value="Sub Menu"/>
+ <dlg:fixedline dlg:id="FixedLine1" dlg:tab-index="20" dlg:left="42" dlg:top="6" dlg:width="132" dlg:height="7"/>
+ <dlg:text dlg:id="Label1" dlg:tab-index="21" dlg:left="5" dlg:top="6" dlg:width="36" dlg:height="9" dlg:value="Select script"/>
+ <dlg:text dlg:id="Label7" dlg:tab-index="22" dlg:left="12" dlg:top="17" dlg:width="28" dlg:height="7" dlg:value="Location"/>
+ <dlg:text dlg:id="Label8" dlg:tab-index="23" dlg:left="12" dlg:top="32" dlg:width="35" dlg:height="9" dlg:value="Language"/>
+ <dlg:text dlg:id="Label9" dlg:tab-index="24" dlg:left="12" dlg:top="49" dlg:width="23" dlg:height="8" dlg:value="Script"/>
+ <dlg:text dlg:style-id="0" dlg:id="AddOn" dlg:tab-index="25" dlg:disabled="true" dlg:left="17" dlg:top="156" dlg:width="38" dlg:height="11" dlg:value="[Add-on&apos;s only]"/>
+ <dlg:text dlg:id="Label10" dlg:tab-index="27" dlg:left="9" dlg:top="89" dlg:width="0" dlg:height="0" dlg:value="Label10"/>
+ <dlg:text dlg:id="fsonly" dlg:tab-index="26" dlg:disabled="true" dlg:left="13" dlg:top="86" dlg:width="45" dlg:height="8" dlg:value="[Filesystem only]"/>
+ </dlg:bulletinboard>
+</dlg:window> \ No newline at end of file
diff --git a/scripting/workben/bindings/ScriptBinding.xba b/scripting/workben/bindings/ScriptBinding.xba
new file mode 100755
index 000000000000..7f689d34f797
--- /dev/null
+++ b/scripting/workben/bindings/ScriptBinding.xba
@@ -0,0 +1,2093 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
+<script:module xmlns:script="http://openoffice.org/2000/script" script:name="ScriptBinding" script:language="StarBasic">REM ***** BASIC *****
+
+REM ----- Global Variables -----
+
+&apos;bindingDialog can refer to either KeyBinding or MenuBinding dialog
+private languages() as String
+private extensions() as Object
+private locations() as String
+private filesysScripts() as String
+private filesysCount as integer
+private bindingDialog as object
+private helpDialog as object
+&apos;Couldn&apos;t get redim to work, so scriptDisplayList is and array of arrays
+&apos;where the one and only array in scriptDisplayList is an array
+&apos;of com.sun.star.beans.PropertyValue, where Name = [logicalName][FunctionName]
+&apos;and value is ScriptStorage object
+private scriptDisplayList(0)
+private testArray() as String
+&apos;Array to store lines from the xml file
+private xmlFile() as string
+&apos;Name of the xml file [writer/calc][menubar/keybindings].xml
+private xmlFileName as string
+&apos;Number of lines in the xml file
+private numberOfLines as integer
+
+&apos;Parallel arrays to store all top-level menu names and line positions
+private menuItems() as string
+private menuItemLinePosition() as integer
+&apos;Counter for the number of top-level menus
+private menuCount as integer
+
+&apos;Parallel arrays to store all sub-menu names and line positions for a particular top-level menu
+private subMenuItems() as string
+private subMenuItemLinePosition() as integer
+&apos;Counter for the number of sub-menus
+private subMenuCount as integer
+
+&apos;Parallel arrays to store all script names and line positions
+private scriptNames() as string
+private scriptLinePosition() as integer
+&apos;Counter for the number of scripts
+private scriptCount as integer
+
+&apos;Array to store all combinations of key bindings
+private allKeyBindings() as string
+
+&apos;Array of Arrays
+&apos;KeyBindArrayOfArrays(0) contains array of &quot;SHIFT + CONTROL + F Keys&quot; data
+&apos;Similarly
+&apos;KeyBindArrayOfArrays(1) contains SHIFT + CONTROL + digits
+&apos;KeyBindArrayOfArrays(2) contains SHIFT + CONTROL + letters
+&apos;KeyBindArrayOfArrays(3) contains CONTROL + F keys
+&apos;KeyBindArrayOfArrays(4) contains CONTROL + digits
+&apos;KeyBindArrayOfArrays(5) contains CONTROL + letters
+&apos;KeyBindArrayOfArrays(6) contains SHIFT + F keys
+private KeyBindArrayOfArrays(6)
+
+&apos;Each PropertyValue represents a key, Name member contains the script (if a binding exists)
+&apos; the Value contains and integer
+&apos; 0 means no script bound
+&apos; 1 script is bound to an office function
+&apos; &gt;1 line number of entry in xmlfile array
+private keyAllocationMap(6,25) as new com.sun.star.beans.PropertyValue
+&apos;array to store key group descriptions
+private AllKeyGroupsArray(6) as String
+
+
+&apos;Array of props to store all event bindings for the Applications
+private allEventTypesApp( 14 ) as new com.sun.star.beans.PropertyValue
+&apos;Array of props to store all event bindings for the Document
+private allEventTypesDoc( 14 ) as new com.sun.star.beans.PropertyValue
+&apos;Array of props to store all event types (Name) and textual description (Value)
+private allEventTypes( 14 ) as new com.sun.star.beans.PropertyValue
+
+
+private dialogName as String
+REM ------ Storage Refresh Function ------
+
+
+sub RefreshUserScripts()
+&apos; TDB - change Menu bindings to allow user to refresh all, user, share or document script
+ RefreshAppScripts( &quot;USER&quot; )
+end sub
+
+sub RefreshAllScripts()
+ RefreshAppScripts( &quot;USER&quot; )
+ RefreshAppScripts( &quot;SHARE&quot; )
+ RefreshDocumentScripts
+end sub
+
+sub RefreshAppScripts( appName as String )
+ On Error Goto ErrorHandler
+ smgr = getProcessServiceManager()
+ context = smgr.getPropertyValue( &quot;DefaultContext&quot; )
+ scriptstoragemgr = context.getValueByName( &quot;/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager&quot; )
+
+ scriptstoragemgr.refreshScriptStorage( appName )
+
+ Exit sub
+
+ ErrorHandler:
+ reset
+ MsgBox (&quot;Error: Unable to refresh Java (scripts)&quot; + chr$(10) + chr$(10)+ &quot;Detail: &quot; &amp; error$ + chr$(10) + chr$(10)+ &quot;Action: Please restart Office&quot;,0,&quot;Error&quot; )
+
+end sub
+
+sub RefreshDocumentScripts()
+ On Error Goto ErrorHandler
+ smgr = getProcessServiceManager()
+ context = smgr.getPropertyValue( &quot;DefaultContext&quot; )
+ scriptstoragemgr = context.getValueByName( &quot;/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager&quot; )
+
+ oDocURL = ThisComponent.GetCurrentController.getModel.getURL
+
+ On Error Goto ErrorHandlerDoc
+ scriptstoragemgr.refreshScriptStorage( oDocURL )
+
+ Exit sub
+
+ ErrorHandlerDoc:
+ reset
+ &apos; Ignore document script errors as it will happen when refreshing an unsaved doc
+ Exit sub
+
+ ErrorHandler:
+ reset
+ MsgBox (&quot;Error: Unable to refresh Java (scripts)&quot; + chr$(10) + chr$(10)+ &quot;Detail: &quot; &amp; error$ + chr$(10) + chr$(10)+ &quot;Action: Please restart Office&quot;,0,&quot;Error&quot; )
+
+end sub
+
+
+REM ----- Launch Functions -----
+
+Sub createAndPopulateKeyArrays()
+ &apos;Create SHIFT + CONTROL + F keys array
+ &apos;Dim keyGroupProp as new com.sun.star.beans.PropertyValue
+
+ Dim SCFKey( 11 )
+ for FKey = 1 to 12
+ SCFKey( FKey - 1 ) = &quot;SHIFT + CONTROL + F&quot; + FKey
+ next FKey
+
+ KeyBindArrayOfArrays(0) = SCFKey()
+
+ &apos;Create SHIFT + CONTROL + digits
+ Dim SCDKey( 9 )
+ for Digit = 0 to 9
+ SCDKey( Digit ) = &quot;SHIFT + CONTROL + &quot; + Digit
+ next Digit
+ KeyBindArrayOfArrays(1) = SCDKey()
+
+ &apos;Create SHIFT + CONTROL + letters
+
+ Dim SCLKey( 25 )
+ for Alpha = 65 to 90
+ SCLKey( Alpha - 65 ) = &quot;SHIFT + CONTROL + &quot; + chr$( Alpha )
+ next Alpha
+ KeyBindArrayOfArrays(2) = SCLKey()
+
+ &apos;Create CONTROL + F keys
+ Dim CFKey( 11 )
+ for FKey = 1 to 12
+ CFKey( Fkey - 1 ) = &quot;CONTROL + F&quot; + FKey
+ next FKey
+ KeyBindArrayOfArrays(3) = CFKey()
+
+ &apos;Create CONTROL + digits
+ Dim CDKey( 9 )
+ for Digit = 0 to 9
+ CDKey( Digit ) = &quot;CONTROL + &quot; + Digit
+ next Digit
+ KeyBindArrayOfArrays(4) = CDKey()
+
+ &apos;Create CONTROL + letters
+ Dim CLKey( 25 )
+ for Alpha = 65 to 90
+ CLKey( Alpha - 65 ) = &quot;CONTROL + &quot; + chr$( Alpha )
+ next Alpha
+ KeyBindArrayOfArrays(5) = CLKey()
+
+ &apos;Create SHIFT + F Keys
+ Dim SFKey( 11 )
+ for FKey = 1 to 12
+ SFKey( Fkey - 1 ) = &quot;SHIFT + F&quot; + FKey
+ next FKey
+ KeyBindArrayOfArrays(6) = SFKey()
+
+End Sub
+
+Sub updateMapWithDisabledKeys()
+ &apos;disable CONTROL + F1 &amp;
+ keyAllocationMap( 3, 0 ).Value = 1
+ keyAllocationMap( 3, 0 ).Name = &quot;&quot;
+ &apos;disable CONTROL + F4 &amp;
+ keyAllocationMap( 3, 3 ).Value = 1
+ keyAllocationMap( 3, 3 ).Name = &quot;&quot;
+ &apos;disable CONTROL + F6
+ keyAllocationMap( 3, 5 ).Value = 1
+ keyAllocationMap( 3, 5 ).Name = &quot;&quot;
+
+
+ &apos;disable SHIFT + F1 &amp;
+ keyAllocationMap( 6, 0 ).Value = 1
+ keyAllocationMap( 6, 0 ).Name = &quot;&quot;
+ &apos;disable SHIFT + F2 &amp;
+ keyAllocationMap( 6, 1 ).Value = 1
+ keyAllocationMap( 6, 1 ).Name = &quot;&quot;
+ &apos;disable SHIFT + F6 &amp;
+ keyAllocationMap( 6, 5 ).Value = 1
+ keyAllocationMap( 6, 5 ).Name = &quot;&quot;
+
+End Sub
+
+Sub initialiseFileExtensions()
+ ReDim extensions(ubound(languages())+1) as Object
+ oConfigProvider = CreateUnoService( &quot;com.sun.star.configuration.ConfigurationProvider&quot; )
+ Dim configArgs(1) as new com.sun.star.beans.PropertyValue
+ configargs(0).Name = &quot;nodepath&quot;
+ configArgs(0).Value = &quot;org.openoffice.Office.Scripting/ScriptRuntimes&quot;
+ configargs(1).Name = &quot;lazywrite&quot;
+ configArgs(1).Value = false
+ oConfigAccess = oConfigProvider.createInstanceWithArguments(&quot;com.sun.star.configuration.ConfigurationAccess&quot;, configArgs())
+ for index = 0 to ubound(languages())
+ if(languages(index) &lt;&gt; &quot;Java&quot;) then
+ xPropSet = oConfigAccess.getByName(languages(index))
+ extns() = xPropSet.getPropertyValue(&quot;SupportedFileExtensions&quot;)
+ extensions(index) = extns()
+ endif
+ next index
+end sub
+
+Sub ExecuteEditDebug()
+
+ locations = Array ( &quot;User&quot;, &quot;Share&quot;, &quot;Document&quot;, &quot;Filesystem&quot; )
+ languages = Array ( &quot;BeanShell&quot;, &quot;JavaScript&quot; )
+ dialogName = &quot;EditDebug&quot;
+ initialiseFileExtensions()
+ bindingDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;EditDebug&quot; )
+
+ PopulateLanguageCombo()
+ PopulateLocationCombo()
+ PopulateScriptList( languages(0), locations(0) )
+
+ bindingDialog.execute()
+End Sub
+
+Sub ExecuteKeyBinding()
+ dialogName = &quot;Key&quot;
+ createAndPopulateKeyArrays()
+ updateMapWithDisabledKeys()
+ xmlFileName = GetDocumentType( &quot;Key&quot; )
+
+ if not (ReadXMLToArray( &quot;Key&quot; )) then
+ Exit Sub
+ endif
+
+ bindingDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;KeyBinding&quot; )
+ PopulateKeyBindingList(0)
+ initialiseNavigationComboArrays()
+ PopulateLanguageCombo()
+ PopulateLocationCombo()
+ PopulateScriptList( languages(0), locations(0) )
+ PopulateTopLevelKeyBindingList()
+ bindingDialog.execute()
+end Sub
+
+
+Sub initialiseNavigationComboArrays()
+ locations = Array ( &quot;User&quot;, &quot;Share&quot;, &quot;Document&quot;, &quot;Filesystem&quot; )
+ ReDim languages(0) as String
+ ReDim extensions(0) as Object
+ languages(0) = &quot;Java&quot;
+ REM extensions(0) = &quot;&quot;
+
+ &apos; Setup languages array for all supported languages
+ oServiceManager = GetProcessServiceManager()
+ svrArray = oServiceManager.getAvailableServiceNames
+
+ langCount = 1
+ for index = 0 to ubound(svrArray)
+ iPos = inStr(svrArray(index), &quot;ScriptProviderFor&quot;)
+
+ if (iPos &gt; 0) then
+ lang = Mid(svrArray(index), iPos + Len(&quot;ScriptProviderFor&quot;)
+
+ if not (lang = &quot;Java&quot;) then
+ &apos;Add to language vector
+ ReDim Preserve languages(langCount) as String
+ languages(langCount) = lang
+ langCount = langCount + 1
+ endif
+ endif
+ next index
+ initialiseFileExtensions()
+End Sub
+
+
+Sub ExecuteEventBinding
+ dialogName = &quot;Event&quot;
+ createAllEventTypes()
+ createAllEventBindings()
+
+ &apos;Populate application event bindings array (from config xml file)
+ if not (ReadXMLToArray( &quot;Event&quot; )) then
+ Exit Sub
+ endif
+ &apos;Populate document event bindings array (using Office API calls)
+ ReadEventsFromDoc()
+
+ bindingDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;EventsBinding&quot; )
+ initialiseNavigationComboArrays()
+ PopulateLanguageCombo()
+ PopulateLocationCombo()
+ PopulateScriptList( languages(0), locations(0) )
+ populateEventList( 0 )
+ EventListListener()
+ bindingDialog.execute()
+End Sub
+
+Sub ExecuteMenuBinding()
+ dialogName = &quot;Menu&quot;
+ xmlFileName = GetDocumentType( &quot;Menu&quot; )
+ if not (ReadXMLToArray( &quot;Menu&quot; )) then
+ Exit Sub
+ endif
+
+ bindingDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;MenuBinding&quot; )
+ initialiseNavigationComboArrays()
+ PopulateLanguageCombo()
+ PopulateLocationCombo()
+ PopulateScriptList( languages(0), locations(0) )
+ PopulateMenuCombo()
+ PopulateSubMenuList( 1 )
+
+ subMenuList = bindingDialog.getControl(&quot;SubMenuList&quot;)
+
+ subMenuList.selectItemPos( 0, true )
+
+ bindingDialog.execute()
+end Sub
+
+
+REM ----- Initialising functions -----
+
+
+function LoadDialog( libName as string, dialogName as string ) as object
+ dim library as object
+ dim libDialog as object
+ dim runtimeDialog as object
+ libContainer = DialogLibraries
+ libContainer.LoadLibrary( libName )
+ library = libContainer.getByName( libname )
+ libDialog = library.getByName( dialogName )
+ runtimeDialog = CreateUnoDialog( libDialog )
+ LoadDialog() = runtimeDialog
+
+end function
+
+
+function GetDocumentType( bindingType as string ) as string
+ document = StarDesktop.ActiveFrame.Controller.Model
+ Dim errornumber As Integer
+ errornumber = 111
+ Error errornumber
+ if document.SupportsService(&quot;com.sun.star.sheet.SpreadsheetDocument&quot;) then
+ if bindingType = &quot;Key&quot; then
+ GetDocumentType() = &quot;calckeybinding.xml&quot;
+ else
+ if bindingType = &quot;Menu&quot; then
+ GetDocumentType() = &quot;calcmenubar.xml&quot;
+ end if
+ end if
+ elseif document.SupportsService(&quot;com.sun.star.text.TextDocument&quot;) then
+ if bindingType = &quot;Key&quot; then
+ GetDocumentType() = &quot;writerkeybinding.xml&quot;
+ else
+ if bindingType = &quot;Menu&quot; then
+ GetDocumentType() = &quot;writermenubar.xml&quot;
+ end if
+ end if
+ elseif document.SupportsService(&quot;com.sun.star.presentation.PresentationDocument&quot;) then
+ if bindingType = &quot;Key&quot; then
+ GetDocumentType() = &quot;impresskeybinding.xml&quot;
+ else
+ if bindingType = &quot;Menu&quot; then
+ GetDocumentType() = &quot;impressmenubar.xml&quot;
+ end if
+ end if
+ elseif document.SupportsService(&quot;com.sun.star.presentation.PresentationDocument&quot;) then
+ if bindingType = &quot;Key&quot; then
+ GetDocumentType() = &quot;impresskeybinding.xml&quot;
+ else
+ if bindingType = &quot;Menu&quot; then
+ GetDocumentType() = &quot;impressmenubar.xml&quot;
+ end if
+ end if
+ elseif document.SupportsService(&quot;com.sun.star.drawing.DrawingDocument&quot;) then
+ if bindingType = &quot;Key&quot; then
+ GetDocumentType() = &quot;drawkeybinding.xml&quot;
+ else
+ if bindingType = &quot;Menu&quot; then
+ GetDocumentType() = &quot;drawmenubar.xml&quot;
+ end if
+ end if
+ else
+ MsgBox (&quot;Error: Couldn&apos;t determine configuration file type&quot; + chr$(10) + chr$(10) + &quot;Action: Please reinstall Scripting Framework&quot;,0,&quot;Error&quot; )
+ end if
+end function
+
+function lastIndexOf( targetStr as String, substr as String ) as Integer
+ copyStr = targetStr
+ while instr(copyStr, substr) &gt; 0
+ pos = instr(copyStr, substr)
+ tpos = tpos + pos
+ copyStr = mid(copyStr, pos+1, len(copyStr)-pos )
+ wend
+ lastIndexOf() = tpos
+end function
+
+function getScriptURI( selectedScript as String ) as String
+ combo = bindingDialog.getControl( &quot;LocationCombo&quot; )
+ location = combo.text
+ if ( location = &quot;User&quot; ) then
+ location = &quot;user&quot;
+ elseif ( location = &quot;Share&quot; ) then
+ location = &quot;share&quot;
+ elseif ( location = &quot;Filesystem&quot; ) then
+ location = &quot;filesystem&quot;
+ else
+ location = &quot;document&quot;
+ end if
+
+
+
+ if ( location = &quot;filesystem&quot; ) then
+ REM need to build URI here - dcf
+ combo = bindingDialog.getControl( &quot;LanguageCombo&quot; )
+ language = combo.text
+ url = selectedscript
+ pos = lastIndexOf( url, &quot;/&quot; )
+ locationPath = mid( url, 1, pos)
+ url = mid( url, pos+1, len( url ) - pos )
+ functionName = url
+ pos = lastIndexOf( url, &quot;.&quot; )
+ logicalName = mid( url, 1, pos - 1 )
+ getScriptURI() = &quot;script://&quot; + logicalName + &quot;?language=&quot; _
+ + language + &quot;&amp;amp;function=&quot; + functionName _
+ + &quot;&amp;amp;location=filesystem:&quot; + locationPath
+ else
+ Dim scriptInfo as Object
+ scripts() = scriptDisplayList(0)
+ for n = LBOUND( scripts() ) to UBOUND( scripts() )
+
+ if ( scripts( n ).Name = selectedScript ) then
+ scriptInfo = scripts( n ).Value
+ exit for
+ end if
+ next n
+ getScriptURI() = &quot;script://&quot; + scriptInfo.getLogicalName + &quot;?language=&quot; _
+ + scriptInfo.getLanguage() + &quot;&amp;amp;function=&quot; + _
+ scriptInfo.getFunctionName() + &quot;&amp;amp;location=&quot; + location
+ end if
+
+end function
+
+function GetOfficePath() as string
+ REM Error check and prompt user to manually input Office Path
+ settings = CreateUnoService( &quot;com.sun.star.frame.Settings&quot; )
+ path = settings.getByName( &quot;PathSettings&quot; )
+ unformattedOfficePath = path.getPropertyValue( &quot;UserPath&quot; )
+
+ dim officePath as string
+ const removeFromEnd = &quot;/user&quot;
+ const removeFromEndWindows = &quot;\user&quot;
+
+ REM If Solaris or Linux
+ if not ( instr( unformattedOfficePath, removeFromEnd ) = 0 ) then
+ endPosition = instr( unformattedOfficePath, removeFromEnd )
+ officePath = mid( unformattedOfficePath, 1, endPosition )
+ REM If Windows
+ else if not ( instr( unformattedOfficePath, removeFromEndWindows ) = 0 ) then
+ endPosition = instr( unformattedOfficePath, removeFromEndWindows )
+ officePath = mid( unformattedOfficePath, 1, endPosition )
+ while instr( officePath, &quot;\&quot; ) &gt; 0
+ backSlash = instr( officePath, &quot;\&quot; )
+ startPath = mid( officePath, 1, backSlash - 1 )
+ endPath = mid( officePath, backslash + 1, len( officePath ) - backSlash )
+ officePath = startPath + &quot;/&quot; + endPath
+ wend
+ else
+ MsgBox (&quot;Error: Office path not found&quot; + chr$(10) + chr$(10) + &quot;Action: Please reinstall Scripting Framework&quot;,0,&quot;Error&quot; )
+ REM Prompt user
+ end if
+ end if
+
+ GetOfficePath() = officePath
+end function
+
+
+
+REM ----- File I/O functions -----
+
+
+function ReadXMLToArray( bindingType as string ) as boolean
+ On Error Goto ErrorHandler
+ if ( bindingType = &quot;Event&quot; ) then
+ xmlfilename = &quot;eventbindings.xml&quot;
+ endif
+
+ simplefileaccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; )
+ filestream = simplefileaccess.openFileRead( &quot;file://&quot; + GetOfficePath() + &quot;user/config/soffice.cfg/&quot; + xmlFileName )
+
+ textin = CreateUnoService( &quot;com.sun.star.io.TextInputStream&quot; )
+ textin.setInputStream( filestream )
+
+ redim xmlFile( 400 ) as String
+ redim menuItems( 30 ) as String
+ redim menuItemLinePosition( 30 ) as Integer
+ redim scriptNames( 120 ) as string
+ redim scriptLinePosition( 120) as integer
+
+ lineCount = 1
+ menuCount = 1
+ scriptCount = 1
+
+ do while not textin.isEOF()
+ xmlline = textin.readLine()
+ xmlFile( lineCount ) = xmlline
+
+ const menuItemWhiteSpace = 2
+ const menuXMLTag = &quot;&lt;menu:menu&quot;
+
+ if bindingType = &quot;Menu&quot; then
+ evaluateForMenu( xmlline, lineCount )
+ elseif bindingType = &quot;Key&quot; then
+ processKeyXMLLine( lineCount, xmlline )
+ elseif bindingType = &quot;Event&quot; then
+ evaluateForEvent( xmlline, lineCount )
+ else
+ MsgBox (&quot;Error: Couldn&apos;t determine file type&quot; + chr$(10) + chr$(10) + &quot;Action: Please reinstall Scripting Framework&quot;,0,&quot;Error&quot; )
+ end if
+ lineCount = lineCount + 1
+ loop
+
+ &apos;Set global variable numberOfLines (lineCount is one too many at end of the loop)
+ numberOfLines = lineCount - 1
+ &apos;Set global variable menuCount (it is one too many at end of the loop)
+ menuCount = menuCount - 1
+
+ filestream.closeInput()
+ ReadXMLToArray( ) = true
+ Exit function
+
+ ErrorHandler:
+ reset
+ MsgBox (&quot;Error: Unable to read Star Office configuration file - &quot; + xmlFileName + chr$(10) + chr$(10) + &quot;Action: Please reinstall Scripting Framework&quot;,0,&quot;Error&quot; )
+ ReadXMLToArray( ) = false
+end function
+
+
+
+sub evaluateForMenu( xmlline as string, lineCount as integer )
+ const menuItemWhiteSpace = 2
+ const menuXMLTag = &quot;&lt;menu:menu&quot;
+ &apos;If the xml line is a top-level menu
+ if instr( xmlline, menuXMLTag ) = menuItemWhiteSpace then
+ menuLabel = ExtractLabelFromXMLLine( xmlline )
+ menuItems( menuCount ) = menuLabel
+ menuItemLinePosition( menuCount ) = lineCount
+ menuCount = menuCount + 1
+ end if
+end sub
+
+sub evaluateForEvent( xmlline as string, lineCount as integer )
+ dim eventName as String
+ &apos;if the xml line identifies a script or SB macro
+ dim scriptName as string
+ dim lineNumber as integer
+ if instr( xmlline, &quot;event:language=&quot; + chr$(34) + &quot;Script&quot; ) &gt; 0 then
+ eventName = ExtractEventNameFromXMLLine( xmlline )
+ scriptName = ExtractEventScriptFromXMLLine( xmlline )
+ lineNumber = lineCount
+ elseif instr( xmlline, &quot;event:language=&quot; + chr$(34) + &quot;StarBasic&quot; ) &gt; 0 then
+ eventName = ExtractEventNameFromXMLLine( xmlline )
+ scriptName = &quot;Allocated to Office function&quot;
+ lineNumber = 1
+ end if
+
+ &apos;Need to sequence to find the corresponding index for the event type
+ for n = 0 to ubound( allEventTypesApp() )
+ if ( eventName = allEventTypes( n ).Name ) then
+ allEventTypesApp( n ).Name = scriptName
+ allEventTypesApp( n ).Value = lineNumber
+ end if
+ next n
+end sub
+
+
+function isOKscriptProps( props() as Object, eventName as string ) as Boolean
+ On Error Goto ErrorHandler
+ props = ThisComponent.getEvents().getByName( eventName )
+ test = ubound( props() )
+ isOKscriptProps() = true
+ exit function
+
+ ErrorHandler:
+ isOKscriptProps() = false
+end function
+
+sub ReadEventsFromDoc()
+ On Error Goto ErrorHandler
+
+ eventSupplier = ThisComponent
+ for n = 0 to ubound( allEventTypes() )
+ Dim scriptProps() as Object
+ if (isOKscriptProps( scriptProps(), allEventTypes( n ).Name) ) then
+ if ( ubound( scriptProps ) &gt; 0 ) then
+ if ( scriptProps(0).Value = &quot;Script&quot; ) then
+ &apos;Script binding
+ allEventTypesDoc(n).Name = scriptProps(1).Value
+ allEventTypesDoc(n).value = 2
+ elseif( scriptProps(0).Value = &quot;StarBasic&quot; ) then
+ &apos;StarBasic macro
+ allEventTypesDoc(n).Name = &quot;Allocated to Office function&quot;
+ allEventTypesDoc(n).value = 1
+ end if
+ end if
+ end if
+ next n
+
+ exit sub
+
+ &apos; eventProps is undefined if there are no event bindings in the doc
+ ErrorHandler:
+ reset
+end sub
+
+
+sub WriteEventsToDoc()
+ On Error Goto ErrorHandler
+
+ eventSupplier = ThisComponent
+ for n = 0 to ubound( allEventTypes() )
+ scriptName = allEventTypesDoc( n ).Name
+ eventName = allEventTypes( n ).Name
+ if( allEventTypesDoc( n ).Value &gt; 1 ) then &apos;script
+ &apos;add to doc
+ AddEventToDocViaAPI( scriptName, eventName )
+ elseif( allEventTypesDoc( n ).Value = 0 ) then &apos;blank (this will &quot;remove&quot; already blank entries)
+ &apos;remove from doc
+ RemoveEventFromDocViaAPI( eventName )
+ endif
+ &apos;Otherwise it is a StarBasic binding - leave alone
+ next n
+ &apos;Mark document as modified ( should happen automatically as a result of calling the API )
+ ThisComponent.CurrentController.getModel().setModified( True )
+ exit sub
+
+ ErrorHandler:
+ reset
+ msgbox( &quot;Error calling UNO API for writing event bindings to the document&quot; )
+end sub
+
+
+sub RemoveEventFromDocViaAPI( event as string )
+ dim document as object
+ dim dispatcher as object
+ dim parser as object
+ dim url as new com.sun.star.util.URL
+
+ document = ThisComponent.CurrentController.Frame
+ parser = createUnoService(&quot;com.sun.star.util.URLTransformer&quot;)
+ dim args(0) as new com.sun.star.beans.PropertyValue
+ args(0).Name = &quot;&quot;
+ args(0).Value = event
+
+ url.Complete = &quot;script://_$ScriptFrmwrkHelper.removeEvent?&quot; _
+ + &quot;language=Java&amp;function=ScriptFrmwrkHelper.removeEvent&quot; _
+ + &quot;&amp;location=share&quot;
+
+ parser.parseStrict(url)
+ disp = document.queryDispatch(url,&quot;&quot;,0)
+ disp.dispatch(url,args())
+end sub
+
+
+sub AddEventToDocViaAPI( scriptName as string, eventName as string )
+ dim properties( 1 ) as new com.sun.star.beans.PropertyValue
+ properties( 0 ).Name = &quot;EventType&quot;
+ properties( 0 ).Value = &quot;Script&quot;
+ properties( 1 ).Name = &quot;Script&quot;
+ properties( 1 ).Value = scriptName
+
+ eventSupplier = ThisComponent
+ nameReplace = eventSupplier.getEvents()
+ nameReplace.replaceByName( eventName, properties() )
+end sub
+
+
+&apos; returns 0 for Fkey
+&apos; 1 for digit
+&apos; 2 for letter
+
+function getKeyTypeOffset( key as String ) as integer
+ length = Len( key )
+ if ( length &gt; 1 ) then
+ getKeyTypeOffset() = 0
+
+ elseif ( key &gt;= &quot;0&quot; AND key &lt;= &quot;9&quot; ) then
+ getKeyTypeOffset() = 1
+ else
+ getKeyTypeOffset() = 2
+ end if
+end function
+
+function getKeyGroupIndex( key as String, offset as Integer ) as Integer
+ &apos; Keys we are interested in are A - Z, F2 - F12, 0 - 9 anything else should
+ &apos; ensure -1 is returned
+ cutKey = mid( key,2 )
+
+ if ( cutKey &lt;&gt; &quot;&quot; ) then
+ acode = asc ( mid( cutKey,1,1) )
+ if ( acode &gt; 57 ) then
+ getKeyGroupIndex() = -1
+ exit function
+ end if
+ end if
+
+ select case offset
+ case 0:
+ num = cint( cutKey )
+ getKeyGroupIndex() = num - 1
+ exit function
+ case 1:
+ num = asc( key ) - 48
+ getKeyGroupIndex() = num
+ exit function
+ case 2:
+ num = asc( key ) - 65
+ getKeyGroupIndex() = num
+ exit function
+ end select
+ getKeyGroupIndex() = -1
+end function
+
+Sub processKeyXMLLine( lineCount as Integer, xmlline as String )
+
+ if instr( xmlline, &quot;&lt;accel:item&quot; ) &gt; 0 then
+ shift = false
+ control = false
+ if instr( xmlline, &quot;accel:shift=&quot;+chr$(34)+&quot;true&quot;+chr$(34) ) &gt; 0 then
+ shift = true
+ end if
+ if instr( xmlFile( lineCount ), &quot;accel:mod1=&quot;+chr$(34)+&quot;true&quot;+chr$(34) ) &gt; 0 then
+ control = true
+ end if
+ offsetIntoArrayOfArrays = -1 &apos;default unknown
+ if ( control AND shift ) then
+ offsetIntoArrayOfArrays = 0
+ elseif ( control ) then
+ offsetIntoArrayOfArrays = 3
+ elseif ( shift ) then
+ offsetIntoArrayOfArrays = 6
+ endif
+ &apos; Calculate which of the 7 key group arrays we need to point to
+ key = ExtractKeyCodeFromXMLLine( xmlline )
+ keyTypeOffset = getKeyTypeOffset( key )
+ offsetIntoArrayOfArrays = offsetIntoArrayOfArrays + keyTypeOffset
+
+ &apos; Calculate from the key the offset into key group array we need to point to
+ KeyGroupIndex = getKeyGroupIndex( key, keyTypeOffset )
+ if ( offsetIntoArrayOfArrays = -1 ) then
+ &apos;Unknown key group, no processing necessary
+ Exit Sub
+ end if
+ if ( KeyGroupIndex &gt; -1 ) then
+
+ &apos; Determine if a script framework binding is present or not
+ if instr( xmlline, &quot;script://&quot; ) &gt; 0 then
+ &apos; its one of ours so update its details
+ scriptName = ExtractScriptIdFromXMLLine( xmlline )
+
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = lineCount
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
+ else
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = 1
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = &quot;&quot;
+
+ end if
+ end if
+ end if
+End Sub
+
+Sub WriteXMLFromArray()
+ On Error Goto ErrorHandler
+ cfgFile = GetOfficePath() + &quot;user/config/soffice.cfg/&quot; + xmlFileName
+ updateCfgFile( cfgFile )
+ &apos;if ( false ) then&apos; config stuff not in build yet
+ if ( true ) then
+ updateConfig( xmlFileName )
+ else
+ msgbox (&quot;Office must be restarted before your changes will take effect.&quot;+ chr$(10)+&quot;Also close the Office QuickStarter (Windows and Linux)&quot;, 48, &quot;Assign Script (Java) To Menu&quot; )
+ endif
+ Exit Sub
+
+ ErrorHandler:
+ reset
+ MsgBox (&quot;Error: Unable to write to Star Office configuration file&quot; + chr$(10) + &quot;/&quot; + GetOfficePath() + &quot;user/config/soffice.cfg/&quot; +xmlFileName + chr$(10) + chr$(10) + &quot;Action: Please make sure you have write access to this file&quot;,0,&quot;Error&quot; )
+end Sub
+
+
+Sub UpdateCfgFile ( fileName as String )
+ dim ScriptProvider as Object
+ dim Script as Object
+ dim args(1)
+ dim displayDialogFlag as boolean
+ displayDialogFlag = false
+ args(0) = ThisComponent
+ args(1) = displayDialogFlag
+
+ ScriptProvider = createUnoService(&quot;drafts.com.sun.star.script.framework.provider.MasterScriptProvider&quot;)
+ ScriptProvider.initialize( args() )
+ Script = ScriptProvider.getScript(&quot;script://_$ScriptFrmwrkHelper.updateCfgFile?&quot; _
+ + &quot;language=Java&amp;function=ScriptFrmwrkHelper.updateCfgFile&amp;location=share&quot;)
+ Dim inArgs(2)
+ Dim outArgs()
+ Dim outIndex()
+ dim localNumLines as integer
+
+ inArgs(0) = xmlFile()
+ inArgs(1) = fileName
+ inArgs(2) = numberOfLines
+ Script.invoke( inArgs(), outIndex(), outArgs() )
+End Sub
+
+sub UpdateConfig( a$ )
+ dim document as object
+ dim dispatcher as object
+ dim parser as object
+ dim disp as object
+ dim url as new com.sun.star.util.URL
+ document = ThisComponent.CurrentController.Frame
+ parser = createUnoService(&quot;com.sun.star.util.URLTransformer&quot;)
+ dim args1(0) as new com.sun.star.beans.PropertyValue
+ args1(0).Name = &quot;StreamName&quot;
+ args1(0).Value = a$
+ url.Complete = &quot;.uno:UpdateConfiguration&quot;
+ parser.parseStrict(url)
+ disp = document.queryDispatch(url,&quot;&quot;,0)
+ disp.dispatch(url,args1())
+
+End Sub
+
+
+sub AddNewEventBinding( scriptName as string, eventPosition as integer, isApp as boolean )
+ event = allEventTypes( eventPosition ).Name
+ &apos;dim scriptProp as new com.sun.star.beans.PropertyValue
+ if isApp then
+ &apos;scriptProp.Name = scriptName
+ &apos;scriptProp.Value = numberOfLines
+ allEventTypesApp( eventPosition ).Name = scriptName
+ allEventTypesApp( eventPosition ).Value = numberOfLines
+
+ newline = &quot; &lt;event:event event:name=&quot; + chr$(34) + event + chr$(34)
+ newline = newline + &quot; event:language=&quot; + chr$(34) + &quot;Script&quot; + chr$(34) + &quot; xlink:href=&quot; + chr$(34)
+ newline = newline + scriptName + chr$(34) + &quot; xlink:type=&quot; + chr$(34) + &quot;simple&quot; + chr$(34) + &quot;/&gt;&quot;
+ xmlFile( numberOfLines ) = newline
+ xmlFile( numberOfLines + 1 ) = &quot;&lt;/event:events&gt;&quot;
+ numberOfLines = numberOfLines + 1
+ else
+ &apos;scriptProp.Name = scriptName
+ &apos;scriptProp.Value = 2
+ allEventTypesDoc( eventPosition ).Name = scriptName
+ allEventTypesDoc( eventPosition ).Value = 2
+ end if
+end sub
+
+REM ----- Array update functions -----
+
+
+sub AddNewMenuBinding( newScript as string, newMenuLabel as string, newLinePosition as integer )
+ dim newXmlFile( 400 ) as string
+ dim newLineInserted as boolean
+ dim lineCounter as integer
+ lineCounter = 1
+
+ do while lineCounter &lt;= numberOfLines
+ if not newLineInserted then
+ REM If the line number is the position at which to insert the new line
+ if lineCounter = newLinePosition then
+ if( instr( xmlFile( lineCounter ), &quot;&lt;menu:menupopup&gt;&quot; ) &gt; 0 ) then
+ indent = GetMenuWhiteSpace( xmlFile( newLinePosition + 1 ) )
+ newXmlFile( lineCounter ) = xmlFile( lineCounter )
+ newXmlFile( lineCounter + 1 ) = ( indent + &quot;&lt;menu:menuitem menu:id=&quot;+chr$(34) + newScript + chr$(34)+&quot; menu:helpid=&quot;+chr$(34)+&quot;1929&quot;+chr$(34)+&quot; menu:label=&quot;+chr$(34)+ newMenuLabel + chr$(34)+&quot;/&gt;&quot; )
+ else
+ indent = GetMenuWhiteSpace( xmlFile( newLinePosition - 1 ) )
+ newXmlFile( lineCounter ) = ( indent + &quot;&lt;menu:menuitem menu:id=&quot;+chr$(34) + newScript + chr$(34)+&quot; menu:helpid=&quot;+chr$(34)+&quot;1929&quot;+chr$(34)+&quot; menu:label=&quot;+chr$(34)+ newMenuLabel + chr$(34)+&quot;/&gt;&quot; )
+ newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
+ end if
+ REM added -1 for debug --&gt;
+ &apos; indent = GetMenuWhiteSpace( xmlFile( newLinePosition ) )
+ &apos; newXmlFile( lineCounter ) = ( indent + &quot;&lt;menu:menuitem menu:id=&quot;+chr$(34)+&quot;script://&quot; + newScript + chr$(34)+&quot; menu:helpid=&quot;+chr$(34)+&quot;1929&quot;+chr$(34)+&quot; menu:label=&quot;+chr$(34)+ newMenuLabel + chr$(34)+&quot;/&gt;&quot; )
+ &apos; newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
+ newLineInserted = true
+ else
+ newXmlFile( lineCounter ) = xmlFile( lineCounter )
+ end if
+ else
+ REM if the new line has been inserted the read from one position behind
+ newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
+ end if
+ lineCounter = lineCounter + 1
+ loop
+
+ numberOfLines = numberOfLines + 1
+
+ REM read the new file into the global array
+ for n = 1 to numberOfLines
+ xmlFile( n ) = newXmlFile( n )
+ next n
+
+end sub
+
+
+sub AddNewKeyBinding( scriptName as string, shift as boolean, control as boolean, key as string )
+
+ dim keyCombo as string
+ newLine = &quot; &lt;accel:item accel:code=&quot;+chr$(34)+&quot;KEY_&quot; + key +chr$(34)
+ if shift then
+ keyCombo = &quot;SHIFT + &quot;
+ newLine = newLine + &quot; accel:shift=&quot;+chr$(34)+&quot;true&quot;+chr$(34)
+ end if
+ if control then
+ keyCombo = keyCombo + &quot;CONTROL + &quot;
+ newLine = newLine + &quot; accel:mod1=&quot;+chr$(34)+&quot;true&quot;+chr$(34)
+ end if
+ keyCombo = keyCombo + key
+ newLine = newLine + &quot; xlink:href=&quot;+chr$(34)+ scriptName +chr$(34) +&quot;/&gt;&quot;
+
+ if ( control AND shift ) then
+ offsetIntoArrayOfArrays = 0
+ elseif ( control ) then
+ offsetIntoArrayOfArrays = 3
+ elseif ( shift ) then
+ offsetIntoArrayOfArrays = 6
+ endif
+
+ keyTypeOffset = getKeyTypeOffset( key )
+ offsetIntoArrayOfArrays = offsetIntoArrayOfArrays + keyTypeOffset
+ &apos; Calculate from the key the offset into key group array we need to point to
+ KeyGroupIndex = getKeyGroupIndex( key, keyTypeOffset )
+
+ &apos; if key is allready allocated to a script then just reallocate
+ if ( keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value &gt; 1 ) then
+
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
+ &apos;replace line in xml file
+ xmlFile( keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value ) = newLine
+ else
+ &apos; this is a new binding, create a new line in xml file
+ for n = 1 to numberOfLines
+ if n = numberOfLines then
+ xmlFile( n ) = newLine
+ xmlFile( n + 1 ) = &quot;&lt;/accel:acceleratorlist&gt;&quot;
+ exit for
+ else
+ xmlFile( n ) = xmlFile( n )
+ end if
+ next n
+
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = n
+ keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
+ numberOfLines = numberOfLines + 1
+ endif
+
+end sub
+
+
+Sub RemoveBinding( lineToRemove as Integer )
+ xmlFile( lineToRemove ) = &quot;&quot;
+end Sub
+
+REM Adds or removes the starting xml line positions for each top-level menu after the menu with the added script
+sub UpdateTopLevelMenus( topLevelMenuPosition as integer, addLine as boolean )
+ for n = topLevelMenuPosition to 8
+ if addLine then
+ menuItemLinePosition( n ) = menuItemLinePosition( n ) + 1
+
+ end if
+ next n
+end sub
+
+
+REM Remove scriptNames and scriptLinePosition entries
+sub RemoveScriptNameAndPosition( keyComboPosition )
+ dim updatedScriptNames( 120 ) as string
+ dim updatedScriptLinePosition( 120 ) as integer
+ dim removedScript as boolean
+ removedScript = false
+
+ for n = 1 to scriptCount
+ if not removedScript then
+ if not( n = keyComboPosition ) then
+ updatedScriptNames( n ) = scriptNames( n )
+ else
+ removedScript = true
+ end if
+ else
+ updatedScriptNames( n - 1 ) = scriptNames( n )
+ end if
+ next n
+ scriptCount = scriptCount - 1
+
+ for n = 1 to scriptCount
+ scriptNames( n ) = updatedScriptNames( n )
+ next n
+end sub
+
+
+
+REM ----- Populating Dialog Controls -----
+
+Sub PopulateLanguageCombo()
+ langCombo = bindingDialog.getControl( &quot;LanguageCombo&quot; )
+ langCombo.removeItems( 0, langCombo.getItemCount() )
+ for n = LBOUND( languages() ) to UBOUND ( languages() )
+ langCombo.addItem( languages( n ), n )
+ next n
+ langCombo.setDropDownLineCount( n )
+ langCombo.text = langCombo.getItem( 0 )
+End Sub
+
+Sub PopulateLocationCombo()
+ dim ScriptProvider as Object
+ dim args(1)
+ dim displayDialogFlag as boolean
+ displayDialogFlag = false
+ args(0) = ThisComponent
+ args(1) = displayDialogFlag
+
+ ScriptProvider = createUnoService(&quot;drafts.com.sun.star.script.framework.provider.MasterScriptProvider&quot;)
+ ScriptProvider.initialize( args() )
+
+ locCombo = bindingDialog.getControl( &quot;LocationCombo&quot; )
+ locCombo.removeItems( 0, locCombo.getItemCount() )
+ for n = LBOUND( locations() ) to UBOUND ( locations() )
+ locCombo.addItem( locations( n ), n )
+ next n
+ locCombo.setDropDownLineCount( n )
+ locCombo.text = locCombo.getItem( 0 )
+End Sub
+
+sub PopulateScriptList( lang as String, loc as String )
+ Dim detailedView as boolean
+ detailedView = bindingDialog.Model.detail.state
+ scriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ scriptList.removeItems( 0, scriptList.getItemCount() )
+
+ smgr = getProcessServiceManager()
+ context = smgr.getPropertyValue( &quot;DefaultContext&quot; )
+ scriptstoragemgr = context.getValueByName( &quot;/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager&quot; )
+ scriptLocationURI = &quot;USER&quot;
+ if ( loc = &quot;Share&quot; ) then
+ scriptLocationURI = &quot;SHARE&quot;
+ elseif ( loc = &quot;Document&quot; )then
+ document = StarDesktop.ActiveFrame.Controller.Model
+ scriptLocationURI = document.getURL()
+ elseif ( loc = &quot;Filesystem&quot; ) then
+ REM populate the list from the filesysScripts list
+ if(lang = &quot;Java&quot; ) then
+ exit sub
+ endif
+ length = UBOUND( filesysScripts() )
+ if(length = -1) then
+ exit sub
+ endif
+ for langIndex = lbound(languages()) to ubound(languages())
+ if ( lang = languages(langIndex)) then
+ extns = extensions(langIndex)
+ exit for
+ endif
+ next langIndex
+ dim locnDisplayList( length ) as new com.sun.star.beans.PropertyValue
+ for index = lbound(filesysScripts()) to ubound(filesysScripts())
+ scriptextn = filesysScripts( index )
+ pos = lastIndexOf( scriptextn, &quot;.&quot; )
+ scriptextn = mid( scriptextn, pos + 1, len( scriptextn ) - pos )
+
+ for extnsIndex = lbound(extns()) to ubound(extns())
+ extn = extns(extnsIndex)
+ if ( scriptextn = extn ) then
+ if ( detailedView ) then
+ locnDisplayList( index ).Name = filesysScripts( index )
+ locnDisplayList( index ).Value = filesysScripts( index )
+ else
+ REM replace name with simplified view
+ locnDisplayList( index ).Name = filesysScripts( index )
+ locnDisplayList( index ).Value = filesysScripts( index )
+ end if
+ scriptList.addItem( locnDisplayList( index ).Name, index )
+ exit for
+ end if
+ next extnsIndex
+ next index
+ ScriptDisplayList(0) = locnDisplayList()
+ scriptList.selectItemPos( 0, true )
+
+ REM !!!!At this point we exit the sub!!!!
+ exit sub
+
+ endif
+
+ scriptStorageID = scriptstoragemgr.getScriptStorageID( scriptLocationURI )
+ dim resultList() as Object
+ if ( scriptStorageID &gt; -1 ) then
+ storage = scriptstoragemgr.getScriptStorage( scriptStorageID )
+ implementations() = storage.getAllImplementations()
+ length = UBOUND( implementations() )
+ reservedScriptTag = &quot;_$&quot;
+ if ( length &gt; -1 ) then
+ dim tempDisplayList( length ) as new com.sun.star.beans.PropertyValue
+ for n = LBOUND( implementations() ) to UBOUND( implementations() )
+ logicalName = implementations( n ).getLogicalName()
+ firstTwoChars = LEFT( logicalName, 2 )
+ &apos;Only display scripts whose logicalnames don&apos;t begin with &quot;_$&quot;
+ if ( firstTwoChars &lt;&gt; reservedScriptTag ) then
+ if ( lang = implementations( n ).getLanguage() ) then
+ if ( detailedView ) then
+ tempDisplayList( n ).Name = logicalName _
+ + &quot; [&quot; + implementations( n ).getFunctionName() + &quot;]&quot;
+ tempDisplayList( n ).Value = implementations( n )
+ else
+ tempDisplayList( n ).Name = logicalName
+ tempDisplayList( n ).Value = implementations( n )
+ endif
+ scriptList.addItem( tempDisplayList( n ).Name, n )
+ endif
+ endif
+ next n
+ resultList = tempDisplayList()
+ endif
+ ScriptDisplayList(0) = resultList()
+ endif
+ scriptList.selectItemPos( 0, true )
+
+end sub
+
+sub PopulateMenuCombo()
+ menuComboBox = bindingDialog.getControl( &quot;MenuCombo&quot; )
+ menuComboBox.removeItems( 0, menuComboBox.getItemCount() )
+ for n = 1 to menuCount
+ menuComboBox.addItem( menuItems( n ), n - 1 )
+ next n
+ menuComboBox.setDropDownLineCount( 8 )
+ menuComboBox.text = menuComboBox.getItem( 0 )
+end sub
+
+
+sub PopulateSubMenuList( menuItemPosition as integer )
+ redim subMenuItems( 100 ) as string
+ redim subMenuItemLinePosition( 100 ) as integer
+ dim lineNumber as integer
+ const menuItemWhiteSpace = 4
+ const menuXMLTag = &quot;&lt;menu:menu&quot;
+ subMenuCount = 1
+
+ REM xmlStartLine and xmlEndLine refer to the first and last lines
+ &apos; menuItemPosition of a top-level menu ( 1=File to 8=Help ) add one line
+ xmlStartLine = menuItemLinePosition( menuItemPosition ) + 1
+
+ REM If last menu item is chosen
+ if menuItemPosition = menuCount then
+ xmlEndLine = numberOfLines
+ else
+ REM Other wise get the line before the next top-level menu begins
+ xmlEndLine = menuItemLinePosition( menuItemPosition + 1 ) - 1
+ end if
+
+ for lineNumber = xmlStartLine to xmlEndLine
+ REM Insert all sub-menus and sub-popupmenus
+ if not( instr( xmlFile( lineNumber ), menuXMLTag ) = 0 ) and instr( xmlFile( lineNumber ), &quot;menupopup&quot;) = 0 then
+ subMenuIndent = GetMenuWhiteSpace( xmlFile( lineNumber ) )
+ if subMenuIndent = &quot; &quot; then
+ subMenuIndent = &quot;&quot;
+ else
+ subMenuIndent = subMenuIndent + subMenuIndent
+ end if
+ if not( instr( xmlFile( lineNumber ), &quot;menuseparator&quot; ) = 0 ) then
+ subMenuItems( subMenuCount ) = subMenuIndent + &quot;----------------&quot;
+ else
+ subMenuName = ExtractLabelFromXMLLine( xmlFile( lineNumber ) )
+ REM Add script Name if there is one bound to menu item
+ if instr( xmlFile( lineNumber ), &quot;script://&quot; ) &gt; 0 then
+ script = ExtractScriptIdFromXMLLine( xmlFile( lineNumber ) )
+ subMenuItems( subMenuCount ) = ( subMenuIndent + subMenuName + &quot; [&quot; + script + &quot;]&quot; )
+ else
+ subMenuItems( subMenuCount ) = subMenuIndent + subMenuName
+ end if
+ end if
+ subMenuItemLinePosition( subMenuCount ) = lineNumber
+ subMenuCount = subMenuCount + 1
+ end if
+ next lineNumber
+
+ subMenuList = bindingDialog.getControl( &quot;SubMenuList&quot; )
+
+ currentPosition = subMenuList.getSelectedItemPos()
+
+ subMenuList.removeItems( 0, subMenuList.getItemCount() )
+ &apos;If there are no sub-menus i.e. a dynamically generated menu like Format
+ &apos;if subMenuCount = 1 then
+ if menuItems( menuItemPosition ) = &quot;Format&quot; then
+ subMenuList.addItem( &quot;Unable to Assign Scripts to this menu&quot;, 0 )
+ else
+ for n = 1 to subMenuCount - 1
+ subMenuList.addItem( subMenuItems( n ), n - 1 )
+ next n
+ end if
+
+ subMenuList.selectItemPos( currentPosition, true )
+
+ SubMenuListListener()
+ MenuLabelBoxListener()
+end sub
+
+
+
+sub PopulateTopLevelKeyBindingList()
+
+ allKeyGroupsArray(0) = &quot;SHIFT + CONTROL + F keys&quot;
+ allKeyGroupsArray(1) = &quot;SHIFT + CONTROL + digits&quot; &apos; CURRENTLY DISABLED
+ allKeyGroupsArray(2) = &quot;SHIFT + CONTROL + letters&quot;
+ allKeyGroupsArray(3) = &quot;CONTROL + F keys&quot;
+ allKeyGroupsArray(4) = &quot;CONTROL + digits&quot;
+ allKeyGroupsArray(5) = &quot;CONTROL + letters&quot;
+ allKeyGroupsArray(6) = &quot;SHIFT + F keys&quot;
+
+ keyCombo = bindingDialog.getControl( &quot;KeyCombo&quot; )
+ keyCombo.removeItems( 0, keyCombo.getItemCount() )
+ pos = 0
+ for n = LBOUND( allKeyGroupsArray() ) to UBOUND( allKeyGroupsArray() )
+ &apos; SHIFT + CONTROL + digits group is disabled at the moment, so skip
+ &apos; it
+ if ( n &lt;&gt; 1 ) then
+ keyCombo.addItem( allKeyGroupsArray( n ), pos )
+ pos = pos +1
+ endif
+ next n
+ keyCombo.text = keyCombo.getItem( 0 )
+end sub
+
+sub PopulateKeyBindingList( keyGroupIndex as Integer )
+ keyList = bindingDialog.getControl( &quot;KeyList&quot; )
+ selectedPos = keyList.getSelectedItemPos()
+ keyList.removeItems( 0, keyList.getItemCount() )
+
+ ShortCutKeyArray() = KeyBindArrayOfArrays( keyGroupIndex )
+
+ Dim keyProp as new com.sun.star.beans.PropertyValue
+ for n = lbound( ShortCutKeyArray() ) to ubound( ShortCutKeyArray() )
+ keyName = ShortCutKeyArray( n )
+ if ( keyAllocationMap( keyGroupIndex, n ).Value = 1 ) then
+ keyName = keyName + &quot; [Allocated to Office function]&quot;
+
+ elseif ( keyAllocationMap( keyGroupIndex, n ).Value &gt; 1 ) then
+ keyName = keyName + &quot; &quot; + keyAllocationMap( keyGroupIndex, n ).Name
+ endif
+ keyList.addItem( keyName, n )
+ next n
+
+ if ( selectedPos &lt;&gt; -1 )then
+ keyList.selectItemPos( selectedPos, true )
+ else
+ keyList.selectItemPos( 0, true )
+ end if
+ KeyListListener()
+end sub
+
+sub populateEventList( focusPosition as integer )
+ allApps = bindingDialog.getControl( &quot;AllAppsOption&quot; )
+ eventList = bindingDialog.getControl( &quot;EventList&quot; )
+ eventList.removeItems( 0, eventList.getItemCount() )
+
+ dim isApp as boolean
+ if allApps.state = true then &apos; Application event
+ isApp = true
+ else
+ isApp = false
+ end if
+
+ &apos; use allEventTypes() to fill list box
+ &apos; for each element compare with allEventTypesApp
+ dim scriptName as string
+ dim lineNumber as integer
+ for n = 0 to ubound( allEventTypes() )
+ &apos; If the line number is 1 then SB macro
+ &apos; more than 1 it is the line number of the script
+ if isApp and n &gt; 12 then
+ exit for
+ endif
+ if isApp then
+ lineNumber = allEventTypesApp( n ).Value
+ scriptName = allEventTypesApp( n ).Name
+ else
+ lineNumber = allEventTypesDoc( n ).Value
+ scriptName = allEventTypesDoc( n ).Name
+ end if
+ stringToAdd = &quot;&quot;
+ if ( lineNumber &gt;= 1 ) then
+ stringToAdd = &quot; [&quot; + scriptName + &quot;]&quot;
+ end if
+ eventList.addItem( allEventTypes( n ).Value + &quot; &quot; + stringToAdd, n )
+ next n
+
+ eventList.selectItemPos( focusPosition, true )
+end sub
+
+
+
+sub CreateAllKeyBindings()
+ reDim allKeyBindings( 105 ) as string
+ keyBindingPosition = 1
+
+ for FKey = 2 to 12
+ allKeyBindings( keyBindingPosition ) = &quot;SHIFT + CONTROL + F&quot; + FKey
+ keyBindingPosition = keyBindingPosition + 1
+ next FKey
+ for Digit = 0 to 9
+ allKeyBindings( keyBindingPosition ) = &quot;SHIFT + CONTROL + &quot; + Digit
+ keyBindingPosition = keyBindingPosition + 1
+ next Digit
+ for Alpha = 65 to 90
+ allKeyBindings( keyBindingPosition ) = &quot;SHIFT + CONTROL + &quot; + chr$( Alpha )
+ keyBindingPosition = keyBindingPosition + 1
+ next Alpha
+
+ for FKey = 2 to 12
+ allKeyBindings( keyBindingPosition ) = &quot;CONTROL + F&quot; + FKey
+ keyBindingPosition = keyBindingPosition + 1
+ next FKey
+ for Digit = 0 to 9
+ allKeyBindings( keyBindingPosition ) = &quot;CONTROL + &quot; + Digit
+ keyBindingPosition = keyBindingPosition + 1
+ next Digit
+ for Alpha = 65 to 90
+ allKeyBindings( keyBindingPosition ) = &quot;CONTROL + &quot; + chr$( Alpha )
+ keyBindingPosition = keyBindingPosition + 1
+ next Alpha
+
+ for FKey = 2 to 12
+ allKeyBindings( keyBindingPosition ) = &quot;SHIFT + F&quot; + FKey
+ keyBindingPosition = keyBindingPosition + 1
+ next FKey
+end sub
+
+
+sub createAllEventTypes()
+ allEventTypes( 0 ).Name = &quot;OnStartApp&quot;
+ allEventTypes( 0 ).Value = &quot;Start Application&quot;
+ allEventTypes( 1 ).Name = &quot;OnCloseApp&quot;
+ allEventTypes( 1 ).Value = &quot;Close Application&quot;
+ allEventTypes( 2 ).Name = &quot;OnNew&quot;
+ allEventTypes( 2 ).Value = &quot;Create Document&quot;
+ allEventTypes( 3 ).Name = &quot;OnLoad&quot;
+ allEventTypes( 3 ).Value = &quot;Open Document&quot;
+ allEventTypes( 4 ).Name = &quot;OnSaveAs&quot;
+ allEventTypes( 4 ).Value = &quot;Save Document As&quot;
+ allEventTypes( 5 ).Name = &quot;OnSaveAsDone&quot;
+ allEventTypes( 5 ).Value = &quot;Document has been saved as&quot;
+ allEventTypes( 6 ).Name = &quot;OnSave&quot;
+ allEventTypes( 6 ).Value = &quot;Save Document&quot;
+ allEventTypes( 7 ).Name = &quot;OnSaveDone&quot;
+ allEventTypes( 7 ).Value = &quot;Document has been saved&quot;
+ allEventTypes( 8 ).Name = &quot;OnPrepareUnload&quot;
+ allEventTypes( 8 ).Value = &quot;Close Document&quot;
+ allEventTypes( 9 ).Name = &quot;OnUnload&quot;
+ allEventTypes( 9 ).Value = &quot;Close Document&quot;
+ allEventTypes( 10 ).Name = &quot;OnFocus&quot;
+ allEventTypes( 10 ).Value = &quot;Activate document&quot;
+ allEventTypes( 11 ).Name = &quot;OnUnfocus&quot;
+ allEventTypes( 11 ).Value = &quot;DeActivate document&quot;
+ allEventTypes( 12 ).Name = &quot;OnPrint&quot;
+ allEventTypes( 12 ).Value = &quot;Print Document&quot;
+ REM The following are document-only events
+ allEventTypes( 13 ).Name = &quot;OnMailMerge&quot;
+ allEventTypes( 13 ).Value = &quot;Print form letters&quot;
+ allEventTypes( 14 ).Name = &quot;OnPageCountChange&quot;
+ allEventTypes( 14 ).Value = &quot;Changing the page count&quot;
+end sub
+
+
+sub createAllEventBindings()
+ &apos;dim props as new com.sun.star.beans.PropertyValue
+ &apos;props.Name = &quot;&quot; &apos;Name = script name
+ &apos;props.Value = 0 &apos;Value = 0 for empty, 1 for macro, linenumber for script
+
+ &apos; Creates all types of event bindings for both Application and Document
+ &apos; Initially both arrays have no bindings allocated to the events
+ &apos; The value for Doc is only Script/macro name (no need for line number)
+ for n = 0 to ubound( allEventTypes() )
+ allEventTypesApp( n ).Name = &quot;&quot;
+ allEventTypesApp( n ).Value = 0
+ allEventTypesDoc( n ).Name = &quot;&quot;
+ allEventTypesDoc( n ).Value = 0
+ next n
+end sub
+
+
+REM ----- Text Handling Functions -----
+
+
+function ExtractLabelFromXMLLine( XMLLine as string ) as string
+ labelStart = instr( XMLLine, &quot;label=&quot;+chr$(34)) + 7
+ labelEnd = instr( XMLLine, chr$(34)+&quot;&gt;&quot; )
+ if labelEnd = 0 then
+ labelEnd = instr( XMLLine, chr$(34)+&quot;/&gt;&quot; )
+ end if
+ labelLength = labelEnd - labelStart
+
+ menuLabelUnformatted = mid( XMLLine, labelStart, labelLength )
+ tildePosition = instr( menuLabelUnformatted, &quot;~&quot; )
+ select case tildePosition
+ case 0
+ menuLabel = menuLabelUnformatted
+ case 1
+ menuLabel = right( menuLabelUnformatted, labelLength - 1 )
+ case else
+ menuLabelLeft = left( menuLabelUnformatted, tildePosition - 1 )
+ menuLabelRight = right( menuLabelUnformatted, labelLength - tildePosition )
+ menuLabel = menuLabelLeft + menuLabelRight
+ end select
+
+ ExtractLabelFromXMLLine() = menuLabel
+end function
+
+
+function ExtractScriptIdFromXMLLine( XMLLine as string ) as string
+ idStart = instr( XMLLine, &quot;script://&quot;) + 9
+ if instr( XMLLine, chr$(34)+&quot; menu:helpid=&quot; ) = 0 then
+ idEnd = instr( XMLLIne, &quot;?location=&quot; )
+ else
+ idEnd = instr( XMLLine, &quot;&quot;+chr$(34)+&quot; menu:helpid=&quot; )
+ end if
+ idLength = idEnd - idStart
+ scriptId = mid( XMLLine, idStart, idLength )
+
+ ExtractScriptIdFromXMLLine() = scriptId
+end function
+
+function ExtractEventScriptFromXMLLine( xmlline as string )
+ if instr( xmlline, &quot;script://&quot; ) &gt; 0 then
+ idStart = instr( xmlline, &quot;script://&quot;) + 9
+ idEnd = instr( xmlline, chr$(34)+&quot; xlink:type=&quot; )
+ idLength = idEnd - idStart
+ scriptId = mid( xmlline, idStart, idLength )
+ end if
+ ExtractEventScriptFromXMLLine() = scriptId
+end function
+
+
+function ExtractEventNameFromXMLLine( xmlline as string )
+ idStart = instr( xmlline, &quot;event:name=&quot; + chr$(34) ) + 12
+ idEnd = instr( xmlline, chr$(34)+&quot; event:language&quot; )
+ idLength = idEnd - idStart
+ event = mid( xmlline, idStart, idLength )
+
+ ExtractEventNameFromXMLLine() = event
+end function
+
+function ExtractKeyCodeFromXMLLine( XMLLine as string ) as string
+ keyStart = instr( XMLLine, &quot;code=&quot;+chr$(34)+&quot;KEY_&quot;) + 10
+ keyCode = mid( XMLLine, keyStart, ( len( XMLLine ) - keyStart ) )
+ keyEnd = instr( keyCode, chr$(34) )
+ keyCode = mid( keyCode, 1, keyEnd - 1 )
+
+ ExtractKeyCodeFromXMLLine() = keyCode
+end function
+
+
+function GetMenuWhiteSpace( MenuXMLLine as string ) as string
+ whiteSpace = &quot;&quot;
+ numberOfSpaces = instr( MenuXMLLine, &quot;&lt;&quot; ) - 1
+ for i = 1 to numberOfSpaces
+ whiteSpace = whiteSpace + &quot; &quot;
+ next i
+
+ GetMenuWhiteSpace() = whiteSpace
+end function
+
+function IsAllocatedMenuItem( script as string ) as boolean
+ foundMenuItem = false
+ Allocated = false
+ count = 0
+ do
+ count = count + 1
+ if strcomp( script, subMenuItems( count ) ) = 0 then
+ foundMenuItem = true
+ end if
+ loop while not( foundMenuItem ) and count &lt; subMenuCount
+
+ linePosition = subMenuItemLinePosition( count )
+
+ if not( instr( xmlFile( linePosition ), &quot;script://&quot; ) = 0 ) then
+ Allocated = true
+ end if
+
+ isAllocatedMenuItem() = Allocated
+end Function
+
+
+function HasShiftKey( keyCombo ) as boolean
+ if instr( keyCombo, &quot;SHIFT&quot; ) = 0 then
+ hasShift = false
+ else
+ hasShift = true
+ end if
+
+ HasShiftKey = hasShift
+end function
+
+
+function HasControlKey( keyCombo ) as boolean
+ if instr( keyCombo, &quot;CONTROL&quot; ) = 0 then
+ hasControl = false
+ else
+ hasControl = true
+ end if
+
+ HasControlKey = hasControl
+end function
+
+
+function ExtractKeyFromCombo( keyString as string ) as string
+ while not( instr( keyString, &quot;+&quot; ) = 0 )
+ removeTo = instr( keyString, &quot;+ &quot; ) + 2
+ keyString = mid( keyString, removeTo, ( len( keyString ) - removeTo ) + 1 )
+ wend
+ ExtractKeyFromCombo() = keyString
+end function
+
+
+
+REM ------ Event Handling Functions (Listeners) ------
+
+
+sub KeyListListener()
+ keyShortCutList = bindingDialog.getControl( &quot;KeyList&quot; )
+ selectedShortCut = keyShortCutList.getSelectedItem()
+ combo = bindingDialog.getControl( &quot;KeyCombo&quot; )
+
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = menuScriptList.getSelectedItem()
+
+ keyGroup = combo.text
+ dim keyGroupIndex as Integer
+ dim selectedKeyIndex as Integer
+ for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
+ if ( allKeyGroupsArray( n ) = keyGroup )then
+ keyGroupIndex = n
+ exit for
+ end if
+ next n
+ selectedKeyIndex = keyShortCutList.getSelectedItemPos()
+
+ if keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value &gt; 1 then
+ bindingDialog.Model.Delete.enabled = true
+ bindingDialog.Model.AddOn.enabled = true
+ if selectedScript &lt;&gt; &quot;&quot; then
+ bindingDialog.Model.NewButton.enabled = true
+ endif
+
+ else
+
+ if keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value = 1 then
+ bindingDialog.Model.Delete.enabled = false
+ bindingDialog.Model.AddOn.enabled = false
+ bindingDialog.Model.NewButton.enabled = false
+ else
+ bindingDialog.Model.Delete.enabled = false
+ bindingDialog.Model.AddOn.enabled = false
+ if selectedScript &lt;&gt; &quot;&quot; then
+ bindingDialog.Model.NewButton.enabled = true
+ end if
+ end if
+ end if
+end sub
+
+
+sub SubMenuListListener()
+ scriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ subMenuList = bindingDialog.getControl( &quot;SubMenuList&quot; )
+ selectedMenuItem = subMenuList.getSelectedItem()
+ if IsAllocatedMenuItem( selectedMenuItem ) then
+ bindingDialog.Model.Delete.enabled = true
+ bindingDialog.Model.AddOn.enabled = true
+ else
+ bindingDialog.Model.Delete.enabled = false
+ bindingDialog.Model.AddOn.enabled = false
+ end if
+end sub
+
+REM a keypress listener that in turn fires the MenuCL on a return key even only
+sub fireMenuComboListernerOnRet( eventobj as object )
+ if (eventobj.KeyCode = 1280 ) then
+ MenuComboListener()
+ endif
+end sub
+
+&apos;Populates the SubMenuList with the appropriate menu items from the Top-level menu selected from the combo box
+sub MenuComboListener()
+ combo = bindingDialog.getControl( &quot;MenuCombo&quot; )
+ newToplevelMenu = combo.text
+ counter = 0
+ do
+ counter = counter + 1
+ loop while not( newToplevelMenu = menuItems( counter ) )
+
+ PopulateSubMenuList( counter )
+end sub
+
+REM a keypress listener that in turn fires the LLCL on a return key even only
+sub fireLangLocComboListernerOnRet( eventobj as object )
+ if (eventobj.KeyCode = 1280 ) then
+ LangLocComboListener()
+ endif
+end sub
+
+sub LangLocComboListener()
+
+ combo = bindingDialog.getControl( &quot;LanguageCombo&quot; )
+ language = combo.text
+ combo = bindingDialog.getControl( &quot;LocationCombo&quot; )
+ location = combo.text
+
+ PopulateScriptList( language,location )
+
+ &apos;Enable/disable Assign button
+ scriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ if not (dialogName = &quot;EditDebug&quot;) then
+ if scriptList.getSelectedItem() = &quot;&quot; then
+ bindingDialog.Model.NewButton.enabled = false
+ end if
+ end if
+
+ if ( location = &quot;Filesystem&quot; ) and ( language &lt;&gt; &quot;Java&quot; ) then
+ bindingDialog.Model.Browse.enabled = true
+ if not (dialogName = &quot;EditDebug&quot;) then
+ bindingDialog.Model.fsonly.enabled = true
+ end if
+ else
+ bindingDialog.Model.Browse.enabled = false
+ if not (dialogName = &quot;EditDebug&quot;) then
+ bindingDialog.Model.fsonly.enabled = false
+ end if
+ endif
+
+ &apos; extra dialog dependant processing
+ if dialogName = &quot;Menu&quot; then
+ &apos; will set New button to false if no text in LableBox
+ MenuLabelBoxListener()
+ elseif dialogName = &quot;Key&quot; then
+ &apos; will set Assigne button to false if appropriate
+ KeyListListener()
+ elseif dialogName = &quot;Event&quot; then
+ EventListListener()
+ end if
+
+end sub
+
+REM a keypress listener that in turn fires the KeyCL on a return key even only
+sub fireKeyComboListernerOnRet( eventobj as object )
+ if (eventobj.KeyCode = 1280 ) then
+ KeyComboListener()
+ endif
+end sub
+
+&apos;Populates the KeyList with the appropriate key combos from the Top-level key group selected from the combo box
+sub KeyComboListener()
+ combo = bindingDialog.getControl( &quot;KeyCombo&quot; )
+ keyGroup = combo.text
+ for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
+ if ( allKeyGroupsArray( n ) = keyGroup )then
+ keyGroupIndex = n
+ exit for
+ end if
+ next n
+ PopulateKeyBindingList( keyGroupIndex )
+end sub
+
+
+sub MenuLabelBoxListener()
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = menuScriptList.getSelectedItem()
+ &apos;if the SubMenuList is from a dynamically created menu (e.g. Format)
+ &apos;or if the Menu Label text box is empty
+ subMenuList = bindingDialog.getControl( &quot;SubMenuList&quot; )
+ firstItem = subMenuList.getItem( 0 )
+ if bindingDialog.Model.MenuLabelBox.text = &quot;&quot; OR firstItem = &quot;Unable to Assign Scripts to this menu&quot; OR selectedScript = &quot;&quot; then
+ bindingDialog.Model.NewButton.enabled = false
+ else
+ bindingDialog.Model.NewButton.enabled = true
+ end if
+end sub
+
+sub AppDocEventListener()
+ populateEventList( 0 )
+ EventListListener()
+end sub
+
+
+sub EventListListener()
+ on error goto ErrorHandler
+
+ eventList = bindingDialog.getControl( &quot;EventList&quot; )
+ eventPos = eventList.getSelectedItemPos()
+
+ allApps = bindingDialog.getControl( &quot;AllAppsOption&quot; )
+
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = menuScriptList.getSelectedItem()
+
+ dim binding as integer
+ if allApps.state = true then
+ binding = allEventTypesApp( eventPos ).Value
+ else
+ binding = allEventTypesDoc( eventPos ).Value
+ endif
+
+ if ( binding &gt; 1 ) then
+ bindingDialog.Model.Delete.enabled = true
+ else
+ bindingDialog.Model.Delete.enabled = false
+ end if
+
+ if ( binding = 1 ) then
+ &apos; staroffice binding, can&apos;t assign
+ bindingDialog.Model.NewButton.enabled = false
+ elseif ( selectedScript &lt;&gt; &quot;&quot; ) then
+ bindingDialog.Model.NewButton.enabled = true
+ end if
+ exit sub
+
+ ErrorHandler:
+ reset
+ bindingDialog.Model.Delete.enabled = false
+
+end sub
+
+
+REM ------ Event Handling Functions (Buttons) ------
+
+function getFilePicker() as Object
+ REM file dialog
+ oFilePicker = CreateUnoService( &quot;com.sun.star.ui.dialogs.FilePicker&quot; )
+
+ combo = bindingDialog.getControl( &quot;LanguageCombo&quot; )
+ language = combo.text
+ currentFilter = &quot;&quot;
+
+ for langIndex = 0 to ubound(languages())
+ if( languages(langIndex) &lt;&gt; &quot;Java&quot; ) then
+ filterName = languages(langIndex) + &quot; (&quot;
+ filterVal=&quot;&quot;
+ extns = extensions(langIndex)
+ for extnIndex = lbound(extns()) to ubound(extns())
+ filterName = filterName + &quot;*.&quot; + extns(extnIndex) + &quot;,&quot;
+ filterVal = filterVal + &quot;*.&quot; + extns(extnIndex) + &quot;,&quot;
+ next extnIndex
+ filterName = left(filterName, len(filterName) -1) + &quot;)&quot;
+ filterVal = left(filterVal, len(filterVal) -1)
+ if(instr(filterName,language) = 1 ) then
+ currentFilter = filterName
+ end if
+ oFilePicker.AppendFilter(filterName, filterVal)
+ end if
+ next langIndex
+ if(len(currentFilter) &gt; 0 ) then
+ oFilePicker.SetCurrentFilter( currentFilter )
+ end if
+
+ If sFileURL = &quot;&quot; Then
+ oSettings = CreateUnoService( &quot;com.sun.star.frame.Settings&quot; )
+ oPathSettings = oSettings.getByName( &quot;PathSettings&quot; )
+ sFileURL = oPathSettings.getPropertyValue( &quot;Work&quot; )
+ End If
+
+ REM set display directory
+ oSimpleFileAccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; )
+
+ If oSimpleFileAccess.exists( sFileURL ) And oSimpleFileAccess.isFolder( sFileURL ) Then
+ oFilePicker.setDisplayDirectory( sFileURL )
+ End If
+ getFilePicker() = oFilePicker
+end function
+
+Sub DoBrowseAndEdit()
+ Dim oFilePicker As Object, oSimpleFileAccess As Object
+ Dim oSettings As Object, oPathSettings As Object
+ Dim sFileURL As String
+ Dim sFiles As Variant
+
+ oFilePicker = getFilePicker()
+ REM execute file dialog
+ If oFilePicker.execute() Then
+ sFiles = oFilePicker.getFiles()
+
+ sFileURL = sFiles(0)
+ oSimpleFileAccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; )
+ If oSimpleFileAccess.exists( sFileURL ) Then
+ for langIndex = 0 to ubound(languages())
+ If (instr(oFilePicker.GetCurrentFilter, languages(langIndex)) = 1 ) then
+ RunDebugger(languages(langIndex), sFileURL, &quot;&quot;)
+ End If
+ next langIndex
+ End If
+ bindingDialog.endExecute()
+ End If
+End Sub
+
+Sub RunDebugger(lang as String, uri as String, filename as String)
+ dim document as object
+ dim dispatcher as object
+ dim parser as object
+ dim url as new com.sun.star.util.URL
+
+ document = ThisComponent.CurrentController.Frame
+ parser = createUnoService(&quot;com.sun.star.util.URLTransformer&quot;)
+ dim args(2) as new com.sun.star.beans.PropertyValue
+ args(0).Name = &quot;language&quot;
+ args(0).Value = lang
+ args(1).Name = &quot;uri&quot;
+ args(1).Value = uri
+ args(2).Name = &quot;filename&quot;
+ args(2).Value = filename
+
+ url.Complete = &quot;script://_$DebugRunner.Debug?&quot; _
+ + &quot;language=Java&amp;function=DebugRunner.go&quot; _
+ + &quot;&amp;location=share&quot;
+
+ parser.parseStrict(url)
+ disp = document.queryDispatch(url,&quot;&quot;,0)
+ disp.dispatch(url, args())
+End Sub
+
+sub DoEdit()
+ Dim scriptInfo as Object
+
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = menuScriptList.getSelectedItem()
+
+ if not (selectedScript = &quot;&quot;) then
+ scripts() = scriptDisplayList(0)
+ for n = LBOUND( scripts() ) to UBOUND( scripts() )
+ if ( scripts( n ).Name = selectedScript ) then
+ scriptInfo = scripts( n ).Value
+ exit for
+ end if
+ next n
+
+ RunDebugger(scriptInfo.getLanguage, scriptInfo.getParcelURI, scriptInfo.getFunctionName)
+ bindingDialog.endExecute()
+ end if
+end sub
+
+sub MenuOKButton()
+ WriteXMLFromArray()
+ bindingDialog.endExecute()
+end sub
+
+
+sub MenuCancelButton()
+ bindingDialog.endExecute()
+end sub
+
+
+sub MenuHelpButton()
+ helpDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;HelpBinding&quot; )
+ helpDialog.execute()
+end sub
+
+
+sub MenuDeleteButton()
+ subMenuList = bindingDialog.getControl( &quot;SubMenuList&quot; )
+ linePos = subMenuItemLinePosition( subMenuList.getSelectedItemPos() + 1 )
+
+ RemoveBinding( linePos )
+
+ REM Update the top-level menu&apos;s line positions
+ combo = bindingDialog.getControl( &quot;MenuCombo&quot; )
+ newToplevelMenu = combo.text
+ counter = 0
+ do
+ counter = counter + 1
+ loop while not( newToplevelMenu = menuItems( counter ) )
+ UpdateTopLevelMenus( counter + 1, false )
+
+ MenuComboListener()
+
+ subMenuList.selectItemPos( subMenuList.getSelectedItemPos(), true )
+end sub
+
+
+sub MenuNewButton()
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = menuScriptList.getSelectedItem()
+ scriptURI = getScriptURI( selectedScript )
+ newMenuLabel = bindingDialog.Model.MenuLabelBox.text
+
+ subMenuList = bindingDialog.getControl( &quot;SubMenuList&quot; )
+
+ REM Update the top-level menu&apos;s line positions
+ combo = bindingDialog.getControl( &quot;MenuCombo&quot; )
+ newToplevelMenu = combo.text
+ counter = 0
+ do
+ counter = counter + 1
+ loop while not( newToplevelMenu = menuItems( counter ) )
+ UpdateTopLevelMenus( counter + 1, true )
+
+ REM New line position is one ahead of the selected sub menu item
+ linePos = subMenuItemLinePosition( subMenuList.getSelectedItemPos() + 1 ) + 1
+
+ AddNewMenuBinding( scriptURI, newMenuLabel, linePos )
+
+ MenuComboListener()
+ subMenuList.selectItemPos( subMenuList.getSelectedItemPos() + 1, true )
+ SubMenuListListener()
+end sub
+
+sub BrowseButton()
+ Dim oFilePicker As Object, oSimpleFileAccess As Object
+ Dim oSettings As Object, oPathSettings As Object
+ Dim sFileURL As String
+ Dim sFiles As Variant
+
+ oFilePicker = getFilePicker()
+
+ REM execute file dialog
+ If oFilePicker.execute() Then
+ sFiles = oFilePicker.getFiles()
+ sFileURL = sFiles(0)
+ oSimpleFileAccess = CreateUnoService( &quot;com.sun.star.ucb.SimpleFileAccess&quot; )
+ If oSimpleFileAccess.exists( sFileURL ) Then
+ REM add sFileURL to the list
+ ReDim preserve filesysScripts(filesysCount) as String
+ filesysScripts( filesysCount ) = sFileURL
+ filesysCount=filesysCount+1
+ &apos; if user changed filter in file picker then populate
+ &apos; language with language associated with that in file picker
+ sFilter = oFilePicker.getCurrentFilter()
+ langCombo = bindingDialog.getControl( &quot;LanguageCombo&quot; )
+ dim items() as String
+ items() = langCombo.getItems()
+ for index = lbound(items()) to ubound(items())
+ iPos = inStr(sFilter,&quot; &quot;)
+ Dim theLanguage as String
+ if( iPos &gt; 0 ) then
+ theLanguage = Left( sFilter, iPos - 1)
+ if ( theLanguage = items( index ) ) then
+ langCombo.text = items( index )
+ exit for
+ end if
+ end if
+ next index
+ End If
+ End If
+ LangLocComboListener()
+End Sub
+
+sub KeyOKButton()
+ WriteXMLFromArray()
+ bindingDialog.endExecute()
+end sub
+
+
+sub KeyCancelButton()
+ bindingDialog.endExecute()
+end sub
+
+
+sub KeyHelpButton()
+ helpDialog = LoadDialog( &quot;ScriptBindingLibrary&quot;, &quot;HelpBinding&quot; )
+ helpDialog.execute()
+end sub
+
+
+sub KeyNewButton()
+ combo = bindingDialog.getControl( &quot;KeyCombo&quot; )
+ keyGroup = combo.text
+ for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
+ if ( allKeyGroupsArray( n ) = keyGroup )then
+ keyGroupIndex = n
+ exit for
+ end if
+ next n
+ menuScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ script = menuScriptList.getSelectedItem()
+ scriptURI = getScriptURI( script )
+
+ keyList = bindingDialog.getControl( &quot;KeyList&quot; )
+ keyIndex = keyList.getSelectedItemPos()
+ ShortCutKeyArray() = KeyBindArrayOfArrays( keyGroupIndex )
+ keyText = ShortCutKeyArray( keyIndex )
+
+ AddNewKeyBinding( scriptURI, HasShiftKey( keyText ), HasControlKey( keyText ), ExtractKeyFromCombo( keyText ) )
+
+ KeyComboListener()
+end sub
+
+
+sub KeyDeleteButton()
+
+ keyShortCutList = bindingDialog.getControl( &quot;KeyList&quot; )
+ selectedShortCut = keyShortCutList.getSelectedItem()
+ combo = bindingDialog.getControl( &quot;KeyCombo&quot; )
+
+ keyGroup = combo.text
+ dim keyGroupIndex as Integer
+ dim selectedKeyIndex as Integer
+ for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
+ if ( allKeyGroupsArray( n ) = keyGroup )then
+ keyGroupIndex = n
+ exit for
+ end if
+ next n
+ selectedKeyIndex = keyShortCutList.getSelectedItemPos()
+ linePosition = keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value
+ keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value = 0
+ keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Name = &quot;&quot;
+ RemoveBinding( linePosition )
+ KeyComboListener()
+end sub
+
+
+sub EventNewButton()
+ eventScriptList = bindingDialog.getControl( &quot;ScriptList&quot; )
+ selectedScript = eventScriptList.getSelectedItem()
+ scriptURI = getScriptURI( selectedScript )
+ eventList = bindingDialog.getControl( &quot;EventList&quot; )
+ eventPosition = eventList.getSelectedItemPos()
+
+ allApps = bindingDialog.getControl( &quot;AllAppsOption&quot; )
+ dim isApp as boolean
+ if allApps.state = true then &apos;Application
+ isApp = true
+ else &apos;Document
+ isApp = false
+ end if
+ AddNewEventBinding( scriptURI, eventPosition, isApp )
+
+ populateEventList( eventPosition )
+ EventListListener()
+end sub
+
+
+sub EventDeleteButton()
+ eventList = bindingDialog.getControl( &quot;EventList&quot; )
+ REM Check that combo is a script
+ eventPosition = eventList.getSelectedItemPos()
+
+ allApps = bindingDialog.getControl( &quot;AllAppsOption&quot; )
+ if allApps.state = true then &apos;Application
+ linePosition = allEventTypesApp( eventPosition ).Value
+ &apos;dim eventProp as new com.sun.star.beans.PropertyValue
+ &apos;eventProp.Name = &quot;&quot;
+ &apos;eventProp.Value = 0
+ allEventTypesApp( eventPosition ).Name = &quot;&quot;
+ allEventTypesApp( eventPosition ).Value = 0
+ RemoveBinding( linePosition )
+ else &apos;Document
+ &apos;DeleteEvent( allEventTypes( eventPosition ) )
+ allEventTypesDoc( eventPosition ).Name = &quot;&quot;
+ allEventTypesDoc( eventPosition ).Value = 0
+ end if
+
+ PopulateEventList( eventPosition )
+ EventListListener()
+end sub
+
+
+sub EventOKButton
+ WriteEventsToDoc()
+ WriteXMLFromArray()
+ bindingDialog.endExecute()
+end sub
+
+
+sub HelpOKButton()
+ helpDialog.endExecute()
+end sub
+</script:module>
diff --git a/scripting/workben/bindings/calckeybinding.xml b/scripting/workben/bindings/calckeybinding.xml
new file mode 100755
index 000000000000..3e9b7ef48689
--- /dev/null
+++ b/scripting/workben/bindings/calckeybinding.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE accel:acceleratorlist PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "accelerator.dtd">
+<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href="slot:26532"/>
+ <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href="slot:26531"/>
+ <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href="slot:26542"/>
+ <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href="slot:26541"/>
+ <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href="slot:26539"/>
+ <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href="slot:26540"/>
+ <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href="slot:26318"/>
+ <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href="slot:26645"/>
+ <accel:item accel:code="KEY_F2" accel:shift="true" accel:mod1="true" xlink:href="slot:26089"/>
+ <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href="slot:26645"/>
+ <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href="slot:26012"/>
+ <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href="slot:10294"/>
+ <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href="slot:26612"/>
+ <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href="slot:10295"/>
+ <accel:item accel:code="KEY_6" accel:shift="true" accel:mod1="true" xlink:href="slot:26052"/>
+ <accel:item accel:code="KEY_5" accel:shift="true" accel:mod1="true" xlink:href="slot:26046"/>
+ <accel:item accel:code="KEY_4" accel:shift="true" accel:mod1="true" xlink:href="slot:26045"/>
+ <accel:item accel:code="KEY_3" accel:shift="true" accel:mod1="true" xlink:href="slot:26053"/>
+ <accel:item accel:code="KEY_2" accel:shift="true" accel:mod1="true" xlink:href="slot:26055"/>
+ <accel:item accel:code="KEY_1" accel:shift="true" accel:mod1="true" xlink:href="slot:26054"/>
+ <accel:item accel:code="KEY_DIVIDE" accel:mod1="true" xlink:href="slot:26560"/>
+ <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href="slot:26551"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href="slot:26550"/>
+ <accel:item accel:code="KEY_SPACE" accel:mod1="true" xlink:href="slot:26547"/>
+ <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href="slot:26543"/>
+ <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href="slot:26544"/>
+ <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href="slot:5741"/>
+ <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href="slot:5742"/>
+ <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href="slot:26538"/>
+ <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href="slot:26537"/>
+ <accel:item accel:code="KEY_UP" accel:mod1="true" xlink:href="slot:26535"/>
+ <accel:item accel:code="KEY_DOWN" accel:mod1="true" xlink:href="slot:26536"/>
+ <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href="slot:26332"/>
+ <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href="slot:5573"/>
+ <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href="slot:26245"/>
+ <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href="slot:10245"/>
+ <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href="slot:26271"/>
+ <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href="slot:26152"/>
+ <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href="slot:5700"/>
+ <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href="slot:10014"/>
+ <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href="slot:26372"/>
+ <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href="slot:26371"/>
+ <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href="slot:26374"/>
+ <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href="slot:10008"/>
+ <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href="slot:26373"/>
+ <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href="slot:26610"/>
+ <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href="slot:10009"/>
+ <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href="slot:10035"/>
+ <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href="slot:10036"/>
+ <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href="slot:10034"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href="slot:26549"/>
+ <accel:item accel:code="KEY_SPACE" accel:shift="true" xlink:href="slot:26548"/>
+ <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href="slot:26525"/>
+ <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href="slot:26526"/>
+ <accel:item accel:code="KEY_END" accel:shift="true" xlink:href="slot:26534"/>
+ <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href="slot:26533"/>
+ <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href="slot:26524"/>
+ <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href="slot:26523"/>
+ <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href="slot:26522"/>
+ <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href="slot:26521"/>
+ <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href="slot:5538"/>
+ <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href="slot:26122"/>
+ <accel:item accel:code="KEY_F7" accel:shift="true" xlink:href="slot:26456"/>
+ <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href="slot:26458"/>
+ <accel:item accel:code="KEY_F4" accel:shift="true" xlink:href="slot:26609"/>
+ <accel:item accel:code="KEY_REPEAT" xlink:href="slot:5702"/>
+ <accel:item accel:code="KEY_UNDO" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_INSERT" xlink:href="slot:26265"/>
+ <accel:item accel:code="KEY_BACKSPACE" xlink:href="slot:26553"/>
+ <accel:item accel:code="KEY_ESCAPE" xlink:href="slot:26557"/>
+ <accel:item accel:code="KEY_PAGEDOWN" xlink:href="slot:5735"/>
+ <accel:item accel:code="KEY_PAGEUP" xlink:href="slot:5736"/>
+ <accel:item accel:code="KEY_END" xlink:href="slot:5746"/>
+ <accel:item accel:code="KEY_HOME" xlink:href="slot:5745"/>
+ <accel:item accel:code="KEY_RIGHT" xlink:href="slot:5734"/>
+ <accel:item accel:code="KEY_LEFT" xlink:href="slot:5733"/>
+ <accel:item accel:code="KEY_UP" xlink:href="slot:5732"/>
+ <accel:item accel:code="KEY_DOWN" xlink:href="slot:5731"/>
+ <accel:item accel:code="KEY_F12" xlink:href="slot:26331"/>
+ <accel:item accel:code="KEY_F11" xlink:href="slot:5539"/>
+ <accel:item accel:code="KEY_F9" xlink:href="slot:26304"/>
+ <accel:item accel:code="KEY_F8" xlink:href="slot:26123"/>
+ <accel:item accel:code="KEY_F7" xlink:href="slot:10243"/>
+ <accel:item accel:code="KEY_F5" xlink:href="slot:10366"/>
+ <accel:item accel:code="KEY_F4" xlink:href="slot:6660"/>
+ <accel:item accel:code="KEY_F2" xlink:href="slot:26552"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_TAB" xlink:href="slot:26545"/>
+ <accel:item accel:code="KEY_TAB" accel:shift="true" xlink:href="slot:26546"/>
+</accel:acceleratorlist> \ No newline at end of file
diff --git a/scripting/workben/bindings/calcmenubar.xml b/scripting/workben/bindings/calcmenubar.xml
new file mode 100755
index 000000000000..26b884cb60ea
--- /dev/null
+++ b/scripting/workben/bindings/calcmenubar.xml
@@ -0,0 +1,318 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menu:menubar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "menubar.dtd">
+<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
+ <menu:menu menu:id="slot:5510" menu:label="~File">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5537" menu:helpid="5537" menu:label="~New"/>
+ <menu:menuitem menu:id="slot:5501" menu:helpid="5501" menu:label="~Open..."/>
+ <menu:menuitem menu:id="slot:6381" menu:helpid="6381" menu:label="A~utoPilot"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5503" menu:helpid="5503" menu:label="~Close"/>
+ <menu:menuitem menu:id="slot:5505" menu:helpid="5505" menu:label="~Save"/>
+ <menu:menuitem menu:id="slot:5502" menu:helpid="5502" menu:label="Save ~As..."/>
+ <menu:menuitem menu:id="slot:5309" menu:helpid="5309" menu:label="Sa~ve All"/>
+ <menu:menuitem menu:id="slot:5508" menu:helpid="5508" menu:label="Reload"/>
+ <menu:menuitem menu:id="slot:6583" menu:helpid="6583" menu:label="Versions..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5829" menu:helpid="5829" menu:label="Expor~t..."/>
+ <menu:menuitem menu:id="slot:6673" menu:helpid="6673" menu:label="Expor~t as PDF..."/>
+ <menu:menu menu:id="slot:36" menu:label="Sen~d">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5331" menu:helpid="5331" menu:label="Document as ~E-mail..."/>
+ <menu:menuitem menu:id="slot:6672" menu:helpid="6672" menu:label="Document as P~DF Attachment..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5535" menu:helpid="5535" menu:label="Propert~ies..."/>
+ <menu:menu menu:id="slot:39" menu:label="~Templates">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5540" menu:helpid="5540" menu:label="~Organize..."/>
+ <menu:menuitem menu:id="slot:6655" menu:helpid="6655" menu:label="~Address Book Source..."/>
+ <menu:menuitem menu:id="slot:5538" menu:helpid="5538" menu:label="~Save..."/>
+ <menu:menuitem menu:id="slot:5594" menu:helpid="5594" menu:label="~Edit..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5325" menu:helpid="5325" menu:label="Pa~ge Preview"/>
+ <menu:menuitem menu:id="slot:5504" menu:helpid="5504" menu:label="~Print..."/>
+ <menu:menuitem menu:id="slot:5302" menu:helpid="5302" menu:label="P~rinter Settings..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5300" menu:helpid="5300" menu:label="E~xit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:2" menu:label="~Edit">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5701" menu:helpid="5701" menu:label="Can&apos;t Undo"/>
+ <menu:menuitem menu:id="slot:5700" menu:helpid="5700" menu:label="Can&apos;t Restore"/>
+ <menu:menuitem menu:id="slot:5702" menu:helpid="5702" menu:label="~Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5710" menu:helpid="5710" menu:label="Cu~t"/>
+ <menu:menuitem menu:id="slot:5711" menu:helpid="5711" menu:label="~Copy"/>
+ <menu:menuitem menu:id="slot:5712" menu:helpid="5712" menu:label="~Paste"/>
+ <menu:menuitem menu:id="slot:26220" menu:helpid="26220" menu:label="Paste ~Special..."/>
+ <menu:menuitem menu:id="slot:5723" menu:helpid="5723" menu:label="Select ~All"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:37" menu:label="Chan~ges">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26238" menu:helpid="26238" menu:label="~Record"/>
+ <menu:menuitem menu:id="slot:26084" menu:helpid="26084" menu:label="~Protect Records..."/>
+ <menu:menuitem menu:id="slot:26239" menu:helpid="26239" menu:label="Sho~w..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26258" menu:helpid="26258" menu:label="~Accept or Reject..."/>
+ <menu:menuitem menu:id="slot:26259" menu:helpid="26259" menu:label="~Comments..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6587" menu:helpid="6587" menu:label="~Merge Document..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:6586" menu:helpid="6586" menu:label="Co~mpare Document..."/>
+ <menu:menuitem menu:id="slot:5961" menu:helpid="5961" menu:label="~Find &amp; Replace..."/>
+ <menu:menuitem menu:id="slot:10366" menu:helpid="10366" menu:label="~Navigator"/>
+ <menu:menuitem menu:id="slot:26235" menu:helpid="26235" menu:label="~Headers &amp; Footers..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:3" menu:label="Fill">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26224" menu:helpid="26224" menu:label="~Down"/>
+ <menu:menuitem menu:id="slot:26225" menu:helpid="26225" menu:label="~Right"/>
+ <menu:menuitem menu:id="slot:26226" menu:helpid="26226" menu:label="~Up"/>
+ <menu:menuitem menu:id="slot:26227" menu:helpid="26227" menu:label="~Left"/>
+ <menu:menuitem menu:id="slot:26228" menu:helpid="26228" menu:label="~Sheet..."/>
+ <menu:menuitem menu:id="slot:26229" menu:helpid="26229" menu:label="S~eries..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5713" menu:helpid="5713" menu:label="Delete C~ontents..."/>
+ <menu:menuitem menu:id="slot:26222" menu:helpid="26222" menu:label="Delete C~ells..."/>
+ <menu:menu menu:id="slot:38" menu:label="Shee~t">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26348" menu:helpid="26348" menu:label="~Move/Copy..."/>
+ <menu:menuitem menu:id="slot:26090" menu:helpid="26090" menu:label="~Select..."/>
+ <menu:menuitem menu:id="slot:26223" menu:helpid="26223" menu:label="~Delete..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:4" menu:label="Delete Manual Break">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26263" menu:helpid="26263" menu:label="~Row Break"/>
+ <menu:menuitem menu:id="slot:26264" menu:helpid="26264" menu:label="~Column Break"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26060" menu:helpid="26060" menu:label="Lin~ks..."/>
+ <menu:menuitem menu:id="slot:6314" menu:helpid="6314" menu:label="P~lug-in"/>
+ <menu:menuitem menu:id="slot:10371" menu:helpid="10371" menu:label="ImageMap"/>
+ <menu:menuitem menu:id="slot:5575" menu:helpid="5575" menu:label="~Object"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5" menu:label="~View">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10000" menu:helpid="10000" menu:label="~Zoom..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6660" menu:helpid="6660" menu:label="~Data Sources"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:29" menu:label="~Toolbars">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5910" menu:helpid="5910" menu:label="~Function Bar"/>
+ <menu:menuitem menu:id="slot:5905" menu:helpid="5905" menu:label="~Object Bar"/>
+ <menu:menuitem menu:id="slot:5909" menu:helpid="5909" menu:label="Main ~Toolbar"/>
+ <menu:menuitem menu:id="slot:26241" menu:helpid="26241" menu:label="For~mula Bar"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5908" menu:helpid="5908" menu:label="Customi~ze..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5920" menu:helpid="5920" menu:label="~Status Bar"/>
+ <menu:menuitem menu:id="slot:6680" menu:helpid="6680" menu:label="~Input Method Status"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26242" menu:helpid="26242" menu:label="C~olumn &amp; Row Headers"/>
+ <menu:menuitem menu:id="slot:26245" menu:helpid="26245" menu:label="~Value Highlighting"/>
+ <menu:menuitem menu:id="slot:26247" menu:helpid="26247" menu:label="~Page Break Preview"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5627" menu:helpid="5627" menu:label="F~ull Screen"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:6" menu:label="~Insert">
+ <menu:menupopup>
+ <menu:menu menu:id="slot:7" menu:label="~Manual Break">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26261" menu:helpid="26261" menu:label="~Row Break"/>
+ <menu:menuitem menu:id="slot:26262" menu:helpid="26262" menu:label="~Column Break"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:26266" menu:helpid="26266" menu:label="~Cells..."/>
+ <menu:menuitem menu:id="slot:26267" menu:helpid="26267" menu:label="~Rows"/>
+ <menu:menuitem menu:id="slot:26268" menu:helpid="26268" menu:label="Co~lumns"/>
+ <menu:menuitem menu:id="slot:26269" menu:helpid="26269" menu:label="~Sheet..."/>
+ <menu:menuitem menu:id="slot:26085" menu:helpid="26085" menu:label="E~xternal Data..."/>
+ <menu:menuitem menu:id="slot:10503" menu:helpid="10503" menu:label="S~pecial Character..."/>
+ <menu:menuitem menu:id="slot:5678" menu:helpid="5678" menu:label="~Hyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26152" menu:helpid="26152" menu:label="~Function..."/>
+ <menu:menuitem menu:id="slot:26248" menu:helpid="26248" menu:label="F~unction List"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:8" menu:label="~Names">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26271" menu:helpid="26271" menu:label="~Define..."/>
+ <menu:menuitem menu:id="slot:26272" menu:helpid="26272" menu:label="~Insert..."/>
+ <menu:menuitem menu:id="slot:26273" menu:helpid="26273" menu:label="~Create..."/>
+ <menu:menuitem menu:id="slot:26629" menu:helpid="26629" menu:label="~Labels..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:26276" menu:helpid="26276" menu:label="Not~e"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:30" menu:label="~Graphics">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10241" menu:helpid="10241" menu:label="From ~File..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:1" menu:label="~Object">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5561" menu:helpid="5561" menu:label="~OLE Object..."/>
+ <menu:menuitem menu:id="slot:5672" menu:helpid="5672" menu:label="~Plug-in..."/>
+ <menu:menuitem menu:id="slot:5676" menu:helpid="5676" menu:label="~Sound..."/>
+ <menu:menuitem menu:id="slot:5677" menu:helpid="5677" menu:label="~Video..."/>
+ <menu:menuitem menu:id="slot:5673" menu:helpid="5673" menu:label="~Applet..."/>
+ <menu:menuitem menu:id="slot:26063" menu:helpid="26063" menu:label="~Formula..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:26155" menu:helpid="26155" menu:label="Ch~art..."/>
+ <menu:menuitem menu:id="slot:5563" menu:helpid="5563" menu:label="Float~ing Frame"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5780" menu:label="F~ormat">
+ <menu:menupopup/>
+ </menu:menu>
+ <menu:menu menu:id="slot:6677" menu:label="~Tools">
+ <menu:menupopup>
+ <menu:menu menu:id="slot:31" menu:label="~Spellcheck">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10243" menu:helpid="10243" menu:label="~Check..."/>
+ <menu:menuitem menu:id="slot:12021" menu:helpid="12021" menu:label="~AutoSpellcheck"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10245" menu:helpid="10245" menu:label="~Thesaurus..."/>
+ <menu:menuitem menu:id="slot:26087" menu:helpid="26087" menu:label="~Hyphenation..."/>
+ <menu:menu menu:id="slot:15" menu:label="~Detective">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26456" menu:helpid="26456" menu:label="Trace ~Precedents"/>
+ <menu:menuitem menu:id="slot:26457" menu:helpid="26457" menu:label="~Remove Precedents"/>
+ <menu:menuitem menu:id="slot:26458" menu:helpid="26458" menu:label="~Trace Dependents"/>
+ <menu:menuitem menu:id="slot:26459" menu:helpid="26459" menu:label="Remove ~Dependents"/>
+ <menu:menuitem menu:id="slot:26461" menu:helpid="26461" menu:label="Remove ~All Traces"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26460" menu:helpid="26460" menu:label="Trace ~Error"/>
+ <menu:menuitem menu:id="slot:26469" menu:helpid="26469" menu:label="~Mark Invalid Data"/>
+ <menu:menuitem menu:id="slot:26470" menu:helpid="26470" menu:label="Refresh Tra~ces"/>
+ <menu:menuitem menu:id="slot:26471" menu:helpid="26471" menu:label="A~utoRefresh"/>
+ <menu:menuitem menu:id="slot:26462" menu:helpid="26462" menu:label="~Fill Mode"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10424" menu:helpid="10424" menu:label="~AutoCorrect..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26153" menu:helpid="26153" menu:label="~Goal Seek..."/>
+ <menu:menuitem menu:id="slot:26312" menu:helpid="26312" menu:label="Sc~enarios..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:16" menu:label="~Protect Document">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26306" menu:helpid="26306" menu:label="~Sheet..."/>
+ <menu:menuitem menu:id="slot:26307" menu:helpid="26307" menu:label="~Document..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:32" menu:label="Cell Co~ntents">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26304" menu:helpid="26304" menu:label="~Recalculate"/>
+ <menu:menuitem menu:id="slot:26303" menu:helpid="26303" menu:label="Auto~Calculate"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26319" menu:helpid="26319" menu:label="~AutoInput"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5960" menu:helpid="5960" menu:label="~Gallery"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10882" menu:helpid="10882" menu:label="~Data Sources..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="~Macros">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:6669" menu:helpid="6669" menu:label="Record Macro"/>
+ <menu:menuitem menu:id="slot:5959" menu:helpid="5959" menu:label="~Macro..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10958" menu:helpid="10958" menu:label="~XML Filter Settings..."/>
+ <menu:menuitem menu:id="slot:5904" menu:helpid="5904" menu:label="~Configure..."/>
+ <menu:menu menu:id="slot:4" menu:label="Scripting Add-ons">
+ <menu:menupopup>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteMenuBinding()" menu:label="Assign Script to ~Menu..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteKeyBinding" menu:label="Assign Script to ~Key..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEventBinding()" menu:label="Assign Script to ~Event..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEditDebug" menu:label="Edit/De~bug Scripts..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.RefreshAllScripts()" menu:label="~Refresh All Scripts"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:31630" menu:helpid="31630" menu:label="~Options..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:10" menu:label="~Data">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26320" menu:helpid="26320" menu:label="~Define Range..."/>
+ <menu:menuitem menu:id="slot:26321" menu:helpid="26321" menu:label="Select ~Range..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26322" menu:helpid="26322" menu:label="~Sort..."/>
+ <menu:menu menu:id="slot:11" menu:label="~Filter">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26325" menu:helpid="26325" menu:label="Auto~Filter"/>
+ <menu:menuitem menu:id="slot:26323" menu:helpid="26323" menu:label="~Standard Filter..."/>
+ <menu:menuitem menu:id="slot:26324" menu:helpid="26324" menu:label="~Advanced Filter..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26326" menu:helpid="26326" menu:label="~Remove Filter"/>
+ <menu:menuitem menu:id="slot:26341" menu:helpid="26341" menu:label="~Hide AutoFilter"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:26328" menu:helpid="26328" menu:label="Sub~totals..."/>
+ <menu:menuitem menu:id="slot:26625" menu:helpid="26625" menu:label="~Validity..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26154" menu:helpid="26154" menu:label="~Multiple Operations..."/>
+ <menu:menuitem menu:id="slot:26150" menu:helpid="26150" menu:label="~Consolidate..."/>
+ <menu:menu menu:id="slot:12" menu:label="~Outline">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26329" menu:helpid="26329" menu:label="~Hide Details"/>
+ <menu:menuitem menu:id="slot:26330" menu:helpid="26330" menu:label="~Show Details"/>
+ <menu:menuitem menu:id="slot:26331" menu:helpid="26331" menu:label="~Group..."/>
+ <menu:menuitem menu:id="slot:26332" menu:helpid="26332" menu:label="~Ungroup..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26333" menu:helpid="26333" menu:label="~AutoOutline"/>
+ <menu:menuitem menu:id="slot:10234" menu:helpid="10234" menu:label="~Remove"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:13" menu:label="Data~Pilot">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:26151" menu:helpid="26151" menu:label="~Start..."/>
+ <menu:menuitem menu:id="slot:26314" menu:helpid="26314" menu:label="~Refresh"/>
+ <menu:menuitem menu:id="slot:26315" menu:helpid="26315" menu:label="~Delete"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26643" menu:helpid="26643" menu:label="R~efresh Range"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5610" menu:label="~Window">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5620" menu:helpid="5620" menu:label="~New Window"/>
+ <menu:menuitem menu:id="slot:5621" menu:helpid="5621" menu:label="Close Window"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:26069" menu:helpid="26069" menu:label="~Split"/>
+ <menu:menuitem menu:id="slot:26070" menu:helpid="26070" menu:label="~Freeze"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5410" menu:label="~Help">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5401" menu:helpid="5401" menu:label="~Contents"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5962" menu:helpid="5962" menu:label="Help ~Agent"/>
+ <menu:menuitem menu:id="slot:5404" menu:helpid="5404" menu:label="~Tips"/>
+ <menu:menuitem menu:id="slot:5403" menu:helpid="5403" menu:label="~Extended Tips"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6683" menu:helpid="6683" menu:label="~Support"/>
+ <menu:menuitem menu:id="slot:6537" menu:helpid="6537" menu:label="~Registration..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5301" menu:helpid="5301" menu:label="A~bout OpenOffice.org..."/>
+ </menu:menupopup>
+ </menu:menu>
+</menu:menubar>
diff --git a/scripting/workben/bindings/dialog.xlb b/scripting/workben/bindings/dialog.xlb
new file mode 100755
index 000000000000..1445c98b8cab
--- /dev/null
+++ b/scripting/workben/bindings/dialog.xlb
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="ScriptBindingLibrary" library:readonly="false" library:passwordprotected="false">
+ <library:element library:name="Highlight"/>
+ <library:element library:name="MacroEditor"/>
+</library:library>
diff --git a/scripting/workben/bindings/drawkeybinding.xml b/scripting/workben/bindings/drawkeybinding.xml
new file mode 100755
index 000000000000..e7d0bbf73176
--- /dev/null
+++ b/scripting/workben/bindings/drawkeybinding.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE accel:acceleratorlist PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "accelerator.dtd">
+<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href="slot:10367"/>
+ <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href="slot:10294"/>
+ <accel:item accel:code="KEY_N" accel:shift="true" accel:mod1="true" xlink:href="slot:5500"/>
+ <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href="slot:27026"/>
+ <accel:item accel:code="KEY_G" accel:shift="true" accel:mod1="true" xlink:href="slot:10454"/>
+ <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href="slot:10295"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href="slot:27032"/>
+ <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href="slot:27031"/>
+ <accel:item accel:code="KEY_INSERT" accel:mod1="true" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href="slot:5573"/>
+ <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href="slot:10245"/>
+ <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href="slot:27097"/>
+ <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href="slot:5700"/>
+ <accel:item accel:code="KEY_X" accel:mod1="true" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_V" accel:mod1="true" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href="slot:10014"/>
+ <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href="slot:5505"/>
+ <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href="slot:10029"/>
+ <accel:item accel:code="KEY_Q" accel:mod1="true" xlink:href="slot:5300"/>
+ <accel:item accel:code="KEY_P" accel:mod1="true" xlink:href="slot:5504"/>
+ <accel:item accel:code="KEY_O" accel:mod1="true" xlink:href="slot:5501"/>
+ <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href="slot:10028"/>
+ <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href="slot:10031"/>
+ <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href="slot:10008"/>
+ <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href="slot:10030"/>
+ <accel:item accel:code="KEY_C" accel:mod1="true" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href="slot:10009"/>
+ <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href="slot:10035"/>
+ <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href="slot:10036"/>
+ <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href="slot:10034"/>
+ <accel:item accel:code="KEY_DELETE" accel:shift="true" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_INSERT" accel:shift="true" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href="slot:27004"/>
+ <accel:item accel:code="KEY_REPEAT" xlink:href="slot:5702"/>
+ <accel:item accel:code="KEY_UNDO" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_PASTE" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_COPY" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_CUT" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_OPEN" xlink:href="slot:5501"/>
+ <accel:item accel:code="KEY_DELETE" xlink:href="slot:5713"/>
+ <accel:item accel:code="KEY_F11" xlink:href="slot:5539"/>
+ <accel:item accel:code="KEY_F8" xlink:href="slot:10126"/>
+ <accel:item accel:code="KEY_F7" xlink:href="slot:10243"/>
+ <accel:item accel:code="KEY_F5" xlink:href="slot:10366"/>
+ <accel:item accel:code="KEY_F4" xlink:href="slot:10087"/>
+ <accel:item accel:code="KEY_F3" xlink:href="slot:27096"/>
+ <accel:item accel:code="KEY_F2" xlink:href="slot:10006"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_ADD" accel:shift="true" accel:mod1="true" xlink:href="slot:10286"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href="slot:10287"/>
+ <accel:item accel:code="KEY_G" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:10455"/>
+ <accel:item accel:code="KEY_9" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:10703"/>
+ <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:27082"/>
+</accel:acceleratorlist> \ No newline at end of file
diff --git a/scripting/workben/bindings/drawmenubar.xml b/scripting/workben/bindings/drawmenubar.xml
new file mode 100755
index 000000000000..2fbfe5416428
--- /dev/null
+++ b/scripting/workben/bindings/drawmenubar.xml
@@ -0,0 +1,353 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menu:menubar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "menubar.dtd">
+<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
+ <menu:menu menu:id="slot:5510" menu:label="~File">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5537" menu:helpid="5537" menu:label="~New"/>
+ <menu:menuitem menu:id="slot:5501" menu:helpid="5501" menu:label="~Open..."/>
+ <menu:menuitem menu:id="slot:6381" menu:helpid="6381" menu:label="A~utoPilot"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5503" menu:helpid="5503" menu:label="~Close"/>
+ <menu:menuitem menu:id="slot:5505" menu:helpid="5505" menu:label="~Save"/>
+ <menu:menuitem menu:id="slot:5502" menu:helpid="5502" menu:label="Save ~As..."/>
+ <menu:menuitem menu:id="slot:5309" menu:helpid="5309" menu:label="Sa~ve All"/>
+ <menu:menuitem menu:id="slot:5508" menu:helpid="5508" menu:label="Reload"/>
+ <menu:menuitem menu:id="slot:6583" menu:helpid="6583" menu:label="Versions..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5829" menu:helpid="5829" menu:label="~Export..."/>
+ <menu:menuitem menu:id="slot:6673" menu:helpid="6673" menu:label="Export as PDF..."/>
+ <menu:menu menu:id="slot:98" menu:label="Sen~d">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5331" menu:helpid="5331" menu:label="Document as ~E-mail..."/>
+ <menu:menuitem menu:id="slot:6672" menu:helpid="6672" menu:label="Document as P~DF Attachment..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5535" menu:helpid="5535" menu:label="Propert~ies..."/>
+ <menu:menu menu:id="slot:103" menu:label="~Templates">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5540" menu:helpid="5540" menu:label="~Organize..."/>
+ <menu:menuitem menu:id="slot:6655" menu:helpid="6655" menu:label="~Address Book Source..."/>
+ <menu:menuitem menu:id="slot:5538" menu:helpid="5538" menu:label="~Save..."/>
+ <menu:menuitem menu:id="slot:5594" menu:helpid="5594" menu:label="~Edit..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5504" menu:helpid="5504" menu:label="~Print..."/>
+ <menu:menuitem menu:id="slot:5302" menu:helpid="5302" menu:label="P~rinter Settings..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5300" menu:helpid="5300" menu:label="E~xit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:20" menu:label="~Edit">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5701" menu:helpid="5701" menu:label="Can&apos;t Undo"/>
+ <menu:menuitem menu:id="slot:5700" menu:helpid="5700" menu:label="Can&apos;t Restore"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5710" menu:helpid="5710" menu:label="Cu~t"/>
+ <menu:menuitem menu:id="slot:5711" menu:helpid="5711" menu:label="~Copy"/>
+ <menu:menuitem menu:id="slot:5712" menu:helpid="5712" menu:label="~Paste"/>
+ <menu:menuitem menu:id="slot:27003" menu:helpid="27003" menu:label="Paste ~Special..."/>
+ <menu:menuitem menu:id="slot:5723" menu:helpid="5723" menu:label="Select ~All"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5961" menu:helpid="5961" menu:label="~Find &amp; Replace..."/>
+ <menu:menuitem menu:id="slot:10366" menu:helpid="10366" menu:label="Na~vigator"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27004" menu:helpid="27004" menu:label="Duplicat~e..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10126" menu:helpid="10126" menu:label="Poi~nts"/>
+ <menu:menuitem menu:id="slot:27301" menu:helpid="27301" menu:label="~Glue Points"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27319" menu:helpid="27319" menu:label="Cross-fading..."/>
+ <menu:menuitem menu:id="slot:27362" menu:helpid="27362" menu:label="F~ields..."/>
+ <menu:menuitem menu:id="slot:27080" menu:helpid="27080" menu:label="D~elete Slide..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:340" menu:label="La~yer">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27043" menu:helpid="27043" menu:label="~Insert"/>
+ <menu:menuitem menu:id="slot:27048" menu:helpid="27048" menu:label="~Modify"/>
+ <menu:menuitem menu:id="slot:27081" menu:helpid="27081" menu:label="Delete"/>
+ <menu:menuitem menu:id="slot:27269" menu:helpid="27269" menu:label="~Rename"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27005" menu:helpid="27005" menu:label="Lin~ks..."/>
+ <menu:menuitem menu:id="slot:6314" menu:helpid="6314" menu:label="P~lug-in"/>
+ <menu:menuitem menu:id="slot:10371" menu:helpid="10371" menu:label="ImageMap"/>
+ <menu:menuitem menu:id="slot:5575" menu:helpid="5575" menu:label="~Object"/>
+ <menu:menuitem menu:id="slot:27382" menu:helpid="27382" menu:label="H~yperlink..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:23" menu:label="~View">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10000" menu:helpid="10000" menu:label="~Zoom..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:92" menu:label="~Toolbars">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5910" menu:helpid="5910" menu:label="~Function Bar"/>
+ <menu:menuitem menu:id="slot:5905" menu:helpid="5905" menu:label="~Object Bar"/>
+ <menu:menuitem menu:id="slot:5909" menu:helpid="5909" menu:label="Main ~Toolbar"/>
+ <menu:menuitem menu:id="slot:5911" menu:helpid="5911" menu:label="Optio~n Bar"/>
+ <menu:menuitem menu:id="slot:10417" menu:helpid="10417" menu:label="~Color Bar"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5908" menu:helpid="5908" menu:label="Customi~ze..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27040" menu:helpid="27040" menu:label="~Rulers"/>
+ <menu:menuitem menu:id="slot:5920" menu:helpid="5920" menu:label="~Status Bar"/>
+ <menu:menuitem menu:id="slot:6680" menu:helpid="6680" menu:label="~Input Method Status"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:100" menu:label="~Display Quality">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27366" menu:helpid="27366" menu:label="~Color"/>
+ <menu:menuitem menu:id="slot:27367" menu:helpid="27367" menu:label="~Grayscale"/>
+ <menu:menuitem menu:id="slot:27368" menu:helpid="27368" menu:label="~Black and White"/>
+ <menu:menuitem menu:id="slot:27400" menu:helpid="27400" menu:label="~High Contrast"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27327" menu:helpid="27327" menu:label="~Preview"/>
+ <menu:menu menu:id="slot:101" menu:label="Pre~view Mode">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27369" menu:helpid="27369" menu:label="~Color"/>
+ <menu:menuitem menu:id="slot:27370" menu:helpid="27370" menu:label="~Grayscale"/>
+ <menu:menuitem menu:id="slot:27371" menu:helpid="27371" menu:label="~Black and White"/>
+ <menu:menuitem menu:id="slot:27401" menu:helpid="27401" menu:label="~High Contrast"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27049" menu:helpid="27049" menu:label="S~lide"/>
+ <menu:menuitem menu:id="slot:27050" menu:helpid="27050" menu:label="La~yer"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:338" menu:label="~Grid">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27322" menu:helpid="27322" menu:label="~Visible Grid"/>
+ <menu:menuitem menu:id="slot:27154" menu:helpid="27154" menu:label="Snap to Grid"/>
+ <menu:menuitem menu:id="slot:27323" menu:helpid="27323" menu:label="Grid to ~Front"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:339" menu:label="~Snap Lines">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27324" menu:helpid="27324" menu:label="~Snap Lines Visible"/>
+ <menu:menuitem menu:id="slot:27152" menu:helpid="27152" menu:label="Snap to Snap Lines"/>
+ <menu:menuitem menu:id="slot:27325" menu:helpid="27325" menu:label="Snap Lines to Front"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5627" menu:helpid="5627" menu:label="F~ull Screen"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:21" menu:label="~Insert">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27014" menu:helpid="27014" menu:label="Slid~e"/>
+ <menu:menuitem menu:id="slot:27342" menu:helpid="27342" menu:label="D~uplicate Slide"/>
+ <menu:menuitem menu:id="slot:27043" menu:helpid="27043" menu:label="~Layer..."/>
+ <menu:menuitem menu:id="slot:27038" menu:helpid="27038" menu:label="~Insert Snap Point/Line..."/>
+ <menu:menu menu:id="slot:99" menu:label="Fiel~ds">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27358" menu:helpid="27358" menu:label="~Date (fixed)"/>
+ <menu:menuitem menu:id="slot:27357" menu:helpid="27357" menu:label="Dat~e (variable)"/>
+ <menu:menuitem menu:id="slot:27360" menu:helpid="27360" menu:label="~Time (fixed)"/>
+ <menu:menuitem menu:id="slot:27359" menu:helpid="27359" menu:label="T~ime (variable)"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27364" menu:helpid="27364" menu:label="~Author"/>
+ <menu:menuitem menu:id="slot:27361" menu:helpid="27361" menu:label="~Page Number"/>
+ <menu:menuitem menu:id="slot:27363" menu:helpid="27363" menu:label="~File Name"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27019" menu:helpid="27019" menu:label="S~pecial Character..."/>
+ <menu:menuitem menu:id="slot:5678" menu:helpid="5678" menu:label="~Hyperlink"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10331" menu:helpid="10331" menu:label="~Select Source..."/>
+ <menu:menuitem menu:id="slot:10332" menu:helpid="10332" menu:label="~Request..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10217" menu:helpid="10217" menu:label="Sp~readsheet"/>
+ <menu:menuitem menu:id="slot:10241" menu:helpid="10241" menu:label="~Graphics..."/>
+ <menu:menu menu:id="slot:2" menu:label="~Object">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5561" menu:helpid="5561" menu:label="~OLE Object..."/>
+ <menu:menuitem menu:id="slot:5672" menu:helpid="5672" menu:label="~Plug-in..."/>
+ <menu:menuitem menu:id="slot:5676" menu:helpid="5676" menu:label="~Sound..."/>
+ <menu:menuitem menu:id="slot:5677" menu:helpid="5677" menu:label="~Video..."/>
+ <menu:menuitem menu:id="slot:5673" menu:helpid="5673" menu:label="~Applet..."/>
+ <menu:menuitem menu:id="slot:27106" menu:helpid="27106" menu:label="~Formula..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10140" menu:helpid="10140" menu:label="Chart"/>
+ <menu:menuitem menu:id="slot:5563" menu:helpid="5563" menu:label="Float~ing Frame..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27015" menu:helpid="27015" menu:label="~File..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:22" menu:label="F~ormat">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10456" menu:helpid="10456" menu:label="~Default"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10143" menu:helpid="10143" menu:label="L~ine..."/>
+ <menu:menuitem menu:id="slot:10142" menu:helpid="10142" menu:label="A~rea..."/>
+ <menu:menuitem menu:id="slot:27281" menu:helpid="27281" menu:label="Te~xt..."/>
+ <menu:menuitem menu:id="slot:10087" menu:helpid="10087" menu:label="Position and Si~ze..."/>
+ <menu:menuitem menu:id="slot:10613" menu:helpid="10613" menu:label="Con~trol..."/>
+ <menu:menuitem menu:id="slot:10614" menu:helpid="10614" menu:label="For~m..."/>
+ <menu:menuitem menu:id="slot:27320" menu:helpid="27320" menu:label="Dimen~sions..."/>
+ <menu:menuitem menu:id="slot:27338" menu:helpid="27338" menu:label="~Connector..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10296" menu:helpid="10296" menu:label="C~haracter..."/>
+ <menu:menuitem menu:id="slot:10156" menu:helpid="10156" menu:label="~Numbering/Bullets..."/>
+ <menu:menu menu:id="slot:1" menu:label="Case/Characters">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10912" menu:helpid="10912" menu:label="~Uppercase"/>
+ <menu:menuitem menu:id="slot:10913" menu:helpid="10913" menu:label="~Lowercase"/>
+ <menu:menuitem menu:id="slot:10914" menu:helpid="10914" menu:label="H~alf-width"/>
+ <menu:menuitem menu:id="slot:10915" menu:helpid="10915" menu:label="Full-width"/>
+ <menu:menuitem menu:id="slot:10916" menu:helpid="10916" menu:label="~Hiragana"/>
+ <menu:menuitem menu:id="slot:10917" menu:helpid="10917" menu:label="~Katakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10297" menu:helpid="10297" menu:label="P~aragraph..."/>
+ <menu:menuitem menu:id="slot:27002" menu:helpid="27002" menu:label="~Page..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27048" menu:helpid="27048" menu:label="~Layer..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:95" menu:label="Styl~es">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5573" menu:helpid="5573" menu:label="~Catalog..."/>
+ <menu:menuitem menu:id="slot:27064" menu:helpid="27064" menu:label="~Slide Design..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5539" menu:helpid="5539" menu:label="St~ylist"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10256" menu:helpid="10256" menu:label="F~ontwork"/>
+ <menu:menuitem menu:id="slot:10644" menu:helpid="10644" menu:label="~3D Effects"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:6677" menu:label="~Tools">
+ <menu:menupopup>
+ <menu:menu menu:id="slot:94" menu:label="~Spellcheck">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10243" menu:helpid="10243" menu:label="~Check..."/>
+ <menu:menuitem menu:id="slot:12021" menu:helpid="12021" menu:label="~AutoSpellcheck"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10245" menu:helpid="10245" menu:label="~Thesaurus..."/>
+ <menu:menuitem menu:id="slot:27340" menu:helpid="27340" menu:label="~Hyphenation"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10424" menu:helpid="10424" menu:label="~AutoCorrect..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5960" menu:helpid="5960" menu:label="~Gallery"/>
+ <menu:menuitem menu:id="slot:10350" menu:helpid="10350" menu:label="~Eyedropper"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="~Macros">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:6669" menu:helpid="6669" menu:label="Record Macro"/>
+ <menu:menuitem menu:id="slot:5959" menu:helpid="5959" menu:label="~Macro..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10958" menu:helpid="10958" menu:label="~XML Filter Settings..."/>
+ <menu:menuitem menu:id="slot:5904" menu:helpid="5904" menu:label="~Configure..."/>
+ <menu:menu menu:id="slot:4" menu:label="Scripting Add-ons">
+ <menu:menupopup>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteMenuBinding()" menu:label="Assign Script to ~Menu..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteKeyBinding" menu:label="Assign Script to ~Key..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEventBinding()" menu:label="Assign Script to ~Event..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEditDebug" menu:label="Edit/De~bug Scripts..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.RefreshAllScripts()" menu:label="~Refresh All Scripts"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:31630" menu:helpid="31630" menu:label="~Options..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:24" menu:label="~Modify">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10129" menu:helpid="10129" menu:label="~Rotate"/>
+ <menu:menu menu:id="slot:1" menu:label="~Flip">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27034" menu:helpid="27034" menu:label="~Vertically"/>
+ <menu:menuitem menu:id="slot:27035" menu:helpid="27035" menu:label="~Horizontally"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:2" menu:label="~Convert">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27036" menu:helpid="27036" menu:label="To ~Curve"/>
+ <menu:menuitem menu:id="slot:27037" menu:helpid="27037" menu:label="To ~Polygon"/>
+ <menu:menuitem menu:id="slot:27381" menu:helpid="27381" menu:label="To C~ontour"/>
+ <menu:menuitem menu:id="slot:10648" menu:helpid="10648" menu:label="To 3~D"/>
+ <menu:menuitem menu:id="slot:10649" menu:helpid="10649" menu:label="To 3D ~Rotation Object"/>
+ <menu:menuitem menu:id="slot:27378" menu:helpid="27378" menu:label="To ~Bitmap"/>
+ <menu:menuitem menu:id="slot:27379" menu:helpid="27379" menu:label="To ~Metafile"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:96" menu:label="~Arrange">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10286" menu:helpid="10286" menu:label="~Bring to Front"/>
+ <menu:menuitem menu:id="slot:27031" menu:helpid="27031" menu:label="Bring ~Forward"/>
+ <menu:menuitem menu:id="slot:27032" menu:helpid="27032" menu:label="Send Back~ward"/>
+ <menu:menuitem menu:id="slot:10287" menu:helpid="10287" menu:label="~Send to Back"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27326" menu:helpid="27326" menu:label="In Front of ~Object"/>
+ <menu:menuitem menu:id="slot:27116" menu:helpid="27116" menu:label="Be~hind Object"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27117" menu:helpid="27117" menu:label="~Reverse"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:3" menu:label="A~lignment">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10131" menu:helpid="10131" menu:label="~Left"/>
+ <menu:menuitem menu:id="slot:10132" menu:helpid="10132" menu:label="~Centered"/>
+ <menu:menuitem menu:id="slot:10133" menu:helpid="10133" menu:label="~Right"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10134" menu:helpid="10134" menu:label="~Top"/>
+ <menu:menuitem menu:id="slot:10135" menu:helpid="10135" menu:label="C~enter"/>
+ <menu:menuitem menu:id="slot:10136" menu:helpid="10136" menu:label="~Bottom"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5683" menu:helpid="5683" menu:label="~Distribution..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27027" menu:helpid="27027" menu:label="~Name Object..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10454" menu:helpid="10454" menu:label="~Group"/>
+ <menu:menuitem menu:id="slot:10455" menu:helpid="10455" menu:label="~Ungroup"/>
+ <menu:menuitem menu:id="slot:27096" menu:helpid="27096" menu:label="~Enter Group"/>
+ <menu:menuitem menu:id="slot:27097" menu:helpid="27097" menu:label="E~xit Group"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27026" menu:helpid="27026" menu:label="Comb~ine"/>
+ <menu:menuitem menu:id="slot:27082" menu:helpid="27082" menu:label="~Split"/>
+ <menu:menu menu:id="slot:4" menu:label="~Shapes">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5679" menu:helpid="5679" menu:label="~Merge"/>
+ <menu:menuitem menu:id="slot:5680" menu:helpid="5680" menu:label="~Subtract"/>
+ <menu:menuitem menu:id="slot:5681" menu:helpid="5681" menu:label="I~ntersect"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27093" menu:helpid="27093" menu:label="C~onnect"/>
+ <menu:menuitem menu:id="slot:27094" menu:helpid="27094" menu:label="~Break"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5610" menu:label="~Window">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5620" menu:helpid="5620" menu:label="~New Window"/>
+ <menu:menuitem menu:id="slot:5621" menu:helpid="5621" menu:label="Close Window"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5410" menu:label="~Help">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5401" menu:helpid="5401" menu:label="~Contents"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5962" menu:helpid="5962" menu:label="Help ~Agent"/>
+ <menu:menuitem menu:id="slot:5404" menu:helpid="5404" menu:label="~Tips"/>
+ <menu:menuitem menu:id="slot:5403" menu:helpid="5403" menu:label="~Extended Tips"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6683" menu:helpid="6683" menu:label="~Support"/>
+ <menu:menuitem menu:id="slot:6537" menu:helpid="6537" menu:label="~Registration..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5301" menu:helpid="5301" menu:label="A~bout OpenOffice.org..."/>
+ </menu:menupopup>
+ </menu:menu>
+</menu:menubar>
diff --git a/scripting/workben/bindings/eventbindings.xml b/scripting/workben/bindings/eventbindings.xml
new file mode 100755
index 000000000000..96a5ddfeaa5c
--- /dev/null
+++ b/scripting/workben/bindings/eventbindings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE event:events PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "event.dtd">
+<event:events xmlns:event="http://openoffice.org/2001/event" xmlns:xlink="http://www.w3.org/1999/xlink">
+</event:events>
diff --git a/scripting/workben/bindings/impresskeybinding.xml b/scripting/workben/bindings/impresskeybinding.xml
new file mode 100755
index 000000000000..25430801fc77
--- /dev/null
+++ b/scripting/workben/bindings/impresskeybinding.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE accel:acceleratorlist PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "accelerator.dtd">
+<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <accel:item accel:code="KEY_F8" accel:shift="true" accel:mod1="true" xlink:href="slot:10367"/>
+ <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href="slot:10294"/>
+ <accel:item accel:code="KEY_N" accel:shift="true" accel:mod1="true" xlink:href="slot:5500"/>
+ <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" xlink:href="slot:27026"/>
+ <accel:item accel:code="KEY_G" accel:shift="true" accel:mod1="true" xlink:href="slot:10454"/>
+ <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href="slot:10295"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href="slot:27032"/>
+ <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href="slot:27031"/>
+ <accel:item accel:code="KEY_INSERT" accel:mod1="true" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href="slot:27009"/>
+ <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href="slot:5573"/>
+ <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href="slot:10245"/>
+ <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href="slot:27097"/>
+ <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href="slot:10157"/>
+ <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href="slot:5700"/>
+ <accel:item accel:code="KEY_X" accel:mod1="true" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_V" accel:mod1="true" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href="slot:10014"/>
+ <accel:item accel:code="KEY_S" accel:mod1="true" xlink:href="slot:5505"/>
+ <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href="slot:10029"/>
+ <accel:item accel:code="KEY_Q" accel:mod1="true" xlink:href="slot:5300"/>
+ <accel:item accel:code="KEY_P" accel:mod1="true" xlink:href="slot:5504"/>
+ <accel:item accel:code="KEY_O" accel:mod1="true" xlink:href="slot:5501"/>
+ <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href="slot:10028"/>
+ <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href="slot:10031"/>
+ <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href="slot:10008"/>
+ <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href="slot:10030"/>
+ <accel:item accel:code="KEY_C" accel:mod1="true" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href="slot:10009"/>
+ <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href="slot:10035"/>
+ <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href="slot:10036"/>
+ <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href="slot:10034"/>
+ <accel:item accel:code="KEY_DELETE" accel:shift="true" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_INSERT" accel:shift="true" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_F3" accel:shift="true" xlink:href="slot:27004"/>
+ <accel:item accel:code="KEY_REPEAT" xlink:href="slot:5702"/>
+ <accel:item accel:code="KEY_UNDO" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_PASTE" xlink:href="slot:5712"/>
+ <accel:item accel:code="KEY_COPY" xlink:href="slot:5711"/>
+ <accel:item accel:code="KEY_CUT" xlink:href="slot:5710"/>
+ <accel:item accel:code="KEY_OPEN" xlink:href="slot:5501"/>
+ <accel:item accel:code="KEY_DELETE" xlink:href="slot:5713"/>
+ <accel:item accel:code="KEY_F12" xlink:href="slot:27010"/>
+ <accel:item accel:code="KEY_F11" xlink:href="slot:5539"/>
+ <accel:item accel:code="KEY_F9" xlink:href="slot:10157"/>
+ <accel:item accel:code="KEY_F8" xlink:href="slot:10126"/>
+ <accel:item accel:code="KEY_F7" xlink:href="slot:10243"/>
+ <accel:item accel:code="KEY_F5" xlink:href="slot:10366"/>
+ <accel:item accel:code="KEY_F4" xlink:href="slot:10087"/>
+ <accel:item accel:code="KEY_F3" xlink:href="slot:27096"/>
+ <accel:item accel:code="KEY_F2" xlink:href="slot:10006"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_ADD" accel:shift="true" accel:mod1="true" xlink:href="slot:10286"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href="slot:10287"/>
+ <accel:item accel:code="KEY_G" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:10455"/>
+ <accel:item accel:code="KEY_9" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:10703"/>
+ <accel:item accel:code="KEY_K" accel:shift="true" accel:mod1="true" accel:mod2="true" xlink:href="slot:27082"/>
+</accel:acceleratorlist> \ No newline at end of file
diff --git a/scripting/workben/bindings/impressmenubar.xml b/scripting/workben/bindings/impressmenubar.xml
new file mode 100755
index 000000000000..627fd168159c
--- /dev/null
+++ b/scripting/workben/bindings/impressmenubar.xml
@@ -0,0 +1,327 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menu:menubar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "menubar.dtd">
+<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
+ <menu:menu menu:id="slot:5510" menu:label="~File">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5537" menu:helpid="5537" menu:label="~New"/>
+ <menu:menuitem menu:id="slot:5501" menu:helpid="5501" menu:label="~Open..."/>
+ <menu:menuitem menu:id="slot:6381" menu:helpid="6381" menu:label="A~utoPilot"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5503" menu:helpid="5503" menu:label="~Close"/>
+ <menu:menuitem menu:id="slot:5505" menu:helpid="5505" menu:label="~Save"/>
+ <menu:menuitem menu:id="slot:5502" menu:helpid="5502" menu:label="Save ~As..."/>
+ <menu:menuitem menu:id="slot:5309" menu:helpid="5309" menu:label="Sa~ve All"/>
+ <menu:menuitem menu:id="slot:5508" menu:helpid="5508" menu:label="Reload"/>
+ <menu:menuitem menu:id="slot:6583" menu:helpid="6583" menu:label="Versions..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5829" menu:helpid="5829" menu:label="~Export..."/>
+ <menu:menuitem menu:id="slot:6673" menu:helpid="6673" menu:label="Export as PDF..."/>
+ <menu:menu menu:id="slot:98" menu:label="Sen~d">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5331" menu:helpid="5331" menu:label="Document as ~E-mail..."/>
+ <menu:menuitem menu:id="slot:6672" menu:helpid="6672" menu:label="Document as P~DF Attachment..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5535" menu:helpid="5535" menu:label="Propert~ies..."/>
+ <menu:menu menu:id="slot:103" menu:label="~Templates">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5540" menu:helpid="5540" menu:label="~Organize..."/>
+ <menu:menuitem menu:id="slot:6655" menu:helpid="6655" menu:label="~Address Book Source..."/>
+ <menu:menuitem menu:id="slot:5538" menu:helpid="5538" menu:label="~Save..."/>
+ <menu:menuitem menu:id="slot:5594" menu:helpid="5594" menu:label="~Edit..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5504" menu:helpid="5504" menu:label="~Print..."/>
+ <menu:menuitem menu:id="slot:5302" menu:helpid="5302" menu:label="P~rinter Settings..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5300" menu:helpid="5300" menu:label="E~xit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:20" menu:label="~Edit">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5701" menu:helpid="5701" menu:label="Can&apos;t Undo"/>
+ <menu:menuitem menu:id="slot:5700" menu:helpid="5700" menu:label="Can&apos;t Restore"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5710" menu:helpid="5710" menu:label="Cu~t"/>
+ <menu:menuitem menu:id="slot:5711" menu:helpid="5711" menu:label="~Copy"/>
+ <menu:menuitem menu:id="slot:5712" menu:helpid="5712" menu:label="~Paste"/>
+ <menu:menuitem menu:id="slot:27003" menu:helpid="27003" menu:label="Paste ~Special..."/>
+ <menu:menuitem menu:id="slot:5723" menu:helpid="5723" menu:label="Select ~All"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5961" menu:helpid="5961" menu:label="~Find &amp; Replace..."/>
+ <menu:menuitem menu:id="slot:10366" menu:helpid="10366" menu:label="Na~vigator"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27004" menu:helpid="27004" menu:label="Duplicat~e..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10126" menu:helpid="10126" menu:label="Poi~nts"/>
+ <menu:menuitem menu:id="slot:27301" menu:helpid="27301" menu:label="~Glue Points"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27362" menu:helpid="27362" menu:label="F~ields..."/>
+ <menu:menuitem menu:id="slot:27080" menu:helpid="27080" menu:label="D~elete Slide..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:340" menu:label="La~yer">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27043" menu:helpid="27043" menu:label="~Insert"/>
+ <menu:menuitem menu:id="slot:27048" menu:helpid="27048" menu:label="~Modify"/>
+ <menu:menuitem menu:id="slot:27081" menu:helpid="27081" menu:label="Delete"/>
+ <menu:menuitem menu:id="slot:27269" menu:helpid="27269" menu:label="~Rename"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27005" menu:helpid="27005" menu:label="Lin~ks..."/>
+ <menu:menuitem menu:id="slot:6314" menu:helpid="6314" menu:label="P~lug-in"/>
+ <menu:menuitem menu:id="slot:10371" menu:helpid="10371" menu:label="ImageMap"/>
+ <menu:menuitem menu:id="slot:5575" menu:helpid="5575" menu:label="~Object"/>
+ <menu:menuitem menu:id="slot:27382" menu:helpid="27382" menu:label="H~yperlink..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:23" menu:label="~View">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10000" menu:helpid="10000" menu:label="~Zoom..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:92" menu:label="~Toolbars">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5910" menu:helpid="5910" menu:label="~Function Bar"/>
+ <menu:menuitem menu:id="slot:5905" menu:helpid="5905" menu:label="~Object Bar"/>
+ <menu:menuitem menu:id="slot:5909" menu:helpid="5909" menu:label="Main ~Toolbar"/>
+ <menu:menuitem menu:id="slot:5911" menu:helpid="5911" menu:label="Optio~n Bar"/>
+ <menu:menuitem menu:id="slot:5928" menu:helpid="5928" menu:label="~Presentation"/>
+ <menu:menuitem menu:id="slot:10417" menu:helpid="10417" menu:label="~Color Bar"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5908" menu:helpid="5908" menu:label="Customi~ze..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27040" menu:helpid="27040" menu:label="~Rulers"/>
+ <menu:menuitem menu:id="slot:5920" menu:helpid="5920" menu:label="~Status Bar"/>
+ <menu:menuitem menu:id="slot:6680" menu:helpid="6680" menu:label="~Input Method Status"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:91" menu:label="Wor~kspace">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27009" menu:helpid="27009" menu:label="~Drawing View"/>
+ <menu:menuitem menu:id="slot:27010" menu:helpid="27010" menu:label="~Outline View"/>
+ <menu:menuitem menu:id="slot:27011" menu:helpid="27011" menu:label="~Slides View"/>
+ <menu:menuitem menu:id="slot:27069" menu:helpid="27069" menu:label="~Notes View"/>
+ <menu:menuitem menu:id="slot:27070" menu:helpid="27070" menu:label="~Handout View"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:100" menu:label="~Display Quality">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27366" menu:helpid="27366" menu:label="~Color"/>
+ <menu:menuitem menu:id="slot:27367" menu:helpid="27367" menu:label="~Grayscale"/>
+ <menu:menuitem menu:id="slot:27368" menu:helpid="27368" menu:label="~Black and White"/>
+ <menu:menuitem menu:id="slot:27400" menu:helpid="27400" menu:label="~High Contrast"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27327" menu:helpid="27327" menu:label="~Preview"/>
+ <menu:menu menu:id="slot:101" menu:label="Pre~view Mode">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27369" menu:helpid="27369" menu:label="~Color"/>
+ <menu:menuitem menu:id="slot:27370" menu:helpid="27370" menu:label="~Grayscale"/>
+ <menu:menuitem menu:id="slot:27371" menu:helpid="27371" menu:label="~Black and White"/>
+ <menu:menuitem menu:id="slot:27401" menu:helpid="27401" menu:label="~High Contrast"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27049" menu:helpid="27049" menu:label="S~lide"/>
+ <menu:menu menu:id="slot:97" menu:label="~Master">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27348" menu:helpid="27348" menu:label="~Drawing"/>
+ <menu:menuitem menu:id="slot:27351" menu:helpid="27351" menu:label="~Title"/>
+ <menu:menuitem menu:id="slot:27350" menu:helpid="27350" menu:label="~Notes"/>
+ <menu:menuitem menu:id="slot:27349" menu:helpid="27349" menu:label="~Handout"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27050" menu:helpid="27050" menu:label="La~yer"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:338" menu:label="~Grid">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27322" menu:helpid="27322" menu:label="~Visible Grid"/>
+ <menu:menuitem menu:id="slot:27154" menu:helpid="27154" menu:label="Snap to Grid"/>
+ <menu:menuitem menu:id="slot:27323" menu:helpid="27323" menu:label="Grid to ~Front"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:339" menu:label="~Snap Lines">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27324" menu:helpid="27324" menu:label="~Snap Lines Visible"/>
+ <menu:menuitem menu:id="slot:27152" menu:helpid="27152" menu:label="Snap to Snap Lines"/>
+ <menu:menuitem menu:id="slot:27325" menu:helpid="27325" menu:label="Snap Lines to Front"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5627" menu:helpid="5627" menu:label="F~ull Screen"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:21" menu:label="~Insert">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27014" menu:helpid="27014" menu:label="Slid~e..."/>
+ <menu:menuitem menu:id="slot:27342" menu:helpid="27342" menu:label="D~uplicate Slide"/>
+ <menu:menuitem menu:id="slot:27343" menu:helpid="27343" menu:label="E~xpand Slide"/>
+ <menu:menuitem menu:id="slot:27344" menu:helpid="27344" menu:label="Su~mmary Slide"/>
+ <menu:menu menu:id="slot:99" menu:label="Fiel~ds">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:27358" menu:helpid="27358" menu:label="~Date (fixed)"/>
+ <menu:menuitem menu:id="slot:27357" menu:helpid="27357" menu:label="Dat~e (variable)"/>
+ <menu:menuitem menu:id="slot:27360" menu:helpid="27360" menu:label="~Time (fixed)"/>
+ <menu:menuitem menu:id="slot:27359" menu:helpid="27359" menu:label="T~ime (variable)"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27364" menu:helpid="27364" menu:label="~Author"/>
+ <menu:menuitem menu:id="slot:27361" menu:helpid="27361" menu:label="~Page Number"/>
+ <menu:menuitem menu:id="slot:27363" menu:helpid="27363" menu:label="~File Name"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:27019" menu:helpid="27019" menu:label="S~pecial Character..."/>
+ <menu:menuitem menu:id="slot:5678" menu:helpid="5678" menu:label="~Hyperlink"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10331" menu:helpid="10331" menu:label="~Select Source..."/>
+ <menu:menuitem menu:id="slot:10332" menu:helpid="10332" menu:label="~Request..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10217" menu:helpid="10217" menu:label="Sp~readsheet"/>
+ <menu:menuitem menu:id="slot:10241" menu:helpid="10241" menu:label="~Graphics..."/>
+ <menu:menu menu:id="slot:2" menu:label="~Object">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5561" menu:helpid="5561" menu:label="~OLE Object..."/>
+ <menu:menuitem menu:id="slot:5672" menu:helpid="5672" menu:label="~Plug-in..."/>
+ <menu:menuitem menu:id="slot:5676" menu:helpid="5676" menu:label="~Sound..."/>
+ <menu:menuitem menu:id="slot:5677" menu:helpid="5677" menu:label="~Video..."/>
+ <menu:menuitem menu:id="slot:5673" menu:helpid="5673" menu:label="~Applet..."/>
+ <menu:menuitem menu:id="slot:27106" menu:helpid="27106" menu:label="~Formula..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10140" menu:helpid="10140" menu:label="Chart"/>
+ <menu:menuitem menu:id="slot:5563" menu:helpid="5563" menu:label="Float~ing Frame..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27015" menu:helpid="27015" menu:label="~File..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:22" menu:label="F~ormat">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10456" menu:helpid="10456" menu:label="~Default"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10143" menu:helpid="10143" menu:label="L~ine..."/>
+ <menu:menuitem menu:id="slot:10142" menu:helpid="10142" menu:label="A~rea..."/>
+ <menu:menuitem menu:id="slot:27281" menu:helpid="27281" menu:label="Te~xt..."/>
+ <menu:menuitem menu:id="slot:10087" menu:helpid="10087" menu:label="Position and Si~ze..."/>
+ <menu:menuitem menu:id="slot:10613" menu:helpid="10613" menu:label="Con~trol..."/>
+ <menu:menuitem menu:id="slot:10614" menu:helpid="10614" menu:label="For~m..."/>
+ <menu:menuitem menu:id="slot:27320" menu:helpid="27320" menu:label="Dimen~sions..."/>
+ <menu:menuitem menu:id="slot:27338" menu:helpid="27338" menu:label="~Connector..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10296" menu:helpid="10296" menu:label="C~haracter..."/>
+ <menu:menuitem menu:id="slot:10156" menu:helpid="10156" menu:label="~Numbering/Bullets..."/>
+ <menu:menu menu:id="slot:1" menu:label="Case/Characters">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10912" menu:helpid="10912" menu:label="~Uppercase"/>
+ <menu:menuitem menu:id="slot:10913" menu:helpid="10913" menu:label="~Lowercase"/>
+ <menu:menuitem menu:id="slot:10914" menu:helpid="10914" menu:label="H~alf-width"/>
+ <menu:menuitem menu:id="slot:10915" menu:helpid="10915" menu:label="Full-width"/>
+ <menu:menuitem menu:id="slot:10916" menu:helpid="10916" menu:label="~Hiragana"/>
+ <menu:menuitem menu:id="slot:10917" menu:helpid="10917" menu:label="~Katakana"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10297" menu:helpid="10297" menu:label="P~aragraph..."/>
+ <menu:menuitem menu:id="slot:27002" menu:helpid="27002" menu:label="~Page..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27046" menu:helpid="27046" menu:label="Modify ~Layout..."/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:95" menu:label="Styl~es">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5573" menu:helpid="5573" menu:label="~Catalog..."/>
+ <menu:menuitem menu:id="slot:27064" menu:helpid="27064" menu:label="~Slide Design..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5539" menu:helpid="5539" menu:label="St~ylist"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10256" menu:helpid="10256" menu:label="F~ontwork"/>
+ <menu:menuitem menu:id="slot:10644" menu:helpid="10644" menu:label="~3D Effects"/>
+ <menu:menu menu:id="slot:102" menu:label="~Group">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10454" menu:helpid="10454" menu:label="~Group"/>
+ <menu:menuitem menu:id="slot:10455" menu:helpid="10455" menu:label="~Ungroup"/>
+ <menu:menuitem menu:id="slot:27096" menu:helpid="27096" menu:label="~Edit Group"/>
+ <menu:menuitem menu:id="slot:27097" menu:helpid="27097" menu:label="E~xit group"/>
+ </menu:menupopup>
+ </menu:menu>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:6677" menu:label="~Tools">
+ <menu:menupopup>
+ <menu:menu menu:id="slot:94" menu:label="~Spellcheck">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10243" menu:helpid="10243" menu:label="~Check..."/>
+ <menu:menuitem menu:id="slot:12021" menu:helpid="12021" menu:label="~AutoSpellcheck"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10245" menu:helpid="10245" menu:label="~Thesaurus..."/>
+ <menu:menuitem menu:id="slot:27340" menu:helpid="27340" menu:label="~Hyphenation"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10424" menu:helpid="10424" menu:label="~AutoCorrect..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5960" menu:helpid="5960" menu:label="~Gallery"/>
+ <menu:menuitem menu:id="slot:10350" menu:helpid="10350" menu:label="~Eyedropper"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="~Macros">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:6669" menu:helpid="6669" menu:label="Record Macro"/>
+ <menu:menuitem menu:id="slot:5959" menu:helpid="5959" menu:label="~Macro..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10958" menu:helpid="10958" menu:label="~XML Filter Settings..."/>
+ <menu:menuitem menu:id="slot:5904" menu:helpid="5904" menu:label="~Configure..."/>
+ <menu:menu menu:id="slot:4" menu:label="Scripting Add-ons">
+ <menu:menupopup>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteMenuBinding()" menu:label="Assign Script to ~Menu..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteKeyBinding" menu:label="Assign Script to ~Key..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEventBinding()" menu:label="Assign Script to ~Event..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEditDebug" menu:label="Edit/De~bug Scripts..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.RefreshAllScripts()" menu:label="~Refresh All Scripts"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:31630" menu:helpid="31630" menu:label="~Options..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:26" menu:label="~Slide Show">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10157" menu:helpid="10157" menu:label="Slide Sho~w"/>
+ <menu:menuitem menu:id="slot:10159" menu:helpid="10159" menu:label="~Rehearse Timings"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27339" menu:helpid="27339" menu:label="~Slide Show Settings..."/>
+ <menu:menuitem menu:id="slot:27365" menu:helpid="27365" menu:label="~Custom Slide Show..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27334" menu:helpid="27334" menu:label="Slide ~Transition"/>
+ <menu:menuitem menu:id="slot:10161" menu:helpid="10161" menu:label="~Show/Hide Slide"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:27062" menu:helpid="27062" menu:label="~Animation"/>
+ <menu:menuitem menu:id="slot:27328" menu:helpid="27328" menu:label="~Effects"/>
+ <menu:menuitem menu:id="slot:27063" menu:helpid="27063" menu:label="~Interaction..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5610" menu:label="~Window">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5620" menu:helpid="5620" menu:label="~New Window"/>
+ <menu:menuitem menu:id="slot:5621" menu:helpid="5621" menu:label="Close Window"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5410" menu:label="~Help">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5401" menu:helpid="5401" menu:label="~Contents"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5962" menu:helpid="5962" menu:label="Help ~Agent"/>
+ <menu:menuitem menu:id="slot:5404" menu:helpid="5404" menu:label="~Tips"/>
+ <menu:menuitem menu:id="slot:5403" menu:helpid="5403" menu:label="~Extended Tips"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6683" menu:helpid="6683" menu:label="~Support"/>
+ <menu:menuitem menu:id="slot:6537" menu:helpid="6537" menu:label="~Registration..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5301" menu:helpid="5301" menu:label="A~bout OpenOffice.org..."/>
+ </menu:menupopup>
+ </menu:menu>
+</menu:menubar>
diff --git a/scripting/workben/bindings/manifest.xml b/scripting/workben/bindings/manifest.xml
new file mode 100755
index 000000000000..093d19ff37a8
--- /dev/null
+++ b/scripting/workben/bindings/manifest.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
+<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
+ <manifest:file-entry manifest:media-type="" manifest:full-path="/"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="writermenubar.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="writerkeybinding.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="calcmenubar.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="calckeybinding.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="impressmenubar.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="impresskeybinding.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="drawmenubar.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="drawkeybinding.xml"/>
+ <manifest:file-entry manifest:media-type="" manifest:full-path="eventbindings.xml"/>
+</manifest:manifest> \ No newline at end of file
diff --git a/scripting/workben/bindings/script.xlb b/scripting/workben/bindings/script.xlb
new file mode 100755
index 000000000000..33eb114b5b64
--- /dev/null
+++ b/scripting/workben/bindings/script.xlb
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd">
+<library:library xmlns:library="http://openoffice.org/2000/library" library:name="ScriptBindingLibrary" library:readonly="false" library:passwordprotected="false">
+</library:library>
diff --git a/scripting/workben/bindings/writerkeybinding.xml b/scripting/workben/bindings/writerkeybinding.xml
new file mode 100755
index 000000000000..65c7ceef42e7
--- /dev/null
+++ b/scripting/workben/bindings/writerkeybinding.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE accel:acceleratorlist PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "accelerator.dtd">
+<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <accel:item accel:code="KEY_DELETE" accel:shift="true" accel:mod1="true" xlink:href="slot:20927"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" accel:mod1="true" xlink:href="slot:20928"/>
+ <accel:item accel:code="KEY_RETURN" accel:shift="true" accel:mod1="true" xlink:href="slot:20305"/>
+ <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" accel:mod1="true" xlink:href="slot:20963"/>
+ <accel:item accel:code="KEY_END" accel:shift="true" accel:mod1="true" xlink:href="slot:20808"/>
+ <accel:item accel:code="KEY_HOME" accel:shift="true" accel:mod1="true" xlink:href="slot:20807"/>
+ <accel:item accel:code="KEY_RIGHT" accel:shift="true" accel:mod1="true" xlink:href="slot:20821"/>
+ <accel:item accel:code="KEY_LEFT" accel:shift="true" accel:mod1="true" xlink:href="slot:20822"/>
+ <accel:item accel:code="KEY_UP" accel:shift="true" accel:mod1="true" xlink:href="slot:20947"/>
+ <accel:item accel:code="KEY_DOWN" accel:shift="true" accel:mod1="true" xlink:href="slot:20948"/>
+ <accel:item accel:code="KEY_F12" accel:shift="true" accel:mod1="true" xlink:href="slot:20137"/>
+ <accel:item accel:code="KEY_F11" accel:shift="true" accel:mod1="true" xlink:href="slot:5556"/>
+ <accel:item accel:code="KEY_F9" accel:shift="true" accel:mod1="true" xlink:href="slot:20143"/>
+ <accel:item accel:code="KEY_F5" accel:shift="true" accel:mod1="true" xlink:href="slot:20659"/>
+ <accel:item accel:code="KEY_T" accel:shift="true" accel:mod1="true" xlink:href="slot:20559"/>
+ <accel:item accel:code="KEY_R" accel:shift="true" accel:mod1="true" xlink:href="slot:20201"/>
+ <accel:item accel:code="KEY_P" accel:shift="true" accel:mod1="true" xlink:href="slot:20411"/>
+ <accel:item accel:code="KEY_I" accel:shift="true" accel:mod1="true" xlink:href="slot:20989"/>
+ <accel:item accel:code="KEY_F" accel:shift="true" accel:mod1="true" xlink:href="slot:20150"/>
+ <accel:item accel:code="KEY_D" accel:shift="true" accel:mod1="true" xlink:href="slot:10951"/>
+ <accel:item accel:code="KEY_B" accel:shift="true" accel:mod1="true" xlink:href="slot:20412"/>
+ <accel:item accel:code="KEY_A" accel:shift="true" accel:mod1="true" xlink:href="slot:10950"/>
+ <accel:item accel:code="KEY_MULTIPLY" accel:mod1="true" xlink:href="slot:20127"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:mod1="true" xlink:href="slot:20343"/>
+ <accel:item accel:code="KEY_ADD" accel:mod1="true" xlink:href="slot:20615"/>
+ <accel:item accel:code="KEY_DELETE" accel:mod1="true" xlink:href="slot:20929"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod1="true" xlink:href="slot:20930"/>
+ <accel:item accel:code="KEY_SPACE" accel:mod1="true" xlink:href="slot:20344"/>
+ <accel:item accel:code="KEY_RETURN" accel:mod1="true" xlink:href="slot:20323"/>
+ <accel:item accel:code="KEY_PAGEDOWN" accel:mod1="true" xlink:href="slot:20961"/>
+ <accel:item accel:code="KEY_PAGEUP" accel:mod1="true" xlink:href="slot:20960"/>
+ <accel:item accel:code="KEY_END" accel:mod1="true" xlink:href="slot:20908"/>
+ <accel:item accel:code="KEY_HOME" accel:mod1="true" xlink:href="slot:20907"/>
+ <accel:item accel:code="KEY_RIGHT" accel:mod1="true" xlink:href="slot:20921"/>
+ <accel:item accel:code="KEY_LEFT" accel:mod1="true" xlink:href="slot:20922"/>
+ <accel:item accel:code="KEY_F12" accel:mod1="true" xlink:href="slot:20330"/>
+ <accel:item accel:code="KEY_F11" accel:mod1="true" xlink:href="slot:5573"/>
+ <accel:item accel:code="KEY_F10" accel:mod1="true" xlink:href="slot:20224"/>
+ <accel:item accel:code="KEY_F9" accel:mod1="true" xlink:href="slot:20226"/>
+ <accel:item accel:code="KEY_F8" accel:mod1="true" xlink:href="slot:20225"/>
+ <accel:item accel:code="KEY_F7" accel:mod1="true" xlink:href="slot:20603"/>
+ <accel:item accel:code="KEY_F3" accel:mod1="true" xlink:href="slot:20620"/>
+ <accel:item accel:code="KEY_F2" accel:mod1="true" xlink:href="slot:20308"/>
+ <accel:item accel:code="KEY_Z" accel:mod1="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_Y" accel:mod1="true" xlink:href="slot:5700"/>
+ <accel:item accel:code="KEY_U" accel:mod1="true" xlink:href="slot:10014"/>
+ <accel:item accel:code="KEY_R" accel:mod1="true" xlink:href="slot:10029"/>
+ <accel:item accel:code="KEY_L" accel:mod1="true" xlink:href="slot:10028"/>
+ <accel:item accel:code="KEY_J" accel:mod1="true" xlink:href="slot:10031"/>
+ <accel:item accel:code="KEY_I" accel:mod1="true" xlink:href="slot:10008"/>
+ <accel:item accel:code="KEY_E" accel:mod1="true" xlink:href="slot:10030"/>
+ <accel:item accel:code="KEY_D" accel:mod1="true" xlink:href="slot:20405"/>
+ <accel:item accel:code="KEY_B" accel:mod1="true" xlink:href="slot:10009"/>
+ <accel:item accel:code="KEY_5" accel:mod1="true" xlink:href="slot:10035"/>
+ <accel:item accel:code="KEY_2" accel:mod1="true" xlink:href="slot:10036"/>
+ <accel:item accel:code="KEY_1" accel:mod1="true" xlink:href="slot:10034"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:shift="true" xlink:href="slot:20942"/>
+ <accel:item accel:code="KEY_RETURN" accel:shift="true" xlink:href="slot:20318"/>
+ <accel:item accel:code="KEY_PAGEDOWN" accel:shift="true" xlink:href="slot:20830"/>
+ <accel:item accel:code="KEY_PAGEUP" accel:shift="true" xlink:href="slot:20829"/>
+ <accel:item accel:code="KEY_END" accel:shift="true" xlink:href="slot:20806"/>
+ <accel:item accel:code="KEY_HOME" accel:shift="true" xlink:href="slot:20805"/>
+ <accel:item accel:code="KEY_RIGHT" accel:shift="true" xlink:href="slot:20802"/>
+ <accel:item accel:code="KEY_LEFT" accel:shift="true" xlink:href="slot:20801"/>
+ <accel:item accel:code="KEY_UP" accel:shift="true" xlink:href="slot:20803"/>
+ <accel:item accel:code="KEY_DOWN" accel:shift="true" xlink:href="slot:20804"/>
+ <accel:item accel:code="KEY_F12" accel:shift="true" xlink:href="slot:20138"/>
+ <accel:item accel:code="KEY_F11" accel:shift="true" xlink:href="slot:5555"/>
+ <accel:item accel:code="KEY_F9" accel:shift="true" xlink:href="slot:20129"/>
+ <accel:item accel:code="KEY_F8" accel:shift="true" xlink:href="slot:20939"/>
+ <accel:item accel:code="KEY_F5" accel:shift="true" xlink:href="slot:20958"/>
+ <accel:item accel:code="KEY_REPEAT" xlink:href="slot:5702"/>
+ <accel:item accel:code="KEY_UNDO" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_INSERT" xlink:href="slot:10221"/>
+ <accel:item accel:code="KEY_BACKSPACE" xlink:href="slot:20926"/>
+ <accel:item accel:code="KEY_ESCAPE" xlink:href="slot:20941"/>
+ <accel:item accel:code="KEY_RETURN" xlink:href="slot:20303"/>
+ <accel:item accel:code="KEY_PAGEDOWN" xlink:href="slot:20938"/>
+ <accel:item accel:code="KEY_PAGEUP" xlink:href="slot:20937"/>
+ <accel:item accel:code="KEY_END" xlink:href="slot:20906"/>
+ <accel:item accel:code="KEY_HOME" xlink:href="slot:20905"/>
+ <accel:item accel:code="KEY_RIGHT" xlink:href="slot:20902"/>
+ <accel:item accel:code="KEY_LEFT" xlink:href="slot:20901"/>
+ <accel:item accel:code="KEY_UP" xlink:href="slot:20903"/>
+ <accel:item accel:code="KEY_DOWN" xlink:href="slot:20904"/>
+ <accel:item accel:code="KEY_F12" xlink:href="slot:20144"/>
+ <accel:item accel:code="KEY_F11" xlink:href="slot:5539"/>
+ <accel:item accel:code="KEY_F9" xlink:href="slot:20126"/>
+ <accel:item accel:code="KEY_F8" xlink:href="slot:20940"/>
+ <accel:item accel:code="KEY_F7" xlink:href="slot:20622"/>
+ <accel:item accel:code="KEY_F5" xlink:href="slot:10366"/>
+ <accel:item accel:code="KEY_F3" xlink:href="slot:20628"/>
+ <accel:item accel:code="KEY_F2" xlink:href="slot:20128"/>
+ <accel:item accel:code="KEY_BACKSPACE" accel:mod2="true" xlink:href="slot:5701"/>
+ <accel:item accel:code="KEY_UP" accel:mod1="true" accel:mod2="true" xlink:href="slot:20134"/>
+ <accel:item accel:code="KEY_DOWN" accel:mod1="true" accel:mod2="true" xlink:href="slot:20135"/>
+ <accel:item accel:code="KEY_SUBTRACT" accel:shift="true" accel:mod1="true" xlink:href="slot:20385"/>
+</accel:acceleratorlist> \ No newline at end of file
diff --git a/scripting/workben/bindings/writermenubar.xml b/scripting/workben/bindings/writermenubar.xml
new file mode 100755
index 000000000000..d2d6d880b7b9
--- /dev/null
+++ b/scripting/workben/bindings/writermenubar.xml
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE menu:menubar PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "menubar.dtd">
+<menu:menubar xmlns:menu="http://openoffice.org/2001/menu" menu:id="menubar">
+ <menu:menu menu:id="slot:5510" menu:label="~File">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5537" menu:helpid="5537" menu:label="~New"/>
+ <menu:menuitem menu:id="slot:5501" menu:helpid="5501" menu:label="~Open..."/>
+ <menu:menuitem menu:id="slot:6381" menu:helpid="6381" menu:label="A~utoPilot"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5503" menu:helpid="5503" menu:label="~Close"/>
+ <menu:menuitem menu:id="slot:5505" menu:helpid="5505" menu:label="~Save"/>
+ <menu:menuitem menu:id="slot:5502" menu:helpid="5502" menu:label="Save ~As..."/>
+ <menu:menuitem menu:id="slot:5309" menu:helpid="5309" menu:label="Sa~ve All"/>
+ <menu:menuitem menu:id="slot:5508" menu:helpid="5508" menu:label="Re~load"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6583" menu:helpid="6583" menu:label="V~ersions..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5829" menu:helpid="5829" menu:label="Expor~t..."/>
+ <menu:menuitem menu:id="slot:6673" menu:helpid="6673" menu:label="Expor~t as PDF..."/>
+ <menu:menu menu:id="slot:1" menu:label="Sen~d">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5331" menu:helpid="5331" menu:label="Document as ~E-mail..."/>
+ <menu:menuitem menu:id="slot:6672" menu:helpid="6672" menu:label="Document as P~DF Attachment..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20004" menu:helpid="20004" menu:label="Create Master ~Document"/>
+ <menu:menuitem menu:id="slot:20040" menu:helpid="20040" menu:label="Create ~HTML Document"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20036" menu:helpid="20036" menu:label="Outline to ~Presentation"/>
+ <menu:menuitem menu:id="slot:20037" menu:helpid="20037" menu:label="Outline to ~Clipboard"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:21612" menu:helpid="21612" menu:label="Create A~utoAbstract..."/>
+ <menu:menuitem menu:id="slot:21613" menu:helpid="21613" menu:label="AutoAbst~ract to Presentation..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5535" menu:helpid="5535" menu:label="Propert~ies..."/>
+ <menu:menu menu:id="slot:2" menu:label="~Templates">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5540" menu:helpid="5540" menu:label="~Organize..."/>
+ <menu:menuitem menu:id="slot:6655" menu:helpid="6655" menu:label="~Address Book Source..."/>
+ <menu:menuitem menu:id="slot:5538" menu:helpid="5538" menu:label="~Save..."/>
+ <menu:menuitem menu:id="slot:5594" menu:helpid="5594" menu:label="~Edit..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5325" menu:helpid="5325" menu:label="Pa~ge Preview"/>
+ <menu:menuitem menu:id="slot:5504" menu:helpid="5504" menu:label="~Print..."/>
+ <menu:menuitem menu:id="slot:5302" menu:helpid="5302" menu:label="P~rinter Settings..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5300" menu:helpid="5300" menu:label="E~xit"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:1" menu:label="~Edit">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5701" menu:helpid="5701" menu:label="Can&apos;t ~Undo"/>
+ <menu:menuitem menu:id="slot:5700" menu:helpid="5700" menu:label="~Can&apos;t Restore"/>
+ <menu:menuitem menu:id="slot:5702" menu:helpid="5702" menu:label="~Repeat"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5710" menu:helpid="5710" menu:label="Cu~t"/>
+ <menu:menuitem menu:id="slot:5711" menu:helpid="5711" menu:label="~Copy"/>
+ <menu:menuitem menu:id="slot:5712" menu:helpid="5712" menu:label="~Paste"/>
+ <menu:menuitem menu:id="slot:20114" menu:helpid="20114" menu:label="Paste ~Special..."/>
+ <menu:menuitem menu:id="slot:20989" menu:helpid="20989" menu:label="~Select Text"/>
+ <menu:menuitem menu:id="slot:5723" menu:helpid="5723" menu:label="Select ~All"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="Chan~ges">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:21825" menu:helpid="21825" menu:label="~Record"/>
+ <menu:menuitem menu:id="slot:21823" menu:helpid="21823" menu:label="~Protect Records..."/>
+ <menu:menuitem menu:id="slot:21826" menu:helpid="21826" menu:label="~Show"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:21829" menu:helpid="21829" menu:label="~Accept or Reject..."/>
+ <menu:menuitem menu:id="slot:21827" menu:helpid="21827" menu:label="~Comment..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6587" menu:helpid="6587" menu:label="~Merge Document..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:6586" menu:helpid="6586" menu:label="Compar~e Document..."/>
+ <menu:menuitem menu:id="slot:5961" menu:helpid="5961" menu:label="~Find &amp; Replace..."/>
+ <menu:menuitem menu:id="slot:10366" menu:helpid="10366" menu:label="~Navigator"/>
+ <menu:menuitem menu:id="slot:20620" menu:helpid="20620" menu:label="AutoTe~xt..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20309" menu:helpid="20309" menu:label="Exc~hange Database..."/>
+ <menu:menuitem menu:id="slot:20104" menu:helpid="20104" menu:label="F~ields..."/>
+ <menu:menuitem menu:id="slot:20162" menu:helpid="20162" menu:label="Footnote~..."/>
+ <menu:menuitem menu:id="slot:20123" menu:helpid="20123" menu:label="Index Entr~y..."/>
+ <menu:menuitem menu:id="slot:21833" menu:helpid="21833" menu:label="~Bibliography Entry..."/>
+ <menu:menuitem menu:id="slot:21835" menu:helpid="21835" menu:label="H~yperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20109" menu:helpid="20109" menu:label="Lin~ks..."/>
+ <menu:menuitem menu:id="slot:6314" menu:helpid="6314" menu:label="P~lug-in"/>
+ <menu:menuitem menu:id="slot:10371" menu:helpid="10371" menu:label="I~mageMap"/>
+ <menu:menuitem menu:id="slot:5575" menu:helpid="5575" menu:label="~Object"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:2" menu:label="~View">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10000" menu:helpid="10000" menu:label="~Zoom..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6660" menu:helpid="6660" menu:label="~Data Sources"/>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:1" menu:label="~Toolbars">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5910" menu:helpid="5910" menu:label="~Function Bar"/>
+ <menu:menuitem menu:id="slot:5905" menu:helpid="5905" menu:label="~Object Bar"/>
+ <menu:menuitem menu:id="slot:5909" menu:helpid="5909" menu:label="Main ~Toolbar"/>
+ <menu:menuitem menu:id="slot:20128" menu:helpid="20128" menu:label="Fo~rmula Bar"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5908" menu:helpid="5908" menu:label="Customi~ze..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:20211" menu:helpid="20211" menu:label="~Ruler"/>
+ <menu:menuitem menu:id="slot:5920" menu:helpid="5920" menu:label="~Status Bar"/>
+ <menu:menuitem menu:id="slot:6680" menu:helpid="6680" menu:label="~Input Method Status"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20214" menu:helpid="20214" menu:label="Te~xt Boundaries"/>
+ <menu:menuitem menu:id="slot:20225" menu:helpid="20225" menu:label="Fie~ld Shadings"/>
+ <menu:menuitem menu:id="slot:20226" menu:helpid="20226" menu:label="~Fields"/>
+ <menu:menuitem menu:id="slot:20224" menu:helpid="20224" menu:label="~Nonprinting Characters"/>
+ <menu:menuitem menu:id="slot:20242" menu:helpid="20242" menu:label="~Hidden Paragraphs"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6313" menu:helpid="6313" menu:label="~Online Layout"/>
+ <menu:menuitem menu:id="slot:5627" menu:helpid="5627" menu:label="F~ull Screen"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:3" menu:label="~Insert">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:20304" menu:helpid="20304" menu:label="Manual ~Break..."/>
+ <menu:menu menu:id="slot:1" menu:label="Fiel~ds">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:20392" menu:helpid="20392" menu:label="~Date"/>
+ <menu:menuitem menu:id="slot:20393" menu:helpid="20393" menu:label="~Time"/>
+ <menu:menuitem menu:id="slot:20394" menu:helpid="20394" menu:label="~Page Number"/>
+ <menu:menuitem menu:id="slot:20395" menu:helpid="20395" menu:label="Page ~Count"/>
+ <menu:menuitem menu:id="slot:20396" menu:helpid="20396" menu:label="~Subject"/>
+ <menu:menuitem menu:id="slot:20397" menu:helpid="20397" menu:label="~Title"/>
+ <menu:menuitem menu:id="slot:20398" menu:helpid="20398" menu:label="~Author"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20308" menu:helpid="20308" menu:label="~Other..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:20328" menu:helpid="20328" menu:label="S~pecial Character..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20345" menu:helpid="20345" menu:label="~Section..."/>
+ <menu:menuitem menu:id="slot:5678" menu:helpid="5678" menu:label="~Hyperlink"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:21413" menu:helpid="21413" menu:label="He~ader"/>
+ <menu:menuitem menu:id="slot:21414" menu:helpid="21414" menu:label="Foote~r"/>
+ <menu:menuitem menu:id="slot:20312" menu:helpid="20312" menu:label="Footnote~..."/>
+ <menu:menuitem menu:id="slot:20310" menu:helpid="20310" menu:label="Captio~n..."/>
+ <menu:menuitem menu:id="slot:20302" menu:helpid="20302" menu:label="Bookmar~k..."/>
+ <menu:menuitem menu:id="slot:20313" menu:helpid="20313" menu:label="~Cross-reference..."/>
+ <menu:menuitem menu:id="slot:20329" menu:helpid="20329" menu:label="Not~e..."/>
+ <menu:menuitem menu:id="slot:21410" menu:helpid="21410" menu:label="S~cript..."/>
+ <menu:menu menu:id="slot:2" menu:label="Inde~xes and Tables">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:20335" menu:helpid="20335" menu:label="~Entry..."/>
+ <menu:menuitem menu:id="slot:21420" menu:helpid="21420" menu:label="~Indexes and Tables..."/>
+ <menu:menuitem menu:id="slot:21421" menu:helpid="21421" menu:label="~Bibliography Entry..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:21050" menu:helpid="21050" menu:label="En~velope..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20334" menu:helpid="20334" menu:label="Fra~me..."/>
+ <menu:menuitem menu:id="slot:20330" menu:helpid="20330" menu:label="~Table..."/>
+ <menu:menuitem menu:id="slot:21411" menu:helpid="21411" menu:label="Hori~zontal Ruler..."/>
+ <menu:menu menu:id="slot:3" menu:label="~Graphics">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10241" menu:helpid="10241" menu:label="From ~File..."/>
+ <menu:menu menu:id="slot:1" menu:label="Scan">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:10331" menu:helpid="10331" menu:label="~Select Source..."/>
+ <menu:menuitem menu:id="slot:10332" menu:helpid="10332" menu:label="~Request..."/>
+ </menu:menupopup>
+ </menu:menu>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:4" menu:label="~Object">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5561" menu:helpid="5561" menu:label="~OLE Object..."/>
+ <menu:menuitem menu:id="slot:5672" menu:helpid="5672" menu:label="~Plug-in..."/>
+ <menu:menuitem menu:id="slot:5676" menu:helpid="5676" menu:label="~Sound..."/>
+ <menu:menuitem menu:id="slot:5677" menu:helpid="5677" menu:label="~Video..."/>
+ <menu:menuitem menu:id="slot:5673" menu:helpid="5673" menu:label="~Applet..."/>
+ <menu:menuitem menu:id="slot:20369" menu:helpid="20369" menu:label="~Formula"/>
+ <menu:menuitem menu:id="slot:10140" menu:helpid="10140" menu:label="~Chart..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:5563" menu:helpid="5563" menu:label="Float~ing Frame"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5532" menu:helpid="5532" menu:label="~File..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5780" menu:label="F~ormat">
+ <menu:menupopup/>
+ </menu:menu>
+ <menu:menu menu:id="slot:6677" menu:label="~Tools">
+ <menu:menupopup>
+ <menu:menu menu:id="slot:1" menu:label="~Spellcheck">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:20622" menu:helpid="20622" menu:label="~Check..."/>
+ <menu:menuitem menu:id="slot:12021" menu:helpid="12021" menu:label="~AutoSpellcheck"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10959" menu:helpid="10959" menu:label="Hangul/Han~ja Conversion"/>
+ <menu:menuitem menu:id="slot:20603" menu:helpid="20603" menu:label="~Thesaurus..."/>
+ <menu:menuitem menu:id="slot:20605" menu:helpid="20605" menu:label="~Hyphenation..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10424" menu:helpid="10424" menu:label="~AutoCorrect/AutoFormat..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20612" menu:helpid="20612" menu:label="Outline ~Numbering..."/>
+ <menu:menuitem menu:id="slot:20602" menu:helpid="20602" menu:label="~Line Numbering..."/>
+ <menu:menuitem menu:id="slot:20468" menu:helpid="20468" menu:label="~Footnotes..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5960" menu:helpid="5960" menu:label="~Gallery"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:10880" menu:helpid="10880" menu:label="~Bibliography Database"/>
+ <menu:menuitem menu:id="slot:10882" menu:helpid="10882" menu:label="~Data Sources..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20364" menu:helpid="20364" menu:label="~Mail Merge..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20500" menu:helpid="20500" menu:label="Te~xt &lt;-&gt; Table..."/>
+ <menu:menuitem menu:id="slot:20614" menu:helpid="20614" menu:label="So~rt..."/>
+ <menu:menuitem menu:id="slot:20615" menu:helpid="20615" menu:label="Calculat~e"/>
+ <menu:menu menu:id="slot:2" menu:label="~Update">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:21828" menu:helpid="21828" menu:label="~Update All"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:20126" menu:helpid="20126" menu:label="~Fields"/>
+ <menu:menuitem menu:id="slot:21824" menu:helpid="21824" menu:label="~Links"/>
+ <menu:menuitem menu:id="slot:21834" menu:helpid="21834" menu:label="All ~Charts"/>
+ <menu:menuitem menu:id="slot:20654" menu:helpid="20654" menu:label="Current ~Index"/>
+ <menu:menuitem menu:id="slot:20653" menu:helpid="20653" menu:label="~All Indexes and Tables"/>
+ <menu:menuitem menu:id="slot:20161" menu:helpid="20161" menu:label="Page Formatting"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuseparator/>
+ <menu:menu menu:id="slot:3" menu:label="~Macros">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:6669" menu:helpid="6669" menu:label="Record Macro"/>
+ <menu:menuitem menu:id="slot:5959" menu:helpid="5959" menu:label="~Macro..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:10958" menu:helpid="10958" menu:label="~XML Filter Settings..."/>
+ <menu:menuitem menu:id="slot:5904" menu:helpid="5904" menu:label="~Configure..."/>
+ <menu:menu menu:id="slot:4" menu:label="Scripting Add-ons">
+ <menu:menupopup>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteMenuBinding()" menu:label="Assign Script to ~Menu..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteKeyBinding" menu:label="Assign Script to ~Key..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEventBinding()" menu:label="Assign Script to ~Event..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.ExecuteEditDebug" menu:label="Edit/De~bug Scripts..."/>
+ <menu:menuitem menu:id="macro:///ScriptBindingLibrary.ScriptBinding.RefreshAllScripts()" menu:label="~Refresh All Scripts"/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menuitem menu:id="slot:31630" menu:helpid="31630" menu:label="~Options..."/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5610" menu:label="~Window">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5620" menu:helpid="5620" menu:label="~New Window"/>
+ <menu:menuitem menu:id="slot:5621" menu:helpid="5621" menu:label="~Close Window"/>
+ <menu:menuseparator/>
+ </menu:menupopup>
+ </menu:menu>
+ <menu:menu menu:id="slot:5410" menu:label="~Help">
+ <menu:menupopup>
+ <menu:menuitem menu:id="slot:5401" menu:helpid="5401" menu:label="~Contents"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5962" menu:helpid="5962" menu:label="Help ~Agent"/>
+ <menu:menuitem menu:id="slot:5404" menu:helpid="5404" menu:label="~Tips"/>
+ <menu:menuitem menu:id="slot:5403" menu:helpid="5403" menu:label="~Extended Tips"/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:6683" menu:helpid="6683" menu:label="~Support"/>
+ <menu:menuitem menu:id="slot:6537" menu:helpid="6537" menu:label="~Registration..."/>
+ <menu:menuseparator/>
+ <menu:menuitem menu:id="slot:5301" menu:helpid="5301" menu:label="A~bout OpenOffice.org..."/>
+ </menu:menupopup>
+ </menu:menu>
+</menu:menubar>