Older blog entries for msevior (starting at number 35)

21 Mar 2005 (updated 22 Mar 2005 at 07:36 UTC) »

Performance Improvements

The interesting discussion with Rick Shaut, Microsoft Word Developer for the Mac, has got Tomas Frydrych and I thinking the various performance bottlenecks in Abiword. Tomas, being a biblical scholar by profession, was able to decipher the following text describing the MS Word binary format.

"The piece table relates a logical character number, called a CP (Character Position), to a physical location within a Word file (an FC). The array of CPs in the plcfpcd defines a partitioning of the Word document into disjoint pieces. The second array is an array of PCDs (Piece Descriptors) which is in 1-to-1 correspondence to the array of CPs that records the physical location in the Word file where the corresponding piece begins. To find the physical location of a particular logical character ... [find] the index of the largest CP in the array of CPs that is less than the character CP. Then reference the PCD with that index in the array of PCDs. The FC stored in the PCD gives the position of the beginning of the piece in the file. Finally, add the offset of the desired character from the beginning of its piece to the FC of the beginning of the piece. This gives the actual file offset of the character."

Acording to Tomas this means that MS Word stores content in data structures indexed by two arrays. One array indexes the paragraph of a piece of text. The other is an offset of the array from where it would otherwise be if no editing had taken place in the document.

Acording to Tomas this means that MS Word stores content in data structures indexed by two arrays. One array indexes the paragraph of a piece of text. The other is an offset of the array from where it would otherwise be if no editing had taken place in the document.

There are two good things about this structure. The first is that searches for the location of a particular point in the document to map to the document structure is fast, order Log(N), because the paragraphs, (blocks), are ordered and hence can be binary searched.

The other is that for insertions or deletions to the document, the offsets of the different character fragments within the blocks do not need to be updated as they are positioned relative to the offsets of the blocks.

The fragments outside the block do not need to be altered since they are postioned relative to the block.

Update

Tomas has told me that this was his initial idea for how we could use the MS Word double array technique to speed up insertions and deletions in Abiword and that MS Word is likely not do this.

In contrast Abiword has a doubly linked-list of fragments which can be any sort of document structure including paragraph blocks and text structures. Each fragment knows it's position in the document and has links to the next and previous fragment.

To speed up searches for character positions we have a vector of fragment positions. We can also do binary searches of this to give us a search complexity of log(N).

However upon insertions or deletions in the piecetable we need to update every fragment downstream of the change. This operation is order (N) where N is the number of fragments.

Tomas's initial wrinkle has a considerable speed advantage over the current scheme. The update time is Order(N)*(Number Blocks)/(Number text fragments) which is typically a factor 5-10 smaller. For a typical 300 page document Tomas estimates AbiWord does about 16000 updates for each insertion/deletion event. The double array PT would require only about 1600.

However as you can see the overall complexity for the double array structure still grows as Order(N).

Two years ago Joaquin Cuenca Abela developed a prototype Piece Table based on a balanced Red/Black tree structure where all operations (search,insert,delete) require Order(Log(N)) operations.

http://e98cuenc.free.fr/wordprocessor/piecetable.html

I estimate that Tomas' example only requires 30 operations for Joaquin's Piece Table. This is one of the major performance improvements we can make to AbiWord.

I'll talk about other improvements later.

You can post a comment on this post here.

GPL

I should know better than to get into GPL debates. In addition to Nelson and haruspex, Chris Ball sent me the following email.

A few points on your blog entry. Perhaps you could add them to your diary, if you like; I don't have an advogato diary myself.

"So a contract signed by someone to break a law (eg commit a murder!) is not legally binding. Similarly a contract (the GPL) which requires you to break the Law, (ie export some software to Iran) is not legally binding."

Firstly, the GPL is not a contract, it is a license. The user of GPL'd software is not following the license because they signed a contract to do so, they are following it because they will lose the extra rights granted to them by the license if they do not.

Which leads into my second point -- Red Hat would not win a case against the FSF, because if Red Hat breach the GPL, they no longer have a right to distribute the work; the license the work is under reverts to pure copyright, which is far more restrictive than the GPL. After a breach of the GPL, the FSF could sue Red Hat for copyright violation, in distributing their copyrighted works without authorisation.

Hope that helps.

I have no desire to continue a long discussion about this and will shut up.

19 Mar 2005 (updated 19 Mar 2005 at 14:47 UTC) »
roozbeh: IANAL but I'm pretty sure if the Free Software Foundation sued Red Hat in the US for GPL vioaltion, RedHat would win.

That clause is place because it is a felony in the US to export some classes of software to some Countries. Any contract that requires a signatory to do something illegal is null and void.

So a contract signed by someone to break a law (eg commit a murder!) is not legally binding. Similarly a contract (the GPL) which requires you to break the Law, (ie export some software to Iran) is not legally binding.

I'm not quite sure of your complaint about people stealing GPL'd work in Iran though. If the concept of copyright is not even recognized by Law what hope do you have of preventing people from using your work without attribution or compensation?

Apology

Sorry Rick for implying you only see what a committee thinks you want to see. I understand now that the process is far more thorough than that.

14 Mar 2005 (updated 17 Mar 2005 at 04:11 UTC) »

Rick Schaut

Is a Microsoft developer who works on MS Word for the Mac. He has invited me to talk to him. So I have. You can find an ongoing discussion here.

havoc and Eugenia will be interested to read he doesn't actually talk directly to customers or users. He only sees what some committee beneath him thinks he needs to see.

uwog If you're going implement Latex import for anyone you'd better give it to AbiWord first!

MS Word again

I got "Positioned Objects" imported from MS Word last night. The discussion with the Rick got me motivated to look into it. It was much easier than I thought it was going to be thanks to the ongoing efforts of the uber-cool wv hackers. These guys fixed bugs and implemented important new functionality missing from when I tried (and failed) to do this in September last year.

With this in place my wife will able to edit and read the flyers she needs for her MicroBusiness with AbiWord. I can finally get my wife off of OO.o (which she hates) and MS Word (which has brought her to tears in frustration).

Of course this means that next time AbiWord does something wrong it will be all my fault *sigh*.

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: ----------------------------------------------------------------------

26 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!