The following color-coded matrix describes the current extent of
platform-specific support for various UI features in AbiWord,
divided into the following four categories:
Unlike most applications, AbiWord was designed from the beginning
to be part of a cross-platform suite consisting of multiple
applications. Thus, each port of AbiWord combines together a mix of
the following four kinds of code:
- cross-application (XAP) vs. application-specific (AP)
- cross-platform (xp) vs. platform-specific (win, unix, etc.)
Any application-specific UI features which are entirely handled in
XP code (such as keybindings, menu and toolbar layouts, string
translations, etc.) are outside the scope of this document, and thus
not listed here.
Legend
| | This feature is done. |
| | This feature is not planned for 1.0. If you send us code, you will change our minds.
|
| | This feature is partially done, but needs work |
| | This feature is done, but is too bug-ridden to be usable |
| | This feature is not implemented |
| | Unknown, because bob@abisource.com hasn't "officially" tested it yet. |
| | Not applicable |
To tell if a particular feature is complete across the entire
product, look across that row. Likewise, to tell if a particular
portion of the product is completely up to date, look down that column.
Framework
Framework code needs to be ported once for each GUI, and can then be
used in multiple applications.
Utilities (abi/src/af/util)
| xp | win | unix | gnome | beos | qnx | mac
| | Assert | yes | yes | yes | n/a | | | no |
| Debug | yes | yes | yes | n/a | | | no |
| String | yes | yes | yes | n/a | | | no |
| Timer | yes | yes | yes | n/a | | | no |
2D Graphics (abi/src/af/gr)
| xp | win | unix | gnome | beos | qnx | mac
| | Graphics | yes | yes | yes | n/a | | | no |
| Fonts | (1) | yes | yes | n/a | | | no |
| Images | (2) | yes | yes | n/a | | | no |
- Font handling will eventually need to become more charset-savvy.
- Needs switching mechanism to choose converters to PNG from other formats.
Events (abi/src/af/ev)
| xp | win | unix | gnome | beos | qnx | mac
| | Menu | yes | yes | yes | n/a | #483
| | no |
| Mouse | yes | yes | yes | n/a | | | no |
| Keyboard | yes | yes | yes | n/a | | | no |
| Toolbar | yes | yes | yes | n/a | | | no |
- All of these could use more platform-specific polishing. (See bugzilla for details)
App-neutral framework (abi/src/af/xap)
| xp | win | unix | gnome | beos | qnx | mac
| | App | yes | yes | yes | | | | no |
| Frame | yes | yes | yes | | | | no |
| Clipboard | yes | yes | yes | n/a | | | no |
| DialogFactory | yes | yes | yes | n/a | | | no |
| TBControlFactory | yes | yes | yes | n/a | | | no |
- Many of these could use more platform-specific polishing. (See bugzilla for details)
Application
The "other half" of getting the framework ported is to turn on the
application-specific logic for AbiWord.
Main (abi/src/wp/main)
| xp | win | unix | gnome | beos | qnx | mac
| | Main | yes | yes | yes | yes | (1) | yes | yes |
- BeOS dialog resources should move from here to same subtrees as dialog code.
App-specific logic (abi/src/wp/ap)
| xp | win | unix | gnome | beos | qnx | mac
| | App | yes | yes | yes | | | | no |
| Frame | yes | yes | yes | n/a | | | no |
| Clipboard | yes | yes | yes | n/a | | | no |
| DialogFactory | yes | yes | yes | | | | no |
| TBControlFactory | yes | yes | yes | n/a | | | no |
|
| LeftRuler | (1) | yes | yes | n/a | | | no |
| TopRuler | (1) | yes | yes | n/a | | | no |
| Prefs | yes | yes | yes | n/a | | | no |
| StatusBar | yes | yes | yes | n/a | | | no |
|
| TB_FontCombo | (2) | yes | yes | n/a | | | no |
| TB_SizeCombo | (2) | yes | yes | n/a | | | no |
| TB_StyleCombo | (2) | yes | yes | n/a | | | no |
| TB_ZoomCombo | (2) | yes | yes | n/a | | | no |
- Rulers have a number of problems at boundary cases. (See bugzilla for details)
- Toolbar combo behaviors constrained by lack of an app-wide focus model.
Dialogs (XAP)
Some dialogs can be used across multiple applications (XAP).
| xp | win | unix | gnome | beos | qnx | mac
| | MessageBox | yes | yes | yes | n/a | | | no |
|
| File / Open, SaveAs | (2) | yes | yes | n/a | #473
| no | no |
| File / Print | yes | yes | yes | n/a | | no | no |
| View / Zoom | (3) | yes | yes | (1) | | no | no |
| Format / Font | yes | yes | #584
| n/a | | no | no |
| Window / More | yes | yes | yes | n/a | no | no | no |
| Help / About | yes | yes | yes | n/a | | no | no |
- Gnome dialogs duplicate too much GTK code.
- Open & Save dialogs need to handle and propagate various errors better. (See bugzilla for details.)
- Zoom dialog needs view-level support for page width and full-page options.
Dialogs (AP)
Most of the AbiWord dialogs are application-specific.
| xp | win | unix | gnome | beos | qnx | mac
| | File / PageSetup | no | no | no | no | no | no | no |
|
| Edit / Replace | #310,
#375
| yes | yes | (1) | | no | no |
| Edit / Goto | POW
| no | no | no | no | no | no |
| Edit / Spell | (3),
#581
| yes | yes | (1) | (2) | no | no |
| Edit / Options | (4) | (2),
#693
| (4) | no | no | no | no |
|
| Insert / Break | (5) | yes | yes | (1) | | no | no |
| Insert / PageNumber | (6) | no | no | no | no | no | no |
| Insert / DateTime | (6,7) | (7) | no | no | no | no | no |
| Insert / Field | (6) | no | no | no | no | no | no |
| Insert / Symbol | no | no | no | no | no | no | no |
|
| Format / Paragraph | (8),
#594,
#607,
#624
| yes | (9) | (1) | no | no | no |
| Format / Bullets | no | no | no | no | no | no | no |
| Format / Borders | no | no | no | no | no | no | no |
| Format / Column | no | no | no | no | no | no | no |
| Format / Tab | (10) | no | (10) | no | no | no | no |
| Format / Style | no | no | no | no | no | no | no |
|
| Tools / WordCount | POW
| no | no | no | no | no | no |
- Gnome dialogs duplicate too much GTK code.
- Dialog laid out, but not hooked up.
- Spell dialog, with suitable API changes, could probably be XAP instead.
- Options dialog needs a simpler UI.
- Break dialog needs view-level support for even/odd pages.
- Several dialogs need piece table support for field containers.
- DateTime should optionally update automatically.
- Paragraph dialog doesn't do enough range checking, also needs more view-level property support.
- Paragraph dialog needs spinner and tristate GTK widgets.
- Tab dialog needs view-level tab leader support.
Last edited 01/17/2000