Welcome to The Document Foundation Planet

This is a feed aggregator that collects what LibreOffice and Document Foundation contributors are writing in their respective blogs.

To have your blog added to this aggregator, please mail the website@global.libreoffice.org mailinglist or file a ticket in Redmine.


Friday
20 December, 2024


face

Since the first implementation of a dark color theme we continuously improved the customization of LibreOffice. In a GSoC projects this year, Sahil Gautam made it possible to not only change the application colors but also what is defined by the operating system respectively the desktop environment.…


Thursday
19 December, 2024


face

Berlin, 19 December 2024 – LibreOffice 24.8.4, the fourth minor release of the LibreOffice 24.8 family of the free open source, volunteer-supported office suite for Windows (Intel, AMD and ARM), MacOS (Apple and Intel) and Linux, is available at www.libreoffice.org/download.

The release includes over 55 bug and regression fixes over LibreOffice 24.8.3 [1] to improve the stability and robustness of the software, as well as interoperability with legacy and proprietary document formats.

LibreOffice is the only office suite that respects the privacy of the user, ensuring that the user is able to decide if and with whom to share the content they create. It even allows deleting user related info from documents. As such, LibreOffice is the best option for the privacy-conscious office suite user, while offering a feature set comparable to the leading product on the market.

Also, LibreOffice offers a range of interface options to suit different user habits, from traditional to modern, and makes the most of different screen sizes by using all the space available on the desktop to put the maximum number of features just a click or two away.

The biggest advantage over competing products is the LibreOffice Technology engine, the single software platform on which desktop, mobile and cloud versions of LibreOffice – including those from ecosystem companies – are based.

This allows LibreOffice to produce identical and fully interoperable documents based on two ISO standards: the open and neutral Open Document Format (ODT, ODS, ODP) and the closed and fully proprietary Microsoft OOXML (DOCX, XLSX, PPTX), which hides a large amount of artificial complexity, and can cause problems for users who are confident that they are using a true open standard.

End users looking for support can download the LibreOffice 24.8 Getting Started, Writer, Impress, Draw and Math guides from the following link: books.libreoffice.org/. In addition, they can get first-level technical support from volunteers on mailing lists and the Ask LibreOffice website: ask.libreoffice.org.

LibreOffice for Enterprise

For enterprise-class deployments, TDF strongly recommends the LibreOffice Enterprise family of applications from ecosystem partners, with three or five year backporting of security patches, other dedicated value-added features and Service Level Agreements: www.libreoffice.org/download/libreoffice-in-business/.

Every line of code developed by ecosystem companies for enterprise customers is shared with the community on the master code repository and improves the LibreOffice Technology platform. Products based on LibreOffice Technology are available for all major desktop operating systems (Windows, macOS, Linux and ChromeOS), mobile platforms (Android and iOS) and the cloud.

The Document Foundation’s migration protocol helps companies move from proprietary office suites to LibreOffice, by installing the LTS (long-term support) enterprise-optimised version of LibreOffice, plus consulting and training provided by certified professionals: www.libreoffice.org/get-help/professional-support/.

In fact, LibreOffice’s mature code base, rich feature set, strong support for open standards, excellent compatibility and LTS options make it the ideal solution for organisations looking to regain control of their data and break free from


Wednesday
18 December, 2024


face

General Activities

  1. LibreOffice 24.8.3 was announced on November 14
  2. Olivier Hallot (TDF) did big updates to screenshots in Help, added a help page for login/password dialog and improved help pages on Skia, Writer Navigator and Edit – External links in Draw and Impress. He also added extended tips for Style dialog and Skia options
  3. Pierre F. continued reorganising help pages for Calc functions
  4. Dione Maddern added help pages for Number Format and Design Sidebar decks
  5. Alain Romedenne improved help for BASIC’s Mid method and updated help for ScriptForge’s Exception.PythonShell() method
  6. Bogdan Buzea fixed over 50 issues pointed out by PVS-Studio static analyser, did other code cleanups and worked on harmonising the use of date formats in Help to ISO 8601
  7. Tomaž Vajngerl (Collabora) started working on PDF 2.0 and PDF/A-4 support
  8. Jaume Pujantell (Collabora) fixed an issue with fill content of graphic objects being lost upon PPTX export
  9. Bayram Çiçek, Szymon Kłos, Skyler Grey, Vivek Javiya, Marco Cecchetti, Pranam Lashkari, Hubert Figuière and Miklós Vajna (Collabora) worked on LOKit used by Collabora Online. Vivek also added a command to remove content control formatting
  10. Julien Nabet did some internal improvements to database code and fixed several issues pointed out by static analysers
  11. Xisco Faulí (TDF) fixed 80 issues pointed out by PVS-Studio static analyser, upgraded many dependencies, added a script to check the latest version of external libraries, expanded ODF 1.4 support with help from Regina and did many restructurings in automated tests as well as code cleanups
  12. Michael Stahl (allotropia) made document compression handling more robust, fixed an issue in the WMF export code causing incomplete redactions and did many improvements to hiding elements in Writer
  13. Mike Kaganski (Collabora) fixed a hang related to Windows clipboard, made copying of rich text take font encoding into account, fixed an issue with setting page backgrounds via Java API, made footnote/endnote navigation more robust, made it so nested footnotes in ODF files are ignored instead of causing a read error (support has to be added to ODF spec), made hyphenation code more robust, fixed an issue with certain documents opening as modified and fixed an issue with incorrect OLE object scaling during loading
  14. Caolán McNamara (Collabora) fixed an issue with tabs getting skipped when cycling with Ctrl+PgDn/PgUp in Calc’s Format Cells dialog, fixed crashes and fixed many issues found by static analysers and fuzzers and did code cleanups
  15. Stephan Bergmann (allotropia) worked on WASM build. He also adapted the code to compiler changes and did code cleanups
  16. Noel Grandin (Collabora) fixed an issue with Calc’s background colour conditional formatting sometimes missing newly added entries, made it faster to open XLSX files with lots of conditional formatting and made inspection of BASIC macros in the macro editor safer by detecting and skipping the display of very large UNO property values. He also did many code cleanups and optimisations
  17. Justin Luth (Collabora) fixed an issue with forms

Tuesday
17 December, 2024


face

We’ve finished editing and uploading another batch of videos from our recent conference in Luxembourg. Now the playlist has a total of 51 videos and is almost entirely complete! (There are a couple more that we’re chasing up.)

So, enjoy watching and learning about the technology and community behind the suite. Use the icon in the top-right to choose videos from the playlist:

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.


Monday
16 December, 2024


face

Our team member Peter Schofield just updated the Impress, Draw and Math guides to the latest LibreOffice 24.8 release.

Three Guides released

 

The Impress, Draw and Math guides are the authoritative guides for the end user. They cover presentation, drawings and equation documents. These guides are part of the LibreOffice community offering for the public in general that needs to close the knowledge gap in using LibreOffice.

Peter Schofield

The guides can be downloaded from the LibreOffice Bookshelf as well as from the Documentation website.

A big thank you to dear Peter!

 


Thursday
12 December, 2024


face

LibreOffice 25.2 will be released as final at the beginning of February, 2025 ( Check the Release Plan ) being LibreOffice 25.2 Beta1 the second pre-release since the development of version 25.2 started in mid Juny, 2024. Since the previous release, LibreOffice 25.2 Alpha1, 450 commits have been submitted to the code repository and 105 issues got fixed. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 25.2 Beta1 can be downloaded for Linux, macOS and Windows, and it can be installed alongside the standard version.

In case you find any problem in this pre-release, please report it in Bugzilla ( You just need a legit email account in order to create a new account ).

For help, you can contact the QA Team directly in the QA IRC channel or via Matrix.

LibreOffice is a volunteer-driven community project, so please help us to test – we appreciate it!

Happy testing!!

Download it now!


Friday
06 December, 2024


face

LibreOffice booth at LinuxDays 2024 in Prague

Our Czech community provides insights from the LinuxDays 2024 conference, which took place over the weekend of 12 – 13 October in Prague:

At the LibreOffice booth, there was a very large group of people (with a few exceptions) of satisfied LibreOffice users, of which young people (primary and secondary school students) were represented in surprisingly large numbers. This means that even the youngest generation, who prefer a different approach to data processing than office software, can be reached by LibreOffice.

This year we had a special treat for conference visitors: printed manuals for LibreOffice Base and Writer. The printing of these manuals was provided by Zdeněk Crhonek. They are printed in colour on high quality paper and probably attracted the most interest – they caught the eye at first sight.

The look of LibreOffice

Users overwhelmingly expressed satisfaction with LibreOffice. The features are sufficient, the user interface is easy to get used to, and so is the way of working. For some users, the interface is seen as “old school” – but one such good thing is the implementation of alternative layours. It’s fair to say that few users know about the option to change the user interface layout, despite the fact that this option is offered in the very first dialog after installing the package.

This means that users don’t read these tips (which is a big mistake – they contain very useful and practical advice), and furthermore that LibreOffice lacks a wizard to guide the user through the various setup options. There are a lot of them, but they are hidden, so “nobody” knows about them. Such a guide would be a very useful addition indeed.

LibreOffice booth at LinuxDays 2024 in Prague

Using LibreOffice modules

Most users use LibreOffice to write text, create spreadsheets, and some even make presentations. In this regard, it should be noted that LibreOffice is a really extensive package; it is not a better typewriter. A word processor is not Notepad. So it is a pity that LibreOffice’s features remain unused. Users often create texts that require formatting in, for example, TeX, Markdown and so on. This is also a possible way to go, but they can equally (and better) take advantage of Writer’s extensive range of features. The same applies to Calc: this application is not just for creating spreadsheets, but also for computational operations and visualizations.

Insights on individual modules:

  • Of particular interest was the discovery that you can add content as automatic text in Writer.
  • One user would appreciate a significant improvement in the usability of bulk correspondence by allowing the source data used for this purpose to be imported into Writer, but then independent of the source database (as is reportedly the case in Microsoft Word).
  • Writer supports LaTeX via the TexMaths add-on, which converts the content to PNG or SVG but preserves the source syntax.
  • Users confirmed a known fact, that there is no video compatibility between Impress and PowerPoint. However, exporting from Impress to PDF works – then the videos are preserved.
  • Users

Thursday
05 December, 2024


face

LibreOffice project and community recap banner

Here’s our summary of updates, events and activities in the LibreOffice project in the last four weeks – click the links to learn more…

  • The main theme of November was the Month of LibreOffice, saying thanks for community contributions all across the LibreOffice project – coding, documentation, QA, design and more. At the end of the month we announced the results with 301 contributors eligible to receive sticker packs! Thanks to everyone who took part 😊

Month of LibreOffice banner

  • Meanwhile, we started editing and uploading videos from the recent LibreOffice Conference 2024 in Luxembourg. So far there are 35 videos to watch, covering various aspects of the suite and development – with some more still to come! Here’s the playlist:

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.

LibreOffice Writer Guide 24.8 cover

  • New features are coming to LibreOffice thanks to participants in the Google Summer of Code 2024, including comments in the sidebar, native support for histogram charts and cross-platform .NET bindings for the UNO API.

GSoC logo

  • In the middle of November, we announced LibreOffice 24.8.3, the third bugfix update to the latest stable branch. All users are recommended to get it.

LibreOffice 24.8 banner

  • We have a new podcast! In episode 1, Italo Vignoli and Mike Saunders (both at The Document Foundation) discuss marketing LibreOffice and free software – the challenges and opportunities. (It’s also available on PeerTube.)

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.

  • Then we talked to Moritz Duge who is working on the WebAssembly port of LibreOffice, among other things.

Moritz Duge

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.

Keep in touch – follow us on Mastodon, X (formerly Twitter), Bluesky, Reddit and Facebook. Like what we do? Support our community with a donation – or join our community and help to make LibreOffice even better!


Wednesday
04 December, 2024


face

Month of LibreOffice stickers

At the beginning of November, we began a new Month of LibreOffice campaign, celebrating community contributions all across the project. We do these every six months – so how many people got sticker packs this time? Check it out…

Fantastic work, everyone! Hundreds of people, all across the globe, have helped out in our projects and communities. And those are just community contributions, not including the hundreds more from our ecosystem and certified developers!

We’re hugely thankful for the work – and, of course, everyone who’s listed on the wiki page can get a sticker pack, with the stickers shown above.

How to claim

If you see your name (or username) on this page, get in touch! Email mike.saunders@documentfoundation.org with:

  • your name (or username) from the wiki page
  • along with your postal address

…and we’ll send you a bunch of stickers for your PC, laptop and other kit. (Note: your address will only be used to post the stickers, and will be deleted immediately afterwards.) If you contributed to the project in November but you’re not on the wiki page, please let us know what you did, so that we can add you!

There is one more thing…

And we have an extra bonus: ten contributors have also been selected at random to get an extra piece of merchandise – a LibreOffice hoodie, T-shirt, rucksack or snazzy glass mug. Here are the winners (names or usernames) – we’ll get in touch personally with the details:

  • Richard England
  • Ashleigh Sinclair
  • @OhWeh@climatejustice.social
  • UnklDonald
  • Henner Drewes
  • mkt
  • Ekaterine Papava
  • @pdunn@twit.social
  • Chika
  • Bryan Zanoli

Congratulations to all the winners, and a big thanks once again to everyone who took part – your contributions keep the LibreOffice project strong. We plan to have another Month of LibreOffice in May 2025, but everyone is welcome to see what they can do for LibreOffice at any time!


face

Impress shape text doesn't have much support for styles, e.g. the default UI in Writer gives you a paragraph style dropdown, and you don't get the same in Impress. Still, a paragraph style is attached to bullets based on their outline level, and Impress has a View → Outline menu item to give you that styled text you can copy. Pasting that to Writer started to lose styles recently and it's now fixed to work again.

This work is primarily for Collabora Online, but the feature is available in desktop Impress as well.

Motivation

As described in a previous commit, I had a case where lots of not needed paragraph styles were exported to RTF in case an Impress document had enough master pages. The idea was to only export actually used paragraph styles, to avoid wasting CPU power.

Turns out filtering out paragraph styles has to happen at two locations:

  • in the style table to assign an index to a paragraph style
  • when referring to those styles

The problem was that unused styles were removed from the style table, but not from the style → index mapping, so as soon as you had both used and unused paragraph styles, the declared and the referred style indexes didn't match anymore.

Results so far

Here is a sample paste result in Writer, where you can see that the text doesn't have a custom paragraph style:

Bugdoc: old Writer paste

And here is the same paste, now with paragraph styles restored:

Bugdoc: new Writer paste

As you can see, now the pasted text has paragraph styles.

How is this implemented?

If you would like to know a bit more about how this works, continue reading... :-)

The bugfix commit was editeng RTF export: fix broken offsets into the para style table.

The tracking bug was tdf#163883.

Want to start using this?

You can get a development edition of Collabora Online 24.04 and try it out yourself right now: try the development edition. Collabora intends to continue supporting and contributing to LibreOffice, the code is merged so we expect all of this work will be available in TDF's next release too (25.2).


Tuesday
03 December, 2024


face

Here’s a video from our recent LibreOffice Conference 2024. It details the ongoing migration of 30,000 PCs from Microsoft Office/365 to LibreOffice in the northern German state of Schleswig-Holstein. (The video is also available on PeerTube.)

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.


Monday
02 December, 2024


face
  • Mail chew, 1:1's with Miklos & Lily, lunch. Set off to Paris via the Eurostar.

face

Moritz Duge

Tell us a bit about yourself!

I live in the north of Germany, in the city of Hamburg. Probably not so far away from where the first lines of what was called StarWriter where written, just a year before I was born.

I remember downloading StarOffice over a 64 kbit/sec line around the year 1997. And since it turned into OpenOffice.org I used it for a lot of home work in high school, student jobs and finally my bachelor thesis in computer science. For StarOffice and OpenOffice I mainly used Windows. But around the time LibreOffice started I had shifted to Linux as a daily driver.

My first contact with the LibreOffice community was when I got into a conversation with a few people at the Chaos Computer Club Congress around 2013. And as most of the last 15 years I’ll be around at the CCC too this year. As a hobby I’m engaged in politics, pushing Open Source, data protection, privacy as well as environmental protection topics. And to calm down I’m cycling, pursuing my interest for astrophysics and recently started doing Yoga.

What are you working on in the LibreOffice project right now?

In summer I’ve reworked some parts of the GPG / OpenPGP and X.509 integration in LibreOffice. Drastically improving the performance for users with large GPG keyrings like me. But also making the GPG and X.509 workflows in the LibreOffice UI more user friendly. Knowing there’s still much work left to do.

Beside I’m mostly working on the web integration of LibreOffice. I’m spending a lot of time with LOWA (LibreOffice Web Assembly) builds, improving them with my colleague Stephan Bergmann, and even committed my first patch to Emscripten to improve LOWA debugging.

My top priority is currently to work on ZetaJS, which wraps UNO into a native JavaScript API.
It’s being used to integrate LibreOffice into web apps without the need for a huge server running server side LibreOffice processes. I’ve also written some nice example use cases like this one.

Why did you choose to join the project, and how was the experience?

I’ve worked with Linux for many years. Mainly as Ruby developer and web administrator. But I’ve always had a big interest into more classical technical environments. I really like strong typing. And I’ve collected some experience with big C code bases. Like when bisecting Wine to keep old Star Trek games running, or when debugging the amdgpu Linux driver for my notebook. Although not without great help from the AMD guys!

So when looking for new tasks, I remembered the LibreOffice guys I met at the CCC and I had some talks with Thorsten Behrens who kindly offered me a job at allotropia. For me LibreOffice is one of the flagship projects of Open Source beside the Linux kernel and Firefox. And I’m enthusiastically absorbing all the C++ insider knowledge I can get from my


Sunday
01 December, 2024


face
  • All Saints, family service + Baptism in the morning, caught up with wider church family; home for Pizza lunch with E.
  • Put up Christmas decorations left & right. Slugged variously, watched Night Action some Fallout - gratuitous gore, but interesting effects & characters.

Saturday
30 November, 2024


face
  • Got up very late; wrote another four abstracts for various conference talks, and submitted them. Got a number of presents and fixes done.
  • Managed to get permanent marker off the fridge white-board with isopropyl alcohol. Pottered about a bit. J. home for dinner - watched Night Action with E.

Friday
29 November, 2024


face

 Let me count the ways, in no particular order and in no way exhaustive:

  • OutputDevice is the base class for printing, windowing and PDFs. It doesn't just do output. 
  • OutputDevice has GetOutDevType() because the base class needs to know what child class is using it. Ugh. 
  • OutputDevice drawing primitives not only draw, but they record a metafile. There are literally functions that turn off drawing and just let it record the metafile. I made an attempt at seperating the concerns, but it got nowhere. 
  • VCL relies on DrawingLayer and DrawingLayer relies on the VCL. 
  • There is a concept of a VirtualDevice, which is derived from OutputDevice. VirtualDevice does a bunch of things, but one of which is alpha-handling. In OutputDevice, there is a member which is a VirtualDevice. Each drawing function in Outputdevice calls upon the correlated drawing function in this member VirtualDevice.
  • Bitmaps don't get modified via the Bitmap class. Instead, you have to use BitmapInfoAccess, BitmapReadAccess and BitmapWriteAccess. I'm still puzzling out why these are seperate classes. 
  • Bitmaps are transformed in SalGraphics indirectly via OutputDevice. Except when they aren't, in which case it fails, whereby OutputDevice tries an alternative way via SalGraphics. Otherwise, it tries its own poor man approach at drawing the bitmap. Consequently, often times you bypass the platform optimized ways of doing things, because its not been implemented.
  • Fonts are lazy loaded from OutputDevice. There is no central font manager. To get the fonts, you have to go through SalGraphics. To get a SalGraphics, you need to initialize a lot of stuff not related to fonts. 
  • Font caching is done from OutputDevice. Lazily. Font data is updated for all frames. Frames are a concept needed for Windows. Frames are not a concept needed by Printers and VirtualDevices, or even PDFs. Note that Printers, VirtualDevices and PDFs all inherit from OutputDevice. 
  • OutputDevice converts between "logical" units and display units. It's a nightmare to know what each function needs what sort of units. For the mapping between units, I refer you to vcl/source/gdi/mapmod.cxx and vcl/source/outdev/map.cxx
  • There is tools and basegfx. They do the same thing, though basegfx is considerably better written. You have Size and B2DSize, Point and B2DPoint, Polygon and B2DPolygon, PolyPolygon and B2DPolyPolygon. OutputDevice must handle it all. 
  • Gradient handling is sort of half baked in OutputDevice, much of gradient handling is done in other modules. 
  • Font substitution is truly, truly weird. PhysicalFontSelect::FindFontFamilyByAttributes() has clearly got a bug in it - (e.g. ImplFontAttrs::None == ((nSearchType ^ nMatchType) & ImplFontAttrs::Rounded an XOR?) and it is a truly strange weighting scheme. Yes, I did try to untangle that beast with proper unit tests, but gave up after being told I was being unreasonable. 
  • There is VCL, canvas, cppcanvas and drawinglayer. drawinglayer is way better than VCL, but we are stuck with VCL for everything. 
  • Consider the following Window hierarchy: WorkWindow inherits from SystemWindow, which inherits from Window. Window holds an OutputDevice to do stuff

face
  • Up early, run with J. sync with Dave, partner meeting, cancelled TTT for another surreal TDF Town Hall.
  • Final review budget & other bits call with Tracie - handed over to Deirdre. More admin, and finally a bit of hacking - looked into getting my dpiscale patch finally in to communicate client per-view DPI for some pieces.
  • Poked at conference bits - OS-XP Panel on Why pay for Free Software for next week - pulled together and circulated some questions.

face

LibreOffice 25.2 will be released as final at the beginning of February, 2025 ( Check the Release Plan ) being LibreOffice 25.2 Alpha1 the first pre-release since the development of version 25.2 started in mid Juny, 2024. Since then, 5184 commits have been submitted to the code repository and 710 bugs were set to FIXED in Bugzilla. Check the release notes to find the new features included in this version of LibreOffice.

LibreOffice 25.2 Alpha1 can be downloaded for Linux, macOS and Windows, and it can be installed alongside the standard version.

In case you find any problem in this pre-release, please report it in Bugzilla ( You just need a legit email account in order to create a new account ).

For help, you can contact the QA Team directly in the QA IRC channel or via Matrix.

LibreOffice is a volunteer-driven community project, so please help us to test – we appreciate it!

Happy testing!!

Download it now!


Thursday
28 November, 2024


face
  • Tech planning call, customer project wrap-up call with Lily. sync with Karen, finally got to last stage annual review moderation.
  • Home group in the evening, interrupted by a more surreal TDF / Town Hall meeting.

Wednesday
27 November, 2024


face
  • Up early, run with J, catch up with Dave; lots of admin done while avoiding other admin: Structured Procrastination.
  • Sales call; band practice in the evening.

Tuesday
26 November, 2024


face
  • Planning call, Dentist visit, quick sync with Karen, then Andras; back to back partner calls until later.
  • Dinner; out to David S' home to get some bits of oak stair posts & rails sorted out. Home to cut some dove-tails with the bandsaw, routed a new tennon into a post; lots of glue, dowels, temporary fixings, and we're there.

face

This post is about recent improvements for ZetaJS, the JavaScript wrapper library for ZetaOffice’s WebAssembly version of LibreOffice:

There is something of a mismatch between the UNO type system and the JavaScript types used by zetajs. For example, JavaScript only has a single number type for both integer and floating point values, while UNO has a whole slew of different numeric types (BYTE, SHORT, UNSIGNED SHORT, LONG, UNSIGNED LONG, FLOAT, DOUBLE) that all map to that one JavaScript type. Similarly, the different UNO sequence<T> types all map to JavaScript arrays, where information about the UNO element type T is lost.

Normally, that’s not an issue. When you call a UNO method that returns a LONG, you get a number just like when you call a UNO method that returns a DOUBLE, and your JavaScript code then has a number to work with, and that’s all. Similarly, when you call a UNO method that returns a sequence<LONG>, you get an array of numbers you can work with, just like when you call a UNO method that returns a sequence<DOUBLE>. And when you then call a UNO method that takes a seaquence<LONG> as an argument, you pass in an array of numbers, and the zetajs runtimes figures out how to dress that array up as a UNO sequence<LONG>, and all is well.

However, one place where UNO’s insistance on more precise typing gets in the way is the UNO ANY type. It is not just a means to transport any kind of UNO value, it also carries precise type information. A UNO ANY value that contains a LONG of value 1 is something different than a UNO ANY vlaue that contains an UNSIGNED LONG of value 1. And a UNO ANY value that contains a reference of type css.uno.XInterface to some UNO object is something different than a UNO ANY value that contains a reference of type css.lang.XComponent to the same UNO object.

Again, most of the time, those precise distinctions are irrelevant to most of the code. When you call a UNO method that returns an ANY, and you know that that ANY value must contain a LONG, you just want to get a JavaScript number out, regardless of what precise numeric UNO type was encoded in that ANY value. Similarly, when you call a UNO method that returns an ANY that must contain a css.uno.XInterface reference, you just want to get some JavaScript object that you can do further UNO method calls on (or null), regardless of what precise UNO interface type was encoded in that ANY value. And when you then call a UNO method that takes an ANY that must contain a LONG, you want to just pass in a JavaScript number, and the zetajs runtime shall figure out how to dress that up as a UNO ANY containing a LONG (or throw an exception, if you passed something that just can’t


Monday
25 November, 2024


face
  • 1:1's much of the day, with admin, patch reviews and more. Attended a slightly surreal TDF board call in the evening.

Sunday
24 November, 2024


face
  • All Saints in the morning; relaxed much of the afternoon with Julia.

Saturday
23 November, 2024


face
  • Up lateish; breakfast - set too at the task list; got the new mini chain-saw oiled & removed some very tangled ivy ridden dead-wood from the garden.
  • Lunch. Played with Rumikub with E & J, and joint sudoku with J. as normal, while listening to Christmas Carols - fun.
  • Put up a couple of pictures, screwed down a somewhat broken carpet gripper, mended fridge white-board. Re-moulded plastic glasses frames to adhere to forehead better when not in use - using hot-air-gun.
  • Bit of hackery, got patch merged, and another cleaned up. Dug at a very weird firefox performance problem when loading in debug mode.

Friday
22 November, 2024


face
  • Out for a run with J. early but encouraging partner call, showered, sync with Lily & Sven. Chris TTT on browser profiling.
  • Got caught up in some hacking, and found a work-around for firefox's problematic canvas / line drawing - fun.

face

LibreOffice uses VCL (Visual Class Library) as its internal widget toolkit to create the graphical user interface (GUI) of LibreOffice. Here I discuss how to use UI files designed with Glade interface designer to create LibreOffice user interfaces with a framework called weld, which is part of LibreOffice core source code.

Creating a Minimal VCL Weld Application

In my previous blog post, you can find out about the structure of a minimal VCL application. Please refer to the below blog post to see how a Window is created in VCL, and how it can be used as a test workbench called minvcl. You can run it with ./bin/run minvcl after you build LibreOffice.

VCL application in its minimal form

Here I discuss how to go further, and create user interface with Glade interface designer, and do most of the things without writing code.

VCL Weld Mechanism

In order to simplify user interface creation in LibreOffice, experienced LibreOffice developer, Caolán, has introduced a mechanism to load UI files created with Glade interface designer, and use them as if they are UI files for each and every GUI framework that LibreOffice supports: from GTK itself to Qt, Windows, macOS and even the so-called gen backend that only requires the X11 library on Linux.

To illustrate how the VCL weld mechanism works, I have added a minimal example, minweld, as a test workbench. The structure of the code is very similar to the previous example, minvcl, but there are some changes in the code. In the new code, UI is created from a .ui file that is designed visually with Glade interface designer. The .ui file is an XML file which contains placement of widgets that should be displayed on the screen.

The complete code for minweld is available in the LibreOffice core source code repository, which can also be viewed online:

Glade UI File

In minweld, I have used an existing Glade UI file, tipofthedaydialog.ui. This is the user interface for displaying a tip of the day in LibreOffice at startup. Heiko, the TDF design mentor, has discussed this dialog box in detail before:

Easyhacking: How to create a new “Tip-Of-The-Day” dialog

But, you can assume that it is a simple .ui file, that one can create with Glade. Here, we use it to create our own user interface in C++. You may use any other .ui file that you have created with almost the same code.

Tip of the day displayed at LibreOffice startup

Tip of the day displayed at LibreOffice startup

This UI file is found in cui/uiconfig/ui/tipofthedaydialog.ui, and minweld loads it. This is how it looks when you open it in Glade interface designer:

tipofthedaydialog.ui in Glade user interface designer

tipofthedaydialog.ui in Glade user interface designer

Let’s look into the specifics of minweld.cxx.

Header Includes

Headers are almost the same, but here we use vcl/weld.hxx instead of vcl/wrkwin.hxx. Therefore, you can see this line in the code:

#include <vcl/weld.hxx 

Thursday
21 November, 2024


face
  • To work early; Tech planning call, admin, part of the COOL community call, finance & compensation team call for moderation. Call with a friend.
  • Customer planning call, collected car from the garage with Julia. Home-group in the evening.

face

Dive deep into the revolutionary features of Firebird 5.0 with this comprehensive guide written by database expert Denis Simonov and edited by Alexey Kovyazin.This book offers an in-depth exploration of the significant advancements that make Firebird 5.0 a pivotal release in the world of relational databases.Whether you're a seasoned database administrator, a curious developer, or an IT


Wednesday
20 November, 2024


face
  • Chat with Dave; sync with Meven, worked on annual reviews with Miklos, lunch, monthly All-hands call, sales call, catch up with Philippe.
  • Band practice in the evening.

Older blog entries ->