New Composer

From Evolution

Contents

[edit]

Summary

This page tracks my progress on a new HTML editor I'm writing for GtkHTML and Evolution. My plan for this consists of three phases. I hope to complete at least Phase 1 and Phase 2 in time for GNOME 2.22. Phase 3 will probably have to wait until GNOME 2.24.

[edit]

News

[Jun 28, 2008] Well, the end of another development cycle is drawing near. While the improvements to the composer UI were not as extensive as I had hoped, we did get a few in. Most importantly was a second style toolbar only for HTML mode (see the revised screenshot below). I imagine we'll see more changes once we move to WebKit, but nonetheless I'm hereby declaring the Great Composer Rewrite done.

[Apr 2, 2008] Phases 1 and 2 complete. Both mbarnes-composer branches have been merged to trunk for Evolution 2.23.1. Filed bug #522153 to track regressions until the new code is stable.

[Mar 30, 2008] Phase 2 is nearly complete. I hope to merge both branches in time for Evolution 2.23.1 later next month.

[Mar 12, 2008] The new GtkHTML editor has been proposed for inclusion in GtkHTML 3.19.1. See below.

[Feb 11, 2008] Composer integration is coming along. It's a lot of code to modify at once and I still have more to do before I even attempt to run it. But this weekend I managed to rewrite Evolution's signature editor as a subclass of the new GtkhtmlEditor widget and demonstrate it working entirely Bonobo-free! The new mail message composer is also a GtkhtmlEditor subclass, so this successful integration at a smaller scale is an important milestone.

[Jan 10, 2008] Progress update. I have dynamic context (right-click) menus working now using GtkUIManager. I also have a brand new color combo widget that works the same as our current one but doesn't rely on GnomeCanvas (to be deprecated). It also looks more like a modern combo box. Gnumeric and AbiWord both have color combo widgets similar to ours (I think from GOffice) so I'm going to see if those projects would be interested in testing it out.

[Dec 22, 2007] I'm beginning to work on migrating the composer away from the Bonobo-based GnomeSpell. I've written a spell checking API similar to Marco Barisione's GSpell, which is an object-oriented wrapper for Enchant that adds language name support via iso-codes. I'll need to implement a new "Check Spelling" dialog since GnomeSpell formerly provided that, but that shouldn't be too hard.

[Dec 17, 2007] Sadly, it doesn't look like this is going to be ready for GNOME 2.22 with string and UI announcement periods already upon us. But I'll keep plugging at this over the holidays so we can hopefully get it in good and early in the next development cycle.

[edit]

Phase 1: A New GtkHTML Editor

Produce a new GtkWidget-based HTML editor to replace the existing BonoboObject-based HTML editor. No UI changes are planned for this phase. My only concern is to achieve parity with existing Bonobo component. Ideally, users should be unaware that anything has changed.

[edit]

Progress

Complete (track regressions)

[edit]

Source Code

Merged to Subversion trunk (revision 8807)

Former branch: http://svn.gnome.org/viewvc/gtkhtml/branches/mbarnes-composer/

[edit]

Phase 2: Integrate with Evolution

Integrate the new editor widget into Evolution's email composer, using GtkUIManager to extend the editor's menus and toolbars.

[edit]

Progress

Complete (track regressions)

Only known issue is the EPlugin framework will need to be extended to support GtkUIManager interface definitions. Currently all composer plugins (e.g. Face) are broken because they use BonoboUI interface definitions. Still need to discuss this with the team, but my initial proposal is to ship Evolution 2.23.1 with broken composer plugins, then extend the EPlugin framework and get the plugins working again for 2.23.2. (Bug #525241 is tracking this issue.)

[edit]

Source Code

Merged to Subversion trunk

Former branch: http://svn.gnome.org/viewvc/evolution/branches/mbarnes-composer/

[edit]

Phase 3: Bring on the Bling!

This is the fun part, but it first requires Phase 1 and Phase 2 to be completed and stable. I'd like to investigate some of the UI enhancements that have been proposed for the composer in the past, in particular Ben Kahn's suggestions. This, of course, requires further coordination with the team and the community.

[edit]

Progress

Complete

Improvements to the UI include:

[edit]

Screenshots

Image:gtkhtml-editor-test.png

HTML editor test program