Thursday, 27 October 2016

Deckard and LibreOffice

LibreOffice reuses the same ui format that gtk uses. This suggests that deckard could be used to preview translations of them.

Testing this out shows (as above) that it can be made to work. A few problems though:

1. We have various placeholder widgets which don't work in deckard because the widgets don't exist in gtk so dialogs that use them can't display as something falls over with e.g. "Invalid object type 'SvSimpleTableContainer'" I had hoped I'd get placeholders by default on failure.
2. Our .po translation entries for the dialogs strings all have autogenerated msgctxt fields which don't correspond to the blank default of the .ui so the msgctxt fields have to be removed, then msguniq to remove duplicates, and the result can the be run through msgfmt to create a .mo that works with deckard to show web-previews

Friday, 21 October 2016

Office Binary Document RC4 CryptoAPI Encryption

In LibreOffice we've long supported Microsoft Office's "Office Binary Document RC4 Encryption" for decrypting xls, doc and ppt. But somewhere along the line the Microsoft Office encryption scheme was replaced by a new one, "Office Binary Document RC4 CryptoAPI Encryption", which we didn't support. This is what the error dialog of...

"The encryption method used in this document is not supported. Only Microsoft Office 97/2000 compatible password encryption is supported."

...from LibreOffice is telling you when you open, for example, an encrypted xls saved by a contemporary Microsoft Excel version.

I got the newer scheme working this morning for xls, so from LibreOffice 5-3 onwards (I may backport to upstream 5-2 and Fedora 5-1) these variants can be successfully decrypted and viewed in LibreOffice.

Thursday, 7 July 2016

crashtesting: now 92000 documents

crash testing, now 92000 documents continuously tested

Last August we had a collection of approximately 76000 documents. This July we have over 92000 documents. The corpus is mostly gathered from our bugzilla and other projects bugzillas via our get-bugzilla-attachments-by-mimetype script. For testing purposes we continuously import them all, and then export certain formats to multiple destination formats. For example odts are re-exported to odt, doc and docx and the results of what documents crashed (which includes asserts) are uploaded to the crashtest site
I like to imagine that these are typically the type of mean and bitter documents that try to eat innocent office software alive.
The get-bugzilla-attachments-by-mimetype script only downloads new attachments from its target bugzillas which are not already downloaded. The last run to refresh the corpus took over two days to complete. Refreshing isn't fast or cheap so it's fairly infrequent.
The regular crashtesting run to import and reexport the corpus is comparatively frequent, takes approximately 24 hours and typically gets run every two or three days on the latest 64bit Linux master in headless mode.

Wednesday, 8 June 2016

spellchecking calendar/calender

A short 2009 article about Microsoft's group with responsibility for spellchecking that mentions the calendar/calender masking problem. Sometimes you probably do want correctly spelled words to be flagged.

Sunday, 28 February 2016

native gtk3 menubar in libreoffice

Following quickly on native gtk3 popup context menus is implementation of native gtk3 menubar and menus.

For comparison here's the (not utterly awful) emulated look prior to this. You can compare the spacing of elements in the menubar, menu separator rendering, distance of checkmarks to the following text, the display of the short cuts in different font attributes with different positioning, and menu entry line spacing.

This is mostly achieved by reusing the export of the toplevel menubar and menu structure via GMenuModel work by Antonio Fernandez and Bjoern Michaelsen and just stuffing a GtkMenuBar into a GtkGrid in the toplevel widget and moving the LibreOffice "guts" widget a level down with no LibreOffice menubar visible.

Wednesday, 24 February 2016

current LibreOffice native gtk3 elements

LibreOffice typically basically has just one gtk widget per top level window and draws everything you see itself, using the gtk themeing apis to make what it draws look like they do in gtk.

But there are some truly native gtk elements. Some of them new.



Tooltips, like the above transparent example, are real gtk tooltips now. Here's what they used to look like



We recently in master began using GtkPopovers for informational messages such as the above calc formula formatting help.


Context Menus

As of today, context menus are native Gtk menus. This has the advantage of making managing overlarge menu scrolling all a gtk issue instead of faffing around endless in vcl to emulate what a native gtk menu would do. Flipping on/off mnemonics depending on keyboard input or whether the menu was launched by keyboard instead of mouse similarly becomes "someone elses problem". Here's the same menu launched via the menu key, automatically with mnemonics on start.
The menubar and menus launched from that menubar are currently still emulated ones, but they're the next target for nativization. We have mechanisms in place for the MacOSX and Unity menu integration that can probably be adapted and extended to support driving a native GtkMenuBar hosted in the GtkFixed-alike toplevel widget that fills each toplevel window.

Tuesday, 16 February 2016

gtk3 and LibreOffice

Couple of changes to the gtk3 support in LibreOffice master recently.

Theming stuff

The gtk3 support in master LibreOffice is now updated to support the relatively recent changes in gtk 3.19's style mechanism.

With mclasen's help I've added simple demos to the foreign-drawing demo of gtk-demo for the different elements that we render via those rendering apis. So what we attempt to do in LibreOffice is basically documented in gtk-demo now. So from 3.20 onwards if there are styling flaws in LibreOffice, then gtk-demo can be checked if it has the same problem or not.

Drag and Drop

Drag and Drop is now implemented in the gtk3 backend. DnD here includes moving blocks of cells around a calc spreadsheet using the mouse alone.

Wayland gstreamer video playback

If the gtksink gstreamer element is present (e.g. gstreamer >= 1.7.1 as in Fedora 24) then the gtksink gtk widget integration will be used to play video. Which means support for video playback in LibreOffice under wayland.