Test repository to check push and ssh key
Find a file
Michael Meeks 5d5f447e73 UnoControls, toolkit, uuoi, xmlsecurity: convert new to ::Create.
Change-Id: I7b8c7ece656589c50fb066e9fa1565fd59f930da
2015-04-16 22:21:04 +01:00
.git-hooks
accessibility More misc. cleanup. 2015-04-10 14:44:45 +01:00
android android: update emulator / debugging documentation 2015-04-08 11:28:49 +02:00
animations
apple_remote
avmedia make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
basctl make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
basebmp
basegfx
basic Automated conversion of VclPtr construction to use Instance template. 2015-04-10 13:40:25 +01:00
bean
bin bin/run: Survive files with spaces in filenames. 2015-04-08 00:04:05 +02:00
binaryurp
bridges
canvas formula & canvas: convert new to ::Create to get initial ref-counting right. 2015-04-16 21:48:48 +01:00
chart2 Lost more cleanup and fixing post re-basing. 2015-04-10 18:36:40 +01:00
clew
cli_ure
codemaker
comphelper
compilerplugins wrap more stuff in VclPtr 2015-04-10 13:01:47 +01:00
config_host
configmgr
connectivity prophylactic double dispose audit. 2015-04-09 22:35:14 +01:00
cppcanvas Manual cleanup of misc. issues. 2015-04-10 13:40:40 +01:00
cppu
cppuhelper convert RegError to scoped enum 2015-04-09 08:41:11 +02:00
cpputools
cui loplugin:cstylecast 2015-04-15 16:42:09 +02:00
dbaccess Explicit disposeOnce instead of transient wrappers. 2015-04-13 15:49:24 +01:00
desktop Lost more cleanup and fixing post re-basing. 2015-04-10 18:36:40 +01:00
dictionaries@7991db3dd7 Updated core 2015-04-08 10:23:09 +00:00
distro-configs
drawinglayer drawinglayer, editeng, forms, fpicker: convert new to ::Create. 2015-04-16 22:09:41 +01:00
dtrans
editeng drawinglayer, editeng, forms, fpicker: convert new to ::Create. 2015-04-16 22:09:41 +01:00
embeddedobj
embedserv
eventattacher
extensions fix live children left behind at destroy 2015-04-16 10:12:40 +02:00
external
extras
filter VclPtr: unfortunate includes needed for inlining ref/unref. 2015-04-10 21:00:13 +01:00
forms drawinglayer, editeng, forms, fpicker: convert new to ::Create. 2015-04-16 22:09:41 +01:00
formula formula & canvas: convert new to ::Create to get initial ref-counting right. 2015-04-16 21:48:48 +01:00
fpicker drawinglayer, editeng, forms, fpicker: convert new to ::Create. 2015-04-16 22:09:41 +01:00
framework Manual cleanup of misc. issues. 2015-04-10 13:40:40 +01:00
helpcompiler
helpcontent2@7e67bfc7ab
hwpfilter
i18nlangtag
i18npool loplugin:staticmethods 2015-04-09 10:13:18 +02:00
i18nutil
icon-themes Breeze: update for index and changes 2015-04-07 21:33:13 +00:00
idl
idlc fix android build 2015-04-09 09:10:30 +02:00
include make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
instsetoo_native
io
ios
javaunohelper
jurt
jvmaccess
jvmfwk
l10ntools
librelogo
libreofficekit
lingucomponent convert CapType to scoped enum 2015-04-08 11:40:15 +02:00
linguistic loplugin:staticmethods 2015-04-09 10:13:18 +02:00
lotuswordpro Automated conversion of VclPtr construction to use Instance template. 2015-04-10 13:40:25 +01:00
m4
mysqlc vclwidget: only call dispose() once 2015-04-10 10:55:36 +01:00
nlpsolver
o3tl
odk vclwidget: only call dispose() once 2015-04-10 10:55:36 +01:00
offapi Update the reference rdbs to libreoffice-4-4 2015-04-07 18:46:26 +02:00
officecfg BREEZE: Enable 'Indexes and Tables' entry in Writer 2015-04-07 21:33:00 +00:00
oovbaapi
oox A UNO Any can't contain an Any 2015-04-08 17:45:08 +02:00
opencl
osx
package loplugin:staticmethods 2015-04-09 10:13:18 +02:00
postprocess
pyuno A UNO Any can't contain an Any 2015-04-08 17:45:08 +02:00
qadevOOo
readlicense_oo
registry loplugin:salbool 2015-04-09 10:19:27 +02:00
remotebridges
reportbuilder
reportdesign Manual cleanup of misc. issues. 2015-04-10 13:40:40 +01:00
ridljar
rsc
sal tdf#43157: remove osl/diagnose.h dependency from sal/osl/unx/socket.cxx 2015-04-08 17:55:41 +02:00
salhelper
sax
sc make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
scaddins
sccomp
scp2
scripting
sd make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
sdext
setup_native
sfx2 make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
shell
slideshow slideshow: convert new to ::Create to get initial ref-counting right. 2015-04-16 20:50:12 +01:00
smoketest
solenv solenv: there are no more SvArrays in need of pretty printing 2015-04-08 17:51:38 +02:00
soltools
sot Remove dead INetProtocol::Vim 2015-04-07 20:21:21 +02:00
starmath make CreatePrinterOptionsPage returns a VclPtr<>. 2015-04-16 20:43:49 +01:00
stoc convert RegError to scoped enum 2015-04-09 08:41:11 +02:00
store
svgio
svl svl: move SfxItemSet methods together 2015-04-08 17:51:38 +02:00
svtools More protection for SvTreeListBox. 2015-04-16 09:34:30 +01:00
svx make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
sw make CreateItemWindow return a VclPtr<>. 2015-04-16 21:31:18 +01:00
swext
sysui
test
testtools
toolkit UnoControls, toolkit, uuoi, xmlsecurity: convert new to ::Create. 2015-04-16 22:21:04 +01:00
tools tools: leave ErrorContext with a vcl::Window * for now. 2015-04-16 21:59:00 +01:00
translations@6a11450be8
tubes
ucb loplugin:staticmethods 2015-04-09 06:44:49 +00:00
ucbhelper
udkapi Update the reference rdbs to libreoffice-4-3 2015-04-07 18:34:50 +02:00
UnoControls UnoControls, toolkit, uuoi, xmlsecurity: convert new to ::Create. 2015-04-16 22:21:04 +01:00
unodevtools
unoidl convert RTReferenceType to scoped enum 2015-04-09 08:41:11 +02:00
unoil
unotest
unotools
unoxml
ure
uui UnoControls, toolkit, uuoi, xmlsecurity: convert new to ::Create. 2015-04-16 22:21:04 +01:00
vbahelper A UNO Any can't contain an Any 2015-04-08 17:45:08 +02:00
vcl Improve the VclPtr documentation. 2015-04-16 10:50:26 +01:00
winaccessibility
wizards
writerfilter A UNO Any can't contain an Any 2015-04-08 17:45:08 +02:00
writerperfect missing nullptr. 2015-04-10 13:40:47 +01:00
xmerge
xmlhelp
xmloff xmloff: also print what is duplicate 2015-04-08 17:51:36 +02:00
xmlreader
xmlscript
xmlsecurity UnoControls, toolkit, uuoi, xmlsecurity: convert new to ::Create. 2015-04-16 22:21:04 +01:00
.gitattributes
.gitignore
.gitmodules
.gitreview
autogen.sh
config.guess
config.sub
config_host.mk.in
config_host_lang.mk.in
configure.ac
COPYING
COPYING.LGPL
COPYING.MPL
download.lst
g
install-sh
leak-suppress.txt
Library_merged.mk
lo.xcent.in
logerrit
Makefile.fetch
Makefile.gbuild
Makefile.in
README.cross
README.md
README.Solaris
Repository.mk
RepositoryExternal.mk
RepositoryFixes.mk
RepositoryModule_build.mk
RepositoryModule_host.mk
TEMPLATE.SOURCECODE.HEADER
unusedcode.easy
unusedcode.exclude
unusedcode.README

A quick overview of the LibreOffice code structure.

Overview

You can develop for LibreOffice in one of two ways, one recommended and one much less so. First the somewhat less recommended way: it is possible to use the SDK to develop an extension, for which you can read the API docs here and here. This re-uses the (extremely generic) UNO APIs that are also used by macro scripting in StarBasic.

The best way to add a generally useful feature to LibreOffice is to work on the code base however. Overall this way makes it easier to compile and build your code, it avoids any arbitrary limitations of our scripting APIs, and in general is far more simple and intuitive - if you are a reasonably able C++ programmer.

The important bits of code

Each module should have a README file inside it which has some degree of documentation for that module; patches are most welcome to improve those. We have those turned into a web page here:

http://docs.libreoffice.org/

However, there are two hundred modules, many of them of only peripheral interest for a specialist audience. So - where is the good stuff, the code that is most useful. Here is a quick overview of the most important ones:

Module Description
sal/ this provides a simple System Abstraction Layer
tools/ this provides basic internal types: 'Rectangle', 'Color' etc.
vcl/ this is the widget toolkit library and one rendering abstraction
framework UNO framework, responsible for building toolbars, menus, status bars, and the chrome around the document using widgets from VCL, and XML descriptions from /uiconfig/ files
sfx2/ legacy core framework used by Writer/Calc/Draw: document model / load/save / signals for actions etc.
svx/ drawing model related helper code, including much of Draw/Impress

Then applications

Module Description
desktop/ this is where the 'main' for the application lives, init / bootstrap. the name dates back to an ancient StarOffice that also drew a desktop
sw/ Writer
sc/ Calc
sd/ Draw / Impress

There are several other libraries that are helpful from a graphical perspective:

Module Description
basebmp/ enables a VCL compatible rendering API to render to bitmaps, as used for LibreOffice Online, Android, iOS, etc.
basegfx/ algorithms and data-types for graphics as used in the canvas
canvas/ new (UNO) canvas rendering model with various backends
cppcanvas/ C++ helper classes for using the UNO canvas
drawinglayer/ View code to render drawable objects and break them down into primitives we can render more easily.

Finding out more

Beyond this, you can read the README files, send us patches, ask on the mailing list libreoffice@lists.freedesktop.org (no subscription required) or poke people on IRC #libreoffice-dev on irc.freenode.net - we're a friendly and generally helpful mob. We know the code can be hard to get into at first, and so there are no silly questions.