GSoC with LibreOffice: Work Product

Google Summer of Code 2016 is coming to an end. It was an awesome experience and I got to learn something new every time I switched my linux on. I was assigned a project before the start of GSoC with my mentors, Samuel Mehrbrodt and Yousuf Philips, but I managed to complete two projects in the given time frame.Here is the link to my GSoC Introduction blog. This blog post provides an overview of the projects I’ve contributed to LibreOffice during GSoC and it’s significance in the professional working environment.

List of latest Commits

Total commits count: 61 patches in master and 31 backport commits to LibreOffice 5.2.

LibreOffice gave me commit access soon after the GSoC coding period started. I also committed few patches of other developers.

I will now continue with an overview of my projects.

Project 1: Redesigning the Template Manager [Blog]

The above link provides description of all the functionalities which are there in the new design. The dialog has gone through a major rework solving the defects which were surfacing in the previous template manager for ex: visible empty folders.

Initial Commit: https://cgit.freedesktop.org/libreoffice/core/commit/?h=libreoffice-5-2&id=ca040d16d06fead95ad7ed8d10f5995fbade1219  New Template Manager

After the initial commit, I continued with my work and a series of major and minor commits were made to implement the functionalities. The commits can be found in the commit lists provided above. I’ll mention three of the important ones here.

After this project was completed, me and my mentors decided to take another project. It was Samuel’s idea to create an emoji toolbar control and we discussed the development process in detail.

Project 2: Emoji Toolbar Control [Blog]

The above blog contains all the information about the emoji control.

Initial Commit: https://cgit.freedesktop.org/libreoffice/core/commit/?id=72e6f08c692c0625db5ce377fb478a99660adb0d  GSoC Emoji Control

Adding Noto Emoji font to LO installation: https://cgit.freedesktop.org/libreoffice/core/commit/?id=ecb096841a1d7b4d468ba111df4ebafc13134c8e

Miscellaneous Tasks

and so on..

There was so much to learn during GSoC and I would like to thank the LibreOffice community for continuously helping and supporting me to complete the projects.

Thank you Google for such an awesome summer program. 👌

Advertisement

Emoji Toolbar Control 😎

The use of Emoji in text based softwares and editors are properly justified. LibreOffice was lacking this cool feature 😐. Me and my mentors, Samuel Mehrbrodt and Yousuf Philips, decided to work on Emoji integration in LibreOffice as part of my GSoC contributions.We planned to create a working control with proper emoji font support by the end of summer of code. This post provides an overview of the work done. The entire description of the idea can be found here Discussion on Emoji Integration.

User Interface

  • Control to be available in Writer, Impress and Draw, accessible via Standard Bar.
  • No UI idea proposed throughout the discussion. Hence, I was free to use any sort of widgets to facilitate the purpose.
  • Use of tabs to filter emojis based on categories
  • Emojis should appear as a grid
  • Easy insertion, unlike special character control which uses a modal dialog as of version 5.2
  • Font support (Removal of tofu char 🤓 )
  • Functionality should be present as a toolbar control, primarily in Standard bar
  • Proposed search filter (Only after the emoji details are translated and made locale-dependent)

 Backend, JSON Database and Font Support

  • Populate the control by parsing a JSON file which contains the data of all the emoji glyphs
  • Support most of the unicode glyph by packaging a emoji-specific font ‘Noto Emoji‘ by Google
  • Insert the unicode glyph to the editing pad formatted by the Noto font
  • Orcus JSON Parser to parse the json data file
  • Glade for UI designing and custom widget integration
  • Creation of custom widget to render font glyphs as a grid
  • Facilitate glyph insertion using InsertSymbol uno command.

Emoji Toolbar Control

After some pre-planned development and tricky debugging, I finally managed to get the toolbar control working. The beta version of toolbar control was merged and is ready to use, thanks to the help and guidance I got from my mentor and LO developers. Patch: GSoC Emoji Control: patch which makes all the above changes to LO.

emoji3a.png

Emoji Toolbar Control

Emojis gets inserted into the pad on clicking the respective emoji.

emoji4b.png

One should remember that unlike svg or png emoji, these emoji are glyphs of a particular unicode sequence. They hold all the properties of normal texts. Their colour and size can be changed just like any other character glyph.

emoji48.png

The enhancement still needs some love to become bug free. The emoji control is hidden in the standard bar by default. It can be activated by right-clicking on the standard bar and going to Visible Buttons > Emoji Control. Another way to do so is by using the Customize dialog. Go to Tools > Customize and navigate as shown in the picture below.

emoji5b.png

Activate Emoji control from customize dialog

The foundation for this enhancement has been built now. Further improvements have been proposed like:

  • Filtering of unsupported glyphs
  • Removal of duplicate glyphs (multicolor emoji are treated as duplicate glyph) as multicolor glyphs are not supported by any font
  • support for svg emoji, etc.

Cheers 🍻