The Document Foundation Planet


July 15, 2018

Andreas Kainz

2018 week 27 LibreOffice log


Week 27 start with the hard string freeze for 6.1 So I was a bit hurry to submit the last patches for Notebookbar implementations to get everything translated. Thanks to Cloph I get everything into 6.1. After that the second part was the Notebookbar codebase changes made from GSOC student Kshitij Pathania and his mentor Szymon KĹ‚os. I don’t know how but everything was backported to 6.1 and so our experimental users can test the different Notebookbar implementations so that we hopefully get an awesome NB release with 6.2. Bugfixing was no on top of the todo list.

Icon Themes

Colibre icons get full support for 32px icon size so you can change in Options -> View -> Toolbar icon size -> Extra Large. General Colibre icon size bugfixing was always in focus to get an awesome initial Colibre icon theme release.


Elementary icon theme is now default on all GTK platforms so they get some updates to get ready for the 6.1 release.

Breeze icons get also some updated icons for a wonderful 6.1 release.

Tango icons was default on Windows and GTK platforms in 6.0 but in 6.1 it want be default any more. There are some reason first is the lack of maintainer. As galaxy icons were dropped from the core LibreOffice repository (available via the extension webpage) tango icons need some tweaks to get ready for 6.1 without galaxy.

In general Colibre, Breeze and Elementary should be ready for 6.1 and the new icons needed for the different Notebookbar implementations. Some minor work has to be done next week.


I love the LibreOffice menubar and Jay did a great work in the last releases but the layout of the different LibreOffice apps were not 100% consistent so I submit some patches to get a better synchronization between the different apps.


For the full list of changes check the gerrit history log I’m talking about 30 patches. In the next weeks I’ll work on the different icon themes I’m the maintainer and submit missing icons to Colibre, Breeze and Elementary icon theme to get a gread 6.1 release.

If you’d like to be part of the story become a Patreondownloads_wordmark_white_on_coral2x.jpg

by kdeonlinux at July 15, 2018 10:10 PM

Ekansh Jha

GSoC’18: SmartArt Week 9

This week I’ve submitted some patches which relates to unit testing, laying out of shapes, and supporting some parameter.

Support ctrShpMap(Center Shape Mapping) Parameter

It relates to the cycle algorithm. A value of none specifies to place nodes around a circle. A value of fNode specifies to place the first node in the center and the remaining nodes around the circle with default is none. In simple language it specifies where to place nodes in relation to the center circle.

Support parTxRTLAlign(Parent Text Right to Left Align) parameter

If the graphic is used with language settings that display text from right to left(like Hebrew), the text should align to the right. There are two parent text(LTR and RTL) alignment parameters that determine the value to use according to system settings. So for that graphic, we should also include parTxRTLAlign (parent text right-to-left align) with default is center.

SmartArt Pyramid

This algorithm was initially not implemented, because of that it was not able to show shapes which relates to pyramid, but with this patch, It rendered correctly except some minor adjustment values issues which can be fixed in the upcoming patches.

Pyramid before the implementation
Pyramid after the implementation

Node layout information

Added two cases in switch statement:

AnimLvl: This variable is used to indicate the animate by level string which is displayed to a user in the user interface. When animLvl is set to ctr. This is being defined in a radial type diagram which allows the user to specify that animation is to start at the center of the diagram.

AnimOne: This variable is used to indicate the string to use for one-by-one animation in the user interface. This is used primarily when defining hierarchical diagrams to specify different ways animations applies to different levels of the diagram.

Unit test: Smartart Pyramid

Added unit testing for Pyramid which tests the Y-position, text in shape and height of the child. But a error is creating problem for building it, tried rebase but it didn’t work, would be awesome if anyone can point to the cause of that error.

by Ekansh Jha at July 15, 2018 06:17 AM

July 14, 2018

Official TDF Blog

Join us at the LibreOffice Conference 2018 in Tirana!

Yes, this year’s LibreOffice Conference takes place from September 25 – 28 in Albania. Register today, meet our community, and have fun! Here’s a quick preview:

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

by Mike Saunders at July 14, 2018 07:34 AM

July 10, 2018

Official TDF Blog

Live LibreOffice 6.1 RC1 Bug Hunting Session in Ankara on July 13

LibreOffice 6.1 is approaching, and the Turkish community is organising an RC1 Bug Hunting Session in Ankara on July 13. Here are the details:

  • Time: 14:00-17:00 (UTC+3)
  • Location: TUBITAK ULAKBIM, 7th Floor, Meeting Room 2
  • Registration form

Attendees will bring their own laptops. Registration until Thursday 17:00 (UTC+3) is required. There will be snacks, tea, and some swag! So if you’re in (or around) Ankara, join our friendly community, and let’s make LibreOffice 6.1 the best release ever!

by Mike Saunders at July 10, 2018 07:28 AM

July 09, 2018

Saurav Chirania

GSoC work report - Week 8

This week, I first worked on improving the log interpreter. It can now open existing files (in addition to starting with blank documents).

I then moved the logAction function from ImplCallEventListenersAndHandler to CallEventListeners. Events from down in the class hierarchy which directly called CallEventListeners from vcl::Window (or ImplCallEventListenersAndHandler from Control) will now get interrupted by the new function, register a log statement, and then go to the class Window. This also allowed to log SpinFieldUp and SpinFieldDown.

According to the feedback from Raal, I worked on resolving the ID conflicts of UI elements in the same dialog. The patch can be seen here.

For week 9, I will keep working on improving UI testing, including the key input inside dialogs as suggested by Markus.

by Saurav ( at July 09, 2018 12:52 PM

Ekansh Jha

GSoC’18: SmartArt Week 8

I’ve added the support to text anchor vertical parameter in text algorithm which specifies the y-axis anchoring of the text area in a shape according to: t(top), mid(middle, default), b(bottom).

If the text is text is a bulleted list, it should be left aligned and top aligned. For the first level of text within a shape, the default is to center the text vertically and horizontally, so these behaviors are changed using the parameters parTxLTRAlign (parent text LTR align) and txAnchorVert (text anchor vertical), setting them to l (left) and t (top), respectively. I’ve submitted the patch regarding this.

I’m trying to support more features which will improve the algorithms.

by Ekansh Jha at July 09, 2018 11:30 AM

July 05, 2018

Miklos Vajna

Improved ECDSA handling in LibreOffice

I wrote about ECDSA handling in LibreOffice last year, back then the target was to be able to verify signatures using the ECDSA algorithm on Linux.

Lots of things happened since then, this post is meant to summarize those improvements. My personal motivation is that Hungarian eID cards come with a gov-trusted ECDSA (x509) cert, so handling those in LibreOffice would be nice. My goals were:

  • platforms: handling Windows as well, not only Linux/macOS

  • operations: handling signing as well, not only verification

  • formats: cover all of ODF, OOXML and PDF

Let’s see what has happened:

  • Linux, ODF, sign: we had hardcoded RSA algorithm when generating a signature, now we infer the sign algorithm from the signing cert algorithm (commit)

  • Linux, OOXML, sign: same problem with hardcoded RSA (commit)

  • Windows, PDF, sign: the certificate chooser had to be ported to from CryptoAPI to CNG (commit)

  • Windows, ODF, verify / sign: this was the largest problem, this required a whole new libxmlsec backend (interface, implementation, all in C90) and also required conditionally using that new backend in LibreOffice (commit)

  • Windows, OOXML, sign: this was almost functional, except that the UI recently regressed, now fixed (commit)

  • Finally now that everything is ported on Windows to use CNG, I could enable it by default yesterday.

I could test hardware-based signing after this, which was fine out of the box on both platforms. Some screenshots:

  • Linux:
  • Windows:

(There is no reason why this would not work on macOS, but I did not test that.)

Thanks Gabor Kelemen who helped me to get a sane card reader that has reasonable driver support on Linux.

All this is available in master (towards LibreOffice 6.2), or you can grab a daily build and try it out right now. :-)

July 05, 2018 07:08 AM

Official TDF Blog

LibreOffice Viewer for Android: Help us fight for digital freedom!

Did you know that LibreOffice Viewer is available for Android phones and tablets? Check it out:

Please confirm that you want to play a YouTube video. By accepting, you will be accessing content from YouTube, a service provided by an external third party.

YouTube privacy policy

If you accept this notice, your choice will be saved and the page will refresh.

It’s available on the Play Store and on F-Droid, and includes experimental editing support. But we want to go much further! You can help our community to improve it:

  • Report any bugs you find so that our QA volunteers can investigate
  • If you have some technical knowledge, build the latest version and test it out (new features are being added regularly)
  • And if you have some experience developing Android apps, we’d love to have your help! Start with the README to get an overview of the app and source code tree, and see here for information on submitting patches

Together we can make the dream of a full-featured version of LibreOffice for Android a reality. Thanks for your help and support!

by Mike Saunders at July 05, 2018 06:53 AM

July 04, 2018

Testbit is going static

This is the first post that is published through Iris, the static website generator used by Testbit. Over the years I fine tuned and tweaked my editing and revisioning tools like probably all programmers/writers do and needed a way to apply this to the web. First Steps I’ve always felt at odds with‌

July 04, 2018 12:45 PM

July 03, 2018

Michael Meeks

2018-07-03 Tuesday.

  • Into Cambridge for an interview with Chris in the morning - had lunch together.
  • Thrilled to see Dennis' multivariate regression work for Calc pushed & published - go Dennis.
  • CP board meeting; drove home, customer call, took H., M., Elize & Alish to Soham for the Young Musician of the Year competition / concert - good music, home. Built ESC minutes, bed.

July 03, 2018 09:27 PM

Official TDF Blog

LibreOffice monthly recap: June 2018

There’s a lot going on in the LibreOffice community, in the lead up to LibreOffice 6.1, in development, documentation, design, QA, translations and much more. Here’s a summary of news and updates in June…

  • LibreOffice 6.0.5 was announced, and includes almost 100 bug and regression fixes. See the announcement for the full details.
  • We started posting out stickers to contributors from the Month of LibreOffice, May 2018 – a big thanks to everyone who took part! We hope you enjoy receiving these in the post…

  • The LibreOffice Conference 2018 is coming up on September, and the call for papers is still open until July 15. If you’re attending the conference (and you totally should!), you can submit a presentation idea here.

Keep in touch – follow us on Twitter, Facebook and Google+. Like what we do? Support our community with a donation – or join us and help us to make LibreOffice even better!

by Mike Saunders at July 03, 2018 02:43 PM

Dennis Francis

Multivariate Regression in Calc

Recently I added the support for doing multivariate regression in LibreOffice Calc via its regression tool along with other related improvements. Now the regression analysis output includes a lot more statistical measures including confidence interval for all estimated parameters.

The improved regression tool in Calc can be accessed via Data > Statistics > Regression
Here is a screenshot of the regression dialog box showing the new features highlighted with red boxes.


Lets go through each of these new features –

A.  Now you can enter a single range that contains multiple X variable observations (along columns or rows). In this example the data-set contains three X variables namely My_X1, My_X2 and My_X3 and the dependent variable My_Y. To do a regression on this data, enter the range A1:C11 to the “Independent variable(s) (X) range” box and the range D1:D11 to the “Dependent variable (Y) range” box as shown above in the figure. With this data we want to estimate the slopes and intercept of a linear function relating the Y and X variables given by :-

My_Y  =  Slope_1 * My_X1   +   Slope_2 * My_X2   +   Slope_3 * My_X3    +    Intercept

B.  The user can now let the regression tool know that the data ranges for X and Y have text labels (or variable names) in them.

C.  In earlier versions, the regression tool only computed the slope and intercepts, so there was no way of knowing how uncertain these numbers are. Now the users can specify confidence level as a percentage and the tool will compute the corresponding confidence intervals for each of the estimates (namely the slopes and intercept).

D.  Finally now there is a way to opt out of computing the residuals for all observations. This is beneficial to someone who is only interested in the slopes and intercept estimates and their statistics.

Following screenshot shows the output of the regression tool.


So, for our toy dataset the estimates for Slope_1 = 0.0075 (Cell B42), Slope_2 = 0.0343 (Cell B43), Slope_3 = 1.0663 (Cell B44) and the Intercept = 101.4513 (Cell B41). The 95% confidence interval for these estimates are in the columns F and G. For example Intercept’s 95% confidence interval is [98.6231, 104.2795].

Note that the above is the result of a linear regression. We can do logarithmic and power regression with multiple X variables as well in the same way.

These new features can be seen in the current development build of LibreOffice Calc and will be available in the 6.2 release. The source code patch for these features can be seen at

I would like to thank Collabora Productivity for their continuous support and encouragement to work on this feature.

by Dennis Francis at July 03, 2018 10:19 AM

Official TDF Blog

Join the final Bug Hunting Session for LibreOffice 6.1!

LibreOffice users around the world help developers to test new features and fix bugs before a new version is released. After the first and second Bug Hunting Sessions of LibreOffice 6.1, which were held on April 27th 2018 and May 28th 2018 respectively, we’re glad to announce the third Bug Hunting Session on July 6th – the last one before the release of LibreOffice 6.1!

LibreOffice 6.1 is due to be released in mid August with many new features described in the release notes and this is our last chance to test and find issues before its release.

In order to find, report and triage bugs, the tests during the Third Bug Hunting Session will be performed on the first Release Candidate version of LibreOffice 6.1, which will be available on the pre-releases server on the day of the event. Builds will be available for Linux (DEB and RPM), macOS and Windows.

Mentors will be available on July 6th 2018, from 7.00 UTC to 19:00 UTC for questions or help in the IRC channel: #libreoffice-qa (connect via webchat) and its Telegram bridge and there will be a dedicated session to test the new offline help system available in LibreOffice 6.1 from 14:00 and 16:00 UTC.

Of course, hunting bugs will be possible also on other days, as the builds of this particular Release Candidate (LibreOffice 6.1.0 RC1) will be available until the end of July, when the second Release Candidate will be available.

With your help, we can make LibreOffice 6.1 the best release yet – thanks!

by Mike Saunders at July 03, 2018 07:49 AM

July 02, 2018

Michael Meeks

2018-07-02 Monday.

  • Mail; admin, product team call, managed to finally get J's and my gmail / Android calendars to sync. up after another horrible scheduling conflict. Skype call with great news from Rob & Amelia.

July 02, 2018 09:00 PM

>Marius Popa Adrian

LibreOffice is now available for Haiku

LibreOffice is working and already can be installed via HaikuDepot. Here is the full announcement

by Adrian Marius Popa ( at July 02, 2018 01:09 PM

Ekansh Jha

GSoC’18: SmartArt Week 7

I started this week with adding support to one of the feature “txAnchorVert” which specifies the y-axis anchoring of the text area in a shape, but due to the problem I was facing in git, I was unable to push the patch.

However, I think the problem is solved and I have pushed the patch of Unit test for snake algorithm based smartarts, which tests the position of the child nodes in normal from left to right layout and from right to left layout, but I think it should show merge conflict as it is related to one of the patch which is not merged, but it’s not showing merge conflict.

I’ll be including more unit tests in order to check the smartart features, smartart documents, and will fix some of the issues in the upcoming week.

by Ekansh Jha at July 02, 2018 07:25 AM

Saurav Chirania

GSoC work report - Week 7

During the 7th week, I sent 3 patches.

1) Gerrit change #56776

This change adds more features to the log interpreter. UNO commands, closing dialogs through buttons, sending UNO commands to open dialogs via keycode is now supported.

2) Gerrit change #56777

This change makes command-line argument parsing of interpreter more standard.

3) Gerrit change #56789

This change adds support for starting any of the 6 apps of LibreOffice through the create_doc_in_start_center() function.

Let's also have a look at a log file and the generated test file. 

Log File -

ButtonUIObject Action:CLICK Id:writer_all Parent:
ModalDialogExecuted Id:CharacterPropertiesDialog
RadioButtonUIObject Action:CLICK Id:90deg Parent:CharacterPropertiesDialog
ListBoxUIObject Action:SELECT Id:linestylelb Parent:CharacterPropertiesDialog {"POS": "6"}
ButtonUIObject Action:CLICK Id:ok Parent:CharacterPropertiesDialog

Test File -

from uitest.framework import UITestCase
import importlib

class TestClass(UITestCase):
def test_function(self):
MainDoc = self.ui_test.create_doc_in_start_center("writer")
MainWindow = self.xUITest.getTopFocusWindow()
CharacterPropertiesDialog = self.xUITest.getTopFocusWindow()
90deg = CharacterPropertiesDialog.getChild("90deg")
linestylelb = CharacterPropertiesDialog.getChild("linestylelb")
linestylelb.executeAction("SELECT", mkPropertyValues({"POS": "6"}))
ok = CharacterPropertiesDialog.getChild("ok")

by Saurav ( at July 02, 2018 04:42 AM

July 01, 2018

Michael Meeks

2018-07-01 Sunday.

  • Played at All Saints in the morning; stayed for meal with the church. Home to play Vive with Alfie; afternoon movie Wonder - interesting, read stories to babes.

July 01, 2018 09:00 PM

June 30, 2018

Michael Meeks

2018-06-30 Saturday.

  • J. out much of the day with Louise; riveted E's netball hoop and put it up on the trampoline; needs some adhesive to stop it rotating. Some mail bits.

June 30, 2018 09:00 PM

Andreas Mantke

First Research On The Migration Of ODFAuthors With Current Data

I looked into a migration of the ODFAuthors site to a current Plone version with the data from the website yesterday. It took me a lot of hours to figure out the most easy way to do this. I tried to migrate from LinguaPlone to the new multilingual Plone plug-in first, but without success. I could update the buildout inside a test environment with the new plug-in, but I wasn’t able to migrate the content to the new framework. And even I wasn’t able to get rid of LinguaPlone. I didn’t get the option to remove it. I got always a traceback and found some users that run into the same issue without a solution. Thus I had to change my strategy. I exported the content that I need to migrate, set up a new and clean Plone 4.3.x environment and tried to updated it to the latest version of 4.3. I had to do some editing on the buildout and had to drop some Plone add-ons from the current buildout script of ODFAuthors. Once I had done this the buildout runs fine and I got a clean new Plone environment. Then I added the plug-ins and Products.contentmigration to the buildout script and run buildout again. I started the Plone instance, created a new Plone site and imported the content (exported from the current ODFAuthors site).
I activated the plug-in and run the migration scripts from Products.contentmigration. I had to migrate more than 4200 content objects and took a fair amount of time. But in the end the migration from the old Archetype content types to the new Dexterity ones was successful.
The next step would be the migration of the instance from Plone 4.3.x to Plone 5.0.x or 5.1.x.

by Andreas Mantke at June 30, 2018 09:51 AM

June 29, 2018

Michael Meeks

2018-06-29 Friday.

  • Mail chew; call with Kendy & Miklos, a frenzy of estimating and processing the admin backlog.

June 29, 2018 09:00 PM

Florian Effenberger

Video of my talk about The Document Foundation

At FOSS Backstage 2018 in Berlin I had the opportunity to give a talk about “The Document Foundation: The open, transparent and meritocratic future of free office software”. I’ll tell you what The Document Foundation is about, how it’s built and what our core values and principles are.

Find the full video here.
(External link to YouTube.)

The structure of The Document Foundation
The structure of The Document Foundation

Video of my talk about The Document Foundation

by Florian Effenberger at June 29, 2018 08:24 AM

June 28, 2018

Andreas Mantke

First Step To Improve ODFAuthors

If the website ODFAuthors should be improved for the future use the first step would be the change of the localization framework from the old LinguaPlone to the current and migrate and reindex all content objects. It’s not possible to update the site to the latest Plone without that step.
I already created a Plone buildout for an upgraded ODFAuthors website that is based on version 5.1.x. This buildout is available from the Github repository of The Document Foundation:

by Andreas Mantke at June 28, 2018 09:45 PM

June 27, 2018

Andreas Mantke

Extension Website With Updated Plone Add-Ons

I finished my work on the update of the two Plone add-ons which I used for the LibreOffice extensions and templates website. I published a new release for each of them. Today I updated the website with the new features of this add-ons. I run a buildout script for this. The  site was only a few minutes offline and is available already again.

It is possible to remove items from the list of available licenses without side effects for already published releases with the outdated (etc.) licenses now.

by Andreas Mantke at June 27, 2018 09:45 PM

June 26, 2018

Andreas Mantke

Working On A New Feature For LibreOffice Extensions-Templates Website

The LibreOffice extensions and templates website runs on the Content Management System (CMS) Plone and uses some plug-ins that I created. I’m currently working on a new feature for this plug-ins, which make possible to remove licenses from the selectable list without any issues for former releases with such licenses.

by Andreas Mantke at June 26, 2018 10:00 AM

June 25, 2018

Ekansh Jha

GSoC’18: SmartArt Week 6

This week, I have written unit test regarding the Basic block diagram, for normal i.e., from right to left as well as for reverse i.e., from left to right, but i don’t know why, jenkins is comparing that unit test with old code base that was without my change, I am working to find out what could be the possible cause for this.

I plan to write unit tests for various smartarts, such that when they are fixed we can find out by the unit test if anything is wrong or not.

Moreover, I am trying to fix some issues regarding smartart-pyramid and working to fix the issues where visibility of the bullets is off.

by Ekansh Jha at June 25, 2018 07:24 AM

June 24, 2018

Olivier Hallot

The Styles Menu and UI Customization

Yesterday I was reviewing a nice feature implemented by the User Experience Team of LibreOffice about the Style menu in WRITER. Like all help pages I review, I must test and explore the feature, looking to get the benefits but also to note the possible pitfalls.

What caught my attention was a nice combination of LibreOffice UI and menu customization. LibreOffice allows documents to carry the customized user interface menus, toolbars and much more. If you have a document that requires a specific set of commands you can customize the user interface in Tools - Customize and store the user interface in your document. When opening the document in another machine with LibreOffice, the user interface carried by the document is displayed. I used this feature professionally when I had to convert some old Excel macros to LibreOffice and the macros had hundreds of lines just to modify the user interface. I drop these lines, did the changes in UI once and stored in the document.

So I applied the same strategy to the Styles menu. I was glad to see that you can format your document with little amount click or by activating the style menu with the keyboard. All my custom style were in the menu.

Then closed my document and opened a new document. I wanted to apply my custom styles as before but hey... it does not work. The custom styles were just doing nothing.

The trick is to customize the Styles menu with your preferred styles and add them to your document instead of the LibreOffice Writer interface (the default). This detail slipped under my nose.

Lessons learned: If you want a document with custom styles in the Styles menu, create a template with your custom styles and custom user interface and each new document based on the template will have everything set up.

Happy Text Styling !

by Olivier Hallot ( at June 24, 2018 09:48 PM

Saurav Chirania

GSoC work report - 24th June

Since my last update, I have
(1) Fixed the parent printing issue when logging keys - Gerrit #55675
(2) Made an interpreter for log statements - Gerrit #56120
(3) Changed some log statements - Gerrit #56305

About the interpreter -

The purpose of printing the log statements in a DSL is mainly to be able to interpret these log statements. The interpreter is written in python and is available at core/uitest/

The interpreter takes a log file as its input and outputs a python file which will act as a test case. It starts to read the log file line-by-line. Some events span two lines in log files, and others one. The first major task is done by the function get_coupling_type() which tells the interpreter whether the event being currently read spans over one line or two. Accordingly, either get_test_line_from_one_log_line() or get_test_line_from_two_log_lines() gets called. The interpreter then creates a python object corresponding to the UI element on which the action was performed. Finally, it calls a method from the created python object to actually perform the action. More information about the interpreter is in the commit message.

Coming up next -

After Gerrit change #56305, all the log statements are now in the appropriate DSL. The next task is to ensure their proper support. I will be working on the functions in the interpreter to support more types of log statements. After this, I will resume working on different UI wrapper classes.

Thank you for reading this :-)

by Saurav ( at June 24, 2018 12:27 PM

June 22, 2018

Caolán McNamara

LibreOffice color selector as GTK widgets

Here's what the native GTK widget mode for the color picker looks like at the moment under Wayland. A GtkMenuButton displaying a color preview of the currently selected color and a GtkPopover containing the color selection widgetry.

While under X, because there the GtkPopover is constrained to its parents size, falling back to using a GtkWindow to contain the widgetry

by Caolán McNamara ( at June 22, 2018 02:21 PM

June 20, 2018

Olivier Hallot

LibreOffice Basic well hidden secrets

Last week I wrote a quite long help page on a poorly known feature of LibreOffice aimed to Basic macro programmers.

LibreOffice - since it was named long time ago - carried a set of Basic libraries with no documentation (that I was able to find). The libraries were created to support some important features such as Euro conversion or WikiEditor, but also had a set of modules and macro very handy for the ad-hoc or professional Basic programmer of LibreOffice.

The library is distributed in the LibreOffice installers and can be opened in the LibreOffice Macros container, accessible when opening the Basic IDE.

I got fond of the TOOLS library because it has many handy macros that otherwise requires quite a lot of hard code writing and LibreOffice API knowledge even for simple operations.

Things like getting the last used row in a spreadsheet, get the value of a cell, get the filename out of a long URI are the kind of Function's and Sub's we don't want to write again but use GetLastUsedRow, GetValueofCellbyName or FileNameoutofPath for the task.

To use the LibreOffice Tools library , add the statement


before the first macro of your module. The help page is already online in

Note that not every library is described in details in the set of Help pages but if you feel motivated to peek in the code and write a simple description of the remaining modules and macros, join our documentation team!

Happy macro programming!

by Olivier Hallot ( at June 20, 2018 10:51 AM

June 18, 2018

Andreas Kainz

New App icons

LibreOffice get new app icons. The style is the same than before cause I love the existing work. So in general it’s only a more flat app icon set cause it fit’s now better into the design language of the operation systems and desktop environmental.

As I don’t have OS-X it would be very helpful if someone can generate the (38) .icns icon files. All files are available in svg and png.

by kdeonlinux at June 18, 2018 09:41 PM

June 17, 2018

Andreas Mantke

New Buildout For ODFAuthors Nearly Finished

I worked very hard on the new Plone buildout for the ODFAuthors website during the last days. I nearly finished the buildout today. I created a new policy and a theming product for the site. I added a template for the frontpage of the new website and am waiting for the input about the content, that the new frontpage should show.

I also need some suggestions on the new publication workflow of the site. The Plone workflow tool is able to run very subtle grained ones.  The Plone Content Management System is also able to send automatic messages on all events like changing the workflow state.

by Andreas Mantke at June 17, 2018 07:00 PM

Ekansh Jha

GSoC’18: SmartArt Week 5

Last week was the week of evaluation with minor fixes in the code I submitted.

I got information about the Coverity error in my submitted patch “Corrected Line Algorithm” : “*** CID 1436015: Code maintainability issues (UNUSED_VALUE)”.

I’ve fixed that in this week. Moreover, child width and height doesn’t depend on nIncX and nIncY, so I’ve removed that code, it relates only to the position of the child. I’ve submitted the patch with the name “coverity#1436015 UNUSED_VALUE” and it has been merged.

Old Smartart Maxdepth
New Smartart MaxDepth

There is no such significant change in the rendering of the smartart but it was important for future changes.

I have also submitted the unit test for the Line Algorithm which asserts the position of the child nodes as well as it asserts that the child nodes are in the same horizontal level.

I’ll submit more unit tests in the coming week with some major changes in the smartarts, and will be adding the test documents to test the rendering of the shapes.

P.S. I passed my first evaluation. Thanks to the whole community.

by Ekansh Jha at June 17, 2018 02:16 PM

Dennis Roczek

Some Statistics on Spam

Well, lately the TDF Wiki Admins luckily hadn’t much to do, but well I still do want to provide some statistics as the results are very impressive.

Our activated “abuse filter” has caught 2214 edits in the the time from 26 March 2018 to 12 June 2018 (so within 78 days) done by 1244 users. Be careful in interpreting the data as after many weeks the spammer detected the problem and tried to hit enter multiple times but with a new session (so all the accounts do not get blocked, part 2 of the rule was never hit except one false positive and by one of my test accounts!).


For a very short test in the night this filter seems very successful at the moment at least for my nerves for the last 3 months. Finger crossed that this stays so in our wiki (and of course all other platforms we provide – if they have spam problems, I do not know, except nabble)!

Some manually work still include 9 classical spammers (so it seems somebody other) who tried to post something in the “main space” / “article space” which we need to block and delete manually, but in 78 days this were only 9 times!!! That’s admin work as I love it: concentrate on the content, not fighting spam!

To mention: another abuse filter which hits much more the false positive, but is alive since ages has protected us from another 5 edits by 4 users from spam. This is ok, as the warning was reworked to make it more clearly what we do want and that most regular users also got excluded finally…

by dennisroczek at June 17, 2018 12:25 AM

June 15, 2018

Florian Effenberger

The Document Foundation – The open, transparent and meritocratic future of free office software (talk at FOSS Backstage 2018)

At FOSS Backstage 2018 in Berlin I had the opportunity to give a talk about “The Document Foundation: The open, transparent and meritocratic future of free office software”. I’ll tell you what The Document Foundation is about, how it’s built and what our core values and principles are.

The slides are available for download (PDF file, 7,8 MB).

The structure of The Document Foundation
The structure of The Document Foundation

The Document Foundation – The open, transparent and meritocratic future of free office software (talk at FOSS Backstage 2018)

by Florian Effenberger at June 15, 2018 09:19 AM

>Marius Popa Adrian

C++ the Newest Old Language : presentation by Matt Godbolt (GOTO Chicago 2018)

This presentation was recorded at GOTO Chicago 2018 C++ is an old language only used by the unfortunate few that absolutely have to, right? Wrong! C++ is not the language it used to be: clunky, error-prone and lacking in tooling. A lot has changed in the last decade: three new language revisions, new compilers and all-new: [...] Download slides and read the full abstract here: https://

by Adrian Marius Popa ( at June 15, 2018 07:55 AM

June 10, 2018

Saurav Chirania

GSoC work report - Week 4

This week involved completing the UI wrapper classes for combo-box and tab-control. The code can be found here.

I have proposed two ways for logging actions for the main LibreOffice writer window. The first one is by writing separate logger for the LibreOffice writer analogous to the VCL logger. The patch is here. The second is by simply sending log statements when the functions for "Go to Page" or "Zoom" are called. The patch is here. Of course, we will push only one of these two patches to master after the code review.

by Saurav ( at June 10, 2018 05:12 PM

June 08, 2018

Florian Reisinger

Kotlin SI-GUI – Incompatible changes


From now on you need the newest updater JAR. I hate that this happened… Updater download

Bottom line: The main application is no longer a ZIP, which needs to be extracted. From now one it is a JAR file, which can be started by a double click…. Therefore the updater procedure had to be changed.

I am sorry for this change, but I am quite sure that should not happen too often ( I do not want to say “should not happen again”, but I would not know a reason to change that again…)

by Florian Reisinger at June 08, 2018 06:01 AM

June 05, 2018

Miklos Vajna

Editing ReqIF-XHTML fragments in LibreOffice Writer

I worked on a small feature to use Writer as an editor for the XHTML fragments inside Requirements Interchange Format (ReqIF) files. First, thanks to Vector for funding Collabora to make this possible.

Writer already supported XHTML import and export before (see my previous post) as a special mode of the HTML filter, this work builds on top of that. The main speciality around XHTML as used for fragments inside a ReqIF file is embedded objects.

The special mode to opt-in for ReqIF-XHTML behavior can actived like this:

  • during import: --infilter="HTML (StarWriter):xhtmlns=reqif-xhtml"

  • during export: -convert-to "xhtml:HTML (StarWriter):xhtmlns=reqif-xhtml"

Three different cases are handled:

  1. Image with native data we don’t understand and just preserve.

  2. Image with OLE2 data, which we hand out to external applications (at least on Windows). On the above video this is an embedded PPSX file, handled by PowerPoint.

  3. Image with ODF data, which we handle internally. This is a Draw document on the above video.

Regarding how it works, the import is a series of unwrapping containers till you get to the real data and the export is the opposite of this. Here are the layers:

  • Larger ReqIF files have the .reqifz extension, and are ZIP files containing an XML file, having the XHTML fragments. This is not relevant for this post, as Writer assumes that extracting the XHTML fragment from ReqIF is done before you load the content into Writer.

  • XHTML always has a PNG image for the object, and optionally it has RTF as native data for the object.

  • The RTF file is a fragment, containing just an embedded OLE1 container.

  • The OLE1 container is just a wrapper around the real OLE2 container.

  • The OLE2 container either has the data directly or MSO has a convention on how to include OOXML files in it (see the PPSX example above), and we handle that.

On export we do the opposite: save the file, put it into OLE2, then into OLE1, then into RTF, finally into XHTML.

There is no specification on how to put ODF files into OLE2, so I extracted the relevant code from LibreOffice’s binary MSO filters and now the Writer HTML filter uses that as well. This avoids code duplication and also could avoid inventing some new markup this way.

All this is available in master (towards LibreOffice 6.2), or you can grab a daily build and try it out right now. :-)

June 05, 2018 08:43 AM

June 03, 2018

Saurav Chirania

GSoC work report - Week 3

This week started with extending the UI logging infrastructure for logging list-box related events. The events ListboxSelect and ListboxFocus will now be recorded in the log file. Here's the patch.

Next, I started to develop logging framework for LibreOffice's writer. The idea is to enumerate the events we need for logging and then have a logger similar to what we have for VCL events. The code can be found here. The patch is under review.

The patch sent in the last week has received a positive review and is ready to be merged.

by Saurav ( at June 03, 2018 02:59 PM