(Toward World Domination)
Martin Sevior and Dominic Lachowicz
AbiWord 2.0 has many new features not present in the 1.0 release. There are features that provide improvements to the AbiWord User Interface and those that increase the richness of the Word Processing document. The following table lists new Word Processing features and the file formats the feature is exported to and imported from. Of course all features are supported by the AbiWord native XML file format.
Feature |
Imported from |
Exported to. |
Tables |
MS Word, RTF, WordPerfect, HTML, OpenOffice.org, DocBook, (other XML formats) |
RTF, HTML, Latex, DocBook, (other XML formats) |
Footnotes |
RTF,MSWord, WordPerfect |
RTF, Latex |
Endnotes |
RTF, MSWord, WordPerfect |
RTF, Latex |
Revision Marks |
||
MailMerge |
The Table feature in AbiWord is very powerful. Cells within tables can be merged either horizontally or vertically via an easy-to-use non-modal dialog. Rows and Columns heights and widths can be adjusted interactively by dragging ruler controls or table lines. The unix build includes a powerful automatic table insert widget which allows tables dimensions to be created interactively. We also have the ability to nest tables to arbitrary depth. This feature is not available in either Word Perfect or Open Office.
Feature |
Platform |
Automatic Font detection |
New to Unix for 2.0 |
Anti-aliased text |
New to Unix for 2.0 |
Gtk 2.0 GUI elements |
New to Unix for 2.0 |
Gnome 2 integration |
The Gnome Intergration features include:
|
Drag images interactively |
All |
Resize images interactively |
All |
Selection colour is based on Theme |
Unix, Windows |
Font preview from drop down list |
All |
Drag and drop text editing |
All |
Many improvements in import/export filters |
All |
The long term goal of AbiWord has always been to provide the best Word Processor in the World and to make it available on every interesting computing platform. Our first stable release, 1.0, has sufficient features and ease of use to be useful for a large number of ordinary users. In the minds of the developers we kept the idea of "The Church Secretary" as being our target user. Someone with limited interest in computers and who just wants to get their work done.
To this end the original AbiWord developers (who have almost completely ceased contributing to development) imagined a program rather similar to MicroSoft Word. We have followed this vision and created a genuine WYSIWYG application.
I think we largely succeeded in this goal and the feature of the 1.0 series has most of the features needed for simple home use. However, we were clearly a long way from fulfilling the needs of everyone who uses Word Processors. In particular, one of the authors, has the ambition to use AbiWord as the only Word Processor he and his family needs at work, home, School and for a micro-business. To fulfill our long term goal of being the World Best's Word processing software we clearly needed more features and better usability. To this end we started the development of 2.0 with the aim of overcoming many of existing limitations in the 1.0 codebase while keeping as much of the code we hard worked so hard to develop.
To this end, we made many long term investments in the AbiWord code base. These include:
It is worth emphasizing that a huge amount of the code we wrote for 2.0 is basic infrastructure that will be leveraged in future releases as we add more features. With this infrastructure in place the project can now be developed at a much faster pace.
Here is a screen shot of AbiWord-2.0 being used to prepare this document.
The Table feature. Compared to the 1.0 release there are two obvious differences. The first is there is now a table entry on the menu bar. The second is extra toolbar used for table controls. As mentioned earlier our table feature is quite rich and powerful. Cells within tables can be merged across both multiple rows and multiple columns. |
We accomplish this in AbiWord by using a unique non-modal dialog as shown below.
Merge Cells Feature With this dialog one places the cursor in the cell to be merged then clicks on the appropriate button to merge to the left, right, above or below as desired. With each click, the user immediately sees the result of each merge. If a merge is not desired, it can be immediately corrected by clicking the global undo button. Being non-modal the dialog can stay up and active as the user otherwise types. |
Other Table Features
Tables, Rows and Columns can be added or deleted at any time via the menu's or toolbar controls. Each of the lines around every cell can be turned or off and the colour of each line can be set via a powerful, non-modal format table dialog. Since the dialog is non-modal adjusting the look of a table is an easy and interactive experience for the user. In addition the background colour of each cell can also be set to whatever is desired. Tables can be nested to arbitrary depth. Large tables automatically break across pages and correctly take account of footnotes placed on each page. (An example of this is shown on the first page of this document.) A rather extravagantly configured table is show below.
Here is a nested table in a region of merged cells.
|
|||||||||||||
More merged cells. Here we explicitly show how cells are merged vertically |
|||||||||||||
Finally the toolbar contains a powerful widget which allows tables of the required dimensions to be interactively configured and inserted by dragging a mouse.
Version 2.0 of AbiWord has a complete Footnotes and Endnotes feature. Footnotes and Endnotes can be defined in one of twelve different styles which include numerical, alphabetic and Roman numerals. The numbering of footnotes can be restarted on each page, on each section or continued though a the whole document. Footnotes references are guaranteed to be on the same page as the text of the footnote. Of course footnotes are automatically correctly numbered in the order they appear in the document. The Footnote text is also automatically placed on pages in the same order as the Footnotes appear in the document. The numbering and placing of text is done automatically and immediately upon inserting the Footnote. Endnotes can also be one of the twelve different styles. The Endnote text can be placed at either the of a section or at the end of the document. The numbering the Endnotes can be restarted at each section and the initial value of the Endnotes can be set as required. All these features can be adjusted and changed any time by using the Format Footnotes and Endnotes dialog. |
|
Footnotes and Endnotes can be copied, cut and pasted at will though out the document. They are exported and imported correctly to the RTF format and from MSWord and WordPerfect formats. |
The Footnote and Endnote styles available in 2.0 |
Revision marks are a vital tool for the collaborative creation of documents. They provide a very good way to propose document changes to collaborative authors. The feature woks very similarly to MS Word. Each author is given their own colour as a marker for their text. The authors changes are shown as their color ext as the document is updated. Deleted text is shown as a line of the same color through the text.
Mail Merge is the feature that allows the creation of automated documents like mass personalized mailings, envelope printing and for the creation of standard documents. The AbiWord interface to this feature is both powerful and easy to use.
The idea is to combine data sources with document templates and then perform actions on the resulting document(s).
We do this by entering mail merge fields. which then connected to data sources. This is accomplished via an easy to use non-modal dialog that presents the user with a choice of potential fields which are available in the data source.
The inputs to this are:
The outputs are:
AbiWord-2.0 is an embeddable bonobo component. It works well with Nautilus to enable users to view their files directly within the Nautilus shell. It is also usable by Evolution and as a browser plugin via the really cool mozilla-bonobo plugin. A screenshot of the AbiWord embedded in Nautilus is shown below.
AbiWord embedded in Nautilus |
Wordprocessors have traditionally only been used on client workstations. However by combining the power of unix-style servers with an easy-to-use document preparation tool like AbiWord, businesses can achieve substantial productivity improvements. AbiWord has a powerful set of command line features which enable it to be used on servers
Some examples of AbiWord "Back Office" usage are:
AbiWord has an easy to use plugin framework that enables the application to be extended without modification of the code-base. A list of plugins and their uses is shown below. Plugins can be dynamically loaded and unloaded during operation or loading immediately upon startup. New menu items are added for each plugin if needed.
aiksaurus |
A powerful and unique thesaurus. Right click on a word, choose from the list of words of similar meaning by clicking on the entry and the word is replaced. |
abigimp |
Use the GIMP image processing software to manipulate images within AbiWord. |
Text Summarizer |
Choose this option to summarize the text of your document. The compression factor can be adjusted to amount of reading you want to do. |
Wikkipedia |
Select some text and search the wikkipedia online encyclopedia for references and information. |
freetranslation |
Select some text and query the online translator to automatically translate your text into the language of your choice. |
|
Select text in AbiWord and have google search on it for you. |
abicommand |
Powerful and extensible command line interface to AbiWord. You can use this develop scripts to automate document production. |
gypsython |
Use a python interface to interface directly AbiWord's internal API. Use this to develop powerful scripts in python. |
urldict |
Select a word and then search an online dictionary for it's meaning. |
gda |
Interface into the GNOME database program Mergeant which enables data selection from a variety of sources (Gnumeric spreadsheets, Evolution Addressbook and a number of database programs) |
scripthappy |
Run external programs and scripts from within AbiWord, pipe the results into the document. |
import/export filters |
filters for applix,bzip2 AbiWord files, clarisworks, coquille, docbook, eml, Human readable ascii text, html, kword, latex, mif, OpenWriter, pdb (Palm), psion, pw (Pathetic writer), sdw, t602, wml, wordperfect,xhtml, xsl-fo |
It is very easy to write a plugin and is a great way to get into AbiWord coding. To get started, just take an existing plugin, (like aiksaurus), copy all the well documented boiler plate code and get coding. Of course feel free to ask for help from the very friendly AbiWord developers.
There are many additional features that we intend to add to AbiWord. The ones I can think of now are listed below.
Which of these features will make it into the next stable release of AbiWord is not clear at this point. Martin is very keen to add Equation support via the excellent GtkMathView project led by Luca Padovan. We intend to integrate this closely with AbiWord so that equations can be edited in place in the document rather than using the MSWord COM approach.
Of the other features, all the Table features are straight forward, but were left out of 2.0 simply because of lack of time. Drawing on images is also straight forward and requires just some straight forward refactoring and additional graphics classes and methods. The Scalable Graphics support requires a proper mechanism to print at all resolutions.
The improvements to the List feature is also straightforward as is paragraph shading once we can draw on top of images. The features apart from Maths which will require the most thought are text wrapping around objects and text frames. In both these cases layout will depend where on the page the text is placed and placing the text will depend on placing the object. This requires a two pass layout algorithm, which is different from how AbiWord currently does text layout.
Never-the-less even this change is not as radical as the surgery AbiWord underwent in the version jump from 1.0 to 2.0. There is every chance that AbiWord one year hence will have a large fraction of the additional features listed above.
AbiWord uses the Model-View-Control paradigm. It was explicitly designed from the outset to utilize both a cross platform and cross application architecture. As a result extra care was taken make the GUI aspects of the code independent of the backend. This has resulted in a stable and easy to maintain code base.
A diagram showing how the MVC works in AbiWord is shown below.
The AbiWord PieceTable is collection of objects which can have arbitrary numbers of attributes and values associated with these. These objects, called "Fragments" can represent runs of text with contiguous properties, (all the same font, size, underlining). The attributes of the Fragments describe the text, (Font, size, colour, underlining). Fragments also represent fields, pictures, and structures for text like paragraphs, section, tables and cells. The attributes and their values are stored as const char * strings. The Layout classes interpret these attributes and turn them into text presented on screen or paper. All changes to the PieceTable generate "Change Record" objects. The change record objects are stored in stack and used for undo/redo actions. In addition they are broadcast to all the views attached to PieceTable. The Views interpret the "Change Record" objects and update their state accordingly. Thus the simple action of pressing a key is propagated down into the PieceTable through the controller. The PieceTable inserts a character into a fragment. It generates a Change Record, which it saves and broadcasts this Change Record to the views.
The Process of undo simply pops the last change record off the stack, computes the inverse change record and broadcasts that to the Views. All of the AbiWord PieceTable manipulations are 100% reversible in this way.
Unfortunately time and space does not permit a fuller explanation. Interested reader should read the /docs subdirectory in the source files and feel free to ask question of the developers.
Developers who have contributed to the 2.0 release.
Developer |
Development Platform |
Contributions |
Dom Lachowicz |
Linux |
GTK 2.0 port, Mail Merge, Single units fix, Code refactoring, gnome-print, Drag and drop from Nautilus, Selection Color based on GTK theme, Bonobo component, Table import/export to HTML, Docbook, Text Summerizer plugin, Many many bug fixes |
Martin Sevior |
Linux |
Layout class refactoring for tables etc, Piecetable Refactoring, Tables, Footnotes, Endnotes, GTK front end issues, abiwidget fixes, Bonobo component, HTML export, lots and lots of bug fixes. |
Tomas Frydrych |
Win32 |
Revision Marks, single units, Bidirectional Text, RTF import/export improvements, Selection Color choice, MS Word import improvements, 32 bit internal text characters, Win32 fixes, Many, Many bug fixes |
Jordi Mas |
Win32 |
Win32 Maintainer. Many, many Win32 fixes. Catalan Translations, Other fixes |
Marc Maurer |
Linux |
Gladification of dialogs. HIGification of dialogs, Auto font preview, Image drag and drop, Image resizing, Word Perfect Importer |
Pat Lam |
Linux |
Footnotes, Cool new cursor class, Single Units work, bug fixes |
Hubert Figuiere |
OSX, PPC Linux |
OSX port. RTF fixes, Bug Fixes |
Will Lachance |
Linux |
Word Perfect Importer. OpenOffice.org export, GTK front end work, Refactoring of cross platform architecture, Bug Fixes |
Francis Franklin |
OSX, PPC Linux |
Lots of build builds, tweaks and improvments. Table fixes, HTML exporter. |
Joaquín Cuenca Abela |
Linux,Win32 |
XFT2 anti-aliased Text and fontconfig font recognition, Totally cool Insert Table Widget, Win32 Printing fixes, Icons. |
David Chart |
PPC Linux |
Documentation Maintainer, Lots of bug reports, Change Log scribe |
David Glassy |
Win32 |
MinGW build maestro |
Andrew Dunbar |
win32 |
Massive numbers of C++ cast fixes. Barbarisms support, Internationaliser |
Jeremey Davis |
win32 |
Win32 fixes and improvements. |
Jesper Skov |
linux |
AbiWord Weekly News. Spell Check fixes. Other Bug fixes |
Kian |
Beos |
Revive BeOS port. |
Mike Cooper |
win32 |
Win32 fixes. |
Mark Gilbert |
Linux |
Lots and lots of build tweaks. Bug fixes. |
Mike Pritchett |
Win32 |
Win32 fixes, Memory Bug fixes |
Paul Rohr |
Win32 |
Some usability tweaks and Internationalization support. |
Johann Bjork |
qnx,QSX |
QNX maintainer. Contributer to OSX port. |
Pierre Abbat |
Linux |
Translation co-maintainer |
Rui M. Silva Seabra |
Linux |
Translation co-maintainer |
row |
Win32 |
MS Word import fixes. |
Sam TH |
Linux |
Build fixes, bug fixes. |
Eric A. Zen |
Linux |
AbiWord Weekly News. Supplier of mind altering substances |
Ruud Vring |
Win32 |
Import of Tables from MS Word, bug fixes. |
Christian Biesinger |
Linux |
StarOffice/Open Office import |
Mike Nordell |
Win32 |
Windows Fixes |
Stephen Viles |
PieceTable fix |
|
Alberto Cabello Sánchez |
Latex Export fixes |
The Translation Team
Translator |
Language |
Tim Allen |
Indonesian |
Takeshi Aihana |
Japanese |
Masayuki Hatta |
Japanese |
Jesus Bravo Alvarez |
Galician |
Ramón Flores |
Galician |
Henrik Berg |
Swedish |
Linus G Larsson |
Swedish |
Per Larsson |
Swedish |
Frédéric Cella |
French |
Philippe Duperron |
French |
Jesús Corrius |
Catalan |
Jordi Mas |
Catalan |
Joaquín Cuenca Abela |
Spanish |
Javier Yáñez |
Spanish |
Luis Miguel García |
Spanish |
Tamas Decsi |
Hungarian |
Vadim Frolov |
Ukrainian |
Olexij Tkatchenko |
Ukrainian |
Martin Willemoes Hansen |
Danish |
Birger Langkjer |
Danish |
Rasmus Toftdahl Olesen |
Danish |
Kenneth Christiansen |
Danish |
Alan Horkan |
Irish (Gaelic) |
Alan Horkan |
British English |
Alan Horkan |
Irish English (Yes I didn't know there was a difference either) |
Chih-Wei Huang |
Chinese (zh-TW) |
Anothy Fok |
Chinese (zh-TW),(zh-CN) |
Mauro Colorio |
Italian |
Marco Innocenti |
Italian |
Jarmo Karvonen |
Finnish |
Mantas Kriauciunas |
Lithuanian |
Gediminas Paulauskas |
Lithuanian |
Michl Ladislav |
Czech |
Zbynek Miksa |
Czech |
Karl Ove Hufthammer |
Norwegian (Nynorsk) |
Gro Elin Hansen |
Norwegian (Bokmål) |
Edouard Lafargue |
Norwegian (Bokmål) |
Kjartan Maraas |
Norwegian (Bokmål) |
Karl Trygve Kalleberg |
Norwegian (Bokmål) |
Marc Maurer |
Dutch |
John Profic |
Russian |
Piotr Banski |
Polish |
Andrzej Pruszynski |
Polish |
Eutanazy Sercxemulo |
Polish |
Giovanni dos Reis Nunes |
Portugese (Brazil) |
Rui M. Silva Seabra |
Portugese (Portugal) |
Tânia M. G. Ferreira |
Portugese (Portugal) |
Martin Lacko |
Slovenian |
Andraz Tori |
Slovenian |
Christian Neumair |
German |
Christian Terboven |
German |
Damon Allen Davison |
German |
Owen Thomas |
Welsh |
Rhoslyn Prys |
Welsh |
Alper |
Turkish |
Nikos Niktaris |
Greek |
Daniel Yacob |
Amharic |
Pierre Abbat |
Lojban |
Alfredo Barrainkua Zallo |
Basque |
Mugurel Tudor |
Romanian |
Ivica Bogosavljevic |
Serbian |
pclouds |
Vietnamese |
Sharuzzaman Ahmat Raslan |
Malay |
Raphael Finkel |
Yiddish |
Besnik Bleta |
Albanian |
Alberto Cabello Sánchez |
Sardinian?? |
Presented at GUADEC 4, Dublin, Ireland, 2003
Page 13 of 13
Presented at GUADEC 4, Dublin, Ireland, 2003
Page 12 of 13
Not all of AbiWord's table features (like nested tables) are available on these products
Footnotes can be inserted within tables and have a large variety of styles
Hopefully we'll have filters to and from at least RTF for Revision Marks before 2.
See our website at http://www.abisource.com
Join the developers by subscribing to our mailing list (abiword-dev@abisource.com) and on IRC channel #abiword on IRC server gnome on gimpnet