<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sparcmoz</id>
	<title>Apache OpenOffice Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openoffice.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sparcmoz"/>
	<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/wiki/Special:Contributions/Sparcmoz"/>
	<updated>2026-06-18T05:28:42Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=86632</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=86632"/>
		<updated>2008-07-15T10:28:54Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Building GNU/Linux SPARC with OpenJDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The objective is to maintain the upstream sources so that the GNU/Linux [http://en.wikipedia.org/wiki/SPARC SPARC] platform can be packaged for example by Debian, Gentoo, and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all Java building is done with gcj.&lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
* fix multimedia&lt;br /&gt;
* more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org/ about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by [http://www.sun.com/ Sun].&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. (This is out of date - it is no longer required. I need to remove this code from OOo sources). Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building OOo on GNU/Linux SPARC with OpenJDK ==&lt;br /&gt;
&lt;br /&gt;
This is work in progress. The first step is to build OpenJDK.&lt;br /&gt;
&lt;br /&gt;
No distributions are shipping OpenJDK for sparc yet (please correct me if I&amp;#039;m wrong ;)&lt;br /&gt;
&lt;br /&gt;
On Debain/sid I have got the build dependencies OK, configured and started ./make for icedtea6 from icedtea.classpath.org&lt;br /&gt;
&lt;br /&gt;
For the first build I will play it safe - building in a sparc shell:&lt;br /&gt;
&lt;br /&gt;
 $ linux32 bash&lt;br /&gt;
 $ ./configure&lt;br /&gt;
 $ ./make&lt;br /&gt;
&lt;br /&gt;
Progress will be tracked at [http://qa.openoffice.org/issues/show_bug.cgi?id=91484 issue 91484]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
 This section is deprecated - the SPARC build works fine on debian with java-gcj-compat.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I normally build using debian gcc/ecj but if it is desired to build gcc too, then GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
Also need put ecj.jar in the source file - see gcc instructions for building gcj with ecj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj ===&lt;br /&gt;
&lt;br /&gt;
In my case I get gcc version that builds with ecj, and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. There is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm \&lt;br /&gt;
&lt;br /&gt;
--with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and the workaround is configure --with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906] (fixed?)&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45323</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45323"/>
		<updated>2007-09-08T08:30:25Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Module sal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The objective is to maintain the upstream sources so that the GNU/Linux [http://en.wikipedia.org/wiki/SPARC SPARC] platform can be packaged for example by Debian, Gentoo, and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all Java building is done with gcj.&lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
* fix multimedia&lt;br /&gt;
* more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org/ about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by [http://www.sun.com/ Sun].&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. (This is out of date - it is no longer required. I need to remove this code from OOo sources). Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I normally build using debian gcc/ecj but if it is desired to build gcc too, then GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
Also need put ecj.jar in the source file - see gcc instructions for building gcj with ecj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj ===&lt;br /&gt;
&lt;br /&gt;
In my case I get gcc version that builds with ecj, and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. There is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm \&lt;br /&gt;
&lt;br /&gt;
--with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and the workaround is configure --with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906] (fixed?)&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45322</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45322"/>
		<updated>2007-09-08T08:20:48Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Module sal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The objective is to maintain the upstream sources so that the GNU/Linux [http://en.wikipedia.org/wiki/SPARC SPARC] platform can be packaged for example by Debian, Gentoo, and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all Java building is done with gcj.&lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
* fix multimedia&lt;br /&gt;
* more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org/ about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by [http://www.sun.com/ Sun].&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
&lt;br /&gt;
(This is out of date - it is no longer required. I need to remove this code from OOo sources)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I normally build using debian gcc/ecj but if it is desired to build gcc too, then GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
Also need put ecj.jar in the source file - see gcc instructions for building gcj with ecj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj ===&lt;br /&gt;
&lt;br /&gt;
In my case I get gcc version that builds with ecj, and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. There is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm \&lt;br /&gt;
&lt;br /&gt;
--with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and the workaround is configure --with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906] (fixed?)&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45321</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=45321"/>
		<updated>2007-09-08T08:19:08Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Building with GCC 4.1.2 (preview) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The objective is to maintain the upstream sources so that the GNU/Linux [http://en.wikipedia.org/wiki/SPARC SPARC] platform can be packaged for example by Debian, Gentoo, and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all Java building is done with gcj.&lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
* fix multimedia&lt;br /&gt;
* more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org/ about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by [http://www.sun.com/ Sun].&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
Need to force 8 byte alignment:&lt;br /&gt;
 sal/typesconfig/typesconfig.c&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
I normally build using debian gcc/ecj but if it is desired to build gcc too, then GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
Also need put ecj.jar in the source file - see gcc instructions for building gcj with ecj&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj ===&lt;br /&gt;
&lt;br /&gt;
In my case I get gcc version that builds with ecj, and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. There is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm \&lt;br /&gt;
&lt;br /&gt;
--with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and the workaround is configure --with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906] (fixed?)&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Intro_To_Mac_Porting&amp;diff=32494</id>
		<title>Intro To Mac Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Intro_To_Mac_Porting&amp;diff=32494"/>
		<updated>2007-05-18T05:35:46Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: Update for changes in freenode chat rooms&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction To Porting OpenOffice.org To the Mac==&lt;br /&gt;
The goal of this article is to teach any developer interested in joining the [[Mac OS X|Macintosh]] porting team of [[OpenOffice.org]] the basic information to get started. After reading this guide the newcomer will understand: how to connect with other members of the team, how to get and compile the source code,  the purpose and organization of the VCL module and finally how to use the Carbon API. This also summarizes the knowledge that I had to acquire to complete my [http://code.google.com/soc/2006/ooo/appinfo.html?csaid=E3F7148B88FBB54 Google Summer of Code 2006 project]. I would like to thank the following people for helping me and teaching me what they knew: Eric Bachard and Pavel Janik.&lt;br /&gt;
&lt;br /&gt;
==Programming and System Requirements==&lt;br /&gt;
&lt;br /&gt;
===Programming Requirements===&lt;br /&gt;
To be comfortable in working on the porting project you should have a good knowledge of C++, a basic knowledge of the UNIX command line and if possible some knowledge of the Mac OS X Carbon API. The most important is that you need to be familiar with C++. The Carbon API can be learned very easily with the extensive documentation that Apple provides. Here are some important pages that you should get familiar with:&lt;br /&gt;
&lt;br /&gt;
====Carbon Guides====&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/newtocarbon/index.html Carbon Overview]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/Carbon_Event_Manager/index.html Carbon Event Manager Programming Guide]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/HandlingWindowsControls/index.html Handling Carbon Windows and Controls]&lt;br /&gt;
*[http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/index.html Quartz 2D Programming Guide]&lt;br /&gt;
	&lt;br /&gt;
====Carbon References====&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Reference/Carbon_Event_Manager_Ref/index.html Carbon Event Manager Reference]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Reference/Window_Manager/ Window Manager Reference ]&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
A Macintosh (PowerPC/Intel) running Mac OS X 10.4. You need to have  [http://connect.apple.com XCode] (need login to access old versions) installed. There are some problems with the latest versions, so download either 2.1 or 2.2. This will ensure that you have the proper tools installed to compile the source and will minimize the number of problems.&lt;br /&gt;
&lt;br /&gt;
==Connect With the OOo Developer Teams==&lt;br /&gt;
&lt;br /&gt;
===IRC Channels===&lt;br /&gt;
An important part of working on the OpenOffice.org project is to be connected with other developers to get and give help. Online chat channels are the first essential mean of communication between them. This is an important step. You will probably run into some problems when compiling the source code and you can find the answers by asking people in these rooms. Therefore download an IRC client such as [http://colloquy.info/downloads.html Colloquy] or [http://sourceforge.net/projects/xchataqua/ X-Chat Aqua] before going any further. &lt;br /&gt;
&lt;br /&gt;
====How to connect to these channels====&lt;br /&gt;
&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&lt;br /&gt;
* irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Rooms&amp;#039;&amp;#039;&lt;br /&gt;
* #dev.openoffice.org – main developer room.&lt;br /&gt;
* #ooo_macport – room for the mac porting team, weekly meetings.&lt;br /&gt;
* #openoffice.org – room for users.&lt;br /&gt;
* #fr.openoffice.org – French developers room.&lt;br /&gt;
* #openoffice.org-de – German developers room.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The first two are the most important rooms. If you are a developer from a non-English speaking country there is a good chance that you will also be able to find a room specific for OOo developers speaking your language. The last two, are examples of such rooms.&lt;br /&gt;
&lt;br /&gt;
===Create an account on OpenOffice.org===&lt;br /&gt;
You need to create an account on [http://projects.openoffice.org/index.html OpenOffice.org]. This account will allow you to manage, which projects you are a member of and to subscribe to mailing lists (next step). Also you will have access to IssueZilla and will be able to follow the evolution of issues by receiving forwarded emails about them. You will also be able to ask for the permission of committing source code later on.&lt;br /&gt;
&lt;br /&gt;
===Mailing Lists===&lt;br /&gt;
Another essential part of being connected to the OOo community is to subscribe to mailing lists. This is where new code is sent for testing and where current issues are discussed. If you are stuck on something it is a very good idea to send your question to the mailing lists. A lot of people are subscribed to them and you will certainly find an answer. You can check all the mailing lists  [http://www.openoffice.org/mail_list.html#project here]. You should subscribe at least to the following ones:&lt;br /&gt;
&lt;br /&gt;
* dev@openoffice.org: general developers mailing list&lt;br /&gt;
* mac@porting.openoffice.org: mac porting specific list&lt;br /&gt;
* dev@gsl.openoffice.org: vcl specific list (more on vcl later)&lt;br /&gt;
&lt;br /&gt;
===Sign the JCA===&lt;br /&gt;
An important step before submitting new code or fixing code is to sign the JCA. This is an agreement that gives Sun joint ownership over the code you wrote and want to include in the source. Go to [http://contributing.openoffice.org/programming.html this page] and at the bottom you can find a link to the pdf version of the agreement and the terms. You have to sign and submit this agreement for your code to be included in the OOo source tree.&lt;br /&gt;
&lt;br /&gt;
==Compilation and tips==&lt;br /&gt;
Information about downloading the source code can be found here:&lt;br /&gt;
&lt;br /&gt;
* [[AquaBuild]]&lt;br /&gt;
* [[MacOSXBuildInstructions|OS X Build Instructions]]&lt;br /&gt;
&lt;br /&gt;
Before starting the compilation, you should download [http://ccache.samba.org/ ccache]. This program is a caching pre-processor to C/C++ compilers. It will speed up the compilation process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple shell script to automate the compilation process. You need to replace the path to the source code with the proper path. Also you need to change the path to gcp in the ./configure options (Here the path assumes you are using &amp;#039;DarwinPorts&amp;#039;). Finally you will need to change the source command if you are using an Intel machine to &amp;lt;code&amp;gt;source MacOSXIntelEnv.Set.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[sh,N]&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
 &lt;br /&gt;
cd &amp;lt;path&amp;gt;680_m182/source/config_office&lt;br /&gt;
&lt;br /&gt;
export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&lt;br /&gt;
&lt;br /&gt;
./configure \&lt;br /&gt;
--without-nas \&lt;br /&gt;
--disable-odk \&lt;br /&gt;
--disable-cups \&lt;br /&gt;
--disable-gtk \&lt;br /&gt;
--disable-gnome-vfs \&lt;br /&gt;
--disable-crashdump \&lt;br /&gt;
--disable-mozilla \&lt;br /&gt;
--with-jdk-home=/System/Library/Frameworks/JavaVM.framework/Home \&lt;br /&gt;
--enable-pasf \&lt;br /&gt;
--enable-fontconfig \&lt;br /&gt;
--with-gnu-cp=/opt/local/bin/gcp \&lt;br /&gt;
--with-system-expat \&lt;br /&gt;
--with-system-curl \&lt;br /&gt;
--with-system-libxml&lt;br /&gt;
&lt;br /&gt;
cd ..&lt;br /&gt;
./bootstrap&lt;br /&gt;
source MacOSXPPCEnv.Set.sh&lt;br /&gt;
dmake 2&amp;gt;&amp;amp;1 | tee log.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now launch the compilation. Don&amp;#039;t forget that if you run into some problems you can always ask on the IRC channels. Also since the compilation process takes some time, start introducing yourself to the other developers on the team, ask which parts need to be worked on and choose one that is interesting to you.&lt;br /&gt;
&lt;br /&gt;
==VCL==&lt;br /&gt;
&lt;br /&gt;
===VCL Dependencies===&lt;br /&gt;
VCL stands for &amp;#039;Visual Class Library&amp;#039;, it is the module responsible for linking the underlying functions of OOo to the graphical interface. It contains the implementation of all the components of the GUI for each platform. The folder of interest for us is the &amp;#039;aqua&amp;#039; folder. This is where you will spend most of your time and once the aqua part of VCL has been implemented completely we will be able to run OOo without X11.&lt;br /&gt;
&lt;br /&gt;
===Structure of VCL===	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:VCLStructure.png|frame|center|Structure of VCL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;VCL Module&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;inc&amp;#039;&amp;#039;&amp;#039;: contains all the header files of VCL.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;prj&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;build.lst&amp;#039;&amp;#039; contains the dependencies of VCL for compilation and &amp;#039;&amp;#039;d.lst&amp;#039;&amp;#039; contains the files that will be sent back to the solver after the compilation of vcl is over.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;qa&amp;#039;&amp;#039;&amp;#039;: contains quality assurance tests for debugging.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: contains the source files of the module. These files are platform independent.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;test&amp;#039;&amp;#039;&amp;#039;: contains small testing programs used to check specific parts of VCL. For example the drag and drop feature.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;unx&amp;#039;&amp;#039;&amp;#039;: contains the unix implementation for the GUI.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;util&amp;#039;&amp;#039;&amp;#039;: contains the makefiles used to build the module&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;win&amp;#039;&amp;#039;&amp;#039;: contains the windows implementation for the GUI&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: contains &amp;#039;svdem&amp;#039;, the application used to test the aqua implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Aqua&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;app&amp;#039;&amp;#039;&amp;#039;: contains all the native files related to the application as a whole&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;gdi&amp;#039;&amp;#039;&amp;#039;: stands for Graphical Display Interface and contains all the files related to displaying bitmaps, geometric shapes, fonts etc...&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;src&amp;#039;&amp;#039;&amp;#039;: contains the makefile of the aqua part.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;window&amp;#039;&amp;#039;&amp;#039;: contains all the files related to displaying the windows and menus.&lt;br /&gt;
&lt;br /&gt;
===Svdem in VCL===&lt;br /&gt;
Svdem is a simple application that is used to test and show the evolution of the implementation of the aqua part of VCL. It is implemented like a regular OOo application and uses VCL the same way. Here is a picture of the &amp;#039;svdem&amp;#039; application in VCL:&lt;br /&gt;
&lt;br /&gt;
[[Image:SVDEM_window.png|frame|center|The svdem application in VCL]]&lt;br /&gt;
&lt;br /&gt;
===Svdem in svtools===&lt;br /&gt;
Svtools is a module containing file/print dialogues, color chooser, font chooser, calendars etc... It uses VCL to display these elements so another svdem application has been created in this module so we can test the look of the elements it implements. Here is a screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
===Carbon and VCL===&lt;br /&gt;
Using Carbon in VCL is actually easier than it seems. You just need to first be comfortable with the concepts of Carbon and how to manipulate the different elements of the API and then it will be very easy to implement functions. I will show you an example of how to implement a VCL function with Carbon later, but now you need to understand how using Carbon was made possible in VCL.&lt;br /&gt;
&lt;br /&gt;
====Header files====&lt;br /&gt;
As you should know by now, the Carbon API is included in a program by writing &amp;lt;Carbon/Carbon.h&amp;gt; in the source file. In VCL this is done in a couple files. The most important are: &lt;br /&gt;
&lt;br /&gt;
.../inc/aquavclevents.hxx: contains the definition of all the Carbon event types that we want to handle in OOo.&lt;br /&gt;
.../inc/aquavcltypes.h: redefines some Carbon types to avoid confusion.&lt;br /&gt;
&lt;br /&gt;
Two other header files that you will see being included quite often are source/solenv/inc/premac.h and source/solenv/inc/postmac.h. The sole purpose of these files is to redefine some mac primitive types to avoid conflicts with other parts of the code. This is currently a hack and will most likely be removed and implemented differently in the future.&lt;br /&gt;
&lt;br /&gt;
====Example of using Carbon in VCL====&lt;br /&gt;
The procedure to follow when looking at implementing a function in any part of VCL is to look at the corresponding Windows implementation in the vcl/win folder. The Windows API is actually very close to the Carbon API and the Windows implementation can always give you an idea about how to structure your function. Here I am taking the example of the ShowFullScreen function in salframe.cxx. Here is the code in win/window/salframe.cxx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[cpp,N]&lt;br /&gt;
void WinSalFrame::ShowFullScreen( BOOL bFullScreen )&lt;br /&gt;
{&lt;br /&gt;
    if ( mbFullScreen == bFullScreen )&lt;br /&gt;
        return;&lt;br /&gt;
&lt;br /&gt;
    mbFullScreen = bFullScreen;&lt;br /&gt;
    if ( bFullScreen )&lt;br /&gt;
    {&lt;br /&gt;
        // Damit Taskleiste von Windows ausgeblendet wird&lt;br /&gt;
        DWORD nExStyle = GetWindowExStyle( mhWnd );&lt;br /&gt;
        if ( nExStyle &amp;amp; WS_EX_TOOLWINDOW )&lt;br /&gt;
        {&lt;br /&gt;
            mbFullScreenToolWin = TRUE;&lt;br /&gt;
            nExStyle &amp;amp;= ~WS_EX_TOOLWINDOW;&lt;br /&gt;
            SetWindowExStyle( mhWnd, nExStyle );&lt;br /&gt;
        }&lt;br /&gt;
        // save old position&lt;br /&gt;
        GetWindowRect( mhWnd, &amp;amp;maFullScreenRect );&lt;br /&gt;
&lt;br /&gt;
        // save show state&lt;br /&gt;
        mnFullScreenShowState = mnShowState;&lt;br /&gt;
        if ( !(GetWindowStyle( mhWnd ) &amp;amp; WS_VISIBLE) )&lt;br /&gt;
            mnShowState = SW_SHOW;&lt;br /&gt;
&lt;br /&gt;
        // set window to screen size&lt;br /&gt;
        ImplSalFrameFullScreenPos( this, TRUE );&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        // Do the opposite&lt;br /&gt;
	  ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the sake of space I did not include the code of the else statement. The first thing you need to look at are the arguments passed to the function. Here a boolean bFullScreen. You should read the [http://www.aliscafo.com/OOo/Documentation/CodingGuidelines.pdf OOo code guidelines] that describe the use of lowercase letters in front of variables. This argument will actually tell the function if we want to go in fullscreen mode when true and exit fullscreen mode when false. By reading the code above, we can deduce the following structure to our function:&lt;br /&gt;
&lt;br /&gt;
* check if the mode wanted equals the mode we are currently in.&lt;br /&gt;
* if we want to go into fullscreen mode, save the current state of the window, compute display bounds and resize window.&lt;br /&gt;
* If we want to exit fullscreen mode, put window into old state and resize.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is look in the Carbon API how to get the current display&amp;#039;s size, how to resize a window and how to save the current state of a window.&lt;br /&gt;
&lt;br /&gt;
====Display size====&lt;br /&gt;
To get the current display size you need to look in the [http://developer.apple.com/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/index.html Quartz Display Reference] and look at the &amp;#039;Functions by Task&amp;#039; tab. Most of the time you will be able to find what you need in there. The fourth section is interesting here since it talks about getting the display&amp;#039;s configuration. Then in the list of functions under this category you can find the CGDisplayScreenSize function. This function takes the display ID as an argument, which makes sense since you might have multiple displays connected together. The description of the type of the argument gives you a clue about finding the displays ID. You need to use the MainDisplayID function. As you can see it is very important that you define the structure of your function properly since it will make your search in the Carbon API much easier.&lt;br /&gt;
&lt;br /&gt;
====Resize window====&lt;br /&gt;
To implement this part you need to look at the [http://developer.apple.com/documentation/Carbon/Reference/Window_Manager/ Window Manager Reference]. Again you should follow the same process to look for the proper functions to use.&lt;br /&gt;
One important thing when you have to save the current state and attributes of the window is where to save them. You have to save them in the AquaSalFrame class itself. Once again if you look at the Windows implementation, you can find in vcl/win/inc/salframe.h that the size of the window is saved in the maFullScreenRect variable. Therefore it is advised that you use the same identifiers to avoid confusion. The attributes also need to be saved. In this case Windows does it differently but Carbon can save all the attributes in one variable. So we will create a WindowAttributes variable and give it the name maFullScreenAttr. Now we are able to finish implementing the function. Here is how the final code looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[cpp,N]&lt;br /&gt;
void AquaSalFrame::ShowFullScreen( BOOL bFullScreen )&lt;br /&gt;
{&lt;br /&gt;
    fprintf(stderr, &amp;quot;&amp;gt;*&amp;gt;_&amp;gt; %s\n&amp;quot;,__func__);&lt;br /&gt;
&lt;br /&gt;
	if( mbFullScreen == bFullScreen )&lt;br /&gt;
		return;&lt;br /&gt;
	&lt;br /&gt;
	mbFullScreen = bFullScreen;&lt;br /&gt;
	AquaSalFrame* pFrame = this;&lt;br /&gt;
	if( bFullScreen )&lt;br /&gt;
	{&lt;br /&gt;
		Rect newBounds;&lt;br /&gt;
		ImplSalCalcFullScreenSize( pFrame, &amp;amp;newBounds ); // Get new bounds&lt;br /&gt;
		GetWindowAttributes( mrWindow, &amp;amp;maFullScreenAttr ); // Save attributes&lt;br /&gt;
		ChangeWindowAttributes( mrWindow, kWindowNoAttributes, maFullScreenAttr );&lt;br /&gt;
		GetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;maFullScreenRect );&lt;br /&gt;
		SetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;newBounds );&lt;br /&gt;
		SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar );&lt;br /&gt;
		// -&amp;gt; Shows menubar when we move the mouse over it.&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		SetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;maFullScreenRect );&lt;br /&gt;
		ChangeWindowAttributes( mrWindow, maFullScreenAttr, kWindowNoAttributes );&lt;br /&gt;
		SetSystemUIMode( kUIModeNormal, nil );&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
static void ImplSalCalcFullScreenSize( const AquaSalFrame* pFrame, Rect* pSize )&lt;br /&gt;
{	&lt;br /&gt;
	CGDirectDisplayID mainDisplayID = CGMainDisplayID();&lt;br /&gt;
	printf(&amp;quot;Display ID %d\n&amp;quot;, mainDisplayID);&lt;br /&gt;
	&lt;br /&gt;
	CGRect rect;&lt;br /&gt;
	rect = CGDisplayBounds( mainDisplayID );&lt;br /&gt;
	printf( &amp;quot;Screen resolution: %fx%f\n&amp;quot;, rect.size.width, rect.size.height );&lt;br /&gt;
	&lt;br /&gt;
	// Stores current resolution in pSize.&lt;br /&gt;
	// Rect made out of ints -&amp;gt; cast required -&amp;gt; CGRect made out of floats.&lt;br /&gt;
	pSize-&amp;gt;top = 0;&lt;br /&gt;
	pSize-&amp;gt;left = 0;&lt;br /&gt;
	pSize-&amp;gt;bottom = static_cast&amp;lt;int&amp;gt;(rect.size.height);&lt;br /&gt;
	pSize-&amp;gt;right = static_cast&amp;lt;int&amp;gt;(rect.size.width);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Testing with svdem====&lt;br /&gt;
Since AquaSalFrame is implementation dependent. The programs of OpenOffice.org do not access this class directly but by using Wrapper functions. If you open vcl/workben/svdem.cxx you can see that the class MyWin used to display the window of svdem is a descendant of WorkWindow. WorkWindow is therefore the class you need to look at to see how you can invoke the fullscreen function properly. You can find it in vcl/source/window/wrkwin.cxx. In this file you have the ShowFullScreenMode function. This is the function you need to use. To test what was implemented is just the matter of calling: aMainWin.ShowFullScreenMode(true) in svdem. You need to use a similar process for all the new functions you implement.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
To conclude this brief introduction, I would advise you to first get connected to the team so you know where you can contribute and choose something that is interesting for you also. After that I would advise you to get the source code, compile it and run svdem to see how everything works. After that you can start working on the code. Until VCL is replaced with a more modern toolkit, the strategy to successfully implement new features is to understand how VCL implements them by looking at the Windows implementation and then understand how Carbon would implement it and combine both to make it happen.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Intro_To_Mac_Porting&amp;diff=32493</id>
		<title>Intro To Mac Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Intro_To_Mac_Porting&amp;diff=32493"/>
		<updated>2007-05-18T05:29:56Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: Update link to Google soc/2006&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction To Porting OpenOffice.org To the Mac==&lt;br /&gt;
The goal of this article is to teach any developer interested in joining the [[Mac OS X|Macintosh]] porting team of [[OpenOffice.org]] the basic information to get started. After reading this guide the newcomer will understand: how to connect with other members of the team, how to get and compile the source code,  the purpose and organization of the VCL module and finally how to use the Carbon API. This also summarizes the knowledge that I had to acquire to complete my [http://code.google.com/soc/2006/ooo/appinfo.html?csaid=E3F7148B88FBB54 Google Summer of Code 2006 project]. I would like to thank the following people for helping me and teaching me what they knew: Eric Bachard and Pavel Janik.&lt;br /&gt;
&lt;br /&gt;
==Programming and System Requirements==&lt;br /&gt;
&lt;br /&gt;
===Programming Requirements===&lt;br /&gt;
To be comfortable in working on the porting project you should have a good knowledge of C++, a basic knowledge of the UNIX command line and if possible some knowledge of the Mac OS X Carbon API. The most important is that you need to be familiar with C++. The Carbon API can be learned very easily with the extensive documentation that Apple provides. Here are some important pages that you should get familiar with:&lt;br /&gt;
&lt;br /&gt;
====Carbon Guides====&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/newtocarbon/index.html Carbon Overview]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/Carbon_Event_Manager/index.html Carbon Event Manager Programming Guide]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Conceptual/HandlingWindowsControls/index.html Handling Carbon Windows and Controls]&lt;br /&gt;
*[http://developer.apple.com/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/index.html Quartz 2D Programming Guide]&lt;br /&gt;
	&lt;br /&gt;
====Carbon References====&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Reference/Carbon_Event_Manager_Ref/index.html Carbon Event Manager Reference]&lt;br /&gt;
*[http://developer.apple.com/documentation/Carbon/Reference/Window_Manager/ Window Manager Reference ]&lt;br /&gt;
&lt;br /&gt;
===System Requirements===&lt;br /&gt;
A Macintosh (PowerPC/Intel) running Mac OS X 10.4. You need to have  [http://connect.apple.com XCode] (need login to access old versions) installed. There are some problems with the latest versions, so download either 2.1 or 2.2. This will ensure that you have the proper tools installed to compile the source and will minimize the number of problems.&lt;br /&gt;
&lt;br /&gt;
==Connect With the OOo Developer Teams==&lt;br /&gt;
&lt;br /&gt;
===IRC Channels===&lt;br /&gt;
An important part of working on the OpenOffice.org project is to be connected with other developers to get and give help. Online chat channels are the first essential mean of communication between them. This is an important step. You will probably run into some problems when compiling the source code and you can find the answers by asking people in these rooms. Therefore download an IRC client such as [http://colloquy.info/downloads.html Colloquy] or [http://sourceforge.net/projects/xchataqua/ X-Chat Aqua] before going any further. &lt;br /&gt;
&lt;br /&gt;
====How to connect to these channels====&lt;br /&gt;
&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&lt;br /&gt;
* irc.freenode.net&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Rooms&amp;#039;&amp;#039;&lt;br /&gt;
* #openoffice.org – main developer room.&lt;br /&gt;
* #ooo_macport – room for the mac porting team, weekly meetings.&lt;br /&gt;
* #fr.openoffice.org – French developers room.&lt;br /&gt;
* #openoffice.org-de – German developers room.&lt;br /&gt;
&lt;br /&gt;
The first two are the most important rooms. If you are a developer from a non-English speaking country there is a good chance that you will also be able to find a room specific for OOo developers speaking your language. The last two, are examples of such rooms.&lt;br /&gt;
&lt;br /&gt;
===Create an account on OpenOffice.org===&lt;br /&gt;
You need to create an account on [http://projects.openoffice.org/index.html OpenOffice.org]. This account will allow you to manage, which projects you are a member of and to subscribe to mailing lists (next step). Also you will have access to IssueZilla and will be able to follow the evolution of issues by receiving forwarded emails about them. You will also be able to ask for the permission of committing source code later on.&lt;br /&gt;
&lt;br /&gt;
===Mailing Lists===&lt;br /&gt;
Another essential part of being connected to the OOo community is to subscribe to mailing lists. This is where new code is sent for testing and where current issues are discussed. If you are stuck on something it is a very good idea to send your question to the mailing lists. A lot of people are subscribed to them and you will certainly find an answer. You can check all the mailing lists  [http://www.openoffice.org/mail_list.html#project here]. You should subscribe at least to the following ones:&lt;br /&gt;
&lt;br /&gt;
* dev@openoffice.org: general developers mailing list&lt;br /&gt;
* mac@porting.openoffice.org: mac porting specific list&lt;br /&gt;
* dev@gsl.openoffice.org: vcl specific list (more on vcl later)&lt;br /&gt;
&lt;br /&gt;
===Sign the JCA===&lt;br /&gt;
An important step before submitting new code or fixing code is to sign the JCA. This is an agreement that gives Sun joint ownership over the code you wrote and want to include in the source. Go to [http://contributing.openoffice.org/programming.html this page] and at the bottom you can find a link to the pdf version of the agreement and the terms. You have to sign and submit this agreement for your code to be included in the OOo source tree.&lt;br /&gt;
&lt;br /&gt;
==Compilation and tips==&lt;br /&gt;
Information about downloading the source code can be found here:&lt;br /&gt;
&lt;br /&gt;
* [[AquaBuild]]&lt;br /&gt;
* [[MacOSXBuildInstructions|OS X Build Instructions]]&lt;br /&gt;
&lt;br /&gt;
Before starting the compilation, you should download [http://ccache.samba.org/ ccache]. This program is a caching pre-processor to C/C++ compilers. It will speed up the compilation process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple shell script to automate the compilation process. You need to replace the path to the source code with the proper path. Also you need to change the path to gcp in the ./configure options (Here the path assumes you are using &amp;#039;DarwinPorts&amp;#039;). Finally you will need to change the source command if you are using an Intel machine to &amp;lt;code&amp;gt;source MacOSXIntelEnv.Set.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[sh,N]&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
 &lt;br /&gt;
cd &amp;lt;path&amp;gt;680_m182/source/config_office&lt;br /&gt;
&lt;br /&gt;
export CC=&amp;quot;ccache gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;ccache g++&amp;quot;&lt;br /&gt;
&lt;br /&gt;
./configure \&lt;br /&gt;
--without-nas \&lt;br /&gt;
--disable-odk \&lt;br /&gt;
--disable-cups \&lt;br /&gt;
--disable-gtk \&lt;br /&gt;
--disable-gnome-vfs \&lt;br /&gt;
--disable-crashdump \&lt;br /&gt;
--disable-mozilla \&lt;br /&gt;
--with-jdk-home=/System/Library/Frameworks/JavaVM.framework/Home \&lt;br /&gt;
--enable-pasf \&lt;br /&gt;
--enable-fontconfig \&lt;br /&gt;
--with-gnu-cp=/opt/local/bin/gcp \&lt;br /&gt;
--with-system-expat \&lt;br /&gt;
--with-system-curl \&lt;br /&gt;
--with-system-libxml&lt;br /&gt;
&lt;br /&gt;
cd ..&lt;br /&gt;
./bootstrap&lt;br /&gt;
source MacOSXPPCEnv.Set.sh&lt;br /&gt;
dmake 2&amp;gt;&amp;amp;1 | tee log.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can now launch the compilation. Don&amp;#039;t forget that if you run into some problems you can always ask on the IRC channels. Also since the compilation process takes some time, start introducing yourself to the other developers on the team, ask which parts need to be worked on and choose one that is interesting to you.&lt;br /&gt;
&lt;br /&gt;
==VCL==&lt;br /&gt;
&lt;br /&gt;
===VCL Dependencies===&lt;br /&gt;
VCL stands for &amp;#039;Visual Class Library&amp;#039;, it is the module responsible for linking the underlying functions of OOo to the graphical interface. It contains the implementation of all the components of the GUI for each platform. The folder of interest for us is the &amp;#039;aqua&amp;#039; folder. This is where you will spend most of your time and once the aqua part of VCL has been implemented completely we will be able to run OOo without X11.&lt;br /&gt;
&lt;br /&gt;
===Structure of VCL===	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:VCLStructure.png|frame|center|Structure of VCL]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;VCL Module&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;inc&amp;#039;&amp;#039;&amp;#039;: contains all the header files of VCL.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;prj&amp;#039;&amp;#039;&amp;#039;: &amp;#039;&amp;#039;build.lst&amp;#039;&amp;#039; contains the dependencies of VCL for compilation and &amp;#039;&amp;#039;d.lst&amp;#039;&amp;#039; contains the files that will be sent back to the solver after the compilation of vcl is over.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;qa&amp;#039;&amp;#039;&amp;#039;: contains quality assurance tests for debugging.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;source&amp;#039;&amp;#039;&amp;#039;: contains the source files of the module. These files are platform independent.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;test&amp;#039;&amp;#039;&amp;#039;: contains small testing programs used to check specific parts of VCL. For example the drag and drop feature.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;unx&amp;#039;&amp;#039;&amp;#039;: contains the unix implementation for the GUI.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;util&amp;#039;&amp;#039;&amp;#039;: contains the makefiles used to build the module&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;win&amp;#039;&amp;#039;&amp;#039;: contains the windows implementation for the GUI&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;workben&amp;#039;&amp;#039;&amp;#039;: contains &amp;#039;svdem&amp;#039;, the application used to test the aqua implementation.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Aqua&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;app&amp;#039;&amp;#039;&amp;#039;: contains all the native files related to the application as a whole&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;gdi&amp;#039;&amp;#039;&amp;#039;: stands for Graphical Display Interface and contains all the files related to displaying bitmaps, geometric shapes, fonts etc...&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;src&amp;#039;&amp;#039;&amp;#039;: contains the makefile of the aqua part.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;window&amp;#039;&amp;#039;&amp;#039;: contains all the files related to displaying the windows and menus.&lt;br /&gt;
&lt;br /&gt;
===Svdem in VCL===&lt;br /&gt;
Svdem is a simple application that is used to test and show the evolution of the implementation of the aqua part of VCL. It is implemented like a regular OOo application and uses VCL the same way. Here is a picture of the &amp;#039;svdem&amp;#039; application in VCL:&lt;br /&gt;
&lt;br /&gt;
[[Image:SVDEM_window.png|frame|center|The svdem application in VCL]]&lt;br /&gt;
&lt;br /&gt;
===Svdem in svtools===&lt;br /&gt;
Svtools is a module containing file/print dialogues, color chooser, font chooser, calendars etc... It uses VCL to display these elements so another svdem application has been created in this module so we can test the look of the elements it implements. Here is a screenshot:&lt;br /&gt;
&lt;br /&gt;
[[Image:nativectrlsvtools.jpg|200px|frame|center|The svdem application in svtools. [http://photos1.blogger.com/blogger2/3622/26233778049693/1600/08-23-06-01.png Bigger Version]]]&lt;br /&gt;
&lt;br /&gt;
===Carbon and VCL===&lt;br /&gt;
Using Carbon in VCL is actually easier than it seems. You just need to first be comfortable with the concepts of Carbon and how to manipulate the different elements of the API and then it will be very easy to implement functions. I will show you an example of how to implement a VCL function with Carbon later, but now you need to understand how using Carbon was made possible in VCL.&lt;br /&gt;
&lt;br /&gt;
====Header files====&lt;br /&gt;
As you should know by now, the Carbon API is included in a program by writing &amp;lt;Carbon/Carbon.h&amp;gt; in the source file. In VCL this is done in a couple files. The most important are: &lt;br /&gt;
&lt;br /&gt;
.../inc/aquavclevents.hxx: contains the definition of all the Carbon event types that we want to handle in OOo.&lt;br /&gt;
.../inc/aquavcltypes.h: redefines some Carbon types to avoid confusion.&lt;br /&gt;
&lt;br /&gt;
Two other header files that you will see being included quite often are source/solenv/inc/premac.h and source/solenv/inc/postmac.h. The sole purpose of these files is to redefine some mac primitive types to avoid conflicts with other parts of the code. This is currently a hack and will most likely be removed and implemented differently in the future.&lt;br /&gt;
&lt;br /&gt;
====Example of using Carbon in VCL====&lt;br /&gt;
The procedure to follow when looking at implementing a function in any part of VCL is to look at the corresponding Windows implementation in the vcl/win folder. The Windows API is actually very close to the Carbon API and the Windows implementation can always give you an idea about how to structure your function. Here I am taking the example of the ShowFullScreen function in salframe.cxx. Here is the code in win/window/salframe.cxx:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[cpp,N]&lt;br /&gt;
void WinSalFrame::ShowFullScreen( BOOL bFullScreen )&lt;br /&gt;
{&lt;br /&gt;
    if ( mbFullScreen == bFullScreen )&lt;br /&gt;
        return;&lt;br /&gt;
&lt;br /&gt;
    mbFullScreen = bFullScreen;&lt;br /&gt;
    if ( bFullScreen )&lt;br /&gt;
    {&lt;br /&gt;
        // Damit Taskleiste von Windows ausgeblendet wird&lt;br /&gt;
        DWORD nExStyle = GetWindowExStyle( mhWnd );&lt;br /&gt;
        if ( nExStyle &amp;amp; WS_EX_TOOLWINDOW )&lt;br /&gt;
        {&lt;br /&gt;
            mbFullScreenToolWin = TRUE;&lt;br /&gt;
            nExStyle &amp;amp;= ~WS_EX_TOOLWINDOW;&lt;br /&gt;
            SetWindowExStyle( mhWnd, nExStyle );&lt;br /&gt;
        }&lt;br /&gt;
        // save old position&lt;br /&gt;
        GetWindowRect( mhWnd, &amp;amp;maFullScreenRect );&lt;br /&gt;
&lt;br /&gt;
        // save show state&lt;br /&gt;
        mnFullScreenShowState = mnShowState;&lt;br /&gt;
        if ( !(GetWindowStyle( mhWnd ) &amp;amp; WS_VISIBLE) )&lt;br /&gt;
            mnShowState = SW_SHOW;&lt;br /&gt;
&lt;br /&gt;
        // set window to screen size&lt;br /&gt;
        ImplSalFrameFullScreenPos( this, TRUE );&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        // Do the opposite&lt;br /&gt;
	  ...&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For the sake of space I did not include the code of the else statement. The first thing you need to look at are the arguments passed to the function. Here a boolean bFullScreen. You should read the [http://www.aliscafo.com/OOo/Documentation/CodingGuidelines.pdf OOo code guidelines] that describe the use of lowercase letters in front of variables. This argument will actually tell the function if we want to go in fullscreen mode when true and exit fullscreen mode when false. By reading the code above, we can deduce the following structure to our function:&lt;br /&gt;
&lt;br /&gt;
* check if the mode wanted equals the mode we are currently in.&lt;br /&gt;
* if we want to go into fullscreen mode, save the current state of the window, compute display bounds and resize window.&lt;br /&gt;
* If we want to exit fullscreen mode, put window into old state and resize.&lt;br /&gt;
&lt;br /&gt;
The first thing to do is look in the Carbon API how to get the current display&amp;#039;s size, how to resize a window and how to save the current state of a window.&lt;br /&gt;
&lt;br /&gt;
====Display size====&lt;br /&gt;
To get the current display size you need to look in the [http://developer.apple.com/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/index.html Quartz Display Reference] and look at the &amp;#039;Functions by Task&amp;#039; tab. Most of the time you will be able to find what you need in there. The fourth section is interesting here since it talks about getting the display&amp;#039;s configuration. Then in the list of functions under this category you can find the CGDisplayScreenSize function. This function takes the display ID as an argument, which makes sense since you might have multiple displays connected together. The description of the type of the argument gives you a clue about finding the displays ID. You need to use the MainDisplayID function. As you can see it is very important that you define the structure of your function properly since it will make your search in the Carbon API much easier.&lt;br /&gt;
&lt;br /&gt;
====Resize window====&lt;br /&gt;
To implement this part you need to look at the [http://developer.apple.com/documentation/Carbon/Reference/Window_Manager/ Window Manager Reference]. Again you should follow the same process to look for the proper functions to use.&lt;br /&gt;
One important thing when you have to save the current state and attributes of the window is where to save them. You have to save them in the AquaSalFrame class itself. Once again if you look at the Windows implementation, you can find in vcl/win/inc/salframe.h that the size of the window is saved in the maFullScreenRect variable. Therefore it is advised that you use the same identifiers to avoid confusion. The attributes also need to be saved. In this case Windows does it differently but Carbon can save all the attributes in one variable. So we will create a WindowAttributes variable and give it the name maFullScreenAttr. Now we are able to finish implementing the function. Here is how the final code looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[cpp,N]&lt;br /&gt;
void AquaSalFrame::ShowFullScreen( BOOL bFullScreen )&lt;br /&gt;
{&lt;br /&gt;
    fprintf(stderr, &amp;quot;&amp;gt;*&amp;gt;_&amp;gt; %s\n&amp;quot;,__func__);&lt;br /&gt;
&lt;br /&gt;
	if( mbFullScreen == bFullScreen )&lt;br /&gt;
		return;&lt;br /&gt;
	&lt;br /&gt;
	mbFullScreen = bFullScreen;&lt;br /&gt;
	AquaSalFrame* pFrame = this;&lt;br /&gt;
	if( bFullScreen )&lt;br /&gt;
	{&lt;br /&gt;
		Rect newBounds;&lt;br /&gt;
		ImplSalCalcFullScreenSize( pFrame, &amp;amp;newBounds ); // Get new bounds&lt;br /&gt;
		GetWindowAttributes( mrWindow, &amp;amp;maFullScreenAttr ); // Save attributes&lt;br /&gt;
		ChangeWindowAttributes( mrWindow, kWindowNoAttributes, maFullScreenAttr );&lt;br /&gt;
		GetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;maFullScreenRect );&lt;br /&gt;
		SetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;newBounds );&lt;br /&gt;
		SetSystemUIMode( kUIModeAllHidden, kUIOptionAutoShowMenuBar );&lt;br /&gt;
		// -&amp;gt; Shows menubar when we move the mouse over it.&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		SetWindowBounds( mrWindow, kWindowContentRgn, &amp;amp;maFullScreenRect );&lt;br /&gt;
		ChangeWindowAttributes( mrWindow, maFullScreenAttr, kWindowNoAttributes );&lt;br /&gt;
		SetSystemUIMode( kUIModeNormal, nil );&lt;br /&gt;
	}&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
static void ImplSalCalcFullScreenSize( const AquaSalFrame* pFrame, Rect* pSize )&lt;br /&gt;
{	&lt;br /&gt;
	CGDirectDisplayID mainDisplayID = CGMainDisplayID();&lt;br /&gt;
	printf(&amp;quot;Display ID %d\n&amp;quot;, mainDisplayID);&lt;br /&gt;
	&lt;br /&gt;
	CGRect rect;&lt;br /&gt;
	rect = CGDisplayBounds( mainDisplayID );&lt;br /&gt;
	printf( &amp;quot;Screen resolution: %fx%f\n&amp;quot;, rect.size.width, rect.size.height );&lt;br /&gt;
	&lt;br /&gt;
	// Stores current resolution in pSize.&lt;br /&gt;
	// Rect made out of ints -&amp;gt; cast required -&amp;gt; CGRect made out of floats.&lt;br /&gt;
	pSize-&amp;gt;top = 0;&lt;br /&gt;
	pSize-&amp;gt;left = 0;&lt;br /&gt;
	pSize-&amp;gt;bottom = static_cast&amp;lt;int&amp;gt;(rect.size.height);&lt;br /&gt;
	pSize-&amp;gt;right = static_cast&amp;lt;int&amp;gt;(rect.size.width);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Testing with svdem====&lt;br /&gt;
Since AquaSalFrame is implementation dependent. The programs of OpenOffice.org do not access this class directly but by using Wrapper functions. If you open vcl/workben/svdem.cxx you can see that the class MyWin used to display the window of svdem is a descendant of WorkWindow. WorkWindow is therefore the class you need to look at to see how you can invoke the fullscreen function properly. You can find it in vcl/source/window/wrkwin.cxx. In this file you have the ShowFullScreenMode function. This is the function you need to use. To test what was implemented is just the matter of calling: aMainWin.ShowFullScreenMode(true) in svdem. You need to use a similar process for all the new functions you implement.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
To conclude this brief introduction, I would advise you to first get connected to the team so you know where you can contribute and choose something that is interesting for you also. After that I would advise you to get the source code, compile it and run svdem to see how everything works. After that you can start working on the code. Until VCL is replaced with a more modern toolkit, the strategy to successfully implement new features is to understand how VCL implements them by looking at the Windows implementation and then understand how Carbon would implement it and combine both to make it happen.&lt;br /&gt;
&lt;br /&gt;
-- [[User:Pdefilippis|Pdefilippis]] [mailto:aliscafo@gmail.com aliscafo@gmail.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aqua]]&lt;br /&gt;
[[Category:MacOSX]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=24690</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=24690"/>
		<updated>2007-02-08T23:07:38Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOF680_m6 , GNU/Linux SPARC built with Eclipse Java Compiler. Mac/Intel issues have been resolved by bug fixes, and further SPARC issues have been fixed by building with Eclipse. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Clipboard || GNU/Linux SPARC     || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Linguistic || GNU/Linux SPARC     || unopkg fails  || &lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/complextoolbarcontrols  || GNU/Linux SPARC || unopkg works || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/counter || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/remoteclient || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/DocumentLoader  || GNU/Linux SPARC || OK || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Compiler_versions_used_by_port_maintainers_and_release_engineers&amp;diff=24689</id>
		<title>Compiler versions used by port maintainers and release engineers</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Compiler_versions_used_by_port_maintainers_and_release_engineers&amp;diff=24689"/>
		<updated>2007-02-08T23:00:29Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Port maintainers: please state your current compiler needs on this page. This helps us to decide when we are able to deprecate an old version of a compiler without leaving a port behind.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
! Platform &lt;br /&gt;
! Distribution&lt;br /&gt;
! Maintainer&lt;br /&gt;
! C++/C-Compiler&lt;br /&gt;
! Java-Compiler/JRE&lt;br /&gt;
! Notes&lt;br /&gt;
|- &lt;br /&gt;
| Solaris Sparc&lt;br /&gt;
| Solaris 8 and newer&lt;br /&gt;
| OOo/SO RE (Sun Hamburg) hr@openoffice.org&lt;br /&gt;
| Sun Studio 8 / C++-5.5&lt;br /&gt;
| build: Sun JDK 1.4.1_03, ship: Sun JRE-1.5&lt;br /&gt;
| plan to migrate to C++-5.8/SunStudio11 later on SRC680 or on new codeline&lt;br /&gt;
|-&lt;br /&gt;
| Solaris x86&lt;br /&gt;
| Solaris 8 and newer&lt;br /&gt;
| OOo/SO RE (Sun Hamburg) hr@openoffice.org&lt;br /&gt;
| Sun Studio 8 / C++-5.5&lt;br /&gt;
| build: Sun JDK 1.4.1_03, ship: Sun JRE-1.5&lt;br /&gt;
| plan to migrate to C++-5.8/SunStudio11 later on SRC680 or on new codeline&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86&lt;br /&gt;
| all distributions with glibc-2.2.4 or newer&lt;br /&gt;
| OOo/SO RE (Sun Hamburg) hr@openoffice.org&lt;br /&gt;
| GCC 3.4.1 + enum patch + visibility patch&lt;br /&gt;
| build: Sun JDK 1.4.1_03, ship: Sun JRE-1.5&lt;br /&gt;
| plan to migrate to current gcc on new codeline&lt;br /&gt;
|-&lt;br /&gt;
| Linux PowerPC&lt;br /&gt;
| Baseline for build : all distributions with glibc-2.3.x or newer&lt;br /&gt;
|  OOo only (Community builds)&lt;br /&gt;
| GCC 4.0.1&lt;br /&gt;
|&lt;br /&gt;
| Depending on the distributions, some values can change&lt;br /&gt;
|-&lt;br /&gt;
| GNU/Linux SPARC&lt;br /&gt;
| Baseline for build : sparc&lt;br /&gt;
|  OOo only (Community builds) sparcmoz@openoffice.org&lt;br /&gt;
| GCC 4.1.2 preview&lt;br /&gt;
| Eclipse Java Compiler v_677_R32x 3.2.1 per Debian java-gcj-compat&lt;br /&gt;
| For building vanilla SRC680 sources with gcc4.1, some minor [http://wiki.services.openoffice.org/wiki/GNULinuxSparcPorting#Building_with_GCC_4.1 issues are described here.]&lt;br /&gt;
|-&lt;br /&gt;
| Mac OS X&lt;br /&gt;
| Baseline for build : Mac OS X 10.3 compatibility&lt;br /&gt;
| OOo only (Community builds)&lt;br /&gt;
| GCC 3.3 (version provided with Mac OS X 10.3 tools)&lt;br /&gt;
| build: Apple JDK 1.4&lt;br /&gt;
| plan to migrate to gcc-4.0.1 if cross-compiling allows to build from Mac OS X 10.4 for Mac OS X 10.3&lt;br /&gt;
|-&lt;br /&gt;
| Windows&lt;br /&gt;
| Windows 98 SE - Windows XP&lt;br /&gt;
| OOo/SO RE (Sun Hamburg) obo@openoffice.org&lt;br /&gt;
| Microsoft Visual Studio .net 2003&lt;br /&gt;
| build: Sun JDK 1.4.1_03, ship: Sun JRE-1.5&lt;br /&gt;
| no current plans to migrate to a newer version&lt;br /&gt;
|-&lt;br /&gt;
| OS/2&lt;br /&gt;
| eComStation&lt;br /&gt;
| OOo only (SSI build)&lt;br /&gt;
| GCC 3.3.5&lt;br /&gt;
|&lt;br /&gt;
| no current plans to migrate to a newer version&lt;br /&gt;
|-&lt;br /&gt;
| FreeBSD&lt;br /&gt;
| Baseline for build : FreeBSD 5.3-RELEASE&lt;br /&gt;
| maho@openoffice.org&lt;br /&gt;
| GCC 3.4.1 + enum patch + visibility patch&lt;br /&gt;
| build: unofficially ported SUN JDK 1.4.2&lt;br /&gt;
| Usually ports take care of everything we need. A patch for ld.so is needed for prior than 5.2.1. http://porting.openoffice.org/freebsd/&lt;br /&gt;
|-&lt;br /&gt;
| Linux x86/ppc&lt;br /&gt;
| Fedora Core 5&lt;br /&gt;
| caolanm@redhat.com&lt;br /&gt;
| GCC 4.1.0&lt;br /&gt;
| gcj-4.1.0/gij-4.1.0&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Linux x86/ppc/x86_64&lt;br /&gt;
| Fedora Core 6&lt;br /&gt;
| caolanm@redhat.com&lt;br /&gt;
| GCC 4.1.1&lt;br /&gt;
| eclipse-ecj-3.2.1/gij-4.1.1&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Linux x86/ppc/sparc&lt;br /&gt;
| Ubuntu 5.10&lt;br /&gt;
| doko@ubuntu.com&lt;br /&gt;
| GCC 4.0.2&lt;br /&gt;
| gcj-4.0.2/gij-4.0.2&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| Linux x86/ppc/sparc&lt;br /&gt;
| Ubuntu 6.06&lt;br /&gt;
| doko@ubuntu.com&lt;br /&gt;
| GCC 4.0.3&lt;br /&gt;
| gcj-4.1.0/gij-4.1.0&lt;br /&gt;
| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Using Cpp with the OOo SDK|Using C++ with OOo SDK]]&lt;br /&gt;
* Writing a Program to Control OpenOffice.org, by Franco Pingiori — [http://www.linuxjournal.com/article/8550 Part 1] and [http://www.linuxjournal.com/article/8608 Part 2], Linux Journal&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Cpp]]&lt;br /&gt;
[[Category:Uno]]&lt;br /&gt;
[[Category:Porting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2008_Miniconf&amp;diff=23758</id>
		<title>LCA 2008 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2008_Miniconf&amp;diff=23758"/>
		<updated>2007-01-22T22:05:14Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: New page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at [http://www.mel8ourne.org/ linux.conf.au 2008]==&lt;br /&gt;
&lt;br /&gt;
 Miniconf  [http://lca2007.linux.org.au/Miniconfs LCA 2007 Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay   [http://lca2007.linux.org.au/OpenDay LCA 2007 OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, in Dunedin NZ in 2006, and in Sydney 2007. The [http://www.mel8ourne.org/ 2008 LCA] will be held in [http://www.melbourne.vic.gov.au Melbourne, Australia] from 28 January to 2 February 2008, including Miniconf sessions during the first two days (28-29 January). If you would like to participate in the OOo Miniconf in 2008, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes formal presentations, workshops, Q&amp;amp;A and problem solving.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
|  ||  Speakers name here || Describe the presentation here       &lt;br /&gt;
|- &lt;br /&gt;
|  ||   ||       &lt;br /&gt;
|- &lt;br /&gt;
|  ||   ||       &lt;br /&gt;
|-&lt;br /&gt;
|  ||   ||       &lt;br /&gt;
|- &lt;br /&gt;
|  ||   ||       &lt;br /&gt;
|- &lt;br /&gt;
|  ||   ||       &lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  put suggestions here &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open Source community. The organisation aims to do this best by taking enthusiasms within the community, such as FOSS issues, projects, education, advocacy just to name a few, and help them flourish, to succeed. The lifeblood of this organisation is the people in the community, and Linux Australia strives to be both relevant and useful to the community. For more details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=23323</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=23323"/>
		<updated>2007-01-12T03:53:58Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30 || || Lunch &lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
| 14:30 || Leslie Hawthorn || Update on Google Summer of Code - OOo Projects&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 || || Afternoon Tea&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=23305</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=23305"/>
		<updated>2007-01-12T02:20:16Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30 || || Lunch &lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
| 14:30 ||  || Update on Google Summer of Code - OOo Projects&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 || || Afternoon Tea&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22677</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22677"/>
		<updated>2006-12-29T09:43:24Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Clipboard || GNU/Linux SPARC     || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Linguistic || GNU/Linux SPARC     || unopkg fails  || &lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/complextoolbarcontrols  || GNU/Linux SPARC || unopkg works || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/counter || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/remoteclient || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/DocumentLoader  || GNU/Linux SPARC || OK || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22535</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22535"/>
		<updated>2006-12-22T06:43:08Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Clipboard || GNU/Linux SPARC     || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev/Linguistic || GNU/Linux SPARC     || unopkg fails  || &amp;quot;/home/jim/m197/program/unopkg&amp;quot; add -f &amp;quot;/home/jim/sdk/LINUXexample.out/bin/SampleHyphenator.uno.pkg&amp;quot;&lt;br /&gt;
make: *** [/home/jim/sdk/LINUXexample.out/misc/devguide_officedevlinguistic_register_component.flag] Broken pipe&lt;br /&gt;
 &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/complextoolbarcontrols  || GNU/Linux SPARC || unopkg works || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/counter || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/remoteclient || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/DocumentLoader  || GNU/Linux SPARC || OK || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22486</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22486"/>
		<updated>2006-12-21T05:30:56Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30 || || Lunch &lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 || || Afternoon Tea&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22485</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22485"/>
		<updated>2006-12-21T05:29:13Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30 || || Lunch &lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 || || Afternoon Tea&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22484</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22484"/>
		<updated>2006-12-21T05:22:29Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Q&amp;amp;A and Demonstrations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30  Lunch || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 Afternoon Tea || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Q&amp;amp;A and Demonstrations==&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22483</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22483"/>
		<updated>2006-12-21T05:21:09Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30  Lunch || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 Afternoon Tea || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Q&amp;amp;A and Demonstrations===&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22482</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22482"/>
		<updated>2006-12-21T05:20:29Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Developing our Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30  Lunch || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 Afternoon Tea || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Q&amp;amp;A and Demonstrations===&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22481</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22481"/>
		<updated>2006-12-21T05:19:36Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Formal Presentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30  Lunch || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 Afternoon Tea || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Q&amp;amp;A and Demonstrations===&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22480</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22480"/>
		<updated>2006-12-21T05:16:27Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Formal Presentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
==Formal Presentations==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Time || Presenter || Topic&lt;br /&gt;
|-&lt;br /&gt;
| 11:00 || Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|- &lt;br /&gt;
| 11:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 12:30  Lunch || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 14:00 || Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 14:50 || Jim Watson   || Using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
| 15:30 Afternoon Tea || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 16:00 || Jonathon Coombes    || Base - using databases in OpenOffice.org&lt;br /&gt;
|-&lt;br /&gt;
| 16:50 || || Q&amp;amp;A, demonstrations&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || || Close &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Q&amp;amp;A and Demonstrations===&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf. These sessions will allow for one-on-one or small group problem solving and demonstration of features, for example:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22479</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22479"/>
		<updated>2006-12-21T04:58:19Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Program */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf includes 4 formal presentations. Informal workshops, Q&amp;amp;A and problem solving will be available at other times through the day. This will also allow us to respond to to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
==Formal Presentations==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Building OOo and using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
|   Jonathon Coombes    || Base - using databases in OpenOffice.org &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22478</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=22478"/>
		<updated>2006-12-21T04:51:17Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Presentations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
==Formal Presentations==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Building OOo and using the Software Development Kit &lt;br /&gt;
|-&lt;br /&gt;
|   Jonathon Coombes    || Base - using databases in OpenOffice.org &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22437</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22437"/>
		<updated>2006-12-20T12:30:19Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: more tests&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/complextoolbarcontrols  || GNU/Linux SPARC || unopkg works || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/counter || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/remoteclient || GNU/Linux SPARC || OK || needs patch [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/DocumentLoader  || GNU/Linux SPARC || OK || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22434</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=22434"/>
		<updated>2006-12-20T11:53:04Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: another sdk test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run&lt;br /&gt;
|-&lt;br /&gt;
| examples/cpp/complextoolbarcontrols  || GNU/Linux SPARC || unopkg works || needs patches [http://qa.openoffice.org/issues/show_bug.cgi?id=72679 Issue 72679] and [http://qa.openoffice.org/issues/show_bug.cgi?id=72793 Issue 72793]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=21726</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=21726"/>
		<updated>2006-12-07T21:07:44Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* OOo Miniconf at linux.conf.au 2007 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
 Miniconf Tuesday 16 January 2007 [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] &lt;br /&gt;
&lt;br /&gt;
 OpenDay Thursday 18 January 2007 [http://lca2007.linux.org.au/OpenDay LCA OpenDay page]&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Talk:OOoRelease1AutomationTestMatrix&amp;diff=20403</id>
		<title>Talk:OOoRelease1AutomationTestMatrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Talk:OOoRelease1AutomationTestMatrix&amp;diff=20403"/>
		<updated>2006-11-16T11:38:50Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I guess &amp;quot;Linux&amp;quot; should be &amp;quot;Linux x86&amp;quot; and &amp;quot;SPARC&amp;quot; should be &amp;quot;Solaris SPARC&amp;quot;? I am testing GNU/Linux SPARC but do not think Sun tests that one?&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19609</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19609"/>
		<updated>2006-10-28T12:11:47Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Step 4: Build issues*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GNU Linux Sparc Porting ==&lt;br /&gt;
&lt;br /&gt;
The objective is to maintain the upstream sources so that the GNU/Linux SPARC platform can be packaged for example by debian, gentoo and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all java building is done with gcj. &lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
- fix multimedia&lt;br /&gt;
&lt;br /&gt;
- more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by Sun [http://www.sun.com Sun]&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
Need to force 8 byte alignment:&lt;br /&gt;
 sal/typesconfig/typesconfig.c&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The main issue affects runtime&lt;br /&gt;
[http://qa.openoffice.org/issues/show_bug.cgi?id=59722 i59722 gcc-4.1: undefined usage of pointers in the icu module]&lt;br /&gt;
&lt;br /&gt;
 Get the up-to-date patch here, but browse to check for any later version:&lt;br /&gt;
 [http://www.go-oo.org/patches/src680 buildfix-gcc41-pointers-icu.diff]&lt;br /&gt;
&lt;br /&gt;
In my case GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
For GNU/Linux SPARC m173 builds with warnings, so to make warnings be errors it is proposed to adapt the code for warnings01 in solenv/inc/unxlngs.mk, see [http://qa.openoffice.org/issues/show_bug.cgi?id=67001 issue 67001]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj === &lt;br /&gt;
In my case I get the latest preview gcc4.1.2 sources and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. To adapt the code to those commands use cws_src680_maho1. Finally there is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 --with-java=gij \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and the workaround is configure --with-alloc=system&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906]&lt;br /&gt;
&lt;br /&gt;
 vcl: as we build with xorg7 and build nas, vcl needs to link libXau [http://qa.openoffice.org/issues/show_bug.cgi?id=64134 See patch at Issue 64134]&lt;br /&gt;
&lt;br /&gt;
 svx and binfilter: build problem in m186, see patch here: [http://qa.openoffice.org/issues/show_bug.cgi?id=70684 i70684]&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
 The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting|SparcPorting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19552</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19552"/>
		<updated>2006-10-27T11:10:56Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19551</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19551"/>
		<updated>2006-10-27T11:09:35Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:GNULinuxSparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19550</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19550"/>
		<updated>2006-10-27T11:08:12Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:GNU_Linux_Sparc_Porting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19549</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=19549"/>
		<updated>2006-10-27T11:07:11Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:GNULinuxSparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=19269</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=19269"/>
		<updated>2006-10-23T06:50:27Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Info (from LCA Organisers) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;br /&gt;
&lt;br /&gt;
==About linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
linux.conf.au is Australia&amp;#039;s annual technical conference for the Open Source&lt;br /&gt;
and Free Software developer community. Now in its eighth year, linux.conf.au&lt;br /&gt;
is regarded as one of the premier global FLOSS technical events and attracts&lt;br /&gt;
many international open source software developers and users.&lt;br /&gt;
&lt;br /&gt;
Returning to Sydney from the 15th to 20th of January, linux.conf.au 2007 is&lt;br /&gt;
supported by our Emperor sponsors, HP and IBM, and hosted at the University&lt;br /&gt;
of New South Wales. For more information about linux.conf.au 2007 visit our&lt;br /&gt;
website at: http://lca2007.linux.org.au/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==About Linux Australia==&lt;br /&gt;
&lt;br /&gt;
Linux Australia exists to serve and promote the Australian Linux and Open&lt;br /&gt;
Source community. The organisation aims to do this best by taking&lt;br /&gt;
enthusiasms within the community, such as FOSS issues, projects, education,&lt;br /&gt;
advocacy just to name a few, and help them flourish, to succeed. The&lt;br /&gt;
lifeblood of this organisation is the people in the community, and Linux&lt;br /&gt;
Australia strives to be both relevant and useful to the community. For more&lt;br /&gt;
details about Linux Australia visit: http://www.linux.org.au/&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19169</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19169"/>
		<updated>2006-10-21T12:43:39Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Step 4: Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GNU Linux Sparc Porting ==&lt;br /&gt;
&lt;br /&gt;
The objective is to maintain the upstream sources so that the GNU/Linux SPARC platform can be packaged for example by debian, gentoo and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all java building is done with gcj. &lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
- fix multimedia&lt;br /&gt;
&lt;br /&gt;
- more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by Sun [http://www.sun.com Sun]&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
Need to force 8 byte alignment:&lt;br /&gt;
 sal/typesconfig/typesconfig.c&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The main issue affects runtime&lt;br /&gt;
[http://qa.openoffice.org/issues/show_bug.cgi?id=59722 i59722 gcc-4.1: undefined usage of pointers in the icu module]&lt;br /&gt;
&lt;br /&gt;
 Get the up-to-date patch here, but browse to check for any later version:&lt;br /&gt;
 [http://www.go-oo.org/patches/src680 buildfix-gcc41-pointers-icu.diff]&lt;br /&gt;
&lt;br /&gt;
In my case GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
For GNU/Linux SPARC m173 builds with warnings, so to make warnings be errors it is proposed to adapt the code for warnings01 in solenv/inc/unxlngs.mk, see [http://qa.openoffice.org/issues/show_bug.cgi?id=67001 issue 67001]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj === &lt;br /&gt;
In my case I get the latest preview gcc4.1.2 sources and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. To adapt the code to those commands use cws_src680_maho1. Finally there is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 --with-java=gij \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and [http://www.openoffice.org/nonav/issues/showattachment.cgi/36743/sal_align.diff here is a temporary workaround]&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906]&lt;br /&gt;
&lt;br /&gt;
 vcl: as we build with xorg7 and build nas, vcl needs to link libXau [http://qa.openoffice.org/issues/show_bug.cgi?id=64134 See patch at Issue 64134]&lt;br /&gt;
&lt;br /&gt;
 svx and binfilter: build problem in m186, see patch here: [http://qa.openoffice.org/issues/show_bug.cgi?id=70684 i70684]&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
 The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting|SparcPorting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19165</id>
		<title>GNU Linux Sparc Porting</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=GNU_Linux_Sparc_Porting&amp;diff=19165"/>
		<updated>2006-10-21T10:59:21Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Step 4: Build patch*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== GNU Linux Sparc Porting ==&lt;br /&gt;
&lt;br /&gt;
The objective is to maintain the upstream sources so that the GNU/Linux SPARC platform can be packaged for example by debian, gentoo and others.  Also to provide an upstream &amp;quot;benchmark&amp;quot; version that can be installed for checking who owns any bugs, while not interfering with the distribution&amp;#039;s installed packages. For GNU/Linux SPARC all java building is done with gcj. &lt;br /&gt;
&lt;br /&gt;
Other projects that need more work:&lt;br /&gt;
&lt;br /&gt;
- fix multimedia&lt;br /&gt;
&lt;br /&gt;
- more qa needs to be done&lt;br /&gt;
&lt;br /&gt;
The latest upstream release is on OpenOffice.org mirrors under contrib/linuxsparc&lt;br /&gt;
&lt;br /&gt;
== What is SPARC? ==&lt;br /&gt;
&lt;br /&gt;
SPARC means Scalable Processor ARChitecture [http://www.sparc.org about SPARC]&lt;br /&gt;
&lt;br /&gt;
The most common hardware implementation is done by Sun [http://www.sun.com Sun]&lt;br /&gt;
&lt;br /&gt;
Most GNU/Linux SPARC users are running second-hand hardware which may be quite old and the installed user base and developer resources are relatively small.&lt;br /&gt;
&lt;br /&gt;
There are 2 main flavours of SPARC hardware:&lt;br /&gt;
&lt;br /&gt;
 32 bit known as sparc (uname -m returns sparc)&lt;br /&gt;
 64 bit known as sparc64 (uname -m returns sparc64)&lt;br /&gt;
&lt;br /&gt;
GNU/Linux is ported to run on both sparc and sparc64, there are separate kernels for sparc and sparc64 but the majority of user software is designed to run on both sparc and sparc64.&lt;br /&gt;
&lt;br /&gt;
For example on my system I can find these files:&lt;br /&gt;
 jim@sun:/boot$ file vmlinux-2.6.13&lt;br /&gt;
 vmlinux-2.6.13: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, not stripped&lt;br /&gt;
&lt;br /&gt;
 jim@sun:~/o147/program$ file soffice.bin&lt;br /&gt;
 soffice.bin: ELF 32-bit MSB executable, SPARC, version 1 (SYSV), for GNU/Linux 2.2.0, dynamically linked (uses shared libs), stripped&lt;br /&gt;
&lt;br /&gt;
So the first issue for porting is, how to build the 32 bit product on a 64 bit system? The simple and correct method is to build in a shell where the command &amp;quot;uname -m&amp;quot; will return &amp;quot;sparc&amp;quot; on a &amp;quot;sparc64&amp;quot; machine. This is achieved by using the command &amp;quot;sparc32 bash&amp;quot; or &amp;quot;linux32 bash&amp;quot; to get the shell for building. See here for a [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=251149 more authoritative comment]&lt;br /&gt;
&lt;br /&gt;
== Which shell to use for building, sparc or sparc64? ==&lt;br /&gt;
&lt;br /&gt;
But for maintaining the port I prefer to not use the sparc shell (from the &amp;quot;linux32 bash&amp;quot; command) because that might hide some bugs or bad behaviour. For GNU/Linux Sparc the 32 bit product can be built in the sparc64 shell, by the simple method of:&lt;br /&gt;
&lt;br /&gt;
 compiler flag &amp;quot;-m32&amp;quot; will tell gcc to build sparc and not sparc64&lt;br /&gt;
&lt;br /&gt;
In the past bad behaviour occurred when a module ignores the configured compiler path or compiler flags.  For example:&lt;br /&gt;
&lt;br /&gt;
 configured to build with &amp;quot;/usr/local/4.1/bin/gcc -m32&amp;quot;&lt;br /&gt;
 module builds with a different &amp;quot;gcc&amp;quot; for example /usr/bin/gcc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Currently there are no examples of this bad behaviour. This will not be easily noticed unless all alternative possible compilers are excluded from the configured environment path.  Still there remains a risk that a module will seek &amp;quot;/usr/local/bin/gcc&amp;quot; and find it. This sometimes seemed to involve using libtool which may have some defaults configured on the build machine?&lt;br /&gt;
&lt;br /&gt;
In summary, building in the sparc shell is the simple and correct method, but building in a sparc64 shell is better for finding bugs.&lt;br /&gt;
&lt;br /&gt;
== Specific code for GNU/Linux SPARC ==&lt;br /&gt;
&lt;br /&gt;
There are only a small number of places where GNU/Linux SPARC requires different code than used by other GNU/Linux platforms. The following list is not complete  but it provides some examples and will be gradually increased. For a full history of the GNU/Linux SPARC port just query Issuezilla for issues where sparcmoz has reported or commented.&lt;br /&gt;
&lt;br /&gt;
===Platform Make file===&lt;br /&gt;
Various compiler and other flags are set in the platform Make file solenv/inc/unxlngs.mk. That file is kept as close as possible to solenv/inc/unxlngi6.mk but the following differences are important:&lt;br /&gt;
&lt;br /&gt;
If the assembler is called directly, it must build for sparc v7 by default (could use v8 safely?) and not v8plus or v9  &lt;br /&gt;
 # mk file for unxlngs&lt;br /&gt;
 ASM=$(CC)&lt;br /&gt;
 AFLAGS=-Wa,-K,PIC -c $(CDEFS)&lt;br /&gt;
&lt;br /&gt;
Code must be compiled with -fPIC, as -fpic will not do for sparc/sparc64&lt;br /&gt;
 PICSWITCH:=-fPIC&lt;br /&gt;
&lt;br /&gt;
Platform specific identifier for shared libs&lt;br /&gt;
 DLLPOSTFIX=ls&lt;br /&gt;
 DLLPRE=lib&lt;br /&gt;
 DLLPOST=.so&lt;br /&gt;
&lt;br /&gt;
===Module sal===&lt;br /&gt;
GNU/Linux SPARC did not provide an implementation of frame.h that was needed for backtrace functions. It was also needed to provide the backtrace function without using the crash reporter. Backtrace is currently broken, possibly something here:&lt;br /&gt;
 sal/osl/unx/backtrace.c&lt;br /&gt;
 sal/osl/unx/backtrace.h&lt;br /&gt;
&lt;br /&gt;
The following code provides runtime detection of the user hardware (sparc or sparc64) and loads some different code at start up.&lt;br /&gt;
 sal/osl/unx/util.c&lt;br /&gt;
 sal/osl/unx/asm/interlck_sparc.s&lt;br /&gt;
&lt;br /&gt;
This file is modified to build the preceding files &lt;br /&gt;
 sal/osl/unx/makefile.mk&lt;br /&gt;
&lt;br /&gt;
Need to force 8 byte alignment:&lt;br /&gt;
 sal/typesconfig/typesconfig.c&lt;br /&gt;
&lt;br /&gt;
===Module sc===&lt;br /&gt;
A number of runtime isssues (crash) were found with the early builds of the spreadsheet using gcc 3.2. A workaround was found to compile certain files with no optimisation. A review of the code suggests similar issues were found with other platforms, but in different files. The files were found fairly quickly by using a binary search pattern to locate the files that caused the crashes (build - test - crash - build half the files again without optimisation). Fortunately this type of work-around is supported by the build system environment variables NOOPTFILES and EXCEPTIONSNOOPTFILES!  It is possible some of these issues have gone away with later compilers, further investigation is needed. Refer to the source code as follows:&lt;br /&gt;
&lt;br /&gt;
 sc/source/core/data/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/core/tool/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/filter/excel/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/unoobj/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 sc/source/ui/view/makefile.mk:.IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A typical example follows from sc/source/core/data/makefile.mk:&lt;br /&gt;
&lt;br /&gt;
 .IF &amp;quot;$(OS)$(COM)$(CPUNAME)&amp;quot;==&amp;quot;LINUXGCCSPARC&amp;quot;&lt;br /&gt;
 NOOPTFILES= \&lt;br /&gt;
                $(SLO)$/column2.obj \&lt;br /&gt;
                $(SLO)$/column3.obj \&lt;br /&gt;
                $(SLO)$/table3.obj \&lt;br /&gt;
                $(SLO)$/table4.obj  \&lt;br /&gt;
                $(SLO)$/documen4.obj \&lt;br /&gt;
                $(SLO)$/conditio.obj \&lt;br /&gt;
                $(SLO)$/validat.obj&lt;br /&gt;
 EXCEPTIONSNOOPTFILES= \&lt;br /&gt;
        $(SLO)$/cell.obj&lt;br /&gt;
 .ELSE&lt;br /&gt;
 EXCEPTIONSFILES+= \&lt;br /&gt;
         $(SLO)$/cell.obj&lt;br /&gt;
 .ENDIF&lt;br /&gt;
&lt;br /&gt;
===Module bridges===&lt;br /&gt;
The bridges code in bridges/source/cpp_uno/gcc3_linux_sparc is copied exactly from the corresponding gcc3_linux_intel and only the assembler snippets have been changed.&lt;br /&gt;
&lt;br /&gt;
TODO: describe bridges code&lt;br /&gt;
&lt;br /&gt;
TODO: configuration, installation&lt;br /&gt;
&lt;br /&gt;
== Building with GCC 4.1.2 (preview) ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;I don&amp;#039;t mention here any issues that affect gcc &amp;lt; 4.1 &amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
The main issue affects runtime&lt;br /&gt;
[http://qa.openoffice.org/issues/show_bug.cgi?id=59722 i59722 gcc-4.1: undefined usage of pointers in the icu module]&lt;br /&gt;
&lt;br /&gt;
 Get the up-to-date patch here, but browse to check for any later version:&lt;br /&gt;
 [http://www.go-oo.org/patches/src680 buildfix-gcc41-pointers-icu.diff]&lt;br /&gt;
&lt;br /&gt;
In my case GCC 4.1 is built using gcc.gnu.org sources checked out by svn from gcc-4_1-branch and installed in /usr/local/4.1 with these configure flags: --prefix=/usr/local/4.1 --enable-java-awt=gtk,xlib &lt;br /&gt;
&lt;br /&gt;
For GNU/Linux SPARC m173 builds with warnings, so to make warnings be errors it is proposed to adapt the code for warnings01 in solenv/inc/unxlngs.mk, see [http://qa.openoffice.org/issues/show_bug.cgi?id=67001 issue 67001]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 1: get a version of gcc with suitable gcj === &lt;br /&gt;
In my case I get the latest preview gcc4.1.2 sources and build gcc into /usr/local/4.1&lt;br /&gt;
&lt;br /&gt;
=== Step 2: set up the required commands for build tools ===&lt;br /&gt;
&lt;br /&gt;
Note that the required compiler can be specified by setting environment variables CC and CXX before running configure. The code expects some &amp;quot;java&amp;quot; commands to be available in the PATH: java jar javadoc. Different distributions provide those commands in different ways, but when using one&amp;#039;s own gcc built from upstream sources then gcc provides instead the corresponding commands: gij fastjar gjdoc. To adapt the code to those commands use cws_src680_maho1. Finally there is an issue with internal ant commands in build files in xmerge so that a symbolic link is needed: javadoc-&amp;gt; gjdoc&lt;br /&gt;
&lt;br /&gt;
=== Step 3: configure ===&lt;br /&gt;
&lt;br /&gt;
In my case the configure commands may be like this:&lt;br /&gt;
&lt;br /&gt;
$ export CC=&amp;quot;ccache /usr/local/bin/gcc -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ export CXX=&amp;quot;ccache /usr/local/bin/g++ -m32&amp;quot;&lt;br /&gt;
&lt;br /&gt;
$ ./configure --with-jdk-home=/usr/local/4.1 --with-java=gij \&lt;br /&gt;
&lt;br /&gt;
--with-ant-home=/usr/local/apache-ant-1.6.5 \&lt;br /&gt;
&lt;br /&gt;
--enable-crashdump=STATIC --enable-symbols=SMALL --enable-build-mozilla \&lt;br /&gt;
&lt;br /&gt;
--with-package-format=rpm&lt;br /&gt;
&lt;br /&gt;
 Now if configure reports that &amp;quot;ant does not work&amp;quot; try this: export PATH=/path/to/gcj:$PATH&lt;br /&gt;
&lt;br /&gt;
Some additional [http://www.openoffice.org/servlets/ReadMsg?list=dev&amp;amp;msgNo=16375 hoops to jump through] for the crash reporter&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Build ===&lt;br /&gt;
&lt;br /&gt;
 berkeleydb - see [http://qa.openoffice.org/issues/show_bug.cgi?id=54657 issue 54657]&lt;br /&gt;
 berkeleydb has hardcoded &amp;quot;java&amp;quot; command with fallback to JAVA but environment defines JAVAINTERPRETER. the fix is in cws_src680_maho1&lt;br /&gt;
&lt;br /&gt;
 sal: Since m166 some memory alignment problem will cause bus errors (signal 10 or SIGBUS) on GNU/Linux SPARC. &lt;br /&gt;
 This is referenced at  [http://www.openoffice.org/issues/show_bug.cgi?id=65788 issue 65788] and [http://www.openoffice.org/nonav/issues/showattachment.cgi/36743/sal_align.diff here is a temporary workaround]&lt;br /&gt;
&lt;br /&gt;
 moz: some recent change in GCC? (4.1.2)  mimeExternalObjectClass&amp;#039; with &amp;#039;C++&amp;#039; linkage&lt;br /&gt;
 mimemult.cpp:76: error: conflicts with new declaration with &amp;#039;C&amp;#039; linkage&lt;br /&gt;
 [http://qa.openoffice.org/issues/show_bug.cgi?id=66906 issue 66906]&lt;br /&gt;
&lt;br /&gt;
 vcl: as we build with xorg7 and build nas, vcl needs to link libXau [http://qa.openoffice.org/issues/show_bug.cgi?id=64134 See patch at Issue 64134]&lt;br /&gt;
&lt;br /&gt;
 svx: build problem in m186, see patch here: [http://qa.openoffice.org/issues/show_bug.cgi?id=70684 i70684]&lt;br /&gt;
&lt;br /&gt;
== Installing from rpm without root access ==&lt;br /&gt;
&lt;br /&gt;
The GNU Linux Sparc packages from contrib/linuxsparc should not interfere with installations provided by the various distribution packagers such as debian, gentoo etc. Therefore the supplied rpms can be installed in the user&amp;#039;s home directory using the install_linux.sh script which is available on mirrors at pub/OpenOffice.org/developer/install_scripts/&lt;br /&gt;
&lt;br /&gt;
 The rpm command is required but root access is not required&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting|SparcPorting]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18960</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18960"/>
		<updated>2006-10-17T13:21:43Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Rules (from LCA Organisers) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;br /&gt;
&lt;br /&gt;
There will be one central place for all posters for the duration of &lt;br /&gt;
the conference.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18950</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18950"/>
		<updated>2006-10-17T10:54:19Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* LCA Rules*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;br /&gt;
&lt;br /&gt;
==Rules (from LCA Organisers)==&lt;br /&gt;
&lt;br /&gt;
The policy for miniconfs signage, sponsorship and merchandise is:&lt;br /&gt;
&lt;br /&gt;
1/ All signage will be supplied by the organisers. So this is basically&lt;br /&gt;
a no to the posters (promoting a product). Miniconf organisers interested in promoting their&lt;br /&gt;
projects can approach Pia for space at openday.&lt;br /&gt;
&lt;br /&gt;
2/ Miniconfs in general are not sponsored. Any sponsorship ideas&lt;br /&gt;
should go through Jeff.&lt;br /&gt;
&lt;br /&gt;
3/ Miniconfs can sell merchandise for the miniconf itself, but not&lt;br /&gt;
general project merch. E.g: T-Shirt with &amp;quot;Ratpoison -- 2007 - Sydney&amp;quot;,&lt;br /&gt;
would be fine, a Ratpoison branded mouse pad, would not.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18859</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18859"/>
		<updated>2006-10-16T07:30:00Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Timetable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
===Timetable===&lt;br /&gt;
&lt;br /&gt;
The LCA Miniconf organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18858</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18858"/>
		<updated>2006-10-16T07:28:58Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Demonstrations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Demonstrations===&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
==Timetable==&lt;br /&gt;
&lt;br /&gt;
the organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18857</id>
		<title>LCA 2007 Miniconf</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=LCA_2007_Miniconf&amp;diff=18857"/>
		<updated>2006-10-16T07:28:10Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Timetable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Marketing]]&amp;lt; [[Marketing]]&lt;br /&gt;
==OOo Miniconf at linux.conf.au 2007==&lt;br /&gt;
&lt;br /&gt;
The annual [http://lca2007.linux.org.au linux.conf.au (LCA)] is one of the major open source events world-wide. The OpenOffice.org community participated in the Miniconf program in Canberra 2005, and again in Dunedin NZ in 2006. Now we have been accepted on the program for 2007.&lt;br /&gt;
&lt;br /&gt;
The 2007 LCA will be held in [http://www.cityofsydney.nsw.gov.au/ Sydney, Australia] from 15th to 20th January 2007.&lt;br /&gt;
&lt;br /&gt;
If you like to participate in the OOo Miniconf on 16th January 2007, please update this article or email events@marketing.openoffice.org [http://marketing.openoffice.org/servlets/ProjectMailingListList (subscribe)]&lt;br /&gt;
&lt;br /&gt;
There is also an [http://lca2007.linux.org.au/Miniconfs LCA Miniconf page] and when we are ready there will be a link to our wiki.&lt;br /&gt;
&lt;br /&gt;
==Developing our Program ==&lt;br /&gt;
&lt;br /&gt;
LCA is about Linux, but OOo is for all platforms. There is strong interest and support for OOo among the Linux community, and there is much overlap between the two communities, having a shared interest in free software and open source. The LCA Miniconf is currently the only formal OOo event in our region (Australia/NZ).&lt;br /&gt;
&lt;br /&gt;
===Experience===&lt;br /&gt;
&lt;br /&gt;
The 2005 Miniconf comprised of 2 days mainly being structured presentations with around 40-50 attending most sessions.  The 2006 event was smaller but included structured presentations, demonstrations and workshop activities. It was interesting that many of the mainstream LCA conference presenters made use of OOo. During the 2006 event there was strong interest in Q&amp;amp;A and problem solving discussions and one-to-one or small group discussions. Much of the discussion was triggered by, and followed after, structured presentations.&lt;br /&gt;
&lt;br /&gt;
===Objectives for 2007 Miniconf===&lt;br /&gt;
&lt;br /&gt;
Based on the experience and from comments at the preceding events, the following objectives are proposed for 2007.&lt;br /&gt;
&lt;br /&gt;
 flexibility for LCA participants and OOo community to visit different Miniconfs&lt;br /&gt;
&lt;br /&gt;
 better opportunity for LCA participants to discuss issues and get help&lt;br /&gt;
&lt;br /&gt;
 more demonstration of OOo capabilities&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
The OOo Miniconf will run for one day, including a small number of structured presentations. Informal workshops, Q&amp;amp;A and problem solving will be available continuously through the day. This will provide flexibility for participants to come and go when they like. It will also allow us to be responsive to needs or interests of individuals attending LCA, while also providing for in-depth focus on a few issues of significance for OOo. &lt;br /&gt;
&lt;br /&gt;
===Formal Sessions===&lt;br /&gt;
&lt;br /&gt;
Topics currently envisaged are:&lt;br /&gt;
&lt;br /&gt;
  case study about some interesting users of OOo&lt;br /&gt;
&lt;br /&gt;
  development and demonstration of special capabilities of OOo&lt;br /&gt;
&lt;br /&gt;
  report on community building and new developments&lt;br /&gt;
&lt;br /&gt;
  a guide to learning and help resources available to users&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At some time during the program, there may be scope for a group discussion about next steps toward a dedicated OOo event for our region.&lt;br /&gt;
&lt;br /&gt;
===Suggested Presentations===&lt;br /&gt;
&lt;br /&gt;
Proposals are sought for presentations in the formal sessions. Please enter suggestions in the table below or private email to sparcmoz@openoffice.org&lt;br /&gt;
&lt;br /&gt;
Do not worry about there being too many, possible duplications, off topic etc, we can sort that out later:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Name || Topic&lt;br /&gt;
|-&lt;br /&gt;
| Michael Still     ||    Experiences of an author preparing a manuscript for publication using OOo   &lt;br /&gt;
|-&lt;br /&gt;
|  Michael Carden    ||       National Archives of Australia use of OOo as a plugin to their [http://xena.sourceforge.net Xena] software for conversion of Office formats to ODF for preservation purposes.&lt;br /&gt;
|-&lt;br /&gt;
|   Jim Watson   ||       Developments in OOo - an overview of current community projects and some insights into the process&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|-&lt;br /&gt;
|       ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Demonstrations==&lt;br /&gt;
&lt;br /&gt;
A number of workstations will be provided running OOo on different platforms. The following are already available, please add to the list if you can bring something, even if it is already listed, and later we can work out the best distribution of effort. Something with access to the conference wireless network, and some additional projectors would be useful.&lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux SPARC Sunblade 100  &lt;br /&gt;
&lt;br /&gt;
  OOo on GNU/Linux Intel Compaq Armada 1750 (1999 vintage laptop)&lt;br /&gt;
&lt;br /&gt;
  portable projectors&lt;br /&gt;
&lt;br /&gt;
These workstations and projectors will be used for one-on-one or small group problem solving and demonstration of features, to be run on-demand through the 2 days.&lt;br /&gt;
&lt;br /&gt;
Some prepared demonstrations can be run on a continuous basis and re-cycled on demand. These would run for about 15-20 mins. Planned subjects for demonstrations include:&lt;br /&gt;
&lt;br /&gt;
  using styles in Writer&lt;br /&gt;
&lt;br /&gt;
  spreadsheet techniques using Calc&lt;br /&gt;
&lt;br /&gt;
  effective presentations with Impress&lt;br /&gt;
&lt;br /&gt;
  less well known features - database, math, etc&lt;br /&gt;
&lt;br /&gt;
Any of the demonstrations can be adapted for larger groups if there is sufficient interest.&lt;br /&gt;
&lt;br /&gt;
Demonstrations, Q&amp;amp;A and problem solving will be adapted and responsive to issues raised by vistors or participants in the Miniconf.&lt;br /&gt;
&lt;br /&gt;
==Timetable==&lt;br /&gt;
&lt;br /&gt;
the organisers have asked us to arrange our sessions to align with the conference timetable shown below. This will make it easier for people to drift between Miniconfs. We don&amp;#039;t need to schedule the number of talks exactly as shown but what we do should fit into the time lines...&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Time || Session&lt;br /&gt;
|-&lt;br /&gt;
| 0900 || KEYNOTE           (non-miniconf time)&lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1030 || MORNING TEA      &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1100 || TALK 1 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1140 || TALK 1 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1150 || TALK 2 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1230 || TALK 2 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1230 || LUNCH            &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1400 || TALK 3 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1440 || TALK 3 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1450 || TALK 4 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1530 || TALK 4 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1530 || AFTERNOON TEA    &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1600 || TALK 5 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1640 || TALK 5 - End     &lt;br /&gt;
|-&lt;br /&gt;
| 1650 || TALK 6 - Start   &lt;br /&gt;
|-&lt;br /&gt;
| 1730 || TALK 6 - End     &lt;br /&gt;
|------------------------------&lt;br /&gt;
| 1730 || CLOSE            &lt;br /&gt;
|}&lt;br /&gt;
Basically the day consists of 4 * 1.5 hour sessions. Which, depending&lt;br /&gt;
on the day will either be 1 * 90 minute tutorial, 2 * 40 minute talks, &lt;br /&gt;
or 4 * 15 minute short talks.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18788</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18788"/>
		<updated>2006-10-15T05:07:29Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: more results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || GNU/Linux SPARC     ||   ||     &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Charts || MacIntel OS X      ||  unopkg fails ||  ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:SparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18787</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18787"/>
		<updated>2006-10-15T03:38:34Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: more results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; in configure.pl&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || package is added but macro is not available until disabled and re-enabled  ||   runtime error, see IZ&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||  macro runs OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:SparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18786</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18786"/>
		<updated>2006-10-15T03:17:56Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: more results&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; in configure.pl&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || ERROR: (com.sun.star.uno.RuntimeException) { { Message = &amp;quot;unsatisfied query for interface of type com.sun.star.configuration.backend.XSingleLayerStratum!&amp;quot;, Context = (com.sun.star.uno.XInterface) @0 } }&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || package is added but macro is not available until disabled and re-enabled  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:SparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18784</id>
		<title>SDK Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=SDK_Examples&amp;diff=18784"/>
		<updated>2006-10-15T02:03:26Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page records progress with testing the SDK Examples on new platforms - initially GNU/Linux SPARC and Mac Intel OS X. Testing should be followed by Issues created in IZ and patches. Please add results for other platforms.&lt;br /&gt;
Testing as at OOD680_m5 (2.0.4rc3), GNU/Linux SPARC tested using gcj-4.1.2&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;2&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin: 1em 1em 1em 0; background: #f9f9f9; border: 1px #aaa solid; border-collapse: collapse;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Path to Example || Platform || Comment || Status / Link to IZ Issue&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || MacIntel OS X    || Does not like spaces in OFFICE_HOME    ||  Need set OFFICE_HOME=&amp;quot; ... path &amp;quot; in configure.pl&lt;br /&gt;
|-&lt;br /&gt;
| setsdkenv_unix || GNU/Linux SPARC    ||  If no &amp;quot;java&amp;quot; commands available need adjust settings/settings.mk and settings/std.mk    ||&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps || GNU/Linux SPARC   ||  all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/FirstSteps   || MacIntel OS X  || all    ||  Needs a link libjpipe.jnilib -&amp;gt; libjpipe.dylib [http://qa.openoffice.org/issues/show_bug.cgi?id=69944 Issue69944] &lt;br /&gt;
|-   &lt;br /&gt;
| examples/DevelopersGuide/Text  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Text  || MacIntel OS X   || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || GNU/Linux SPARC  || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/UCB  || MacIntel OS X || all  || OK  &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || GNU/Linux SPARC  || unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Spreadsheet  || MacIntel OS X  || unopkg failed  || needs to be run from inside the program directory (see SDK 4.9.1) , also needs to be re-enabled&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || GNU/Linux SPARC  || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/SayHello  || MacIntel OS X || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || GNU/Linux SPARC  || build.xml needs property build.compiler=gcj (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ScriptingFramework/ScriptSelector  || MacIntel OS X   || (by ant) [exec] unopkg failed  ||   &lt;br /&gt;
|-    &lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || GNU/Linux SPARC   || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
|   examples/DevelopersGuide/ProfUNO/CppBinding    || MacIntel OS X     || all ||    OK&lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/ProfUNO/InterprocessConn || MacIntel OS X      || all  || OK   &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || GNU/Linux SPARC     || all  || OK    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/OfficeDev || MacIntel OS X      || all  || OK &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || GNU/Linux SPARC     || Makefile has hard-coded &amp;quot;javac&amp;quot; should be $(SDK_JAVAC) all OK except not tested DataAwareness.run || OK - some minor labels and text truncation    &lt;br /&gt;
|-&lt;br /&gt;
| examples/DevelopersGuide/Forms || MacIntel OS X      || all OK except not tested DataAwareness.run || OK some minor text truncation in ControlValidation.run  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Porting]]&lt;br /&gt;
[[Category:SparcPorting]]&lt;br /&gt;
[[Category:MacOSX]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18756</id>
		<title>Extensions development basic</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18756"/>
		<updated>2006-10-14T22:47:05Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Getting started tutorial&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
This page provides a getting started guide for writing macros in OpenOffice.org Basic. It assumes some prior programming knowledge. Please edit this page to make it more readable. I hope you will find it useful.&lt;br /&gt;
&lt;br /&gt;
If you already know the basics then you may want the [[CookBook]] for wrappers and examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Where do I write the code?=&lt;br /&gt;
OpenOffice.org Basic code is stored in modules within libraries. A library can be: &lt;br /&gt;
&lt;br /&gt;
*Shared (for a network install - OOo Macros &amp;amp; Dialogs) &lt;br /&gt;
*Just for the current user (My Macros &amp;amp; Dialogs) &lt;br /&gt;
*Within a document or template, so that its code is only available when that document is open.&lt;br /&gt;
&lt;br /&gt;
Libraries not stored in a document or template (that is libraries that are shared or for the current user) are referred to as &amp;#039;&amp;#039;&amp;#039;OpenOffice.org libraries&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
To determine the actual folders that contain the OpenOffice.org libraries see:&amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Options… &amp;gt; OpenOffice.org &amp;gt; Paths &amp;gt; BASIC&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Do not copy or move libraries using operating system commands. Use the macro organizer or package manager instead.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modules within libraries have a maximum size of 64kb. A library can contain up to 16,000 modules. &lt;br /&gt;
&lt;br /&gt;
For more information see online help for: Modules and Libraries.&lt;br /&gt;
&lt;br /&gt;
=Accessing the IDE=&lt;br /&gt;
To access the IDE for the first time: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Organize macros &amp;gt; OpenOffice.org Basic… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To get started we will use Module1 in the Standard library which is stored for the current user only: &lt;br /&gt;
&lt;br /&gt;
Type a name for the new macro: &amp;#039;&amp;#039;&amp;#039;HelloWorld&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
In the macro from listbox select &amp;#039;&amp;#039;&amp;#039;Standard&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Click &amp;#039;&amp;#039;&amp;#039;New&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
You should now see something like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The cursor will be positioned at the start of the &amp;lt;tt&amp;gt;Sub HelloWorld&amp;lt;/tt&amp;gt; line. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Now that while the IDE is running it can be accessed from the OpenOffice.org Window menu, or the task panel provided by the operating system.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Entering the code=&lt;br /&gt;
Select and delete: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Below the line &amp;quot;Sub HelloWorld&amp;quot; type &amp;lt;tt&amp;gt;msgbox &amp;quot;Hello World!&amp;quot;&amp;lt;/tt&amp;gt;, so that the editor looks like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
  msgbox &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Notes:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|The IDE does not provide code completion or help with command syntax as you type, but to get help on a Basic command position the cursor in the command and press F1.&amp;lt;br&amp;gt; OpenOffice.org Basic commands are not case sensitive. Thus msgbox, MSGBOX and Msgbox will all work.&amp;lt;br&amp;gt; Strings are enclosed in double quotes.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Running the code=&lt;br /&gt;
There are several ways of running the Basic code, these include: &lt;br /&gt;
&lt;br /&gt;
Directly from the IDE. There is a run button on the macro bar (by default the third control on the second toolbar). This will run the first macro in the current module. &lt;br /&gt;
&lt;br /&gt;
From the tools menu:&lt;br /&gt;
&lt;br /&gt;
(Version 1.1.x) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro…&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
(Version 1.9.x and above) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macro &amp;gt; Run Macro…&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ key press]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ menu entry]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a toolbar button. &lt;br /&gt;
&lt;br /&gt;
Creating a [[ control in a document]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to an event. &lt;br /&gt;
&lt;br /&gt;
For now try running the &amp;quot;HelloWorld&amp;quot; subroutine by clicking the &amp;#039;&amp;#039;&amp;#039;Run&amp;#039;&amp;#039;&amp;#039; button. A small dialog titled &amp;quot;soffice&amp;quot; with the text &amp;quot;Hello World!&amp;quot; and an OK button should be displayed.&lt;br /&gt;
&lt;br /&gt;
=Saving the code=&lt;br /&gt;
The code gets automatically saved whenever the container for the code gets saved. Thus, if the code is in an OpenOffice.org library (shared or users) then it gets automatically saved when OpenOffice.org exits. If the code is in a library which is part of a document it gets saved whenever the document is saved. &lt;br /&gt;
&lt;br /&gt;
On the Standard toolbar (by default the top toolbar) in the IDE there is a save button. If the code is in a document or template then clicking this button saves the entire document or template. If the code is in an OpenOffice.org library then just the current library gets saved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
It is possible to force variable declaration with &amp;lt;tt&amp;gt;Option Explicit&amp;lt;/tt&amp;gt; at the top of the module. For a discussion on whether to declare variables or not see: [[http://www.oooforum.org/forum/viewtopic.phtml?t=5845 this discussion]]. &lt;br /&gt;
&lt;br /&gt;
In that discussion the initial author of this wiki thought that variables should always be declared. Since then he has changed to not declaring them. In short it is generally a personal preference. In either case, it is the initial authors preference that variables be named according to the following convention, which is used in the examples in this Wiki: &lt;br /&gt;
&lt;br /&gt;
The first letter of the variable name indicates the type of value that the variable is going to hold, as per the following table (based on a table in Tutorial.pdf by Sun) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Letter&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Meaning&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Structure&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Boolean (TRUE or FALSE)&lt;br /&gt;
|-&lt;br /&gt;
|e&lt;br /&gt;
|Enumeration. This variable can only have one of a limited set of values.&lt;br /&gt;
|-&lt;br /&gt;
|f&lt;br /&gt;
|Float (3.402823 x 1038 to 1.401298 x 10-45. A single variable can take up to four bytes)&amp;lt;br&amp;gt; Double (1.79769313486232 x 10308 to 4.94065645841247 x 10-324. A double variable can take up to eight bytes)&amp;lt;br&amp;gt; Currency (-922337203685477.5808 to +922337203685477.5807 and takes up to eight bytes of memory)&lt;br /&gt;
|-&lt;br /&gt;
|m&lt;br /&gt;
|Array (aka sequence aka matrix)&lt;br /&gt;
|-&lt;br /&gt;
|n&lt;br /&gt;
|Integer (-32768 to 32767.) or&amp;lt;br&amp;gt; Long (-2147483648 and 2147483647).&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Object, service, or interface&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|String (A string variable can store up to 65535 Unicode characters).&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Interface, to indicate that only operations of a particular interface of an object are used&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Variant, Any&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use long descriptive variable names making use of camel case &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|User defined OpenOffice.org Basic variables are not case sensitive. But UNO-API constants are case sensitive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Convention exceptions to long descriptive names is for index variables where i, j, and k are commonly used, and for when a string is being built-up, where s is commonly used. &lt;br /&gt;
&lt;br /&gt;
Edit sub HelloWorld so that it looks like the following and run it: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub HelloWorld&lt;br /&gt;
dim i as integer &amp;#039;This line is optional&lt;br /&gt;
  for i = 0 to 2&lt;br /&gt;
    &amp;#039;These lines are indented for ease of reading only&lt;br /&gt;
    &amp;#039;all your code should be like this for lonog time survival&lt;br /&gt;
    msgbox &amp;quot;Hello World &amp;quot; &amp;amp; i&lt;br /&gt;
  next i&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
For more information on variables see the online help for &amp;quot;using variables&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Understanding the OpenOffice.org API=&lt;br /&gt;
This section will start with an example. The remainder of this section aims to give information so that the example can be understood and expanded upon. &lt;br /&gt;
&lt;br /&gt;
Try running the following code with different types of documents being active. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
msgbox fnWhichComponent(thisComponent)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function fnWhichComponent(oDoc) as string&lt;br /&gt;
if HasUnoInterfaces(oDoc, &amp;quot;com.sun.star.lang.XServiceInfo&amp;quot;) then &lt;br /&gt;
   if thisComponent.supportsService (&amp;quot;com.sun.star.text.GenericTextDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Text&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.sheet.SpreadsheetDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Spreadsheet&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.presentation.PresentationDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Presentation&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.drawing.GenericDrawingDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Drawing&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      fnWhichComponent = &amp;quot;Oops current document something else&amp;quot;&lt;br /&gt;
   end if&lt;br /&gt;
else&lt;br /&gt;
   fnWhichComponent = &amp;quot;Not a document&amp;quot;&lt;br /&gt;
end if&lt;br /&gt;
End function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subroutine naming convention==&lt;br /&gt;
In the above example the user defined function has a name that starts with the letters &amp;quot;fn&amp;quot;. This is the initial author&amp;#039;s convention so that people know that this is a user defined function. Similarly, the initial author uses the convention that user defined subroutines start with the letters &amp;quot;sub&amp;quot;. When learning a language and an API it can be difficult to know what is built-in and what has been defined elsewhere. This document/wiki will use this convention for naming functions and subroutines.&lt;br /&gt;
&lt;br /&gt;
==Introducing the OpenOffice.org API==&lt;br /&gt;
This section introduces the following terms: &lt;br /&gt;
&lt;br /&gt;
* Interface &lt;br /&gt;
* Module &lt;br /&gt;
* Service &lt;br /&gt;
* Method &lt;br /&gt;
* Property &lt;br /&gt;
&lt;br /&gt;
Understanding the difference between an interface and a service and what a module is, is not essential to being able to write extensions for OpenOffice.org, but it does help interpreting the documentation, and for introspection purposes. You may need to read this section at least twice. &lt;br /&gt;
&lt;br /&gt;
An &amp;#039;&amp;#039;&amp;#039;interface&amp;#039;&amp;#039;&amp;#039; is a &amp;#039;&amp;#039;definition&amp;#039;&amp;#039; of a set of methods (and their arguments) that a service which implements that interface must have. &lt;br /&gt;
&lt;br /&gt;
Interfaces are grouped together in &amp;#039;&amp;#039;&amp;#039;modules&amp;#039;&amp;#039;&amp;#039; for naming purposes. All interfaces (and services) start with the name &amp;quot;com.sun.star&amp;quot; then the name of the module then the name of the interface (or service). &lt;br /&gt;
&lt;br /&gt;
For example most services provide the com.sun.star.beans.XPropertySet interface. This interface is stored in the module &amp;quot;beans&amp;quot; and provides access to the properties of a service. A &amp;#039;&amp;#039;&amp;#039;property&amp;#039;&amp;#039;&amp;#039; is a value whereas a &amp;#039;&amp;#039;&amp;#039;method&amp;#039;&amp;#039;&amp;#039; is an action. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object can have many services. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object may have a service, which implements an interface, in which a method description says that another OpenOffice.org object is returned.&lt;br /&gt;
&lt;br /&gt;
==Introspection==&lt;br /&gt;
HasUnoInterfaces is an OpenOffice.org Basic function for introspection. See this [[http://www.oooforum.org/forum/viewtopic.phtml?t=7068 link]] for information on introspection in other languages. &lt;br /&gt;
&lt;br /&gt;
HasUnoInterfaces returns true if all of the specified interfaces are available for the specified object. &lt;br /&gt;
&lt;br /&gt;
Most OpenOffice.org objects provide the method supportsService because they have the interface com.sun.star.lang.XServiceInfo. &lt;br /&gt;
&lt;br /&gt;
In the above example, the OpenOffice.org Basic command, &amp;#039;&amp;#039;&amp;#039;HasUnoInterfaces&amp;#039;&amp;#039;&amp;#039; checks that the current document has the interface com.sun.star.lang.XServiceInfo, because if it doesn&amp;#039;t have that interface then it doesn&amp;#039;t have the method supportsService, and a run time error would occur if such an object tried to access its nonexistent method. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SupportsService&amp;#039;&amp;#039;&amp;#039; is a method which returns true if the specified service is available. The above examples checks for a service to determine the type of document that is currently active.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==X-Ray tool==&lt;br /&gt;
Using HasUnoInterfaces and supportsService gives information about an object at run time, but checking an object like this would be a nightmare for learning? Thankfully Bernard Marcelly has come to our rescue with the X-Ray tool. The X-Ray tool is available from: [[http://ooomacros.org/dev.php#101416 ooomacros]]. Download the zip file, unzip the document, open the document in OpenOffice.org, follow the instructions for installation and set-up. &lt;br /&gt;
&lt;br /&gt;
Part of the X-Ray tool set-up is to specify a local copy of the OpenOffice.org SDK. Download the OpenOffice.org SDK from and extract it. &lt;br /&gt;
&lt;br /&gt;
In the above example, at the start of the code, there are two commented lines (comments start with an apostrophe): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Now that you have the X-Ray tool installed, uncomment these lines (remove the apostrophes) and rerun the macro. From version 5 of Xray the command simply becomes xray.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasicLibraries&amp;#039;&amp;#039;&amp;#039; is an OpenOffice.org Basic command that returns an object for accessing the OpenOffice.org libraries. The &amp;lt;tt&amp;gt;loadLibrary&amp;lt;/tt&amp;gt; method ensures that the routines in that library are available for use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;xray.xray&amp;lt;/tt&amp;gt; specifies the xray library and the xray subroutine within that library, thisComponent is the object that is being passed to xray for introspection. &lt;br /&gt;
&lt;br /&gt;
To find the object that you want to work with often requires finding or creating it starting from either StarDesktop or thisComponent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desktop, documents, and current selection==&lt;br /&gt;
StarDesktop and ThisComponent are OpenOffice.org Basic commands that refer to the application and currently active document respectively. &lt;br /&gt;
&lt;br /&gt;
Unlike Microsoft Office, OpenOffice.org is one application with different components. When running some code it maybe useful to check which component is currently active. The above code demonstrates how that checking process can be done. &lt;br /&gt;
&lt;br /&gt;
The Desktop that StarDesktop refers to is conceptual (historically it actually existed) and can be thought of as the OpenOffice.org application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating new documents==&lt;br /&gt;
To create a new text document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/swriter&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To create a new spreadsheet document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
An easier approach would be to write a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnNewDoc(sDocType as string)&lt;br /&gt;
fnNewDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/&amp;quot; &amp;amp; sDocType , &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then creating new documents can be achieved with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;swriter&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;scalc&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;simpress&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;sdraw&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;smath&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
See http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XComponentLoader.html .&lt;br /&gt;
&lt;br /&gt;
==To open a document==&lt;br /&gt;
The following example shows how to open a file. For information on URLs in OpenOffice.org see [[ URL Basics]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sFile = &amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot; &amp;#039; Windows&lt;br /&gt;
sFile = &amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot; &amp;#039; Linux&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Again it may make sense to make this easier by writing a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnOpenDoc(sFile)&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
fnOpenDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Examples of calling the function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot;) &amp;#039; Windows&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot;) &amp;#039; Linux&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Selection==&lt;br /&gt;
It is common to want to run some code that effects the current selection. &amp;lt;tt&amp;gt;ThisComponent&amp;lt;/tt&amp;gt; has the method &amp;lt;tt&amp;gt;getCurrentSelection&amp;lt;/tt&amp;gt;. Since many different types of objects could possibly be selected it is common to check that the currently selected object has the service that contains the method that we want to apply to the object. &lt;br /&gt;
&lt;br /&gt;
Edit the main subroutine to the following and rerun it on a text document with different selections. (To select more than one block of text hold down the control key). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
        oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
        &amp;#039;xray.xray oCurSelection&lt;br /&gt;
        if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
                msgbox &amp;quot;There are &amp;quot; &amp;amp; oCurSelection.getCount() &amp;amp; _&lt;br /&gt;
                 &amp;quot; selections in the current text document.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
With nothing selected the number of selections is one - the insertion point, with one block of text selected the count is still one, but with two blocks of text the count is three - the insertion point and the two blocks of selected text. &lt;br /&gt;
&lt;br /&gt;
Exercise 1: Modify the above code so that it works on selected cell ranges in a spreadsheet. &lt;br /&gt;
&lt;br /&gt;
Question1: For two blocks of cells selected, what would be the count for the number of selections? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
Uncomment &amp;lt;tt&amp;gt;&amp;#039;xray.xray oCurSelection&amp;lt;/tt&amp;gt; so that xray runs, to see that the object that &amp;lt;tt&amp;gt;oCurSelection&amp;lt;/tt&amp;gt; points to has a &amp;quot;property&amp;quot; called &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; with a description of &amp;quot;pseudo-prop, read only&amp;quot;. It is possible in OpenOffice.org Basic to write &amp;lt;tt&amp;gt;oCurSelection.count&amp;lt;/tt&amp;gt;, but as this is not possible in all other languages accessing the OpenOffice.org API, this Wiki will try to always use the method approach. (I say try because I have not been in the habit of doing this and sometimes I may forget). &lt;br /&gt;
&lt;br /&gt;
This next example demonstrates changing a property value for the current selections. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
   oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
   if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
      nCount = oCurSelection.Count&lt;br /&gt;
      &amp;#039;xray.xray oCurSelection.getByIndex(0)&lt;br /&gt;
      &amp;#039;Warning: The insertion point will have the same action applied twice&lt;br /&gt;
      &amp;#039;in this case it doesn&amp;#039;t matter, but in others it might.&lt;br /&gt;
      for i = 0 to nCount - 1&lt;br /&gt;
         oCurSelection.getByIndex(i).setPropertyValue(&amp;quot;CharStyleName&amp;quot;, &amp;quot;Strong Emphasis&amp;quot;)&lt;br /&gt;
      next&lt;br /&gt;
   end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In OpenOffice.org Basic it is possible to shorten the assignment line to: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oCurSelection(i).CharStyleName = &amp;quot;Strong Emphasis&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This wiki will try to use the full methods for both indexing and assigning properties. The rationale is that this makes converting the code to other languages easier and also helps the learner to understand what is happening (again I have not been in the habit of doing this so some examples may slip past me). &lt;br /&gt;
&lt;br /&gt;
Exercise 2: Rewrite the above code so that the warning can be removed. &lt;br /&gt;
&lt;br /&gt;
See [[ Current selection]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Iterative Access to Subordinate Objects (Enumeration access)=&lt;br /&gt;
Sometimes to access the desired object an enumeration is required. For example paragraphs, within a document or within a selection. &lt;br /&gt;
&lt;br /&gt;
When a Writer document is active and some text is selected, both &amp;lt;tt&amp;gt;thisDocument.getText()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;thisComponent.getCurrentSelection().getByIndex(i)&amp;lt;/tt&amp;gt; have the service: com.sun.star.text.TextRange which has the interface: com.sun.star.container.XContentEnumerationAccess, it is possible to create an enumeration of the paragraphs for the current document or for a particular selection. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039; Create enumeration object&lt;br /&gt;
oTextElementEnum = thisComponent.getText().createEnumeration()&lt;br /&gt;
&amp;#039;or thisComponent.getCurrentSelection().getByIndex(i).createEnumeration()&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; loop over all text elements&lt;br /&gt;
while oTextElementEnum.hasMoreElements()&lt;br /&gt;
        oTextElement = oTextElementEnum.nextElement&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.TextTable&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a table.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.Paragraph&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a paragraph.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
wend&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Exercise 3: Extend the above example to display in a message box all text portions that are bold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Named access=&lt;br /&gt;
Some objects provide named access to a particular type of subordinate object, some others indexed access, and some both named and indexed access. &lt;br /&gt;
&lt;br /&gt;
For example if the current document in OpenOffice.org is a spreadsheet then to access a particular sheet can be done by index access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByIndex(0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
or named access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByName(&amp;quot;Sheet1&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To check if an object with a particular name already exists use &amp;lt;tt&amp;gt;hasByName&amp;lt;/tt&amp;gt;, for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
if thisComponent.getSheets.hasByName(&amp;quot;Sheet1&amp;quot;) then&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To loop through all the available object names can be done like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
mNames = thisComponent.getSheets.getElementnames&lt;br /&gt;
for i = lbound(mNames) to ubound(mNames)&lt;br /&gt;
        msgbox mNames(i)&lt;br /&gt;
next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Some named subordinate objects also provide the interface:  com.sun.star.container.XNameContainer. This interface defines that such objects should have the following methods: &amp;lt;tt&amp;gt;insertByName&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;replaceByname&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;removeByName&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
thisComponent.getSheets.insertByName(&amp;quot;NewSheet&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Create new objects=&lt;br /&gt;
Some objects have services which implement interfaces to provide specific methods for creating a particular type of object. &lt;br /&gt;
&lt;br /&gt;
For example if the current document is a Writer document then &amp;lt;tt&amp;gt;thisComponent.getText&amp;lt;/tt&amp;gt; is an object that provides the service com.sun.star.text.Text which implements the interface  com.sun.star.text.XSimpleText which defines the methods &amp;lt;tt&amp;gt;createTextCursor&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;createTextCursorByRange&amp;lt;/tt&amp;gt;. Both of these methods create a text cursor for accessing the text of the document. These cursors are quite independent of the view cursor . The view cursor is visible on the screen and is manipulated by the user (and can be manipulated by program control), where as a text cursor is not visible on the screen and is solely used by program control. The following code snippet demonstrates creating a new text cursor, such that it starts at the same location as the viewCursor and is then moved independent of the view cursor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oVC = thisComponent.getCurrentController.getViewCursor&lt;br /&gt;
oCursor = oVC.getText.createTextCursorByRange(oVC)&lt;br /&gt;
oCursor.gotoStartOfSentence(false)&lt;br /&gt;
oCursor.gotoEndOfSentence(true)&lt;br /&gt;
msgbox oCursor.getString&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some objects are context dependent and get created using the method &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; which is defined in the interface com.sun.star.lang.XMultiServiceFactory. For example to add a rectangle to the first page of a drawing document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
dim aSize as new com.sun.star.awt.Size&lt;br /&gt;
 &lt;br /&gt;
aPoint.x = 1000&lt;br /&gt;
aPoint.y = 1000&lt;br /&gt;
 &lt;br /&gt;
aSize.Width = 10000&lt;br /&gt;
aSize.Height = 10000&lt;br /&gt;
 &lt;br /&gt;
oRectangleShape = thisComponent.createInstance(&amp;quot;com.sun.star.drawing.RectangleShape&amp;quot;)&lt;br /&gt;
oRectangleShape.Size = aSize&lt;br /&gt;
oRectangleShape.Position = aPoint&lt;br /&gt;
 &lt;br /&gt;
thisComponent.getDrawPages.getByIndex(0).add(oRectangleShape)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example also uses UNO structs see below for more information on UNO stucts. &lt;br /&gt;
&lt;br /&gt;
Some objects are context independent to create these objects use the OpenOffice.org Basic command createUnoService. For example to create the equivalent to StarDesktop: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDesktop = createUnoService(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The process that I use to determine how to access or create an object is as follows: &lt;br /&gt;
&lt;br /&gt;
Does the object already exist if so I should be able to access it from something like &amp;lt;tt&amp;gt;thisComponent&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Will the new object belong to another object, if so does the owner have a specific method for creating the object, if so use it. &lt;br /&gt;
&lt;br /&gt;
The new object will belong to another object, but that object doesn&amp;#039;t provide a specific method for creating it, but does provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt;. If the object doesn&amp;#039;t provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; are you sure you are using the correct object, or is it context independent. &lt;br /&gt;
&lt;br /&gt;
I have found working out how to create an object to be quite difficult with existing documentation so I hope that this document/wiki will eventually make this clear. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==UNO structs==&lt;br /&gt;
UNO structures can be declared using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;dim&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Or by using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;createUnoStruct&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
aPoint = createUnoStruct(&amp;quot;com.sun.star.awt.Point&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|When declaring UNO structs case is important. Note that everything upto the name of the struct is lowercase, and that the name of the struct is in TitleCase.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Listeners and Handlers==&lt;br /&gt;
Through the user interface it is possible to assign macros to some events: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Configure… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Customize… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
It is also possible to assign macros to a wider range of events using the OpenOffice.org Basic command CreateUnoListener. This same command is used for creating both listeners and handlers. A listener checks for an event and always allows other listeners to respond to the event as well. A handler listens for an event, and can optionally consume the event so that other listeners don&amp;#039;t get to act on it. &lt;br /&gt;
&lt;br /&gt;
The following example creates a keyHandler: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
global IannzExampleKeyHandler&lt;br /&gt;
 &lt;br /&gt;
sub SetupKeyHandler&lt;br /&gt;
oController = thisComponent.currentController&lt;br /&gt;
IannzExampleKeyHandler = CreateUnoListener(&amp;quot;KeyHandler_&amp;quot;,&amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;)&lt;br /&gt;
oController.addKeyHandler(IannzExampleKeyHandler) &amp;#039; Register the listener&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub RemoveKeyHandler&lt;br /&gt;
thisComponent.currentController.removeKeyHandler(IannzExampleKeyHandler)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub KeyHandler_disposing&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyReleased(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
        KeyHandler_keyReleased = False    &lt;br /&gt;
end function&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyPressed(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
KeyHandler_keyPressed = false   &amp;#039;Let other listeners handle the event&lt;br /&gt;
if oKeyEvent.modifiers = com.sun.star.awt.KeyModifier.MOD2 then &amp;#039;Control key was pressed&lt;br /&gt;
        if oKeyEvent.keyCode = com.sun.star.awt.Key.Q then&lt;br /&gt;
                msgbox &amp;quot;Alt + Q was pressed&amp;quot;&lt;br /&gt;
                KeyHandler_keyPressed = true    &amp;#039;Don&amp;#039;t let other listeners process this event&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A variable declared as global keeps its value even after the macro exits. In this case we want to be able to use this variable later to remove the handler. As variables declared globally could be used in other libraries to try and avoid conflict I start all my global variables with Iannz my registered name for the OpenOffice.org web site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub SetupKeyHandler&amp;lt;/tt&amp;gt; sets up the handler. The first parameter to CreateUnoListener is the staring name for the methods that will be called when that type of event occurs in this example .&amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The second parameter is the name of the interface for the listener or handler, &amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;. The name is case sensitive, everything up to and including the module name is always lowercase, the name of the interface always starts with &amp;quot;X&amp;quot; and the remainder is in TitleCase. &lt;br /&gt;
&lt;br /&gt;
Use the SDK to find out what methods the interface must supply. You must supply routines for all of these methods even if you don&amp;#039;t intend to use them. You also need to supply a disposing method. The names of these routines start with the string given in the first parameter to CreateUnoListener , in this example &amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Thus in the example there is &amp;lt;tt&amp;gt;KeyHandler_disposing&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;KeyHandler_keyReleased&amp;lt;/tt&amp;gt; which don&amp;#039;t actually do anything but are required, and &amp;lt;tt&amp;gt;KeyHandler_keyPressed&amp;lt;/tt&amp;gt; which actually does the job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub RemoveKeyHandler&amp;lt;/tt&amp;gt; demonstrates how to remove the handler.&lt;br /&gt;
&lt;br /&gt;
=OpenOffice.org constants=&lt;br /&gt;
The above example uses OpenOffice.org constants. &lt;br /&gt;
&lt;br /&gt;
E.g. com.sun.star.awt.KeyModifier.MOD2&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org constants are case sensitive. Everything up to and including the module name is always lowercase. The constant group is in TitleCase. The actual constant name is always UPPERCASE. &lt;br /&gt;
&lt;br /&gt;
Programmers not using OpenOffice.org Basic may not have access to these constants. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Using the recorder=&lt;br /&gt;
See [[ The OpenOffice.org recorder and UNO dispatch calls]] section for a discussion on recording UNO Dispatch commands versus writing API calls.&lt;br /&gt;
&lt;br /&gt;
= See also=&lt;br /&gt;
* [[Programming_OooWriter |Programming OOoWriter in C++]] where OOoBascic record are used in C++&lt;br /&gt;
* A [[XIntrospection_Interface|XIntrospection Interface]] short description. XRay uses this interface.&lt;br /&gt;
* Download Bernard Marcelly&amp;#039;s [http://www.ooomacros.org/dev.php#101416 XRay OOoBasic tool] &lt;br /&gt;
* See [[Object Inspector|The New Object Inspector]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Basic:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18620</id>
		<title>Extensions development basic</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18620"/>
		<updated>2006-10-14T05:27:53Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Getting started tutorial&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
This page provides a getting started guide for writing macros in OpenOffice.org Basic. It assumes some prior programming knowledge. Please edit this page to make it more readable. I hope you will find it useful.&lt;br /&gt;
&lt;br /&gt;
If you already know the basics then you may want the [[CookBook]] for wrappers and examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Where do I write the code?=&lt;br /&gt;
OpenOffice.org Basic code is stored in modules within libraries. A library can be: &lt;br /&gt;
&lt;br /&gt;
*Shared (for a network install - OOo Macros &amp;amp; Dialogs) &lt;br /&gt;
*Just for the current user (My Macros &amp;amp; Dialogs) &lt;br /&gt;
*Within a document or template, so that its code is only available when that document is open.&lt;br /&gt;
&lt;br /&gt;
Libraries not stored in a document or template (that is libraries that are shared or for the current user) are referred to as &amp;#039;&amp;#039;&amp;#039;OpenOffice.org libraries&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
To determine the actual folders that contain the OpenOffice.org libraries see:&amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Options… &amp;gt; OpenOffice.org &amp;gt; Paths &amp;gt; BASIC&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Do not copy or move libraries using operating system commands. Use the macro organizer or package manager instead.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modules within libraries have a maximum size of 64kb. A library can contain up to 16,000 modules. &lt;br /&gt;
&lt;br /&gt;
For more information see online help for: Modules and Libraries.&lt;br /&gt;
&lt;br /&gt;
=Accessing the IDE=&lt;br /&gt;
To access the IDE for the first time: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Organize macros &amp;gt; OpenOffice.org Basic… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To get started we will use Module1 in the Standard library which is stored for the current user only: &lt;br /&gt;
&lt;br /&gt;
Type a name for the new macro: &amp;#039;&amp;#039;&amp;#039;HelloWorld&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
In the macro from listbox select &amp;#039;&amp;#039;&amp;#039;Standard&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Click &amp;#039;&amp;#039;&amp;#039;New&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
You should now see something like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The cursor will be positioned at the start of the &amp;lt;tt&amp;gt;Sub HelloWorld&amp;lt;/tt&amp;gt; line. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Now that while the IDE is running it can be accessed from the OpenOffice.org Window menu, or the task panel provided by the operating system.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Entering the code=&lt;br /&gt;
Select and delete: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Below the line &amp;quot;Sub HelloWorld&amp;quot; type &amp;lt;tt&amp;gt;msgbox &amp;quot;Hello World!&amp;quot;&amp;lt;/tt&amp;gt;, so that the editor looks like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
  msgbox &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Notes:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|The IDE does not provide code completion or help with command syntax as you type, but to get help on a Basic command position the cursor in the command and press F1.&amp;lt;br&amp;gt; OpenOffice.org Basic commands are not case sensitive. Thus msgbox, MSGBOX and Msgbox will all work.&amp;lt;br&amp;gt; Strings are enclosed in double quotes.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Running the code=&lt;br /&gt;
There are several ways of running the Basic code, these include: &lt;br /&gt;
&lt;br /&gt;
Directly from the IDE. There is a run button on the macro bar (by default the third control on the second toolbar). This will run the first macro in the current module. &lt;br /&gt;
&lt;br /&gt;
From the tools menu:&lt;br /&gt;
&lt;br /&gt;
(Version 1.1.x) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro…&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
(Version 1.9.x and above) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macro &amp;gt; Run Macro…&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ key press]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ menu entry]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a toolbar button. &lt;br /&gt;
&lt;br /&gt;
Creating a [[ control in a document]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to an event. &lt;br /&gt;
&lt;br /&gt;
For now try running the &amp;quot;HelloWorld&amp;quot; subroutine by clicking the &amp;#039;&amp;#039;&amp;#039;Run&amp;#039;&amp;#039;&amp;#039; button. A small dialog titled &amp;quot;soffice&amp;quot; with the text &amp;quot;Hello World!&amp;quot; and an OK button should be displayed.&lt;br /&gt;
&lt;br /&gt;
=Saving the code=&lt;br /&gt;
The code gets automatically saved whenever the container for the code gets saved. Thus, if the code is in an OpenOffice.org library (shared or users) then it gets automatically saved when OpenOffice.org exits. If the code is in a library which is part of a document it gets saved whenever the document is saved. &lt;br /&gt;
&lt;br /&gt;
On the Standard toolbar (by default the top toolbar) in the IDE there is a save button. If the code is in a document or template then clicking this button saves the entire document or template. If the code is in an OpenOffice.org library then just the current library gets saved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
It is possible to force variable declaration with &amp;lt;tt&amp;gt;Option Explicit&amp;lt;/tt&amp;gt; at the top of the module. For a discussion on whether to declare variables or not see: [[http://www.oooforum.org/forum/viewtopic.phtml?t=5845 this discussion]]. &lt;br /&gt;
&lt;br /&gt;
In that discussion the initial author of this wiki thought that variables should always be declared. Since then he has changed to not declaring them. In short it is generally a personal preference. In either case, it is the initial authors preference that variables be named according to the following convention, which is used in the examples in this Wiki: &lt;br /&gt;
&lt;br /&gt;
The first letter of the variable name indicates the type of value that the variable is going to hold, as per the following table (based on a table in Tutorial.pdf by Sun) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Letter&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Meaning&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Structure&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Boolean (TRUE or FALSE)&lt;br /&gt;
|-&lt;br /&gt;
|e&lt;br /&gt;
|Enumeration. This variable can only have one of a limited set of values.&lt;br /&gt;
|-&lt;br /&gt;
|f&lt;br /&gt;
|Float (3.402823 x 1038 to 1.401298 x 10-45. A single variable can take up to four bytes)&amp;lt;br&amp;gt; Double (1.79769313486232 x 10308 to 4.94065645841247 x 10-324. A double variable can take up to eight bytes)&amp;lt;br&amp;gt; Currency (-922337203685477.5808 to +922337203685477.5807 and takes up to eight bytes of memory)&lt;br /&gt;
|-&lt;br /&gt;
|m&lt;br /&gt;
|Array (aka sequence aka matrix)&lt;br /&gt;
|-&lt;br /&gt;
|n&lt;br /&gt;
|Integer (-32768 to 32767.) or&amp;lt;br&amp;gt; Long (-2147483648 and 2147483647).&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Object, service, or interface&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|String (A string variable can store up to 65535 Unicode characters).&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Interface, to indicate that only operations of a particular interface of an object are used&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Variant, Any&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use long descriptive variable names making use of camel case &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|User defined OpenOffice.org Basic variables are not case sensitive. But UNO-API constants are case sensitive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Convention exceptions to long descriptive names is for index variables where i, j, and k are commonly used, and for when a string is being built-up, where s is commonly used. &lt;br /&gt;
&lt;br /&gt;
Edit sub HelloWorld so that it looks like the following and run it: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub HelloWorld&lt;br /&gt;
dim i as integer &amp;#039;This line is optional&lt;br /&gt;
  for i = 0 to 2&lt;br /&gt;
    &amp;#039;These lines are indented for ease of reading only&lt;br /&gt;
    &amp;#039;all your code should be like this for lonog time survival&lt;br /&gt;
    msgbox &amp;quot;Hello World &amp;quot; &amp;amp; i&lt;br /&gt;
  next i&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
For more information on variables see the online help for &amp;quot;using variables&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Understanding the OpenOffice.org API=&lt;br /&gt;
This section will start with an example. The remainder of this section aims to give information so that the example can be understood and expanded upon. &lt;br /&gt;
&lt;br /&gt;
Try running the following code with different types of documents being active. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
msgbox fnWhichComponent(thisComponent)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function fnWhichComponent(oDoc) as string&lt;br /&gt;
if HasUnoInterfaces(oDoc, &amp;quot;com.sun.star.lang.XServiceInfo&amp;quot;) then &lt;br /&gt;
   if thisComponent.supportsService (&amp;quot;com.sun.star.text.GenericTextDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Text&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.sheet.SpreadsheetDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Spreadsheet&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.presentation.PresentationDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Presentation&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.drawing.GenericDrawingDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Drawing&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      fnWhichComponent = &amp;quot;Oops current document something else&amp;quot;&lt;br /&gt;
   end if&lt;br /&gt;
else&lt;br /&gt;
   fnWhichComponent = &amp;quot;Not a document&amp;quot;&lt;br /&gt;
end if&lt;br /&gt;
End function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subroutine naming convention==&lt;br /&gt;
In the above example the user defined function has a name that starts with the letters &amp;quot;fn&amp;quot;. This is the initial author&amp;#039;s convention so that people know that this is a user defined function. Similarly, the initial author uses the convention that user defined subroutines start with the letters &amp;quot;sub&amp;quot;. When learning a language and an API it can be difficult to know what is built-in and what has been defined elsewhere. This document/wiki will use this convention for naming functions and subroutines.&lt;br /&gt;
&lt;br /&gt;
==Introducing the OpenOffice.org API==&lt;br /&gt;
This section introduces the following terms: &lt;br /&gt;
&lt;br /&gt;
* Interface &lt;br /&gt;
* Module &lt;br /&gt;
* Service &lt;br /&gt;
* Method &lt;br /&gt;
* Property &lt;br /&gt;
&lt;br /&gt;
Understanding the difference between an interface and a service and what a module is, is not essential to being able to write extensions for OpenOffice.org, but it does help interpreting the documentation, and for introspection purposes. You may need to read this section at least twice. &lt;br /&gt;
&lt;br /&gt;
An &amp;#039;&amp;#039;&amp;#039;interface&amp;#039;&amp;#039;&amp;#039; is a &amp;#039;&amp;#039;definition&amp;#039;&amp;#039; of a set of methods (and their arguments) that a service which implements that interface must have. &lt;br /&gt;
&lt;br /&gt;
Interfaces are grouped together in &amp;#039;&amp;#039;&amp;#039;modules&amp;#039;&amp;#039;&amp;#039; for naming purposes. All interfaces (and services) start with the name &amp;quot;com.sun.star&amp;quot; then the name of the module then the name of the interface (or service). &lt;br /&gt;
&lt;br /&gt;
For example most services provide the com.sun.star.beans.XPropertySet interface. This interface is stored in the module &amp;quot;beans&amp;quot; and provides access to the properties of a service. A &amp;#039;&amp;#039;&amp;#039;property&amp;#039;&amp;#039;&amp;#039; is a value whereas a &amp;#039;&amp;#039;&amp;#039;method&amp;#039;&amp;#039;&amp;#039; is an action. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object can have many services. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object may have a service, which implements an interface, in which a method description says that another OpenOffice.org object is returned.&lt;br /&gt;
&lt;br /&gt;
==Introspection==&lt;br /&gt;
HasUnoInterfaces is an OpenOffice.org Basic function for introspection. See this [[http://www.oooforum.org/forum/viewtopic.phtml?t=7068 link]] for information on introspection in other languages. &lt;br /&gt;
&lt;br /&gt;
HasUnoInterfaces returns true if all of the specified interfaces are available for the specified object. &lt;br /&gt;
&lt;br /&gt;
Most OpenOffice.org objects provide the method supportsService because they have the interface com.sun.star.lang.XServiceInfo. &lt;br /&gt;
&lt;br /&gt;
In the above example, the OpenOffice.org Basic command, &amp;#039;&amp;#039;&amp;#039;HasUnoInterfaces&amp;#039;&amp;#039;&amp;#039; checks that the current document has the interface com.sun.star.lang.XServiceInfo, because if it doesn&amp;#039;t have that interface then it doesn&amp;#039;t have the method supportsService, and a run time error would occur if such an object tried to access its nonexistent method. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SupportsService&amp;#039;&amp;#039;&amp;#039; is a method which returns true if the specified service is available. The above examples checks for a service to determine the type of document that is currently active.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==X-Ray tool==&lt;br /&gt;
Using HasUnoInterfaces and supportsService gives information about an object at run time, but checking an object like this would be a nightmare for learning? Thankfully Bernard Marcelly has come to our rescue with the X-Ray tool. The X-Ray tool is available from: [[http://ooomacros.org/dev.php#101416 ooomacros]]. Download the zip file, unzip the document, open the document in OpenOffice.org, follow the instructions for installation and set-up. &lt;br /&gt;
&lt;br /&gt;
Part of the X-Ray tool set-up is to specify a local copy of the OpenOffice.org SDK. Download the OpenOffice.org SDK from and extract it. &lt;br /&gt;
&lt;br /&gt;
In the above example, at the start of the code, there are two commented lines (comments start with an apostrophe): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Now that you have the X-Ray tool installed, uncomment these lines (remove the apostrophes) and rerun the macro. From version 5 of Xray the command simply becomes xray.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasicLibraries&amp;#039;&amp;#039;&amp;#039; is an OpenOffice.org Basic command that returns an object for accessing the OpenOffice.org libraries. The &amp;lt;tt&amp;gt;loadLibrary&amp;lt;/tt&amp;gt; method ensures that the routines in that library are available for use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;xray.xray&amp;lt;/tt&amp;gt; specifies the xray library and the xray subroutine within that library, thisComponent is the object that is being passed to xray for introspection. &lt;br /&gt;
&lt;br /&gt;
To find the object that you want to work with often requires finding or creating it starting from either StarDesktop or thisComponent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desktop, documents, and current selection==&lt;br /&gt;
StarDesktop and ThisComponent are OpenOffice.org Basic commands that refer to the application and currently active document respectively. &lt;br /&gt;
&lt;br /&gt;
Unlike Microsoft Office, OpenOffice.org is one application with different components. When running some code it maybe useful to check which component is currently active. The above code demonstrates how that checking process can be done. &lt;br /&gt;
&lt;br /&gt;
The Desktop that StarDesktop refers to is conceptual (historically it actually existed) and can be thought of as the OpenOffice.org application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating new documents==&lt;br /&gt;
To create a new text document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/swriter&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To create a new spreadsheet document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
An easier approach would be to write a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnNewDoc(sDocType as string)&lt;br /&gt;
fnNewDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/&amp;quot; &amp;amp; sDocType , &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then creating new documents can be achieved with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;swriter&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;scalc&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;simpress&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;sdraw&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;smath&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
See http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XComponentLoader.html .&lt;br /&gt;
&lt;br /&gt;
==To open a document==&lt;br /&gt;
The following example shows how to open a file. For information on URLs in OpenOffice.org see [[ URL Basics]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sFile = &amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot; &amp;#039; Windows&lt;br /&gt;
sFile = &amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot; &amp;#039; Linux&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Again it may make sense to make this easier by writing a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnOpenDoc(sFile)&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
fnOpenDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Examples of calling the function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot;) &amp;#039; Windows&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot;) &amp;#039; Linux&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Selection==&lt;br /&gt;
It is common to want to run some code that effects the current selection. &amp;lt;tt&amp;gt;ThisComponent&amp;lt;/tt&amp;gt; has the method &amp;lt;tt&amp;gt;getCurrentSelection&amp;lt;/tt&amp;gt;. Since many different types of objects could possibly be selected it is common to check that the currently selected object has the service that contains the method that we want to apply to the object. &lt;br /&gt;
&lt;br /&gt;
Edit the main subroutine to the following and rerun it on a text document with different selections. (To select more than one block of text hold down the control key). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
        oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
        &amp;#039;xray.xray oCurSelection&lt;br /&gt;
        if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
                msgbox &amp;quot;There are &amp;quot; &amp;amp; oCurSelection.getCount() &amp;amp; _&lt;br /&gt;
                 &amp;quot; selections in the current text document.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
With nothing selected the number of selections is one - the insertion point, with one block of text selected the count is still one, but with two blocks of text the count is three - the insertion point and the two blocks of selected text. &lt;br /&gt;
&lt;br /&gt;
Exercise 1: Modify the above code so that it works on selected cell ranges in a spreadsheet. &lt;br /&gt;
&lt;br /&gt;
Question1: For two blocks of cells selected, what would be the count for the number of selections? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
Uncomment &amp;lt;tt&amp;gt;&amp;#039;xray.xray oCurSelection&amp;lt;/tt&amp;gt; so that xray runs, to see that the object that &amp;lt;tt&amp;gt;oCurSelection&amp;lt;/tt&amp;gt; points to has a &amp;quot;property&amp;quot; called &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; with a description of &amp;quot;pseudo-prop, read only&amp;quot;. It is possible in OpenOffice.org Basic to write &amp;lt;tt&amp;gt;oCurSelection.count&amp;lt;/tt&amp;gt;, but as this is not possible in all other languages accessing the OpenOffice.org API, this Wiki will try to always use the method approach. (I say try because I have not been in the habit of doing this and sometimes I may forget). &lt;br /&gt;
&lt;br /&gt;
This next example demonstrates changing a property value for the current selections. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
   oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
   if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
      nCount = oCurSelection.Count&lt;br /&gt;
      &amp;#039;xray.xray oCurSelection.getByIndex(0)&lt;br /&gt;
      &amp;#039;Warning: The insertion point will have the same action applied twice&lt;br /&gt;
      &amp;#039;in this case it doesn&amp;#039;t matter, but in others it might.&lt;br /&gt;
      for i = 0 to nCount - 1&lt;br /&gt;
         oCurSelection.getByIndex(i).setPropertyValue(&amp;quot;CharStyleName&amp;quot;, &amp;quot;Strong Emphasis&amp;quot;)&lt;br /&gt;
      next&lt;br /&gt;
   end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In OpenOffice.org Basic it is possible to shorten the assignment line to: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oCurSelection(i).CharStyleName = &amp;quot;Strong Emphasis&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This wiki will try to use the full methods for both indexing and assigning properties. The rationale is that this makes converting the code to other languages easier and also helps the learner to understand what is happening (again I have not been in the habit of doing this so some examples may slip past me). &lt;br /&gt;
&lt;br /&gt;
Exercise 2: Rewrite the above code so that the warning can be removed. &lt;br /&gt;
&lt;br /&gt;
See [[ Current selection]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Iterative Access to Subordinate Objects (Enumeration access)=&lt;br /&gt;
Sometimes to access the desired object an enumeration is required. For example paragraphs, within a document or within a selection. &lt;br /&gt;
&lt;br /&gt;
When a Writer document is active and some text is selected, both &amp;lt;tt&amp;gt;thisDocument.getText()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;thisComponent.getCurrentSelection().getByIndex(i)&amp;lt;/tt&amp;gt; have the service: com.sun.star.text.TextRange which has the interface: com.sun.star.container.XContentEnumerationAccess, it is possible to create an enumeration of the paragraphs for the current document or for a particular selection. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039; Create enumeration object&lt;br /&gt;
oTextElementEnum = thisComponent.getText().createEnumeration()&lt;br /&gt;
&amp;#039;or thisComponent.getCurrentSelection().getByIndex(i).createEnumeration()&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; loop over all text elements&lt;br /&gt;
while oTextElementEnum.hasMoreElements()&lt;br /&gt;
        oTextElement = oTextElementEnum.nextElement&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.TextTable&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a table.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.Paragraph&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a paragraph.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
wend&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Exercise 3: Extend the above example to display in a message box all text portions that are bold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Named access=&lt;br /&gt;
Some objects provide named access to a particular type of subordinate object, some others indexed access, and some both named and indexed access. &lt;br /&gt;
&lt;br /&gt;
For example if the current document in OpenOffice.org is a spreadsheet then to access a particular sheet can be done by index access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByIndex(0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
or named access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByName(&amp;quot;Sheet1&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To check if an object with a particular name already exists use &amp;lt;tt&amp;gt;hasByName&amp;lt;/tt&amp;gt;, for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
if thisComponent.getSheets.hasByName(&amp;quot;Sheet1&amp;quot;) then&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To loop through all the available object names can be done like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
mNames = thisComponent.getSheets.getElementnames&lt;br /&gt;
for i = lbound(mNames) to ubound(mNames)&lt;br /&gt;
        msgbox mNames(i)&lt;br /&gt;
next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Some named subordinate objects also provide the interface:  com.sun.star.container.XNameContainer. This interface defines that such objects should have the following methods: &amp;lt;tt&amp;gt;insertByName&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;replaceByname&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;removeByName&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
thisComponent.getSheets.insertByName(&amp;quot;NewSheet&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Create new objects=&lt;br /&gt;
Some objects have services which implement interfaces to provide specific methods for creating a particular type of object. &lt;br /&gt;
&lt;br /&gt;
For example if the current document is a Writer document then &amp;lt;tt&amp;gt;thisComponent.getText&amp;lt;/tt&amp;gt; is an object that provides the service com.sun.star.text.Text which implements the interface  com.sun.star.text.XSimpleText which defines the methods &amp;lt;tt&amp;gt;createTextCursor&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;createTextCursorByRange&amp;lt;/tt&amp;gt;. Both of these methods create a text cursor for accessing the text of the document. These cursors are quite independent of the view cursor . The view cursor is visible on the screen and is manipulated by the user (and can be manipulated by program control), where as a text cursor is not visible on the screen and is solely used by program control. The following code snippet demonstrates creating a new text cursor, such that it starts at the same location as the viewCursor and is then moved independent of the view cursor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oVC = thisComponent.getCurrentController.getViewCursor&lt;br /&gt;
oCursor = oVC.getText.createTextCursorByRange(oVC)&lt;br /&gt;
oCursor.gotoStartOfSentence(false)&lt;br /&gt;
oCursor.gotoEndOfSentence(true)&lt;br /&gt;
msgbox oCursor.getString&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some objects are context dependent and get created using the method &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; which is defined in the interface com.sun.star.lang.XMultiServiceFactory. For example to add a rectangle to the first page of a drawing document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
dim aSize as new com.sun.star.awt.Size&lt;br /&gt;
 &lt;br /&gt;
aPoint.x = 1000&lt;br /&gt;
aPoint.y = 1000&lt;br /&gt;
 &lt;br /&gt;
aSize.Width = 10000&lt;br /&gt;
aSize.Height = 10000&lt;br /&gt;
 &lt;br /&gt;
oRectangleShape = thisComponent.createInstance(&amp;quot;com.sun.star.drawing.RectangleShape&amp;quot;)&lt;br /&gt;
oRectangleShape.Size = aSize&lt;br /&gt;
oRectangleShape.Position = aPoint&lt;br /&gt;
 &lt;br /&gt;
thisComponent.getDrawPages.getByIndex(0).add(oRectangleShape)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example also uses UNO structs see below for more information on UNO stucts. &lt;br /&gt;
&lt;br /&gt;
Some objects are context independent to create these objects use the OpenOffice.org Basic command createUnoService. For example to create the equivalent to StarDesktop: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDesktop = createUnoService(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The process that I use to determine how to access or create an object is as follows: &lt;br /&gt;
&lt;br /&gt;
Does the object already exist if so I should be able to access it from something like &amp;lt;tt&amp;gt;thisComponent&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Will the new object belong to another object, if so does the owner have a specific method for creating the object, if so use it. &lt;br /&gt;
&lt;br /&gt;
The new object will belong to another object, but that object doesn&amp;#039;t provide a specific method for creating it, but does provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt;. If the object doesn&amp;#039;t provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; are you sure you are using the correct object, or is it context independent. &lt;br /&gt;
&lt;br /&gt;
I have found working out how to create an object to be quite difficult with existing documentation so I hope that this document/wiki will eventually make this clear. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==UNO structs==&lt;br /&gt;
UNO structures can be declared using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;dim&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Or by using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;createUnoStruct&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
aPoint = createUnoStruct(&amp;quot;com.sun.star.awt.Point&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|When declaring UNO structs case is important. Note that everything upto the name of the struct is lowercase, and that the name of the struct is in TitleCase.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Listeners and Handlers==&lt;br /&gt;
Through the user interface it is possible to assign macros to some events: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Configure… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Customize… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
It is also possible to assign macros to a wider range of events using the OpenOffice.org Basic command CreateUnoListener. This same command is used for creating both listeners and handlers. A listener checks for an event and always allows other listeners to respond to the event as well. A handler listens for an event, and can optionally consume the event so that other listeners don&amp;#039;t get to act on it. &lt;br /&gt;
&lt;br /&gt;
The following example creates a keyHandler: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
global IannzExampleKeyHandler&lt;br /&gt;
 &lt;br /&gt;
sub SetupKeyHandler&lt;br /&gt;
oController = thisComponent.currentController&lt;br /&gt;
IannzExampleKeyHandler = CreateUnoListener(&amp;quot;KeyHandler_&amp;quot;,&amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;)&lt;br /&gt;
oController.addKeyHandler(IannzExampleKeyHandler) &amp;#039; Register the listener&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub RemoveKeyHandler&lt;br /&gt;
thisComponent.currentController.removeKeyHandler(IannzExampleKeyHandler)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub KeyHandler_disposing&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyReleased(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
        KeyHandler_keyReleased = False    &lt;br /&gt;
end function&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyPressed(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
KeyHandler_keyPressed = false   &amp;#039;Let other listeners handle the event&lt;br /&gt;
if oKeyEvent.modifiers = com.sun.star.awt.KeyModifier.MOD2 then &amp;#039;Control key was pressed&lt;br /&gt;
        if oKeyEvent.keyCode = com.sun.star.awt.Key.Q then&lt;br /&gt;
                msgbox &amp;quot;Alt + Q was pressed&amp;quot;&lt;br /&gt;
                KeyHandler_keyPressed = true    &amp;#039;Don&amp;#039;t let other listeners process this event&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A variable declared as global keeps its value even after the macro exits. In this case we want to be able to use this variable later to remove the handler. As variables declared globally could be used in other libraries to try and avoid conflict I start all my global variables with Iannz my registered name for the OpenOffice.org web site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub SetupKeyHandler&amp;lt;/tt&amp;gt; sets up the handler. The first parameter to CreateUnoListener is the staring name for the methods that will be called when that type of event occurs in this example .&amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The second parameter is the name of the interface for the listener or handler, &amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;. The name is case sensitive, everything up to and including the module name is always lowercase, the name of the interface always starts with &amp;quot;X&amp;quot; and the remainder is in TitleCase. &lt;br /&gt;
&lt;br /&gt;
Use the SDK to find out what methods the interface must supply. You must supply routines for all of these methods even if you don&amp;#039;t intend to use them. You also need to supply a disposing method. The names of these routines start with the string given in the first parameter to CreateUnoListener , in this example &amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Thus in the example there is &amp;lt;tt&amp;gt;KeyHandler_disposing&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;KeyHandler_keyReleased&amp;lt;/tt&amp;gt; which don&amp;#039;t actually do anything but are required, and &amp;lt;tt&amp;gt;KeyHandler_keyPressed&amp;lt;/tt&amp;gt; which actually does the job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub RemoveKeyHandler&amp;lt;/tt&amp;gt; demonstrates how to remove the handler.&lt;br /&gt;
&lt;br /&gt;
=OpenOffice.org constants=&lt;br /&gt;
The above example uses OpenOffice.org constants. &lt;br /&gt;
&lt;br /&gt;
E.g. com.sun.star.awt.KeyModifier.MOD2&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org constants are case sensitive. Everything up to and including the module name is always lowercase. The constant group is in TitleCase. The actual constant name is always UPPERCASE. &lt;br /&gt;
&lt;br /&gt;
Programmers not using OpenOffice.org Basic may not have access to these constants. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Using the recorder=&lt;br /&gt;
See [[ The OpenOffice.org recorder and UNO dispatch calls]] section for a discussion on recording UNO Dispatch commands versus writing API calls.&lt;br /&gt;
&lt;br /&gt;
= See also=&lt;br /&gt;
* [[Programming_OooWriter |Programming OOoWriter in C++]] where OOoBascic record are used in C++&lt;br /&gt;
* A [[XIntrospection_Interface|XIntrospection Interface]] short description. XRay uses this interface.&lt;br /&gt;
* Download Bernard Marcelly&amp;#039;s [http://www.ooomacros.org/dev.php#101416 XRay OOoBasic tool] &lt;br /&gt;
* See [[Object Inspector|The New Object Inspector]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18619</id>
		<title>Extensions development basic</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extensions_development_basic&amp;diff=18619"/>
		<updated>2006-10-14T05:25:59Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Getting started tutorial&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
This page provides a getting started guide for writing macros in OpenOffice.org Basic. It assumes some prior programming knowledge. Please edit this page to make it more readable. I hope you will find it useful.&lt;br /&gt;
&lt;br /&gt;
If you already know the basics then you may want the [[CookBook]] for wrappers and examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Where do I write the code?=&lt;br /&gt;
OpenOffice.org Basic code is stored in modules within libraries. A library can be: &lt;br /&gt;
&lt;br /&gt;
*Shared (for a network install - OOo Macros &amp;amp; Dialogs) &lt;br /&gt;
*Just for the current user (My Macros &amp;amp; Dialogs) &lt;br /&gt;
*Within a document or template, so that its code is only available when that document is open.&lt;br /&gt;
&lt;br /&gt;
Libraries not stored in a document or template (that is libraries that are shared or for the current user) are referred to as &amp;#039;&amp;#039;&amp;#039;OpenOffice.org libraries&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
To determine the actual folders that contain the OpenOffice.org libraries see:&amp;lt;br&amp;gt; &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Options… &amp;gt; OpenOffice.org &amp;gt; Paths &amp;gt; BASIC&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Do not copy or move libraries using operating system commands. Use the macro organizer or package manager instead.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modules within libraries have a maximum size of 64kb. A library can contain up to 16,000 modules. &lt;br /&gt;
&lt;br /&gt;
For more information see online help for: Modules and Libraries.&lt;br /&gt;
&lt;br /&gt;
=Accessing the IDE=&lt;br /&gt;
To access the IDE for the first time: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Organize macros &amp;gt; OpenOffice.org Basic… &amp;gt;&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
To get started we will use Module1 in the Standard library which is stored for the current user only: &lt;br /&gt;
&lt;br /&gt;
Type a name for the new macro: &amp;#039;&amp;#039;&amp;#039;HelloWorld&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
In the macro from listbox select &amp;#039;&amp;#039;&amp;#039;Standard&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Click &amp;#039;&amp;#039;&amp;#039;New&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
You should now see something like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
 &lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
The cursor will be positioned at the start of the &amp;lt;tt&amp;gt;Sub HelloWorld&amp;lt;/tt&amp;gt; line. &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|Now that while the IDE is running it can be accessed from the OpenOffice.org Window menu, or the task panel provided by the operating system.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Entering the code=&lt;br /&gt;
Select and delete: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
REM  *****  BASIC  *****&lt;br /&gt;
 &lt;br /&gt;
Sub Main&lt;br /&gt;
 &lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Below the line &amp;quot;Sub HelloWorld&amp;quot; type &amp;lt;tt&amp;gt;msgbox &amp;quot;Hello World!&amp;quot;&amp;lt;/tt&amp;gt;, so that the editor looks like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
Sub HelloWorld&lt;br /&gt;
  msgbox &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
End Sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Notes:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|The IDE does not provide code completion or help with command syntax as you type, but to get help on a Basic command position the cursor in the command and press F1.&amp;lt;br&amp;gt; OpenOffice.org Basic commands are not case sensitive. Thus msgbox, MSGBOX and Msgbox will all work.&amp;lt;br&amp;gt; Strings are enclosed in double quotes.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Running the code=&lt;br /&gt;
There are several ways of running the Basic code, these include: &lt;br /&gt;
&lt;br /&gt;
Directly from the IDE. There is a run button on the macro bar (by default the third control on the second toolbar). This will run the first macro in the current module. &lt;br /&gt;
&lt;br /&gt;
From the tools menu:&lt;br /&gt;
&lt;br /&gt;
(Version 1.1.x) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macros &amp;gt; Macro…&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
(Version 1.9.x and above) &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Macro &amp;gt; Run Macro…&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ key press]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a [[ menu entry]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to a toolbar button. &lt;br /&gt;
&lt;br /&gt;
Creating a [[ control in a document]]. &lt;br /&gt;
&lt;br /&gt;
Assigning the macro to an event. &lt;br /&gt;
&lt;br /&gt;
For now try running the &amp;quot;HelloWorld&amp;quot; subroutine by clicking the &amp;#039;&amp;#039;&amp;#039;Run&amp;#039;&amp;#039;&amp;#039; button. A small dialog titled &amp;quot;soffice&amp;quot; with the text &amp;quot;Hello World!&amp;quot; and an OK button should be displayed.&lt;br /&gt;
&lt;br /&gt;
=Saving the code=&lt;br /&gt;
The code gets automatically saved whenever the container for the code gets saved. Thus, if the code is in an OpenOffice.org library (shared or users) then it gets automatically saved when OpenOffice.org exits. If the code is in a library which is part of a document it gets saved whenever the document is saved. &lt;br /&gt;
&lt;br /&gt;
On the Standard toolbar (by default the top toolbar) in the IDE there is a save button. If the code is in a document or template then clicking this button saves the entire document or template. If the code is in an OpenOffice.org library then just the current library gets saved. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
It is possible to force variable declaration with &amp;lt;tt&amp;gt;Option Explicit&amp;lt;/tt&amp;gt; at the top of the module. For a discussion on whether to declare variables or not see: [[http://www.oooforum.org/forum/viewtopic.phtml?t=5845 this discussion]]. &lt;br /&gt;
&lt;br /&gt;
In that discussion the initial author of this wiki thought that variables should always be declared. Since then he has changed to not declaring them. In short it is generally a personal preference. In either case, it is the initial authors preference that variables be named according to the following convention, which is used in the examples in this Wiki: &lt;br /&gt;
&lt;br /&gt;
The first letter of the variable name indicates the type of value that the variable is going to hold, as per the following table (based on a table in Tutorial.pdf by Sun) &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Letter&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Meaning&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|a&lt;br /&gt;
|Structure&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Boolean (TRUE or FALSE)&lt;br /&gt;
|-&lt;br /&gt;
|e&lt;br /&gt;
|Enumeration. This variable can only have one of a limited set of values.&lt;br /&gt;
|-&lt;br /&gt;
|f&lt;br /&gt;
|Float (3.402823 x 1038 to 1.401298 x 10-45. A single variable can take up to four bytes)&amp;lt;br&amp;gt; Double (1.79769313486232 x 10308 to 4.94065645841247 x 10-324. A double variable can take up to eight bytes)&amp;lt;br&amp;gt; Currency (-922337203685477.5808 to +922337203685477.5807 and takes up to eight bytes of memory)&lt;br /&gt;
|-&lt;br /&gt;
|m&lt;br /&gt;
|Array (aka sequence aka matrix)&lt;br /&gt;
|-&lt;br /&gt;
|n&lt;br /&gt;
|Integer (-32768 to 32767.) or&amp;lt;br&amp;gt; Long (-2147483648 and 2147483647).&lt;br /&gt;
|-&lt;br /&gt;
|o&lt;br /&gt;
|Object, service, or interface&lt;br /&gt;
|-&lt;br /&gt;
|s&lt;br /&gt;
|String (A string variable can store up to 65535 Unicode characters).&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Interface, to indicate that only operations of a particular interface of an object are used&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Variant, Any&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use long descriptive variable names making use of camel case &lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|User defined OpenOffice.org Basic variables are not case sensitive. But UNO-API constants are case sensitive.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Convention exceptions to long descriptive names is for index variables where i, j, and k are commonly used, and for when a string is being built-up, where s is commonly used. &lt;br /&gt;
&lt;br /&gt;
Edit sub HelloWorld so that it looks like the following and run it: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub HelloWorld&lt;br /&gt;
dim i as integer &amp;#039;This line is optional&lt;br /&gt;
  for i = 0 to 2&lt;br /&gt;
    &amp;#039;These lines are indented for ease of reading only&lt;br /&gt;
    &amp;#039;all your code should be like this for lonog time survival&lt;br /&gt;
    msgbox &amp;quot;Hello World &amp;quot; &amp;amp; i&lt;br /&gt;
  next i&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
For more information on variables see the online help for &amp;quot;using variables&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=Understanding the OpenOffice.org API=&lt;br /&gt;
This section will start with an example. The remainder of this section aims to give information so that the example can be understood and expanded upon. &lt;br /&gt;
&lt;br /&gt;
Try running the following code with different types of documents being active. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
msgbox fnWhichComponent(thisComponent)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function fnWhichComponent(oDoc) as string&lt;br /&gt;
if HasUnoInterfaces(oDoc, &amp;quot;com.sun.star.lang.XServiceInfo&amp;quot;) then &lt;br /&gt;
   if thisComponent.supportsService (&amp;quot;com.sun.star.text.GenericTextDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Text&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.sheet.SpreadsheetDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Spreadsheet&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.presentation.PresentationDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Presentation&amp;quot;&lt;br /&gt;
   elseif thisComponent.supportsService(&amp;quot;com.sun.star.drawing.GenericDrawingDocument&amp;quot;) then&lt;br /&gt;
      fnWhichComponent = &amp;quot;Drawing&amp;quot;&lt;br /&gt;
   else&lt;br /&gt;
      fnWhichComponent = &amp;quot;Oops current document something else&amp;quot;&lt;br /&gt;
   end if&lt;br /&gt;
else&lt;br /&gt;
   fnWhichComponent = &amp;quot;Not a document&amp;quot;&lt;br /&gt;
end if&lt;br /&gt;
End function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Subroutine naming convention==&lt;br /&gt;
In the above example the user defined function has a name that starts with the letters &amp;quot;fn&amp;quot;. This is the initial author&amp;#039;s convention so that people know that this is a user defined function. Similarly, the initial author uses the convention that user defined subroutines start with the letters &amp;quot;sub&amp;quot;. When learning a language and an API it can be difficult to know what is built-in and what has been defined elsewhere. This document/wiki will use this convention for naming functions and subroutines.&lt;br /&gt;
&lt;br /&gt;
==Introducing the OpenOffice.org API==&lt;br /&gt;
This section introduces the following terms: &lt;br /&gt;
&lt;br /&gt;
* Interface &lt;br /&gt;
* Module &lt;br /&gt;
* Service &lt;br /&gt;
* Method &lt;br /&gt;
* Property &lt;br /&gt;
&lt;br /&gt;
Understanding the difference between an interface and a service and what a module is, is not essential to being able to write extensions for OpenOffice.org, but it does help interpreting the documentation, and for introspection purposes. You may need to read this section at least twice. &lt;br /&gt;
&lt;br /&gt;
An &amp;#039;&amp;#039;&amp;#039;interface&amp;#039;&amp;#039;&amp;#039; is a &amp;#039;&amp;#039;definition&amp;#039;&amp;#039; of a set of methods (and their arguments) that a service which implements that interface must have. &lt;br /&gt;
&lt;br /&gt;
Interfaces are grouped together in &amp;#039;&amp;#039;&amp;#039;modules&amp;#039;&amp;#039;&amp;#039; for naming purposes. All interfaces (and services) start with the name &amp;quot;com.sun.star&amp;quot; then the name of the module then the name of the interface (or service). &lt;br /&gt;
&lt;br /&gt;
For example most services provide the com.sun.star.beans.XPropertySet interface. This interface is stored in the module &amp;quot;beans&amp;quot; and provides access to the properties of a service. A &amp;#039;&amp;#039;&amp;#039;property&amp;#039;&amp;#039;&amp;#039; is a value whereas a &amp;#039;&amp;#039;&amp;#039;method&amp;#039;&amp;#039;&amp;#039; is an action. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object can have many services. &lt;br /&gt;
&lt;br /&gt;
An OpenOffice.org object may have a service, which implements an interface, in which a method description says that another OpenOffice.org object is returned.&lt;br /&gt;
&lt;br /&gt;
==Introspection==&lt;br /&gt;
HasUnoInterfaces is an OpenOffice.org Basic function for introspection. See this [[http://www.oooforum.org/forum/viewtopic.phtml?t=7068 link]] for information on introspection in other languages. &lt;br /&gt;
&lt;br /&gt;
HasUnoInterfaces returns true if all of the specified interfaces are available for the specified object. &lt;br /&gt;
&lt;br /&gt;
Most OpenOffice.org objects provide the method supportsService because they have the interface com.sun.star.lang.XServiceInfo. &lt;br /&gt;
&lt;br /&gt;
In the above example, the OpenOffice.org Basic command, &amp;#039;&amp;#039;&amp;#039;HasUnoInterfaces&amp;#039;&amp;#039;&amp;#039; checks that the current document has the interface com.sun.star.lang.XServiceInfo, because if it doesn&amp;#039;t have that interface then it doesn&amp;#039;t have the method supportsService, and a run time error would occur if such an object tried to access its nonexistent method. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;SupportsService&amp;#039;&amp;#039;&amp;#039; is a method which returns true if the specified service is available. The above examples checks for a service to determine the type of document that is currently active.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==X-Ray tool==&lt;br /&gt;
Using HasUnoInterfaces and supportsService gives information about an object at run time, but checking an object like this would be a nightmare for learning? Thankfully Bernard Marcelly has come to our rescue with the X-Ray tool. The X-Ray tool is available from: [[http://ooomacros.org/dev.php#101416 ooomacros]]. Download the zip file, unzip the document, open the document in OpenOffice.org, follow the instructions for installation and set-up. &lt;br /&gt;
&lt;br /&gt;
Part of the X-Ray tool set-up is to specify a local copy of the OpenOffice.org SDK. Download the OpenOffice.org SDK from and extract it. &lt;br /&gt;
&lt;br /&gt;
In the above example, at the start of the code, there are two commented lines (comments start with an apostrophe): &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039;basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
&amp;#039;xray.xray thisComponent&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Now that you have the X-Ray tool installed, uncomment these lines (remove the apostrophes) and rerun the macro. From version 5 of Xray the command simply becomes xray.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;BasicLibraries&amp;#039;&amp;#039;&amp;#039; is an OpenOffice.org Basic command that returns an object for accessing the OpenOffice.org libraries. The &amp;lt;tt&amp;gt;loadLibrary&amp;lt;/tt&amp;gt; method ensures that the routines in that library are available for use. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;xray.xray&amp;lt;/tt&amp;gt; specifies the xray library and the xray subroutine within that library, thisComponent is the object that is being passed to xray for introspection. &lt;br /&gt;
&lt;br /&gt;
To find the object that you want to work with often requires finding or creating it starting from either StarDesktop or thisComponent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Desktop, documents, and current selection==&lt;br /&gt;
StarDesktop and ThisComponent are OpenOffice.org Basic commands that refer to the application and currently active document respectively. &lt;br /&gt;
&lt;br /&gt;
Unlike Microsoft Office, OpenOffice.org is one application with different components. When running some code it maybe useful to check which component is currently active. The above code demonstrates how that checking process can be done. &lt;br /&gt;
&lt;br /&gt;
The Desktop that StarDesktop refers to is conceptual (historically it actually existed) and can be thought of as the OpenOffice.org application.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating new documents==&lt;br /&gt;
To create a new text document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/swriter&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To create a new spreadsheet document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/scalc&amp;quot;, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
An easier approach would be to write a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnNewDoc(sDocType as string)&lt;br /&gt;
fnNewDoc = StarDesktop.loadComponentFromURL(&amp;quot;private:factory/&amp;quot; &amp;amp; sDocType , &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Then creating new documents can be achieved with: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;swriter&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;scalc&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;simpress&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;sdraw&amp;quot;)&lt;br /&gt;
oDoc = fnNewDoc(&amp;quot;smath&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
See http://api.openoffice.org/docs/common/ref/com/sun/star/frame/XComponentLoader.html .&lt;br /&gt;
&lt;br /&gt;
==To open a document==&lt;br /&gt;
The following example shows how to open a file. For information on URLs in OpenOffice.org see [[ URL Basics]]. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sFile = &amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot; &amp;#039; Windows&lt;br /&gt;
sFile = &amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot; &amp;#039; Linux&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
oDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Again it may make sense to make this easier by writing a simple function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
function fnOpenDoc(sFile)&lt;br /&gt;
sURL = ConvertToURL(sFile)&lt;br /&gt;
fnOpenDoc = StarDesktop.loadComponentFromURL(sURL, &amp;quot;_blank&amp;quot;, 0, Array())&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Examples of calling the function: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;C:\Documents and Settings\danny\Desktop\MyCalc.sxc&amp;quot;) &amp;#039; Windows&lt;br /&gt;
oDoc = fnOpenDoc(&amp;quot;/home/danny/Desktop/MyCalc.sxc&amp;quot;) &amp;#039; Linux&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Current Selection==&lt;br /&gt;
It is common to want to run some code that effects the current selection. &amp;lt;tt&amp;gt;ThisComponent&amp;lt;/tt&amp;gt; has the method &amp;lt;tt&amp;gt;getCurrentSelection&amp;lt;/tt&amp;gt;. Since many different types of objects could possibly be selected it is common to check that the currently selected object has the service that contains the method that we want to apply to the object. &lt;br /&gt;
&lt;br /&gt;
Edit the main subroutine to the following and rerun it on a text document with different selections. (To select more than one block of text hold down the control key). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
        oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
        &amp;#039;xray.xray oCurSelection&lt;br /&gt;
        if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
                msgbox &amp;quot;There are &amp;quot; &amp;amp; oCurSelection.getCount() &amp;amp; _&lt;br /&gt;
                 &amp;quot; selections in the current text document.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
With nothing selected the number of selections is one - the insertion point, with one block of text selected the count is still one, but with two blocks of text the count is three - the insertion point and the two blocks of selected text. &lt;br /&gt;
&lt;br /&gt;
Exercise 1: Modify the above code so that it works on selected cell ranges in a spreadsheet. &lt;br /&gt;
&lt;br /&gt;
Question1: For two blocks of cells selected, what would be the count for the number of selections? &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Properties==&lt;br /&gt;
Uncomment &amp;lt;tt&amp;gt;&amp;#039;xray.xray oCurSelection&amp;lt;/tt&amp;gt; so that xray runs, to see that the object that &amp;lt;tt&amp;gt;oCurSelection&amp;lt;/tt&amp;gt; points to has a &amp;quot;property&amp;quot; called &amp;lt;tt&amp;gt;Count&amp;lt;/tt&amp;gt; with a description of &amp;quot;pseudo-prop, read only&amp;quot;. It is possible in OpenOffice.org Basic to write &amp;lt;tt&amp;gt;oCurSelection.count&amp;lt;/tt&amp;gt;, but as this is not possible in all other languages accessing the OpenOffice.org API, this Wiki will try to always use the method approach. (I say try because I have not been in the habit of doing this and sometimes I may forget). &lt;br /&gt;
&lt;br /&gt;
This next example demonstrates changing a property value for the current selections. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
sub main&lt;br /&gt;
basicLibraries.loadLibrary(&amp;quot;Xray&amp;quot;)&lt;br /&gt;
if fnWhichComponent(thisComponent) = &amp;quot;Text&amp;quot; then&lt;br /&gt;
   oCurSelection = thisComponent.getCurrentSelection()&lt;br /&gt;
   if oCurSelection.supportsService(&amp;quot;com.sun.star.text.TextRanges&amp;quot;) then&lt;br /&gt;
      nCount = oCurSelection.Count&lt;br /&gt;
      &amp;#039;xray.xray oCurSelection.getByIndex(0)&lt;br /&gt;
      &amp;#039;Warning: The insertion point will have the same action applied twice&lt;br /&gt;
      &amp;#039;in this case it doesn&amp;#039;t matter, but in others it might.&lt;br /&gt;
      for i = 0 to nCount - 1&lt;br /&gt;
         oCurSelection.getByIndex(i).setPropertyValue(&amp;quot;CharStyleName&amp;quot;, &amp;quot;Strong Emphasis&amp;quot;)&lt;br /&gt;
      next&lt;br /&gt;
   end if&lt;br /&gt;
end if&lt;br /&gt;
end sub&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
In OpenOffice.org Basic it is possible to shorten the assignment line to: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oCurSelection(i).CharStyleName = &amp;quot;Strong Emphasis&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
This wiki will try to use the full methods for both indexing and assigning properties. The rationale is that this makes converting the code to other languages easier and also helps the learner to understand what is happening (again I have not been in the habit of doing this so some examples may slip past me). &lt;br /&gt;
&lt;br /&gt;
Exercise 2: Rewrite the above code so that the warning can be removed. &lt;br /&gt;
&lt;br /&gt;
See [[ Current selection]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Iterative Access to Subordinate Objects (Enumeration access)=&lt;br /&gt;
Sometimes to access the desired object an enumeration is required. For example paragraphs, within a document or within a selection. &lt;br /&gt;
&lt;br /&gt;
When a Writer document is active and some text is selected, both &amp;lt;tt&amp;gt;thisDocument.getText()&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;thisComponent.getCurrentSelection().getByIndex(i)&amp;lt;/tt&amp;gt; have the service: com.sun.star.text.TextRange which has the interface: com.sun.star.container.XContentEnumerationAccess, it is possible to create an enumeration of the paragraphs for the current document or for a particular selection. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
&amp;#039; Create enumeration object&lt;br /&gt;
oTextElementEnum = thisComponent.getText().createEnumeration()&lt;br /&gt;
&amp;#039;or thisComponent.getCurrentSelection().getByIndex(i).createEnumeration()&lt;br /&gt;
 &lt;br /&gt;
&amp;#039; loop over all text elements&lt;br /&gt;
while oTextElementEnum.hasMoreElements()&lt;br /&gt;
        oTextElement = oTextElementEnum.nextElement&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.TextTable&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a table.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
        if oTextElement.supportsService(&amp;quot;com.sun.star.text.Paragraph&amp;quot;) then&lt;br /&gt;
                MsgBox &amp;quot;The current block contains a paragraph.&amp;quot;&lt;br /&gt;
        end if&lt;br /&gt;
wend&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Exercise 3: Extend the above example to display in a message box all text portions that are bold. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Named access=&lt;br /&gt;
Some objects provide named access to a particular type of subordinate object, some others indexed access, and some both named and indexed access. &lt;br /&gt;
&lt;br /&gt;
For example if the current document in OpenOffice.org is a spreadsheet then to access a particular sheet can be done by index access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByIndex(0)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
or named access: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oSheet = thisComponent.getSheets.getByName(&amp;quot;Sheet1&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To check if an object with a particular name already exists use &amp;lt;tt&amp;gt;hasByName&amp;lt;/tt&amp;gt;, for example: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
if thisComponent.getSheets.hasByName(&amp;quot;Sheet1&amp;quot;) then&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
To loop through all the available object names can be done like: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
mNames = thisComponent.getSheets.getElementnames&lt;br /&gt;
for i = lbound(mNames) to ubound(mNames)&lt;br /&gt;
        msgbox mNames(i)&lt;br /&gt;
next&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Some named subordinate objects also provide the interface:  com.sun.star.container.XNameContainer. This interface defines that such objects should have the following methods: &amp;lt;tt&amp;gt;insertByName&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;replaceByname&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;removeByName&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
E.g. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
thisComponent.getSheets.insertByName(&amp;quot;NewSheet&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Create new objects=&lt;br /&gt;
Some objects have services which implement interfaces to provide specific methods for creating a particular type of object. &lt;br /&gt;
&lt;br /&gt;
For example if the current document is a Writer document then &amp;lt;tt&amp;gt;thisComponent.getText&amp;lt;/tt&amp;gt; is an object that provides the service com.sun.star.text.Text which implements the interface  com.sun.star.text.XSimpleText which defines the methods &amp;lt;tt&amp;gt;createTextCursor&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;createTextCursorByRange&amp;lt;/tt&amp;gt;. Both of these methods create a text cursor for accessing the text of the document. These cursors are quite independent of the view cursor . The view cursor is visible on the screen and is manipulated by the user (and can be manipulated by program control), where as a text cursor is not visible on the screen and is solely used by program control. The following code snippet demonstrates creating a new text cursor, such that it starts at the same location as the viewCursor and is then moved independent of the view cursor. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oVC = thisComponent.getCurrentController.getViewCursor&lt;br /&gt;
oCursor = oVC.getText.createTextCursorByRange(oVC)&lt;br /&gt;
oCursor.gotoStartOfSentence(false)&lt;br /&gt;
oCursor.gotoEndOfSentence(true)&lt;br /&gt;
msgbox oCursor.getString&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some objects are context dependent and get created using the method &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; which is defined in the interface com.sun.star.lang.XMultiServiceFactory. For example to add a rectangle to the first page of a drawing document: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
dim aSize as new com.sun.star.awt.Size&lt;br /&gt;
 &lt;br /&gt;
aPoint.x = 1000&lt;br /&gt;
aPoint.y = 1000&lt;br /&gt;
 &lt;br /&gt;
aSize.Width = 10000&lt;br /&gt;
aSize.Height = 10000&lt;br /&gt;
 &lt;br /&gt;
oRectangleShape = thisComponent.createInstance(&amp;quot;com.sun.star.drawing.RectangleShape&amp;quot;)&lt;br /&gt;
oRectangleShape.Size = aSize&lt;br /&gt;
oRectangleShape.Position = aPoint&lt;br /&gt;
 &lt;br /&gt;
thisComponent.getDrawPages.getByIndex(0).add(oRectangleShape)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example also uses UNO structs see below for more information on UNO stucts. &lt;br /&gt;
&lt;br /&gt;
Some objects are context independent to create these objects use the OpenOffice.org Basic command createUnoService. For example to create the equivalent to StarDesktop: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
oDesktop = createUnoService(&amp;quot;com.sun.star.frame.Desktop&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The process that I use to determine how to access or create an object is as follows: &lt;br /&gt;
&lt;br /&gt;
Does the object already exist if so I should be able to access it from something like &amp;lt;tt&amp;gt;thisComponent&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Will the new object belong to another object, if so does the owner have a specific method for creating the object, if so use it. &lt;br /&gt;
&lt;br /&gt;
The new object will belong to another object, but that object doesn&amp;#039;t provide a specific method for creating it, but does provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt;. If the object doesn&amp;#039;t provide &amp;lt;tt&amp;gt;createInstance&amp;lt;/tt&amp;gt; are you sure you are using the correct object, or is it context independent. &lt;br /&gt;
&lt;br /&gt;
I have found working out how to create an object to be quite difficult with existing documentation so I hope that this document/wiki will eventually make this clear. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==UNO structs==&lt;br /&gt;
UNO structures can be declared using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;dim&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
dim aPoint as new com.sun.star.awt.Point&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Or by using the OpenOffice.org Basic command &amp;lt;tt&amp;gt;createUnoStruct&amp;lt;/tt&amp;gt;: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
aPoint = createUnoStruct(&amp;quot;com.sun.star.awt.Point&amp;quot;)&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|&amp;#039;&amp;#039;&amp;#039;Note:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|When declaring UNO structs case is important. Note that everything upto the name of the struct is lowercase, and that the name of the struct is in TitleCase.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Listeners and Handlers==&lt;br /&gt;
Through the user interface it is possible to assign macros to some events: &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.1.x: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Configure… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
OpenOffice.org versions 1.9.x and above: &amp;#039;&amp;#039;&amp;#039;Tools &amp;gt; Customize… &amp;gt; Events&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
It is also possible to assign macros to a wider range of events using the OpenOffice.org Basic command CreateUnoListener. This same command is used for creating both listeners and handlers. A listener checks for an event and always allows other listeners to respond to the event as well. A handler listens for an event, and can optionally consume the event so that other listeners don&amp;#039;t get to act on it. &lt;br /&gt;
&lt;br /&gt;
The following example creates a keyHandler: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;[oobas]&lt;br /&gt;
global IannzExampleKeyHandler&lt;br /&gt;
 &lt;br /&gt;
sub SetupKeyHandler&lt;br /&gt;
oController = thisComponent.currentController&lt;br /&gt;
IannzExampleKeyHandler = CreateUnoListener(&amp;quot;KeyHandler_&amp;quot;,&amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;)&lt;br /&gt;
oController.addKeyHandler(IannzExampleKeyHandler) &amp;#039; Register the listener&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub RemoveKeyHandler&lt;br /&gt;
thisComponent.currentController.removeKeyHandler(IannzExampleKeyHandler)&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
sub KeyHandler_disposing&lt;br /&gt;
end sub&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyReleased(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
        KeyHandler_keyReleased = False    &lt;br /&gt;
end function&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
function KeyHandler_keyPressed(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean&lt;br /&gt;
KeyHandler_keyPressed = false   &amp;#039;Let other listeners handle the event&lt;br /&gt;
if oKeyEvent.modifiers = com.sun.star.awt.KeyModifier.MOD2 then &amp;#039;Control key was pressed&lt;br /&gt;
        if oKeyEvent.keyCode = com.sun.star.awt.Key.Q then&lt;br /&gt;
                msgbox &amp;quot;Alt + Q was pressed&amp;quot;&lt;br /&gt;
                KeyHandler_keyPressed = true    &amp;#039;Don&amp;#039;t let other listeners process this event&lt;br /&gt;
        end if&lt;br /&gt;
end if&lt;br /&gt;
end function&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
A variable declared as global keeps its value even after the macro exits. In this case we want to be able to use this variable later to remove the handler. As variables declared globally could be used in other libraries to try and avoid conflict I start all my global variables with Iannz my registered name for the OpenOffice.org web site. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub SetupKeyHandler&amp;lt;/tt&amp;gt; sets up the handler. The first parameter to CreateUnoListener is the staring name for the methods that will be called when that type of event occurs in this example .&amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
The second parameter is the name of the interface for the listener or handler, &amp;quot;com.sun.star.awt.XKeyHandler&amp;quot;. The name is case sensitive, everything up to and including the module name is always lowercase, the name of the interface always starts with &amp;quot;X&amp;quot; and the remainder is in TitleCase. &lt;br /&gt;
&lt;br /&gt;
Use the SDK to find out what methods the interface must supply. You must supply routines for all of these methods even if you don&amp;#039;t intend to use them. You also need to supply a disposing method. The names of these routines start with the string given in the first parameter to CreateUnoListener , in this example &amp;lt;tt&amp;gt;&amp;quot;KeyHandler_&amp;quot;&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Thus in the example there is &amp;lt;tt&amp;gt;KeyHandler_disposing&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;KeyHandler_keyReleased&amp;lt;/tt&amp;gt; which don&amp;#039;t actually do anything but are required, and &amp;lt;tt&amp;gt;KeyHandler_keyPressed&amp;lt;/tt&amp;gt; which actually does the job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;sub RemoveKeyHandler&amp;lt;/tt&amp;gt; demonstrates how to remove the handler.&lt;br /&gt;
&lt;br /&gt;
=OpenOffice.org constants=&lt;br /&gt;
The above example uses OpenOffice.org constants. &lt;br /&gt;
&lt;br /&gt;
E.g. com.sun.star.awt.KeyModifier.MOD2&lt;br /&gt;
&lt;br /&gt;
OpenOffice.org constants are case sensitive. Everything up to and including the module name is always lowercase. The constant group is in TitleCase. The actual constant name is always UPPERCASE. &lt;br /&gt;
&lt;br /&gt;
Programmers not using OpenOffice.org Basic may not have access to these constants. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Using the recorder=&lt;br /&gt;
See [[ The OpenOffice.org recorder and UNO dispatch calls]] section for a discussion on recording UNO Dispatch commands versus writing API calls.&lt;br /&gt;
&lt;br /&gt;
= See also=&lt;br /&gt;
* [[Programming_OooWriter |Programming OOoWriter in C++]] where OOoBascic record are used in C++&lt;br /&gt;
* A [[XIntrospection_Interface|XIntrospection Interface]] short description. XRay uses this interface.&lt;br /&gt;
* Download Bernard Marcelly&amp;#039;s [http://www.ooomacros.org/dev.php#101416 XRay OOoBasic tool] &lt;br /&gt;
* See [[Object Inspector|The New Object Inspector]] &lt;br /&gt;
&lt;br /&gt;
[[Category:Basic:Tutorials:Extensions]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Talk:Extension_Deployment_nl&amp;diff=18447</id>
		<title>Talk:Extension Deployment nl</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Talk:Extension_Deployment_nl&amp;diff=18447"/>
		<updated>2006-10-12T08:20:19Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: some minor TODO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The page name should be Extension_Deployment (without the &amp;quot;e&amp;quot; after &amp;quot;y&amp;quot;) but I hesitate to change the name as I do not know what else might happen!&lt;br /&gt;
&lt;br /&gt;
The links to the Developer Guide are broken, but I could not fix those because i do not know exactly where those links should lead.&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18446</id>
		<title>Extension Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18446"/>
		<updated>2006-10-12T08:16:50Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* First considerations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== First considerations ==&lt;br /&gt;
&lt;br /&gt;
Extension deployment should not be considered as an independent task.&lt;br /&gt;
Indeed, when you need to deploy extensions on a number of workstations, you&amp;#039;ll need also to deploy templates, autotexts, gallery themes, and so on, because you&amp;#039;ll need to preserve a relative homogeneity. In fact, you&amp;#039;ll often need to deploy extensions in the same time you need to deploy templates, autotexts and gallery themes.&lt;br /&gt;
&lt;br /&gt;
This is the reason why it is suggested here to consider the following approach:&lt;br /&gt;
&lt;br /&gt;
1 - to define the structure of a package which aims to deploy in one operation extensions, including macro and toolbars, templates, autotexts and gallery themes;&lt;br /&gt;
&lt;br /&gt;
2 - to define the user interface of an administration tool whose goal is to create such a package;&lt;br /&gt;
&lt;br /&gt;
3 - to define the user interface of a user tool which would enable the end user to install the package on her workstation, or the administrator to install it in the shared installation tree.&lt;br /&gt;
&lt;br /&gt;
== Technical context ==&lt;br /&gt;
Before specifying the content of the package, we must keep in mind some technical constraints induced by the implementations of the configuration objects, and the rules for specifying their location.&lt;br /&gt;
&lt;br /&gt;
=== The OOo registry ===&lt;br /&gt;
OOo comes with its own registry system.&lt;br /&gt;
&lt;br /&gt;
The registry is implemented in a directory named &amp;quot;registry&amp;quot;, as well in the shared installation directory as in the user .openoffice.org2/user directory.&lt;br /&gt;
&lt;br /&gt;
When the user modifies its OOo environment, sometimes its registry is changed, sometimes not. The installation process should not alter directly the user OOo directory if this change cause alteration in the registry. In this case, the work should be taken in charge by OOo, thus the installation process should invoke OOo API.&lt;br /&gt;
&lt;br /&gt;
=== Default locations ===&lt;br /&gt;
Default locations of the objects seem to be specified in the file&lt;br /&gt;
&amp;lt;code&amp;gt;$(insturl)/share/registry/schema/org/openoffice/Office/Common.xcs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In most configuration files, some frequently used locations are referenced via variables:&lt;br /&gt;
&lt;br /&gt;
$(insturl) represents the installation directory, eg. /opt/openoffice.org2.0&lt;br /&gt;
&lt;br /&gt;
$(userurl) represents the user configuration directory, eg. /home/smith/.openoffice.org2/user&lt;br /&gt;
&lt;br /&gt;
$(work) stands for the user work directory.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
The default locations of templates are specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;Template&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Specifies the templates originate from these folders and sub-folders.&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/template/$(vlang):$(userurl)/template&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Templates are objects very similar to other objects produced with the suite. The only differences stand in the &amp;#039;t&amp;#039; in place of &amp;#039;d&amp;#039; in the second place of the suffix, and in the virtual tree for accessing to them, built from the set of paths declared in the configuration files.&lt;br /&gt;
&lt;br /&gt;
From the time the user changes something in the paths, they are stored in the file &lt;br /&gt;
&amp;lt;code&amp;gt;$(userurl)/registry/data/org/openoffice/Office/Common.xcu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autotexts ===&lt;br /&gt;
&lt;br /&gt;
The default location of autotexts  is specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;AutoText&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Contains the directory which contains the AutoText modules.&amp;lt;/desc&amp;gt;&lt;br /&gt;
   &amp;lt;/info&amp;gt;&lt;br /&gt;
   &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/autotext/$(vlang):$(userurl)/autotext&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Autotexts are organized in categories. The user can create as many categories as she wants, and ask for storing them in one of the directories declared in the configuration file, provided that she has write access. Each category is implemented in a file named &amp;lt;category_name&amp;gt;.bau which is in fact a zip archive. &lt;br /&gt;
&lt;br /&gt;
Nevertheless, if the category name contains special characters, they are silently dropped from the file name. Thus it is more robust to search the category name in the file BlockList.xml included in the archive.&lt;br /&gt;
&lt;br /&gt;
=== Databases ===&lt;br /&gt;
&lt;br /&gt;
The databases are described in .odb files which may be stored anywhere. this ones are standard OOo archive. The content.xml file describe the data source and some attributes of the database.  &lt;br /&gt;
&lt;br /&gt;
The databases are declared in the registry directory, in the file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$(userurl)/registry/data/org/openoffice/Office/DataAccess.xcu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The database name must appear in the &amp;quot;RegisteredNames&amp;quot; node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;node oor:name=&amp;quot;RegisteredNames&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;node oor:name=&amp;quot;the_database_name&amp;quot; oor:op=&amp;quot;replace&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Location&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;file://the/location/of/the/database.odb&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Name&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;the_database_name&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
    &amp;lt;/node&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gallery&amp;#039;s themes ===&lt;br /&gt;
&lt;br /&gt;
At the moment, managment of themes in OOo seems a little bit twisted.&lt;br /&gt;
&lt;br /&gt;
Themes are stored in three binary files, those format are inherited from StarOffice.&lt;br /&gt;
&lt;br /&gt;
This files are suffixed with .sdg, .sdv and .thm.&lt;br /&gt;
&lt;br /&gt;
The .thm file contains, among binary data, the name of the theme, as given by the user.&lt;br /&gt;
&lt;br /&gt;
The name of each file is of the form &amp;lt;code&amp;gt;sgNNN.xxx&amp;lt;/code&amp;gt; where NNN is a number (the same from the three files) and xxx the suffix.&lt;br /&gt;
&lt;br /&gt;
Apparently, the only rule for choosing the number is to obtain unique file names in the target directory.&lt;br /&gt;
&lt;br /&gt;
This implementation is adequate for a local managment of themes, but doesn&amp;#039;t give satisfaction when exchanging themes between users. Indeed, the question is: how to detect duplicates during the installation?&lt;br /&gt;
&lt;br /&gt;
; using the file name? : as the file name is, in a way, randomly given during installation, the same theme may be given different names depending on the history of previous installations on different workstations. Furthermore, OOo may have given the same filename to different themes created on different workstations.&lt;br /&gt;
; using the name stored in the .thm file? : if this name is too generic, as &amp;quot;people&amp;quot;, &amp;quot;events&amp;quot; or &amp;quot;houses&amp;quot;, the same name may be given to different themes created by different users.&lt;br /&gt;
&lt;br /&gt;
Thus, at the installation time, it is pertinent to consider the following cases:&lt;br /&gt;
; the number and the theme name doesn&amp;#039;t exist: to install directly the theme;&lt;br /&gt;
; the number already exists and the theme name doesn&amp;#039;t exist: to search another discriminatory number;&lt;br /&gt;
; the theme name already exists: to ask the user if the existing theme must be overwritten, or the new one renamed,  or its installation aborted.  &lt;br /&gt;
It is important to systematically search for the theme name in all already existing themes.&lt;br /&gt;
&lt;br /&gt;
=== Macros ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== Toolbars ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== The package manager ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is important to consider the package managment provided by OOo V2.&lt;br /&gt;
&lt;br /&gt;
The package manager can import, enable, disable and export packages.&lt;br /&gt;
&lt;br /&gt;
In the package you can store one module containing several libraries of macros.&lt;br /&gt;
&lt;br /&gt;
You can describe additional main menu items, tools menu items and buttons for lauching the macros. The buttons are grouped in one new toolbar.&lt;br /&gt;
&lt;br /&gt;
At the moment, the package manager can&amp;#039;t manage templates, autotexts nor gallery themes.&lt;br /&gt;
&lt;br /&gt;
A package is a zip archive.&lt;br /&gt;
&lt;br /&gt;
The root of this archive contains an &amp;lt;code&amp;gt;addons.xcu&amp;lt;/code&amp;gt; file whose contains is described [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration here]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This project should not start from zero. Some work has already been done, and here is some non exhaustive reference to it.&lt;br /&gt;
&lt;br /&gt;
* Bernard Marcelly has written a document called [http://documentation.openoffice.org/HOW_TO/index.html &amp;quot;How to Distribute Macros with an Addon&amp;quot;] containg macros making very easy to create a package.&lt;br /&gt;
&lt;br /&gt;
* Didier Dorange-Pattoret has written a [http://www.dmaths.org/modules.php?name=Downloads&amp;amp;d_op=getit&amp;amp;lid=58 macro] allowing to easily install galleries.&lt;br /&gt;
&lt;br /&gt;
* Laurent Godard has written DicOOo which allows to install dictionaries on a workstation, and which is now distributed with OOo V2. &lt;br /&gt;
&lt;br /&gt;
* Philippe Allart has written a [http://adullact.net/frs/download.php/1176/mk_OOo_pack.zip simple bash script] which comply to the proposed&lt;br /&gt;
structure below, and which use the tool of  Didier Dorange-Pattoret&lt;br /&gt;
&lt;br /&gt;
== Specification of a configuration package ==&lt;br /&gt;
=== Layout ===&lt;br /&gt;
To be consistent with the technological choices of the developpers team of OOo, it is suggested that the package be implemented as a zip archive.&lt;br /&gt;
&lt;br /&gt;
This archive should contains one directory for each type of object.&lt;br /&gt;
&lt;br /&gt;
Perhaps, it would be a good idea to add a &amp;quot;goodies&amp;quot; directory, allowing to add objects not directly concerned by the configuration process, but which would be very usefull for end users.&lt;br /&gt;
&lt;br /&gt;
Thus, the suggested tree could be as follows:&lt;br /&gt;
&lt;br /&gt;
# /&lt;br /&gt;
#* tools allowing installation of the package&lt;br /&gt;
#* specifications for installation (location of templates, ...)&lt;br /&gt;
## /autotexts/&lt;br /&gt;
##* autotexts (.bau files) to be installed&lt;br /&gt;
## /packages/&lt;br /&gt;
##* packages (.zip files) to be installed&lt;br /&gt;
## /databases/&lt;br /&gt;
##* databases (.odb files) to be installed and possibly local data&lt;br /&gt;
## /templates/&lt;br /&gt;
##* templates to be installed&lt;br /&gt;
## /autocorr/&lt;br /&gt;
##* .dat files containing replacement rules and exceptions&lt;br /&gt;
## /wordbooks/&lt;br /&gt;
##* dictionaries to be installed&lt;br /&gt;
## /fonts/&lt;br /&gt;
##* fonts to be installed&lt;br /&gt;
## /gallery/&lt;br /&gt;
##* themes to be installed&lt;br /&gt;
## /goodies/&lt;br /&gt;
&lt;br /&gt;
=== Dependancies ===&lt;br /&gt;
&lt;br /&gt;
The objects in the package are not fully independants ones from others. For instance, a macro may refer to styles coming with a template and be called when the document is created.&lt;br /&gt;
&lt;br /&gt;
Furthermore, some objects in the package may depend on the previous installation of other objects.&lt;br /&gt;
&lt;br /&gt;
Thus, it will be very useful to identify all types of dependancies, and how and where to express them.&lt;br /&gt;
&lt;br /&gt;
=== Specifications for installation ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is necessary to define what will be specified, and how it will be, for the installation process.&lt;br /&gt;
&lt;br /&gt;
It is useless to invent again the wheel, and it seems a good idea to reuse the [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration  structure] of the addons.xcu file used by the package manager.&lt;br /&gt;
&lt;br /&gt;
Indeed, this structure is very generic, in the sense that it doesn&amp;#039;t contain specific tags. In fact, it&amp;#039;s just a set of two columns tables containing properties/values pairs. Theses tables are organised in tree where each node have a name as an attribute.&lt;br /&gt;
&lt;br /&gt;
Formally, the XML Schema is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
XML Schema to be described&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the work stands in:&lt;br /&gt;
* to define the structure of the tree, and to give a name to each node;&lt;br /&gt;
* for each node, to define the content of the table, i.e. the set of properties/values pairs.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
--[[User:Pallart|Pallart]] 16:34, 6 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18445</id>
		<title>Extension Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18445"/>
		<updated>2006-10-12T08:15:06Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Specifications for installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== First considerations ==&lt;br /&gt;
&lt;br /&gt;
Extension deployement should not be considered as an independent task.&lt;br /&gt;
Indeed, when you need to deploy extensions on a number of workstations, you&amp;#039;ll need also to deploy templates, autotexts, gallery themes, and so on, because you&amp;#039;ll need to preserve a relative homogeneity. In fact, you&amp;#039;ll often need to deploy extensions in the same time you need to deploy templates, autotexts and gallery themes.&lt;br /&gt;
&lt;br /&gt;
This is the reason why it is suggested here to consider the following approach:&lt;br /&gt;
&lt;br /&gt;
1 - to define the structure of a package which aims to deploy in one operation extensions, including macro and toolbars, templates, autotexts and gallery themes;&lt;br /&gt;
&lt;br /&gt;
2 - to define the user interface of an administration tool whose goal is to create such a package;&lt;br /&gt;
&lt;br /&gt;
3 - to define the user interface of a user tool which would enable the end user to install the package on her workstation, or the administrator to install it in the shared installation tree.&lt;br /&gt;
&lt;br /&gt;
== Technical context ==&lt;br /&gt;
Before specifying the content of the package, we must keep in mind some technical constraints induced by the implementations of the configuration objects, and the rules for specifying their location.&lt;br /&gt;
&lt;br /&gt;
=== The OOo registry ===&lt;br /&gt;
OOo comes with its own registry system.&lt;br /&gt;
&lt;br /&gt;
The registry is implemented in a directory named &amp;quot;registry&amp;quot;, as well in the shared installation directory as in the user .openoffice.org2/user directory.&lt;br /&gt;
&lt;br /&gt;
When the user modifies its OOo environment, sometimes its registry is changed, sometimes not. The installation process should not alter directly the user OOo directory if this change cause alteration in the registry. In this case, the work should be taken in charge by OOo, thus the installation process should invoke OOo API.&lt;br /&gt;
&lt;br /&gt;
=== Default locations ===&lt;br /&gt;
Default locations of the objects seem to be specified in the file&lt;br /&gt;
&amp;lt;code&amp;gt;$(insturl)/share/registry/schema/org/openoffice/Office/Common.xcs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In most configuration files, some frequently used locations are referenced via variables:&lt;br /&gt;
&lt;br /&gt;
$(insturl) represents the installation directory, eg. /opt/openoffice.org2.0&lt;br /&gt;
&lt;br /&gt;
$(userurl) represents the user configuration directory, eg. /home/smith/.openoffice.org2/user&lt;br /&gt;
&lt;br /&gt;
$(work) stands for the user work directory.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
The default locations of templates are specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;Template&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Specifies the templates originate from these folders and sub-folders.&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/template/$(vlang):$(userurl)/template&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Templates are objects very similar to other objects produced with the suite. The only differences stand in the &amp;#039;t&amp;#039; in place of &amp;#039;d&amp;#039; in the second place of the suffix, and in the virtual tree for accessing to them, built from the set of paths declared in the configuration files.&lt;br /&gt;
&lt;br /&gt;
From the time the user changes something in the paths, they are stored in the file &lt;br /&gt;
&amp;lt;code&amp;gt;$(userurl)/registry/data/org/openoffice/Office/Common.xcu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autotexts ===&lt;br /&gt;
&lt;br /&gt;
The default location of autotexts  is specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;AutoText&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Contains the directory which contains the AutoText modules.&amp;lt;/desc&amp;gt;&lt;br /&gt;
   &amp;lt;/info&amp;gt;&lt;br /&gt;
   &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/autotext/$(vlang):$(userurl)/autotext&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Autotexts are organized in categories. The user can create as many categories as she wants, and ask for storing them in one of the directories declared in the configuration file, provided that she has write access. Each category is implemented in a file named &amp;lt;category_name&amp;gt;.bau which is in fact a zip archive. &lt;br /&gt;
&lt;br /&gt;
Nevertheless, if the category name contains special characters, they are silently dropped from the file name. Thus it is more robust to search the category name in the file BlockList.xml included in the archive.&lt;br /&gt;
&lt;br /&gt;
=== Databases ===&lt;br /&gt;
&lt;br /&gt;
The databases are described in .odb files which may be stored anywhere. this ones are standard OOo archive. The content.xml file describe the data source and some attributes of the database.  &lt;br /&gt;
&lt;br /&gt;
The databases are declared in the registry directory, in the file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$(userurl)/registry/data/org/openoffice/Office/DataAccess.xcu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The database name must appear in the &amp;quot;RegisteredNames&amp;quot; node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;node oor:name=&amp;quot;RegisteredNames&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;node oor:name=&amp;quot;the_database_name&amp;quot; oor:op=&amp;quot;replace&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Location&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;file://the/location/of/the/database.odb&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Name&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;the_database_name&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
    &amp;lt;/node&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gallery&amp;#039;s themes ===&lt;br /&gt;
&lt;br /&gt;
At the moment, managment of themes in OOo seems a little bit twisted.&lt;br /&gt;
&lt;br /&gt;
Themes are stored in three binary files, those format are inherited from StarOffice.&lt;br /&gt;
&lt;br /&gt;
This files are suffixed with .sdg, .sdv and .thm.&lt;br /&gt;
&lt;br /&gt;
The .thm file contains, among binary data, the name of the theme, as given by the user.&lt;br /&gt;
&lt;br /&gt;
The name of each file is of the form &amp;lt;code&amp;gt;sgNNN.xxx&amp;lt;/code&amp;gt; where NNN is a number (the same from the three files) and xxx the suffix.&lt;br /&gt;
&lt;br /&gt;
Apparently, the only rule for choosing the number is to obtain unique file names in the target directory.&lt;br /&gt;
&lt;br /&gt;
This implementation is adequate for a local managment of themes, but doesn&amp;#039;t give satisfaction when exchanging themes between users. Indeed, the question is: how to detect duplicates during the installation?&lt;br /&gt;
&lt;br /&gt;
; using the file name? : as the file name is, in a way, randomly given during installation, the same theme may be given different names depending on the history of previous installations on different workstations. Furthermore, OOo may have given the same filename to different themes created on different workstations.&lt;br /&gt;
; using the name stored in the .thm file? : if this name is too generic, as &amp;quot;people&amp;quot;, &amp;quot;events&amp;quot; or &amp;quot;houses&amp;quot;, the same name may be given to different themes created by different users.&lt;br /&gt;
&lt;br /&gt;
Thus, at the installation time, it is pertinent to consider the following cases:&lt;br /&gt;
; the number and the theme name doesn&amp;#039;t exist: to install directly the theme;&lt;br /&gt;
; the number already exists and the theme name doesn&amp;#039;t exist: to search another discriminatory number;&lt;br /&gt;
; the theme name already exists: to ask the user if the existing theme must be overwritten, or the new one renamed,  or its installation aborted.  &lt;br /&gt;
It is important to systematically search for the theme name in all already existing themes.&lt;br /&gt;
&lt;br /&gt;
=== Macros ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== Toolbars ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== The package manager ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is important to consider the package managment provided by OOo V2.&lt;br /&gt;
&lt;br /&gt;
The package manager can import, enable, disable and export packages.&lt;br /&gt;
&lt;br /&gt;
In the package you can store one module containing several libraries of macros.&lt;br /&gt;
&lt;br /&gt;
You can describe additional main menu items, tools menu items and buttons for lauching the macros. The buttons are grouped in one new toolbar.&lt;br /&gt;
&lt;br /&gt;
At the moment, the package manager can&amp;#039;t manage templates, autotexts nor gallery themes.&lt;br /&gt;
&lt;br /&gt;
A package is a zip archive.&lt;br /&gt;
&lt;br /&gt;
The root of this archive contains an &amp;lt;code&amp;gt;addons.xcu&amp;lt;/code&amp;gt; file whose contains is described [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration here]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This project should not start from zero. Some work has already been done, and here is some non exhaustive reference to it.&lt;br /&gt;
&lt;br /&gt;
* Bernard Marcelly has written a document called [http://documentation.openoffice.org/HOW_TO/index.html &amp;quot;How to Distribute Macros with an Addon&amp;quot;] containg macros making very easy to create a package.&lt;br /&gt;
&lt;br /&gt;
* Didier Dorange-Pattoret has written a [http://www.dmaths.org/modules.php?name=Downloads&amp;amp;d_op=getit&amp;amp;lid=58 macro] allowing to easily install galleries.&lt;br /&gt;
&lt;br /&gt;
* Laurent Godard has written DicOOo which allows to install dictionaries on a workstation, and which is now distributed with OOo V2. &lt;br /&gt;
&lt;br /&gt;
* Philippe Allart has written a [http://adullact.net/frs/download.php/1176/mk_OOo_pack.zip simple bash script] which comply to the proposed&lt;br /&gt;
structure below, and which use the tool of  Didier Dorange-Pattoret&lt;br /&gt;
&lt;br /&gt;
== Specification of a configuration package ==&lt;br /&gt;
=== Layout ===&lt;br /&gt;
To be consistent with the technological choices of the developpers team of OOo, it is suggested that the package be implemented as a zip archive.&lt;br /&gt;
&lt;br /&gt;
This archive should contains one directory for each type of object.&lt;br /&gt;
&lt;br /&gt;
Perhaps, it would be a good idea to add a &amp;quot;goodies&amp;quot; directory, allowing to add objects not directly concerned by the configuration process, but which would be very usefull for end users.&lt;br /&gt;
&lt;br /&gt;
Thus, the suggested tree could be as follows:&lt;br /&gt;
&lt;br /&gt;
# /&lt;br /&gt;
#* tools allowing installation of the package&lt;br /&gt;
#* specifications for installation (location of templates, ...)&lt;br /&gt;
## /autotexts/&lt;br /&gt;
##* autotexts (.bau files) to be installed&lt;br /&gt;
## /packages/&lt;br /&gt;
##* packages (.zip files) to be installed&lt;br /&gt;
## /databases/&lt;br /&gt;
##* databases (.odb files) to be installed and possibly local data&lt;br /&gt;
## /templates/&lt;br /&gt;
##* templates to be installed&lt;br /&gt;
## /autocorr/&lt;br /&gt;
##* .dat files containing replacement rules and exceptions&lt;br /&gt;
## /wordbooks/&lt;br /&gt;
##* dictionaries to be installed&lt;br /&gt;
## /fonts/&lt;br /&gt;
##* fonts to be installed&lt;br /&gt;
## /gallery/&lt;br /&gt;
##* themes to be installed&lt;br /&gt;
## /goodies/&lt;br /&gt;
&lt;br /&gt;
=== Dependancies ===&lt;br /&gt;
&lt;br /&gt;
The objects in the package are not fully independants ones from others. For instance, a macro may refer to styles coming with a template and be called when the document is created.&lt;br /&gt;
&lt;br /&gt;
Furthermore, some objects in the package may depend on the previous installation of other objects.&lt;br /&gt;
&lt;br /&gt;
Thus, it will be very useful to identify all types of dependancies, and how and where to express them.&lt;br /&gt;
&lt;br /&gt;
=== Specifications for installation ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is necessary to define what will be specified, and how it will be, for the installation process.&lt;br /&gt;
&lt;br /&gt;
It is useless to invent again the wheel, and it seems a good idea to reuse the [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration  structure] of the addons.xcu file used by the package manager.&lt;br /&gt;
&lt;br /&gt;
Indeed, this structure is very generic, in the sense that it doesn&amp;#039;t contain specific tags. In fact, it&amp;#039;s just a set of two columns tables containing properties/values pairs. Theses tables are organised in tree where each node have a name as an attribute.&lt;br /&gt;
&lt;br /&gt;
Formally, the XML Schema is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
XML Schema to be described&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the work stands in:&lt;br /&gt;
* to define the structure of the tree, and to give a name to each node;&lt;br /&gt;
* for each node, to define the content of the table, i.e. the set of properties/values pairs.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
--[[User:Pallart|Pallart]] 16:34, 6 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
	<entry>
		<id>https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18444</id>
		<title>Extension Deployment</title>
		<link rel="alternate" type="text/html" href="https://wiki.openoffice.org/w/index.php?title=Extension_Deployment&amp;diff=18444"/>
		<updated>2006-10-12T08:07:46Z</updated>

		<summary type="html">&lt;p&gt;Sparcmoz: /* Technical context */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== First considerations ==&lt;br /&gt;
&lt;br /&gt;
Extension deployement should not be considered as an independent task.&lt;br /&gt;
Indeed, when you need to deploy extensions on a number of workstations, you&amp;#039;ll need also to deploy templates, autotexts, gallery themes, and so on, because you&amp;#039;ll need to preserve a relative homogeneity. In fact, you&amp;#039;ll often need to deploy extensions in the same time you need to deploy templates, autotexts and gallery themes.&lt;br /&gt;
&lt;br /&gt;
This is the reason why it is suggested here to consider the following approach:&lt;br /&gt;
&lt;br /&gt;
1 - to define the structure of a package which aims to deploy in one operation extensions, including macro and toolbars, templates, autotexts and gallery themes;&lt;br /&gt;
&lt;br /&gt;
2 - to define the user interface of an administration tool whose goal is to create such a package;&lt;br /&gt;
&lt;br /&gt;
3 - to define the user interface of a user tool which would enable the end user to install the package on her workstation, or the administrator to install it in the shared installation tree.&lt;br /&gt;
&lt;br /&gt;
== Technical context ==&lt;br /&gt;
Before specifying the content of the package, we must keep in mind some technical constraints induced by the implementations of the configuration objects, and the rules for specifying their location.&lt;br /&gt;
&lt;br /&gt;
=== The OOo registry ===&lt;br /&gt;
OOo comes with its own registry system.&lt;br /&gt;
&lt;br /&gt;
The registry is implemented in a directory named &amp;quot;registry&amp;quot;, as well in the shared installation directory as in the user .openoffice.org2/user directory.&lt;br /&gt;
&lt;br /&gt;
When the user modifies its OOo environment, sometimes its registry is changed, sometimes not. The installation process should not alter directly the user OOo directory if this change cause alteration in the registry. In this case, the work should be taken in charge by OOo, thus the installation process should invoke OOo API.&lt;br /&gt;
&lt;br /&gt;
=== Default locations ===&lt;br /&gt;
Default locations of the objects seem to be specified in the file&lt;br /&gt;
&amp;lt;code&amp;gt;$(insturl)/share/registry/schema/org/openoffice/Office/Common.xcs&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In most configuration files, some frequently used locations are referenced via variables:&lt;br /&gt;
&lt;br /&gt;
$(insturl) represents the installation directory, eg. /opt/openoffice.org2.0&lt;br /&gt;
&lt;br /&gt;
$(userurl) represents the user configuration directory, eg. /home/smith/.openoffice.org2/user&lt;br /&gt;
&lt;br /&gt;
$(work) stands for the user work directory.&lt;br /&gt;
&lt;br /&gt;
=== Templates ===&lt;br /&gt;
The default locations of templates are specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;Template&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Specifies the templates originate from these folders and sub-folders.&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;/info&amp;gt;&lt;br /&gt;
    &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/template/$(vlang):$(userurl)/template&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Templates are objects very similar to other objects produced with the suite. The only differences stand in the &amp;#039;t&amp;#039; in place of &amp;#039;d&amp;#039; in the second place of the suffix, and in the virtual tree for accessing to them, built from the set of paths declared in the configuration files.&lt;br /&gt;
&lt;br /&gt;
From the time the user changes something in the paths, they are stored in the file &lt;br /&gt;
&amp;lt;code&amp;gt;$(userurl)/registry/data/org/openoffice/Office/Common.xcu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Autotexts ===&lt;br /&gt;
&lt;br /&gt;
The default location of autotexts  is specified in the following XML part:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;prop oor:name=&amp;quot;AutoText&amp;quot; oor:type=&amp;quot;oor:string-list&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;info&amp;gt;&lt;br /&gt;
       &amp;lt;desc&amp;gt;Contains the directory which contains the AutoText modules.&amp;lt;/desc&amp;gt;&lt;br /&gt;
   &amp;lt;/info&amp;gt;&lt;br /&gt;
   &amp;lt;value oor:separator=&amp;quot;:&amp;quot;&amp;gt;$(insturl)/share/autotext/$(vlang):$(userurl)/autotext&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/prop&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Autotexts are organized in categories. The user can create as many categories as she wants, and ask for storing them in one of the directories declared in the configuration file, provided that she has write access. Each category is implemented in a file named &amp;lt;category_name&amp;gt;.bau which is in fact a zip archive. &lt;br /&gt;
&lt;br /&gt;
Nevertheless, if the category name contains special characters, they are silently dropped from the file name. Thus it is more robust to search the category name in the file BlockList.xml included in the archive.&lt;br /&gt;
&lt;br /&gt;
=== Databases ===&lt;br /&gt;
&lt;br /&gt;
The databases are described in .odb files which may be stored anywhere. this ones are standard OOo archive. The content.xml file describe the data source and some attributes of the database.  &lt;br /&gt;
&lt;br /&gt;
The databases are declared in the registry directory, in the file:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$(userurl)/registry/data/org/openoffice/Office/DataAccess.xcu&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The database name must appear in the &amp;quot;RegisteredNames&amp;quot; node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;node oor:name=&amp;quot;RegisteredNames&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;node oor:name=&amp;quot;the_database_name&amp;quot; oor:op=&amp;quot;replace&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Location&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;file://the/location/of/the/database.odb&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
      &amp;lt;prop oor:name=&amp;quot;Name&amp;quot; oor:type=&amp;quot;xs:string&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;value&amp;gt;the_database_name&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/prop&amp;gt;&lt;br /&gt;
    &amp;lt;/node&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Gallery&amp;#039;s themes ===&lt;br /&gt;
&lt;br /&gt;
At the moment, managment of themes in OOo seems a little bit twisted.&lt;br /&gt;
&lt;br /&gt;
Themes are stored in three binary files, those format are inherited from StarOffice.&lt;br /&gt;
&lt;br /&gt;
This files are suffixed with .sdg, .sdv and .thm.&lt;br /&gt;
&lt;br /&gt;
The .thm file contains, among binary data, the name of the theme, as given by the user.&lt;br /&gt;
&lt;br /&gt;
The name of each file is of the form &amp;lt;code&amp;gt;sgNNN.xxx&amp;lt;/code&amp;gt; where NNN is a number (the same from the three files) and xxx the suffix.&lt;br /&gt;
&lt;br /&gt;
Apparently, the only rule for choosing the number is to obtain unique file names in the target directory.&lt;br /&gt;
&lt;br /&gt;
This implementation is adequate for a local managment of themes, but doesn&amp;#039;t give satisfaction when exchanging themes between users. Indeed, the question is: how to detect duplicates during the installation?&lt;br /&gt;
&lt;br /&gt;
; using the file name? : as the file name is, in a way, randomly given during installation, the same theme may be given different names depending on the history of previous installations on different workstations. Furthermore, OOo may have given the same filename to different themes created on different workstations.&lt;br /&gt;
; using the name stored in the .thm file? : if this name is too generic, as &amp;quot;people&amp;quot;, &amp;quot;events&amp;quot; or &amp;quot;houses&amp;quot;, the same name may be given to different themes created by different users.&lt;br /&gt;
&lt;br /&gt;
Thus, at the installation time, it is pertinent to consider the following cases:&lt;br /&gt;
; the number and the theme name doesn&amp;#039;t exist: to install directly the theme;&lt;br /&gt;
; the number already exists and the theme name doesn&amp;#039;t exist: to search another discriminatory number;&lt;br /&gt;
; the theme name already exists: to ask the user if the existing theme must be overwritten, or the new one renamed,  or its installation aborted.  &lt;br /&gt;
It is important to systematically search for the theme name in all already existing themes.&lt;br /&gt;
&lt;br /&gt;
=== Macros ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== Toolbars ===&lt;br /&gt;
to be completed&lt;br /&gt;
&lt;br /&gt;
=== The package manager ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is important to consider the package managment provided by OOo V2.&lt;br /&gt;
&lt;br /&gt;
The package manager can import, enable, disable and export packages.&lt;br /&gt;
&lt;br /&gt;
In the package you can store one module containing several libraries of macros.&lt;br /&gt;
&lt;br /&gt;
You can describe additional main menu items, tools menu items and buttons for lauching the macros. The buttons are grouped in one new toolbar.&lt;br /&gt;
&lt;br /&gt;
At the moment, the package manager can&amp;#039;t manage templates, autotexts nor gallery themes.&lt;br /&gt;
&lt;br /&gt;
A package is a zip archive.&lt;br /&gt;
&lt;br /&gt;
The root of this archive contains an &amp;lt;code&amp;gt;addons.xcu&amp;lt;/code&amp;gt; file whose contains is described [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration here]&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
This project should not start from zero. Some work has already been done, and here is some non exhaustive reference to it.&lt;br /&gt;
&lt;br /&gt;
* Bernard Marcelly has written a document called [http://documentation.openoffice.org/HOW_TO/index.html &amp;quot;How to Distribute Macros with an Addon&amp;quot;] containg macros making very easy to create a package.&lt;br /&gt;
&lt;br /&gt;
* Didier Dorange-Pattoret has written a [http://www.dmaths.org/modules.php?name=Downloads&amp;amp;d_op=getit&amp;amp;lid=58 macro] allowing to easily install galleries.&lt;br /&gt;
&lt;br /&gt;
* Laurent Godard has written DicOOo which allows to install dictionaries on a workstation, and which is now distributed with OOo V2. &lt;br /&gt;
&lt;br /&gt;
* Philippe Allart has written a [http://adullact.net/frs/download.php/1176/mk_OOo_pack.zip simple bash script] which comply to the proposed&lt;br /&gt;
structure below, and which use the tool of  Didier Dorange-Pattoret&lt;br /&gt;
&lt;br /&gt;
== Specification of a configuration package ==&lt;br /&gt;
=== Layout ===&lt;br /&gt;
To be consistent with the technological choices of the developpers team of OOo, it is suggested that the package be implemented as a zip archive.&lt;br /&gt;
&lt;br /&gt;
This archive should contains one directory for each type of object.&lt;br /&gt;
&lt;br /&gt;
Perhaps, it would be a good idea to add a &amp;quot;goodies&amp;quot; directory, allowing to add objects not directly concerned by the configuration process, but which would be very usefull for end users.&lt;br /&gt;
&lt;br /&gt;
Thus, the suggested tree could be as follows:&lt;br /&gt;
&lt;br /&gt;
# /&lt;br /&gt;
#* tools allowing installation of the package&lt;br /&gt;
#* specifications for installation (location of templates, ...)&lt;br /&gt;
## /autotexts/&lt;br /&gt;
##* autotexts (.bau files) to be installed&lt;br /&gt;
## /packages/&lt;br /&gt;
##* packages (.zip files) to be installed&lt;br /&gt;
## /databases/&lt;br /&gt;
##* databases (.odb files) to be installed and possibly local data&lt;br /&gt;
## /templates/&lt;br /&gt;
##* templates to be installed&lt;br /&gt;
## /autocorr/&lt;br /&gt;
##* .dat files containing replacement rules and exceptions&lt;br /&gt;
## /wordbooks/&lt;br /&gt;
##* dictionaries to be installed&lt;br /&gt;
## /fonts/&lt;br /&gt;
##* fonts to be installed&lt;br /&gt;
## /gallery/&lt;br /&gt;
##* themes to be installed&lt;br /&gt;
## /goodies/&lt;br /&gt;
&lt;br /&gt;
=== Dependancies ===&lt;br /&gt;
&lt;br /&gt;
The objects in the package are not fully independants ones from others. For instance, a macro may refer to styles coming with a template and be called when the document is created.&lt;br /&gt;
&lt;br /&gt;
Furthermore, some objects in the package may depend on the previous installation of other objects.&lt;br /&gt;
&lt;br /&gt;
Thus, it will be very useful to identify all types of dependancies, and how and where to express them.&lt;br /&gt;
&lt;br /&gt;
=== Specifications for installation ===&lt;br /&gt;
&lt;br /&gt;
At this stage, it is necessary to define what will be specified, and how it will be, for the installation process.&lt;br /&gt;
&lt;br /&gt;
It is useless to invent again the wheel, and it seems a good idea to reuse the [http://api.openoffice.org/docs/DevelopersGuide/Components/Components.htm#1+7+3+3+Configuration  structure] of the addons.xcu file used by the package manager.&lt;br /&gt;
&lt;br /&gt;
Indeed, this structure is very generic, in the sens that it doesn&amp;#039;t contain specific tags. In fact, it&amp;#039;s just a set of two columns tables containing properties/values pairs. Theses tables are organised in tree where each node have a name as an attribut.&lt;br /&gt;
&lt;br /&gt;
Formally, the XML Schema is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
XML Schema to be described&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, the work stands in:&lt;br /&gt;
* to define the structure of the tree, and to give a name to each node;&lt;br /&gt;
* for each node, to define the content of the table, i.e. the set of properties/values pairs.&lt;br /&gt;
&lt;br /&gt;
== Contributors ==&lt;br /&gt;
--[[User:Pallart|Pallart]] 16:34, 6 April 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Extensions]]&lt;/div&gt;</summary>
		<author><name>Sparcmoz</name></author>
	</entry>
</feed>