Process
of creating a macro and assigning it to an event
Assign a
macro that was created and saved in the Standard Library of
OpenOffice called Test().
The
directory soffice.cfg
is created in the user/config
directory once you assign a macro to a key.
An xml
file per context is created and contains all the bindings.
Because
the macro is in the Standard Library of OpenOffice and that the
binding is only applied to a key in Writer:
The file
writerkeybinding.xml
is created
Content
of writerkeybinding.xml
<?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_F10"
xlink:href="macro:///Standard.Module1.Alexis()"/>
...
</accel:acceleratorlist>
Content
of Accelerator.dtd
<!ENTITY
% boolean "(true|false)">
<!ELEMENT
accel:acceleratorlist (accel:item*)>
<!ATTLIST
accel:acceleratorlist
xmlns:accel
CDATA #FIXED "http://openoffice.org/2001/accel"
xmlns:xlink
CDATA #FIXED "http://www.w3.org/1999/xlink"
>
<!ELEMENT
accel:item EMPTY>
<!ATTLIST
accel:item
accel:code
CDATA #REQUIRED
accel:shift
%boolean; "false"
accel:mod1
%boolean; "false"
accel:mod2
%boolean; "false"
xlink:href
CDATA #REQUIRED
>
The
content of user/basic
is formed by a directory per library you modified (in that case
Standard was modified) and 2 files .xlc.
Script.xlc
is the file that will be explained:
Content
of the file script.xlc
<?xml
version="1.0" encoding="UTF-8"?>
<!DOCTYPE
library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument
1.0//EN" "libraries.dtd">
<library:libraries
xmlns:library="http://openoffice.org/2000/library"
xmlns:xlink="http://www.w3.org/1999/xlink">
<library:library library:name="Standard"
xlink:href="file:///home/al91857/StarOffice6.0/user/basic/Standard/script.xlb/"
xlink:type="simple" library:link="false"/>
<library:library library:name="WebWizard"
xlink:href="file:///usr/dist/share/staroffice,v6.0/share/basic/WebWizard/script.xlb/"
xlink:type="simple" library:link="true"
library:readonly="false"/>
...
</library:libraries>
Content
of Libraries.dtd
<!ENTITY
% boolean "(true|false)">
<!ELEMENT
library:libraries (library:library)*>
<!ATTLIST
library:libraries
xmlns:library
CDATA #FIXED "http://openoffice.org/2000/library"
xmlns:xlink
CDATA #FIXED "http://www.w3.org/1999/xlink"
>
<!ELEMENT
library:library EMPTY>
<!ATTLIST
library:library
library:name
CDATA #REQUIRED
xlink:href
CDATA #IMPLIED
xlink:type
CDATA #IMPLIED
library:link
%boolean; #REQUIRED
library:readonly
%boolean; #IMPLIED
>
You can
see that the xlink:href
of the library:name="Standard"
is locating as file in the home directory because I modified that
library.
Content
of the file script.xlb
in file:///home/al91857/StarOffice6.0/user/basic/Standard
<?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="Standard" library:readonly="false"
library:passwordprotected="false">
<library:element library:name="Module1"/>
</library:library>
Content
of Library.dtd
<!ENTITY
% boolean "(true|false)">
<!ELEMENT
library:library (library:element)*>
<!ATTLIST
library:library
xmlns:library
CDATA #FIXED "http://openoffice.org/2000/library"
library:name CDATA #REQUIRED
library:readonly %boolean; #REQUIRED
library:passwordprotected %boolean; #REQUIRED
>
<!ELEMENT
library:element EMPTY>
<!ATTLIST
library:element
library:name
CDATA #REQUIRED
>
Content
of the file where my macro was saved: Module1.xba
<?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="Module1" script:language="StarBasic">REM
***** BASIC *****
Sub
Main
End
Sub
Sub
Alexis
print
"alexis"
End
Sub</script:module>
Content
of Module.dtd
<!ELEMENT
script:module (#PCDATA)>
<!ATTLIST
script:module
xmlns:script
CDATA #FIXED "http://openoffice.org/2000/script"
script:name
CDATA #REQUIRED
script:language
CDATA #REQUIRED
>
When
you save the document including the macro, everything is in a Zip
file with the same hierarchy than explained above.
The
file hierarchy is:
Archive:
test.sxw
testing: content.xml
testing: Basic/Standard/Module1.xml
testing: Basic/Standard/script-lb.xml
testing: Basic/script-lc.xml
testing: styles.xml
testing: meta.xml
testing: settings.xml
testing: META-INF/manifest.xml
So
the script-lb.xml file is the equivalent to the script.xlb file
explained above
The
script-lc.xml file is the equivalent to the script.xlc file explained
Above.