Older blog entries for msevior (starting at number 30)

13 Mar 2005 (updated 14 Mar 2005 at 06:27 UTC) »

MS Word Developers Listen to Customers!

I know it's unbelievable, but it's true! Look at this blog entry on the the topic of Eugenia's article:

http://blogs.msdn.com/rick_schaut/archive/2005/03/12/394480.aspx

I had no idea. I wonder how one talks to them?

Fun With Hacker Heads.

I did some more debugging of the tight wrapped image code. It's now pretty robust though it's possible to screw things up by placing overlapping images in text. I'm pretty sure I know how to fix that. I'll get around to it later.

Anyway I had fun debugging this feature by playing with the hacker heads found on http://planet.abisource.com

Here is a screenshot:

http://www.ph.unimelb.edu.au/~msevior/abiword/AbiHeads.png

Feedback

jamesh  I'm not familiar with the Open Office equation editor although other people have told me that OO.o have implemented some sort of language for describing maths. The Latex equation editor I  wrote for AbiWord is not meant to be the only way enter Maths. Eventually I'd like us to have a full-blown graphical editor like Lyx or MSWord. Ordinary people would definitely get intimidated by having to learn Latex so we'll need something with a shallower learning curve even if it's not as productive.

I'm very comfortable with having Latex as the command-line entry mode. A large fraction of people who need Maths in documents know Latex and those that don't should learn it anyway :-) Since we'll give people instant feedback as they enter their formulas, AbiWord will actually a good way to learn the Latex syntax so users will acquire a transferable skill.

Luis  One of the advantages Apple has over us (and everyone else even MicroSoft) is that they can market their wares to their users right on their own desktop. Right now the big Linux distros have mandated OOo for everyone. It's hard to get a look in at the moment.

Regarding features, I have no doubt that more features => more users (and hence developers). I get the impression people think that we'd need to be as big as OOo in order to have all the features in OO.o.

This is certainly not the case.

Our code base is an order of magnitude smaller now and will not be much larger when I'm comfortable with AbiWord's feature set. This will probably happen by the middle of next year.

That said we're extremely open to good ideas as to how to present these to users. MS Word has taken to hiding menus and burying options in complex dialogs. I'm sure we can do better than that. I'm not very familiar with what OOo has done because I don't use it very much.
If you're interested it is extremely easy to fiddle with the AbiWord UI. Download a tarball or CVS HEAD (for the fun new stuff) build it with the standard, autogen.sh,configure, make etc..
Then in the directory abi/src/wp/ap/xp you'll find the following files which define the main menu:

ap_Menu_Layouts_MainMenu.h
and the toolbars:
ap_TB_Layouts_ExtraOps.h
ap_TB_Layouts_FormatOps.h
ap_TB_Layouts_FileEditOps.h
ap_TB_Layouts_TableOps.h

The ap_Menu_Layouts_MainMenu.h file contains entries like this...

BeginSubMenu(AP_MENU_ID_VIEW)
MenuItem(AP_MENU_ID_VIEW_NORMAL)
MenuItem(AP_MENU_ID_VIEW_WEB)
MenuItem(AP_MENU_ID_VIEW_PRINT)
MenuItem(AP_MENU_ID_WEB_WEBPREVIEW)
Separator()
BeginSubMenu(AP_MENU_ID_VIEW_TOOLBARS)
MenuItem(AP_MENU_ID_VIEW_TB_1)
MenuItem(AP_MENU_ID_VIEW_TB_2)
MenuItem(AP_MENU_ID_VIEW_TB_3)
MenuItem(AP_MENU_ID_VIEW_TB_4)
// Currently we only can change toolbars in UNIX builds
#ifdef XP_UNIX_TARGET_GTK
Separator()
MenuItem(AP_MENU_ID_VIEW_LOCK_TB_LAYOUT)
MenuItem(AP_MENU_ID_VIEW_DEFAULT_TB_LAYOUT)
#endif
EndSubMenu()
MenuItem(AP_MENU_ID_VIEW_RULER)
MenuItem(AP_MENU_ID_VIEW_STATUSBAR)
Separator()
MenuItem(AP_MENU_ID_VIEW_LOCKSTYLES)
MenuItem(AP_MENU_ID_VIEW_SHOWPARA)
Separator()
MenuItem(AP_MENU_ID_VIEW_FULLSCREEN)

The toolbar files look like this:

BeginLayout(FileEditOps, AP_STRING_ID_TB_Standard, AP_PREF_KEY_StandardBarVisible)
ToolbarItem(AP_TOOLBAR_ID_FILE_NEW)
ToolbarItem(AP_TOOLBAR_ID_FILE_OPEN)
ToolbarItem(AP_TOOLBAR_ID_FILE_SAVE)
ToolbarItem(AP_TOOLBAR_ID_FILE_SAVEAS)
Spacer()
ToolbarItem(AP_TOOLBAR_ID_FILE_PRINT)
#if defined(HAVE_GNOME)
ToolbarItem(AP_TOOLBAR_ID_FILE_PRINT_PREVIEW)
#endif
ToolbarItem(AP_TOOLBAR_ID_SPELLCHECK)
Spacer()
ToolbarItem(AP_TOOLBAR_ID_EDIT_CUT)
ToolbarItem(AP_TOOLBAR_ID_EDIT_COPY)
ToolbarItem(AP_TOOLBAR_ID_EDIT_PASTE)
ToolbarItem(AP_TOOLBAR_ID_FMTPAINTER)

I think you can work out how to use these. Edit the files as you would guess. Type "make install" and see your own personalized UI. When you come up with something better or something that targets a different market niche let us know. We're very receptive to good ideas.

Ironic Note

Here at the Belle experiment at the KEK National Lab in Japan I find myself with a choice of two desktops, Windows 2000 and Solaris CDE. The CDE desktop comes with netscape 4.7-something.

It's incredible how antiquated and horrible netsape-4.7 is. A large fraction of the web is now unaccessible to this software. On Windows 2000 I have to use IE because I'm not allowed to install software on the machine. Well the default page for IE on this machine is.. you guessed it, www.msn.com. And www.msn.com crashes this version of IE every time.

Since I know nothing about Windows admining I can't change the default home page without first loading IE and IE crashes everytime it goes to that home page.

Well f*ck it I thought. I'll try this stupid windows update thing and try to get a new version of IE that doesn't crash. I clicked it and sure enough it told me that I needed to be "Administrator" to run windows update. Ah but look it's actually running IE! So now I can change the home page :-)

So it just goes to show that Windows Update really does work.
Latex Equation Editor

I discovered a great little utility called itex2MML written by Paul Gartside which converts itex (which is basically Latex) to MathML. Since we can nicely display MathML I used this utility to make a Latex based Equation Editor for AbiWord.

I'm very pleased with the results. This is exactly the way I'd like to enter and edit mathematics in my documents.

Here's is a cute little screenshot of the feature in use. I cooked this up in just about 10 minutes of playing :-)

 http://www.ph.unimelb.edu.au/~msevior/abiword/TightEditMathGrammar.png

6 Mar 2005 (updated 6 Mar 2005 at 01:07 UTC) »

The World's Biggest Commit

From my great friend and fellow abi hacker Marc (uwog) Maurer!

---------------------------------------------------------

Had some tiny issues with this one. I think after this sync, all will be well again. It even compiles! Yay!

Marc

Sync with HEAD
CVS: ---------------------------------------------------------------------- CVS: Enter Log. Lines beginning with `CVS:' are removed automatically CVS: CVS: Committing in . CVS: CVS: Modified Files: CVS: Tag: JMM-DOUBLEGRAPHICS-1 CVS: CREDITS.TXT GNUmakefile.am Makefile configure.ac includes.mk CVS: ac-helpers/abi-glib-gtk.m4 ac-helpers/abi-gnome.m4 CVS: ac-helpers/abi-gucharmap.m4 docs/build/BUILD.TXT CVS: docs/build/BUILD.html po/cy-GB.po po/es-ES.po po/ms-MY.po CVS: po/nl-NL.po po/pt-PT.po po/sq-AL.po src/af/GNUmakefile.am CVS: src/af/ev/cocoa/ev_CocoaMenu.mm CVS: src/af/ev/cocoa/ev_CocoaToolbar.h CVS: src/af/ev/cocoa/ev_CocoaToolbar.mm CVS: src/af/ev/unix/ev_UnixMenu.cpp src/af/ev/win/ev_Win32Menu.cpp CVS: src/af/ev/xp/ev_EditBits.h src/af/gr/Makefile CVS: src/af/gr/cocoa/gr_CocoaGraphics.h CVS: src/af/gr/cocoa/gr_CocoaGraphics.mm CVS: src/af/gr/cocoa/gr_CocoaImage.h CVS: src/af/gr/cocoa/gr_CocoaImage.mm CVS: src/af/gr/unix/gr_UnixGraphics.cpp CVS: src/af/gr/unix/gr_UnixGraphics.h CVS: src/af/gr/unix/gr_UnixImage.cpp src/af/gr/unix/gr_UnixImage.h CVS: src/af/gr/win/gr_Win32Graphics.cpp CVS: src/af/gr/win/gr_Win32Graphics.h CVS: src/af/gr/win/gr_Win32Image.cpp src/af/gr/win/gr_Win32Image.h CVS: src/af/gr/win/gr_Win32USPGraphics.cpp CVS: src/af/gr/win/gr_Win32USPGraphics.h CVS: src/af/gr/xp/GNUmakefile.am src/af/gr/xp/Makefile CVS: src/af/gr/xp/gr_Graphics.cpp src/af/gr/xp/gr_Graphics.h CVS: src/af/gr/xp/gr_Image.cpp src/af/gr/xp/gr_Image.h CVS: src/af/gr/xp/gr_RenderInfo.h src/af/gr/xp/gr_VectorImage.cpp CVS: src/af/gr/xp/gr_VectorImage.h src/af/util/GNUmakefile.am CVS: src/af/util/Makefile src/af/util/unix/ut_unixMisc.cpp CVS: src/af/util/xp/GNUmakefile.am src/af/util/xp/Makefile CVS: src/af/util/xp/ut_assert.h src/af/util/xp/ut_misc.cpp CVS: src/af/util/xp/ut_misc.h src/af/util/xp/ut_png.cpp CVS: src/af/util/xp/ut_string_class.cpp src/af/util/xp/ut_tree.h CVS: src/af/util/xp/ut_types.h src/af/xap/GNUmakefile.am CVS: src/af/xap/Makefile src/af/xap/cocoa/GNUmakefile.am CVS: src/af/xap/cocoa/xap_CocoaAppController.h CVS: src/af/xap/cocoa/xap_CocoaAppController.mm CVS: src/af/xap/cocoa/xap_CocoaDialog_Utilities.h CVS: src/af/xap/cocoa/xap_CocoaDialog_Utilities.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_FileOpenSaveAs.h CVS: src/af/xap/cocoa/xap_CocoaDlg_FileOpenSaveAs.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_FontChooser.h CVS: src/af/xap/cocoa/xap_CocoaDlg_Language.h CVS: src/af/xap/cocoa/xap_CocoaDlg_Language.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_ListDocuments.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_PluginManager.h CVS: src/af/xap/cocoa/xap_CocoaDlg_PluginManager.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_Zoom.mm CVS: src/af/xap/cocoa/xap_CocoaFont.h CVS: src/af/xap/cocoa/xap_CocoaFont.mm CVS: src/af/xap/cocoa/xap_CocoaFrame.h CVS: src/af/xap/cocoa/xap_CocoaFrame.mm CVS: src/af/xap/cocoa/xap_CocoaFrameImpl.h CVS: src/af/xap/cocoa/xap_CocoaFrameImpl.mm CVS: src/af/xap/cocoa/xap_CocoaModule.h CVS: src/af/xap/cocoa/xap_CocoaModule.mm CVS: src/af/xap/cocoa/xap_CocoaPlugin.h CVS: src/af/xap/cocoa/xap_CocoaPlugin.mm CVS: src/af/xap/cocoa/xap_CocoaToolPalette.mm CVS: src/af/xap/cocoa/xap_CocoaToolbarWindow.h CVS: src/af/xap/cocoa/xap_CocoaToolbarWindow.mm CVS: src/af/xap/cocoa/xap_CocoaToolbar_Icons.h CVS: src/af/xap/cocoa/xap_CocoaToolbar_Icons.mm CVS: src/af/xap/cocoa/xap_CocoaDlg_FontChooser.nib/classes.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_FontChooser.nib/info.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_FontChooser.nib/objects.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_PluginManager.nib/classes.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_PluginManager.nib/info.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_PluginManager.nib/objects.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_Zoom.nib/info.nib CVS: src/af/xap/cocoa/xap_CocoaDlg_Zoom.nib/objects.nib CVS: src/af/xap/cocoa/xap_CocoaFileOpen_Views.nib/classes.nib CVS: src/af/xap/cocoa/xap_CocoaFileOpen_Views.nib/info.nib CVS: src/af/xap/cocoa/xap_CocoaFileOpen_Views.nib/objects.nib CVS: src/af/xap/cocoa/xap_CocoaToolPalette.nib/info.nib CVS: src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib CVS: src/af/xap/unix/GNUmakefile.am CVS: src/af/xap/unix/xap_UnixDialogHelper.cpp CVS: src/af/xap/unix/xap_UnixDialogHelper.h CVS: src/af/xap/unix/xap_UnixDlg_FileOpenSaveAs.cpp CVS: src/af/xap/unix/xap_UnixDlg_FileOpenSaveAs.h CVS: src/af/xap/unix/xap_UnixDlg_FontChooser.cpp CVS: src/af/xap/unix/xap_UnixDlg_Image.cpp CVS: src/af/xap/unix/xap_UnixDlg_Image.glade CVS: src/af/xap/unix/xap_UnixDlg_Image.h CVS: src/af/xap/unix/xap_UnixDlg_Language.cpp CVS: src/af/xap/unix/xap_UnixDlg_Language.glade CVS: src/af/xap/unix/xap_UnixDlg_Language.h CVS: src/af/xap/unix/xap_UnixDlg_PluginManager.cpp CVS: src/af/xap/unix/xap_UnixDlg_PluginManager.h CVS: src/af/xap/unix/xap_UnixDlg_Zoom.glade CVS: src/af/xap/unix/xap_UnixEncodingManager.cpp CVS: src/af/xap/unix/xap_UnixFont.cpp CVS: src/af/xap/unix/xap_UnixFont.h CVS: src/af/xap/unix/xap_UnixFontManager.cpp CVS: src/af/xap/unix/xap_UnixPSFont.cpp CVS: src/af/xap/unix/xap_UnixPSFont.h CVS: src/af/xap/unix/xap_UnixPSGraphics.cpp CVS: src/af/xap/unix/xap_UnixPSImage.cpp CVS: src/af/xap/unix/xap_UnixPSImage.h CVS: src/af/xap/unix/xap_UnixTableWidget.cpp CVS: src/af/xap/unix/gnome/color-palette.c CVS: src/af/xap/unix/gnome/color-palette.h CVS: src/af/xap/unix/gnome/widget-color-combo.c CVS: src/af/xap/unix/gnome/xap_UnixGnomePrintGraphics.cpp CVS: src/af/xap/xp/GNUmakefile.am src/af/xap/xp/Makefile CVS: src/af/xap/xp/xad_Document.cpp src/af/xap/xp/xad_Document.h CVS: src/af/xap/xp/xap_App.cpp src/af/xap/xp/xap_App.h CVS: src/af/xap/xp/xap_Dialog.cpp src/af/xap/xp/xap_Dialog.h CVS: src/af/xap/xp/xap_DialogFactory.cpp CVS: src/af/xap/xp/xap_Dialog_Id.h src/af/xap/xp/xap_Dlg_About.h CVS: src/af/xap/xp/xap_Dlg_Image.cpp src/af/xap/xp/xap_Dlg_Image.h CVS: src/af/xap/xp/xap_Dlg_Language.cpp CVS: src/af/xap/xp/xap_Dlg_Language.h CVS: src/af/xap/xp/xap_Dlg_PluginManager.cpp CVS: src/af/xap/xp/xap_EncodingManager.cpp CVS: src/af/xap/xp/xap_Module.cpp src/af/xap/xp/xap_Module.h CVS: src/af/xap/xp/xap_ModuleManager.cpp CVS: src/af/xap/xp/xap_ModuleManager.h CVS: src/af/xap/xp/xap_Prefs_SchemeIds.h CVS: src/af/xap/xp/xap_String_Id.h src/af/xap/xp/xav_Listener.h CVS: src/af/xap/xp/xav_View.cpp src/af/xap/xp/xav_View.h CVS: src/config/abi_release_version.mk src/config/abi_rules.mk CVS: src/pkg/common/unix/data/tbz_install.sh CVS: src/pkg/common/unix/data/tgz_install.sh CVS: src/pkg/common/unix/scripts/install.sh CVS: src/pkg/common/unix/scripts/makewrapper.sh CVS: src/pkg/freebsd/scripts/mkplist.sh CVS: src/pkg/hpux/scripts/hpux.abiword.mkdepot.sh CVS: src/pkg/linux/Makefile src/pkg/linux/deb/AbiWord CVS: src/pkg/linux/deb/rules CVS: src/pkg/linux/rpm/abiword.spec-template CVS: src/pkg/linux/scripts/install_redhat.sh CVS: src/pkg/win/setup/DictionaryAmerican.nsi CVS: src/pkg/win/setup/DictionaryBritish.nsi CVS: src/pkg/win/setup/DictionaryCatalan.nsi CVS: src/pkg/win/setup/DictionaryCzech.nsi CVS: src/pkg/win/setup/DictionaryDansk.nsi CVS: src/pkg/win/setup/DictionaryDeutsch.nsi CVS: src/pkg/win/setup/DictionaryDeutschmed.nsi CVS: src/pkg/win/setup/DictionaryEllhnika.nsi CVS: src/pkg/win/setup/DictionaryEspanol.nsi CVS: src/pkg/win/setup/DictionaryEsperanto.nsi CVS: src/pkg/win/setup/DictionaryFrancais.nsi CVS: src/pkg/win/setup/DictionaryGalician.nsi CVS: src/pkg/win/setup/DictionaryIrish.nsi CVS: src/pkg/win/setup/DictionaryItalian.nsi CVS: src/pkg/win/setup/DictionaryLietuviu.nsi CVS: src/pkg/win/setup/DictionaryNederlands.nsi CVS: src/pkg/win/setup/DictionaryNorsk.nsi CVS: src/pkg/win/setup/DictionaryNynorsk.nsi CVS: src/pkg/win/setup/DictionaryPolish.nsi CVS: src/pkg/win/setup/DictionaryPortugues.nsi CVS: src/pkg/win/setup/DictionaryRussian.nsi CVS: src/pkg/win/setup/DictionarySvenska.nsi CVS: src/pkg/win/setup/Makefile CVS: src/pkg/win/setup/pluginImportersExporters.nsi CVS: src/pkg/win/setup/NSISv2/AbiWord.nsi CVS: src/pkg/win/setup/NSISv2/abi_lng_misc.nsh CVS: src/pkg/win/setup/NSISv2/abi_mui_sectdesc.nsh CVS: src/pkg/win/setup/NSISv2/abi_parsecmdline.nsh CVS: src/pkg/win/setup/NSISv2/abi_util_addremove.nsh CVS: src/text/fmt/xp/GNUmakefile.am src/text/fmt/xp/Makefile CVS: src/text/fmt/xp/fb_LineBreaker.cpp CVS: src/text/fmt/xp/fg_GraphicRaster.cpp CVS: src/text/fmt/xp/fl_BlockLayout.cpp CVS: src/text/fmt/xp/fl_BlockLayout.h CVS: src/text/fmt/xp/fl_ContainerLayout.cpp CVS: src/text/fmt/xp/fl_DocLayout.cpp CVS: src/text/fmt/xp/fl_DocLayout.h CVS: src/text/fmt/xp/fl_DocListener.cpp CVS: src/text/fmt/xp/fl_FootnoteLayout.cpp CVS: src/text/fmt/xp/fl_FrameLayout.cpp CVS: src/text/fmt/xp/fl_FrameLayout.h CVS: src/text/fmt/xp/fl_SectionLayout.cpp CVS: src/text/fmt/xp/fl_SectionLayout.h CVS: src/text/fmt/xp/fl_Squiggles.cpp CVS: src/text/fmt/xp/fl_Squiggles.h CVS: src/text/fmt/xp/fl_TableLayout.cpp CVS: src/text/fmt/xp/fl_TestRoutines.cpp CVS: src/text/fmt/xp/fp_Column.cpp CVS: src/text/fmt/xp/fp_FrameContainer.cpp CVS: src/text/fmt/xp/fp_FrameContainer.h CVS: src/text/fmt/xp/fp_Line.cpp src/text/fmt/xp/fp_Page.cpp CVS: src/text/fmt/xp/fp_Run.cpp src/text/fmt/xp/fp_Run.h CVS: src/text/fmt/xp/fp_TextRun.cpp src/text/fmt/xp/fp_TextRun.h CVS: src/text/fmt/xp/fv_FrameEdit.cpp CVS: src/text/fmt/xp/fv_FrameEdit.h src/text/fmt/xp/fv_View.cpp CVS: src/text/fmt/xp/fv_View.h src/text/fmt/xp/fv_View_cmd.cpp CVS: src/text/fmt/xp/fv_View_protected.cpp CVS: src/text/fmt/xp/fv_VisualDragText.cpp CVS: src/text/fmt/xp/fv_VisualDragText.h CVS: src/text/ptbl/xp/GNUmakefile.am src/text/ptbl/xp/fd_Field.cpp CVS: src/text/ptbl/xp/pd_Document.cpp CVS: src/text/ptbl/xp/pd_Document.h CVS: src/text/ptbl/xp/pd_Iterator.cpp src/text/ptbl/xp/pf_Frag.cpp CVS: src/text/ptbl/xp/pf_Frag.h src/text/ptbl/xp/pf_Frag_FmtMark.h CVS: src/text/ptbl/xp/pf_Frag_Object.cpp CVS: src/text/ptbl/xp/pf_Frag_Object.h CVS: src/text/ptbl/xp/pf_Frag_Strux.cpp CVS: src/text/ptbl/xp/pf_Frag_Strux.h CVS: src/text/ptbl/xp/pf_Frag_Text.h CVS: src/text/ptbl/xp/pp_AttrProp.cpp CVS: src/text/ptbl/xp/pp_PropertyMap.cpp CVS: src/text/ptbl/xp/pp_PropertyMap.h CVS: src/text/ptbl/xp/pp_Revision.cpp CVS: src/text/ptbl/xp/pp_Revision.h CVS: src/text/ptbl/xp/pt_PT_Append.cpp CVS: src/text/ptbl/xp/pt_PT_ChangeObject.cpp CVS: src/text/ptbl/xp/pt_PT_ChangeSpan.cpp CVS: src/text/ptbl/xp/pt_PT_DeleteObject.cpp CVS: src/text/ptbl/xp/pt_PT_DeleteSpan.cpp CVS: src/text/ptbl/xp/pt_PT_DeleteStrux.cpp CVS: src/text/ptbl/xp/pt_PT_InsertObject.cpp CVS: src/text/ptbl/xp/pt_PT_InsertSpan.cpp CVS: src/text/ptbl/xp/pt_PT_InsertStrux.cpp CVS: src/text/ptbl/xp/pt_PT_Styles.cpp CVS: src/text/ptbl/xp/pt_PieceTable.cpp CVS: src/text/ptbl/xp/pt_PieceTable.h src/text/ptbl/xp/pt_Types.h CVS: src/text/ptbl/xp/px_CR_FmtMark.cpp CVS: src/text/ptbl/xp/px_CR_FmtMarkChange.cpp CVS: src/text/ptbl/xp/px_CR_Glob.cpp CVS: src/text/ptbl/xp/px_CR_Object.cpp CVS: src/text/ptbl/xp/px_CR_Object.h CVS: src/text/ptbl/xp/px_CR_ObjectChange.cpp CVS: src/text/ptbl/xp/px_CR_Span.cpp CVS: src/text/ptbl/xp/px_CR_SpanChange.cpp CVS: src/text/ptbl/xp/px_CR_Strux.cpp CVS: src/text/ptbl/xp/px_CR_Strux.h CVS: src/text/ptbl/xp/px_CR_StruxChange.cpp CVS: src/text/ptbl/xp/px_ChangeRecord.cpp CVS: src/text/ptbl/xp/px_ChangeRecord.h src/wp/GNUmakefile.am CVS: src/wp/ap/cocoa/ap_CocoaApp.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_All.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_Background.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_Background.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_Field.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_Field.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_FormatFrame.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_FormatFrame.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_MailMerge.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_MailMerge.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_New.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_New.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_PageSetup.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_PageSetup.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_Replace.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_Stylist.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_Stylist.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_WordCount.h CVS: src/wp/ap/cocoa/ap_CocoaDialog_WordCount.mm CVS: src/wp/ap/cocoa/ap_CocoaFrameImpl.mm CVS: src/wp/ap/cocoa/ap_CocoaLeftRuler.mm CVS: src/wp/ap/cocoa/ap_CocoaTopRuler.mm CVS: src/wp/ap/cocoa/ap_CocoaDialog_Field.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_Field.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_FormatFrame.nib/classes.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_FormatFrame.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_FormatFrame.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_InsertTable.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_InsertTable.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_New.nib/classes.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_New.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_New.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_PageSetup.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_PageSetup.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_Spell.nib/info.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_Spell.nib/objects.nib CVS: src/wp/ap/cocoa/ap_CocoaDialog_Stylist.nib/objects.nib CVS: src/wp/ap/qnx/ap_QNXDialog_All.h src/wp/ap/unix/GNUmakefile.am CVS: src/wp/ap/unix/Makefile src/wp/ap/unix/abiwidget.cpp CVS: src/wp/ap/unix/ap_UnixApp.cpp src/wp/ap/unix/ap_UnixApp.h CVS: src/wp/ap/unix/ap_UnixDialog_All.h CVS: src/wp/ap/unix/ap_UnixDialog_Background.cpp CVS: src/wp/ap/unix/ap_UnixDialog_Break.glade CVS: src/wp/ap/unix/ap_UnixDialog_FormatFrame.cpp CVS: src/wp/ap/unix/ap_UnixDialog_FormatFrame.glade CVS: src/wp/ap/unix/ap_UnixDialog_FormatFrame.h CVS: src/wp/ap/unix/ap_UnixDialog_FormatTable.cpp CVS: src/wp/ap/unix/ap_UnixDialog_FormatTable.glade CVS: src/wp/ap/unix/ap_UnixDialog_FormatTable.h CVS: src/wp/ap/unix/ap_UnixDialog_Goto.cpp CVS: src/wp/ap/unix/ap_UnixDialog_Goto.h CVS: src/wp/ap/unix/ap_UnixDialog_New.cpp CVS: src/wp/ap/unix/ap_UnixDialog_New.glade CVS: src/wp/ap/unix/ap_UnixDialog_New.h CVS: src/wp/ap/unix/ap_UnixDialog_Options.cpp CVS: src/wp/ap/unix/ap_UnixDialog_Options.glade CVS: src/wp/ap/unix/ap_UnixDialog_Options.h CVS: src/wp/ap/unix/ap_UnixDialog_PageNumbers.glade CVS: src/wp/ap/unix/ap_UnixDialog_PageSetup.cpp CVS: src/wp/ap/unix/ap_UnixDialog_PageSetup.h CVS: src/wp/ap/unix/ap_UnixDialog_Paragraph.h CVS: src/wp/ap/unix/ap_UnixDialog_Spell.cpp CVS: src/wp/ap/unix/ap_UnixDialog_Spell.h CVS: src/wp/ap/unix/ap_UnixDialog_WordCount.cpp CVS: src/wp/ap/unix/ap_UnixDialog_WordCount.glade CVS: src/wp/ap/unix/ap_UnixDialog_WordCount.h CVS: src/wp/ap/unix/ap_UnixFrameImpl.cpp CVS: src/wp/ap/win/ap_Win32App.cpp CVS: src/wp/ap/win/ap_Win32Dialog_All.h CVS: src/wp/ap/win/ap_Win32Dialog_Field.cpp CVS: src/wp/ap/win/ap_Win32Dialog_FormatTOC.cpp CVS: src/wp/ap/win/ap_Win32Dialog_FormatTOC.h CVS: src/wp/ap/win/ap_Win32Dialog_InsertTable.cpp CVS: src/wp/ap/win/ap_Win32Dialog_New.cpp CVS: src/wp/ap/win/ap_Win32Dialog_Options.cpp CVS: src/wp/ap/win/ap_Win32Dialog_Options.h CVS: src/wp/ap/win/ap_Win32Dialog_Replace.cpp CVS: src/wp/ap/win/ap_Win32Dialog_WordCount.cpp CVS: src/wp/ap/win/ap_Win32Res_DlgNew.rc2 CVS: src/wp/ap/win/ap_Win32Res_DlgOptions.rc2 CVS: src/wp/ap/win/ap_Win32Res_DlgWordCount.rc2 CVS: src/wp/ap/xp/ap_Dialog_Columns.cpp CVS: src/wp/ap/xp/ap_Dialog_FormatFrame.cpp CVS: src/wp/ap/xp/ap_Dialog_FormatFrame.h CVS: src/wp/ap/xp/ap_Dialog_FormatTOC.cpp CVS: src/wp/ap/xp/ap_Dialog_Lists.cpp CVS: src/wp/ap/xp/ap_Dialog_New.cpp CVS: src/wp/ap/xp/ap_Dialog_Options.cpp CVS: src/wp/ap/xp/ap_Dialog_Options.h CVS: src/wp/ap/xp/ap_Dialog_Paragraph.h CVS: src/wp/ap/xp/ap_Dialog_WordCount.cpp CVS: src/wp/ap/xp/ap_Dialog_WordCount.h CVS: src/wp/ap/xp/ap_EditMethods.cpp src/wp/ap/xp/ap_LB_Default.cpp CVS: src/wp/ap/xp/ap_ML_ContextFrame.h CVS: src/wp/ap/xp/ap_ML_ContextHyperlink.h CVS: src/wp/ap/xp/ap_Menu_ActionSet.cpp CVS: src/wp/ap/xp/ap_Menu_Functions.cpp CVS: src/wp/ap/xp/ap_Menu_Id_List.h CVS: src/wp/ap/xp/ap_Menu_Layouts_All.h CVS: src/wp/ap/xp/ap_Menu_Layouts_MainMenu.h CVS: src/wp/ap/xp/ap_Prefs_SchemeIds.h CVS: src/wp/ap/xp/ap_Preview_Paragraph.cpp CVS: src/wp/ap/xp/ap_Preview_Paragraph.h src/wp/ap/xp/ap_Ruler.cpp CVS: src/wp/ap/xp/ap_String_Id.h src/wp/ap/xp/ap_TopRuler.cpp CVS: src/wp/impexp/Makefile CVS: src/wp/impexp/cocoa/ie_impexp_RegisterCocoa.cpp CVS: src/wp/impexp/unix/GNUmakefile.am src/wp/impexp/unix/Makefile CVS: src/wp/impexp/unix/ie_impexp_RegisterUnix.cpp CVS: src/wp/impexp/win/ie_impexp_RegisterWin32.cpp CVS: src/wp/impexp/xp/GNUmakefile.am src/wp/impexp/xp/Makefile CVS: src/wp/impexp/xp/ie_FileInfo.cpp CVS: src/wp/impexp/xp/ie_FileInfo.h CVS: src/wp/impexp/xp/ie_exp_AbiWord_1.cpp CVS: src/wp/impexp/xp/ie_exp_HTML.cpp CVS: src/wp/impexp/xp/ie_exp_HTML.h src/wp/impexp/xp/ie_exp_RTF.cpp CVS: src/wp/impexp/xp/ie_exp_RTF_listenerGetProps.cpp CVS: src/wp/impexp/xp/ie_exp_RTF_listenerGetProps.h CVS: src/wp/impexp/xp/ie_exp_RTF_listenerWriteDoc.cpp CVS: src/wp/impexp/xp/ie_impGraphic.cpp CVS: src/wp/impexp/xp/ie_impGraphic.h CVS: src/wp/impexp/xp/ie_imp_AbiWord_1.cpp CVS: src/wp/impexp/xp/ie_imp_AbiWord_1.h CVS: src/wp/impexp/xp/ie_imp_GraphicAsDocument.cpp CVS: src/wp/impexp/xp/ie_imp_MsWord_97.cpp CVS: src/wp/impexp/xp/ie_imp_MsWord_97.h CVS: src/wp/impexp/xp/ie_imp_RTF.cpp src/wp/impexp/xp/ie_imp_RTF.h CVS: src/wp/impexp/xp/ie_imp_RTFKeywordIDs.h CVS: src/wp/impexp/xp/ie_imp_RTFKeywords.h CVS: src/wp/impexp/xp/ie_imp_RTFObjectsAndPicts.cpp CVS: src/wp/impexp/xp/ie_mailmerge.cpp CVS: src/wp/impexp/xp/ie_mailmerge.h src/wp/impexp/xp/ie_types.h CVS: src/wp/main/cocoa/bundle/DOCDocument.icns CVS: src/wp/main/cocoa/bundle/Info.plist CVS: src/wp/main/cocoa/bundle/Info.plist.in CVS: src/wp/main/cocoa/bundle/RTFDocument.icns CVS: src/wp/main/qnx/GNUmakefile.am src/wp/main/unix/.cvsignore CVS: src/wp/main/unix/GNUmakefile.am src/wp/main/unix/Makefile CVS: src/wp/main/unix/gnome/.cvsignore CVS: src/wp/main/unix/gnome/Makefile src/wp/main/win/Win32Main.rc CVS: user/wp/strings/am-ET.strings user/wp/strings/ar.strings CVS: user/wp/strings/be-BY.strings user/wp/strings/br-FR.strings CVS: user/wp/strings/ca-ES.strings user/wp/strings/cy-GB.strings CVS: user/wp/strings/de-CH.strings user/wp/strings/de-DE.strings CVS: user/wp/strings/es-ES.strings user/wp/strings/eu-ES.strings CVS: user/wp/strings/fi-FI.strings user/wp/strings/fr-FR.strings CVS: user/wp/strings/gl-ES.strings user/wp/strings/it-IT.strings CVS: user/wp/strings/ja-JP.strings user/wp/strings/jbo.strings CVS: user/wp/strings/lv-LV.strings user/wp/strings/ms-MY.strings CVS: user/wp/strings/nl-NL.strings user/wp/strings/pl-PL.strings CVS: user/wp/strings/ro-RO.strings user/wp/strings/sc-IT.strings CVS: user/wp/strings/sq-AL.strings user/wp/strings/sr.strings CVS: user/wp/strings/tr-TR.strings user/wp/strings/uk-UA.strings CVS: user/wp/strings/vi-VN.strings user/wp/strings/zh-CN.strings CVS: Added Files: CVS: Tag: JMM-DOUBLEGRAPHICS-1 CVS: Doxyfile docs/AbiWord_UnitTest.abw po/mg-MG.po CVS: src/af/gr/unix/gr_UnixPangoGraphics.cpp CVS: src/af/gr/unix/gr_UnixPangoGraphics.h CVS: src/af/gr/xp/gr_EmbedManager.cpp CVS: src/af/gr/xp/gr_EmbedManager.h src/af/util/unix/ut_unixMisc.h CVS: src/af/xap/cocoa/xap_CocoaWidget.h CVS: src/af/xap/cocoa/xap_CocoaWidget.mm CVS: src/af/xap/unix/xap_UnixWidget.cpp CVS: src/af/xap/unix/xap_UnixWidget.h CVS: src/af/xap/xp/xap_ModuleFactory.h src/af/xap/xp/xap_Widget.h CVS: src/pkg/win/setup/DictionaryBrazilian.nsi CVS: src/pkg/win/setup/DictionaryFinnish.nsi CVS: src/pkg/win/setup/DictionaryHungarian.nsi CVS: src/pkg/win/setup/DictionaryMLatin.nsi CVS: src/pkg/win/setup/DictionarySardinian.nsi CVS: src/pkg/win/setup/DictionarySlovak.nsi CVS: src/pkg/win/setup/DictionarySlovensko.nsi CVS: src/pkg/win/setup/DictionarySwiss.nsi CVS: src/pkg/win/setup/DictionaryUkrainian.nsi CVS: src/text/fmt/xp/fp_MathRun.cpp src/text/fmt/xp/fp_MathRun.h CVS: src/text/fmt/xp/fv_InlineImage.cpp CVS: src/text/fmt/xp/fv_InlineImage.h CVS: src/text/ptbl/xp/pd_XyDiff.cpp src/text/ptbl/xp/pd_XyDiff.h CVS: src/wp/ap/cocoa/ap_CocoaPlugin.h CVS: src/wp/ap/cocoa/ap_CocoaPlugin.mm CVS: src/wp/ap/unix/ap_UnixDialog_Goto.glade CVS: src/wp/ap/unix/ap_UnixDialog_Spell.glade CVS: src/wp/ap/xp/ap_ML_ContextPosObject.h src/wp/ap/xp/margin.png CVS: src/wp/impexp/unix/ie_impGraphic_GdkPixbuf.cpp CVS: src/wp/impexp/unix/ie_impGraphic_GdkPixbuf.h CVS: src/wp/impexp/xp/ie_TOC.cpp src/wp/impexp/xp/ie_TOC.h CVS: src/wp/main/cocoa/bundle/Cursor_Compass.png CVS: src/wp/main/cocoa/bundle/Cursor_Crosshair.png CVS: src/wp/main/cocoa/bundle/Cursor_DownArrow.png CVS: src/wp/main/cocoa/bundle/Cursor_E.png CVS: src/wp/main/cocoa/bundle/Cursor_Exchange.png CVS: src/wp/main/cocoa/bundle/Cursor_HandPointer.png CVS: src/wp/main/cocoa/bundle/Cursor_LeftArrow.png CVS: src/wp/main/cocoa/bundle/Cursor_N.png CVS: src/wp/main/cocoa/bundle/Cursor_NE.png CVS: src/wp/main/cocoa/bundle/Cursor_NW.png CVS: src/wp/main/cocoa/bundle/Cursor_RightArrow.png CVS: src/wp/main/cocoa/bundle/Cursor_S.png CVS: src/wp/main/cocoa/bundle/Cursor_SE.png CVS: src/wp/main/cocoa/bundle/Cursor_SW.png CVS: src/wp/main/cocoa/bundle/Cursor_W.png CVS: src/wp/main/cocoa/bundle/Cursor_Wait.png CVS: src/wp/main/cocoa/bundle/HTMDocument.icns CVS: src/wp/main/cocoa/bundle/SDWDocument.icns CVS: src/wp/main/cocoa/bundle/SXWDocument.icns CVS: src/wp/main/cocoa/bundle/TXTDocument.icns CVS: src/wp/main/cocoa/bundle/WPDDocument.icns CVS: user/wp/strings/mg-MG.strings CVS: Removed Files: CVS: Tag: JMM-DOUBLEGRAPHICS-1 CVS: regtest/.cvsignore regtest/conversion_tests.py CVS: regtest/regtest.py regtest/simple.abw regtest/simple.html.goal CVS: regtest/simple.rtf.goal regtest/testcase.py src/.doxygen.cfg CVS: src/af/ev/xp/Makefile.mpw src/af/gr/xp/Makefile.mpw CVS: src/af/util/xp/Makefile.mpw src/af/util/xp/ut_spi.cpp CVS: src/af/util/xp/ut_spi.h CVS: src/af/xap/unix/xap_UnixGtkColorPicker.c CVS: src/af/xap/unix/xap_UnixGtkColorPicker.h CVS: src/af/xap/xp/Makefile.mpw src/af/xap/xp/xap_Spider.cpp CVS: src/af/xap/xp/xap_Spider.h src/config/abi_defs.mk.mpw CVS: src/config/abi_rules.mk.mpw src/other/spell/xp/Makefile.mpw CVS: src/pkg/win/setup/NSISv2/abi_lng_Albanian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Arabic.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Bulgarian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Catalan.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Croatian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Czech.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Danish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Dutch.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_English.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Estonian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Farsi.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Finnish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_French.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_German.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Greek.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Hebrew.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Hungarian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Italian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Japanese.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Korean.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Lithuanian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Macedonian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Norwegian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Polish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Portuguese.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_PortugueseBR.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Romanian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Russian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Serbian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_SimpChinese.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Slovak.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Slovenian.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Spanish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Swedish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Thai.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_TradChinese.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Turkish.nsh CVS: src/pkg/win/setup/NSISv2/abi_lng_Ukrainian.nsh CVS: src/text/fmt/xp/Makefile.mpw src/text/ptbl/xp/Makefile.mpw CVS: src/wp/ap/xp/Makefile.mpw src/wp/impexp/xp/Makefile.mpw CVS: src/wp/main/xp/Makefile.mpw CVS: ----------------------------------------------------------------------

Successful Debugging!

I had an intense debugging session today and got tight wrapped objects for AbiWord working well enough to commit.

Screenshot with a tightly wrapped object.

http://www.ph.unimelb.edu.au/~msevior/abiword/TightWrapSS.png

Screenshot with a square wrapped object.

http://www.ph.unimelb.edu.au/~msevior/abiword/SquareWrapSS.png

Thats about 3 weeks from the idea to implementation. I love writing software :-)

In Japan

I arrived in Japan today. It is cold and snowy which is quite a contrast from the extremely pleasant Melbourne late summer.

I bought a couple of toys at the Duty Free shop at the airport. One is a new set of headphones. These suck. They don't stay in my ears :-(

The other toy was a little Belkin FM transmitter. You plug this into any audio source like an MP3 player or a laptop and you can play your music through a high quality FM receiver. This works really well. I finally get good bass from my laptop and I can control the volume right from my desktop.

I'll try it from my MP3 player and through the car FM receiver later.

I have this thing about disconnected remote control. I find it very cool to change the volume on my computer and get an instant response out of my FM receiver in a totally different room.

AbiWord and Grammar checking.

I finally got the grammar squiggle code working as I'd like it. I really do find this useful because I'm such a bad typist. There is still a fair bit to do.

We need to come with some heuristics to determine whether paragraphs need to be grammar checked. Almost all headings are incorrect sentences. It is silly to grammar-check them as they almost always get squiggled.

While in principle I can see how to make link-grammar provide corrections to a sentence, I can see that it will be a long-term project. I hope we can grow a community of people interested in natural language parsing to work on it. It seems quite possible to extend it to other languages as well. The project needs experts in native language grammar.

My next big feature for AbiWord will be tight wrapped positioned images. I have most of the code written. It now needs to be debugged.

Fedora Core

AbiWord and Gnumeric will be moved to FC-Extras for FC-4. It's pretty disappointing since AbiWord-2.2 really does provide a whole extra level of user-friendliness not found in other competing products anywhere. Gnumeric is the best Spreadsheet on the planet and far better than OOo.

We seem to have been pushed out by a whole slew of server-side stuff. I guess it's clear where RedHat sees it's future.

I hope we can find maintainers for FC-Extras. I guess it's time to start looking for a new distro for me, family and friends.

Debian has totally taken over what used to be a RedHat Workplace here so something like Ubuntu is looking good.

AbiWord - Plugins.

I've been hacking on some really cool plugins for AbiWord. These are now maturing enough to become useful though they're still very alpha.

The first is a plugin framework to allow arbitrary content to be rendered in AbiWord. I have a document describing this that I'm working on. I haven't finished the document because I keep tweaking the interface.

The first application of the framework is a plugin to use Luca Padovani's GtkMathView to render maths inside AbiWord. Luca and I worked out how to draw MathML into AbiWord at last years GUADEC. However by placing the code inside the new plugin framework we can move the code to CVS HEAD while allowing those platforms unfortunate enough to to not have GtkMathView to build and develop. The works really well and fully utilizes the AbiWord and GtkMathView abstract graphics and font classes to draw and  print directly into an AbiWord document. Furthermore, the framework can make png snapshots of  itself so that the AbiWord document with the maths can be viewed without the plugin. This is great for backward compatibility or for platforms that don't support GtkMathView.

Despite the name, the build of GtkMathView that we use does not need GTK and is in principle totally portable. In practice this hasn't happened yet. We need Windows and OSX developers to port it.

While GtkMathView is an awesome piece of code, it is not complete. It needs quite a bit more work to be production ready and it's editor needs to be fully implemented.. At the moment all we can do is insert MathML into a document. We can't create it on the fly.

While this is the first application of the framework it is by no means the last. I think we can use the code to enable arbitary rendering of content within AbiWord. So we can embed gnumeric documents, postscript, pdfs and maybe even the netscape plugins. We'll see.

The other cool plugin is for grammar checking. Last year I created a new type of plugin based on notifications. These work by having AbiWord broadcast notifications to plugins that "listen". I used this send the text in each paragraph to the excellent link-grammar grammar checker. Dom wrote a great auto-enabled build system for the code and now we have automatic English grammar checking in AbiWord. It seems to work really well!

Dom has already posted one screenshot, here is another showing some nice maths too :-)

AbiWord for website design?

We got an interesting email from Michel Strasser on using remote filters to do AbiWord document conversion with a particular example of using AbiWord to design websites.

See http://thebirdslake.free.fr/Abiword/index.htm

I think this is a very interesting idea particularly for CMS.

His example is really impressive. Click through and give it a try!

21 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!