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.
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) »
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) »
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
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.
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:
----------------------------------------------------------------------
FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.
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!