summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Bauer <mba@openoffice.org>2009-09-25 21:47:16 +0200
committerMathias Bauer <mba@openoffice.org>2009-09-25 21:47:16 +0200
commit4de41d18fd2b96079b9a0aa9f1ef123e431fe938 (patch)
treecd19df126f82819bb8f82c7e1cdbcd07b449a29d
parent6152b5efa3490cc8f09f269dc7542ffe3833358c (diff)
parent728c8eb458b5613eb5b8bbe8201dfc33a8a9cd78 (diff)
merge commit
-rw-r--r--basebmp/test/makefile.mk6
-rw-r--r--basegfx/inc/basegfx/color/bcolortools.hxx76
-rw-r--r--basegfx/prj/d.lst1
-rw-r--r--basegfx/source/color/bcolortools.cxx272
-rw-r--r--basegfx/source/color/makefile.mk1
-rw-r--r--basegfx/test/basegfx2d.cxx175
-rw-r--r--basegfx/test/makefile.mk1
-rw-r--r--canvas/source/cairo/makefile.mk7
-rwxr-xr-xcanvas/source/directx/dx_winstuff.hxx25
-rw-r--r--canvas/source/factory/makefile.mk4
-rw-r--r--canvas/source/null/makefile.mk4
-rw-r--r--canvas/source/simplecanvas/makefile.mk3
-rw-r--r--canvas/source/tools/makefile.mk4
-rw-r--r--canvas/source/vcl/canvasfont.cxx15
-rw-r--r--canvas/source/vcl/textlayout.cxx100
-rw-r--r--comphelper/inc/comphelper/docpasswordhelper.hxx212
-rw-r--r--comphelper/inc/comphelper/docpasswordrequest.hxx91
-rw-r--r--comphelper/inc/comphelper/mediadescriptor.hxx2
-rw-r--r--comphelper/source/misc/docpasswordhelper.cxx152
-rw-r--r--comphelper/source/misc/docpasswordrequest.cxx153
-rw-r--r--comphelper/source/misc/makefile.mk2
-rw-r--r--comphelper/source/misc/mediadescriptor.cxx12
-rw-r--r--comphelper/source/misc/uieventslogger.cxx14
-rw-r--r--comphelper/source/property/genericpropertyset.cxx3
-rw-r--r--dtrans/prj/build.lst2
-rw-r--r--dtrans/prj/d.lst1
-rw-r--r--dtrans/source/X11/X11_service.cxx303
-rw-r--r--dtrans/source/X11/dtransX11.xml50
-rw-r--r--dtrans/source/X11/exports.map10
-rw-r--r--dtrans/source/aqua/dtransaqua.xml47
-rw-r--r--dtrans/source/aqua/service_entry.cxx210
-rw-r--r--dtrans/source/generic/makefile.mk3
-rw-r--r--dtrans/util/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/egif/makefile.mk7
-rw-r--r--goodies/source/filter.vcl/eos2met/makefile.mk8
-rw-r--r--goodies/source/filter.vcl/epbm/makefile.mk8
-rw-r--r--goodies/source/filter.vcl/epgm/makefile.mk8
-rw-r--r--goodies/source/filter.vcl/epict/makefile.mk8
-rw-r--r--goodies/source/filter.vcl/eppm/makefile.mk7
-rw-r--r--goodies/source/filter.vcl/eps/makefile.mk6
-rw-r--r--goodies/source/filter.vcl/eras/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/etiff/makefile.mk4
-rw-r--r--goodies/source/filter.vcl/expm/makefile.mk4
-rw-r--r--goodies/source/filter.vcl/icgm/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/idxf/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/ieps/makefile.mk4
-rw-r--r--goodies/source/filter.vcl/ios2met/makefile.mk4
-rw-r--r--goodies/source/filter.vcl/ipbm/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/ipcd/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/ipcx/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/ipict/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/ipsd/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/iras/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/itga/makefile.mk3
-rw-r--r--goodies/source/filter.vcl/itiff/makefile.mk3
-rw-r--r--goodies/source/inv/makefile.mk14
-rw-r--r--goodies/util/makefile.mk5
-rw-r--r--i18npool/inc/defaultnumberingprovider.hxx1
-rw-r--r--i18npool/inc/i18npool/lang.h2
-rw-r--r--i18npool/inc/i18npool/mslangid.hxx10
-rw-r--r--i18npool/inc/xdictionary.hxx4
-rw-r--r--i18npool/source/breakiterator/breakiteratorImpl.cxx22
-rw-r--r--i18npool/source/breakiterator/breakiterator_cjk.cxx4
-rw-r--r--i18npool/source/breakiterator/xdictionary.cxx77
-rw-r--r--i18npool/source/collator/makefile.mk2
-rw-r--r--i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx11
-rw-r--r--i18npool/source/isolang/inunx.cxx14
-rw-r--r--i18npool/source/isolang/isolang.cxx4
-rwxr-xr-xi18npool/source/isolang/langid.pl124
-rw-r--r--i18npool/source/isolang/mslangid.cxx57
-rw-r--r--i18npool/source/localedata/LocaleNode.cxx22
-rw-r--r--i18npool/source/localedata/data/ar_OM.xml357
-rw-r--r--i18npool/source/localedata/data/ast_ES.xml359
-rw-r--r--i18npool/source/localedata/data/az_AZ.xml7
-rw-r--r--i18npool/source/localedata/data/gl_ES.xml52
-rw-r--r--i18npool/source/localedata/data/locale.dtd6
-rw-r--r--i18npool/source/localedata/data/localedata_euro.map34
-rw-r--r--i18npool/source/localedata/data/localedata_others.map51
-rw-r--r--i18npool/source/localedata/data/makefile.mk8
-rw-r--r--i18npool/source/localedata/data/oc_FR.xml2
-rw-r--r--i18npool/source/localedata/data/om_ET.xml358
-rw-r--r--i18npool/source/localedata/data/ro_RO.xml764
-rw-r--r--i18npool/source/localedata/data/sc_IT.xml358
-rw-r--r--i18npool/source/localedata/data/so_SO.xml125
-rw-r--r--i18npool/source/localedata/data/ug_CN.xml364
-rw-r--r--i18npool/source/localedata/localedata.cxx6
-rw-r--r--i18npool/source/nativenumber/nativenumbersupplier.cxx3
-rw-r--r--i18npool/source/registerservices/registerservices.cxx2
-rw-r--r--o3tl/qa/makefile.mk7
-rw-r--r--padmin/source/adddlg.cxx34
-rw-r--r--padmin/source/adddlg.hxx2
-rw-r--r--padmin/source/makefile.mk3
-rw-r--r--padmin/source/newppdlg.cxx4
-rw-r--r--padmin/source/newppdlg.hxx5
-rw-r--r--rsc/source/parser/rscibas.cxx16
-rw-r--r--rsc/source/parser/rscicpx.cxx4
-rw-r--r--sax/source/expatwrap/sax_expat.cxx31
-rw-r--r--sax/source/expatwrap/saxwriter.cxx25
-rw-r--r--svtools/inc/dialogcontrolling.hxx38
-rw-r--r--svtools/inc/docmspasswdrequest.hxx72
-rw-r--r--svtools/inc/docpasswdrequest.hxx71
-rw-r--r--svtools/inc/eventcfg.hxx33
-rw-r--r--svtools/inc/sfxecode.hxx1
-rw-r--r--svtools/inc/svtools/embedhlp.hxx1
-rw-r--r--svtools/inc/svtools/loginerr.hxx156
-rw-r--r--svtools/inc/svtools/saveopt.hxx10
-rw-r--r--svtools/prj/d.lst2
-rw-r--r--svtools/source/brwbox/brwbox1.cxx2
-rw-r--r--svtools/source/config/eventcfg.cxx88
-rw-r--r--svtools/source/config/lingucfg.cxx54
-rw-r--r--svtools/source/config/saveopt.cxx13
-rw-r--r--svtools/source/control/roadmap.cxx19
-rw-r--r--svtools/source/control/valueacc.cxx36
-rw-r--r--svtools/source/control/valueimp.hxx13
-rw-r--r--svtools/source/control/valueset.cxx21
-rw-r--r--svtools/source/dialogs/addresstemplate.cxx25
-rw-r--r--svtools/source/dialogs/wizdlg.cxx5
-rw-r--r--svtools/source/filter.vcl/wmf/wmfwr.cxx11
-rw-r--r--svtools/source/inc/passwordcontainer.hxx28
-rw-r--r--svtools/source/misc/dialogcontrolling.cxx27
-rw-r--r--svtools/source/misc/embedhlp.cxx26
-rw-r--r--svtools/source/misc/errtxt.src4
-rw-r--r--svtools/source/misc/langtab.src8
-rw-r--r--svtools/source/misc1/docmspasswdrequest.cxx143
-rw-r--r--svtools/source/misc1/docpasswdrequest.cxx142
-rw-r--r--svtools/source/misc1/makefile.mk5
-rw-r--r--svtools/source/numbers/numfmuno.cxx2
-rw-r--r--svtools/source/numbers/zforscan.cxx13
-rw-r--r--svtools/source/passwordcontainer/makefile.mk3
-rw-r--r--svtools/source/passwordcontainer/passwordcontainer.cxx151
-rw-r--r--svtools/source/passwordcontainer/syscreds.cxx298
-rw-r--r--svtools/source/passwordcontainer/syscreds.hxx95
-rw-r--r--svtools/source/syslocale/syslocale.cxx22
-rw-r--r--svtools/source/uno/unoiface.cxx2
-rw-r--r--toolkit/inc/toolkit/helper/vclunohelper.hxx16
-rw-r--r--toolkit/source/awt/makefile.mk1
-rw-r--r--toolkit/source/awt/vclxmenu.cxx2
-rw-r--r--toolkit/source/awt/vclxwindow.cxx76
-rw-r--r--toolkit/source/controls/roadmapcontrol.cxx1
-rw-r--r--toolkit/source/helper/vclunohelper.cxx55
-rw-r--r--toolkit/util/makefile.mk16
-rw-r--r--tools/inc/tools/errcode.hxx1
-rw-r--r--tools/inc/tools/rc.h1
-rw-r--r--tools/source/fsys/urlobj.cxx7
-rw-r--r--transex3/prj/build.lst5
-rw-r--r--transex3/prj/d.lst19
-rw-r--r--transex3/source/filter/merge/FCFGMerge.cfg125
-rw-r--r--transex3/source/filter/merge/FCFGMerge.java131
-rw-r--r--transex3/source/filter/merge/Manifest.mf1
-rw-r--r--transex3/source/filter/merge/Merger.java364
-rw-r--r--transex3/source/filter/merge/makefile.mk96
-rw-r--r--transex3/source/filter/utils/AnalyzeStartupLog.java328
-rw-r--r--transex3/source/filter/utils/Cache.java2449
-rw-r--r--transex3/source/filter/utils/ConfigHelper.java303
-rw-r--r--transex3/source/filter/utils/FileHelper.java766
-rw-r--r--transex3/source/filter/utils/Logger.java177
-rw-r--r--transex3/source/filter/utils/MalformedCommandLineException.java (renamed from svtools/source/misc1/loginerr.cxx)35
-rw-r--r--transex3/source/filter/utils/XMLHelper.java825
-rw-r--r--transex3/source/filter/utils/makefile.mk57
-rw-r--r--transex3/source/help/HelpCompiler.cxx593
-rw-r--r--transex3/source/help/HelpCompiler.hxx320
-rw-r--r--transex3/source/help/HelpFileDocument.java89
-rw-r--r--transex3/source/help/HelpIndexerTool.java372
-rw-r--r--transex3/source/help/HelpLinker.cxx1161
-rw-r--r--transex3/source/help/MANIFEST.MF2
-rw-r--r--transex3/source/help/compilehelp.hxx80
-rw-r--r--transex3/source/help/helplinker.pmk35
-rw-r--r--transex3/source/help/makefile.mk139
-rw-r--r--ucbhelper/inc/ucbhelper/interactionrequest.hxx40
-rw-r--r--ucbhelper/inc/ucbhelper/simpleauthenticationrequest.hxx49
-rw-r--r--ucbhelper/source/provider/interactionrequest.cxx32
-rw-r--r--ucbhelper/source/provider/simpleauthenticationrequest.cxx125
-rw-r--r--vcl/aqua/inc/saldata.hxx5
-rw-r--r--vcl/aqua/inc/salframe.h86
-rw-r--r--vcl/aqua/inc/salinst.h6
-rwxr-xr-xvcl/aqua/inc/vclnsapp.h4
-rw-r--r--vcl/aqua/source/a11y/aqua11yfactory.mm13
-rw-r--r--vcl/aqua/source/a11y/aqua11ywrapper.mm13
-rw-r--r--vcl/aqua/source/app/makefile.mk2
-rw-r--r--vcl/aqua/source/app/salinst.cxx14
-rwxr-xr-xvcl/aqua/source/app/vclnsapp.mm96
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.cxx (renamed from dtrans/source/aqua/DataFlavorMapping.cxx)15
-rw-r--r--vcl/aqua/source/dtrans/DataFlavorMapping.hxx (renamed from dtrans/source/aqua/DataFlavorMapping.hxx)3
-rw-r--r--vcl/aqua/source/dtrans/DragActionConversion.cxx (renamed from dtrans/source/aqua/DragActionConversion.cxx)0
-rw-r--r--vcl/aqua/source/dtrans/DragActionConversion.hxx (renamed from dtrans/source/aqua/DragActionConversion.hxx)0
-rw-r--r--vcl/aqua/source/dtrans/DragSource.cxx (renamed from dtrans/source/aqua/DragSource.cxx)12
-rw-r--r--vcl/aqua/source/dtrans/DragSource.hxx (renamed from dtrans/source/aqua/DragSource.hxx)4
-rw-r--r--vcl/aqua/source/dtrans/DragSourceContext.cxx (renamed from dtrans/source/aqua/DragSourceContext.cxx)8
-rw-r--r--vcl/aqua/source/dtrans/DragSourceContext.hxx (renamed from dtrans/source/aqua/DragSourceContext.hxx)0
-rw-r--r--vcl/aqua/source/dtrans/DropTarget.cxx (renamed from dtrans/source/aqua/DropTarget.cxx)16
-rw-r--r--vcl/aqua/source/dtrans/DropTarget.hxx (renamed from dtrans/source/aqua/DropTarget.hxx)3
-rw-r--r--vcl/aqua/source/dtrans/HtmlFmtFlt.cxx (renamed from dtrans/source/aqua/HtmlFmtFlt.cxx)0
-rw-r--r--vcl/aqua/source/dtrans/HtmlFmtFlt.hxx (renamed from dtrans/source/aqua/HtmlFmtFlt.hxx)0
-rw-r--r--vcl/aqua/source/dtrans/OSXTransferable.cxx (renamed from dtrans/source/aqua/OSXTransferable.cxx)6
-rw-r--r--vcl/aqua/source/dtrans/OSXTransferable.hxx (renamed from dtrans/source/aqua/OSXTransferable.hxx)4
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.cxx (renamed from dtrans/source/aqua/PictToBmpFlt.cxx)0
-rw-r--r--vcl/aqua/source/dtrans/PictToBmpFlt.hxx (renamed from dtrans/source/aqua/PictToBmpFlt.hxx)0
-rw-r--r--vcl/aqua/source/dtrans/aqua_clipboard.cxx (renamed from dtrans/source/aqua/aqua_clipboard.cxx)20
-rw-r--r--vcl/aqua/source/dtrans/aqua_clipboard.hxx (renamed from dtrans/source/aqua/aqua_clipboard.hxx)4
-rw-r--r--vcl/aqua/source/dtrans/aqua_service.cxx (renamed from dtrans/source/aqua/aqua_service.cxx)2
-rw-r--r--vcl/aqua/source/dtrans/makefile.mk (renamed from dtrans/source/aqua/makefile.mk)38
-rw-r--r--vcl/aqua/source/dtrans/service_entry.cxx67
-rw-r--r--vcl/aqua/source/dtrans/test_aquacb.cxx (renamed from dtrans/source/aqua/test_aquacb.cxx)2
-rw-r--r--vcl/aqua/source/gdi/salbmp.cxx24
-rw-r--r--vcl/aqua/source/window/salframe.cxx23
-rwxr-xr-xvcl/aqua/source/window/salframeview.mm4
-rw-r--r--vcl/inc/vcl/floatwin.hxx2
-rw-r--r--vcl/inc/vcl/lazydelete.hxx4
-rw-r--r--vcl/inc/vcl/ppdparser.hxx2
-rw-r--r--vcl/inc/vcl/salframe.hxx2
-rw-r--r--vcl/inc/vcl/salinst.hxx8
-rw-r--r--vcl/inc/vcl/settings.hxx5
-rw-r--r--vcl/inc/vcl/vclevent.hxx1
-rw-r--r--vcl/inc/vcl/wintypes.hxx1
-rw-r--r--vcl/os2/source/window/salframe.cxx1
-rw-r--r--vcl/prj/build.lst7
-rw-r--r--vcl/prj/d.lst5
-rw-r--r--vcl/source/app/settings.cxx3
-rw-r--r--vcl/source/app/svapp.cxx4
-rw-r--r--vcl/source/components/dtranscomp.cxx556
-rw-r--r--vcl/source/components/factory.cxx52
-rw-r--r--vcl/source/components/makefile.mk1
-rw-r--r--vcl/source/control/button.cxx13
-rw-r--r--vcl/source/control/combobox.cxx15
-rw-r--r--vcl/source/control/field.cxx3
-rw-r--r--vcl/source/control/fixed.cxx14
-rw-r--r--vcl/source/control/ilstbox.cxx17
-rw-r--r--vcl/source/control/imgctrl.cxx8
-rw-r--r--vcl/source/control/lstbox.cxx3
-rw-r--r--vcl/source/fontsubset/cff.cxx474
-rw-r--r--vcl/source/fontsubset/fontsubset.cxx2
-rw-r--r--vcl/source/gdi/outdev3.cxx136
-rw-r--r--vcl/source/gdi/pdfwriter_impl.cxx11
-rw-r--r--vcl/source/gdi/wall.cxx2
-rw-r--r--vcl/source/glyphs/graphite_adaptors.cxx2
-rw-r--r--vcl/source/glyphs/graphite_cache.cxx2
-rw-r--r--vcl/source/glyphs/graphite_features.cxx2
-rw-r--r--vcl/source/glyphs/graphite_layout.cxx6
-rw-r--r--vcl/source/glyphs/graphite_serverfont.cxx2
-rw-r--r--vcl/source/helper/lazydelete.cxx3
-rw-r--r--vcl/source/window/brdwin.cxx2
-rw-r--r--vcl/source/window/dockmgr.cxx4
-rw-r--r--vcl/source/window/floatwin.cxx14
-rw-r--r--vcl/source/window/menu.cxx28
-rw-r--r--vcl/source/window/msgbox.cxx6
-rw-r--r--vcl/source/window/toolbox.cxx75
-rw-r--r--vcl/source/window/toolbox2.cxx4
-rw-r--r--vcl/source/window/window.cxx16
-rw-r--r--vcl/unx/gtk/a11y/atktext.cxx65
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.cxx13
-rw-r--r--vcl/unx/gtk/a11y/atktextattributes.hxx1
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.cxx2
-rw-r--r--vcl/unx/gtk/a11y/atkwrapper.hxx2
-rw-r--r--vcl/unx/gtk/app/gtkinst.cxx10
-rw-r--r--vcl/unx/gtk/gdi/salnativewidgets-gtk.cxx39
-rw-r--r--vcl/unx/gtk/window/gtkframe.cxx5
-rw-r--r--vcl/unx/inc/salinst.h5
-rw-r--r--vcl/unx/kde/kdedata.cxx10
-rw-r--r--vcl/unx/kde/salnativewidgets-kde.cxx8
-rw-r--r--vcl/unx/kde4/KDEData.cxx2
-rw-r--r--vcl/unx/kde4/KDESalFrame.cxx1
-rw-r--r--vcl/unx/kde4/KDESalGraphics.cxx129
-rw-r--r--vcl/unx/kde4/main.cxx10
-rw-r--r--vcl/unx/source/app/salinst.cxx10
-rw-r--r--vcl/unx/source/app/sm.cxx40
-rw-r--r--vcl/unx/source/desktopdetect/desktopdetector.cxx346
-rw-r--r--vcl/unx/source/desktopdetect/makefile.mk61
-rw-r--r--vcl/unx/source/dtrans/X11_clipboard.cxx (renamed from dtrans/source/X11/X11_clipboard.cxx)2
-rw-r--r--vcl/unx/source/dtrans/X11_clipboard.hxx (renamed from dtrans/source/X11/X11_clipboard.hxx)0
-rw-r--r--vcl/unx/source/dtrans/X11_dndcontext.cxx (renamed from dtrans/source/X11/X11_dndcontext.cxx)2
-rw-r--r--vcl/unx/source/dtrans/X11_dndcontext.hxx (renamed from dtrans/source/X11/X11_dndcontext.hxx)0
-rw-r--r--vcl/unx/source/dtrans/X11_droptarget.cxx (renamed from dtrans/source/X11/X11_droptarget.cxx)2
-rw-r--r--vcl/unx/source/dtrans/X11_selection.cxx (renamed from dtrans/source/X11/X11_selection.cxx)40
-rw-r--r--vcl/unx/source/dtrans/X11_selection.hxx (renamed from dtrans/source/X11/X11_selection.hxx)0
-rw-r--r--vcl/unx/source/dtrans/X11_service.cxx138
-rw-r--r--vcl/unx/source/dtrans/X11_transferable.cxx (renamed from dtrans/source/X11/X11_transferable.cxx)2
-rw-r--r--vcl/unx/source/dtrans/X11_transferable.hxx (renamed from dtrans/source/X11/X11_transferable.hxx)0
-rw-r--r--vcl/unx/source/dtrans/bmp.cxx (renamed from dtrans/source/X11/bmp.cxx)2
-rw-r--r--vcl/unx/source/dtrans/bmp.hxx (renamed from dtrans/source/X11/bmp.hxx)0
-rw-r--r--vcl/unx/source/dtrans/config.cxx (renamed from dtrans/source/X11/config.cxx)2
-rw-r--r--vcl/unx/source/dtrans/copydata_curs.h (renamed from dtrans/source/X11/copydata_curs.h)0
-rw-r--r--vcl/unx/source/dtrans/copydata_mask.h (renamed from dtrans/source/X11/copydata_mask.h)0
-rw-r--r--vcl/unx/source/dtrans/linkdata_curs.h (renamed from dtrans/source/X11/linkdata_curs.h)0
-rw-r--r--vcl/unx/source/dtrans/linkdata_mask.h (renamed from dtrans/source/X11/linkdata_mask.h)0
-rw-r--r--vcl/unx/source/dtrans/makefile.mk (renamed from dtrans/source/X11/makefile.mk)28
-rw-r--r--vcl/unx/source/dtrans/movedata_curs.h (renamed from dtrans/source/X11/movedata_curs.h)0
-rw-r--r--vcl/unx/source/dtrans/movedata_mask.h (renamed from dtrans/source/X11/movedata_mask.h)0
-rw-r--r--vcl/unx/source/dtrans/nodrop_curs.h (renamed from dtrans/source/X11/nodrop_curs.h)0
-rw-r--r--vcl/unx/source/dtrans/nodrop_mask.h (renamed from dtrans/source/X11/nodrop_mask.h)0
-rw-r--r--vcl/unx/source/gdi/cdeint.cxx1
-rw-r--r--vcl/unx/source/gdi/salgdi.cxx83
-rw-r--r--vcl/unx/source/plugadapt/salplug.cxx328
-rw-r--r--vcl/unx/source/printer/ppdparser.cxx8
-rw-r--r--vcl/unx/source/window/salframe.cxx7
-rw-r--r--vcl/util/makefile.mk29
-rw-r--r--vcl/util/makefile2.pmk1
-rwxr-xr-xvcl/win/source/gdi/winlayout.cxx2
-rw-r--r--vcl/win/source/window/salframe.cxx5
-rw-r--r--vcl/workben/makefile.mk3
299 files changed, 16118 insertions, 3297 deletions
diff --git a/basebmp/test/makefile.mk b/basebmp/test/makefile.mk
index 4e3384b935a6..f7a5dded4cf1 100644
--- a/basebmp/test/makefile.mk
+++ b/basebmp/test/makefile.mk
@@ -65,6 +65,7 @@ CDEFS+=-xalias_level=compatible
.ENDIF
# --- Common ----------------------------------------------------------
+.IF "$(L10N_framework)"==""
# BEGIN ----------------------------------------------------------------
# auto generated Target:tests by codegen.pl
@@ -85,7 +86,6 @@ SHL1OBJS= \
# here, because not yet delivered. Need the functionality to test, so
# we're linking it in statically. Need to keep this in sync with
# source/makefile.mk
-
SHL1TARGET= tests
SHL1STDLIBS= $(SALLIB) \
$(TESTSHL2LIB)\
@@ -96,7 +96,7 @@ SHL1IMPLIB= i$(SHL1TARGET)
DEF1NAME =$(SHL1TARGET)
SHL1VERSIONMAP = export.map
-
+.ENDIF
# END ------------------------------------------------------------------
#APP2TARGET= bmpdemo
@@ -128,6 +128,7 @@ SLOFILES=$(SHL1OBJS)
.INCLUDE : _cppunit.mk
# --- Enable test execution in normal build ------------------------
+.IF "$(L10N_framework)"==""
unittest : $(SHL1TARGETN)
@echo ----------------------------------------------------------
@@ -136,3 +137,4 @@ unittest : $(SHL1TARGETN)
$(TESTSHL2) -sf $(mktmp ) $(SHL1TARGETN)
ALLTAR : unittest
+.ENDIF
diff --git a/basegfx/inc/basegfx/color/bcolortools.hxx b/basegfx/inc/basegfx/color/bcolortools.hxx
new file mode 100644
index 000000000000..b4906727d08b
--- /dev/null
+++ b/basegfx/inc/basegfx/color/bcolortools.hxx
@@ -0,0 +1,76 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: bcolor.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _BGFX_COLOR_BCOLORTOOLS_HXX
+#define _BGFX_COLOR_BCOLORTOOLS_HXX
+
+#include <sal/types.h>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx
+{
+ class BColor;
+
+ namespace tools
+ {
+ /// Transform from RGB to HSL
+ BColor rgb2hsl(const BColor& rRGBColor);
+ /// Transform from HSL to RGB
+ BColor hsl2rgb(const BColor& rHSLColor);
+
+ /// Transform from RGB to HSV
+ BColor rgb2hsv(const BColor& rRGBColor);
+ /// Transform from HSV to RGB
+ BColor hsv2rgb(const BColor& rHSVColor);
+
+ /// Transform from R'G'B' to YIQ (NTSC color model - Y is used in monochrome mode)
+ BColor rgb2yiq(const BColor& rRGBColor);
+ /// Transform from YIQ to R'G'B' (NTSC color model - Y is used in monochrome mode)
+ BColor yiq2rgb(const BColor& rYIQColor);
+
+ /// Transform from R'G'B' to Y'PbPr (the [0,1]x[-.5,.5]x[-.5,.5] equivalent of Y'CbCr (which is scaled into 8bit))
+ BColor rgb2ypbpr(const BColor& rRGBColor);
+ /// Transform from Y'PbPr (the [0,1]x[-.5,.5]x[-.5,.5] equivalent of Y'CbCr (which is scaled into 8bit)) into R'G'B'
+ BColor ypbpr2rgb(const BColor& rYPbPrColor);
+
+ /// Transform from CIE XYZ into Rec. 709 RGB (D65 white point)
+ BColor ciexyz2rgb( const BColor& rXYZColor );
+ /// Transform from Rec. 709 RGB (D65 white point) into CIE XYZ
+ BColor rgb2ciexyz( const BColor& rRGBColor );
+
+ }
+} // end of namespace basegfx
+
+#endif /* _BGFX_COLOR_BCOLORTOOLS_HXX */
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/basegfx/prj/d.lst b/basegfx/prj/d.lst
index 9dd6085bbc7f..a58cd33e4f9c 100644
--- a/basegfx/prj/d.lst
+++ b/basegfx/prj/d.lst
@@ -96,6 +96,7 @@ mkdir: %_DEST%\inc%_EXT%\basegfx\tools
mkdir: %_DEST%\inc%_EXT%\basegfx\color
..\inc\basegfx\color\bcolor.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolor.hxx
+..\inc\basegfx\color\bcolortools.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolortools.hxx
..\inc\basegfx\color\bcolormodifier.hxx %_DEST%\inc%_EXT%\basegfx\color\bcolormodifier.hxx
mkdir: %_DEST%\inc%_EXT%\basegfx\pixel
diff --git a/basegfx/source/color/bcolortools.cxx b/basegfx/source/color/bcolortools.cxx
new file mode 100644
index 000000000000..1c7d2b222fff
--- /dev/null
+++ b/basegfx/source/color/bcolortools.cxx
@@ -0,0 +1,272 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: bcolor.cxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_basegfx.hxx"
+
+#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/color/bcolortools.hxx>
+
+//////////////////////////////////////////////////////////////////////////////
+
+namespace basegfx { namespace tools
+{
+ BColor rgb2hsl(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ const double minVal = ::std::min( ::std::min( r, g ), b );
+ const double maxVal = ::std::max( ::std::max( r, g ), b );
+ const double d = maxVal - minVal;
+
+ double h=0, s=0, l=0;
+
+ l = (maxVal + minVal) / 2.0;
+
+ if( ::basegfx::fTools::equalZero(d) )
+ {
+ s = h = 0; // hue undefined (achromatic case)
+ }
+ else
+ {
+ s = l > 0.5 ? d/(2.0-maxVal-minVal) :
+ d/(maxVal + minVal);
+
+ if( r == maxVal )
+ h = (g - b)/d;
+ else if( g == maxVal )
+ h = 2.0 + (b - r)/d;
+ else
+ h = 4.0 + (r - h)/d;
+
+ h *= 60.0;
+
+ if( h < 0.0 )
+ h += 360.0;
+ }
+
+ return BColor(h,s,l);
+ }
+
+ static inline double hsl2rgbHelper( double nValue1, double nValue2, double nHue )
+ {
+ // clamp hue to [0,360]
+ nHue = fmod( nHue, 360.0 );
+
+ // cope with wrap-arounds
+ if( nHue < 0.0 )
+ nHue += 360.0;
+
+ if( nHue < 60.0 )
+ return nValue1 + (nValue2 - nValue1)*nHue/60.0;
+ else if( nHue < 180.0 )
+ return nValue2;
+ else if( nHue < 240.0 )
+ return nValue1 + (nValue2 - nValue1)*(240.0 - nHue)/60.0;
+ else
+ return nValue1;
+ }
+
+ BColor hsl2rgb(const BColor& rHSLColor)
+ {
+ const double h=rHSLColor.getRed(), s=rHSLColor.getGreen(), l=rHSLColor.getBlue();
+
+ if( fTools::equalZero(s) )
+ return BColor(l, l, l ); // achromatic case
+
+ const double nVal1( l <= 0.5 ? l*(1.0 + s) : l + s - l*s );
+ const double nVal2( 2.0*l - nVal1 );
+
+ return BColor(
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h + 120.0),
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h),
+ hsl2rgbHelper(nVal2,
+ nVal1,
+ h - 120.0) );
+ }
+
+ BColor rgb2hsv(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ const double maxVal = std::max(std::max(r,g),b);
+ const double minVal = std::min(std::min(r,g),b);
+ const double delta = maxVal-minVal;
+
+ double h=0, s=0, v=0;
+
+ v = maxVal;
+ if( fTools::equalZero(v) )
+ s = 0;
+ else
+ s = delta / v;
+
+ if( !fTools::equalZero(s) )
+ {
+ if( maxVal == r )
+ {
+ h = (g - b) / delta;
+ }
+ else if( maxVal == g )
+ {
+ h = 2.0 + (b - r) / delta;
+ }
+ else
+ {
+ h = 4.0 + (r - g) / delta;
+ }
+
+ h *= 60.0;
+
+ if( h < 0 )
+ h += 360;
+ }
+
+ return BColor(h,s,v);
+ }
+
+ BColor hsv2rgb(const BColor& rHSVColor)
+ {
+ double h=rHSVColor.getRed();
+ const double s=rHSVColor.getGreen(), v=rHSVColor.getBlue();
+
+ if( fTools::equalZero(s) )
+ {
+ // achromatic case: no hue.
+ return BColor(v,v,v);
+ }
+ else
+ {
+ if( fTools::equal(h,360) )
+ h = 0; // 360 degrees is equivalent to 0 degrees
+
+ h /= 60.0;
+ const sal_Int32 intval = static_cast< sal_Int32 >( h );
+ const double f = h - intval;
+ const double p = v*(1.0-s);
+ const double q = v*(1.0-(s*f));
+ const double t = v*(1.0-(s*(1.0-f)));
+
+ /* which hue area? */
+ switch( intval )
+ {
+ case 0:
+ return BColor(v,t,p);
+
+ case 1:
+ return BColor(q,v,p);
+
+ case 2:
+ return BColor(p,v,t);
+
+ case 3:
+ return BColor(p,q,v);
+
+ case 4:
+ return BColor(t,p,v);
+
+ case 5:
+ return BColor(v,p,q);
+
+ default:
+ // hue overflow
+ return BColor();
+ }
+ }
+ }
+
+ BColor rgb2yiq(const BColor& rRGBColor)
+ {
+ // from Foley, van Dam, Computer Graphics
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.299*r + 0.587*g + 0.114*b,
+ 0.596*r - 0.274*g - 0.322*b,
+ 0.211*r - 0.522*g + 0.311*b);
+ }
+
+ BColor yiq2rgb(const BColor& rYIQColor)
+ {
+ // from Foley, van Dam, Computer Graphics
+ const double y=rYIQColor.getRed(), i=rYIQColor.getGreen(), q=rYIQColor.getBlue();
+ return BColor(
+ y + 0.956*i + 0.623*q,
+ y - 0.272*i - 0.648*q,
+ y - 1.105*i + 1.705*q );
+ }
+
+ BColor ciexyz2rgb( const BColor& rXYZColor )
+ {
+ // from Poynton color faq, and SMPTE RP 177-1993, Derivation
+ // of Basic Television Color Equations
+ const double x=rXYZColor.getRed(), y=rXYZColor.getGreen(), z=rXYZColor.getBlue();
+ return BColor(
+ 3.240479*x - 1.53715*y - 0.498535*z,
+ -0.969256*x + 1.875991*y + 0.041556*z,
+ 0.055648*x - 0.204043*y + 1.057311*z );
+ }
+
+ BColor rgb2ciexyz( const BColor& rRGBColor )
+ {
+ // from Poynton color faq, and SMPTE RP 177-1993, Derivation
+ // of Basic Television Color Equations
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.412453*r + 0.35758*g + 0.180423*b,
+ 0.212671*r + 0.71516*g + 0.072169*b,
+ 0.019334*r + 0.119193*g + 0.950227*b);
+ }
+
+ BColor rgb2ypbpr(const BColor& rRGBColor)
+ {
+ const double r=rRGBColor.getRed(), g=rRGBColor.getGreen(), b=rRGBColor.getBlue();
+ return BColor(
+ 0.299*r + 0.587*g + 0.114*b,
+ -0.168736*r - 0.331264*g + 0.5*b,
+ 0.5*r - 0.418688*g - 0.081312*b);
+ }
+
+ BColor ypbpr2rgb(const BColor& rYPbPrColor)
+ {
+ const double y=rYPbPrColor.getRed(), pb=rYPbPrColor.getGreen(), pr=rYPbPrColor.getBlue();
+ return BColor(
+ 1.*y + 0.*pb + 1.402*pr,
+ 1.*y - 0.344136*pb - 0.714136*pr,
+ 1.*y + 1.772*pb + 0.*pr);
+ }
+
+} } // end of namespace basegfx
+
+//////////////////////////////////////////////////////////////////////////////
+// eof
diff --git a/basegfx/source/color/makefile.mk b/basegfx/source/color/makefile.mk
index 9fd79701d65a..77b91a82f3ac 100644
--- a/basegfx/source/color/makefile.mk
+++ b/basegfx/source/color/makefile.mk
@@ -45,6 +45,7 @@ TARGET=color
SLOFILES= \
$(SLO)$/bcolor.obj \
+ $(SLO)$/bcolortools.obj \
$(SLO)$/bcolormodifier.obj
# --- Targets ----------------------------------
diff --git a/basegfx/test/basegfx2d.cxx b/basegfx/test/basegfx2d.cxx
index 8f3e340729a2..ab6715467dba 100644
--- a/basegfx/test/basegfx2d.cxx
+++ b/basegfx/test/basegfx2d.cxx
@@ -43,6 +43,8 @@
#include <basegfx/polygon/b2dpolypolygontools.hxx>
#include <basegfx/range/b2dmultirange.hxx>
#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/color/bcolor.hxx>
+#include <basegfx/color/bcolortools.hxx>
#include <basegfx/tools/debugplotter.hxx>
@@ -1443,6 +1445,178 @@ public:
CPPUNIT_TEST_SUITE_END();
}; // class b2dvector
+class bcolor : public CppUnit::TestFixture
+{
+ BColor maWhite;
+ BColor maBlack;
+ BColor maRed;
+ BColor maGreen;
+ BColor maBlue;
+ BColor maYellow;
+ BColor maMagenta;
+ BColor maCyan;
+
+public:
+ bcolor() :
+ maWhite(1,1,1),
+ maBlack(0,0,0),
+ maRed(1,0,0),
+ maGreen(0,1,0),
+ maBlue(0,0,1),
+ maYellow(1,1,0),
+ maMagenta(1,0,1),
+ maCyan(0,1,1)
+ {}
+
+
+ // initialise your test code values here.
+ void setUp()
+ {
+ }
+
+ void tearDown()
+ {
+ }
+
+ // insert your test code here.
+ void hslTest()
+ {
+ CPPUNIT_ASSERT_MESSAGE("white",
+ tools::rgb2hsl(maWhite) == BColor(0,0,1));
+ CPPUNIT_ASSERT_MESSAGE("black",
+ tools::rgb2hsl(maBlack) == BColor(0,0,0));
+ CPPUNIT_ASSERT_MESSAGE("red",
+ tools::rgb2hsl(maRed) == BColor(0,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("green",
+ tools::rgb2hsl(maGreen) == BColor(120,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("blue",
+ tools::rgb2hsl(maBlue) == BColor(240,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("yellow",
+ tools::rgb2hsl(maYellow) == BColor(60,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("magenta",
+ tools::rgb2hsl(maMagenta) == BColor(300,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("cyan",
+ tools::rgb2hsl(maCyan) == BColor(180,1,0.5));
+
+ CPPUNIT_ASSERT_MESSAGE("roundtrip white",
+ tools::hsl2rgb(tools::rgb2hsl(maWhite)) == maWhite);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip black",
+ tools::hsl2rgb(tools::rgb2hsl(maBlack)) == maBlack);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip red",
+ tools::hsl2rgb(tools::rgb2hsl(maRed)) == maRed);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip green",
+ tools::hsl2rgb(tools::rgb2hsl(maGreen)) == maGreen);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip blue",
+ tools::hsl2rgb(tools::rgb2hsl(maBlue)) == maBlue);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip yellow",
+ tools::hsl2rgb(tools::rgb2hsl(maYellow)) == maYellow);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip magenta",
+ tools::hsl2rgb(tools::rgb2hsl(maMagenta)) == maMagenta);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip cyan",
+ tools::hsl2rgb(tools::rgb2hsl(maCyan)) == maCyan);
+
+ CPPUNIT_ASSERT_MESSAGE("grey10",
+ tools::rgb2hsl(maWhite*.1) == BColor(0,0,.1));
+ CPPUNIT_ASSERT_MESSAGE("grey90",
+ tools::rgb2hsl(maWhite*.9) == BColor(0,0,.9));
+ CPPUNIT_ASSERT_MESSAGE("red/2",
+ tools::rgb2hsl(maRed*.5) == BColor(0,1,0.25));
+ CPPUNIT_ASSERT_MESSAGE("green/2",
+ tools::rgb2hsl(maGreen*.5) == BColor(120,1,0.25));
+ CPPUNIT_ASSERT_MESSAGE("blue/2",
+ tools::rgb2hsl(maBlue*.5) == BColor(240,1,0.25));
+ CPPUNIT_ASSERT_MESSAGE("yellow/2",
+ tools::rgb2hsl(maYellow*.5) == BColor(60,1,0.25));
+ CPPUNIT_ASSERT_MESSAGE("magenta/2",
+ tools::rgb2hsl(maMagenta*.5) == BColor(300,1,0.25));
+ CPPUNIT_ASSERT_MESSAGE("cyan/2",
+ tools::rgb2hsl(maCyan*.5) == BColor(180,1,0.25));
+
+ CPPUNIT_ASSERT_MESSAGE("pastel",
+ tools::rgb2hsl(BColor(.75,.25,.25)) == BColor(0,.5,.5));
+ }
+
+ // insert your test code here.
+ void hsvTest()
+ {
+ CPPUNIT_ASSERT_MESSAGE("white",
+ tools::rgb2hsv(maWhite) == BColor(0,0,1));
+ CPPUNIT_ASSERT_MESSAGE("black",
+ tools::rgb2hsv(maBlack) == BColor(0,0,0));
+ CPPUNIT_ASSERT_MESSAGE("red",
+ tools::rgb2hsv(maRed) == BColor(0,1,1));
+ CPPUNIT_ASSERT_MESSAGE("green",
+ tools::rgb2hsv(maGreen) == BColor(120,1,1));
+ CPPUNIT_ASSERT_MESSAGE("blue",
+ tools::rgb2hsv(maBlue) == BColor(240,1,1));
+ CPPUNIT_ASSERT_MESSAGE("yellow",
+ tools::rgb2hsv(maYellow) == BColor(60,1,1));
+ CPPUNIT_ASSERT_MESSAGE("magenta",
+ tools::rgb2hsv(maMagenta) == BColor(300,1,1));
+ CPPUNIT_ASSERT_MESSAGE("cyan",
+ tools::rgb2hsv(maCyan) == BColor(180,1,1));
+
+ CPPUNIT_ASSERT_MESSAGE("roundtrip white",
+ tools::hsv2rgb(tools::rgb2hsv(maWhite)) == maWhite);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip black",
+ tools::hsv2rgb(tools::rgb2hsv(maBlack)) == maBlack);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip red",
+ tools::hsv2rgb(tools::rgb2hsv(maRed)) == maRed);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip green",
+ tools::hsv2rgb(tools::rgb2hsv(maGreen)) == maGreen);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip blue",
+ tools::hsv2rgb(tools::rgb2hsv(maBlue)) == maBlue);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip yellow",
+ tools::hsv2rgb(tools::rgb2hsv(maYellow)) == maYellow);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip magenta",
+ tools::hsv2rgb(tools::rgb2hsv(maMagenta)) == maMagenta);
+ CPPUNIT_ASSERT_MESSAGE("roundtrip cyan",
+ tools::hsv2rgb(tools::rgb2hsv(maCyan)) == maCyan);
+
+ CPPUNIT_ASSERT_MESSAGE("grey10",
+ tools::rgb2hsv(maWhite*.1) == BColor(0,0,.1));
+ CPPUNIT_ASSERT_MESSAGE("grey90",
+ tools::rgb2hsv(maWhite*.9) == BColor(0,0,.9));
+ CPPUNIT_ASSERT_MESSAGE("red/2",
+ tools::rgb2hsv(maRed*.5) == BColor(0,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("green/2",
+ tools::rgb2hsv(maGreen*.5) == BColor(120,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("blue/2",
+ tools::rgb2hsv(maBlue*.5) == BColor(240,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("yellow/2",
+ tools::rgb2hsv(maYellow*.5) == BColor(60,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("magenta/2",
+ tools::rgb2hsv(maMagenta*.5) == BColor(300,1,0.5));
+ CPPUNIT_ASSERT_MESSAGE("cyan/2",
+ tools::rgb2hsv(maCyan*.5) == BColor(180,1,0.5));
+
+ CPPUNIT_ASSERT_MESSAGE("pastel",
+ tools::rgb2hsv(BColor(.5,.25,.25)) == BColor(0,.5,.5));
+ }
+
+ void ciexyzTest()
+ {
+ tools::rgb2ciexyz(maWhite);
+ tools::rgb2ciexyz(maBlack);
+ tools::rgb2ciexyz(maRed);
+ tools::rgb2ciexyz(maGreen);
+ tools::rgb2ciexyz(maBlue);
+ tools::rgb2ciexyz(maYellow);
+ tools::rgb2ciexyz(maMagenta);
+ tools::rgb2ciexyz(maCyan);
+ }
+
+ // Change the following lines only, if you add, remove or rename
+ // member functions of the current class,
+ // because these macros are need by auto register mechanism.
+
+ CPPUNIT_TEST_SUITE(bcolor);
+ CPPUNIT_TEST(hslTest);
+ CPPUNIT_TEST(hsvTest);
+ CPPUNIT_TEST(ciexyzTest);
+ CPPUNIT_TEST_SUITE_END();
+}; // class b2dvector
+
// -----------------------------------------------------------------------------
//CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2dmultirange, "basegfx2d");
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2dsvgdimpex, "basegfx2d");
@@ -1458,6 +1632,7 @@ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2dquadraticbezier, "basegfx2d"
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2drange, "basegfx2d");
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2dtuple, "basegfx2d");
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::b2dvector, "basegfx2d");
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(basegfx2d::bcolor, "basegfx2d");
} // namespace basegfx2d
diff --git a/basegfx/test/makefile.mk b/basegfx/test/makefile.mk
index d21093f4e08a..da61c60f9308 100644
--- a/basegfx/test/makefile.mk
+++ b/basegfx/test/makefile.mk
@@ -58,6 +58,7 @@ SHL1LIBS=\
$(SLB)$/range.lib \
$(SLB)$/tuple.lib \
$(SLB)$/tools.lib \
+ $(SLB)$/color.lib \
$(SLB)$/vector.lib
SHL1TARGET= basegfx_tests
diff --git a/canvas/source/cairo/makefile.mk b/canvas/source/cairo/makefile.mk
index 2ab726da3464..27a1aeb6dcd7 100644
--- a/canvas/source/cairo/makefile.mk
+++ b/canvas/source/cairo/makefile.mk
@@ -49,7 +49,7 @@ DLLPRE =
# --- X11 Mac build currently doesn't work with cairo -----------
.IF "$(OS)" == "MACOSX" && "$(GUIBASE)" == "unx"
@all:
- @echo "Cannot build cairocanvas with X11..."
+ @echo "Cannot build cairocanvas with X11..."
.ENDIF
.ENDIF
@@ -65,7 +65,7 @@ CFLAGS+=-I$(SOLARINCDIR)/cairo
.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
CDEFS+= -DVERBOSE
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/cairo_cachedbitmap.obj \
$(SLO)$/cairo_cairo.obj \
$(SLO)$/cairo_canvas.obj \
@@ -97,7 +97,6 @@ SHL1STDLIBS+= -lcairo
.IF "$(GUIBASE)"=="aqua"
# native Mac OS X (Quartz)
SLOFILES+= $(SLO)$/cairo_quartz_cairo.obj
-OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions
CFLAGSCXX+=$(OBJCXXFLAGS)
.ELSE # "$(GUIBASE)"=="aqua"
@@ -131,7 +130,7 @@ SHL1VERSIONMAP=exports.map
DEF1NAME=$(SHL1TARGET)
DEF1EXPORTFILE=exports.dxp
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/canvas/source/directx/dx_winstuff.hxx b/canvas/source/directx/dx_winstuff.hxx
index e5e7e4ffb4ae..1c64506c0f21 100755
--- a/canvas/source/directx/dx_winstuff.hxx
+++ b/canvas/source/directx/dx_winstuff.hxx
@@ -97,25 +97,18 @@
#undef DrawText
-// Needed for #?$&/@ gdiplus header
-#ifndef max
-#define max(a,b) (((a) > (b)) ? (a) : (b))
-#define __WORKAROUND_MAX_DEFINED__
-#endif
-
-#ifndef min
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-#define __WORKAROUND_MIN_DEFINED__
-#endif
-
+#ifdef __MINGW32__
+using ::std::max;
+using ::std::min;
+#endif
+
#include <gdiplus.h>
-#ifdef __WORKAROUND_MAX_DEFINED__
-#undef max
+#ifdef min
+# undef min
#endif
-
-#ifdef __WORKAROUND_MIN_DEFINED__
-#undef min
+#ifdef max
+# undef max
#endif
namespace dxcanvas
diff --git a/canvas/source/factory/makefile.mk b/canvas/source/factory/makefile.mk
index 3e9611412463..1051b953ae81 100644
--- a/canvas/source/factory/makefile.mk
+++ b/canvas/source/factory/makefile.mk
@@ -37,7 +37,7 @@ ENABLE_EXCEPTIONS = TRUE
.INCLUDE : settings.mk
DLLPRE =
-
+.IF "$(L10N_framework)"==""
SLOFILES = \
$(SLO)$/cf_service.obj
@@ -55,6 +55,6 @@ SHL1LIBS = $(SLB)$/$(TARGET).lib
SHL1DEF = $(MISC)$/$(SHL1TARGET).def
DEF1NAME = $(SHL1TARGET)
-
+.ENDIF
.INCLUDE : target.mk
diff --git a/canvas/source/null/makefile.mk b/canvas/source/null/makefile.mk
index 76e372c56fd7..99a6bbab93a4 100644
--- a/canvas/source/null/makefile.mk
+++ b/canvas/source/null/makefile.mk
@@ -45,7 +45,7 @@ DLLPRE =
.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
CDEFS+= -DVERBOSE
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/null_canvasbitmap.obj \
$(SLO)$/null_canvascustomsprite.obj \
$(SLO)$/null_canvasfont.obj \
@@ -68,7 +68,7 @@ SHL1VERSIONMAP=exports.map
DEF1NAME=$(SHL1TARGET)
DEF1EXPORTFILE=exports.dxp
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/canvas/source/simplecanvas/makefile.mk b/canvas/source/simplecanvas/makefile.mk
index 6417ddb0c650..c0a60250ab85 100644
--- a/canvas/source/simplecanvas/makefile.mk
+++ b/canvas/source/simplecanvas/makefile.mk
@@ -45,7 +45,7 @@ DLLPRE =
.IF "$(verbose)"!="" || "$(VERBOSE)"!=""
CDEFS+= -DVERBOSE
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/simplecanvasimpl.obj
SHL1TARGET=$(TARGET).uno
@@ -60,6 +60,7 @@ SHL1VERSIONMAP=exports.map
DEF1NAME=$(SHL1TARGET)
DEF1EXPORTFILE=exports.dxp
+.ENDIF
# ==========================================================================
diff --git a/canvas/source/tools/makefile.mk b/canvas/source/tools/makefile.mk
index bf99a00febfc..9dc9967fac82 100644
--- a/canvas/source/tools/makefile.mk
+++ b/canvas/source/tools/makefile.mk
@@ -51,7 +51,7 @@ CDEFS+= -DPROFILER
#CFLAGS +:= /Ox /Ot # THIS IS IMPORTANT
-
+.IF "$(L10N_framework)"==""
SLOFILES = \
$(SLO)$/cachedprimitivebase.obj \
$(SLO)$/canvascustomspritehelper.obj \
@@ -95,7 +95,7 @@ DEFLIB1NAME =$(TARGET)
.IF "$(GUI)" == "WNT"
SHL1STDLIBS += $(WINMMLIB) $(KERNEL32LIB)
.ENDIF
-
+.ENDIF
# ==========================================================================
diff --git a/canvas/source/vcl/canvasfont.cxx b/canvas/source/vcl/canvasfont.cxx
index b049e1e4f317..d5b276901594 100644
--- a/canvas/source/vcl/canvasfont.cxx
+++ b/canvas/source/vcl/canvasfont.cxx
@@ -127,8 +127,19 @@ namespace vclcanvas
{
tools::LocalGuard aGuard;
- // TODO(F1)
- return rendering::FontMetrics();
+ OutputDevice& rOutDev = mpOutDevProvider->getOutDev();
+ VirtualDevice aVDev( rOutDev );
+ aVDev.SetFont(getVCLFont());
+ const ::FontMetric& aMetric( aVDev.GetFontMetric() );
+
+ return rendering::FontMetrics(
+ aMetric.GetAscent(),
+ aMetric.GetDescent(),
+ aMetric.GetIntLeading(),
+ aMetric.GetExtLeading(),
+ 0,
+ aMetric.GetDescent() / 2.0,
+ aMetric.GetAscent() / 2.0);
}
uno::Sequence< double > SAL_CALL CanvasFont::getAvailableSizes( ) throw (uno::RuntimeException)
diff --git a/canvas/source/vcl/textlayout.cxx b/canvas/source/vcl/textlayout.cxx
index f9fa6f6dc4d2..5787f32cf4bf 100644
--- a/canvas/source/vcl/textlayout.cxx
+++ b/canvas/source/vcl/textlayout.cxx
@@ -35,6 +35,7 @@
#include <tools/diagnose_ex.h>
#include <canvas/canvastools.hxx>
+#include <com/sun/star/rendering/CompositeOperation.hpp>
#include <com/sun/star/rendering/TextDirection.hpp>
#include <vcl/metric.hxx>
@@ -42,6 +43,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/numeric/ftools.hxx>
+#include <basegfx/tools/canvastools.hxx>
#include "impltools.hxx"
#include "textlayout.hxx"
@@ -116,16 +118,104 @@ namespace vclcanvas
{
tools::LocalGuard aGuard;
- // TODO(F1)
- return uno::Sequence< uno::Reference< rendering::XPolyPolygon2D > >();
+ OutputDevice& rOutDev = mpOutDevProvider->getOutDev();
+ VirtualDevice aVDev( rOutDev );
+ aVDev.SetFont( mpFont->getVCLFont() );
+
+ setupLayoutMode( aVDev, mnTextDirection );
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0,0,1,0),
+ NULL,
+ uno::Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ ::boost::scoped_array< sal_Int32 > aOffsets(new sal_Int32[maLogicalAdvancements.getLength()]);
+ setupTextOffsets(aOffsets.get(), maLogicalAdvancements, aViewState, aRenderState);
+
+ uno::Sequence< uno::Reference< rendering::XPolyPolygon2D> > aOutlineSequence;
+ ::basegfx::B2DPolyPolygonVector aOutlines;
+ if (aVDev.GetTextOutlines(
+ aOutlines,
+ maText.Text,
+ ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition),
+ ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition),
+ ::canvas::tools::numeric_cast<USHORT>(maText.Length),
+ FALSE,
+ 0,
+ aOffsets.get()))
+ {
+ aOutlineSequence.realloc(aOutlines.size());
+ sal_Int32 nIndex (0);
+ for (::basegfx::B2DPolyPolygonVector::const_iterator
+ iOutline(aOutlines.begin()),
+ iEnd(aOutlines.end());
+ iOutline!=iEnd;
+ ++iOutline)
+ {
+ aOutlineSequence[nIndex++] = ::basegfx::unotools::xPolyPolygonFromB2DPolyPolygon(
+ mxDevice,
+ *iOutline);
+ }
+ }
+
+ return aOutlineSequence;
}
uno::Sequence< geometry::RealRectangle2D > SAL_CALL TextLayout::queryInkMeasures( ) throw (uno::RuntimeException)
{
tools::LocalGuard aGuard;
- // TODO(F1)
- return uno::Sequence< geometry::RealRectangle2D >();
+
+ OutputDevice& rOutDev = mpOutDevProvider->getOutDev();
+ VirtualDevice aVDev( rOutDev );
+ aVDev.SetFont( mpFont->getVCLFont() );
+
+ setupLayoutMode( aVDev, mnTextDirection );
+
+ const rendering::ViewState aViewState(
+ geometry::AffineMatrix2D(1,0,0, 0,1,0),
+ NULL);
+
+ rendering::RenderState aRenderState (
+ geometry::AffineMatrix2D(1,0,0,0,1,0),
+ NULL,
+ uno::Sequence<double>(4),
+ rendering::CompositeOperation::SOURCE);
+
+ ::boost::scoped_array< sal_Int32 > aOffsets(new sal_Int32[maLogicalAdvancements.getLength()]);
+ setupTextOffsets(aOffsets.get(), maLogicalAdvancements, aViewState, aRenderState);
+
+ MetricVector aMetricVector;
+ uno::Sequence<geometry::RealRectangle2D> aBoundingBoxes;
+ if (aVDev.GetGlyphBoundRects(
+ Point(0,0),
+ maText.Text,
+ ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition),
+ ::canvas::tools::numeric_cast<USHORT>(maText.Length),
+ ::canvas::tools::numeric_cast<USHORT>(maText.StartPosition),
+ aMetricVector))
+ {
+ aBoundingBoxes.realloc(aMetricVector.size());
+ sal_Int32 nIndex (0);
+ for (MetricVector::const_iterator
+ iMetric(aMetricVector.begin()),
+ iEnd(aMetricVector.end());
+ iMetric!=iEnd;
+ ++iMetric)
+ {
+ aBoundingBoxes[nIndex++] = geometry::RealRectangle2D(
+ iMetric->getX(),
+ iMetric->getY(),
+ iMetric->getX() + iMetric->getWidth(),
+ iMetric->getY() + iMetric->getHeight());
+ }
+ }
+ return aBoundingBoxes;
}
uno::Sequence< geometry::RealRectangle2D > SAL_CALL TextLayout::queryMeasures( ) throw (uno::RuntimeException)
@@ -171,7 +261,7 @@ namespace vclcanvas
setupLayoutMode( aVDev, mnTextDirection );
- const sal_Int32 nAboveBaseline( -aMetric.GetIntLeading() - aMetric.GetAscent() );
+ const sal_Int32 nAboveBaseline( /*-aMetric.GetIntLeading()*/ - aMetric.GetAscent() );
const sal_Int32 nBelowBaseline( aMetric.GetDescent() );
if( maLogicalAdvancements.getLength() )
diff --git a/comphelper/inc/comphelper/docpasswordhelper.hxx b/comphelper/inc/comphelper/docpasswordhelper.hxx
new file mode 100644
index 000000000000..90927a3e9c6c
--- /dev/null
+++ b/comphelper/inc/comphelper/docpasswordhelper.hxx
@@ -0,0 +1,212 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: docpasswordhelper.hxx,v $
+ * $Revision: 1.1 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef COMPHELPER_DOCPASSWORDHELPR_HXX
+#define COMPHELPER_DOCPASSWORDHELPR_HXX
+
+#include "comphelper/comphelperdllapi.h"
+#include <vector>
+#include "comphelper/docpasswordrequest.hxx"
+
+namespace com { namespace sun { namespace star { namespace task { class XInteractionHandler; } } } }
+
+namespace comphelper {
+
+class MediaDescriptor;
+
+// ============================================================================
+
+enum DocPasswordVerifierResult
+{
+ DocPasswordVerifierResult_OK,
+ DocPasswordVerifierResult_WRONG_PASSWORD,
+ DocPasswordVerifierResult_ABORT
+};
+
+// ============================================================================
+
+/** Base class for a password verifier used by the DocPasswordHelper class
+ below.
+
+ Users have to implement the virtual function and pass an instance of the
+ verifier to one of the password request functions.
+ */
+class COMPHELPER_DLLPUBLIC IDocPasswordVerifier
+{
+public:
+ virtual ~IDocPasswordVerifier();
+
+ /** Will be called everytime a password needs to be verified.
+
+ @return The result of the verification.
+ - DocPasswordVerifierResult_OK, if and only if the passed password
+ is valid and can be used to process the related document.
+ - DocPasswordVerifierResult_WRONG_PASSWORD, if the password is
+ wrong. The user may be asked again for a new password.
+ - DocPasswordVerifierResult_ABORT, if an unrecoverable error
+ occured while password verification. The password request loop
+ will be aborted.
+ */
+ virtual DocPasswordVerifierResult verifyPassword( const ::rtl::OUString& rPassword ) = 0;
+
+};
+
+// ============================================================================
+
+/** Helper that asks for a document password and checks its validity.
+ */
+class COMPHELPER_DLLPUBLIC DocPasswordHelper
+{
+public:
+ // ------------------------------------------------------------------------
+
+ /** This helper function tries to request and verify a password to load a
+ protected document.
+
+ First, the list of default passwords will be tried if provided. This is
+ needed by import filters for external file formats that have to check a
+ predefined password in some cases without asking the user for a
+ password. Every password is checked using the passed password verifier.
+
+ If not successful, the passed password of a medium is tried, that has
+ been set e.g. by an API call to load a document. If existing, the
+ password is checked using the passed password verifier.
+
+ If still not successful, the passed interaction handler is used to
+ request a password from the user. This will be repeated until the
+ passed password verifier validates the entered password, or if the user
+ chooses to cancel password input.
+
+ @param rVerifier
+ The password verifier used to check every processed password.
+
+ @param rMediaPassword
+ If not empty, will be passed to the password validator before
+ requesting a password from the user. This password usually should
+ be querried from a media descriptor.
+
+ @param rxInteractHandler
+ The interaction handler that will be used to request a password
+ from the user, e.g. by showing a password input dialog.
+
+ @param rDocumentName
+ The name of the related document that will be shown in the password
+ input dialog.
+
+ @param eRequestType
+ The password request type that will be passed to the
+ DocPasswordRequest object created internally. See
+ docpasswordrequest.hxx for more details.
+
+ @param pDefaultPasswords
+ If not null, contains default passwords that will be tried before a
+ password will be requested from the media descriptor or the user.
+
+ @param pbIsDefaultPassword
+ (output parameter) If not null, the type of the found password will
+ be returned. True means the password has been found in the passed
+ list of default passwords. False means the password has been taken
+ from the rMediaPassword parameter or has been entered by the user.
+
+ @return
+ If not empty, contains the password that has been validated by the
+ passed password verifier. If empty, no valid password has been
+ found, or the user has chossen to cancel password input.
+ */
+ static ::rtl::OUString requestAndVerifyDocPassword(
+ IDocPasswordVerifier& rVerifier,
+ const ::rtl::OUString& rMediaPassword,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::task::XInteractionHandler >& rxInteractHandler,
+ const ::rtl::OUString& rDocumentName,
+ DocPasswordRequestType eRequestType,
+ const ::std::vector< ::rtl::OUString >* pDefaultPasswords = 0,
+ bool* pbIsDefaultPassword = 0 );
+
+ // ------------------------------------------------------------------------
+
+ /** This helper function tries to find a password for the document
+ described by the passed media descriptor.
+
+ First, the list of default passwords will be tried if provided. This is
+ needed by import filters for external file formats that have to check a
+ predefined password in some cases without asking the user for a
+ password. Every password is checked using the passed password verifier.
+
+ If not successful, the passed media descriptor is asked for a password,
+ that has been set e.g. by an API call to load a document. If existing,
+ the password is checked using the passed password verifier.
+
+ If still not successful, the interaction handler contained in the
+ passed nmedia descriptor is used to request a password from the user.
+ This will be repeated until the passed password verifier validates the
+ entered password, or if the user chooses to cancel password input.
+
+ @param rVerifier
+ The password verifier used to check every processed password.
+
+ @param rMediaDesc
+ The media descriptor of the document that needs to be opened with
+ a password. If a valid password (that is not contained in the
+ passed list of default passwords) was found, it will be inserted
+ into the "Password" property of this descriptor.
+
+ @param eRequestType
+ The password request type that will be passed to the
+ DocPasswordRequest object created internally. See
+ docpasswordrequest.hxx for more details.
+
+ @param pDefaultPasswords
+ If not null, contains default passwords that will be tried before a
+ password will be requested from the media descriptor or the user.
+
+ @return
+ If not empty, contains the password that has been validated by the
+ passed password verifier. If empty, no valid password has been
+ found, or the user has chossen to cancel password input.
+ */
+ static ::rtl::OUString requestAndVerifyDocPassword(
+ IDocPasswordVerifier& rVerifier,
+ MediaDescriptor& rMediaDesc,
+ DocPasswordRequestType eRequestType,
+ const ::std::vector< ::rtl::OUString >* pDefaultPasswords = 0 );
+
+ // ------------------------------------------------------------------------
+
+private:
+ ~DocPasswordHelper();
+};
+
+// ============================================================================
+
+} // namespace comphelper
+
+#endif
+
diff --git a/comphelper/inc/comphelper/docpasswordrequest.hxx b/comphelper/inc/comphelper/docpasswordrequest.hxx
new file mode 100644
index 000000000000..b1e042e876bd
--- /dev/null
+++ b/comphelper/inc/comphelper/docpasswordrequest.hxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: docpasswordrequest.hxx,v $
+ * $Revision: 1.1 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef COMPHELPER_DOCPASSWORDREQUEST_HXX
+#define COMPHELPER_DOCPASSWORDREQUEST_HXX
+
+#include "comphelper/comphelperdllapi.h"
+#include <com/sun/star/task/PasswordRequestMode.hpp>
+#include <com/sun/star/task/XInteractionRequest.hpp>
+#include <cppuhelper/implbase1.hxx>
+
+namespace comphelper {
+
+// ============================================================================
+
+/** Selects which UNO document password request type to use. */
+enum DocPasswordRequestType
+{
+ DocPasswordRequestType_STANDARD, /// Uses the standard com.sun.star.task.DocumentPasswordRequest request.
+ DocPasswordRequestType_MS /// Uses the com.sun.star.task.DocumentMSPasswordRequest request.
+};
+
+// ============================================================================
+
+class AbortContinuation;
+class PasswordContinuation;
+
+/** Implements the task.XInteractionRequest interface for requesting a password
+ string for a document.
+ */
+class COMPHELPER_DLLPUBLIC DocPasswordRequest : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
+{
+public:
+ explicit DocPasswordRequest(
+ DocPasswordRequestType eType,
+ ::com::sun::star::task::PasswordRequestMode eMode,
+ const ::rtl::OUString& rDocumentName );
+ virtual ~DocPasswordRequest();
+
+ bool isAbort() const;
+ bool isPassword() const;
+ ::rtl::OUString getPassword() const;
+
+private:
+ virtual ::com::sun::star::uno::Any SAL_CALL
+ getRequest() throw( ::com::sun::star::uno::RuntimeException );
+
+ virtual ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > SAL_CALL
+ getContinuations() throw( ::com::sun::star::uno::RuntimeException );
+
+private:
+ ::com::sun::star::uno::Any maRequest;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > > maContinuations;
+ AbortContinuation* mpAbort;
+ PasswordContinuation* mpPassword;
+};
+
+// ============================================================================
+
+} // namespace comphelper
+
+#endif
+
diff --git a/comphelper/inc/comphelper/mediadescriptor.hxx b/comphelper/inc/comphelper/mediadescriptor.hxx
index 5cd36d2e687b..e388c0b4ca3c 100644
--- a/comphelper/inc/comphelper/mediadescriptor.hxx
+++ b/comphelper/inc/comphelper/mediadescriptor.hxx
@@ -74,8 +74,10 @@ class COMPHELPER_DLLPUBLIC MediaDescriptor : public SequenceAsHashMap
does not work as expected under windows (under unix it works as well)
these way must be used :-(
*/
+ static const ::rtl::OUString& PROP_ABORTED();
static const ::rtl::OUString& PROP_ASTEMPLATE();
static const ::rtl::OUString& PROP_CHARACTERSET();
+ static const ::rtl::OUString& PROP_COMPONENTDATA();
static const ::rtl::OUString& PROP_DEEPDETECTION();
static const ::rtl::OUString& PROP_DETECTSERVICE();
static const ::rtl::OUString& PROP_DOCUMENTSERVICE();
diff --git a/comphelper/source/misc/docpasswordhelper.cxx b/comphelper/source/misc/docpasswordhelper.cxx
new file mode 100644
index 000000000000..1f362c02f881
--- /dev/null
+++ b/comphelper/source/misc/docpasswordhelper.cxx
@@ -0,0 +1,152 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: docpasswordhelper.cxx,v $
+ * $Revision: 1.1 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_comphelper.hxx"
+
+#include "comphelper/docpasswordhelper.hxx"
+#include <com/sun/star/task/XInteractionHandler.hpp>
+#include "comphelper/mediadescriptor.hxx"
+
+using ::rtl::OUString;
+using ::com::sun::star::uno::Exception;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::UNO_SET_THROW;
+using ::com::sun::star::task::PasswordRequestMode;
+using ::com::sun::star::task::PasswordRequestMode_PASSWORD_ENTER;
+using ::com::sun::star::task::PasswordRequestMode_PASSWORD_REENTER;
+using ::com::sun::star::task::XInteractionHandler;
+using ::com::sun::star::task::XInteractionRequest;
+
+namespace comphelper {
+
+// ============================================================================
+
+IDocPasswordVerifier::~IDocPasswordVerifier()
+{
+}
+
+// ============================================================================
+
+/*static*/ OUString DocPasswordHelper::requestAndVerifyDocPassword(
+ IDocPasswordVerifier& rVerifier,
+ const OUString& rMediaPassword,
+ const Reference< XInteractionHandler >& rxInteractHandler,
+ const OUString& rDocumentName,
+ DocPasswordRequestType eRequestType,
+ const ::std::vector< OUString >* pDefaultPasswords,
+ bool* pbIsDefaultPassword )
+{
+ OUString aPassword;
+ DocPasswordVerifierResult eResult = DocPasswordVerifierResult_WRONG_PASSWORD;
+
+ // first, try provided default passwords
+ if( pbIsDefaultPassword )
+ *pbIsDefaultPassword = false;
+ if( pDefaultPasswords )
+ {
+ for( ::std::vector< OUString >::const_iterator aIt = pDefaultPasswords->begin(), aEnd = pDefaultPasswords->end(); (eResult == DocPasswordVerifierResult_WRONG_PASSWORD) && (aIt != aEnd); ++aIt )
+ {
+ aPassword = *aIt;
+ OSL_ENSURE( aPassword.getLength() > 0, "DocPasswordHelper::requestAndVerifyDocPassword - unexpected empty default password" );
+ if( aPassword.getLength() > 0 )
+ {
+ eResult = rVerifier.verifyPassword( aPassword );
+ if( pbIsDefaultPassword )
+ *pbIsDefaultPassword = eResult == DocPasswordVerifierResult_OK;
+ }
+ }
+ }
+
+ // try media password (skip, if result is OK or ABORT)
+ if( eResult == DocPasswordVerifierResult_WRONG_PASSWORD )
+ {
+ aPassword = rMediaPassword;
+ if( aPassword.getLength() > 0 )
+ eResult = rVerifier.verifyPassword( aPassword );
+ }
+
+ // request a password (skip, if result is OK or ABORT)
+ if( (eResult == DocPasswordVerifierResult_WRONG_PASSWORD) && rxInteractHandler.is() ) try
+ {
+ PasswordRequestMode eRequestMode = PasswordRequestMode_PASSWORD_ENTER;
+ while( eResult == DocPasswordVerifierResult_WRONG_PASSWORD )
+ {
+ DocPasswordRequest* pRequest = new DocPasswordRequest( eRequestType, eRequestMode, rDocumentName );
+ Reference< XInteractionRequest > xRequest( pRequest );
+ rxInteractHandler->handle( xRequest );
+ if( pRequest->isPassword() )
+ {
+ aPassword = pRequest->getPassword();
+ if( aPassword.getLength() > 0 )
+ eResult = rVerifier.verifyPassword( aPassword );
+ }
+ else
+ {
+ eResult = DocPasswordVerifierResult_ABORT;
+ }
+ eRequestMode = PasswordRequestMode_PASSWORD_REENTER;
+ }
+ }
+ catch( Exception& )
+ {
+ }
+
+ return (eResult == DocPasswordVerifierResult_OK) ? aPassword : OUString();
+}
+
+/*static*/ OUString DocPasswordHelper::requestAndVerifyDocPassword(
+ IDocPasswordVerifier& rVerifier,
+ MediaDescriptor& rMediaDesc,
+ DocPasswordRequestType eRequestType,
+ const ::std::vector< OUString >* pDefaultPasswords )
+{
+ OUString aMediaPassword = rMediaDesc.getUnpackedValueOrDefault(
+ MediaDescriptor::PROP_PASSWORD(), OUString() );
+ Reference< XInteractionHandler > xInteractHandler = rMediaDesc.getUnpackedValueOrDefault(
+ MediaDescriptor::PROP_INTERACTIONHANDLER(), Reference< XInteractionHandler >() );
+ OUString aDocumentName = rMediaDesc.getUnpackedValueOrDefault(
+ MediaDescriptor::PROP_URL(), OUString() );
+
+ bool bIsDefaultPassword = false;
+ OUString aPassword = requestAndVerifyDocPassword(
+ rVerifier, aMediaPassword, xInteractHandler, aDocumentName, eRequestType, pDefaultPasswords, &bIsDefaultPassword );
+
+ // insert valid password into media descriptor (but not a default password)
+ if( (aPassword.getLength() > 0) && !bIsDefaultPassword )
+ rMediaDesc[ MediaDescriptor::PROP_PASSWORD() ] <<= aPassword;
+
+ return aPassword;
+}
+
+// ============================================================================
+
+} // namespace comphelper
+
diff --git a/comphelper/source/misc/docpasswordrequest.cxx b/comphelper/source/misc/docpasswordrequest.cxx
new file mode 100644
index 000000000000..187642e10fe9
--- /dev/null
+++ b/comphelper/source/misc/docpasswordrequest.cxx
@@ -0,0 +1,153 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: docpasswordrequest.cxx,v $
+ * $Revision: 1.1 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_comphelper.hxx"
+
+#include "comphelper/docpasswordrequest.hxx"
+#include <com/sun/star/task/DocumentMSPasswordRequest.hpp>
+#include <com/sun/star/task/DocumentPasswordRequest.hpp>
+#include <com/sun/star/task/XInteractionAbort.hpp>
+#include <com/sun/star/task/XInteractionPassword.hpp>
+
+using ::rtl::OUString;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::RuntimeException;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::XInterface;
+using ::com::sun::star::task::InteractionClassification_QUERY;
+using ::com::sun::star::task::DocumentMSPasswordRequest;
+using ::com::sun::star::task::DocumentPasswordRequest;
+using ::com::sun::star::task::PasswordRequestMode;
+using ::com::sun::star::task::XInteractionAbort;
+using ::com::sun::star::task::XInteractionContinuation;
+using ::com::sun::star::task::XInteractionPassword;
+
+namespace comphelper {
+
+// ============================================================================
+
+class AbortContinuation : public ::cppu::WeakImplHelper1< XInteractionAbort >
+{
+public:
+ inline explicit AbortContinuation() : mbSelected( false ) {}
+
+ inline bool isSelected() const { return mbSelected; }
+ inline void reset() { mbSelected = false; }
+
+ virtual void SAL_CALL select() throw( RuntimeException ) { mbSelected = true; }
+
+private:
+ bool mbSelected;
+};
+
+// ============================================================================
+
+class PasswordContinuation : public ::cppu::WeakImplHelper1< XInteractionPassword >
+{
+public:
+ inline explicit PasswordContinuation() : mbSelected( false ) {}
+
+ inline bool isSelected() const { return mbSelected; }
+ inline void reset() { mbSelected = false; }
+
+ virtual void SAL_CALL select() throw( RuntimeException ) { mbSelected = true; }
+ virtual void SAL_CALL setPassword( const OUString& rPass ) throw( RuntimeException ) { maPassword = rPass; }
+ virtual OUString SAL_CALL getPassword() throw( RuntimeException ) { return maPassword; }
+
+private:
+ OUString maPassword;
+ bool mbSelected;
+};
+
+// ============================================================================
+
+DocPasswordRequest::DocPasswordRequest( DocPasswordRequestType eType,
+ PasswordRequestMode eMode, const OUString& rDocumentName )
+{
+ switch( eType )
+ {
+ case DocPasswordRequestType_STANDARD:
+ {
+ DocumentPasswordRequest aRequest( OUString(), Reference< XInterface >(),
+ InteractionClassification_QUERY, eMode, rDocumentName );
+ maRequest <<= aRequest;
+ }
+ break;
+ case DocPasswordRequestType_MS:
+ {
+ DocumentMSPasswordRequest aRequest( OUString(), Reference< XInterface >(),
+ InteractionClassification_QUERY, eMode, rDocumentName );
+ maRequest <<= aRequest;
+ }
+ break;
+ /* no 'default', so compilers will complain about missing
+ implementation of a new enum value. */
+ }
+
+ maContinuations.realloc( 2 );
+ maContinuations[ 0 ].set( mpAbort = new AbortContinuation );
+ maContinuations[ 1 ].set( mpPassword = new PasswordContinuation );
+}
+
+DocPasswordRequest::~DocPasswordRequest()
+{
+}
+
+bool DocPasswordRequest::isAbort() const
+{
+ return mpAbort->isSelected();
+}
+
+bool DocPasswordRequest::isPassword() const
+{
+ return mpPassword->isSelected();
+}
+
+OUString DocPasswordRequest::getPassword() const
+{
+ return mpPassword->getPassword();
+}
+
+Any SAL_CALL DocPasswordRequest::getRequest() throw( RuntimeException )
+{
+ return maRequest;
+}
+
+Sequence< Reference< XInteractionContinuation > > SAL_CALL DocPasswordRequest::getContinuations() throw( RuntimeException )
+{
+ return maContinuations;
+}
+
+// ============================================================================
+
+} // namespace comphelper
+
diff --git a/comphelper/source/misc/makefile.mk b/comphelper/source/misc/makefile.mk
index f50f57c47eb3..d0ffc368fd20 100644
--- a/comphelper/source/misc/makefile.mk
+++ b/comphelper/source/misc/makefile.mk
@@ -57,6 +57,8 @@ SLOFILES= \
$(SLO)$/componentcontext.obj \
$(SLO)$/componentmodule.obj \
$(SLO)$/configurationhelper.obj \
+ $(SLO)$/docpasswordhelper.obj \
+ $(SLO)$/docpasswordrequest.obj \
$(SLO)$/documentinfo.obj \
$(SLO)$/documentiologring.obj \
$(SLO)$/evtlistenerhlp.obj \
diff --git a/comphelper/source/misc/mediadescriptor.cxx b/comphelper/source/misc/mediadescriptor.cxx
index 9f463cdf0380..44578f840da9 100644
--- a/comphelper/source/misc/mediadescriptor.cxx
+++ b/comphelper/source/misc/mediadescriptor.cxx
@@ -114,6 +114,12 @@ namespace css = ::com::sun::star;
/*-----------------------------------------------
10.03.2004 07:35
-----------------------------------------------*/
+const ::rtl::OUString& MediaDescriptor::PROP_ABORTED()
+{
+ static const ::rtl::OUString sProp(RTL_CONSTASCII_USTRINGPARAM("Aborted"));
+ return sProp;
+}
+
const ::rtl::OUString& MediaDescriptor::PROP_ASTEMPLATE()
{
static const ::rtl::OUString sProp(RTL_CONSTASCII_USTRINGPARAM("AsTemplate"));
@@ -126,6 +132,12 @@ const ::rtl::OUString& MediaDescriptor::PROP_CHARACTERSET()
return sProp;
}
+const ::rtl::OUString& MediaDescriptor::PROP_COMPONENTDATA()
+{
+ static const ::rtl::OUString sProp(RTL_CONSTASCII_USTRINGPARAM("ComponentData"));
+ return sProp;
+}
+
const ::rtl::OUString& MediaDescriptor::PROP_DEEPDETECTION()
{
static const ::rtl::OUString sProp(RTL_CONSTASCII_USTRINGPARAM("DeepDetection"));
diff --git a/comphelper/source/misc/uieventslogger.cxx b/comphelper/source/misc/uieventslogger.cxx
index a55d5b58854d..ae351340bc7a 100644
--- a/comphelper/source/misc/uieventslogger.cxx
+++ b/comphelper/source/misc/uieventslogger.cxx
@@ -218,11 +218,15 @@ namespace comphelper
// public UiEventsLogger interface
sal_Bool UiEventsLogger::isEnabled()
{
- try {
- UiEventsLogger_Impl::prepareMutex();
- Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
- return UiEventsLogger_Impl::getInstance()->m_Active;
- } catch(...) { return false; } // never throws
+ if ( UiEventsLogger_Impl::getEnabledFromCfg() )
+ {
+ try {
+ UiEventsLogger_Impl::prepareMutex();
+ Guard<Mutex> singleton_guard(UiEventsLogger_Impl::singleton_mutex);
+ return UiEventsLogger_Impl::getInstance()->m_Active;
+ } catch(...) { return false; } // never throws
+ } // if ( )
+ return sal_False;
}
sal_Int32 UiEventsLogger::getSessionLogEventCount()
diff --git a/comphelper/source/property/genericpropertyset.cxx b/comphelper/source/property/genericpropertyset.cxx
index 08dd26dcf0ec..19911709860d 100644
--- a/comphelper/source/property/genericpropertyset.cxx
+++ b/comphelper/source/property/genericpropertyset.cxx
@@ -180,8 +180,7 @@ void GenericPropertySet::_setPropertyValues( const PropertyMapEntry** ppEntries,
aEvt.PropertyName = aPropertyName;
aEvt.NewValue = *pValues;
aGuard.clear();
- pHelper->forEach<XPropertyChangeListener>(
- ::boost::bind(&XPropertyChangeListener::propertyChange,_1,boost::cref(aEvt)));
+ pHelper->notifyEach( &XPropertyChangeListener::propertyChange, aEvt );
aGuard.reset();
}
diff --git a/dtrans/prj/build.lst b/dtrans/prj/build.lst
index 95d697d6ebd3..bd9c73582361 100644
--- a/dtrans/prj/build.lst
+++ b/dtrans/prj/build.lst
@@ -10,8 +10,6 @@ dr dtrans\source\win32\dnd nmake - w dr_win32_dnd dr_cnttype dr_win32_misc.w
dr dtrans\source\win32\dtobj nmake - w dr_win32_dtobj dr_win32_clipb.w dr_win32_misc.w dr_win32_ftransl.w dr_inc NULL
dr dtrans\source\os2\clipb nmake - p dr_os2_clipb dr_inc NULL
dr dtrans\util nmake - all dr_util dr_cnttype dr_win32_misc.w dr_win32_mtaole.w dr_win32_ftransl.w dr_win32_clipb.w dr_win32_dnd.w dr_win32_dtobj.w dr_inc NULL
-dr dtrans\source\X11 nmake - u dr_X11 dr_inc NULL
-dr dtrans\source\aqua nmake - u dr_aqua dr_inc NULL
dr dtrans\source\generic nmake - all dr_generic dr_inc NULL
diff --git a/dtrans/prj/d.lst b/dtrans/prj/d.lst
index bfa7e3b86d6d..a1a7c2e95480 100644
--- a/dtrans/prj/d.lst
+++ b/dtrans/prj/d.lst
@@ -5,6 +5,5 @@
..\source\win32\clipb\sysdtrans.xml %_DEST%\xml%_EXT%\sysdtrans.xml
..\source\win32\dnd\dnd.xml %_DEST%\xml%_EXT%\dnd.xml
..\source\win32\ftransl\ftransl.xml %_DEST%\xml%_EXT%\ftransl.xml
-..\source\X11\dtransX11.xml %_DEST%\xml%_EXT%\dtransX11.xml
..\source\cnttype\mcnttype.xml %_DEST%\xml%_EXT%\mcnttype.xml
..\source\generic\dtrans.xml %_DEST%\xml%_EXT%\dtrans.xml
diff --git a/dtrans/source/X11/X11_service.cxx b/dtrans/source/X11/X11_service.cxx
deleted file mode 100644
index b288d74a0513..000000000000
--- a/dtrans/source/X11/X11_service.cxx
+++ /dev/null
@@ -1,303 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: X11_service.cxx,v $
- * $Revision: 1.11 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_dtrans.hxx"
-
-#include <X11_clipboard.hxx>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/registry/XRegistryKey.hpp>
-#include <uno/dispatcher.h> // declaration of generic uno interface
-#include <uno/mapping.hxx> // mapping stuff
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/compbase1.hxx>
-
-using namespace rtl;
-using namespace cppu;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::datatransfer::clipboard;
-using namespace com::sun::star::awt;
-using namespace x11;
-
-namespace x11 {
-
-class X11ClipboardFactory : public ::cppu::WeakComponentImplHelper1 <
- ::com::sun::star::lang::XSingleServiceFactory
->
-{
- ::osl::Mutex m_aMutex;
- ::std::hash_map< OUString, ::std::hash_map< Atom, Reference< XClipboard > >, ::rtl::OUStringHash > m_aInstances;
-public:
- X11ClipboardFactory();
- virtual ~X11ClipboardFactory();
-
- /*
- * XSingleServiceFactory
- */
- virtual Reference< XInterface > createInstance() throw();
- virtual Reference< XInterface > createInstanceWithArguments( const Sequence< Any >& rArgs ) throw();
-};
-
-// ------------------------------------------------------------------------
-
-X11ClipboardFactory::X11ClipboardFactory() :
- ::cppu::WeakComponentImplHelper1<
- ::com::sun::star::lang::XSingleServiceFactory
->( m_aMutex )
-{
-}
-
-// ------------------------------------------------------------------------
-
-X11ClipboardFactory::~X11ClipboardFactory()
-{
-}
-
-// ------------------------------------------------------------------------
-
-Reference< XInterface > X11ClipboardFactory::createInstance() throw()
-{
- return createInstanceWithArguments( Sequence< Any >() );
-}
-
-// ------------------------------------------------------------------------
-
-Reference< XInterface > X11ClipboardFactory::createInstanceWithArguments( const Sequence< Any >& arguments ) throw()
-{
- OUString aDisplayName;
- Atom nSelection;
-
- // extract display name from connection argument. An exception is thrown
- // by SelectionManager.initialize() if no display connection is given.
- if( arguments.getLength() > 0 )
- {
- Reference< XDisplayConnection > xConn;
- arguments.getConstArray()[0] >>= xConn;
-
- if( xConn.is() )
- {
- Any aIdentifier = xConn->getIdentifier();
- aIdentifier >>= aDisplayName;
- }
- }
-
- SelectionManager& rManager = SelectionManager::get( aDisplayName );
- rManager.initialize( arguments );
-
- // check if any other selection than clipboard selection is specified
- if( arguments.getLength() > 1 )
- {
- OUString aSelectionName;
-
- arguments.getConstArray()[1] >>= aSelectionName;
- nSelection = rManager.getAtom( aSelectionName );
- }
- else
- {
- // default atom is clipboard selection
- nSelection = rManager.getAtom( OUString::createFromAscii( "CLIPBOARD" ) );
- }
-
- ::std::hash_map< Atom, Reference< XClipboard > >& rMap( m_aInstances[ aDisplayName ] );
- ::std::hash_map< Atom, Reference< XClipboard > >::iterator it = rMap.find( nSelection );
- if( it != rMap.end() )
- return it->second;
-
- X11Clipboard* pClipboard = new X11Clipboard( rManager, nSelection );
- rMap[ nSelection ] = pClipboard;
-
- return static_cast<OWeakObject*>(pClipboard);
-}
-
-// ------------------------------------------------------------------------
-
-Sequence< OUString > SAL_CALL X11Clipboard_getSupportedServiceNames()
-{
- Sequence< OUString > aRet(1);
- aRet[0] = OUString::createFromAscii("com.sun.star.datatransfer.clipboard.SystemClipboard");
- return aRet;
-}
-
-// ------------------------------------------------------------------------
-
-Sequence< OUString > SAL_CALL Xdnd_getSupportedServiceNames()
-{
- Sequence< OUString > aRet(1);
- aRet[0] = OUString::createFromAscii("com.sun.star.datatransfer.dnd.X11DragSource");
- return aRet;
-}
-
-// ------------------------------------------------------------------------
-
-Reference< XInterface > SAL_CALL Xdnd_createInstance(
- const Reference< XMultiServiceFactory > & )
-{
- return Reference < XInterface >( ( OWeakObject * ) new SelectionManagerHolder() );
-}
-
-// ------------------------------------------------------------------------
-
-Sequence< OUString > SAL_CALL Xdnd_dropTarget_getSupportedServiceNames()
-{
- Sequence< OUString > aRet(1);
- aRet[0] = OUString::createFromAscii("com.sun.star.datatransfer.dnd.X11DropTarget");
- return aRet;
-}
-
-// ------------------------------------------------------------------------
-
-Reference< XInterface > SAL_CALL Xdnd_dropTarget_createInstance(
- const Reference< XMultiServiceFactory > & )
-{
- return Reference < XInterface >( ( OWeakObject * ) new DropTarget() );
-}
-
-}
-
-static const OUString& getClipboardImplementationName()
-{
- static OUString aImpl = OUString::createFromAscii(X11_CLIPBOARD_IMPLEMENTATION_NAME);
- return aImpl;
-}
-
-static const OUString& getClipboardServiceName()
-{
- static OUString aImpl = OUString::createFromAscii("com.sun.star.datatransfer.clipboard.SystemClipboard" );
- return aImpl;
-}
-
-static const OUString& getXdndImplementationName()
-{
- static OUString aImpl = OUString::createFromAscii(XDND_IMPLEMENTATION_NAME );
- return aImpl;
-}
-
-static const OUString& getXdndServiceName()
-{
- static OUString aImpl = OUString::createFromAscii("com.sun.star.datatransfer.dnd.X11DragSource" );
- return aImpl;
-}
-
-static const OUString& getXdndDropTargetImplementationName()
-{
- static OUString aImpl = OUString::createFromAscii(XDND_DROPTARGET_IMPLEMENTATION_NAME);
- return aImpl;
-}
-
-static const OUString& getXdndDropTargetServiceName()
-{
- static OUString aImpl = OUString::createFromAscii("com.sun.star.datatransfer.dnd.X11DropTarget" );
- return aImpl;
-}
-
-extern "C" {
- void SAL_CALL component_getImplementationEnvironment(
- const sal_Char** ppEnvTypeName,
- uno_Environment** )
- {
- *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
- }
-
- sal_Bool SAL_CALL component_writeInfo( void*, void* pXUnoKey )
- {
- if( pXUnoKey )
- {
- try
- {
- Reference< ::com::sun::star::registry::XRegistryKey > xKey( reinterpret_cast< ::com::sun::star::registry::XRegistryKey* >( pXUnoKey ) );
-
- OUString aImplName = OUString::createFromAscii( "/" );
- aImplName += getClipboardImplementationName();
- aImplName += ::rtl::OUString::createFromAscii( "/UNO/SERVICES/" );
- aImplName += getClipboardServiceName();
- xKey->createKey( aImplName );
-
- aImplName = OUString::createFromAscii( "/" );
- aImplName += getXdndImplementationName();
- aImplName += ::rtl::OUString::createFromAscii( "/UNO/SERVICES/" );
- aImplName += getXdndServiceName();
- xKey->createKey( aImplName );
-
- aImplName = OUString::createFromAscii( "/" );
- aImplName += getXdndDropTargetImplementationName();
- aImplName += ::rtl::OUString::createFromAscii( "/UNO/SERVICES/" );
- aImplName += getXdndDropTargetServiceName();
- xKey->createKey( aImplName );
-
- return sal_True;
- }
- catch( ::com::sun::star::registry::InvalidRegistryException& )
- {
- }
- }
- return sal_False;
- }
-
- void* SAL_CALL component_getFactory(
- const sal_Char* pImplementationName,
- void* pXUnoSMgr,
- void*
- )
- {
- void* pRet = 0;
-
- ::rtl::OUString aImplName( ::rtl::OUString::createFromAscii( pImplementationName ) );
-
- if( pXUnoSMgr )
- {
- Reference< ::com::sun::star::lang::XMultiServiceFactory > xMgr(
- reinterpret_cast< ::com::sun::star::lang::XMultiServiceFactory* >( pXUnoSMgr )
- );
- Reference< ::com::sun::star::lang::XSingleServiceFactory > xFactory;
- if( aImplName.equals( getClipboardImplementationName() ) )
- xFactory = new X11ClipboardFactory();
- else if( aImplName.equals( getXdndImplementationName() ) )
- {
- xFactory = ::cppu::createSingleFactory(
- xMgr, aImplName, Xdnd_createInstance,
- Xdnd_getSupportedServiceNames() );
- }
- else if( aImplName.equals( getXdndDropTargetImplementationName() ) )
- {
- xFactory = ::cppu::createSingleFactory(
- xMgr, aImplName, Xdnd_dropTarget_createInstance,
- Xdnd_dropTarget_getSupportedServiceNames() );
- }
- if( xFactory.is() )
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- }
- return pRet;
- }
-
-} /* extern "C" */
diff --git a/dtrans/source/X11/dtransX11.xml b/dtrans/source/X11/dtransX11.xml
deleted file mode 100644
index 77994d5287b5..000000000000
--- a/dtrans/source/X11/dtransX11.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
- <module-name> dtransX11 </module-name>
- <component-description>
- <author> Tino Rachui </author>
- <name> com.sun.star.comp.datatransfer.X11 </name>
- <description>
- The X11 implementation of the datatransfer service.
-</description>
- <loader-name> com.sun.star.loader.SharedLibrary </loader-name>
- <language> c++ </language>
- <status value="beta"/>
- <supported-service> com.sun.star.datatransfer.clipboard.SystemClipboard </supported-service>
- <supported-service> com.sun.star.datatransfer.dnd.X11DragSource </supported-service>
- <supported-service> com.sun.star.datatransfer.dnd.X11DropTarget </supported-service>
- <service-dependency> ... </service-dependency>
- <type> com.sun.star.datatransfer.clipboard.XClipboardEx </type>
- <type> com.sun.star.datatransfer.XTransferable </type>
- <type> com.sun.star.datatransfer.clipboard.RenderingCapabilities </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardOwner </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardListener </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardNotifier </type>
- <type> com.sun.star.datatransfer.dnd.XDropTargetDropContext </type>
- <type> com.sun.star.datatransfer.dnd.XDropTargetDragContext </type>
- <type> com.sun.star.datatransfer.dnd.XDropTarget </type>
- <type> com.sun.star.datatransfer.dnd.DNDConstants </type>
- <type> com.sun.star.datatransfer.dnd.XDragSource </type>
- <type> com.sun.star.datatransfer.dnd.XDragSourceContext </type>
- <type> com.sun.star.awt.XDisplayConnection </type>
- <type> com.sun.star.lang.DisposedException </type>
- <type> com.sun.star.lang.IllegalArgumentException </type>
- <type> com.sun.star.lang.XComponent </type>
- <type> com.sun.star.lang.XMultiServiceFactory </type>
- <type> com.sun.star.lang.XSingleServiceFactory </type>
- <type> com.sun.star.lang.XServiceInfo </type>
- <type> com.sun.star.lang.XTypeProvider </type>
- <type> com.sun.star.uno.TypeClass </type>
- <type> com.sun.star.uno.XWeak </type>
- <type> com.sun.star.uno.XAggregation </type>
- <type> com.sun.star.registry.XRegistryKey </type>
- <type> com.sun.star.container.XSet </type>
- </component-description>
- <project-build-dependency> cppuhelper </project-build-dependency>
- <project-build-dependency> cppu </project-build-dependency>
- <project-build-dependency> sal </project-build-dependency>
- <runtime-module-dependency> cppuhelper </runtime-module-dependency>
- <runtime-module-dependency> cppu2 </runtime-module-dependency>
- <runtime-module-dependency> sal2 </runtime-module-dependency>
-</module-description>
diff --git a/dtrans/source/X11/exports.map b/dtrans/source/X11/exports.map
deleted file mode 100644
index 7c56baa9bd73..000000000000
--- a/dtrans/source/X11/exports.map
+++ /dev/null
@@ -1,10 +0,0 @@
-UDK_3_0_0 {
- global:
- GetVersionInfo;
- component_getImplementationEnvironment;
- component_getFactory;
- component_writeInfo;
-
- local:
- *;
-};
diff --git a/dtrans/source/aqua/dtransaqua.xml b/dtrans/source/aqua/dtransaqua.xml
deleted file mode 100644
index 2a901134bf19..000000000000
--- a/dtrans/source/aqua/dtransaqua.xml
+++ /dev/null
@@ -1,47 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
-<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
- <module-name> dtransaqua </module-name>
- <component-description>
- <author> Tino Rachui </author>
- <name> com.sun.star.comp.datatransfer.aqua </name>
- <description>
- The aqua implementation of the datatransfer service.
-</description>
- <loader-name> com.sun.star.loader.SharedLibrary </loader-name>
- <language> c++ </language>
- <status value="beta"/>
- <supported-service> com.sun.star.datatransfer.clipboard.SystemClipboard </supported-service>
- <service-dependency> ... </service-dependency>
- <type> com.sun.star.datatransfer.clipboard.XClipboardEx </type>
- <type> com.sun.star.datatransfer.XTransferable </type>
- <type> com.sun.star.datatransfer.clipboard.RenderingCapabilities </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardOwner </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardListener </type>
- <type> com.sun.star.datatransfer.clipboard.XClipboardNotifier </type>
- <type> com.sun.star.datatransfer.dnd.XDropTargetDropContext </type>
- <type> com.sun.star.datatransfer.dnd.XDropTargetDragContext </type>
- <type> com.sun.star.datatransfer.dnd.XDropTarget </type>
- <type> com.sun.star.datatransfer.dnd.DNDConstants </type>
- <type> com.sun.star.datatransfer.dnd.XDragSource </type>
- <type> com.sun.star.datatransfer.dnd.XDragSourceContext </type>
- <type> com.sun.star.lang.DisposedException </type>
- <type> com.sun.star.lang.IllegalArgumentException </type>
- <type> com.sun.star.lang.XComponent </type>
- <type> com.sun.star.lang.XMultiServiceFactory </type>
- <type> com.sun.star.lang.XSingleServiceFactory </type>
- <type> com.sun.star.lang.XServiceInfo </type>
- <type> com.sun.star.lang.XTypeProvider </type>
- <type> com.sun.star.uno.TypeClass </type>
- <type> com.sun.star.uno.XWeak </type>
- <type> com.sun.star.uno.XAggregation </type>
- <type> com.sun.star.registry.XRegistryKey </type>
- <type> com.sun.star.container.XSet </type>
- </component-description>
- <project-build-dependency> cppuhelper </project-build-dependency>
- <project-build-dependency> cppu </project-build-dependency>
- <project-build-dependency> sal </project-build-dependency>
- <runtime-module-dependency> cppuhelper </runtime-module-dependency>
- <runtime-module-dependency> cppu2 </runtime-module-dependency>
- <runtime-module-dependency> sal2 </runtime-module-dependency>
-</module-description>
diff --git a/dtrans/source/aqua/service_entry.cxx b/dtrans/source/aqua/service_entry.cxx
deleted file mode 100644
index 66f133e74dbe..000000000000
--- a/dtrans/source/aqua/service_entry.cxx
+++ /dev/null
@@ -1,210 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: service_entry.cxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_dtrans.hxx"
-
-#include "DragSource.hxx"
-#include "DropTarget.hxx"
-#include "aqua_clipboard.hxx"
-#include <com/sun/star/lang/XSingleComponentFactory.hpp>
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/compbase1.hxx>
-#include <osl/diagnose.h>
-
-#include "cppuhelper/implementationentry.hxx"
-
-using namespace ::osl;
-using namespace ::rtl;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::registry;
-using namespace ::cppu;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::datatransfer::clipboard;
-
-
-rtl_StandardModuleCount g_moduleCount = MODULE_COUNT_INIT;
-
-
-extern rtl::OUString dragSource_getImplementationName();
-extern com::sun::star::uno::Sequence<rtl::OUString> dragSource_getSupportedServiceNames();
-extern rtl::OUString dropTarget_getImplementationName();
-extern com::sun::star::uno::Sequence<rtl::OUString> dropTarget_getSupportedServiceNames();
-extern rtl::OUString clipboard_getImplementationName();
-extern com::sun::star::uno::Sequence<rtl::OUString> clipboard_getSupportedServiceNames();
-
-
-Reference<XInterface> SAL_CALL createDragSource(const Reference<XComponentContext>& rComponentContext);
-Reference<XInterface> SAL_CALL createDropTarget(const Reference<XComponentContext>& rComponentContext);
-Reference<XInterface> SAL_CALL createClipboard(const Reference<XComponentContext>& rComponentContext);
-
-
-cppu::ImplementationEntry entries[] = {
- { createDragSource,
- dragSource_getImplementationName,
- dragSource_getSupportedServiceNames,
- cppu::createSingleComponentFactory, 0, 0 },
- { createDropTarget,
- dropTarget_getImplementationName,
- dropTarget_getSupportedServiceNames,
- cppu::createSingleComponentFactory, 0, 0 },
- { createClipboard,
- clipboard_getImplementationName,
- clipboard_getSupportedServiceNames,
- cppu::createSingleComponentFactory, 0, 0 },
- { 0, 0, 0, 0, 0, 0 }
-};
-
-
-class AquaClipboardFactory : public WeakComponentImplHelper1<XSingleComponentFactory>
-{
-public:
- AquaClipboardFactory();
- virtual ~AquaClipboardFactory();
-
- /*
- * XSingleComponentFactory
- */
- virtual Reference<XInterface> createInstanceWithContext(const Reference<XComponentContext>& Context)
- throw (Exception);
-
- virtual Reference<XInterface> createInstanceWithArgumentsAndContext(const Sequence<Any>& rArgs,
- const Reference<XComponentContext>& Context)
- throw(Exception);
-
- private:
- static Mutex m_aMutex;
- static Reference<XInterface> mSingleInstance;
-};
-
-Reference<XInterface> AquaClipboardFactory::mSingleInstance;
-Mutex AquaClipboardFactory::m_aMutex;
-
-// ------------------------------------------------------------------------
-
-AquaClipboardFactory::AquaClipboardFactory() :
- WeakComponentImplHelper1<XSingleComponentFactory>(m_aMutex)
-{
-}
-
-// ------------------------------------------------------------------------
-
-AquaClipboardFactory::~AquaClipboardFactory()
-{
-}
-
-// ------------------------------------------------------------------------
-
-Reference<XInterface> AquaClipboardFactory::createInstanceWithContext(const Reference<XComponentContext>& Context) throw(Exception)
-{
- return createInstanceWithArgumentsAndContext(Sequence<Any>(), Context);
-}
-
-// ------------------------------------------------------------------------
-
-Reference< XInterface > AquaClipboardFactory::createInstanceWithArgumentsAndContext(const Sequence<Any>& arguments,
- const Reference<XComponentContext>& Context) throw(Exception)
-{
- MutexGuard aGuard(m_aMutex);
-
- if (!mSingleInstance.is())
- {
- AquaClipboardFactory::mSingleInstance = createClipboard(Context);
- }
-
- return AquaClipboardFactory::mSingleInstance;
-}
-
-
-Reference<XInterface> SAL_CALL createDragSource( const Reference< XComponentContext >& rComponentContext)
-{
- return Reference<XInterface>(static_cast< XInitialization* >(new DragSource(rComponentContext)), UNO_QUERY);
-}
-
-Reference<XInterface> SAL_CALL createDropTarget( const Reference< XComponentContext >& rComponentContext)
-{
- return Reference<XInterface>(static_cast< XInitialization* >(new DropTarget(rComponentContext)), UNO_QUERY);
-}
-
-Reference< XInterface > SAL_CALL createClipboard( const Reference< XComponentContext >& rComponentContext)
-{
- return Reference<XInterface>(static_cast< XClipboard* >(new AquaClipboard(rComponentContext)), UNO_QUERY);
-}
-
-
-extern "C" sal_Bool SAL_CALL component_writeInfo(
- void * serviceManager, void * registryKey)
-{
- return cppu::component_writeInfoHelper(
- serviceManager, registryKey, entries);
-}
-
-
-extern "C" void * SAL_CALL component_getFactory(
- char const * implName, void * serviceManager, void * registryKey)
-{
- void* pRet = NULL;
- OUString iName = OUString::createFromAscii(implName);
- Reference<XSingleComponentFactory> xFac;
-
- if (iName.equalsIgnoreAsciiCase(clipboard_getImplementationName()))
- {
- xFac = new AquaClipboardFactory();
- }
- else
- {
- return component_getFactoryHelper(implName,
- serviceManager,
- registryKey,
- entries);
- }
-
- if (xFac.is())
- {
- xFac->acquire();
- pRet = xFac.get();
- }
-
- return pRet;
-}
-
-
-extern "C" void SAL_CALL component_getImplementationEnvironment(
- char const ** envTypeName, uno_Environment **)
-{
- *envTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
-}
-
-
-extern "C" sal_Bool SAL_CALL component_canUnload( TimeValue *pTime )
-{
- return g_moduleCount.canUnload( &g_moduleCount , pTime );
-}
-
diff --git a/dtrans/source/generic/makefile.mk b/dtrans/source/generic/makefile.mk
index 21076595d208..aa856865a3a8 100644
--- a/dtrans/source/generic/makefile.mk
+++ b/dtrans/source/generic/makefile.mk
@@ -40,7 +40,7 @@ COMP1TYPELIST=dtrans
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
-
+.IF "$(L10N_framework)"==""
# ------------------------------------------------------------------
SLOFILES= \
@@ -66,5 +66,6 @@ DEF1NAME= $(SHL1TARGET)
DEF1EXPORTFILE= exports.dxp
# --- Targets ------------------------------------------------------
+.ENDIF # L10N_framework
.INCLUDE : target.mk
diff --git a/dtrans/util/makefile.mk b/dtrans/util/makefile.mk
index 416ef7286aee..2e9666137619 100644
--- a/dtrans/util/makefile.mk
+++ b/dtrans/util/makefile.mk
@@ -41,7 +41,7 @@ TARGET4=dnd
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
-
+.IF "$(L10N_framework)"==""
# --- mcnttype dynlib ----------------------------------------------
@@ -180,6 +180,7 @@ DEF3NAME= $(SHL3TARGET)
DEF3EXPORTFILE= exports.dxp
.ENDIF # "$(GUI)"=="OS2"
+.ENDIF # L10N_framework
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/egif/makefile.mk b/goodies/source/filter.vcl/egif/makefile.mk
index 55165533580c..418af69c7bf8 100644
--- a/goodies/source/filter.vcl/egif/makefile.mk
+++ b/goodies/source/filter.vcl/egif/makefile.mk
@@ -49,17 +49,18 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES = dlgegif.src \
egifstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES= $(SLO)$/egif.obj \
$(SLO)$/dlgegif.obj \
$(SLO)$/giflzwc.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
+.IF "$(L10N_framework)"==""
SHL1TARGET= egi$(DLLPOSTFIX)
SHL1IMPLIB= egif
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
@@ -75,7 +76,7 @@ SHL1OBJS= $(SLO)$/egif.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/eos2met/makefile.mk b/goodies/source/filter.vcl/eos2met/makefile.mk
index 1d6725e5e902..05f2f032e342 100644
--- a/goodies/source/filter.vcl/eos2met/makefile.mk
+++ b/goodies/source/filter.vcl/eos2met/makefile.mk
@@ -49,15 +49,15 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES= dlgeos2.src \
eos2mstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/eos2met.obj \
$(SLO)$/dlgeos2.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= eme$(DLLPOSTFIX)
SHL1IMPLIB= eos2met
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
@@ -72,7 +72,7 @@ SHL1OBJS= $(SLO)$/eos2met.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epbm/makefile.mk b/goodies/source/filter.vcl/epbm/makefile.mk
index e70256c893e1..f4411d04e0fd 100644
--- a/goodies/source/filter.vcl/epbm/makefile.mk
+++ b/goodies/source/filter.vcl/epbm/makefile.mk
@@ -49,15 +49,15 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES= dlgepbm.src \
epbmstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/epbm.obj \
$(SLO)$/dlgepbm.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= epb$(DLLPOSTFIX)
SHL1IMPLIB= epbm
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
@@ -73,7 +73,7 @@ SHL1OBJS= $(SLO)$/epbm.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epgm/makefile.mk b/goodies/source/filter.vcl/epgm/makefile.mk
index b4ff18588263..579ee6858a78 100644
--- a/goodies/source/filter.vcl/epgm/makefile.mk
+++ b/goodies/source/filter.vcl/epgm/makefile.mk
@@ -50,15 +50,15 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES= dlgepgm.src \
epgmstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/epgm.obj \
$(SLO)$/dlgepgm.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= epg$(DLLPOSTFIX)
SHL1IMPLIB= epgm
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
@@ -74,7 +74,7 @@ SHL1OBJS= $(SLO)$/epgm.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/epict/makefile.mk b/goodies/source/filter.vcl/epict/makefile.mk
index 33af96f1fb85..4aa4bab80ffc 100644
--- a/goodies/source/filter.vcl/epict/makefile.mk
+++ b/goodies/source/filter.vcl/epict/makefile.mk
@@ -50,15 +50,15 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES = dlgepct.src \
epictstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/epict.obj \
$(SLO)$/dlgepct.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= ept$(DLLPOSTFIX)
SHL1IMPLIB= epict
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
@@ -74,7 +74,7 @@ SHL1OBJS= $(SLO)$/epict.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/eppm/makefile.mk b/goodies/source/filter.vcl/eppm/makefile.mk
index 8ac83d7f1c8d..b40f9d897b8a 100644
--- a/goodies/source/filter.vcl/eppm/makefile.mk
+++ b/goodies/source/filter.vcl/eppm/makefile.mk
@@ -49,15 +49,15 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES= dlgeppm.src \
eppmstr.src
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/eppm.obj \
$(SLO)$/dlgeppm.obj
-
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET2)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= epp$(DLLPOSTFIX)
SHL1IMPLIB= eppm
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(CPPULIB) $(SVTOOLLIB) $(SALLIB)
@@ -73,6 +73,7 @@ SHL1OBJS= $(SLO)$/eppm.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/eps/makefile.mk b/goodies/source/filter.vcl/eps/makefile.mk
index 59b63477531d..c5599344725a 100644
--- a/goodies/source/filter.vcl/eps/makefile.mk
+++ b/goodies/source/filter.vcl/eps/makefile.mk
@@ -50,16 +50,17 @@ CDEFS+= -DEDITDEBUG
SRS1NAME=$(TARGET)
SRC1FILES = dlgeps.src \
epsstr.src
-
+.IF "$(L10N_framework)"==""
EXCEPTIONSFILES=$(SLO)$/eps.obj
SLOFILES = $(SLO)$/eps.obj \
$(SLO)$/dlgeps.obj
+.ENDIF
# ==========================================================================
RESLIB1NAME=$(TARGET)
RESLIB1SRSFILES=$(SRS)$/$(TARGET).srs
-
+.IF "$(L10N_framework)"==""
SHL1TARGET= eps$(DLLPOSTFIX)
SHL1IMPLIB= eps
SHL1STDLIBS= $(TOOLSLIB) $(VCLLIB) $(VCLLIB) $(SVTOOLLIB) $(CPPULIB) $(SALLIB)
@@ -75,6 +76,7 @@ SHL1OBJS= $(SLO)$/eps.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/eras/makefile.mk b/goodies/source/filter.vcl/eras/makefile.mk
index ae68c4a4ded6..e6aeaeefb223 100644
--- a/goodies/source/filter.vcl/eras/makefile.mk
+++ b/goodies/source/filter.vcl/eras/makefile.mk
@@ -40,7 +40,7 @@ DEPTARGET=veras
.INCLUDE : settings.mk
# --- Allgemein ----------------------------------------------------------
-
+.IF "$(L10N_framework)"==""
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
@@ -63,6 +63,7 @@ SHL1OBJS= $(SLO)$/eras.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/etiff/makefile.mk b/goodies/source/filter.vcl/etiff/makefile.mk
index 69b958fc3598..70902012ce23 100644
--- a/goodies/source/filter.vcl/etiff/makefile.mk
+++ b/goodies/source/filter.vcl/etiff/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vetiff
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/etiff.obj
# ==========================================================================
@@ -63,7 +63,7 @@ SHL1OBJS= $(SLO)$/etiff.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/expm/makefile.mk b/goodies/source/filter.vcl/expm/makefile.mk
index a4093415be76..e123220feff8 100644
--- a/goodies/source/filter.vcl/expm/makefile.mk
+++ b/goodies/source/filter.vcl/expm/makefile.mk
@@ -45,7 +45,7 @@ DEPTARGET=vexpm
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/expm.obj
# ==========================================================================
@@ -64,7 +64,7 @@ SHL1OBJS= $(SLO)$/expm.obj
SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/icgm/makefile.mk b/goodies/source/filter.vcl/icgm/makefile.mk
index 0d97b3a144ef..ee62bbfb051c 100644
--- a/goodies/source/filter.vcl/icgm/makefile.mk
+++ b/goodies/source/filter.vcl/icgm/makefile.mk
@@ -39,7 +39,7 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
# --- Files --------------------------------------------------------
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/cgm.obj \
$(SLO)$/chart.obj \
$(SLO)$/class0.obj \
@@ -76,6 +76,7 @@ SHL1STDLIBS = \
$(TOOLSLIB) \
$(CPPULIB) \
$(SALLIB)
+.ENDIF
# --- Targets --------------------------------------------------------------
diff --git a/goodies/source/filter.vcl/idxf/makefile.mk b/goodies/source/filter.vcl/idxf/makefile.mk
index dbbcc83cec45..081022cd4e5b 100644
--- a/goodies/source/filter.vcl/idxf/makefile.mk
+++ b/goodies/source/filter.vcl/idxf/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vidxf
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
EXCEPTIONSFILES=\
$(SLO)$/dxfentrd.obj \
$(SLO)$/dxf2mtf.obj
@@ -76,6 +76,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/ieps/makefile.mk b/goodies/source/filter.vcl/ieps/makefile.mk
index b1e38231a3ff..673cce72744c 100644
--- a/goodies/source/filter.vcl/ieps/makefile.mk
+++ b/goodies/source/filter.vcl/ieps/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vieps
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ieps.obj
# ==========================================================================
@@ -64,7 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ios2met/makefile.mk b/goodies/source/filter.vcl/ios2met/makefile.mk
index 0cb3e762f06f..c987476316c6 100644
--- a/goodies/source/filter.vcl/ios2met/makefile.mk
+++ b/goodies/source/filter.vcl/ios2met/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vios2met
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ios2met.obj
# ==========================================================================
@@ -65,7 +65,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
-
+.ENDIF
# ==========================================================================
.INCLUDE : target.mk
diff --git a/goodies/source/filter.vcl/ipbm/makefile.mk b/goodies/source/filter.vcl/ipbm/makefile.mk
index 1ef6fe0fd33b..84a9815a4974 100644
--- a/goodies/source/filter.vcl/ipbm/makefile.mk
+++ b/goodies/source/filter.vcl/ipbm/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vipbm
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ipbm.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/ipcd/makefile.mk b/goodies/source/filter.vcl/ipcd/makefile.mk
index c125d88e4bf9..7782b7b8e627 100644
--- a/goodies/source/filter.vcl/ipcd/makefile.mk
+++ b/goodies/source/filter.vcl/ipcd/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vipcd
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ipcd.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/ipcx/makefile.mk b/goodies/source/filter.vcl/ipcx/makefile.mk
index 796f16daaff8..7f0f309ae786 100644
--- a/goodies/source/filter.vcl/ipcx/makefile.mk
+++ b/goodies/source/filter.vcl/ipcx/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vipcx
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ipcx.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/ipict/makefile.mk b/goodies/source/filter.vcl/ipict/makefile.mk
index 56c158316ad7..2d84bffe3c36 100644
--- a/goodies/source/filter.vcl/ipict/makefile.mk
+++ b/goodies/source/filter.vcl/ipict/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vipict
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ipict.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/ipsd/makefile.mk b/goodies/source/filter.vcl/ipsd/makefile.mk
index 933827b88ef4..cd29c94f8074 100644
--- a/goodies/source/filter.vcl/ipsd/makefile.mk
+++ b/goodies/source/filter.vcl/ipsd/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vipsd
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/ipsd.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/iras/makefile.mk b/goodies/source/filter.vcl/iras/makefile.mk
index 1a4190a6e180..28b84c8401ef 100644
--- a/goodies/source/filter.vcl/iras/makefile.mk
+++ b/goodies/source/filter.vcl/iras/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=viras
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/iras.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/itga/makefile.mk b/goodies/source/filter.vcl/itga/makefile.mk
index 980b155a5210..a9dfe2e77643 100644
--- a/goodies/source/filter.vcl/itga/makefile.mk
+++ b/goodies/source/filter.vcl/itga/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vitga
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/itga.obj
# ==========================================================================
@@ -64,6 +64,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/filter.vcl/itiff/makefile.mk b/goodies/source/filter.vcl/itiff/makefile.mk
index 9b610d421f37..78405a563659 100644
--- a/goodies/source/filter.vcl/itiff/makefile.mk
+++ b/goodies/source/filter.vcl/itiff/makefile.mk
@@ -44,7 +44,7 @@ DEPTARGET=vitiff
.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!=""
CDEFS+= -DEDITDEBUG
.ENDIF
-
+.IF "$(L10N_framework)"==""
SLOFILES = $(SLO)$/itiff.obj \
$(SLO)$/lzwdecom.obj \
$(SLO)$/ccidecom.obj
@@ -68,6 +68,7 @@ SHL1VERSIONMAP=exports.map
SHL1DEF= $(MISC)$/$(SHL1TARGET).def
DEF1NAME=$(SHL1TARGET)
+.ENDIF
# ==========================================================================
diff --git a/goodies/source/inv/makefile.mk b/goodies/source/inv/makefile.mk
index 359aab167008..500ba17f6091 100644
--- a/goodies/source/inv/makefile.mk
+++ b/goodies/source/inv/makefile.mk
@@ -42,6 +42,7 @@ EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
.INCLUDE : settings.mk
# --- Files --------------------------------------------------------
+.IF "$(L10N_framework)"==""
.IF "$(TEST)" != ""
CDEFS+=-DTEST
@@ -62,6 +63,7 @@ SLOFILES= \
$(SLO)$/score.obj \
$(SLO)$/monst.obj
.ENDIF
+.ENDIF
SRS1NAME=$(TARGET)
SRC1FILES=gegner.src strings.src
@@ -70,6 +72,9 @@ RESLIB1IMAGES= $(PRJ)$/res
RESLIB1NAME=tfu
RESLIB1SRSFILES=$(SRS)$/invader.srs
+
+.IF "$(L10N_framework)"==""
+
.IF "$(TEST)"!=""
APP1TARGET= $(TARGET)
APP1OBJS= $(OBJFILES)
@@ -85,7 +90,7 @@ APP1STDLIBS= $(CPPULIB) \
.ELSE
SHL1TARGET= tfu$(DLLPOSTFIX)
-SHL1IMPLIB= itfu
+SHL1IMPLIB= i
SHL1STDLIBS=\
$(VCLLIB) \
$(TOOLSLIB) \
@@ -103,10 +108,11 @@ SHL1DEF=$(MISC)$/$(SHL1TARGET).def
.ENDIF
# --- Targets -------------------------------------------------------
-
+.ENDIF
.INCLUDE : target.mk
+.IF "$(L10N_framework)"==""
ALLTAR: \
$(BIN)$/applicat.rdb
@@ -147,3 +153,7 @@ $(MISC)$/$(SHL1TARGET).def: makefile.mk
.ENDIF
+.ELSE
+pseudo:
+
+.ENDIF
diff --git a/goodies/util/makefile.mk b/goodies/util/makefile.mk
index 13bb94069804..dc5d9566ea8a 100644
--- a/goodies/util/makefile.mk
+++ b/goodies/util/makefile.mk
@@ -42,6 +42,7 @@ GEN_HID=TRUE
.INCLUDE : settings.mk
# --- Allgemein ---------------------------------------------------
+.IF "$(L10N_framework)"==""
LIB1TARGET=$(SLB)$/go.lib
LIB1FILES=\
@@ -78,6 +79,7 @@ DEF1EXPORTFILE =goodies.dxp
# THB: exports list goodies checked for 6.0 Final 6.12.2001
# Note: explicit exports only necessary for VCL graphic filters (see there)
+.ENDIF
# --- Targets -----------------------------------------------------------
@@ -86,6 +88,7 @@ DEF1EXPORTFILE =goodies.dxp
.IF "$(depend)"==""
# --- Goodies-Filter-Datei ---
+.IF "$(L10N_framework)"==""
$(MISC)$/$(SHL1TARGET).flt: makefile.mk
@echo ------------------------------
@@ -98,3 +101,5 @@ $(MISC)$/$(SHL1TARGET).flt: makefile.mk
@echo CT>>$@
.ENDIF
+
+.ENDIF
diff --git a/i18npool/inc/defaultnumberingprovider.hxx b/i18npool/inc/defaultnumberingprovider.hxx
index f3f8082eef55..2bfc9e707d69 100644
--- a/i18npool/inc/defaultnumberingprovider.hxx
+++ b/i18npool/inc/defaultnumberingprovider.hxx
@@ -53,6 +53,7 @@ class DefaultNumberingProvider : public cppu::WeakImplHelper4
void GetCharStrN( sal_Int32 nValue, sal_Int16 nType, rtl::OUString& rStr ) const;
void GetCharStr( sal_Int32 nValue, sal_Int16 nType, rtl::OUString& rStr ) const;
void GetRomanString( sal_Int32 nValue, sal_Int16 nType, rtl::OUString& rStr ) const;
+ void impl_loadTranslit();
public:
DefaultNumberingProvider(
const com::sun::star::uno::Reference < com::sun::star::lang::XMultiServiceFactory >& xMSF );
diff --git a/i18npool/inc/i18npool/lang.h b/i18npool/inc/i18npool/lang.h
index 68ae24bc2c21..eaf7eb9c2ea8 100644
--- a/i18npool/inc/i18npool/lang.h
+++ b/i18npool/inc/i18npool/lang.h
@@ -501,5 +501,7 @@ typedef unsigned short LanguageType;
#define LANGUAGE_USER_ARABIC_PALESTINE 0x9801 /* makeLangID( 0x26, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
#define LANGUAGE_USER_ARABIC_SOMALIA 0x9C01 /* makeLangID( 0x27, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
#define LANGUAGE_USER_ARABIC_SUDAN 0xA001 /* makeLangID( 0x28, getPrimaryLanguage( LANGUAGE_ARABIC_SAUDI_ARABIA)) */
+#define LANGUAGE_USER_ANCIENT_GREEK 0x0649
+#define LANGUAGE_USER_ASTURIAN 0x064A
#endif /* INCLUDED_I18NPOOL_LANG_H */
diff --git a/i18npool/inc/i18npool/mslangid.hxx b/i18npool/inc/i18npool/mslangid.hxx
index 7cc5e6bd8926..27688cd995dc 100644
--- a/i18npool/inc/i18npool/mslangid.hxx
+++ b/i18npool/inc/i18npool/mslangid.hxx
@@ -216,6 +216,9 @@ public:
static LanguageType getRealLanguageWithoutConfig( LanguageType nLang );
+ static LanguageType resolveSystemLanguageByScriptType( LanguageType nLang, sal_Int16 nType );
+
+
/** Whether locale has a Right-To-Left orientation. */
static bool isRightToLeft( LanguageType nLang );
@@ -246,6 +249,9 @@ public:
configuration! */
static void setConfiguredSystemLanguage( LanguageType nLang );
static void setConfiguredSystemUILanguage( LanguageType nLang );
+ static void setConfiguredWesternFallback( LanguageType nLang );
+ static void setConfiguredComplexFallback( LanguageType nLang );
+ static void setConfiguredAsianFallback( LanguageType nLang );
// ---------------------------------------------------------------------------
@@ -274,6 +280,10 @@ private:
static LanguageType nConfiguredSystemLanguage;
static LanguageType nConfiguredSystemUILanguage;
+ static LanguageType nConfiguredWesternFallback;
+ static LanguageType nConfiguredAsianFallback;
+ static LanguageType nConfiguredComplexFallback;
+
static LanguageType getPlatformSystemLanguage();
static LanguageType getPlatformSystemUILanguage();
diff --git a/i18npool/inc/xdictionary.hxx b/i18npool/inc/xdictionary.hxx
index 04c5836aaaea..ac2005c9f397 100644
--- a/i18npool/inc/xdictionary.hxx
+++ b/i18npool/inc/xdictionary.hxx
@@ -87,9 +87,9 @@ public:
private:
WordBreakCache cache[CACHE_MAX];
- sal_Bool seekSegment(const sal_Unicode *text, sal_Int32 pos, sal_Int32 len, Boundary& boundary);
+ sal_Bool seekSegment(const rtl::OUString& rText, sal_Int32 pos, Boundary& boundary);
WordBreakCache& getCache(const sal_Unicode *text, Boundary& boundary);
- sal_Bool exists(const sal_Unicode u);
+ sal_Bool exists(const sal_uInt32 u);
sal_Int32 getLongestMatch(const sal_Unicode *text, sal_Int32 len);
};
diff --git a/i18npool/source/breakiterator/breakiteratorImpl.cxx b/i18npool/source/breakiterator/breakiteratorImpl.cxx
index 0eb4c20ca250..0a75e642f240 100644
--- a/i18npool/source/breakiterator/breakiteratorImpl.cxx
+++ b/i18npool/source/breakiterator/breakiteratorImpl.cxx
@@ -261,13 +261,29 @@ sal_Int16 SAL_CALL BreakIteratorImpl::getScriptType( const OUString& Text, sal_I
getScriptClass(Text.iterateCodePoints(&nPos, 0));
}
+
+/** Increments/decrements position first, then obtains character.
+ @return current position, may be -1 or text length if string was consumed.
+ */
static sal_Int32 SAL_CALL iterateCodePoints(const OUString& Text, sal_Int32 &nStartPos, sal_Int32 inc, sal_uInt32& ch) {
- if (nStartPos + inc < 0 || nStartPos + inc >= Text.getLength()) {
+ sal_Int32 nLen = Text.getLength();
+ if (nStartPos + inc < 0 || nStartPos + inc >= nLen) {
ch = 0;
- nStartPos = nStartPos + inc < 0 ? -1 : Text.getLength();
+ nStartPos = nStartPos + inc < 0 ? -1 : nLen;
} else {
ch = Text.iterateCodePoints(&nStartPos, inc);
- if (inc > 0) ch = Text.iterateCodePoints(&nStartPos, 0);
+ // Fix for #i80436#.
+ // erAck: 2009-06-30T21:52+0200 This logic looks somewhat
+ // suspicious as if it cures a symptom.. anyway, had to add
+ // nStartPos < Text.getLength() to silence the (correct) assertion
+ // in rtl_uString_iterateCodePoints() if Text was one character
+ // (codepoint) only, made up of a surrogate pair.
+ //if (inc > 0 && nStartPos < Text.getLength())
+ // ch = Text.iterateCodePoints(&nStartPos, 0);
+ // With surrogates, nStartPos may actually point behind string
+ // now, even if inc is only +1
+ if (inc > 0)
+ ch = (nStartPos < nLen ? Text.iterateCodePoints(&nStartPos, 0) : 0);
}
return nStartPos;
}
diff --git a/i18npool/source/breakiterator/breakiterator_cjk.cxx b/i18npool/source/breakiterator/breakiterator_cjk.cxx
index 3a44c02edc23..9d690469067a 100644
--- a/i18npool/source/breakiterator/breakiterator_cjk.cxx
+++ b/i18npool/source/breakiterator/breakiterator_cjk.cxx
@@ -112,13 +112,13 @@ LineBreakResults SAL_CALL BreakIterator_CJK::getLineBreak(
if (bOptions.allowPunctuationOutsideMargin &&
hangingCharacters.indexOf(Text[nStartPos]) != -1 &&
- ++nStartPos == Text.getLength()) {
+ (Text.iterateCodePoints( &nStartPos, 1), nStartPos == Text.getLength())) {
; // do nothing
} else if (bOptions.applyForbiddenRules && 0 < nStartPos && nStartPos < Text.getLength()) {
while (nStartPos > 0 &&
(bOptions.forbiddenBeginCharacters.indexOf(Text[nStartPos]) != -1 ||
bOptions.forbiddenEndCharacters.indexOf(Text[nStartPos-1]) != -1))
- nStartPos--;
+ Text.iterateCodePoints( &nStartPos, -1);
}
lbr.breakIndex = nStartPos;
diff --git a/i18npool/source/breakiterator/xdictionary.cxx b/i18npool/source/breakiterator/xdictionary.cxx
index f286dd2449ac..add22f39d58e 100644
--- a/i18npool/source/breakiterator/xdictionary.cxx
+++ b/i18npool/source/breakiterator/xdictionary.cxx
@@ -126,8 +126,9 @@ void xdictionary::setJapaneseWordBreak()
japaneseWordBreak = sal_True;
}
-sal_Bool xdictionary::exists(const sal_Unicode c) {
- sal_Bool exist = existMark ? sal::static_int_cast<sal_Bool>((existMark[c>>3] & (1<<(c&0x07))) != 0) : sal_False;
+sal_Bool xdictionary::exists(const sal_uInt32 c) {
+ // 0x1FFF is the hardcoded limit in gendict for existMarks
+ sal_Bool exist = (existMark && ((c>>3) < 0x1FFF)) ? sal::static_int_cast<sal_Bool>((existMark[c>>3] & (1<<(c&0x07))) != 0) : sal_False;
if (!exist && japaneseWordBreak)
return BreakIteratorImpl::getScriptClass(c) == ScriptType::ASIAN;
else
@@ -197,20 +198,35 @@ sal_Bool WordBreakCache::equals(const sal_Unicode* str, Boundary& boundary) {
* @param pos : Position of the given character.
* @return true if CJK.
*/
-sal_Bool xdictionary::seekSegment(const sal_Unicode *text, sal_Int32 pos,
- sal_Int32 len, Boundary& segBoundary) {
- for (segBoundary.startPos = pos - 1;
- segBoundary.startPos >= 0 &&
- (u_isWhitespace((sal_uInt32)text[segBoundary.startPos]) || exists(text[segBoundary.startPos]));
- segBoundary.startPos--) ;
- segBoundary.startPos++;
-
- for (segBoundary.endPos = pos;
- segBoundary.endPos < len &&
- (u_isWhitespace((sal_uInt32)text[segBoundary.endPos]) || exists(text[segBoundary.endPos]));
- segBoundary.endPos++) ;
-
- return segBoundary.endPos > segBoundary.startPos + 1;
+sal_Bool xdictionary::seekSegment(const rtl::OUString &rText, sal_Int32 pos,
+ Boundary& segBoundary)
+{
+ sal_Int32 indexUtf16;
+ segBoundary.endPos = segBoundary.startPos = pos;
+
+ indexUtf16 = pos;
+ while (indexUtf16 > 0)
+ {
+ sal_uInt32 ch = rText.iterateCodePoints(&indexUtf16, -1);
+ if (u_isWhitespace(ch) || exists(ch))
+ segBoundary.startPos = indexUtf16;
+ else
+ break;
+ }
+
+ indexUtf16 = pos;
+ while (indexUtf16 < rText.getLength())
+ {
+ sal_uInt32 ch = rText.iterateCodePoints(&indexUtf16, 1);
+ if (u_isWhitespace(ch) || exists(ch))
+ segBoundary.endPos = indexUtf16;
+ else
+ break;
+ }
+
+ indexUtf16 = segBoundary.startPos;
+ rText.iterateCodePoints(&indexUtf16, 1);
+ return segBoundary.endPos > indexUtf16;
}
#define KANJA 1
@@ -340,19 +356,24 @@ Boundary xdictionary::getWordBoundary(const OUString& rText, sal_Int32 anyPos, s
sal_Int32 len=rText.getLength();
if (anyPos >= len || anyPos < 0) {
boundary.startPos = boundary.endPos = anyPos < 0 ? 0 : len;
- } else if (seekSegment(text, anyPos, len, boundary)) { // character in dict
+ } else if (seekSegment(rText, anyPos, boundary)) { // character in dict
WordBreakCache& aCache = getCache(text, boundary);
sal_Int32 i = 0;
- while (aCache.wordboundary[i] <= (sal_Int32)anyPos - boundary.startPos) i++;
+ while (aCache.wordboundary[i] <= anyPos - boundary.startPos) i++;
sal_Int32 startPos = aCache.wordboundary[i - 1];
// if bDirection is false
- if (!bDirection && startPos > 0 && startPos == (anyPos - boundary.startPos) &&
- u_isWhitespace((sal_uInt32) text[anyPos - 1]))
- i--;
- boundary.endPos = aCache.wordboundary[i] + boundary.startPos;
- boundary.startPos += aCache.wordboundary[i - 1];
+ if (!bDirection && startPos > 0 && startPos == (anyPos - boundary.startPos))
+ {
+ sal_Int32 indexUtf16 = anyPos-1;
+ sal_uInt32 ch = rText.iterateCodePoints(&indexUtf16, 1);
+ if (u_isWhitespace(ch))
+ i--;
+ }
+ boundary.endPos = boundary.startPos;
+ rText.iterateCodePoints(&boundary.endPos, aCache.wordboundary[i]);
+ rText.iterateCodePoints(&boundary.startPos, aCache.wordboundary[i-1]);
} else {
boundary.startPos = anyPos;
if (anyPos < len) rText.iterateCodePoints(&anyPos, 1);
@@ -360,8 +381,14 @@ Boundary xdictionary::getWordBoundary(const OUString& rText, sal_Int32 anyPos, s
}
if (wordType == WordType::WORD_COUNT) {
// skip punctuation for word count.
- while (boundary.endPos < len && u_ispunct((sal_uInt32)text[boundary.endPos]))
- boundary.endPos++;
+ while (boundary.endPos < len)
+ {
+ sal_Int32 indexUtf16 = boundary.endPos;
+ if (u_ispunct(rText.iterateCodePoints(&indexUtf16, 1)))
+ boundary.endPos = indexUtf16;
+ else
+ break;
+ }
}
return boundary;
diff --git a/i18npool/source/collator/makefile.mk b/i18npool/source/collator/makefile.mk
index bca1c00aa419..b38386d53de0 100644
--- a/i18npool/source/collator/makefile.mk
+++ b/i18npool/source/collator/makefile.mk
@@ -42,7 +42,7 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
-txtlist:=$(shell @cd data && ls *.txt)
+txtlist:=$(shell @cd data >& $(NULLDEV) && ls *.txt)
LOCAL_RULE_LANGS:=$(uniq $(foreach,i,$(txtlist) $(i:s/-/_/:s/_/ /:1)))
rules_dependencies:=$(foreach,i,$(txtlist) data$/$i) $(INCCOM)$/lrl_include.hxx
diff --git a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
index d7b42601b01f..91d856b19e62 100644
--- a/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
+++ b/i18npool/source/defaultnumberingprovider/defaultnumberingprovider.cxx
@@ -190,9 +190,9 @@ static sal_Unicode lowerLetter[] = {
0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A
};
-DefaultNumberingProvider::DefaultNumberingProvider( const Reference < XMultiServiceFactory >& xMSF ) : xSMgr(xMSF)
+DefaultNumberingProvider::DefaultNumberingProvider( const Reference < XMultiServiceFactory >& xMSF ) : xSMgr(xMSF),translit(NULL)
{
- translit = new TransliterationImpl(xMSF);
+
}
DefaultNumberingProvider::~DefaultNumberingProvider()
@@ -200,6 +200,12 @@ DefaultNumberingProvider::~DefaultNumberingProvider()
delete translit;
}
+void DefaultNumberingProvider::impl_loadTranslit()
+{
+ if ( !translit )
+ translit = new TransliterationImpl(xSMgr);
+}
+
Sequence< Reference<container::XIndexAccess> >
DefaultNumberingProvider::getDefaultOutlineNumberings(const Locale& rLocale ) throw(RuntimeException)
{
@@ -463,6 +469,7 @@ DefaultNumberingProvider::makeNumberingString( const Sequence<beans::PropertyVal
const OUString &tmp = OUString::valueOf( number );
OUString transliteration;
getPropertyByName(aProperties, "Transliteration", sal_True) >>= transliteration;
+ impl_loadTranslit();
translit->loadModuleByImplName(transliteration, aLocale);
result += translit->transliterateString2String(tmp, 0, tmp.getLength());
} catch (Exception& ) {
diff --git a/i18npool/source/isolang/inunx.cxx b/i18npool/source/isolang/inunx.cxx
index 195ddfabf9b7..7e79625085bb 100644
--- a/i18npool/source/isolang/inunx.cxx
+++ b/i18npool/source/isolang/inunx.cxx
@@ -60,11 +60,11 @@ static const sal_Char* getLangFromEnvironment()
const sal_Char *pLang = NULL;
pLang = getenv ( "LC_ALL" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = getenv ( "LC_CTYPE" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = getenv( "LANG" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = pFallback;
return pLang;
@@ -79,13 +79,13 @@ static const sal_Char* getUILangFromEnvironment()
const sal_Char *pLang = NULL;
pLang = getenv ( "LANGUAGE" ); // respect the GNU extension
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = getenv ( "LC_ALL" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = getenv ( "LC_MESSAGES" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = getenv( "LANG" );
- if (! pLang)
+ if (! pLang || pLang[0] == 0)
pLang = pFallback;
return pLang;
diff --git a/i18npool/source/isolang/isolang.cxx b/i18npool/source/isolang/isolang.cxx
index 74416df665a0..c321f62c95f9 100644
--- a/i18npool/source/isolang/isolang.cxx
+++ b/i18npool/source/isolang/isolang.cxx
@@ -331,9 +331,9 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_VENDA, "ven", "ZA" }, // 639-2 may have been used temporarily since 2004-07-23
{ LANGUAGE_XHOSA, "xh", "ZA" },
{ LANGUAGE_ZULU, "zu", "ZA" },
- { LANGUAGE_QUECHUA_BOLIVIA, "qu", "BO" },
{ LANGUAGE_QUECHUA_ECUADOR, "qu", "EC" },
{ LANGUAGE_QUECHUA_PERU, "qu", "PE" },
+ { LANGUAGE_QUECHUA_BOLIVIA, "qu", "BO" }, // macro: quh-BO, qul-BO
{ LANGUAGE_PASHTO, "ps", "AF" },
{ LANGUAGE_OROMO, "om", "ET" },
{ LANGUAGE_DHIVEHI, "dv", "MV" },
@@ -446,6 +446,8 @@ static MsLangId::IsoLangEntry const aImplIsoLangEntries[] =
{ LANGUAGE_USER_TETUN_TIMOR_LESTE, "tet", "TL" },
{ LANGUAGE_USER_TOK_PISIN, "tpi", "PG" },
{ LANGUAGE_USER_SHUSWAP, "shs", "CA" },
+ { LANGUAGE_USER_ANCIENT_GREEK, "grc", "GR" },
+ { LANGUAGE_USER_ASTURIAN, "ast", "ES" },
{ LANGUAGE_NONE, "zxx", "" }, // added to ISO 639-2 on 2006-01-11: Used to declare the absence of linguistic information
{ LANGUAGE_DONTKNOW, "", "" } // marks end of table
};
diff --git a/i18npool/source/isolang/langid.pl b/i18npool/source/isolang/langid.pl
index 40313c5cc707..f4852cc7197d 100755
--- a/i18npool/source/isolang/langid.pl
+++ b/i18npool/source/isolang/langid.pl
@@ -43,7 +43,7 @@ sub Usage()
"\n",
"langid - a hackish utility to lookup lang.h language defines and LangIDs,\n",
"isolang.cxx ISO639/ISO3166 mapping, locale data files, langtab.src language\n",
- "listbox entries, Langpack.ulf installer language and file_ooo.scp registry name.\n\n",
+ "listbox entries, postset.mk and file_ooo.scp registry name.\n\n",
"Usage: $0 [--single] {language string} | {LangID} | {primarylanguage sublanguage} | {language-country}\n\n",
@@ -104,11 +104,12 @@ sub makeLangID($$)
}
-sub grepFile($$$$$)
+sub grepFile($$$$@)
{
- my( $regex, $modifier, $path, $module, $name) = @_;
+ my( $regex, $path, $module, $name, @addregex) = @_;
my @result;
my $found = 0;
+ my $arefound = '';
my $file;
# Try module under current working directory first to catch local
# modifications. A Not yet delivered lang.h is a special case.
@@ -125,43 +126,51 @@ sub grepFile($$$$$)
print "No $file\n";
$file = "$path/$module.lnk/$name";
if (!($found = open( IN, $file))) {
- print "No $file either.\n"; }
+ print "No $file.\n";
+ $file = "$path/$module.link/$name";
+ if (!($found = open( IN, $file))) {
+ print "No $file either.\n"; }
+ }
}
}
if ($found)
{
$found = 0;
- if ($modifier eq "i")
+ while (my $line = <IN>)
{
- while (my $line = <IN>)
+ if ($line =~ /$regex/)
{
- if ($line =~ /$regex/i)
+ if (!$found)
{
- if (!$found)
- {
- $found = 1;
- print "$file:\n";
- }
- chomp( $line);
- print "$line\n";
- push( @result, $line);
+ $found = 1;
+ print "$file:\n";
}
+ chomp( $line);
+ print "$line\n";
+ push( @result, $line);
}
- }
- else
- {
- while (my $line = <IN>)
+ else
{
- if ($line =~ /$regex/)
+ for my $re (@addregex)
{
- if (!$found)
+ if ($re ne $arefound && $line =~ /$re/)
{
- $found = 1;
- print "$file:\n";
+ if ($arefound eq '')
+ {
+ $arefound = $re;
+ }
+ else
+ {
+ if (!$found)
+ {
+ $found = 1;
+ print "$file:\n";
+ }
+ chomp( $line);
+ print "$line\n";
+ push( @result, $line);
+ }
}
- chomp( $line);
- print "$line\n";
- push( @result, $line);
}
}
}
@@ -214,16 +223,16 @@ sub main()
Usage();
return 1;
}
- my $modifier = "i";
- my (@resultlist, @greplist, @lcidlist, $result);
+ my $modifier = "(?i)";
+ my (@resultlist, @greplist, $result);
# If no string was given on the command line, but value(s) were, lookup the
# LangID value to obtain the define identifier.
if ($grepdef)
{
# #define LANGUAGE_AFRIKAANS 0x0436
@resultlist = grepFile(
- '^\s*#\s*define\s+[A-Z_]*' . $grepdef, $modifier,
- $SOLENVINC, "i18npool", "lang.h");
+ $modifier . '^\s*#\s*define\s+[A-Z_]*' . $grepdef,
+ $SOLENVINC, "i18npool", "lang.h", ());
}
else
{
@@ -231,8 +240,8 @@ sub main()
$lcid, $parts[0], $parts[1]);
my $buf = sprintf( "0x%04X", $lcid);
@resultlist = grepFile(
- '^\s*#\s*define\s+\w+\s+' . $buf, "",
- $SOLENVINC, "i18npool", "lang.h");
+ '^\s*#\s*define\s+\w+\s+' . $buf,
+ $SOLENVINC, "i18npool", "lang.h", ());
}
for $result (@resultlist)
{
@@ -260,8 +269,8 @@ sub main()
$coun = uc($coun);
# { LANGUAGE_AFRIKAANS, "af", "ZA" },
@resultlist = grepFile(
- '^\s*\{\s*\w+\s*,\s*\"' . $lang . '\"\s*,\s*\"' . $coun . '\"\s*\}\s*,', "",
- "$SRC_ROOT", "i18npool", "source/isolang/isolang.cxx");
+ '^\s*\{\s*\w+\s*,\s*\"' . $lang . '\"\s*,\s*\"' . $coun . '\"\s*\}\s*,',
+ "$SRC_ROOT", "i18npool", "source/isolang/isolang.cxx", ());
for $result (@resultlist)
{
if ($result =~ /^\s*\{\s*(\w+)\s*,\s*\"\w+\"\s*,\s*\"(\w+)?\"\s*\}\s*,/)
@@ -279,10 +288,13 @@ sub main()
for $grepdef (@greplist)
{
print "\nUsing: " . $grepdef . "\n";
+
+ # Decimal LCID, was needed for Langpack.ulf but isn't used anymore,
+ # keep just in case we'd need it again.
# #define LANGUAGE_AFRIKAANS 0x0436
@resultlist = grepFile(
- '^\s*#\s*define\s+[A-Z_]*' . $grepdef, $modifier,
- $SOLENVINC, "i18npool", "lang.h");
+ $modifier . '^\s*#\s*define\s+[A-Z_]*' . $grepdef,
+ $SOLENVINC, "i18npool", "lang.h", ());
my @lcidlist;
for $result (@resultlist)
{
@@ -295,8 +307,8 @@ sub main()
# { LANGUAGE_AFRIKAANS, "af", "ZA" },
@resultlist = grepFile(
- '^\s*\{\s*.*' . $grepdef . '.*\s*,\s*\".*\"\s*,\s*\".*\"\s*\}\s*,', $modifier,
- "$SRC_ROOT", "i18npool", "source/isolang/isolang.cxx");
+ $modifier . '^\s*\{\s*.*' . $grepdef . '.*\s*,\s*\".*\"\s*,\s*\".*\"\s*\}\s*,',
+ "$SRC_ROOT", "i18npool", "source/isolang/isolang.cxx", ());
my @langcoungreplist;
for $result (@resultlist)
@@ -322,7 +334,11 @@ sub main()
if (!($found = open( LD, $file)))
{
$file = "$SRC_ROOT/i18npool.lnk/source/localedata/data/$loca.xml";
- $found = open( LD, $file);
+ if (!($found = open( LD, $file)))
+ {
+ $file = "$SRC_ROOT/i18npool.link/source/localedata/data/$loca.xml";
+ $found = open( LD, $file);
+ }
}
if ($found)
{
@@ -346,8 +362,8 @@ sub main()
# case LANGUAGE_ARABIC:
grepFile(
- '^\s*case\s*.*' . $grepdef . '.*\s*:', $modifier,
- "$SRC_ROOT", "i18npool", "source/isolang/mslangid.cxx");
+ $modifier . '^\s*case\s*.*' . $grepdef . '.*\s*:',
+ "$SRC_ROOT", "i18npool", "source/isolang/mslangid.cxx", ());
# With CWS 'langstatusbar' the language listbox resource file gets a new location.
my $module = "svx";
@@ -359,28 +375,26 @@ sub main()
# < "Afrikaans" ; LANGUAGE_AFRIKAANS ; > ;
# lookup define
@resultlist = grepFile(
- '^\s*<\s*\".*\"\s*;\s*.*' . $grepdef . '.*\s*;\s*>\s*;', $modifier,
- "$SRC_ROOT", $module, $name);
+ $modifier . '^\s*<\s*\".*\"\s*;\s*.*' . $grepdef . '.*\s*;\s*>\s*;',
+ "$SRC_ROOT", $module, $name, ());
# lookup string
if (!@resultlist) {
grepFile(
- '^\s*<\s*\".*' . $grepdef . '.*\"\s*;\s*.*\s*;\s*>\s*;', $modifier,
- "$SRC_ROOT", $module, $name); }
-
- for $lcid (@lcidlist)
- {
- # [OOO_LANGPACK_NAME_1033]
- grepFile(
- '^\s*\[OOO_LANGPACK_NAME_' . $lcid . '\]', "",
- "$SRC_ROOT", "instsetoo_native", "inc_openoffice/windows/msi_languages/Langpack.ulf");
- }
+ $modifier . '^\s*<\s*\".*' . $grepdef . '.*\"\s*;\s*.*\s*;\s*>\s*;',
+ "$SRC_ROOT", $module, $name, ()); }
for my $langcoun (@langcoungreplist)
{
# Name (xxx) = "/registry/spool/org/openoffice/Office/Common-ctl.xcu";
grepFile(
- '^\s*Name\s*\(' . $langcoun . '\)\s*=', "",
- "$SRC_ROOT", "scp2", "source/ooo/file_ooo.scp");
+ '^\s*Name\s*\(' . $langcoun . '\)\s*=',
+ "$SRC_ROOT", "scp2", "source/ooo/file_ooo.scp", ());
+ # completelangiso=af ar as-IN ... zu
+ grepFile(
+ '^\s*completelangiso\s*[= ](.{2,3}(-..)?)*' . $langcoun . '',
+ "$SRC_ROOT", "solenv", "inc/postset.mk",
+ # needs a duplicated pair of backslashes to produce a literal \\
+ ('^\s*completelangiso\s*=', '^\s+' . $langcoun . '\s*\\\\*$'));
}
}
return 0;
diff --git a/i18npool/source/isolang/mslangid.cxx b/i18npool/source/isolang/mslangid.cxx
index 070ddb9dc562..3476341fbc79 100644
--- a/i18npool/source/isolang/mslangid.cxx
+++ b/i18npool/source/isolang/mslangid.cxx
@@ -41,6 +41,9 @@
LanguageType MsLangId::nConfiguredSystemLanguage = LANGUAGE_SYSTEM;
LanguageType MsLangId::nConfiguredSystemUILanguage = LANGUAGE_SYSTEM;
+LanguageType MsLangId::nConfiguredWesternFallback = LANGUAGE_SYSTEM;
+LanguageType MsLangId::nConfiguredAsianFallback = LANGUAGE_SYSTEM;
+LanguageType MsLangId::nConfiguredComplexFallback = LANGUAGE_SYSTEM;
// static
void MsLangId::setConfiguredSystemLanguage( LanguageType nLang )
@@ -55,6 +58,23 @@ void MsLangId::setConfiguredSystemUILanguage( LanguageType nLang )
nConfiguredSystemUILanguage = nLang;
}
+// static
+void MsLangId::setConfiguredWesternFallback( LanguageType nLang )
+{
+ nConfiguredWesternFallback = nLang;
+}
+
+// static
+void MsLangId::setConfiguredAsianFallback( LanguageType nLang )
+{
+ nConfiguredAsianFallback = nLang;
+}
+
+// static
+void MsLangId::setConfiguredComplexFallback( LanguageType nLang )
+{
+ nConfiguredComplexFallback = nLang;
+}
// static
inline LanguageType MsLangId::simplifySystemLanguages( LanguageType nLang )
@@ -120,6 +140,40 @@ LanguageType MsLangId::getRealLanguage( LanguageType nLang )
// static
+LanguageType MsLangId::resolveSystemLanguageByScriptType( LanguageType nLang, sal_Int16 nType )
+{
+ if (nLang == LANGUAGE_NONE)
+ return nLang;
+
+ nLang = getRealLanguage(nLang);
+ if (nType != ::com::sun::star::i18n::ScriptType::WEAK && getScriptType(nLang) != nType)
+ {
+ switch(nType)
+ {
+ case ::com::sun::star::i18n::ScriptType::ASIAN:
+ if (nConfiguredAsianFallback == LANGUAGE_SYSTEM)
+ nLang = LANGUAGE_CHINESE_SIMPLIFIED;
+ else
+ nLang = nConfiguredComplexFallback;
+ break;
+ case ::com::sun::star::i18n::ScriptType::COMPLEX:
+ if (nConfiguredComplexFallback == LANGUAGE_SYSTEM)
+ nLang = LANGUAGE_HINDI;
+ else
+ nLang = nConfiguredComplexFallback;
+ break;
+ default:
+ if (nConfiguredWesternFallback == LANGUAGE_SYSTEM)
+ nLang = LANGUAGE_ENGLISH_US;
+ else
+ nLang = nConfiguredWesternFallback;
+ break;
+ }
+ }
+ return nLang;
+}
+
+// static
void MsLangId::convertLanguageToLocale( LanguageType nLang,
::com::sun::star::lang::Locale & rLocale )
{
@@ -211,10 +265,12 @@ bool MsLangId::isRightToLeft( LanguageType nLang )
{
case LANGUAGE_ARABIC_SAUDI_ARABIA & LANGUAGE_MASK_PRIMARY :
case LANGUAGE_HEBREW & LANGUAGE_MASK_PRIMARY :
+ case LANGUAGE_YIDDISH & LANGUAGE_MASK_PRIMARY :
case LANGUAGE_URDU & LANGUAGE_MASK_PRIMARY :
case LANGUAGE_FARSI & LANGUAGE_MASK_PRIMARY :
case LANGUAGE_KASHMIRI & LANGUAGE_MASK_PRIMARY :
case LANGUAGE_SINDHI & LANGUAGE_MASK_PRIMARY :
+ case LANGUAGE_UIGHUR_CHINA & LANGUAGE_MASK_PRIMARY :
return true;
default:
@@ -281,6 +337,7 @@ sal_Int16 MsLangId::getScriptType( LanguageType nLang )
case LANGUAGE_BURMESE:
case LANGUAGE_FARSI:
case LANGUAGE_HEBREW:
+ case LANGUAGE_YIDDISH:
case LANGUAGE_MARATHI:
case LANGUAGE_PUNJABI:
case LANGUAGE_GUJARATI:
diff --git a/i18npool/source/localedata/LocaleNode.cxx b/i18npool/source/localedata/LocaleNode.cxx
index 7596efc1087c..3f09e394a833 100644
--- a/i18npool/source/localedata/LocaleNode.cxx
+++ b/i18npool/source/localedata/LocaleNode.cxx
@@ -448,6 +448,11 @@ void LCCTYPENode::generateCode (const OFileWriter &of) const
if (aListSep == aThoSep)
fprintf( stderr, "Warning: %s\n",
"ListSeparator equals ThousandSeparator.");
+ if (aListSep.getLength() != 1 || aListSep.getStr()[0] != ';')
+ {
+ incError( "ListSeparator not ';' semicolon. Strongly recommended. Currently required.");
+ ++nSavErr; // format codes not affected
+ }
if (aTimeSep == aTime100Sep)
++nWarn, fprintf( stderr, "Warning: %s\n",
"Time100SecSeparator equals TimeSeparator, this is probably an error.");
@@ -1299,6 +1304,16 @@ void LCCalendarNode::generateCode (const OFileWriter &of) const
delete []nbOfEras;
}
+bool isIso4217( const OUString& rStr )
+{
+ const sal_Unicode* p = rStr.getStr();
+ return rStr.getLength() == 3
+ && 'A' <= p[0] && p[0] <= 'Z'
+ && 'A' <= p[1] && p[1] <= 'Z'
+ && 'A' <= p[2] && p[2] <= 'Z'
+ ;
+}
+
void LCCurrencyNode :: generateCode (const OFileWriter &of) const
{
::rtl::OUString useLocale = getAttr() -> getValueByName("ref");
@@ -1336,10 +1351,17 @@ void LCCurrencyNode :: generateCode (const OFileWriter &of) const
}
str = calNode -> findNode ("CurrencyID") -> getValue();
of.writeParameter("currencyID", str, nbOfCurrencies);
+ // CurrencyID MUST be ISO 4217.
+ if (!bLegacy && !isIso4217(str))
+ incError( "CurrencyID is not ISO 4217");
str = calNode -> findNode ("CurrencySymbol") -> getValue();
of.writeParameter("currencySymbol", str, nbOfCurrencies);
str = calNode -> findNode ("BankSymbol") -> getValue();
of.writeParameter("bankSymbol", str, nbOfCurrencies);
+ // BankSymbol currently must be ISO 4217. May change later if
+ // application always uses CurrencyID instead of BankSymbol.
+ if (!bLegacy && !isIso4217(str))
+ incError( "BankSymbol is not ISO 4217");
str = calNode -> findNode ("CurrencyName") -> getValue();
of.writeParameter("currencyName", str, nbOfCurrencies);
str = calNode -> findNode ("DecimalPlaces") -> getValue();
diff --git a/i18npool/source/localedata/data/ar_OM.xml b/i18npool/source/localedata/data/ar_OM.xml
new file mode 100644
index 000000000000..935e736f7c29
--- /dev/null
+++ b/i18npool/source/localedata/data/ar_OM.xml
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>ar</LangID>
+ <DefaultName>Arabic, Omani Spoken</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>OM</CountryID>
+ <DefaultName>Oman</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>/</DateSeparator>
+ <ThousandSeparator>,</ThousandSeparator>
+ <DecimalSeparator>.</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>.</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>، </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>، </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>'</QuotationStart>
+ <QuotationEnd>'</QuotationEnd>
+ <DoubleQuotationStart>"</DoubleQuotationStart>
+ <DoubleQuotationEnd>"</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>ص</TimeAM>
+ <TimePM>م</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$ر.ع-2001]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#,##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#,###.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0.00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0.00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0.00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>[CURRENCY]#,##0;-#,##0 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>[CURRENCY]#,##0.00;-#,##0.00 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>[CURRENCY]#,##0;[RED]-#,##0 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>[CURRENCY]#,##0.00;[RED]-#,##0.00 [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>[CURRENCY]#,##0.--;[RED]-#,##0.-- [CURRENCY]</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD، MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD/MM/YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D، MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D، MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D، MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D، MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D، MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN، DD/MMM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN، D، MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN، D، MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND، MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD/MM/YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD/MM/YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">أ-ي</IndexKey>
+ <UnicodeScript>11</UnicodeScript>
+ <FollowPageWord>يتبع</FollowPageWord>
+ <FollowPageWord>يتبع</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>الأحد</DefaultAbbrvName>
+ <DefaultFullName>الأحد</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>الإثنين</DefaultAbbrvName>
+ <DefaultFullName>الإثنين</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>الثلاثاء</DefaultAbbrvName>
+ <DefaultFullName>الثلاثاء</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>الأربعاء</DefaultAbbrvName>
+ <DefaultFullName>الأربعاء</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>الخميس</DefaultAbbrvName>
+ <DefaultFullName>الخميس</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>الجمعة</DefaultAbbrvName>
+ <DefaultFullName>الجمعة</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>السبت</DefaultAbbrvName>
+ <DefaultFullName>السبت</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>يانير</DefaultAbbrvName>
+ <DefaultFullName>يانير</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>فبراير</DefaultAbbrvName>
+ <DefaultFullName>فبراير</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>مارس</DefaultAbbrvName>
+ <DefaultFullName>مارس</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>أبريل</DefaultAbbrvName>
+ <DefaultFullName>أبريل</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>مايو</DefaultAbbrvName>
+ <DefaultFullName>مايو</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>يونيو</DefaultAbbrvName>
+ <DefaultFullName>يونيو</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>يوليو</DefaultAbbrvName>
+ <DefaultFullName>يوليو</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>أغسطس</DefaultAbbrvName>
+ <DefaultFullName>أغسطس</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>سبتمبر</DefaultAbbrvName>
+ <DefaultFullName>سبتمبر</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>أكتوبر</DefaultAbbrvName>
+ <DefaultFullName>أكتوبر</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>نوفمبر</DefaultAbbrvName>
+ <DefaultFullName>نوفمبر</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>ديسمبر</DefaultAbbrvName>
+ <DefaultFullName>ديسمبر</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>ق.م</DefaultAbbrvName>
+ <DefaultFullName>قبل الميلاد</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>م</DefaultAbbrvName>
+ <DefaultFullName>ميلادي</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>sat</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>OMR</CurrencyID>
+ <CurrencySymbol>ر.ع</CurrencySymbol>
+ <BankSymbol>OMR</BankSymbol>
+ <CurrencyName>ريال عماني</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>صحيح</trueWord>
+ <falseWord>خاطئ</falseWord>
+ <quarter1Word>الربع الأول</quarter1Word>
+ <quarter2Word>الربع الثاني</quarter2Word>
+ <quarter3Word>الربع الثالث</quarter3Word>
+ <quarter4Word>الربع الرابع</quarter4Word>
+ <aboveWord>فوق</aboveWord>
+ <belowWord>تحت</belowWord>
+ <quarter1Abbreviation>الربع 1</quarter1Abbreviation>
+ <quarter2Abbreviation>الربع 2</quarter2Abbreviation>
+ <quarter3Abbreviation>الربع 3</quarter3Abbreviation>
+ <quarter4Abbreviation>الربع 4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/ast_ES.xml b/i18npool/source/localedata/data/ast_ES.xml
new file mode 100644
index 000000000000..05c63601828a
--- /dev/null
+++ b/i18npool/source/localedata/data/ast_ES.xml
@@ -0,0 +1,359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Locale SYSTEM "locale.dtd">
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>ast</LangID>
+ <DefaultName>Asturian</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>ES</CountryID>
+ <DefaultName>Spain</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>/</DateSeparator>
+ <ThousandSeparator>.</ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>,</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‘</QuotationStart>
+ <QuotationEnd>’</QuotationEnd>
+ <DoubleQuotationStart>“</DoubleQuotationStart>
+ <DoubleQuotationEnd>”</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$€-64A]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#.###,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>[CURRENCY]#.##0;-[CURRENCY]#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>[CURRENCY]#.##0,00;-[CURRENCY]#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>[CURRENCY]#.##0;[RED]-[CURRENCY]#.##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>[CURRENCY]#.##0,00;[RED]-[CURRENCY]#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#.##0,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>[CURRENCY]#.##0,--;[RED]-[CURRENCY]#.##0,--</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD/MM/YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD/MMM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS,00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD/MM/YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD/MM/YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">A Á B-C {CH} D-E É F-H Ḥ I Í J-K L {ḶḶ} M-N Ñ O Ó P-U Ú Ü V-Z</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>37</UnicodeScript>
+ <FollowPageWord>s/páx</FollowPageWord>
+ <FollowPageWord>s/pxs</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>Dom</DefaultAbbrvName>
+ <DefaultFullName>Domingu</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>Llu</DefaultAbbrvName>
+ <DefaultFullName>Llunes</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>Mar</DefaultAbbrvName>
+ <DefaultFullName>Martes</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>Mié</DefaultAbbrvName>
+ <DefaultFullName>Miércoles</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>Xue</DefaultAbbrvName>
+ <DefaultFullName>Xueves</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>Vie</DefaultAbbrvName>
+ <DefaultFullName>Vienres</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>Sáb</DefaultAbbrvName>
+ <DefaultFullName>Sábadu</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>Xin</DefaultAbbrvName>
+ <DefaultFullName>Xineru</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>Feb</DefaultAbbrvName>
+ <DefaultFullName>Febreru</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>Mar</DefaultAbbrvName>
+ <DefaultFullName>Marzu</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>Abr</DefaultAbbrvName>
+ <DefaultFullName>Abril</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>May</DefaultAbbrvName>
+ <DefaultFullName>Mayu</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>Xun</DefaultAbbrvName>
+ <DefaultFullName>Xunu</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>Xnt</DefaultAbbrvName>
+ <DefaultFullName>Xunetu</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>Ago</DefaultAbbrvName>
+ <DefaultFullName>Agostu</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>Set</DefaultAbbrvName>
+ <DefaultFullName>Setiembre</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>Och</DefaultAbbrvName>
+ <DefaultFullName>Ochobre</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>Pay</DefaultAbbrvName>
+ <DefaultFullName>Payares</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>Avi</DefaultAbbrvName>
+ <DefaultFullName>Avientu</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>edC</DefaultAbbrvName>
+ <DefaultFullName>edC</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>dC</DefaultAbbrvName>
+ <DefaultFullName>dC</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>EUR</CurrencyID>
+ <CurrencySymbol>€</CurrencySymbol>
+ <BankSymbol>EUR</BankSymbol>
+ <CurrencyName>Euro</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>Braero</trueWord>
+ <falseWord>Falso</falseWord>
+ <quarter1Word>1er Trimestre</quarter1Word>
+ <quarter2Word>2u Trimestre</quarter2Word>
+ <quarter3Word>3er Trimestre</quarter3Word>
+ <quarter4Word>4u Trimestre</quarter4Word>
+ <aboveWord>arriba</aboveWord>
+ <belowWord>abaxo</belowWord>
+ <quarter1Abbreviation>T1</quarter1Abbreviation>
+ <quarter2Abbreviation>T2</quarter2Abbreviation>
+ <quarter3Abbreviation>T3</quarter3Abbreviation>
+ <quarter4Abbreviation>T4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/az_AZ.xml b/i18npool/source/localedata/data/az_AZ.xml
index ad96a38099e5..268aca4cd927 100644
--- a/i18npool/source/localedata/data/az_AZ.xml
+++ b/i18npool/source/localedata/data/az_AZ.xml
@@ -299,14 +299,17 @@
</Calendar>
</LC_CALENDAR>
<LC_CURRENCY>
- <Currency default="true" usedInCompatibleFormatCodes="false">
+ <Currency default="true" usedInCompatibleFormatCodes="true">
<CurrencyID>AZN</CurrencyID>
<CurrencySymbol>man.</CurrencySymbol>
<BankSymbol>AZN</BankSymbol>
<CurrencyName>Manat</CurrencyName>
<DecimalPlaces>2</DecimalPlaces>
</Currency>
- <Currency default="false" usedInCompatibleFormatCodes="true">
+ <Currency default="false" usedInCompatibleFormatCodes="false" legacyOnly="true">
+ <!-- legacyOnly to avoid the duplicated listing in the number formatter
+ dialog because of the identical CurrencySymbol, which also confuses
+ the currency listbox selection mechanism. -->
<CurrencyID>AZM</CurrencyID>
<CurrencySymbol>man.</CurrencySymbol>
<BankSymbol>AZM</BankSymbol>
diff --git a/i18npool/source/localedata/data/gl_ES.xml b/i18npool/source/localedata/data/gl_ES.xml
index d9e6344f0cb0..26d21e913da7 100644
--- a/i18npool/source/localedata/data/gl_ES.xml
+++ b/i18npool/source/localedata/data/gl_ES.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Locale SYSTEM 'locale.dtd'>
-<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.2">
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.3">
<LC_INFO>
<Language>
<LangID>gl</LangID>
@@ -30,8 +30,8 @@
<DoubleQuotationStart>“</DoubleQuotationStart>
<DoubleQuotationEnd>”</DoubleQuotationEnd>
</Markers>
- <TimeAM>AM</TimeAM>
- <TimePM>PM</TimePM>
+ <TimeAM>a. m.</TimeAM>
+ <TimePM>p. m.</TimePM>
<MeasurementSystem>metric</MeasurementSystem>
</LC_CTYPE>
<LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$₧-456]">
@@ -184,37 +184,37 @@
<DaysOfWeek>
<Day>
<DayID>sun</DayID>
- <DefaultAbbrvName>do.</DefaultAbbrvName>
+ <DefaultAbbrvName>dom.</DefaultAbbrvName>
<DefaultFullName>domingo</DefaultFullName>
</Day>
<Day>
<DayID>mon</DayID>
- <DefaultAbbrvName>lu.</DefaultAbbrvName>
+ <DefaultAbbrvName>lun.</DefaultAbbrvName>
<DefaultFullName>luns</DefaultFullName>
</Day>
<Day>
<DayID>tue</DayID>
- <DefaultAbbrvName>ma.</DefaultAbbrvName>
+ <DefaultAbbrvName>mar.</DefaultAbbrvName>
<DefaultFullName>martes</DefaultFullName>
</Day>
<Day>
<DayID>wed</DayID>
- <DefaultAbbrvName>me.</DefaultAbbrvName>
+ <DefaultAbbrvName>mér.</DefaultAbbrvName>
<DefaultFullName>mércores</DefaultFullName>
</Day>
<Day>
<DayID>thu</DayID>
- <DefaultAbbrvName>xo.</DefaultAbbrvName>
+ <DefaultAbbrvName>xov.</DefaultAbbrvName>
<DefaultFullName>xoves</DefaultFullName>
</Day>
<Day>
<DayID>fri</DayID>
- <DefaultAbbrvName>ve.</DefaultAbbrvName>
+ <DefaultAbbrvName>ven.</DefaultAbbrvName>
<DefaultFullName>venres</DefaultFullName>
</Day>
<Day>
<DayID>sat</DayID>
- <DefaultAbbrvName>sa.</DefaultAbbrvName>
+ <DefaultAbbrvName>sáb.</DefaultAbbrvName>
<DefaultFullName>sábado</DefaultFullName>
</Day>
</DaysOfWeek>
@@ -231,7 +231,7 @@
</Month>
<Month>
<MonthID>mar</MonthID>
- <DefaultAbbrvName>mar</DefaultAbbrvName>
+ <DefaultAbbrvName>mar.</DefaultAbbrvName>
<DefaultFullName>marzo</DefaultFullName>
</Month>
<Month>
@@ -241,13 +241,13 @@
</Month>
<Month>
<MonthID>may</MonthID>
- <DefaultAbbrvName>mai</DefaultAbbrvName>
+ <DefaultAbbrvName>mai.</DefaultAbbrvName>
<DefaultFullName>maio</DefaultFullName>
</Month>
<Month>
<MonthID>jun</MonthID>
- <DefaultAbbrvName>xun</DefaultAbbrvName>
- <DefaultFullName>xunio</DefaultFullName>
+ <DefaultAbbrvName>xuñ.</DefaultAbbrvName>
+ <DefaultFullName>xuño</DefaultFullName>
</Month>
<Month>
<MonthID>jul</MonthID>
@@ -283,13 +283,13 @@
<Eras>
<Era>
<EraID>bc</EraID>
- <DefaultAbbrvName>A.C.</DefaultAbbrvName>
- <DefaultFullName>A.C.</DefaultFullName>
+ <DefaultAbbrvName>a. C.</DefaultAbbrvName>
+ <DefaultFullName>antes de Cristo</DefaultFullName>
</Era>
<Era>
<EraID>ad</EraID>
- <DefaultAbbrvName>D.C.</DefaultAbbrvName>
- <DefaultFullName>D.C.</DefaultFullName>
+ <DefaultAbbrvName>d. C.</DefaultAbbrvName>
+ <DefaultFullName>despois de Cristo</DefaultFullName>
</Era>
</Eras>
<StartDayOfWeek>
@@ -326,16 +326,16 @@
<ReservedWords>
<trueWord>verdadeiro</trueWord>
<falseWord>falso</falseWord>
- <quarter1Word>1er trimestre</quarter1Word>
- <quarter2Word>2on trimestre</quarter2Word>
- <quarter3Word>3er trimestre</quarter3Word>
- <quarter4Word>4rt trimestre</quarter4Word>
+ <quarter1Word>1.º trimestre</quarter1Word>
+ <quarter2Word>2.º trimestre</quarter2Word>
+ <quarter3Word>3.º trimestre</quarter3Word>
+ <quarter4Word>4.º trimestre</quarter4Word>
<aboveWord>enriba</aboveWord>
<belowWord>debaixo</belowWord>
- <quarter1Abbreviation>T1</quarter1Abbreviation>
- <quarter2Abbreviation>T2</quarter2Abbreviation>
- <quarter3Abbreviation>T3</quarter3Abbreviation>
- <quarter4Abbreviation>T4</quarter4Abbreviation>
+ <quarter1Abbreviation>1T</quarter1Abbreviation>
+ <quarter2Abbreviation>2T</quarter2Abbreviation>
+ <quarter3Abbreviation>3T</quarter3Abbreviation>
+ <quarter4Abbreviation>4T</quarter4Abbreviation>
</ReservedWords>
</LC_MISC>
<LC_NumberingLevel ref="en_US"/>
diff --git a/i18npool/source/localedata/data/locale.dtd b/i18npool/source/localedata/data/locale.dtd
index 7d58023a064a..b9ee78f69e79 100644
--- a/i18npool/source/localedata/data/locale.dtd
+++ b/i18npool/source/localedata/data/locale.dtd
@@ -20,13 +20,13 @@
A second possiblity is:
- temporarily change the DOCTYPE of your file to read (all on one line)
- <!DOCTYPE Locale SYSTEM "http://l10n.openoffice.org/unbranded-source/browse/*checkout*/l10n/i18npool/source/localedata/data/locale.dtd">
+ <!DOCTYPE Locale SYSTEM "http://svn.services.openoffice.org/ooo/trunk/i18npool/source/localedata/data/locale.dtd">
- upload it to the form available at http://www.validome.org/
This will validate the file against the HEAD revision of locale.dtd, for
- other revisions you'll have to specify the revision as in
- http://l10n.openoffice.org/unbranded-source/browse/*checkout*/l10n/i18npool/source/localedata/data/locale.dtd?rev=1.14.4.3
+ other revisions you'll have to specify the corresponding tags or cws branch
+ instead of trunk.
Please test locale data files either in a non-product (!) build, which
diff --git a/i18npool/source/localedata/data/localedata_euro.map b/i18npool/source/localedata/data/localedata_euro.map
index 9b46fd2adfa5..1a28eb537bd5 100644
--- a/i18npool/source/localedata/data/localedata_euro.map
+++ b/i18npool/source/localedata/data/localedata_euro.map
@@ -1,6 +1,7 @@
OOO_1.1 {
global:
GetVersionInfo;
+getAllCalendars_ast_ES;
getAllCalendars_be_BY;
getAllCalendars_bg_BG;
getAllCalendars_br_FR;
@@ -53,6 +54,7 @@ getAllCalendars_pt_BR;
getAllCalendars_pt_PT;
getAllCalendars_ro_RO;
getAllCalendars_ru_RU;
+getAllCalendars_sc_IT;
getAllCalendars_sh_ME;
getAllCalendars_sh_RS;
getAllCalendars_sh_YU;
@@ -66,6 +68,7 @@ getAllCalendars_sv_SE;
getAllCalendars_tr_TR;
getAllCalendars_uk_UA;
getAllCalendars_wa_BE;
+getAllCurrencies_ast_ES;
getAllCurrencies_be_BY;
getAllCurrencies_bg_BG;
getAllCurrencies_br_FR;
@@ -118,6 +121,7 @@ getAllCurrencies_pt_BR;
getAllCurrencies_pt_PT;
getAllCurrencies_ro_RO;
getAllCurrencies_ru_RU;
+getAllCurrencies_sc_IT;
getAllCurrencies_sh_ME;
getAllCurrencies_sh_RS;
getAllCurrencies_sh_YU;
@@ -131,6 +135,7 @@ getAllCurrencies_sv_SE;
getAllCurrencies_tr_TR;
getAllCurrencies_uk_UA;
getAllCurrencies_wa_BE;
+getAllFormats0_ast_ES;
getAllFormats0_be_BY;
getAllFormats0_bg_BG;
getAllFormats0_br_FR;
@@ -183,6 +188,7 @@ getAllFormats0_pt_BR;
getAllFormats0_pt_PT;
getAllFormats0_ro_RO;
getAllFormats0_ru_RU;
+getAllFormats0_sc_IT;
getAllFormats0_sh_ME;
getAllFormats0_sh_RS;
getAllFormats0_sh_YU;
@@ -196,6 +202,7 @@ getAllFormats0_sv_SE;
getAllFormats0_tr_TR;
getAllFormats0_uk_UA;
getAllFormats0_wa_BE;
+getBreakIteratorRules_ast_ES;
getBreakIteratorRules_be_BY;
getBreakIteratorRules_bg_BG;
getBreakIteratorRules_br_FR;
@@ -248,6 +255,7 @@ getBreakIteratorRules_pt_BR;
getBreakIteratorRules_pt_PT;
getBreakIteratorRules_ro_RO;
getBreakIteratorRules_ru_RU;
+getBreakIteratorRules_sc_IT;
getBreakIteratorRules_sh_ME;
getBreakIteratorRules_sh_RS;
getBreakIteratorRules_sh_YU;
@@ -261,6 +269,7 @@ getBreakIteratorRules_sv_SE;
getBreakIteratorRules_tr_TR;
getBreakIteratorRules_uk_UA;
getBreakIteratorRules_wa_BE;
+getCollationOptions_ast_ES;
getCollationOptions_be_BY;
getCollationOptions_bg_BG;
getCollationOptions_br_FR;
@@ -313,6 +322,7 @@ getCollationOptions_pt_BR;
getCollationOptions_pt_PT;
getCollationOptions_ro_RO;
getCollationOptions_ru_RU;
+getCollationOptions_sc_IT;
getCollationOptions_sh_ME;
getCollationOptions_sh_RS;
getCollationOptions_sh_YU;
@@ -326,6 +336,7 @@ getCollationOptions_sv_SE;
getCollationOptions_tr_TR;
getCollationOptions_uk_UA;
getCollationOptions_wa_BE;
+getCollatorImplementation_ast_ES;
getCollatorImplementation_be_BY;
getCollatorImplementation_bg_BG;
getCollatorImplementation_br_FR;
@@ -378,6 +389,7 @@ getCollatorImplementation_pt_BR;
getCollatorImplementation_pt_PT;
getCollatorImplementation_ro_RO;
getCollatorImplementation_ru_RU;
+getCollatorImplementation_sc_IT;
getCollatorImplementation_sh_ME;
getCollatorImplementation_sh_RS;
getCollatorImplementation_sh_YU;
@@ -391,6 +403,7 @@ getCollatorImplementation_sv_SE;
getCollatorImplementation_tr_TR;
getCollatorImplementation_uk_UA;
getCollatorImplementation_wa_BE;
+getContinuousNumberingLevels_ast_ES;
getContinuousNumberingLevels_be_BY;
getContinuousNumberingLevels_bg_BG;
getContinuousNumberingLevels_br_FR;
@@ -443,6 +456,7 @@ getContinuousNumberingLevels_pt_BR;
getContinuousNumberingLevels_pt_PT;
getContinuousNumberingLevels_ro_RO;
getContinuousNumberingLevels_ru_RU;
+getContinuousNumberingLevels_sc_IT;
getContinuousNumberingLevels_sh_ME;
getContinuousNumberingLevels_sh_RS;
getContinuousNumberingLevels_sh_YU;
@@ -456,6 +470,7 @@ getContinuousNumberingLevels_sv_SE;
getContinuousNumberingLevels_tr_TR;
getContinuousNumberingLevels_uk_UA;
getContinuousNumberingLevels_wa_BE;
+getFollowPageWords_ast_ES;
getFollowPageWords_be_BY;
getFollowPageWords_bg_BG;
getFollowPageWords_br_FR;
@@ -508,6 +523,7 @@ getFollowPageWords_pt_BR;
getFollowPageWords_pt_PT;
getFollowPageWords_ro_RO;
getFollowPageWords_ru_RU;
+getFollowPageWords_sc_IT;
getFollowPageWords_sh_ME;
getFollowPageWords_sh_RS;
getFollowPageWords_sh_YU;
@@ -521,6 +537,7 @@ getFollowPageWords_sv_SE;
getFollowPageWords_tr_TR;
getFollowPageWords_uk_UA;
getFollowPageWords_wa_BE;
+getForbiddenCharacters_ast_ES;
getForbiddenCharacters_be_BY;
getForbiddenCharacters_bg_BG;
getForbiddenCharacters_br_FR;
@@ -573,6 +590,7 @@ getForbiddenCharacters_pt_BR;
getForbiddenCharacters_pt_PT;
getForbiddenCharacters_ro_RO;
getForbiddenCharacters_ru_RU;
+getForbiddenCharacters_sc_IT;
getForbiddenCharacters_sh_ME;
getForbiddenCharacters_sh_RS;
getForbiddenCharacters_sh_YU;
@@ -586,6 +604,7 @@ getForbiddenCharacters_sv_SE;
getForbiddenCharacters_tr_TR;
getForbiddenCharacters_uk_UA;
getForbiddenCharacters_wa_BE;
+getIndexAlgorithm_ast_ES;
getIndexAlgorithm_be_BY;
getIndexAlgorithm_bg_BG;
getIndexAlgorithm_br_FR;
@@ -638,6 +657,7 @@ getIndexAlgorithm_pt_BR;
getIndexAlgorithm_pt_PT;
getIndexAlgorithm_ro_RO;
getIndexAlgorithm_ru_RU;
+getIndexAlgorithm_sc_IT;
getIndexAlgorithm_sh_ME;
getIndexAlgorithm_sh_RS;
getIndexAlgorithm_sh_YU;
@@ -651,6 +671,7 @@ getIndexAlgorithm_sv_SE;
getIndexAlgorithm_tr_TR;
getIndexAlgorithm_uk_UA;
getIndexAlgorithm_wa_BE;
+getLCInfo_ast_ES;
getLCInfo_be_BY;
getLCInfo_bg_BG;
getLCInfo_br_FR;
@@ -703,6 +724,7 @@ getLCInfo_pt_BR;
getLCInfo_pt_PT;
getLCInfo_ro_RO;
getLCInfo_ru_RU;
+getLCInfo_sc_IT;
getLCInfo_sh_ME;
getLCInfo_sh_RS;
getLCInfo_sh_YU;
@@ -716,6 +738,7 @@ getLCInfo_sv_SE;
getLCInfo_tr_TR;
getLCInfo_uk_UA;
getLCInfo_wa_BE;
+getLocaleItem_ast_ES;
getLocaleItem_be_BY;
getLocaleItem_bg_BG;
getLocaleItem_br_FR;
@@ -768,6 +791,7 @@ getLocaleItem_pt_BR;
getLocaleItem_pt_PT;
getLocaleItem_ro_RO;
getLocaleItem_ru_RU;
+getLocaleItem_sc_IT;
getLocaleItem_sh_ME;
getLocaleItem_sh_RS;
getLocaleItem_sh_YU;
@@ -781,6 +805,7 @@ getLocaleItem_sv_SE;
getLocaleItem_tr_TR;
getLocaleItem_uk_UA;
getLocaleItem_wa_BE;
+getOutlineNumberingLevels_ast_ES;
getOutlineNumberingLevels_be_BY;
getOutlineNumberingLevels_bg_BG;
getOutlineNumberingLevels_br_FR;
@@ -833,6 +858,7 @@ getOutlineNumberingLevels_pt_BR;
getOutlineNumberingLevels_pt_PT;
getOutlineNumberingLevels_ro_RO;
getOutlineNumberingLevels_ru_RU;
+getOutlineNumberingLevels_sc_IT;
getOutlineNumberingLevels_sh_ME;
getOutlineNumberingLevels_sh_RS;
getOutlineNumberingLevels_sh_YU;
@@ -846,6 +872,7 @@ getOutlineNumberingLevels_sv_SE;
getOutlineNumberingLevels_tr_TR;
getOutlineNumberingLevels_uk_UA;
getOutlineNumberingLevels_wa_BE;
+getReservedWords_ast_ES;
getReservedWords_be_BY;
getReservedWords_bg_BG;
getReservedWords_br_FR;
@@ -898,6 +925,7 @@ getReservedWords_pt_BR;
getReservedWords_pt_PT;
getReservedWords_ro_RO;
getReservedWords_ru_RU;
+getReservedWords_sc_IT;
getReservedWords_sh_ME;
getReservedWords_sh_RS;
getReservedWords_sh_YU;
@@ -911,6 +939,7 @@ getReservedWords_sv_SE;
getReservedWords_tr_TR;
getReservedWords_uk_UA;
getReservedWords_wa_BE;
+getSearchOptions_ast_ES;
getSearchOptions_be_BY;
getSearchOptions_bg_BG;
getSearchOptions_br_FR;
@@ -963,6 +992,7 @@ getSearchOptions_pt_BR;
getSearchOptions_pt_PT;
getSearchOptions_ro_RO;
getSearchOptions_ru_RU;
+getSearchOptions_sc_IT;
getSearchOptions_sh_ME;
getSearchOptions_sh_RS;
getSearchOptions_sh_YU;
@@ -976,6 +1006,7 @@ getSearchOptions_sv_SE;
getSearchOptions_tr_TR;
getSearchOptions_uk_UA;
getSearchOptions_wa_BE;
+getTransliterations_ast_ES;
getTransliterations_be_BY;
getTransliterations_bg_BG;
getTransliterations_br_FR;
@@ -1028,6 +1059,7 @@ getTransliterations_pt_BR;
getTransliterations_pt_PT;
getTransliterations_ro_RO;
getTransliterations_ru_RU;
+getTransliterations_sc_IT;
getTransliterations_sh_ME;
getTransliterations_sh_RS;
getTransliterations_sh_YU;
@@ -1041,6 +1073,7 @@ getTransliterations_sv_SE;
getTransliterations_tr_TR;
getTransliterations_uk_UA;
getTransliterations_wa_BE;
+getUnicodeScripts_ast_ES;
getUnicodeScripts_be_BY;
getUnicodeScripts_bg_BG;
getUnicodeScripts_br_FR;
@@ -1093,6 +1126,7 @@ getUnicodeScripts_pt_BR;
getUnicodeScripts_pt_PT;
getUnicodeScripts_ro_RO;
getUnicodeScripts_ru_RU;
+getUnicodeScripts_sc_IT;
getUnicodeScripts_sh_ME;
getUnicodeScripts_sh_RS;
getUnicodeScripts_sh_YU;
diff --git a/i18npool/source/localedata/data/localedata_others.map b/i18npool/source/localedata/data/localedata_others.map
index 5e32d8bb4a1b..a8212624e8e8 100644
--- a/i18npool/source/localedata/data/localedata_others.map
+++ b/i18npool/source/localedata/data/localedata_others.map
@@ -6,6 +6,7 @@ getAllCalendars_ak_GH;
getAllCalendars_am_ET;
getAllCalendars_ar_EG;
getAllCalendars_ar_LB;
+getAllCalendars_ar_OM;
getAllCalendars_ar_SA;
getAllCalendars_ar_TN;
getAllCalendars_az_AZ;
@@ -44,6 +45,7 @@ getAllCalendars_my_MM;
getAllCalendars_ne_NP;
getAllCalendars_nr_ZA;
getAllCalendars_nso_ZA;
+getAllCalendars_om_ET;
getAllCalendars_or_IN;
getAllCalendars_pa_IN;
getAllCalendars_rw_RW;
@@ -62,6 +64,7 @@ getAllCalendars_tk_TM;
getAllCalendars_tn_ZA;
getAllCalendars_tpi_PG;
getAllCalendars_ts_ZA;
+getAllCalendars_ug_CN;
getAllCalendars_uz_UZ;
getAllCalendars_ve_ZA;
getAllCalendars_vi_VN;
@@ -78,6 +81,7 @@ getAllCurrencies_ak_GH;
getAllCurrencies_am_ET;
getAllCurrencies_ar_EG;
getAllCurrencies_ar_LB;
+getAllCurrencies_ar_OM;
getAllCurrencies_ar_SA;
getAllCurrencies_ar_TN;
getAllCurrencies_az_AZ;
@@ -116,6 +120,7 @@ getAllCurrencies_my_MM;
getAllCurrencies_ne_NP;
getAllCurrencies_nr_ZA;
getAllCurrencies_nso_ZA;
+getAllCurrencies_om_ET;
getAllCurrencies_or_IN;
getAllCurrencies_pa_IN;
getAllCurrencies_rw_RW;
@@ -134,6 +139,7 @@ getAllCurrencies_tk_TM;
getAllCurrencies_tn_ZA;
getAllCurrencies_tpi_PG;
getAllCurrencies_ts_ZA;
+getAllCurrencies_ug_CN;
getAllCurrencies_uz_UZ;
getAllCurrencies_ve_ZA;
getAllCurrencies_vi_VN;
@@ -150,6 +156,7 @@ getAllFormats0_ak_GH;
getAllFormats0_am_ET;
getAllFormats0_ar_EG;
getAllFormats0_ar_LB;
+getAllFormats0_ar_OM;
getAllFormats0_ar_SA;
getAllFormats0_ar_TN;
getAllFormats0_az_AZ;
@@ -188,6 +195,7 @@ getAllFormats0_my_MM;
getAllFormats0_ne_NP;
getAllFormats0_nr_ZA;
getAllFormats0_nso_ZA;
+getAllFormats0_om_ET;
getAllFormats0_or_IN;
getAllFormats0_pa_IN;
getAllFormats0_rw_RW;
@@ -206,6 +214,7 @@ getAllFormats0_tk_TM;
getAllFormats0_tn_ZA;
getAllFormats0_tpi_PG;
getAllFormats0_ts_ZA;
+getAllFormats0_ug_CN;
getAllFormats0_uz_UZ;
getAllFormats0_ve_ZA;
getAllFormats0_vi_VN;
@@ -222,6 +231,7 @@ getBreakIteratorRules_ak_GH;
getBreakIteratorRules_am_ET;
getBreakIteratorRules_ar_EG;
getBreakIteratorRules_ar_LB;
+getBreakIteratorRules_ar_OM;
getBreakIteratorRules_ar_SA;
getBreakIteratorRules_ar_TN;
getBreakIteratorRules_az_AZ;
@@ -260,6 +270,7 @@ getBreakIteratorRules_my_MM;
getBreakIteratorRules_ne_NP;
getBreakIteratorRules_nr_ZA;
getBreakIteratorRules_nso_ZA;
+getBreakIteratorRules_om_ET;
getBreakIteratorRules_or_IN;
getBreakIteratorRules_pa_IN;
getBreakIteratorRules_rw_RW;
@@ -278,6 +289,7 @@ getBreakIteratorRules_tk_TM;
getBreakIteratorRules_tn_ZA;
getBreakIteratorRules_tpi_PG;
getBreakIteratorRules_ts_ZA;
+getBreakIteratorRules_ug_CN;
getBreakIteratorRules_uz_UZ;
getBreakIteratorRules_ve_ZA;
getBreakIteratorRules_vi_VN;
@@ -294,6 +306,7 @@ getCollationOptions_ak_GH;
getCollationOptions_am_ET;
getCollationOptions_ar_EG;
getCollationOptions_ar_LB;
+getCollationOptions_ar_OM;
getCollationOptions_ar_SA;
getCollationOptions_ar_TN;
getCollationOptions_az_AZ;
@@ -332,6 +345,7 @@ getCollationOptions_my_MM;
getCollationOptions_ne_NP;
getCollationOptions_nr_ZA;
getCollationOptions_nso_ZA;
+getCollationOptions_om_ET;
getCollationOptions_or_IN;
getCollationOptions_pa_IN;
getCollationOptions_rw_RW;
@@ -350,6 +364,7 @@ getCollationOptions_tk_TM;
getCollationOptions_tn_ZA;
getCollationOptions_tpi_PG;
getCollationOptions_ts_ZA;
+getCollationOptions_ug_CN;
getCollationOptions_uz_UZ;
getCollationOptions_ve_ZA;
getCollationOptions_vi_VN;
@@ -366,6 +381,7 @@ getCollatorImplementation_ak_GH;
getCollatorImplementation_am_ET;
getCollatorImplementation_ar_EG;
getCollatorImplementation_ar_LB;
+getCollatorImplementation_ar_OM;
getCollatorImplementation_ar_SA;
getCollatorImplementation_ar_TN;
getCollatorImplementation_az_AZ;
@@ -404,6 +420,7 @@ getCollatorImplementation_my_MM;
getCollatorImplementation_ne_NP;
getCollatorImplementation_nr_ZA;
getCollatorImplementation_nso_ZA;
+getCollatorImplementation_om_ET;
getCollatorImplementation_or_IN;
getCollatorImplementation_pa_IN;
getCollatorImplementation_rw_RW;
@@ -422,6 +439,7 @@ getCollatorImplementation_tk_TM;
getCollatorImplementation_tn_ZA;
getCollatorImplementation_tpi_PG;
getCollatorImplementation_ts_ZA;
+getCollatorImplementation_ug_CN;
getCollatorImplementation_uz_UZ;
getCollatorImplementation_ve_ZA;
getCollatorImplementation_vi_VN;
@@ -438,6 +456,7 @@ getContinuousNumberingLevels_ak_GH;
getContinuousNumberingLevels_am_ET;
getContinuousNumberingLevels_ar_EG;
getContinuousNumberingLevels_ar_LB;
+getContinuousNumberingLevels_ar_OM;
getContinuousNumberingLevels_ar_SA;
getContinuousNumberingLevels_ar_TN;
getContinuousNumberingLevels_az_AZ;
@@ -476,6 +495,7 @@ getContinuousNumberingLevels_my_MM;
getContinuousNumberingLevels_ne_NP;
getContinuousNumberingLevels_nr_ZA;
getContinuousNumberingLevels_nso_ZA;
+getContinuousNumberingLevels_om_ET;
getContinuousNumberingLevels_or_IN;
getContinuousNumberingLevels_pa_IN;
getContinuousNumberingLevels_rw_RW;
@@ -494,6 +514,7 @@ getContinuousNumberingLevels_tk_TM;
getContinuousNumberingLevels_tn_ZA;
getContinuousNumberingLevels_tpi_PG;
getContinuousNumberingLevels_ts_ZA;
+getContinuousNumberingLevels_ug_CN;
getContinuousNumberingLevels_uz_UZ;
getContinuousNumberingLevels_ve_ZA;
getContinuousNumberingLevels_vi_VN;
@@ -510,6 +531,7 @@ getFollowPageWords_ak_GH;
getFollowPageWords_am_ET;
getFollowPageWords_ar_EG;
getFollowPageWords_ar_LB;
+getFollowPageWords_ar_OM;
getFollowPageWords_ar_SA;
getFollowPageWords_ar_TN;
getFollowPageWords_az_AZ;
@@ -548,6 +570,7 @@ getFollowPageWords_my_MM;
getFollowPageWords_ne_NP;
getFollowPageWords_nr_ZA;
getFollowPageWords_nso_ZA;
+getFollowPageWords_om_ET;
getFollowPageWords_or_IN;
getFollowPageWords_pa_IN;
getFollowPageWords_rw_RW;
@@ -566,6 +589,7 @@ getFollowPageWords_tk_TM;
getFollowPageWords_tn_ZA;
getFollowPageWords_tpi_PG;
getFollowPageWords_ts_ZA;
+getFollowPageWords_ug_CN;
getFollowPageWords_uz_UZ;
getFollowPageWords_ve_ZA;
getFollowPageWords_vi_VN;
@@ -582,6 +606,7 @@ getForbiddenCharacters_ak_GH;
getForbiddenCharacters_am_ET;
getForbiddenCharacters_ar_EG;
getForbiddenCharacters_ar_LB;
+getForbiddenCharacters_ar_OM;
getForbiddenCharacters_ar_SA;
getForbiddenCharacters_ar_TN;
getForbiddenCharacters_az_AZ;
@@ -620,6 +645,7 @@ getForbiddenCharacters_my_MM;
getForbiddenCharacters_ne_NP;
getForbiddenCharacters_nr_ZA;
getForbiddenCharacters_nso_ZA;
+getForbiddenCharacters_om_ET;
getForbiddenCharacters_or_IN;
getForbiddenCharacters_pa_IN;
getForbiddenCharacters_rw_RW;
@@ -638,6 +664,7 @@ getForbiddenCharacters_tk_TM;
getForbiddenCharacters_tn_ZA;
getForbiddenCharacters_tpi_PG;
getForbiddenCharacters_ts_ZA;
+getForbiddenCharacters_ug_CN;
getForbiddenCharacters_uz_UZ;
getForbiddenCharacters_ve_ZA;
getForbiddenCharacters_vi_VN;
@@ -654,6 +681,7 @@ getIndexAlgorithm_ak_GH;
getIndexAlgorithm_am_ET;
getIndexAlgorithm_ar_EG;
getIndexAlgorithm_ar_LB;
+getIndexAlgorithm_ar_OM;
getIndexAlgorithm_ar_SA;
getIndexAlgorithm_ar_TN;
getIndexAlgorithm_az_AZ;
@@ -692,6 +720,7 @@ getIndexAlgorithm_my_MM;
getIndexAlgorithm_ne_NP;
getIndexAlgorithm_nr_ZA;
getIndexAlgorithm_nso_ZA;
+getIndexAlgorithm_om_ET;
getIndexAlgorithm_or_IN;
getIndexAlgorithm_pa_IN;
getIndexAlgorithm_rw_RW;
@@ -710,6 +739,7 @@ getIndexAlgorithm_tk_TM;
getIndexAlgorithm_tn_ZA;
getIndexAlgorithm_tpi_PG;
getIndexAlgorithm_ts_ZA;
+getIndexAlgorithm_ug_CN;
getIndexAlgorithm_uz_UZ;
getIndexAlgorithm_ve_ZA;
getIndexAlgorithm_vi_VN;
@@ -726,6 +756,7 @@ getLCInfo_ak_GH;
getLCInfo_am_ET;
getLCInfo_ar_EG;
getLCInfo_ar_LB;
+getLCInfo_ar_OM;
getLCInfo_ar_SA;
getLCInfo_ar_TN;
getLCInfo_az_AZ;
@@ -764,6 +795,7 @@ getLCInfo_my_MM;
getLCInfo_ne_NP;
getLCInfo_nr_ZA;
getLCInfo_nso_ZA;
+getLCInfo_om_ET;
getLCInfo_or_IN;
getLCInfo_pa_IN;
getLCInfo_rw_RW;
@@ -782,6 +814,7 @@ getLCInfo_tk_TM;
getLCInfo_tn_ZA;
getLCInfo_tpi_PG;
getLCInfo_ts_ZA;
+getLCInfo_ug_CN;
getLCInfo_uz_UZ;
getLCInfo_ve_ZA;
getLCInfo_vi_VN;
@@ -798,6 +831,7 @@ getLocaleItem_ak_GH;
getLocaleItem_am_ET;
getLocaleItem_ar_EG;
getLocaleItem_ar_LB;
+getLocaleItem_ar_OM;
getLocaleItem_ar_SA;
getLocaleItem_ar_TN;
getLocaleItem_az_AZ;
@@ -836,6 +870,7 @@ getLocaleItem_my_MM;
getLocaleItem_ne_NP;
getLocaleItem_nr_ZA;
getLocaleItem_nso_ZA;
+getLocaleItem_om_ET;
getLocaleItem_or_IN;
getLocaleItem_pa_IN;
getLocaleItem_rw_RW;
@@ -854,6 +889,7 @@ getLocaleItem_tk_TM;
getLocaleItem_tn_ZA;
getLocaleItem_tpi_PG;
getLocaleItem_ts_ZA;
+getLocaleItem_ug_CN;
getLocaleItem_uz_UZ;
getLocaleItem_ve_ZA;
getLocaleItem_vi_VN;
@@ -870,6 +906,7 @@ getOutlineNumberingLevels_ak_GH;
getOutlineNumberingLevels_am_ET;
getOutlineNumberingLevels_ar_EG;
getOutlineNumberingLevels_ar_LB;
+getOutlineNumberingLevels_ar_OM;
getOutlineNumberingLevels_ar_SA;
getOutlineNumberingLevels_ar_TN;
getOutlineNumberingLevels_az_AZ;
@@ -908,6 +945,7 @@ getOutlineNumberingLevels_my_MM;
getOutlineNumberingLevels_ne_NP;
getOutlineNumberingLevels_nr_ZA;
getOutlineNumberingLevels_nso_ZA;
+getOutlineNumberingLevels_om_ET;
getOutlineNumberingLevels_or_IN;
getOutlineNumberingLevels_pa_IN;
getOutlineNumberingLevels_rw_RW;
@@ -926,6 +964,7 @@ getOutlineNumberingLevels_tk_TM;
getOutlineNumberingLevels_tn_ZA;
getOutlineNumberingLevels_tpi_PG;
getOutlineNumberingLevels_ts_ZA;
+getOutlineNumberingLevels_ug_CN;
getOutlineNumberingLevels_uz_UZ;
getOutlineNumberingLevels_ve_ZA;
getOutlineNumberingLevels_vi_VN;
@@ -942,6 +981,7 @@ getReservedWords_ak_GH;
getReservedWords_am_ET;
getReservedWords_ar_EG;
getReservedWords_ar_LB;
+getReservedWords_ar_OM;
getReservedWords_ar_SA;
getReservedWords_ar_TN;
getReservedWords_az_AZ;
@@ -980,6 +1020,7 @@ getReservedWords_my_MM;
getReservedWords_ne_NP;
getReservedWords_nr_ZA;
getReservedWords_nso_ZA;
+getReservedWords_om_ET;
getReservedWords_or_IN;
getReservedWords_pa_IN;
getReservedWords_rw_RW;
@@ -998,6 +1039,7 @@ getReservedWords_tk_TM;
getReservedWords_tn_ZA;
getReservedWords_tpi_PG;
getReservedWords_ts_ZA;
+getReservedWords_ug_CN;
getReservedWords_uz_UZ;
getReservedWords_ve_ZA;
getReservedWords_vi_VN;
@@ -1014,6 +1056,7 @@ getSearchOptions_ak_GH;
getSearchOptions_am_ET;
getSearchOptions_ar_EG;
getSearchOptions_ar_LB;
+getSearchOptions_ar_OM;
getSearchOptions_ar_SA;
getSearchOptions_ar_TN;
getSearchOptions_az_AZ;
@@ -1052,6 +1095,7 @@ getSearchOptions_my_MM;
getSearchOptions_ne_NP;
getSearchOptions_nr_ZA;
getSearchOptions_nso_ZA;
+getSearchOptions_om_ET;
getSearchOptions_or_IN;
getSearchOptions_pa_IN;
getSearchOptions_rw_RW;
@@ -1070,6 +1114,7 @@ getSearchOptions_tk_TM;
getSearchOptions_tn_ZA;
getSearchOptions_tpi_PG;
getSearchOptions_ts_ZA;
+getSearchOptions_ug_CN;
getSearchOptions_uz_UZ;
getSearchOptions_ve_ZA;
getSearchOptions_vi_VN;
@@ -1086,6 +1131,7 @@ getTransliterations_ak_GH;
getTransliterations_am_ET;
getTransliterations_ar_EG;
getTransliterations_ar_LB;
+getTransliterations_ar_OM;
getTransliterations_ar_SA;
getTransliterations_ar_TN;
getTransliterations_az_AZ;
@@ -1124,6 +1170,7 @@ getTransliterations_my_MM;
getTransliterations_ne_NP;
getTransliterations_nr_ZA;
getTransliterations_nso_ZA;
+getTransliterations_om_ET;
getTransliterations_or_IN;
getTransliterations_pa_IN;
getTransliterations_rw_RW;
@@ -1142,6 +1189,7 @@ getTransliterations_tk_TM;
getTransliterations_tn_ZA;
getTransliterations_tpi_PG;
getTransliterations_ts_ZA;
+getTransliterations_ug_CN;
getTransliterations_uz_UZ;
getTransliterations_ve_ZA;
getTransliterations_vi_VN;
@@ -1158,6 +1206,7 @@ getUnicodeScripts_ak_GH;
getUnicodeScripts_am_ET;
getUnicodeScripts_ar_EG;
getUnicodeScripts_ar_LB;
+getUnicodeScripts_ar_OM;
getUnicodeScripts_ar_SA;
getUnicodeScripts_ar_TN;
getUnicodeScripts_az_AZ;
@@ -1196,6 +1245,7 @@ getUnicodeScripts_my_MM;
getUnicodeScripts_ne_NP;
getUnicodeScripts_nr_ZA;
getUnicodeScripts_nso_ZA;
+getUnicodeScripts_om_ET;
getUnicodeScripts_or_IN;
getUnicodeScripts_pa_IN;
getUnicodeScripts_rw_RW;
@@ -1214,6 +1264,7 @@ getUnicodeScripts_tk_TM;
getUnicodeScripts_tn_ZA;
getUnicodeScripts_tpi_PG;
getUnicodeScripts_ts_ZA;
+getUnicodeScripts_ug_CN;
getUnicodeScripts_uz_UZ;
getUnicodeScripts_ve_ZA;
getUnicodeScripts_vi_VN;
diff --git a/i18npool/source/localedata/data/makefile.mk b/i18npool/source/localedata/data/makefile.mk
index 3eca889e7ccc..9fc29c722fb2 100644
--- a/i18npool/source/localedata/data/makefile.mk
+++ b/i18npool/source/localedata/data/makefile.mk
@@ -76,6 +76,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_ar_LB.cxx \
$(MISC)$/localedata_ar_SA.cxx \
$(MISC)$/localedata_ar_TN.cxx \
+ $(MISC)$/localedata_ast_ES.cxx \
$(MISC)$/localedata_az_AZ.cxx \
$(MISC)$/localedata_be_BY.cxx \
$(MISC)$/localedata_bg_BG.cxx \
@@ -193,6 +194,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_nr_ZA.cxx \
$(MISC)$/localedata_nso_ZA.cxx \
$(MISC)$/localedata_oc_FR.cxx \
+ $(MISC)$/localedata_om_ET.cxx \
$(MISC)$/localedata_or_IN.cxx \
$(MISC)$/localedata_pa_IN.cxx \
$(MISC)$/localedata_pl_PL.cxx \
@@ -227,6 +229,7 @@ MY_MISC_CXXFILES = \
$(MISC)$/localedata_tpi_PG.cxx \
$(MISC)$/localedata_tr_TR.cxx \
$(MISC)$/localedata_ts_ZA.cxx \
+ $(MISC)$/localedata_ug_CN.cxx \
$(MISC)$/localedata_uk_UA.cxx \
$(MISC)$/localedata_uz_UZ.cxx \
$(MISC)$/localedata_ve_ZA.cxx \
@@ -323,6 +326,7 @@ DEF3NAME=$(SHL3TARGET)
SHL3STDLIBS= $(LINK_LOCALEDATA_EN_LIB)
SHL3DEPN=$(SHL1TARGETN) $(SHL2TARGETN)
SHL3OBJS= \
+ $(SLO)$/localedata_ast_ES.obj \
$(SLO)$/localedata_be_BY.obj \
$(SLO)$/localedata_bg_BG.obj \
$(SLO)$/localedata_br_FR.obj \
@@ -375,6 +379,7 @@ SHL3OBJS= \
$(SLO)$/localedata_pt_PT.obj \
$(SLO)$/localedata_ru_RU.obj \
$(SLO)$/localedata_ro_RO.obj \
+ $(SLO)$/localedata_sc_IT.obj \
$(SLO)$/localedata_sh_ME.obj \
$(SLO)$/localedata_sh_RS.obj \
$(SLO)$/localedata_sh_YU.obj \
@@ -412,6 +417,7 @@ SHL4OBJS= \
$(SLO)$/localedata_am_ET.obj \
$(SLO)$/localedata_ar_EG.obj \
$(SLO)$/localedata_ar_LB.obj \
+ $(SLO)$/localedata_ar_OM.obj \
$(SLO)$/localedata_ar_SA.obj \
$(SLO)$/localedata_ar_TN.obj \
$(SLO)$/localedata_az_AZ.obj \
@@ -450,6 +456,7 @@ SHL4OBJS= \
$(SLO)$/localedata_ne_NP.obj \
$(SLO)$/localedata_nr_ZA.obj \
$(SLO)$/localedata_nso_ZA.obj \
+ $(SLO)$/localedata_om_ET.obj \
$(SLO)$/localedata_or_IN.obj \
$(SLO)$/localedata_pa_IN.obj \
$(SLO)$/localedata_rw_RW.obj \
@@ -468,6 +475,7 @@ SHL4OBJS= \
$(SLO)$/localedata_tn_ZA.obj \
$(SLO)$/localedata_tpi_PG.obj \
$(SLO)$/localedata_ts_ZA.obj \
+ $(SLO)$/localedata_ug_CN.obj \
$(SLO)$/localedata_uz_UZ.obj \
$(SLO)$/localedata_ve_ZA.obj \
$(SLO)$/localedata_vi_VN.obj \
diff --git a/i18npool/source/localedata/data/oc_FR.xml b/i18npool/source/localedata/data/oc_FR.xml
index 236f1c8dbb09..ef3dd47c0dc6 100644
--- a/i18npool/source/localedata/data/oc_FR.xml
+++ b/i18npool/source/localedata/data/oc_FR.xml
@@ -18,7 +18,7 @@
<DecimalSeparator>,</DecimalSeparator>
<TimeSeparator>:</TimeSeparator>
<Time100SecSeparator>,</Time100SecSeparator>
- <ListSeparator>:</ListSeparator>
+ <ListSeparator>;</ListSeparator>
<LongDateDayOfWeekSeparator> </LongDateDayOfWeekSeparator>
<LongDateDaySeparator>, </LongDateDaySeparator>
<LongDateMonthSeparator> de </LongDateMonthSeparator>
diff --git a/i18npool/source/localedata/data/om_ET.xml b/i18npool/source/localedata/data/om_ET.xml
new file mode 100644
index 000000000000..88418fbb7ebb
--- /dev/null
+++ b/i18npool/source/localedata/data/om_ET.xml
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Locale SYSTEM "locale.dtd">
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>om</LangID>
+ <DefaultName>Oromo, West Central</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>ET</CountryID>
+ <DefaultName>Ethiopia</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>/</DateSeparator>
+ <ThousandSeparator>,</ThousandSeparator>
+ <DecimalSeparator>.</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>.</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‘</QuotationStart>
+ <QuotationEnd>’</QuotationEnd>
+ <DoubleQuotationStart>“</DoubleQuotationStart>
+ <DoubleQuotationEnd>”</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$Qar-0472]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#,##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#,###.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0.00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0.00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0.00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>[CURRENCY]#,##0;([CURRENCY]#,##0)</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>[CURRENCY]#,##0.00;([CURRENCY]#,##0.00)</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>[CURRENCY]#,##0;[RED]([CURRENCY]#,##0)</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>[CURRENCY]#,##0.00;[RED]([CURRENCY]#,##0.00)</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>[CURRENCY]#,##0.--;[RED]([CURRENCY]#,##0.--)</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>D/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD/MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD/MM/YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD/MMM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM/YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM/DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD/MM/YY HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD/MM/YYYY HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">A-Z</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <FollowPageWord>Fl</FollowPageWord>
+ <FollowPageWord>Flt</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>Dil</DefaultAbbrvName>
+ <DefaultFullName>Dilbata</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>Wix</DefaultAbbrvName>
+ <DefaultFullName>Wiixata</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>Kib</DefaultAbbrvName>
+ <DefaultFullName>Kibxata</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>Rob</DefaultAbbrvName>
+ <DefaultFullName>Roobii</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>Kam</DefaultAbbrvName>
+ <DefaultFullName>Kamisa</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>Jim</DefaultAbbrvName>
+ <DefaultFullName>Jimaata</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>San</DefaultAbbrvName>
+ <DefaultFullName>Sanbat-Xiqqaa</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>Amj</DefaultAbbrvName>
+ <DefaultFullName>Amajjii</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>Gur</DefaultAbbrvName>
+ <DefaultFullName>Gurraandhala</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>Bit</DefaultAbbrvName>
+ <DefaultFullName>Bitootessa</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>Cam</DefaultAbbrvName>
+ <DefaultFullName>Caamsaa</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>Ebl</DefaultAbbrvName>
+ <DefaultFullName>Ebla</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>Wax</DefaultAbbrvName>
+ <DefaultFullName>Waxabajjii</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>Ado</DefaultAbbrvName>
+ <DefaultFullName>Adoolessa</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>Hag</DefaultAbbrvName>
+ <DefaultFullName>Hagayya </DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>Ful</DefaultAbbrvName>
+ <DefaultFullName>Fulbaana</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>Onk</DefaultAbbrvName>
+ <DefaultFullName>Onkoloolessa </DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>Sad</DefaultAbbrvName>
+ <DefaultFullName>Sadaasa</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>Mud</DefaultAbbrvName>
+ <DefaultFullName>Muddee</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>DKD</DefaultAbbrvName>
+ <DefaultFullName>Dhaloota Kiristoosiin Dura</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>DKB</DefaultAbbrvName>
+ <DefaultFullName>Dhaloota Kiristoosiin Booda</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>ETB</CurrencyID>
+ <CurrencySymbol>Qar</CurrencySymbol>
+ <BankSymbol>ETB</BankSymbol>
+ <CurrencyName>Qarshii</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>Dhugaa</trueWord>
+ <falseWord>Soba</falseWord>
+ <quarter1Word>Bona</quarter1Word>
+ <quarter2Word>Arfaasaa</quarter2Word>
+ <quarter3Word>Ganna</quarter3Word>
+ <quarter4Word>Birraa</quarter4Word>
+ <aboveWord>Gubbaa</aboveWord>
+ <belowWord>Jala</belowWord>
+ <quarter1Abbreviation>Bn</quarter1Abbreviation>
+ <quarter2Abbreviation>Ar</quarter2Abbreviation>
+ <quarter3Abbreviation>Gn</quarter3Abbreviation>
+ <quarter4Abbreviation>Br</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/ro_RO.xml b/i18npool/source/localedata/data/ro_RO.xml
index b5033ce9bb27..ed92d9243cb6 100644
--- a/i18npool/source/localedata/data/ro_RO.xml
+++ b/i18npool/source/localedata/data/ro_RO.xml
@@ -1,380 +1,390 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Locale SYSTEM 'locale.dtd'>
-<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.2">
-<LC_INFO>
-<Language>
-<LangID>ro</LangID>
-<DefaultName>Romanian</DefaultName>
-</Language>
-<Country>
-<CountryID>RO</CountryID>
-<DefaultName>Romania</DefaultName>
-</Country>
-</LC_INFO>
-<LC_CTYPE unoid="generic">
-<Separators>
-<DateSeparator>.</DateSeparator>
-<ThousandSeparator>.</ThousandSeparator>
-<DecimalSeparator>,</DecimalSeparator>
-<TimeSeparator>:</TimeSeparator>
-<Time100SecSeparator>,</Time100SecSeparator>
-<ListSeparator>;</ListSeparator>
-<LongDateDayOfWeekSeparator> </LongDateDayOfWeekSeparator>
-<LongDateDaySeparator> </LongDateDaySeparator>
-<LongDateMonthSeparator> </LongDateMonthSeparator>
-<LongDateYearSeparator> </LongDateYearSeparator>
-</Separators>
-<Markers>
-<QuotationStart>‘</QuotationStart>
-<QuotationEnd>’</QuotationEnd>
-<DoubleQuotationStart>„</DoubleQuotationStart>
-<DoubleQuotationEnd>”</DoubleQuotationEnd>
-</Markers>
-<TimeAM>AM</TimeAM>
-<TimePM>PM</TimePM>
-<MeasurementSystem>Metric</MeasurementSystem>
-</LC_CTYPE>
-<LC_FORMAT>
-<FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
-<FormatCode>DD.MM.YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
-<FormatCode>NN DD.MMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
-<FormatCode>MM.YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
-<FormatCode>DD MMM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="36">
-<FormatCode>MMMM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey6" default="false" type="medium" usage="DATE" formatindex="37">
-<FormatCode>QQ/YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
-<FormatCode>DD.MM.YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
-<FormatCode>DD.MM.YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
-<FormatCode>NNNND MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
-<FormatCode>D MMM YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey11" default="false" type="long" usage="DATE" formatindex="23">
-<FormatCode>D MMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey12" default="false" type="long" usage="DATE" formatindex="25">
-<FormatCode>D MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey13" default="false" type="long" usage="DATE" formatindex="27">
-<FormatCode>NN D MMM YY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
-<FormatCode>NN D MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="30">
-<FormatCode>NNNND MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="24">
-<FormatCode>D. MMM. YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="26">
-<FormatCode>D. MMMM YYYY</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey18" default="false" type="short" usage="DATE" formatindex="31">
-<FormatCode>MM-DD</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey19" default="false" type="medium" usage="DATE" formatindex="32">
-<FormatCode>YY-MM-DD</FormatCode>
-<DefaultName>ISO 8601</DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey20" default="false" type="medium" usage="DATE" formatindex="33">
-<FormatCode>YYYY-MM-DD</FormatCode>
-<DefaultName>ISO 8601</DefaultName>
-</FormatElement>
-<FormatElement msgid="DateFormatskey21" default="false" type="medium" usage="DATE" formatindex="38">
-<FormatCode>WW</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey1" default="true" type="short" usage="TIME" formatindex="39">
-<FormatCode>HH:MM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey2" default="true" type="medium" usage="TIME" formatindex="40">
-<FormatCode>HH:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey3" default="false" type="short" usage="TIME" formatindex="41">
-<FormatCode>HH:MM AM/PM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey4" default="false" type="medium" usage="TIME" formatindex="42">
-<FormatCode>HH:MM:SS AM/PM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
-<FormatCode>[HH]:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
-<FormatCode>MM:SS,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
-<FormatCode>[HH]:MM:SS,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
-<FormatCode>DD.MM.YY HH:MM</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
-<FormatCode>DD.MM.YYYY HH:MM:SS</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
-<FormatCode>Standard</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
-<FormatCode>0</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
-<FormatCode>0,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
-<FormatCode>#.##0</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
-<FormatCode>#.##0,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
-<FormatCode>#.###,00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
-<FormatCode>#.##0 [$lei-418];-#.##0 [$lei-418]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
-<FormatCode>#.##0,00 [$lei-418];-#.##0,00 [$lei-418]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
-<FormatCode>#.##0 [$lei-418];[RED]-#.##0 [$lei-418]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
-<FormatCode>#.##0,00 [$lei-418];[RED]-#.##0,00 [$lei-418]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
-<FormatCode>#.##0,00 CCC</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
-<FormatCode>#.##0,-- [$lei-418];[RED]-#.##0,-- [$lei-418]</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
-<FormatCode>0%</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
-<FormatCode>0,00%</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
-<FormatCode>0,00E+000</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-<FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
-<FormatCode>0,00E+00</FormatCode>
-<DefaultName></DefaultName>
-</FormatElement>
-</LC_FORMAT>
-<LC_COLLATION ref="en_US"/>
-<LC_SEARCH ref="en_US"/>
-<LC_INDEX>
-<IndexKey unoid="alphanumeric" default="true" phonetic="false">A Ă Â B-I Î J-S Ş T Ţ U-Z</IndexKey>
-<UnicodeScript>0</UnicodeScript>
-<UnicodeScript>1</UnicodeScript>
-<UnicodeScript>2</UnicodeScript>
-<FollowPageWord>p.</FollowPageWord>
-<FollowPageWord>pp.</FollowPageWord>
-</LC_INDEX>
-<LC_CALENDAR>
-<Calendar unoid="gregorian" default="true">
-<DaysOfWeek>
-<Day>
-<DayID>sun</DayID>
-<DefaultAbbrvName>D</DefaultAbbrvName>
-<DefaultFullName>duminică</DefaultFullName>
-</Day>
-<Day>
-<DayID>mon</DayID>
-<DefaultAbbrvName>L</DefaultAbbrvName>
-<DefaultFullName>luni</DefaultFullName>
-</Day>
-<Day>
-<DayID>tue</DayID>
-<DefaultAbbrvName>Ma</DefaultAbbrvName>
-<DefaultFullName>marţi</DefaultFullName>
-</Day>
-<Day>
-<DayID>wed</DayID>
-<DefaultAbbrvName>Mi</DefaultAbbrvName>
-<DefaultFullName>miercuri</DefaultFullName>
-</Day>
-<Day>
-<DayID>thu</DayID>
-<DefaultAbbrvName>J</DefaultAbbrvName>
-<DefaultFullName>joi</DefaultFullName>
-</Day>
-<Day>
-<DayID>fri</DayID>
-<DefaultAbbrvName>V</DefaultAbbrvName>
-<DefaultFullName>vineri</DefaultFullName>
-</Day>
-<Day>
-<DayID>sat</DayID>
-<DefaultAbbrvName>S</DefaultAbbrvName>
-<DefaultFullName>sâmbătă</DefaultFullName>
-</Day>
-</DaysOfWeek>
-<MonthsOfYear>
-<Month>
-<MonthID>jan</MonthID>
-<DefaultAbbrvName>ian</DefaultAbbrvName>
-<DefaultFullName>ianuarie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>feb</MonthID>
-<DefaultAbbrvName>febr</DefaultAbbrvName>
-<DefaultFullName>februarie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>mar</MonthID>
-<DefaultAbbrvName>mar</DefaultAbbrvName>
-<DefaultFullName>martie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>apr</MonthID>
-<DefaultAbbrvName>apr</DefaultAbbrvName>
-<DefaultFullName>aprilie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>may</MonthID>
-<DefaultAbbrvName>mai</DefaultAbbrvName>
-<DefaultFullName>mai</DefaultFullName>
-</Month>
-<Month>
-<MonthID>jun</MonthID>
-<DefaultAbbrvName>iun</DefaultAbbrvName>
-<DefaultFullName>iunie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>jul</MonthID>
-<DefaultAbbrvName>iul</DefaultAbbrvName>
-<DefaultFullName>iulie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>aug</MonthID>
-<DefaultAbbrvName>aug</DefaultAbbrvName>
-<DefaultFullName>august</DefaultFullName>
-</Month>
-<Month>
-<MonthID>sep</MonthID>
-<DefaultAbbrvName>sept</DefaultAbbrvName>
-<DefaultFullName>septembrie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>oct</MonthID>
-<DefaultAbbrvName>oct</DefaultAbbrvName>
-<DefaultFullName>octombrie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>nov</MonthID>
-<DefaultAbbrvName>nov</DefaultAbbrvName>
-<DefaultFullName>noiembrie</DefaultFullName>
-</Month>
-<Month>
-<MonthID>dec</MonthID>
-<DefaultAbbrvName>dec</DefaultAbbrvName>
-<DefaultFullName>decembrie</DefaultFullName>
-</Month>
-</MonthsOfYear>
-<Eras>
-<Era>
-<EraID>bc</EraID>
-<DefaultAbbrvName>î.Hr.</DefaultAbbrvName>
-<DefaultFullName>î.Hr.</DefaultFullName>
-</Era>
-<Era>
-<EraID>ad</EraID>
-<DefaultAbbrvName>d.Hr.</DefaultAbbrvName>
-<DefaultFullName>d.Hr.</DefaultFullName>
-</Era>
-</Eras>
-<StartDayOfWeek>
-<DayID>mon</DayID>
-</StartDayOfWeek>
-<MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
-</Calendar>
-</LC_CALENDAR>
-<LC_CURRENCY>
-<Currency default="true" usedInCompatibleFormatCodes="true">
-<CurrencyID>ROL</CurrencyID>
-<CurrencySymbol>lei</CurrencySymbol>
-<BankSymbol>ROL</BankSymbol>
-<CurrencyName>Leu</CurrencyName>
-<DecimalPlaces>2</DecimalPlaces>
-</Currency>
-</LC_CURRENCY>
-<LC_TRANSLITERATION ref="en_US"/>
-<LC_MISC>
-<ReservedWords>
-<trueWord>adevărat</trueWord>
-<falseWord>fals</falseWord>
-<quarter1Word>trimestrul 1</quarter1Word>
-<quarter2Word>trimestrul 2</quarter2Word>
-<quarter3Word>trimestrul 3</quarter3Word>
-<quarter4Word>trimestrul 4</quarter4Word>
-<aboveWord>deasupra</aboveWord>
-<belowWord>sub</belowWord>
-<quarter1Abbreviation>T1</quarter1Abbreviation>
-<quarter2Abbreviation>T2</quarter2Abbreviation>
-<quarter3Abbreviation>T3</quarter3Abbreviation>
-<quarter4Abbreviation>T4</quarter4Abbreviation>
-</ReservedWords>
-</LC_MISC>
-<LC_NumberingLevel ref="en_US"/>
-<LC_OutLineNumberingLevel ref="en_US"/>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.3">
+ <LC_INFO>
+ <Language>
+ <LangID>ro</LangID>
+ <DefaultName>Romanian</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>RO</CountryID>
+ <DefaultName>Romania</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>.</DateSeparator>
+ <ThousandSeparator>.</ThousandSeparator>
+ <DecimalSeparator>,</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>,</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator> </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator> </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>‘</QuotationStart>
+ <QuotationEnd>’</QuotationEnd>
+ <DoubleQuotationStart>„</DoubleQuotationStart>
+ <DoubleQuotationEnd>”</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>AM</TimeAM>
+ <TimePM>PM</TimePM>
+ <MeasurementSystem>Metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT>
+ <FormatElement msgid="DateFormatskey1" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="28">
+ <FormatCode>NN DD.MMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>MM.YY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>DD MMM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ/YY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>DD.MM.YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>DD.MM.YY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNND MMMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D MMM YY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D MMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D MMMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey13" default="false" type="long" usage="DATE" formatindex="27">
+ <FormatCode>NN D MMM YY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN D MMMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND MMMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D. MMM. YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D. MMMM YYYY</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM-DD</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="true" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="true" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="false" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="false" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS,00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS,00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>DD.MM.YYYY HH:MM:SS</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>Standard</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0,00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#.##0</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#.##0,00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#.###,00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>#.##0 [$lei-418];-#.##0 [$lei-418]</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>#.##0,00 [$lei-418];-#.##0,00 [$lei-418]</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>#.##0 [$lei-418];[RED]-#.##0 [$lei-418]</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>#.##0,00 [$lei-418];[RED]-#.##0,00 [$lei-418]</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>#.##0,00 CCC</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>#.##0,-- [$lei-418];[RED]-#.##0,-- [$lei-418]</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0,00%</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0,00E+000</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0,00E+00</FormatCode>
+ <DefaultName></DefaultName>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION ref="en_US"/>
+ <LC_SEARCH ref="en_US"/>
+ <LC_INDEX>
+ <IndexKey unoid="alphanumeric" default="true" phonetic="false">A Ă Â B-I Î J-S Ş T Ţ U-Z</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>2</UnicodeScript>
+ <FollowPageWord>p.</FollowPageWord>
+ <FollowPageWord>pp.</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>D</DefaultAbbrvName>
+ <DefaultFullName>duminică</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>L</DefaultAbbrvName>
+ <DefaultFullName>luni</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>Ma</DefaultAbbrvName>
+ <DefaultFullName>marţi</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>Mi</DefaultAbbrvName>
+ <DefaultFullName>miercuri</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>J</DefaultAbbrvName>
+ <DefaultFullName>joi</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>V</DefaultAbbrvName>
+ <DefaultFullName>vineri</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>S</DefaultAbbrvName>
+ <DefaultFullName>sâmbătă</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>ian</DefaultAbbrvName>
+ <DefaultFullName>ianuarie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>febr</DefaultAbbrvName>
+ <DefaultFullName>februarie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>mar</DefaultAbbrvName>
+ <DefaultFullName>martie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>apr</DefaultAbbrvName>
+ <DefaultFullName>aprilie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>mai</DefaultAbbrvName>
+ <DefaultFullName>mai</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>iun</DefaultAbbrvName>
+ <DefaultFullName>iunie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>iul</DefaultAbbrvName>
+ <DefaultFullName>iulie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>aug</DefaultAbbrvName>
+ <DefaultFullName>august</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>sept</DefaultAbbrvName>
+ <DefaultFullName>septembrie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>oct</DefaultAbbrvName>
+ <DefaultFullName>octombrie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>nov</DefaultAbbrvName>
+ <DefaultFullName>noiembrie</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>dec</DefaultAbbrvName>
+ <DefaultFullName>decembrie</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>î.Hr.</DefaultAbbrvName>
+ <DefaultFullName>î.Hr.</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>d.Hr.</DefaultAbbrvName>
+ <DefaultFullName>d.Hr.</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>mon</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>RON</CurrencyID>
+ <CurrencySymbol>lei</CurrencySymbol>
+ <BankSymbol>RON</BankSymbol>
+ <CurrencyName>Leu</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ <Currency default="false" usedInCompatibleFormatCodes="false" legacyOnly="true">
+ <!-- legacyOnly to avoid the duplicated listing in the number formatter
+ dialog because of the identical CurrencySymbol, which also confuses
+ the currency listbox selection mechanism. -->
+ <CurrencyID>ROL</CurrencyID>
+ <CurrencySymbol>lei</CurrencySymbol>
+ <BankSymbol>ROL</BankSymbol>
+ <CurrencyName>Leu</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION ref="en_US"/>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>adevărat</trueWord>
+ <falseWord>fals</falseWord>
+ <quarter1Word>trimestrul 1</quarter1Word>
+ <quarter2Word>trimestrul 2</quarter2Word>
+ <quarter3Word>trimestrul 3</quarter3Word>
+ <quarter4Word>trimestrul 4</quarter4Word>
+ <aboveWord>deasupra</aboveWord>
+ <belowWord>sub</belowWord>
+ <quarter1Abbreviation>T1</quarter1Abbreviation>
+ <quarter2Abbreviation>T2</quarter2Abbreviation>
+ <quarter3Abbreviation>T3</quarter3Abbreviation>
+ <quarter4Abbreviation>T4</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel ref="en_US"/>
+ <LC_OutLineNumberingLevel ref="en_US"/>
</Locale>
diff --git a/i18npool/source/localedata/data/sc_IT.xml b/i18npool/source/localedata/data/sc_IT.xml
new file mode 100644
index 000000000000..81b446995891
--- /dev/null
+++ b/i18npool/source/localedata/data/sc_IT.xml
@@ -0,0 +1,358 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+<LC_INFO>
+<Language>
+<LangID>sc</LangID>
+<DefaultName>Sardinian</DefaultName>
+</Language>
+<Country>
+<CountryID>IT</CountryID>
+<DefaultName>Italy</DefaultName>
+</Country>
+</LC_INFO>
+<LC_CTYPE unoid="generic">
+<Separators>
+<DateSeparator>/</DateSeparator>
+<ThousandSeparator>,</ThousandSeparator>
+<DecimalSeparator>.</DecimalSeparator>
+<TimeSeparator>:</TimeSeparator>
+<Time100SecSeparator>.</Time100SecSeparator>
+<ListSeparator>;</ListSeparator>
+<LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+<LongDateDaySeparator>, </LongDateDaySeparator>
+<LongDateMonthSeparator> </LongDateMonthSeparator>
+<LongDateYearSeparator> </LongDateYearSeparator>
+</Separators>
+<Markers>
+<QuotationStart>‘</QuotationStart>
+<QuotationEnd>’</QuotationEnd>
+<DoubleQuotationStart>“</DoubleQuotationStart>
+<DoubleQuotationEnd>”</DoubleQuotationEnd>
+</Markers>
+<TimeAM>a.m.</TimeAM>
+<TimePM>p.m.</TimePM>
+<MeasurementSystem>metric</MeasurementSystem>
+</LC_CTYPE>
+<LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$€-627]">
+<FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+<FormatCode>General</FormatCode>
+</FormatElement>
+<FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+<FormatCode>0</FormatCode>
+</FormatElement>
+<FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+<FormatCode>0.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+<FormatCode>#,##0</FormatCode>
+</FormatElement>
+<FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+<FormatCode>#,##0.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+<FormatCode>#,###.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+<FormatCode>0.00E+00</FormatCode>
+</FormatElement>
+<FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+<FormatCode>0.00E+000</FormatCode>
+</FormatElement>
+<FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+<FormatCode>0%</FormatCode>
+</FormatElement>
+<FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+<FormatCode>0.00%</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+<FormatCode>[CURRENCY] #,##0;-[CURRENCY] #,##0</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+<FormatCode>[CURRENCY] #,##0.00;-[CURRENCY] #,##0.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+<FormatCode>[CURRENCY] #,##0;[RED]-[CURRENCY] #,##0</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+<FormatCode>[CURRENCY] #,##0.00;[RED]-[CURRENCY] #,##0.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+<FormatCode>CCC #,##0.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+<FormatCode>[CURRENCY] #,##0.--;[RED]-[CURRENCY] #,##0.--</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+<FormatCode>D/MM/YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+<FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+<FormatCode>DD/MM/YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+<FormatCode>DD/MM/YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+<FormatCode>D, MMM YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+<FormatCode>D, MMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+<FormatCode>D, MMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+<FormatCode>D, MMMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+<FormatCode>D, MMMM YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+<FormatCode>NN, DD/MMM/YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+<FormatCode>NN, D, MMM YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+<FormatCode>NN, D, MMMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+<FormatCode>NNNND, MMMM YYYY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+<FormatCode>MM/DD</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+<FormatCode>YY-MM-DD</FormatCode>
+<DefaultName>ISO 8601</DefaultName>
+</FormatElement>
+<FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+<FormatCode>YYYY-MM-DD</FormatCode>
+<DefaultName>ISO 8601</DefaultName>
+</FormatElement>
+<FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+<FormatCode>MM/YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+<FormatCode>MMM/DD</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+<FormatCode>MMMM</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+<FormatCode>QQ YY</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+<FormatCode>WW</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+<FormatCode>HH:MM</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+<FormatCode>HH:MM:SS</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+<FormatCode>HH:MM AM/PM</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+<FormatCode>HH:MM:SS AM/PM</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+<FormatCode>[HH]:MM:SS</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+<FormatCode>MM:SS.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+<FormatCode>[HH]:MM:SS.00</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+<FormatCode>DD/MM/YY HH:MM</FormatCode>
+</FormatElement>
+<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+<FormatCode>DD/MM/YYYY HH:MM:SS AM/PM</FormatCode>
+</FormatElement>
+</LC_FORMAT>
+<LC_COLLATION>
+<Collator default="true" unoid="alphanumeric"/>
+<CollationOptions>
+<TransliterationModules>IGNORE_CASE</TransliterationModules>
+</CollationOptions>
+</LC_COLLATION>
+<LC_SEARCH>
+<SearchOptions>
+<TransliterationModules>IGNORE_CASE</TransliterationModules>
+</SearchOptions>
+</LC_SEARCH>
+<LC_INDEX>
+<IndexKey phonetic="false" default="true" unoid="alphanumeric">A-Z</IndexKey>
+<UnicodeScript>0</UnicodeScript>
+<UnicodeScript>1</UnicodeScript>
+<FollowPageWord>s.</FollowPageWord>
+<FollowPageWord>ss.</FollowPageWord>
+</LC_INDEX>
+<LC_CALENDAR>
+<Calendar unoid="gregorian" default="true">
+<DaysOfWeek>
+<Day>
+<DayID>sun</DayID>
+<DefaultAbbrvName>Dom</DefaultAbbrvName>
+<DefaultFullName>Domìniga</DefaultFullName>
+</Day>
+<Day>
+<DayID>mon</DayID>
+<DefaultAbbrvName>Lun</DefaultAbbrvName>
+<DefaultFullName>Lunis</DefaultFullName>
+</Day>
+<Day>
+<DayID>tue</DayID>
+<DefaultAbbrvName>Mar</DefaultAbbrvName>
+<DefaultFullName>Martis</DefaultFullName>
+</Day>
+<Day>
+<DayID>wed</DayID>
+<DefaultAbbrvName>Mer</DefaultAbbrvName>
+<DefaultFullName>Mèrcuris</DefaultFullName>
+</Day>
+<Day>
+<DayID>thu</DayID>
+<DefaultAbbrvName>Gio</DefaultAbbrvName>
+<DefaultFullName>Giòvia</DefaultFullName>
+</Day>
+<Day>
+<DayID>fri</DayID>
+<DefaultAbbrvName>Che</DefaultAbbrvName>
+<DefaultFullName>Chenàbura</DefaultFullName>
+</Day>
+<Day>
+<DayID>sat</DayID>
+<DefaultAbbrvName>Sab</DefaultAbbrvName>
+<DefaultFullName>Sàbadu</DefaultFullName>
+</Day>
+</DaysOfWeek>
+<MonthsOfYear>
+<Month>
+<MonthID>jan</MonthID>
+<DefaultAbbrvName>Ghe</DefaultAbbrvName>
+<DefaultFullName>Ghennàrgiu</DefaultFullName>
+</Month>
+<Month>
+<MonthID>feb</MonthID>
+<DefaultAbbrvName>Fre</DefaultAbbrvName>
+<DefaultFullName>Freàrgiu</DefaultFullName>
+</Month>
+<Month>
+<MonthID>mar</MonthID>
+<DefaultAbbrvName>Mar</DefaultAbbrvName>
+<DefaultFullName>Martzu</DefaultFullName>
+</Month>
+<Month>
+<MonthID>apr</MonthID>
+<DefaultAbbrvName>Abr</DefaultAbbrvName>
+<DefaultFullName>Abrile</DefaultFullName>
+</Month>
+<Month>
+<MonthID>may</MonthID>
+<DefaultAbbrvName>Maj</DefaultAbbrvName>
+<DefaultFullName>Maju</DefaultFullName>
+</Month>
+<Month>
+<MonthID>jun</MonthID>
+<DefaultAbbrvName>Làm</DefaultAbbrvName>
+<DefaultFullName>Làmpadas</DefaultFullName>
+</Month>
+<Month>
+<MonthID>jul</MonthID>
+<DefaultAbbrvName>Trì</DefaultAbbrvName>
+<DefaultFullName>Trìulas</DefaultFullName>
+</Month>
+<Month>
+<MonthID>aug</MonthID>
+<DefaultAbbrvName>Aus</DefaultAbbrvName>
+<DefaultFullName>Austu</DefaultFullName>
+</Month>
+<Month>
+<MonthID>sep</MonthID>
+<DefaultAbbrvName>Cab</DefaultAbbrvName>
+<DefaultFullName>Cabudanni</DefaultFullName>
+</Month>
+<Month>
+<MonthID>oct</MonthID>
+<DefaultAbbrvName>Sga</DefaultAbbrvName>
+<DefaultFullName>Santugaine</DefaultFullName>
+</Month>
+<Month>
+<MonthID>nov</MonthID>
+<DefaultAbbrvName>San</DefaultAbbrvName>
+<DefaultFullName>Santandria</DefaultFullName>
+</Month>
+<Month>
+<MonthID>dec</MonthID>
+<DefaultAbbrvName>Nad</DefaultAbbrvName>
+<DefaultFullName>Nadale</DefaultFullName>
+</Month>
+</MonthsOfYear>
+<Eras>
+<Era>
+<EraID>bc</EraID>
+<DefaultAbbrvName>a.C.</DefaultAbbrvName>
+<DefaultFullName>in antis de Cristos</DefaultFullName>
+</Era>
+<Era>
+<EraID>ad</EraID>
+<DefaultAbbrvName>p.C.</DefaultAbbrvName>
+<DefaultFullName>a pustis de Cristos</DefaultFullName>
+</Era>
+</Eras>
+<StartDayOfWeek>
+<DayID>mon</DayID>
+</StartDayOfWeek>
+<MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+</Calendar>
+</LC_CALENDAR>
+<LC_CURRENCY>
+<Currency default="true" usedInCompatibleFormatCodes="true">
+<CurrencyID>EUR</CurrencyID>
+<CurrencySymbol>€</CurrencySymbol>
+<BankSymbol>EUR</BankSymbol>
+<CurrencyName>èuro</CurrencyName>
+<DecimalPlaces>2</DecimalPlaces>
+</Currency>
+</LC_CURRENCY>
+<LC_TRANSLITERATION>
+<Transliteration unoid="LOWERCASE_UPPERCASE"/>
+<Transliteration unoid="UPPERCASE_LOWERCASE"/>
+<Transliteration unoid="IGNORE_CASE"/>
+</LC_TRANSLITERATION>
+<LC_MISC>
+<ReservedWords>
+<trueWord>Beru</trueWord>
+<falseWord>Farsu</falseWord>
+<quarter1Word>Cuartu 1</quarter1Word>
+<quarter2Word>Cuartu 2</quarter2Word>
+<quarter3Word>Cuartu 3</quarter3Word>
+<quarter4Word>Cuartu 4</quarter4Word>
+<aboveWord>Subra</aboveWord>
+<belowWord>Suta</belowWord>
+<quarter1Abbreviation>C.tu 1</quarter1Abbreviation>
+<quarter2Abbreviation>C.tu 2</quarter2Abbreviation>
+<quarter3Abbreviation>C.tu 3</quarter3Abbreviation>
+<quarter4Abbreviation>C.tu 4</quarter4Abbreviation>
+</ReservedWords>
+</LC_MISC>
+<LC_NumberingLevel>
+<NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+<NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+<NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+<NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+<NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+<NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+<NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+<NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+</LC_NumberingLevel>
+<LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/data/so_SO.xml b/i18npool/source/localedata/data/so_SO.xml
index f5d666ec7e5a..981cb54aff3e 100644
--- a/i18npool/source/localedata/data/so_SO.xml
+++ b/i18npool/source/localedata/data/so_SO.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE Locale SYSTEM 'locale.dtd'>
-<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.1">
<LC_INFO>
<Language>
<LangID>so</LangID>
@@ -13,12 +13,12 @@
</LC_INFO>
<LC_CTYPE unoid="generic">
<Separators>
- <DateSeparator>.</DateSeparator>
- <ThousandSeparator> </ThousandSeparator>
+ <DateSeparator>/</DateSeparator>
+ <ThousandSeparator>,</ThousandSeparator>
<DecimalSeparator>.</DecimalSeparator>
<TimeSeparator>:</TimeSeparator>
<Time100SecSeparator>.</Time100SecSeparator>
- <ListSeparator>,</ListSeparator>
+ <ListSeparator>;</ListSeparator>
<LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
<LongDateDaySeparator>, </LongDateDaySeparator>
<LongDateMonthSeparator> </LongDateMonthSeparator>
@@ -30,11 +30,11 @@
<DoubleQuotationStart>‘</DoubleQuotationStart>
<DoubleQuotationEnd>’</DoubleQuotationEnd>
</Markers>
- <TimeAM>AM</TimeAM>
- <TimePM>PM</TimePM>
+ <TimeAM>XH</TimeAM>
+ <TimePM>XD</TimePM>
<MeasurementSystem>metric</MeasurementSystem>
</LC_CTYPE>
- <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$So. Sh.-477]">
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$Ssh-477]">
<FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
<FormatCode>General</FormatCode>
</FormatElement>
@@ -45,13 +45,13 @@
<FormatCode>0.00</FormatCode>
</FormatElement>
<FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
- <FormatCode># ##0</FormatCode>
+ <FormatCode>#,##0</FormatCode>
</FormatElement>
<FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
- <FormatCode># ##0.00</FormatCode>
+ <FormatCode>#,##0.00</FormatCode>
</FormatElement>
<FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
- <FormatCode># ###.00</FormatCode>
+ <FormatCode>#,###.00</FormatCode>
</FormatElement>
<FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
<FormatCode>0.00E+00</FormatCode>
@@ -66,34 +66,34 @@
<FormatCode>0.00%</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
- <FormatCode># ##0 [CURRENCY];-# ##0 [CURRENCY]</FormatCode>
+ <FormatCode>[CURRENCY]#,##0;-[CURRENCY]#,##0</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
- <FormatCode># ##0.00 [CURRENCY];-# ##0.00 [CURRENCY]</FormatCode>
+ <FormatCode>[CURRENCY]#,##0.00;-[CURRENCY]#,##0.00</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
- <FormatCode># ##0 [CURRENCY];[RED]-# ##0 [CURRENCY]</FormatCode>
+ <FormatCode>[CURRENCY]#,##0;[RED]-[CURRENCY]#,##0</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
- <FormatCode># ##0.00 [CURRENCY];[RED]-# ##0.00 [CURRENCY]</FormatCode>
+ <FormatCode>[CURRENCY]#,##0.00;[RED]-[CURRENCY]#,##0.00</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
- <FormatCode># ##0.00CCC</FormatCode>
+ <FormatCode>CCC#,##0.00</FormatCode>
</FormatElement>
<FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
- <FormatCode># ##0.-- [CURRENCY];[RED]-# ##0.-- [CURRENCY]</FormatCode>
+ <FormatCode>[CURRENCY]#,##0.--;[RED]-[CURRENCY]#,##0.--</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
- <FormatCode>D.MM.YY</FormatCode>
+ <FormatCode>D/MM/YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
<FormatCode>NNNNDD, MMMM YYYY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
- <FormatCode>DD.MM.YY</FormatCode>
+ <FormatCode>DD/MM/YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
- <FormatCode>DD.MM.YYYY</FormatCode>
+ <FormatCode>DD/MM/YYYY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
<FormatCode>D, MMM YY</FormatCode>
@@ -111,7 +111,7 @@
<FormatCode>D, MMMM YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
- <FormatCode>NN, DD.MMM.YY</FormatCode>
+ <FormatCode>NN, DD/MMM/YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
<FormatCode>NN, D, MMM YY</FormatCode>
@@ -123,7 +123,7 @@
<FormatCode>NNNND, MMMM YYYY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
- <FormatCode>MM.DD</FormatCode>
+ <FormatCode>MM/DD</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
<FormatCode>YY-MM-DD</FormatCode>
@@ -134,10 +134,10 @@
<DefaultName>ISO 8601</DefaultName>
</FormatElement>
<FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
- <FormatCode>MM.YY</FormatCode>
+ <FormatCode>MM/YY</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
- <FormatCode>MMM.DD</FormatCode>
+ <FormatCode>MMM/DD</FormatCode>
</FormatElement>
<FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
<FormatCode>MMMM</FormatCode>
@@ -170,10 +170,10 @@
<FormatCode>[HH]:MM:SS.00</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
- <FormatCode>DD.MM.YY HH:MM</FormatCode>
+ <FormatCode>DD/MM/YY HH:MM</FormatCode>
</FormatElement>
<FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
- <FormatCode>DD.MM.YYYY HH:MM:SS AM/PM</FormatCode>
+ <FormatCode>DD/MM/YYYY HH:MM:SS AM/PM</FormatCode>
</FormatElement>
</LC_FORMAT>
<LC_COLLATION>
@@ -191,15 +191,15 @@
<IndexKey phonetic="false" default="true" unoid="alphanumeric">A-Z</IndexKey>
<UnicodeScript>0</UnicodeScript>
<UnicodeScript>1</UnicodeScript>
- <FollowPageWord>bg.</FollowPageWord>
- <FollowPageWord>bgg.</FollowPageWord>
+ <FollowPageWord>bg.s</FollowPageWord>
+ <FollowPageWord>bgg.s</FollowPageWord>
</LC_INDEX>
<LC_CALENDAR>
<Calendar unoid="gregorian" default="true">
<DaysOfWeek>
<Day>
<DayID>sun</DayID>
- <DefaultAbbrvName>Axd</DefaultAbbrvName>
+ <DefaultAbbrvName>Axa</DefaultAbbrvName>
<DefaultFullName>Axad</DefaultFullName>
</Day>
<Day>
@@ -215,7 +215,7 @@
<Day>
<DayID>wed</DayID>
<DefaultAbbrvName>Arb</DefaultAbbrvName>
- <DefaultFullName>Arbaco</DefaultFullName>
+ <DefaultFullName>Arboco</DefaultFullName>
</Day>
<Day>
<DayID>thu</DayID>
@@ -247,7 +247,7 @@
<Month>
<MonthID>mar</MonthID>
<DefaultAbbrvName>Mar</DefaultAbbrvName>
- <DefaultFullName>Maarso</DefaultFullName>
+ <DefaultFullName>Marso</DefaultFullName>
</Month>
<Month>
<MonthID>apr</MonthID>
@@ -256,18 +256,18 @@
</Month>
<Month>
<MonthID>may</MonthID>
- <DefaultAbbrvName>Ma</DefaultAbbrvName>
- <DefaultFullName>Maajo</DefaultFullName>
+ <DefaultAbbrvName>Maj</DefaultAbbrvName>
+ <DefaultFullName>Majo</DefaultFullName>
</Month>
<Month>
<MonthID>jun</MonthID>
<DefaultAbbrvName>Jun</DefaultAbbrvName>
- <DefaultFullName>Juun</DefaultFullName>
+ <DefaultFullName>Junyo</DefaultFullName>
</Month>
<Month>
<MonthID>jul</MonthID>
- <DefaultAbbrvName>Lul</DefaultAbbrvName>
- <DefaultFullName>Luulyo</DefaultFullName>
+ <DefaultAbbrvName>Jul</DefaultAbbrvName>
+ <DefaultFullName>Julaayo</DefaultFullName>
</Month>
<Month>
<MonthID>aug</MonthID>
@@ -277,7 +277,7 @@
<Month>
<MonthID>sep</MonthID>
<DefaultAbbrvName>Seb</DefaultAbbrvName>
- <DefaultFullName>Sebteembar</DefaultFullName>
+ <DefaultFullName>Sebtembar </DefaultFullName>
</Month>
<Month>
<MonthID>oct</MonthID>
@@ -292,19 +292,19 @@
<Month>
<MonthID>dec</MonthID>
<DefaultAbbrvName>Dis</DefaultAbbrvName>
- <DefaultFullName>Diseembar</DefaultFullName>
+ <DefaultFullName>Disembar</DefaultFullName>
</Month>
</MonthsOfYear>
<Eras>
<Era>
<EraID>bc</EraID>
- <DefaultAbbrvName>CD</DefaultAbbrvName>
- <DefaultFullName>N. Ciise ka hor (CS)</DefaultFullName>
+ <DefaultAbbrvName>CH</DefaultAbbrvName>
+ <DefaultFullName>Ciise Hortiis</DefaultFullName>
</Era>
<Era>
<EraID>ad</EraID>
- <DefaultAbbrvName>AD</DefaultAbbrvName>
- <DefaultFullName>N. Ciise Ka dib (CS)</DefaultFullName>
+ <DefaultAbbrvName>CD</DefaultAbbrvName>
+ <DefaultFullName>Ciise Dabadiis</DefaultFullName>
</Era>
</Eras>
<StartDayOfWeek>
@@ -316,6 +316,13 @@
<LC_CURRENCY>
<Currency default="true" usedInCompatibleFormatCodes="true">
<CurrencyID>SOS</CurrencyID>
+ <CurrencySymbol>Ssh</CurrencySymbol>
+ <BankSymbol>SOS</BankSymbol>
+ <CurrencyName>Shilin Soomaali</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ <Currency default="false" usedInCompatibleFormatCodes="false" legacyOnly="true">
+ <CurrencyID>SOS</CurrencyID>
<CurrencySymbol>So. Sh.</CurrencySymbol>
<BankSymbol>SOS</BankSymbol>
<CurrencyName>Shilin Soomaali</CurrencyName>
@@ -331,27 +338,27 @@
<ReservedWords>
<trueWord>Run</trueWord>
<falseWord>Been</falseWord>
- <quarter1Word>Rubaca kowaad</quarter1Word>
- <quarter2Word>Rubaca labaad</quarter2Word>
- <quarter3Word>Rubaca sadaxaad</quarter3Word>
- <quarter4Word>Rubaca afaraad</quarter4Word>
- <aboveWord>ka kor</aboveWord>
- <belowWord>ka hoos</belowWord>
- <quarter1Abbreviation>Q1</quarter1Abbreviation>
- <quarter2Abbreviation>Q2</quarter2Abbreviation>
- <quarter3Abbreviation>Q3</quarter3Abbreviation>
- <quarter4Abbreviation>Q4</quarter4Abbreviation>
+ <quarter1Word>Afarmeeloodka 1aad</quarter1Word>
+ <quarter2Word>Afarmeeloodka 2aad</quarter2Word>
+ <quarter3Word>Afarmeeloodka 3aad</quarter3Word>
+ <quarter4Word>Afarmeeloodka 4aad</quarter4Word>
+ <aboveWord>Kor</aboveWord>
+ <belowWord>Hoos</belowWord>
+ <quarter1Abbreviation>AM1</quarter1Abbreviation>
+ <quarter2Abbreviation>AM2</quarter2Abbreviation>
+ <quarter3Abbreviation>AM3</quarter3Abbreviation>
+ <quarter4Abbreviation>AM4</quarter4Abbreviation>
</ReservedWords>
</LC_MISC>
<LC_NumberingLevel>
- <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
- <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
- <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
- <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
- <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
- <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
- <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
- <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
</LC_NumberingLevel>
<LC_OutLineNumberingLevel ref="en_US"/>
</Locale>
diff --git a/i18npool/source/localedata/data/ug_CN.xml b/i18npool/source/localedata/data/ug_CN.xml
new file mode 100644
index 000000000000..b99f1f89a7ee
--- /dev/null
+++ b/i18npool/source/localedata/data/ug_CN.xml
@@ -0,0 +1,364 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE Locale SYSTEM 'locale.dtd'>
+<Locale versionDTD="2.0.3" allowUpdateFromCLDR="no" version="1.0">
+ <LC_INFO>
+ <Language>
+ <LangID>ug</LangID>
+ <DefaultName>Uyghur</DefaultName>
+ </Language>
+ <Country>
+ <CountryID>CN</CountryID>
+ <DefaultName>China</DefaultName>
+ </Country>
+ </LC_INFO>
+ <LC_CTYPE unoid="generic">
+ <Separators>
+ <DateSeparator>-</DateSeparator>
+ <ThousandSeparator>,</ThousandSeparator>
+ <DecimalSeparator>.</DecimalSeparator>
+ <TimeSeparator>:</TimeSeparator>
+ <Time100SecSeparator>.</Time100SecSeparator>
+ <ListSeparator>;</ListSeparator>
+ <LongDateDayOfWeekSeparator>, </LongDateDayOfWeekSeparator>
+ <LongDateDaySeparator>, </LongDateDaySeparator>
+ <LongDateMonthSeparator> </LongDateMonthSeparator>
+ <LongDateYearSeparator> </LongDateYearSeparator>
+ </Separators>
+ <Markers>
+ <QuotationStart>»</QuotationStart>
+ <QuotationEnd>«</QuotationEnd>
+ <DoubleQuotationStart>’</DoubleQuotationStart>
+ <DoubleQuotationEnd>‘</DoubleQuotationEnd>
+ </Markers>
+ <TimeAM>چ ب</TimeAM>
+ <TimePM>چ ك</TimePM>
+ <MeasurementSystem>metric</MeasurementSystem>
+ </LC_CTYPE>
+ <LC_FORMAT replaceFrom="[CURRENCY]" replaceTo="[$¥-0480]">
+ <FormatElement msgid="FixedFormatskey1" default="true" type="medium" usage="FIXED_NUMBER" formatindex="0">
+ <FormatCode>General</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey2" default="true" type="short" usage="FIXED_NUMBER" formatindex="1">
+ <FormatCode>0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey3" default="false" type="medium" usage="FIXED_NUMBER" formatindex="2">
+ <FormatCode>0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey4" default="false" type="short" usage="FIXED_NUMBER" formatindex="3">
+ <FormatCode>#,##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey5" default="false" type="medium" usage="FIXED_NUMBER" formatindex="4">
+ <FormatCode>#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="FixedFormatskey6" default="false" type="medium" usage="FIXED_NUMBER" formatindex="5">
+ <FormatCode>#,###.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey1" default="true" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="6">
+ <FormatCode>0.00E+00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="ScientificFormatskey2" default="false" type="medium" usage="SCIENTIFIC_NUMBER" formatindex="7">
+ <FormatCode>0.00E+000</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey1" default="true" type="short" usage="PERCENT_NUMBER" formatindex="8">
+ <FormatCode>0%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="PercentFormatskey2" default="true" type="long" usage="PERCENT_NUMBER" formatindex="9">
+ <FormatCode>0.00%</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey1" default="true" type="short" usage="CURRENCY" formatindex="12">
+ <FormatCode>[CURRENCY]#,##0;[CURRENCY]-#,##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey2" default="false" type="medium" usage="CURRENCY" formatindex="13">
+ <FormatCode>[CURRENCY]#,##0.00;[CURRENCY]-#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey3" default="false" type="medium" usage="CURRENCY" formatindex="14">
+ <FormatCode>[CURRENCY]#,##0;[RED][CURRENCY]-#,##0</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey4" default="true" type="medium" usage="CURRENCY" formatindex="15">
+ <FormatCode>[CURRENCY]#,##0.00;[RED][CURRENCY]-#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey5" default="false" type="medium" usage="CURRENCY" formatindex="16">
+ <FormatCode>CCC#,##0.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="CurrencyFormatskey6" default="false" type="medium" usage="CURRENCY" formatindex="17">
+ <FormatCode>[CURRENCY]#,##0.--;[RED][CURRENCY]-#,##0.--</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey11" default="true" type="short" usage="DATE" formatindex="18">
+ <FormatCode>YY-MM-DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey14" default="true" type="long" usage="DATE" formatindex="19">
+ <FormatCode>NNNNDD, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey6" default="true" type="medium" usage="DATE" formatindex="20">
+ <FormatCode>YY-MM-DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey5" default="false" type="medium" usage="DATE" formatindex="21">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey15" default="false" type="long" usage="DATE" formatindex="22">
+ <FormatCode>D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey16" default="false" type="long" usage="DATE" formatindex="23">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey21" default="false" type="long" usage="DATE" formatindex="24">
+ <FormatCode>D, MMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey17" default="false" type="long" usage="DATE" formatindex="25">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey22" default="false" type="long" usage="DATE" formatindex="26">
+ <FormatCode>D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey10" default="false" type="medium" usage="DATE" formatindex="27">
+ <FormatCode>NN, DD-MMM-YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey18" default="false" type="long" usage="DATE" formatindex="28">
+ <FormatCode>NN, D, MMM YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey19" default="false" type="long" usage="DATE" formatindex="29">
+ <FormatCode>NN, D, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey20" default="false" type="long" usage="DATE" formatindex="30">
+ <FormatCode>NNNND, MMMM YYYY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey12" default="false" type="short" usage="DATE" formatindex="31">
+ <FormatCode>MM-DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey7" default="false" type="medium" usage="DATE" formatindex="32">
+ <FormatCode>YY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey8" default="false" type="medium" usage="DATE" formatindex="33">
+ <FormatCode>YYYY-MM-DD</FormatCode>
+ <DefaultName>ISO 8601</DefaultName>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey1" default="false" type="medium" usage="DATE" formatindex="34">
+ <FormatCode>YY-MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey2" default="false" type="medium" usage="DATE" formatindex="35">
+ <FormatCode>MMM-DD</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey3" default="false" type="medium" usage="DATE" formatindex="36">
+ <FormatCode>MMMM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey4" default="false" type="medium" usage="DATE" formatindex="37">
+ <FormatCode>QQ YY</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateFormatskey9" default="false" type="medium" usage="DATE" formatindex="38">
+ <FormatCode>WW</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey1" default="false" type="short" usage="TIME" formatindex="39">
+ <FormatCode>HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey2" default="false" type="medium" usage="TIME" formatindex="40">
+ <FormatCode>HH:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey3" default="true" type="short" usage="TIME" formatindex="41">
+ <FormatCode>HH:MM AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey4" default="true" type="medium" usage="TIME" formatindex="42">
+ <FormatCode>HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey5" default="false" type="medium" usage="TIME" formatindex="43">
+ <FormatCode>[HH]:MM:SS</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey6" default="false" type="short" usage="TIME" formatindex="44">
+ <FormatCode>MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="TimeFormatskey7" default="false" type="medium" usage="TIME" formatindex="45">
+ <FormatCode>[HH]:MM:SS.00</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey1" default="true" type="medium" usage="DATE_TIME" formatindex="46">
+ <FormatCode>YY-MM-DD HH:MM</FormatCode>
+ </FormatElement>
+ <FormatElement msgid="DateTimeFormatskey2" default="false" type="medium" usage="DATE_TIME" formatindex="47">
+ <FormatCode>YYYY-MM-DD HH:MM:SS AM/PM</FormatCode>
+ </FormatElement>
+ </LC_FORMAT>
+ <LC_COLLATION>
+ <Collator default="true" unoid="alphanumeric"/>
+ <CollationOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </CollationOptions>
+ </LC_COLLATION>
+ <LC_SEARCH>
+ <SearchOptions>
+ <TransliterationModules>IGNORE_CASE</TransliterationModules>
+ </SearchOptions>
+ </LC_SEARCH>
+ <LC_INDEX>
+ <IndexKey phonetic="false" default="true" unoid="alphanumeric">ا-ە-ب-پ-ت-ج-چ-خ-د-ر-زژس-ش-غ-ف-ق-ك-گ-ڭ-ل-م-ن-ھ-و-ۇ-ۆ-ۈ-ۋ-ې-ى-ئ</IndexKey>
+ <UnicodeScript>0</UnicodeScript>
+ <UnicodeScript>1</UnicodeScript>
+ <UnicodeScript>2</UnicodeScript>
+ <UnicodeScript>3</UnicodeScript>
+ <UnicodeScript>8</UnicodeScript>
+ <UnicodeScript>11</UnicodeScript>
+ <UnicodeScript>80</UnicodeScript>
+ <UnicodeScript>84</UnicodeScript>
+ <FollowPageWord>ئەگەش</FollowPageWord>
+ <FollowPageWord>ئەگەش</FollowPageWord>
+ </LC_INDEX>
+ <LC_CALENDAR>
+ <Calendar unoid="gregorian" default="true">
+ <DaysOfWeek>
+ <Day>
+ <DayID>sun</DayID>
+ <DefaultAbbrvName>ي</DefaultAbbrvName>
+ <DefaultFullName>يەكشەنبە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>mon</DayID>
+ <DefaultAbbrvName>د</DefaultAbbrvName>
+ <DefaultFullName>دۈشەنبە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>tue</DayID>
+ <DefaultAbbrvName>س</DefaultAbbrvName>
+ <DefaultFullName>سەيشەنبە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>wed</DayID>
+ <DefaultAbbrvName>چ</DefaultAbbrvName>
+ <DefaultFullName>چارشەنبە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>thu</DayID>
+ <DefaultAbbrvName>پ</DefaultAbbrvName>
+ <DefaultFullName>پەيشەنبە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>fri</DayID>
+ <DefaultAbbrvName>ج</DefaultAbbrvName>
+ <DefaultFullName>جۈمە</DefaultFullName>
+ </Day>
+ <Day>
+ <DayID>sat</DayID>
+ <DefaultAbbrvName>ش</DefaultAbbrvName>
+ <DefaultFullName>شەنبە</DefaultFullName>
+ </Day>
+ </DaysOfWeek>
+ <MonthsOfYear>
+ <Month>
+ <MonthID>jan</MonthID>
+ <DefaultAbbrvName>قەھرىتان</DefaultAbbrvName>
+ <DefaultFullName>قەھرىتان</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>feb</MonthID>
+ <DefaultAbbrvName>ھۇت</DefaultAbbrvName>
+ <DefaultFullName>ھۇت</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>mar</MonthID>
+ <DefaultAbbrvName>نەۋرۇز</DefaultAbbrvName>
+ <DefaultFullName>نەۋرۇز</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>apr</MonthID>
+ <DefaultAbbrvName>ئۇمۇت</DefaultAbbrvName>
+ <DefaultFullName>ئۇمۇت</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>may</MonthID>
+ <DefaultAbbrvName>باھار</DefaultAbbrvName>
+ <DefaultFullName>باھار</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jun</MonthID>
+ <DefaultAbbrvName>سەپەر</DefaultAbbrvName>
+ <DefaultFullName>سەپەر</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>jul</MonthID>
+ <DefaultAbbrvName>چىللە</DefaultAbbrvName>
+ <DefaultFullName>چىللە</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>aug</MonthID>
+ <DefaultAbbrvName>تومۇز</DefaultAbbrvName>
+ <DefaultFullName>تومۇز</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>sep</MonthID>
+ <DefaultAbbrvName>مىزان</DefaultAbbrvName>
+ <DefaultFullName>مىزان</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>oct</MonthID>
+ <DefaultAbbrvName>ئوغۇز</DefaultAbbrvName>
+ <DefaultFullName>ئوغۇز</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>nov</MonthID>
+ <DefaultAbbrvName>ئوغلاق</DefaultAbbrvName>
+ <DefaultFullName>ئوغلاق</DefaultFullName>
+ </Month>
+ <Month>
+ <MonthID>dec</MonthID>
+ <DefaultAbbrvName>كۆنەك</DefaultAbbrvName>
+ <DefaultFullName>كۆنەك</DefaultFullName>
+ </Month>
+ </MonthsOfYear>
+ <Eras>
+ <Era>
+ <EraID>bc</EraID>
+ <DefaultAbbrvName>م ئى</DefaultAbbrvName>
+ <DefaultFullName>مىلادىيەدىن ئىلگىرى</DefaultFullName>
+ </Era>
+ <Era>
+ <EraID>ad</EraID>
+ <DefaultAbbrvName>م</DefaultAbbrvName>
+ <DefaultFullName>مىلادىيە</DefaultFullName>
+ </Era>
+ </Eras>
+ <StartDayOfWeek>
+ <DayID>sun</DayID>
+ </StartDayOfWeek>
+ <MinimalDaysInFirstWeek>1</MinimalDaysInFirstWeek>
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+ <Currency default="true" usedInCompatibleFormatCodes="true">
+ <CurrencyID>CNY</CurrencyID>
+ <CurrencySymbol>¥</CurrencySymbol>
+ <BankSymbol>CNY</BankSymbol>
+ <CurrencyName>يۈەن</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
+ </LC_CURRENCY>
+ <LC_TRANSLITERATION>
+ <Transliteration unoid="LOWERCASE_UPPERCASE"/>
+ <Transliteration unoid="UPPERCASE_LOWERCASE"/>
+ <Transliteration unoid="IGNORE_CASE"/>
+ </LC_TRANSLITERATION>
+ <LC_MISC>
+ <ReservedWords>
+ <trueWord>راست</trueWord>
+ <falseWord>يالغان</falseWord>
+ <quarter1Word>بىرىنچى چارەك</quarter1Word>
+ <quarter2Word>ئىككىنچى چارەك</quarter2Word>
+ <quarter3Word>ئۈچىنچى چارەك</quarter3Word>
+ <quarter4Word>تۆتىنچى چارەك</quarter4Word>
+ <aboveWord>ئۈستى</aboveWord>
+ <belowWord>ئاستى</belowWord>
+ <quarter1Abbreviation>1 چارەك</quarter1Abbreviation>
+ <quarter2Abbreviation>2 چارەك</quarter2Abbreviation>
+ <quarter3Abbreviation>3 چارەك</quarter3Abbreviation>
+ <quarter4Abbreviation>4 چارەك</quarter4Abbreviation>
+ </ReservedWords>
+ </LC_MISC>
+ <LC_NumberingLevel>
+ <NumberingLevel NumType="4" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="4" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="4" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="2" Prefix=" " Suffix="."/>
+ <NumberingLevel NumType="0" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix=" " Suffix=")"/>
+ <NumberingLevel NumType="1" Prefix="(" Suffix=")"/>
+ <NumberingLevel NumType="3" Prefix=" " Suffix="."/>
+ </LC_NumberingLevel>
+ <LC_OutLineNumberingLevel ref="en_US"/>
+</Locale>
+<!--Version 1.0 -->
diff --git a/i18npool/source/localedata/localedata.cxx b/i18npool/source/localedata/localedata.cxx
index ce29646a8ad9..e119e71ec14c 100644
--- a/i18npool/source/localedata/localedata.cxx
+++ b/i18npool/source/localedata/localedata.cxx
@@ -168,6 +168,8 @@ static const struct {
{ "fy_NL", lcl_DATA_EURO },
{ "oc_FR", lcl_DATA_EURO },
{ "mt_MT", lcl_DATA_EURO },
+ { "sc_IT", lcl_DATA_EURO },
+ { "ast_ES", lcl_DATA_EURO },
{ "ja_JP", lcl_DATA_OTHERS },
{ "ko_KR", lcl_DATA_OTHERS },
@@ -243,6 +245,9 @@ static const struct {
{ "my_MM", lcl_DATA_OTHERS },
{ "shs_CA", lcl_DATA_OTHERS },
{ "tpi_PG", lcl_DATA_OTHERS },
+ { "ar_OM", lcl_DATA_OTHERS },
+ { "ug_CN", lcl_DATA_OTHERS },
+ { "om_ET", lcl_DATA_OTHERS },
};
static const sal_Unicode under = sal_Unicode('_');
@@ -1386,6 +1391,7 @@ OutlineNumbering::OutlineNumbering(const OutlineNumberingLevel_Impl* pOutlnLevel
OutlineNumbering::~OutlineNumbering()
{
+ delete [] m_pOutlineLevels;
}
sal_Int32 OutlineNumbering::getCount( ) throw(RuntimeException)
diff --git a/i18npool/source/nativenumber/nativenumbersupplier.cxx b/i18npool/source/nativenumber/nativenumbersupplier.cxx
index 543cdc1d4fee..6922290bd10c 100644
--- a/i18npool/source/nativenumber/nativenumbersupplier.cxx
+++ b/i18npool/source/nativenumber/nativenumbersupplier.cxx
@@ -737,9 +737,8 @@ NativeNumberXmlAttributes SAL_CALL NativeNumberSupplier::convertToXmlAttributes(
break;
}
}
- NativeNumberXmlAttributes att(rLocale, OUString(&NumberChar[number][1], 1),
+ return NativeNumberXmlAttributes(rLocale, OUString(&NumberChar[number][1], 1),
OUString::createFromAscii(attType[type]));
- return att;
}
static sal_Bool natNumIn(sal_Int16 num, sal_Int16 natnum[], sal_Int16 len)
diff --git a/i18npool/source/registerservices/registerservices.cxx b/i18npool/source/registerservices/registerservices.cxx
index 870c49939648..3cb29cd6838f 100644
--- a/i18npool/source/registerservices/registerservices.cxx
+++ b/i18npool/source/registerservices/registerservices.cxx
@@ -207,6 +207,7 @@ IMPL_CREATEINSTANCE( NumToCharLower_zh_CN )
IMPL_CREATEINSTANCE( NumToCharUpper_zh_CN )
IMPL_CREATEINSTANCE( NumToCharLower_zh_TW )
IMPL_CREATEINSTANCE( NumToCharUpper_zh_TW )
+IMPL_CREATEINSTANCE( NumToCharHalfwidth )
IMPL_CREATEINSTANCE( NumToCharFullwidth )
IMPL_CREATEINSTANCE( NumToCharKanjiShort_ja_JP )
IMPL_CREATEINSTANCE( NumToCharKanjiTraditional_ja_JP )
@@ -469,6 +470,7 @@ static const struct InstancesArray {
IMPL_TRANSLITERATION_ITEM (NumToCharLower_zh_CN),
IMPL_TRANSLITERATION_ITEM (NumToCharUpper_zh_TW),
IMPL_TRANSLITERATION_ITEM (NumToCharLower_zh_TW),
+ IMPL_TRANSLITERATION_ITEM (NumToCharHalfwidth),
IMPL_TRANSLITERATION_ITEM (NumToCharFullwidth),
IMPL_TRANSLITERATION_ITEM (NumToCharKanjiShort_ja_JP),
IMPL_TRANSLITERATION_ITEM (NumToCharKanjiTraditional_ja_JP),
diff --git a/o3tl/qa/makefile.mk b/o3tl/qa/makefile.mk
index 53806c153d13..b592790516da 100644
--- a/o3tl/qa/makefile.mk
+++ b/o3tl/qa/makefile.mk
@@ -39,7 +39,7 @@ ENABLE_EXCEPTIONS=TRUE
# --- Settings -----------------------------------------------------
.INCLUDE : settings.mk
-
+.IF "$(L10N_framework)"==""
# --- Common ----------------------------------------------------------
# BEGIN ----------------------------------------------------------------
@@ -66,12 +66,13 @@ SHL1VERSIONMAP = export.map
SLOFILES=$(SHL1OBJS)
# --- Targets ------------------------------------------------------
+.ENDIF # L10N_framework
.INCLUDE : target.mk
.INCLUDE : _cppunit.mk
# --- Enable test execution in normal build ------------------------
-
+.IF "$(L10N_framework)"==""
unittest : $(SHL1TARGETN)
@echo ----------------------------------------------------------
@echo - start unit test on library $(SHL1TARGETN)
@@ -79,3 +80,5 @@ unittest : $(SHL1TARGETN)
$(TESTSHL2) -sf $(mktmp ) $(SHL1TARGETN)
ALLTAR : unittest
+.ENDIF # L10N_framework
+
diff --git a/padmin/source/adddlg.cxx b/padmin/source/adddlg.cxx
index c10be2d83fcd..052de2cbb731 100644
--- a/padmin/source/adddlg.cxx
+++ b/padmin/source/adddlg.cxx
@@ -147,27 +147,31 @@ void APChooseDriverPage::fill( PrinterInfo& rInfo )
}
}
-void APChooseDriverPage::updateDrivers()
+void APChooseDriverPage::updateDrivers( bool bRefresh, const rtl::OUString& rSelectDriver )
{
for( int k = 0; k < m_aDriverBox.GetEntryCount(); k++ )
delete (String*)m_aDriverBox.GetEntryData( k );
m_aDriverBox.Clear();
std::list< rtl::OUString > aDrivers;
- psp::PPDParser::getKnownPPDDrivers( aDrivers );
+ psp::PPDParser::getKnownPPDDrivers( aDrivers, bRefresh );
+ rtl::OUString aSelectDriver( psp::PPDParser::getPPDPrinterName( rSelectDriver ) );
+
+ rtl::OUString aSelectedEntry;
for( std::list< rtl::OUString >::const_iterator it = aDrivers.begin(); it != aDrivers.end(); ++it )
{
- String aDriver( ::psp::PPDParser::getPPDPrinterName( *it ) );
- if( aDriver.Len() )
+ rtl::OUString aDriver( psp::PPDParser::getPPDPrinterName( *it ) );
+ if( aDriver.getLength() )
{
int nPos = m_aDriverBox.InsertEntry( aDriver );
m_aDriverBox.SetEntryData( nPos, new String( *it ) );
- if( it->equalsAscii( "SGENPRT" ) )
- m_aDriverBox.SelectEntryPos( nPos );
+ if( aDriver == aSelectDriver )
+ aSelectedEntry = aDriver;
}
}
+ m_aDriverBox.SelectEntry( aSelectedEntry );
m_aRemBtn.Enable( m_aDriverBox.GetEntryCount() > 0 );
}
@@ -185,7 +189,13 @@ IMPL_LINK( APChooseDriverPage, ClickBtnHdl, PushButton*, pButton )
{
PPDImportDialog aDlg( this );
if( aDlg.Execute() )
- updateDrivers();
+ {
+ const std::list< rtl::OUString >& rImported( aDlg.getImportedFiles() );
+ if( rImported.empty() )
+ updateDrivers( true );
+ else
+ updateDrivers( true, rImported.front() );
+ }
}
else if( pButton == &m_aRemBtn )
{
@@ -259,11 +269,10 @@ IMPL_LINK( APChooseDriverPage, ClickBtnHdl, PushButton*, pButton )
rPIManager.removePrinter( *it );
}
- ::std::list< rtl::OUString > aDirs;
+ std::list< rtl::OUString > aDirs;
// get only psprint's directories, not eventual system dirs
psp::getPrinterPathList( aDirs, NULL );
- ::std::list< rtl::OUString >::iterator dir;
-
+ std::list< rtl::OUString >::iterator dir;
for( dir = aDirs.begin(); dir != aDirs.end(); ++dir )
{
::std::list< String > aFiles;
@@ -271,10 +280,11 @@ IMPL_LINK( APChooseDriverPage, ClickBtnHdl, PushButton*, pButton )
OUStringBuffer aDir( *dir );
aDir.append( sal_Unicode( '/' ) );
aDir.appendAscii( PRINTER_PPDDIR );
- FindFiles( aDir.makeStringAndClear(), aFiles, String( RTL_CONSTASCII_USTRINGPARAM( "PS;PPD;PS.GZ;PPD.GZ" ) ), true );
+ rtl::OUString aPPDDir( aDir.makeStringAndClear() );
+ FindFiles( aPPDDir, aFiles, String( RTL_CONSTASCII_USTRINGPARAM( "PS;PPD;PS.GZ;PPD.GZ" ) ), true );
for( file = aFiles.begin(); file != aFiles.end(); ++file )
{
- String aFile( *dir );
+ String aFile( aPPDDir );
if( aFile.GetChar( aFile.Len() ) != '/' )
aFile.AppendAscii( "/" );
aFile.Append( *file );
diff --git a/padmin/source/adddlg.hxx b/padmin/source/adddlg.hxx
index e6fe17f30188..bb17044e800a 100644
--- a/padmin/source/adddlg.hxx
+++ b/padmin/source/adddlg.hxx
@@ -96,7 +96,7 @@ class APChooseDriverPage : public APTabPage
DECL_LINK( ClickBtnHdl, PushButton* );
DECL_LINK( DelPressedHdl, ListBox* );
- void updateDrivers();
+ void updateDrivers( bool bRefresh = false, const rtl::OUString& rSelectDriver = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "SGENPRT" ) ) );
public:
APChooseDriverPage( AddPrinterDialog* pParent );
~APChooseDriverPage();
diff --git a/padmin/source/makefile.mk b/padmin/source/makefile.mk
index 336631f1ceaa..91e4ca2a25f4 100644
--- a/padmin/source/makefile.mk
+++ b/padmin/source/makefile.mk
@@ -105,8 +105,7 @@ APP1STDLIBS= \
$(COMPHELPERLIB) \
$(CPPUHELPERLIB) \
$(CPPULIB) \
- $(SALLIB) \
- -lXext -lX11
+ $(SALLIB)
UNIXTEXT = $(MISC)$/spadmin.sh
diff --git a/padmin/source/newppdlg.cxx b/padmin/source/newppdlg.cxx
index 8d5414a2ceef..0fd6aa32c984 100644
--- a/padmin/source/newppdlg.cxx
+++ b/padmin/source/newppdlg.cxx
@@ -172,6 +172,7 @@ IMPL_LINK( PPDImportDialog, ClickBtnHdl, PushButton*, pButton )
::std::list< rtl::OUString > aToDirs;
psp::getPrinterPathList( aToDirs, PRINTER_PPDDIR );
::std::list< rtl::OUString >::iterator writeDir = aToDirs.begin();
+ m_aImportedFiles.clear();
for( int i = 0; i < m_aDriverLB.GetSelectEntryCount(); i++ )
{
@@ -186,7 +187,10 @@ IMPL_LINK( PPDImportDialog, ClickBtnHdl, PushButton*, pButton )
aToFile.Append( aFile.GetName() );
OUString aToUni( aToFile.GetMainURL(INetURLObject::DECODE_TO_IURI) );
if( ! File::copy( aFromUni, aToUni ) )
+ {
+ m_aImportedFiles.push_back( aToUni );
break;
+ }
++writeDir;
} while( writeDir != aToDirs.end() );
}
diff --git a/padmin/source/newppdlg.hxx b/padmin/source/newppdlg.hxx
index 4d6d637efcc9..bd73b5ffed3e 100644
--- a/padmin/source/newppdlg.hxx
+++ b/padmin/source/newppdlg.hxx
@@ -64,9 +64,14 @@ namespace padmin {
DECL_LINK( ModifyHdl, ComboBox* );
void Import();
+
+ std::list< rtl::OUString > m_aImportedFiles;
public:
PPDImportDialog( Window* pParent );
~PPDImportDialog();
+
+ const std::list< rtl::OUString >& getImportedFiles() const
+ { return m_aImportedFiles; }
};
} // namespace
diff --git a/rsc/source/parser/rscibas.cxx b/rsc/source/parser/rscibas.cxx
index c95f1adc7b52..75f558398bb5 100644
--- a/rsc/source/parser/rscibas.cxx
+++ b/rsc/source/parser/rscibas.cxx
@@ -67,7 +67,7 @@ void RscTypCont::SETCONST( RscConst * pClass, const char * szString, UINT32 nVal
void RscTypCont::SETCONST( RscConst * pClass, Atom nName, UINT32 nVal )
{
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "setconst hash: %d\n", nName );
+ fprintf( stderr, "setconst hash: %u\n", (unsigned int)nName );
#endif
pClass->SetConstant( aNmTb.Put( nName,
CONSTNAME, nVal ), nVal );
@@ -106,9 +106,9 @@ void RscLangEnum::Init( RscNameTable& rNames )
{
#if OSL_DEBUG_LEVEL > 2
fprintf( stderr, "ISO Language in : %d %d %s\n",
- nIndex,
- pLangEntry->meLang,
- MsLangId::convertLanguageToIsoByteString( pLangEntry->meLang ).GetBuffer() );
+ (int)nIndex,
+ pLangEntry->mnLang,
+ MsLangId::convertLanguageToIsoByteString( pLangEntry->mnLang ).getStr() );
#endif
aLang = pLangEntry->maLangStr;
aCountry = pLangEntry->maCountry;
@@ -118,7 +118,7 @@ void RscLangEnum::Init( RscNameTable& rNames )
if ( ! GetLangId( aLang ))
ULong_Iso_map[ aLang ] = mnLangId;
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "ISO Language out: %s 0x%hx\n", aLang.GetBuffer(), mnLangId );
+ fprintf( stderr, "ISO Language out: %s 0x%lx\n", aLang.GetBuffer(), mnLangId );
#endif
mnLangId++;
}
@@ -128,7 +128,7 @@ void RscLangEnum::Init( RscNameTable& rNames )
if ( ! GetLangId( aLang ))
ULong_Iso_map[ aLang ] = mnLangId;
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "ISO Language out: %s 0x%hx", aLang.GetBuffer(), mnLangId );
+ fprintf( stderr, "ISO Language out: %s 0x%lx", aLang.GetBuffer(), mnLangId );
#endif
mnLangId++;
aLang += csep;
@@ -137,7 +137,7 @@ void RscLangEnum::Init( RscNameTable& rNames )
if ( ! GetLangId( aLang ))
ULong_Iso_map[ aLang ] = mnLangId;
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, " %s 0x%hx\n", aLang.GetBuffer(), mnLangId );
+ fprintf( stderr, " %s 0x%lx\n", aLang.GetBuffer(), mnLangId );
#endif
mnLangId++;
// hack - survive "x-no-translate"
@@ -167,7 +167,7 @@ void RscLangEnum::Init( RscNameTable& rNames )
if ( ! GetLangId( aIsoToken ))
ULong_Iso_map[ aIsoToken ] = mnLangId;
#if OSL_DEBUG_LEVEL > 2
- fprintf( stderr, "Env ISO Language out: %s 0x%hx\n", aIsoToken.GetBuffer(), mnLangId );
+ fprintf( stderr, "Env ISO Language out: %s 0x%lx\n", aIsoToken.GetBuffer(), mnLangId );
#endif
mnLangId++;
}
diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx
index e69094064754..9ae58087a335 100644
--- a/rsc/source/parser/rscicpx.cxx
+++ b/rsc/source/parser/rscicpx.cxx
@@ -1449,6 +1449,9 @@ RscTop * RscTypCont::InitClassNumericFormatter( RscTop * pSuper )
nId = aNmTb.Put( "Value", VARNAME );
pClassNumeric->SetVariable( nId, &aIdLong, NULL,
0, NUMERICFORMATTER_VALUE );
+ nId = aNmTb.Put( "NoThousandSep", VARNAME );
+ pClassNumeric->SetVariable( nId, &aBool, NULL,
+ 0, NUMERICFORMATTER_NOTHOUSANDSEP );
return pClassNumeric;
}
@@ -1633,7 +1636,6 @@ RscTop * RscTypCont::InitClassNumericField( RscTop * pSuper )
nId = aNmTb.Put( "SpinSize", VARNAME );
pClassNumericField->SetVariable( nId, &aIdLong, NULL,
0, NUMERICFIELD_SPINSIZE );
-
return pClassNumericField;
}
diff --git a/sax/source/expatwrap/sax_expat.cxx b/sax/source/expatwrap/sax_expat.cxx
index d9553113c759..e1f5161b7e3a 100644
--- a/sax/source/expatwrap/sax_expat.cxx
+++ b/sax/source/expatwrap/sax_expat.cxx
@@ -39,6 +39,7 @@
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
#include <com/sun/star/xml/sax/XParser.hpp>
#include <com/sun/star/xml/sax/SAXParseException.hpp>
+#include <com/sun/star/io/XSeekable.hpp>
#include <cppuhelper/factory.hxx>
#include <cppuhelper/weak.hxx>
@@ -135,6 +136,11 @@ OUString XmlChar2OUString( const XML_Char *p )
pThis->rDocumentLocator->getColumnNumber()\
) );\
}\
+ catch( com::sun::star::uno::RuntimeException &e ) {\
+ pThis->bExceptionWasThrown = sal_True; \
+ pThis->bRTExceptionWasThrown = sal_True; \
+ pImpl->rtexception = e; \
+ }\
}\
((void)0)
@@ -255,7 +261,9 @@ public: // module scope
// Exception cannot be thrown through the C-XmlParser (possible resource leaks),
// therefor the exception must be saved somewhere.
SAXParseException exception;
- sal_Bool bExceptionWasThrown;
+ RuntimeException rtexception;
+ sal_Bool bExceptionWasThrown;
+ sal_Bool bRTExceptionWasThrown;
Locale locale;
@@ -374,7 +382,8 @@ extern "C"
// LocatorImpl
//---------------------------------------------
class LocatorImpl :
- public WeakImplHelper1< XLocator >
+ public WeakImplHelper2< XLocator, com::sun::star::io::XSeekable >
+ // should use a different interface for stream positions!
{
public:
LocatorImpl( SaxExpatParser_Impl *p )
@@ -400,6 +409,20 @@ public: //XLocator
return m_pParser->getEntity().structSource.sSystemId;
}
+ // XSeekable (only for getPosition)
+
+ virtual void SAL_CALL seek( sal_Int64 ) throw()
+ {
+ }
+ virtual sal_Int64 SAL_CALL getPosition() throw()
+ {
+ return XML_GetCurrentByteIndex( m_pParser->getEntity().pParser );
+ }
+ virtual ::sal_Int64 SAL_CALL getLength() throw()
+ {
+ return 0;
+ }
+
private:
SaxExpatParser_Impl *m_pParser;
@@ -421,6 +444,7 @@ SaxExpatParser::SaxExpatParser( )
m_pImpl->rAttrList = Reference< XAttributeList > ( m_pImpl->pAttrList );
m_pImpl->bExceptionWasThrown = sal_False;
+ m_pImpl->bRTExceptionWasThrown = sal_False;
}
SaxExpatParser::~SaxExpatParser()
@@ -721,6 +745,9 @@ void SaxExpatParser_Impl::parse( )
if( ! bContinue || this->bExceptionWasThrown ) {
+ if ( this->bRTExceptionWasThrown )
+ throw rtexception;
+
// Error during parsing !
XML_Error xmlE = XML_GetErrorCode( getEntity().pParser );
OUString sSystemId = rDocumentLocator->getSystemId();
diff --git a/sax/source/expatwrap/saxwriter.cxx b/sax/source/expatwrap/saxwriter.cxx
index 9be52cdd24c3..717767d86e11 100644
--- a/sax/source/expatwrap/saxwriter.cxx
+++ b/sax/source/expatwrap/saxwriter.cxx
@@ -208,6 +208,8 @@ public:
// If there are invalid characters in the string it returns sal_False.
// Than the calling method has to throw the needed Exception.
inline sal_Bool comment(const rtl::OUString& rComment) throw( SAXException );
+
+ inline void clearBuffer() throw( SAXException );
};
const sal_Bool g_bValidCharsBelow32[32] =
@@ -434,7 +436,7 @@ inline sal_Bool SaxWriterHelper::convertToXML( const sal_Unicode * pStr,
OSL_ENSURE( nSurrogate != 0, "lone 2nd Unicode surrogate" );
nSurrogate = ( nSurrogate << 10 ) | ( c & 0x03ff );
- if( nSurrogate > 0x00010000 && nSurrogate <= 0x001FFFFF )
+ if( nSurrogate >= 0x00010000 && nSurrogate <= 0x0010FFFF )
{
sal_Int8 aBytes[] = { sal_Int8(0xF0 | ((nSurrogate >> 18) & 0x0F)),
sal_Int8(0x80 | ((nSurrogate >> 12) & 0x3F)),
@@ -693,6 +695,17 @@ inline void SaxWriterHelper::endDocument() throw( SAXException )
}
}
+inline void SaxWriterHelper::clearBuffer() throw( SAXException )
+{
+ FinishStartElement();
+ if (nCurrentPos > 0)
+ {
+ m_Sequence.realloc(nCurrentPos);
+ nCurrentPos = writeSequence();
+ m_Sequence.realloc(SEQUENCESIZE);
+ }
+}
+
inline sal_Bool SaxWriterHelper::processingInstruction(const rtl::OUString& rTarget, const rtl::OUString& rData) throw( SAXException )
{
FinishStartElement();
@@ -851,7 +864,7 @@ inline sal_Int32 calcXMLByteLength( const sal_Unicode *pStr, sal_Int32 nStrLen,
{
// 2. surrogate: write as UTF-8 (if range is OK
nSurrogate = ( nSurrogate << 10 ) | ( c & 0x03ff );
- if( nSurrogate > 0x00010000 && nSurrogate <= 0x001FFFFF )
+ if( nSurrogate >= 0x00010000 && nSurrogate <= 0x0010FFFF )
nOutputLength += 4;
nSurrogate = 0;
}
@@ -927,12 +940,20 @@ public: // XActiveDataSource
virtual void SAL_CALL setOutputStream(const Reference< XOutputStream > & aStream)
throw (RuntimeException)
{
+ // temporary: set same stream again to clear buffer
+ if ( m_out == aStream && mp_SaxWriterHelper && m_bDocStarted )
+ mp_SaxWriterHelper->clearBuffer();
+ else
+ {
+
m_out = aStream;
delete mp_SaxWriterHelper;
mp_SaxWriterHelper = new SaxWriterHelper(m_out);
m_bDocStarted = sal_False;
m_nLevel = 0;
m_bIsCDATA = sal_False;
+
+ }
}
virtual Reference< XOutputStream > SAL_CALL getOutputStream(void)
throw(RuntimeException)
diff --git a/svtools/inc/dialogcontrolling.hxx b/svtools/inc/dialogcontrolling.hxx
index 9efb098ee013..edb425f78b00 100644
--- a/svtools/inc/dialogcontrolling.hxx
+++ b/svtools/inc/dialogcontrolling.hxx
@@ -52,7 +52,15 @@ namespace svt
class SVT_DLLPUBLIC SAL_NO_VTABLE IWindowOperator
{
public:
- virtual void operateOn( Window& _rOperateOn ) const = 0;
+ /** called when an event happened which should be reacted to
+
+ @param _rTrigger
+ the event which triggered the call. If the Id of the event is 0, then this is the initial
+ call which is made when ->_rOperateOn is added to the responsibility of the DialogController.
+ @param _rOperateOn
+ the window on which to operate
+ */
+ virtual void operateOn( const VclWindowEvent& _rTrigger, Window& _rOperateOn ) const = 0;
virtual ~IWindowOperator();
};
@@ -61,13 +69,13 @@ namespace svt
//=====================================================================
//= IWindowEventFilter
//=====================================================================
- /** an abstract interface for deciding whether a ->VclSimpleEvent
+ /** an abstract interface for deciding whether a ->VclWindowEvent
is worth paying attention to
*/
class SVT_DLLPUBLIC SAL_NO_VTABLE IWindowEventFilter
{
public:
- virtual bool payAttentionTo( const VclSimpleEvent& _rEvent ) const = 0;
+ virtual bool payAttentionTo( const VclWindowEvent& _rEvent ) const = 0;
virtual ~IWindowEventFilter();
};
@@ -96,7 +104,7 @@ namespace svt
::std::auto_ptr< DialogController_Data > m_pImpl;
public:
- DialogController( Window& _rInstigator, const PWindowEventFilter _pEventFilter, const PWindowOperator _pOperator );
+ DialogController( Window& _rInstigator, const PWindowEventFilter& _pEventFilter, const PWindowOperator& _pOperator );
virtual ~DialogController();
/** adds a window to the list of dependent windows
@@ -117,10 +125,10 @@ namespace svt
private:
void impl_Init();
- void impl_updateAll();
- void impl_update( Window& _rWindow );
+ void impl_updateAll( const VclWindowEvent& _rTriggerEvent );
+ void impl_update( const VclWindowEvent& _rTriggerEvent, Window& _rWindow );
- DECL_LINK( OnWindowEvent, const VclSimpleEvent* );
+ DECL_LINK( OnWindowEvent, const VclWindowEvent* );
private:
DialogController( const DialogController& ); // never implemented
@@ -184,10 +192,9 @@ namespace svt
/** adds a non-standard controller whose functionality is not covered by the other methods
@param _pController
- the controller to add to the manager. Must not be <NULL/>. The manager takes ownership
- of the controller.
+ the controller to add to the manager. Must not be <NULL/>.
*/
- void addController( DialogController* _pController );
+ void addController( const PDialogController& _pController );
private:
ControlDependencyManager( const ControlDependencyManager& ); // never implemented
@@ -224,7 +231,7 @@ namespace svt
{
}
- virtual void operateOn( Window& _rOperateOn ) const
+ virtual void operateOn( const VclWindowEvent& /*_rTrigger*/, Window& _rOperateOn ) const
{
_rOperateOn.Enable( m_rCheckable.IsChecked() );
}
@@ -248,12 +255,11 @@ namespace svt
{
}
- bool payAttentionTo( const VclSimpleEvent& _rEvent ) const
+ bool payAttentionTo( const VclWindowEvent& _rEvent ) const
{
- const VclWindowEvent& rWindowEvent = dynamic_cast< const VclWindowEvent& >( _rEvent );
- if ( ( rWindowEvent.GetWindow() == &m_rWindow )
- && ( ( rWindowEvent.GetId() == VCLEVENT_RADIOBUTTON_TOGGLE )
- || ( rWindowEvent.GetId() == VCLEVENT_CHECKBOX_TOGGLE )
+ if ( ( _rEvent.GetWindow() == &m_rWindow )
+ && ( ( _rEvent.GetId() == VCLEVENT_RADIOBUTTON_TOGGLE )
+ || ( _rEvent.GetId() == VCLEVENT_CHECKBOX_TOGGLE )
)
)
return true;
diff --git a/svtools/inc/docmspasswdrequest.hxx b/svtools/inc/docmspasswdrequest.hxx
deleted file mode 100644
index 684bffe71760..000000000000
--- a/svtools/inc/docmspasswdrequest.hxx
+++ /dev/null
@@ -1,72 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright IBM Corporation 2009.
- * Copyright 2009 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: docmspasswdrequest.hxx,v $
- * $Revision: 1.0 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX
-#define INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX
-
-#include "svtools/svldllapi.h"
-#include <com/sun/star/task/DocumentMSPasswordRequest.hpp>
-#include <com/sun/star/task/XInteractionRequest.hpp>
-#include <rtl/ustring.hxx>
-#include <cppuhelper/implbase1.hxx>
-
-class MSAbortContinuation;
-class MSPasswordContinuation;
-
-class SVL_DLLPUBLIC RequestMSDocumentPassword : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
-{
- ::com::sun::star::uno::Any m_aRequest;
-
- ::com::sun::star::uno::Sequence<
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >
- > m_lContinuations;
-
- MSAbortContinuation* m_pAbort;
- MSPasswordContinuation* m_pPassword;
-
-public:
- RequestMSDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName );
-
- sal_Bool isAbort();
- sal_Bool isPassword();
-
- ::rtl::OUString getPassword();
-
- virtual ::com::sun::star::uno::Any SAL_CALL getRequest()
- throw( ::com::sun::star::uno::RuntimeException );
-
- virtual ::com::sun::star::uno::Sequence<
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >
- > SAL_CALL getContinuations()
- throw( ::com::sun::star::uno::RuntimeException );
-};
-
-#endif /* INCLUDED_SVTOOLS_DOCMSPASSWDREQUEST_HXX */
diff --git a/svtools/inc/docpasswdrequest.hxx b/svtools/inc/docpasswdrequest.hxx
deleted file mode 100644
index 69095fbe5a5c..000000000000
--- a/svtools/inc/docpasswdrequest.hxx
+++ /dev/null
@@ -1,71 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: docpasswdrequest.hxx,v $
- * $Revision: 1.4 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef INCLUDED_SVTOOLS_DOCPASSWDREQUEST_HXX
-#define INCLUDED_SVTOOLS_DOCPASSWDREQUEST_HXX
-
-#include "svtools/svldllapi.h"
-#include <com/sun/star/task/DocumentPasswordRequest.hpp>
-#include <com/sun/star/task/XInteractionRequest.hpp>
-#include <rtl/ustring.hxx>
-#include <cppuhelper/implbase1.hxx>
-
-class AbortContinuation;
-class PasswordContinuation;
-
-class SVL_DLLPUBLIC RequestDocumentPassword : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionRequest >
-{
- ::com::sun::star::uno::Any m_aRequest;
-
- ::com::sun::star::uno::Sequence<
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >
- > m_lContinuations;
-
- AbortContinuation* m_pAbort;
- PasswordContinuation* m_pPassword;
-
-public:
- RequestDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName );
-
- sal_Bool isAbort();
- sal_Bool isPassword();
-
- ::rtl::OUString getPassword();
-
- virtual ::com::sun::star::uno::Any SAL_CALL getRequest()
- throw( ::com::sun::star::uno::RuntimeException );
-
- virtual ::com::sun::star::uno::Sequence<
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >
- > SAL_CALL getContinuations()
- throw( ::com::sun::star::uno::RuntimeException );
-};
-
-#endif /* INCLUDED_SVTOOLS_DOCPASSWDREQUEST_HXX */
diff --git a/svtools/inc/eventcfg.hxx b/svtools/inc/eventcfg.hxx
index 4478d3f48028..4ee175f5b7e0 100644
--- a/svtools/inc/eventcfg.hxx
+++ b/svtools/inc/eventcfg.hxx
@@ -40,6 +40,35 @@
#include <hash_map>
#include <vector>
+#define STR_EVENT_STARTAPP 0
+#define STR_EVENT_CLOSEAPP 1
+#define STR_EVENT_DOCCREATED 2
+#define STR_EVENT_CREATEDOC 3
+#define STR_EVENT_LOADFINISHED 4
+#define STR_EVENT_OPENDOC 5
+#define STR_EVENT_PREPARECLOSEDOC 6
+#define STR_EVENT_CLOSEDOC 7
+#define STR_EVENT_SAVEDOC 8
+#define STR_EVENT_SAVEDOCDONE 9
+#define STR_EVENT_SAVEDOCFAILED 10
+#define STR_EVENT_SAVEASDOC 11
+#define STR_EVENT_SAVEASDOCDONE 12
+#define STR_EVENT_SAVEASDOCFAILED 13
+#define STR_EVENT_SAVETODOC 14
+#define STR_EVENT_SAVETODOCDONE 15
+#define STR_EVENT_SAVETODOCFAILED 16
+#define STR_EVENT_ACTIVATEDOC 17
+#define STR_EVENT_DEACTIVATEDOC 18
+#define STR_EVENT_PRINTDOC 19
+#define STR_EVENT_VIEWCREATED 20
+#define STR_EVENT_PREPARECLOSEVIEW 21
+#define STR_EVENT_CLOSEVIEW 22
+#define STR_EVENT_MODIFYCHANGED 23
+#define STR_EVENT_TITLECHANGED 24
+#define STR_EVENT_VISAREACHANGED 25
+#define STR_EVENT_MODECHANGED 26
+#define STR_EVENT_STORAGECHANGED 27
+
typedef ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash, ::std::equal_to< ::rtl::OUString > > EventBindingHash;
typedef ::std::vector< ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XFrame > > FrameVector;
typedef ::std::vector< ::rtl::OUString > SupportedEventsVector;
@@ -67,7 +96,7 @@ public:
::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException);
::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException);
-
+ ::rtl::OUString GetEventName( sal_Int32 nID );
};
class SVL_DLLPUBLIC GlobalEventConfig:
@@ -86,7 +115,7 @@ class SVL_DLLPUBLIC GlobalEventConfig:
::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException);
::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException);
-
+ static ::rtl::OUString GetEventName( sal_Int32 nID );
private:
static GlobalEventConfig_Impl* m_pImpl;
diff --git a/svtools/inc/sfxecode.hxx b/svtools/inc/sfxecode.hxx
index 01292f1c87fa..d87fff819748 100644
--- a/svtools/inc/sfxecode.hxx
+++ b/svtools/inc/sfxecode.hxx
@@ -85,6 +85,7 @@
#define ERRCODE_SFX_DOCUMENT_MACRO_DISABLED (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 52)
#define ERRCODE_SFX_BROKENSIGNATURE (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 53)
#define ERRCODE_SFX_SHARED_NOPASSWORDCHANGE (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 54)
+#define ERRCODE_SFX_INCOMPLETE_ENCRYPTION (ERRCODE_WARNING_MASK | ERRCODE_AREA_SFX | ERRCODE_CLASS_NONE | 55)
diff --git a/svtools/inc/svtools/embedhlp.hxx b/svtools/inc/svtools/embedhlp.hxx
index 08fe3c7d162a..f4cccd3115b8 100644
--- a/svtools/inc/svtools/embedhlp.hxx
+++ b/svtools/inc/svtools/embedhlp.hxx
@@ -131,6 +131,7 @@ namespace svt
BOOL is() const { return mxObj.is(); }
BOOL IsChart() const;
+ void SetDefaultSizeForChart( const Size& rSizeIn_100TH_MM );//#i103460# charts do not necessaryly have an own size within ODF files, in this case they need to use the size settings from the surrounding frame, which is made available with this method
};
}
diff --git a/svtools/inc/svtools/loginerr.hxx b/svtools/inc/svtools/loginerr.hxx
deleted file mode 100644
index f04e569b41e0..000000000000
--- a/svtools/inc/svtools/loginerr.hxx
+++ /dev/null
@@ -1,156 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: loginerr.hxx,v $
- * $Revision: 1.3 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _LOGINERR_HXX
-#define _LOGINERR_HXX
-
-#include <tools/string.hxx>
-#include <tools/errcode.hxx>
-#include <svtools/hint.hxx>
-
-//=========================================================================
-
-#define LOGINERROR_FLAG_SET_SAVE_PASSWORD 1
-#define LOGINERROR_FLAG_MODIFY_ACCOUNT 2
-#define LOGINERROR_FLAG_MODIFY_USER_NAME 4
-#define LOGINERROR_FLAG_PERSISTENT_PASSWORD 8
-
-class LoginErrorInfo
-{
-private:
- String _aTitle;
- String _aServer;
- String _aAccount;
- String _aUserName;
- String _aPassword;
- String _aPath;
- String _aErrorText;
- BYTE _nFlags;
- USHORT _nRet;
-
-public:
- LoginErrorInfo()
- : _nFlags( LOGINERROR_FLAG_MODIFY_USER_NAME ),
- _nRet( ERRCODE_BUTTON_CANCEL )
- {
- }
-
- const String& GetTitle() const { return _aTitle; }
- const String& GetServer() const { return _aServer; }
- const String& GetAccount() const { return _aAccount; }
- const String& GetUserName() const { return _aUserName; }
- const String& GetPassword() const { return _aPassword; }
- const String& GetPath() const { return _aPath; }
- const String& GetErrorText() const { return _aErrorText; }
- BOOL GetIsPersistentPassword() const
- { return ( _nFlags & LOGINERROR_FLAG_PERSISTENT_PASSWORD ); }
- BOOL GetIsSavePassword() const
- { return ( _nFlags & LOGINERROR_FLAG_SET_SAVE_PASSWORD ); }
- BYTE GetFlags() const { return _nFlags; }
- USHORT GetResult() const { return _nRet; }
-
- void SetTitle( const String& aTitle )
- { _aTitle = aTitle; }
- void SetServer( const String& aServer )
- { _aServer = aServer; }
- void SetAccount( const String& aAccount )
- { _aAccount = aAccount; }
- void SetUserName( const String& aUserName )
- { _aUserName = aUserName; }
- void SetPassword( const String& aPassword )
- { _aPassword = aPassword; }
- void SetPath( const String& aPath )
- { _aPath = aPath; }
- void SetErrorText( const String& aErrorText )
- { _aErrorText = aErrorText; }
- void SetFlags( BYTE nFlags )
- { _nFlags = nFlags; }
- inline void SetSavePassword( BOOL bSet );
- inline void SetPersistentPassword( BOOL bSet );
- inline void SetModifyAccount( BOOL bSet );
- inline void SetModifyUserName( BOOL bSet );
- void SetResult( USHORT nRet )
- { _nRet = nRet; }
-};
-
-inline void LoginErrorInfo::SetSavePassword( BOOL bSet )
-{
- if ( bSet )
- _nFlags |= LOGINERROR_FLAG_SET_SAVE_PASSWORD;
- else
- _nFlags &= ~LOGINERROR_FLAG_SET_SAVE_PASSWORD;
-}
-
-inline void LoginErrorInfo::SetPersistentPassword( BOOL bSet )
-{
- if ( bSet )
- _nFlags |= LOGINERROR_FLAG_PERSISTENT_PASSWORD;
- else
- _nFlags &= ~LOGINERROR_FLAG_PERSISTENT_PASSWORD;
-}
-
-inline void LoginErrorInfo::SetModifyAccount( BOOL bSet )
-{
- if ( bSet )
- _nFlags |= LOGINERROR_FLAG_MODIFY_ACCOUNT;
- else
- _nFlags &= ~LOGINERROR_FLAG_MODIFY_ACCOUNT;
-}
-
-inline void LoginErrorInfo::SetModifyUserName( BOOL bSet )
-{
- if ( bSet )
- _nFlags |= LOGINERROR_FLAG_MODIFY_USER_NAME;
- else
- _nFlags &= ~LOGINERROR_FLAG_MODIFY_USER_NAME;
-}
-
-//=========================================================================
-
-class CntLoginErrorHint : public SfxHint
-{
-private:
- LoginErrorInfo* _pInfo;
-
- CntLoginErrorHint( const CntLoginErrorHint& ); // n.i.
- CntLoginErrorHint& operator=( const CntLoginErrorHint& ); // n.i.
-
-public:
- TYPEINFO();
-
- CntLoginErrorHint( LoginErrorInfo* pInfo )
- : _pInfo( pInfo )
- {
- }
-
- LoginErrorInfo& GetErrorInfo() const { return *_pInfo; }
-};
-
-#endif
diff --git a/svtools/inc/svtools/saveopt.hxx b/svtools/inc/svtools/saveopt.hxx
index 6dfd083a3ca2..2966e2f24aba 100644
--- a/svtools/inc/svtools/saveopt.hxx
+++ b/svtools/inc/svtools/saveopt.hxx
@@ -60,12 +60,16 @@ public:
E_ODFDEFAULTVERSION
};
+ // keep enum values sorted that a less or greater compare maps to older and newer versions!
enum ODFDefaultVersion
{
ODFVER_UNKNOWN = 0, // unknown
- ODFVER_010, // ODF 1.0
- ODFVER_011, // ODF 1.1
- ODFVER_012 // ODF 1.2
+ ODFVER_010 = 1, // ODF 1.0
+ ODFVER_011 = 2, // ODF 1.1
+ DO_NOT_USE = 3, // Do not use this, only here for compatibility with pre OOo 3.2 configuration
+ ODFVER_012 = 4, // ODF 1.2
+
+ ODFVER_LATEST = SAL_MAX_ENUM, // ODF latest version with enhancements
};
SvtSaveOptions();
diff --git a/svtools/prj/d.lst b/svtools/prj/d.lst
index 4ff74419b9d4..3dc9c0b013bb 100644
--- a/svtools/prj/d.lst
+++ b/svtools/prj/d.lst
@@ -311,8 +311,6 @@ mkdir: %_DEST%\inc%_EXT%\svtools
..\inc\textwindowaccessibility.hxx %_DEST%\inc%_EXT%\svtools\textwindowaccessibility.hxx
-..\inc\docpasswdrequest.hxx %_DEST%\inc%_EXT%\svtools\docpasswdrequest.hxx
-..\inc\docmspasswdrequest.hxx %_DEST%\inc%_EXT%\svtools\docmspasswdrequest.hxx
..\inc\fontsubstconfig.hxx %_DEST%\inc%_EXT%\svtools\fontsubstconfig.hxx
..\inc\apearcfg.hxx %_DEST%\inc%_EXT%\svtools\apearcfg.hxx
..\inc\fltrcfg.hxx %_DEST%\inc%_EXT%\svtools\fltrcfg.hxx
diff --git a/svtools/source/brwbox/brwbox1.cxx b/svtools/source/brwbox/brwbox1.cxx
index 767283a8e425..4ebed0d70f3f 100644
--- a/svtools/source/brwbox/brwbox1.cxx
+++ b/svtools/source/brwbox/brwbox1.cxx
@@ -538,7 +538,7 @@ void BrowseBox::SetColumnPos( USHORT nColumnId, USHORT nPos )
aScrollArea = Rectangle(Point(aNextRect.Left(),0),
Point(aToRect.Right(),aDataWinSize.Height()));
- pDataWin->Scroll( nScroll, 0, aScrollArea, SCROLL_FLAGS );
+ pDataWin->Scroll( nScroll, 0, aScrollArea );
aToRect.Top() = 0;
aToRect.Bottom() = aScrollArea.Bottom();
Invalidate( aToRect );
diff --git a/svtools/source/config/eventcfg.cxx b/svtools/source/config/eventcfg.cxx
index ae2041356fd3..6026c3d4a3a0 100644
--- a/svtools/source/config/eventcfg.cxx
+++ b/svtools/source/config/eventcfg.cxx
@@ -62,24 +62,70 @@ using namespace ::com::sun::star;
#define SETNODE_BINDINGS OUString(RTL_CONSTASCII_USTRINGPARAM("Bindings" ))
#define PROPERTYNAME_BINDINGURL OUString(RTL_CONSTASCII_USTRINGPARAM("BindingURL"))
+const char* pEventAsciiNames[] =
+{
+"OnStartApp",
+"OnCloseApp",
+"OnCreate",
+"OnNew",
+"OnLoadFinished",
+"OnLoad",
+"OnPrepareUnload",
+"OnUnload",
+"OnSave",
+"OnSaveDone",
+"OnSaveFailed",
+"OnSaveAs",
+"OnSaveAsDone",
+"OnSaveAsFailed",
+"OnCopyTo",
+"OnCopyToDone",
+"OnCopyToFailed",
+"OnFocus",
+"OnUnfocus",
+"OnPrint",
+"OnViewCreated",
+"OnPrepareViewClosing",
+"OnViewClosed",
+"OnModifyChanged",
+"OnTitleChanged",
+"OnVisAreaChanged",
+"OnModeChanged",
+"OnStorageChanged"
+};
+
GlobalEventConfig_Impl::GlobalEventConfig_Impl()
: ConfigItem( ROOTNODE_EVENTS, CONFIG_MODE_IMMEDIATE_UPDATE )
{
// the supported event names
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnStartApp"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnCloseApp"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnNew"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnUnload"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnPrepareUnload"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnLoad"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnSave"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnSaveAs"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnSaveDone"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnSaveAsDone"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnFocus"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnUnfocus"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnPrint"));
- m_supportedEvents.push_back(::rtl::OUString::createFromAscii("OnModifyChanged"));
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_STARTAPP] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEAPP] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_DOCCREATED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CREATEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_LOADFINISHED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_OPENDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PREPARECLOSEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOCDONE] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEDOCFAILED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOCDONE] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVEASDOCFAILED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOCDONE] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_SAVETODOCFAILED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_ACTIVATEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_DEACTIVATEDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PRINTDOC] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_VIEWCREATED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_PREPARECLOSEVIEW] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_CLOSEVIEW] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_MODIFYCHANGED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_TITLECHANGED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_VISAREACHANGED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_MODECHANGED] ) );
+ m_supportedEvents.push_back(::rtl::OUString::createFromAscii( pEventAsciiNames[STR_EVENT_STORAGECHANGED] ) );
initBindingInfo();
@@ -103,6 +149,14 @@ GlobalEventConfig_Impl::~GlobalEventConfig_Impl()
}
}
+::rtl::OUString GlobalEventConfig_Impl::GetEventName( sal_Int32 nIndex )
+{
+ if ( nIndex < (sal_Int32) m_supportedEvents.size() )
+ return m_supportedEvents[nIndex];
+ else
+ return rtl::OUString();
+}
+
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
@@ -396,3 +450,9 @@ Mutex& GlobalEventConfig::GetOwnStaticMutex()
// Return new created or already existing mutex object.
return *pMutex;
}
+
+::rtl::OUString GlobalEventConfig::GetEventName( sal_Int32 nIndex )
+{
+ return GlobalEventConfig().m_pImpl->GetEventName( nIndex );
+}
+
diff --git a/svtools/source/config/lingucfg.cxx b/svtools/source/config/lingucfg.cxx
index 263ced16cd50..2b4e4d482c3f 100644
--- a/svtools/source/config/lingucfg.cxx
+++ b/svtools/source/config/lingucfg.cxx
@@ -72,27 +72,6 @@ static osl::Mutex & GetOwnMutex()
///////////////////////////////////////////////////////////////////////////
-static lang::Locale lcl_CreateLocale( LanguageType eLang )
-{
- lang::Locale aLocale;
- if ( eLang != LANGUAGE_NONE )
- MsLangId::convertLanguageToLocale( eLang, aLocale );
-
- return aLocale;
-}
-
-
-static INT16 lcl_LocaleToLanguage( const lang::Locale& rLocale )
-{
- // empty Locale -> LANGUAGE_NONE
- if ( rLocale.Language.getLength() == 0 )
- return LANGUAGE_NONE;
-
- // Variant of Locale is ignored
- return MsLangId::convertLocaleToLanguage( rLocale );
-}
-
-
static BOOL lcl_SetLocale( INT16 &rLanguage, const uno::Any &rVal )
{
BOOL bSucc = FALSE;
@@ -100,41 +79,31 @@ static BOOL lcl_SetLocale( INT16 &rLanguage, const uno::Any &rVal )
lang::Locale aNew;
if (rVal >>= aNew) // conversion successful?
{
- INT16 nNew = lcl_LocaleToLanguage( aNew );
+ INT16 nNew = MsLangId::convertLocaleToLanguage( aNew );
if (nNew != rLanguage)
{
rLanguage = nNew;
bSucc = TRUE;
}
}
-
return bSucc;
}
-static inline INT16 lcl_CfgLocaleStrToLanguage( const OUString &rCfgLocaleStr )
-{
- INT16 nRes = LANGUAGE_NONE;
- if (0 != rCfgLocaleStr.getLength())
- nRes = MsLangId::convertIsoStringToLanguage( rCfgLocaleStr );
- return nRes;
-}
-
-
static inline const OUString lcl_LanguageToCfgLocaleStr( INT16 nLanguage )
{
OUString aRes;
- if (LANGUAGE_NONE != nLanguage)
+ if (LANGUAGE_SYSTEM != nLanguage)
aRes = MsLangId::convertLanguageToIsoString( nLanguage );
return aRes;
}
-static void lcl_CfgAnyToLanguage( const uno::Any &rVal, INT16& rLanguage )
+static INT16 lcl_CfgAnyToLanguage( const uno::Any &rVal )
{
OUString aTmp;
- if ((rVal >>= aTmp) && 0 != aTmp.getLength())
- rLanguage = MsLangId::convertIsoStringToLanguage( aTmp );
+ rVal >>= aTmp;
+ return (aTmp.getLength() == 0) ? LANGUAGE_SYSTEM : MsLangId::convertIsoStringToLanguage( aTmp );
}
@@ -143,7 +112,6 @@ static void lcl_CfgAnyToLanguage( const uno::Any &rVal, INT16& rLanguage )
SvtLinguOptions::SvtLinguOptions()
{
nDefaultLanguage = LANGUAGE_NONE;
-
nDefaultLanguage_CJK = LANGUAGE_NONE;
nDefaultLanguage_CTL = LANGUAGE_NONE;
@@ -428,19 +396,19 @@ uno::Any SvtLinguConfigItem::GetProperty( INT32 nPropertyHandle ) const
}
case UPH_DEFAULT_LOCALE :
{
- lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage ) );
+ lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage, false ) );
aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 ));
break;
}
case UPH_DEFAULT_LOCALE_CJK :
{
- lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage_CJK ) );
+ lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CJK, false ) );
aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 ));
break;
}
case UPH_DEFAULT_LOCALE_CTL :
{
- lang::Locale aLocale( lcl_CreateLocale( rOpt.nDefaultLanguage_CTL ) );
+ lang::Locale aLocale( MsLangId::convertLanguageToLocale( rOpt.nDefaultLanguage_CTL, false ) );
aRes.setValue( &aLocale, ::getCppuType((lang::Locale*)0 ));
break;
}
@@ -654,7 +622,7 @@ BOOL SvtLinguConfigItem::LoadOptions( const uno::Sequence< OUString > &rProperyN
switch ( nPropertyHandle )
{
case UPH_DEFAULT_LOCALE :
- { rOpt.bRODefaultLanguage = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage ); } break;
+ { rOpt.bRODefaultLanguage = pROStates[i]; rOpt.nDefaultLanguage = lcl_CfgAnyToLanguage( rVal ); } break;
case UPH_ACTIVE_DICTIONARIES :
{ rOpt.bROActiveDics = pROStates[i]; rVal >>= rOpt.aActiveDics; } break;
case UPH_IS_USE_DICTIONARY_LIST :
@@ -662,9 +630,9 @@ BOOL SvtLinguConfigItem::LoadOptions( const uno::Sequence< OUString > &rProperyN
case UPH_IS_IGNORE_CONTROL_CHARACTERS :
{ rOpt.bROIsIgnoreControlCharacters = pROStates[i]; rVal >>= rOpt.bIsIgnoreControlCharacters; } break;
case UPH_DEFAULT_LOCALE_CJK :
- { rOpt.bRODefaultLanguage_CJK = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage_CJK ); } break;
+ { rOpt.bRODefaultLanguage_CJK = pROStates[i]; rOpt.nDefaultLanguage_CJK = lcl_CfgAnyToLanguage( rVal ); } break;
case UPH_DEFAULT_LOCALE_CTL :
- { rOpt.bRODefaultLanguage_CTL = pROStates[i]; lcl_CfgAnyToLanguage( rVal, rOpt.nDefaultLanguage_CTL ); } break;
+ { rOpt.bRODefaultLanguage_CTL = pROStates[i]; rOpt.nDefaultLanguage_CTL = lcl_CfgAnyToLanguage( rVal ); } break;
case UPH_IS_SPELL_UPPER_CASE :
{ rOpt.bROIsSpellUpperCase = pROStates[i]; rVal >>= rOpt.bIsSpellUpperCase; } break;
diff --git a/svtools/source/config/saveopt.cxx b/svtools/source/config/saveopt.cxx
index 6ce1be8441a4..2b18d1bf4767 100644
--- a/svtools/source/config/saveopt.cxx
+++ b/svtools/source/config/saveopt.cxx
@@ -437,7 +437,7 @@ SvtSaveOptions_Impl::SvtSaveOptions_Impl()
, bRODoPrettyPrinting( CFG_READONLY_DEFAULT )
, bROLoadDocPrinter( CFG_READONLY_DEFAULT )
, bROODFDefaultVersion( CFG_READONLY_DEFAULT )
- , eODFDefaultVersion( SvtSaveOptions::ODFVER_012 )
+ , eODFDefaultVersion( SvtSaveOptions::ODFVER_LATEST )
{
Sequence< OUString > aNames = GetPropertyNames();
Sequence< Any > aValues = GetProperties( aNames );
@@ -474,11 +474,16 @@ SvtSaveOptions_Impl::SvtSaveOptions_Impl()
{
sal_Int16 nTmp = 0;
if ( pValues[nProp] >>= nTmp )
- eODFDefaultVersion = SvtSaveOptions::ODFDefaultVersion( nTmp );
+ {
+ if( nTmp == 3 )
+ eODFDefaultVersion = SvtSaveOptions::ODFVER_LATEST;
+ else
+ eODFDefaultVersion = SvtSaveOptions::ODFDefaultVersion( nTmp );
+ }
else {
DBG_ERRORFILE( "SvtSaveOptions_Impl::SvtSaveOptions_Impl(): Wrong Type!" );
};
- bROAutoSaveTime = pROStates[nProp];
+ bROODFDefaultVersion = pROStates[nProp];
break;
}
@@ -729,7 +734,7 @@ void SvtSaveOptions_Impl::Commit()
case ODFDEFAULTVERSION:
if (!bROODFDefaultVersion)
{
- pValues[nRealCount] <<= sal_Int16( eODFDefaultVersion );
+ pValues[nRealCount] <<= (eODFDefaultVersion == SvtSaveOptions::ODFVER_LATEST) ? sal_Int16( 3 ) : sal_Int16( eODFDefaultVersion );
pNames[nRealCount] = pOrgNames[i];
++nRealCount;
}
diff --git a/svtools/source/control/roadmap.cxx b/svtools/source/control/roadmap.cxx
index 7485efec7c7c..b0e178e631d9 100644
--- a/svtools/source/control/roadmap.cxx
+++ b/svtools/source/control/roadmap.cxx
@@ -201,6 +201,17 @@ namespace svt
m_pImpl->InCompleteHyperLabel = NULL;
m_pImpl->setCurItemID(-1 );
m_pImpl->setComplete( sal_True );
+
+ // Roadmap control should be reachable as one unit with a Tab key
+ // the next Tab key should spring out of the control.
+ // To reach it the control itself should get focus and set it
+ // on entries. The entries themself should not be reachable with
+ // the Tab key directly. So each entry should have WB_NOTABSTOP.
+ //
+ // In other words the creator should create the control with the following
+ // flags:
+ // SetStyle( ( GetStyle() | WB_TABSTOP ) & ~WB_DIALOGCONTROL );
+
// TODO: if somebody sets a new font from outside (OutputDevice::SetFont), we would have to react
// on this with calculating a new bold font.
// Unfortunately, the OutputDevice does not offer a notify mechanism for a changed font.
@@ -725,11 +736,9 @@ namespace svt
//---------------------------------------------------------------------
IMPL_LINK(ORoadmap, ImplClickHdl, HyperLabel*, _CurHyperLabel)
{
- return SelectRoadmapItemByID( _CurHyperLabel->GetID() );
+ return SelectRoadmapItemByID( _CurHyperLabel->GetID() );
}
-
-
void ORoadmap::DataChanged( const DataChangedEvent& rDCEvt )
{
if ((( rDCEvt.GetType() == DATACHANGED_SETTINGS ) ||
@@ -753,7 +762,7 @@ namespace svt
ORoadmapHyperLabel::ORoadmapHyperLabel( Window* _pParent, const ResId& )
{
mpIDLabel = new ORoadmapIDHyperLabel(_pParent, WB_WORDBREAK);
- mpDescHyperLabel = new HyperLabel(_pParent, WB_TABSTOP | WB_WORDBREAK);
+ mpDescHyperLabel = new HyperLabel(_pParent, WB_NOTABSTOP | WB_WORDBREAK);
}
@@ -761,7 +770,7 @@ namespace svt
{
mpIDLabel = new ORoadmapIDHyperLabel(_pParent, WB_WORDBREAK);
mpIDLabel->SetTextColor( mpIDLabel->GetSettings().GetStyleSettings().GetFieldTextColor( ) );
- mpDescHyperLabel = new HyperLabel(_pParent, WB_TABSTOP | WB_WORDBREAK);
+ mpDescHyperLabel = new HyperLabel(_pParent, WB_NOTABSTOP | WB_WORDBREAK);
}
//---------------------------------------------------------------------
diff --git a/svtools/source/control/valueacc.cxx b/svtools/source/control/valueacc.cxx
index afdb728f450e..96eb8bb39e99 100644
--- a/svtools/source/control/valueacc.cxx
+++ b/svtools/source/control/valueacc.cxx
@@ -37,6 +37,7 @@
#include <vcl/svapp.hxx>
#include <svtools/valueset.hxx>
#include "valueimp.hxx"
+#include <com/sun/star/accessibility/AccessibleEventId.hpp>
#include <com/sun/star/accessibility/AccessibleRole.hpp>
#include <com/sun/star/accessibility/AccessibleStateType.hpp>
@@ -92,7 +93,8 @@ void ValueSetItem::ClearAccessible()
ValueSetAcc::ValueSetAcc( ValueSet* pParent, bool bIsTransientChildrenDisabled ) :
ValueSetAccComponentBase (m_aMutex),
mpParent( pParent ),
- mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled )
+ mbIsTransientChildrenDisabled( bIsTransientChildrenDisabled ),
+ mbIsFocused(false)
{
}
@@ -166,6 +168,35 @@ ValueSetAcc* ValueSetAcc::getImplementation( const uno::Reference< uno::XInterfa
}
}
+
+// -----------------------------------------------------------------------------
+
+void ValueSetAcc::GetFocus (void)
+{
+ mbIsFocused = true;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
+// -----------------------------------------------------------------------------
+
+void ValueSetAcc::LoseFocus (void)
+{
+ mbIsFocused = false;
+
+ // Boradcast the state change.
+ ::com::sun::star::uno::Any aOldState, aNewState;
+ aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
+ FireAccessibleEvent(
+ ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
+ aOldState, aNewState);
+}
+
// -----------------------------------------------------------------------------
uno::Reference< accessibility::XAccessibleContext > SAL_CALL ValueSetAcc::getAccessibleContext()
@@ -321,6 +352,9 @@ uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ValueSetAcc::getAc
pStateSet->AddState (accessibility::AccessibleStateType::VISIBLE);
if ( !mbIsTransientChildrenDisabled )
pStateSet->AddState (accessibility::AccessibleStateType::MANAGES_DESCENDANTS);
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSABLE);
+ if (mbIsFocused)
+ pStateSet->AddState (accessibility::AccessibleStateType::FOCUSED);
return pStateSet;
}
diff --git a/svtools/source/control/valueimp.hxx b/svtools/source/control/valueimp.hxx
index 8d7951da0dfc..c176629953ae 100644
--- a/svtools/source/control/valueimp.hxx
+++ b/svtools/source/control/valueimp.hxx
@@ -150,6 +150,17 @@ public:
public:
+ /** Called by the corresponding ValueSet when it gets the focus.
+ Stores the new focus state and broadcasts a state change event.
+ */
+ void GetFocus (void);
+
+ /** Called by the corresponding ValueSet when it loses the focus.
+ Stores the new focus state and broadcasts a state change event.
+ */
+ void LoseFocus (void);
+
+
// XAccessible
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessibleContext > SAL_CALL getAccessibleContext( ) throw (::com::sun::star::uno::RuntimeException);
@@ -201,6 +212,8 @@ private:
::com::sun::star::accessibility::XAccessibleEventListener > > mxEventListeners;
ValueSet* mpParent;
bool mbIsTransientChildrenDisabled;
+ /// The current FOCUSED state.
+ bool mbIsFocused;
static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelId();
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index 7326f540c654..4033a9df7bb5 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -1683,13 +1683,10 @@ void ValueSet::GetFocus()
ImplDrawSelect();
Control::GetFocus();
- // Send accessibility event.
- ::com::sun::star::uno::Any aOldState, aNewState;
- aNewState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
- ImplFireAccessibleEvent (
- ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
- aOldState, aNewState);
-
+ // Tell the accessible object that we got the focus.
+ ValueSetAcc* pAcc = ValueSetAcc::getImplementation( GetAccessible( FALSE ) );
+ if( pAcc )
+ pAcc->GetFocus();
}
// -----------------------------------------------------------------------
@@ -1703,12 +1700,10 @@ void ValueSet::LoseFocus()
HideFocus();
Control::LoseFocus();
- // Send accessibility event.
- ::com::sun::star::uno::Any aOldState, aNewState;
- aOldState <<= ::com::sun::star::accessibility::AccessibleStateType::FOCUSED;
- ImplFireAccessibleEvent (
- ::com::sun::star::accessibility::AccessibleEventId::STATE_CHANGED,
- aOldState, aNewState);
+ // Tell the accessible object that we lost the focus.
+ ValueSetAcc* pAcc = ValueSetAcc::getImplementation( GetAccessible( FALSE ) );
+ if( pAcc )
+ pAcc->LoseFocus();
}
// -----------------------------------------------------------------------
diff --git a/svtools/source/dialogs/addresstemplate.cxx b/svtools/source/dialogs/addresstemplate.cxx
index ddb34d5d4fd2..14ede88482a6 100644
--- a/svtools/source/dialogs/addresstemplate.cxx
+++ b/svtools/source/dialogs/addresstemplate.cxx
@@ -97,6 +97,22 @@ namespace svt
DECLARE_STL_VECTOR( String, StringArray );
DECLARE_STL_STDKEY_SET( ::rtl::OUString, StringBag );
DECLARE_STL_USTRINGACCESS_MAP( ::rtl::OUString, MapString2String );
+
+ namespace
+ {
+ String lcl_getSelectedDataSource( const ComboBox& _dataSourceCombo )
+ {
+ String selectedDataSource = _dataSourceCombo.GetText();
+ if ( _dataSourceCombo.GetEntryPos( selectedDataSource ) == LISTBOX_ENTRY_NOTFOUND )
+ {
+ // none of the pre-selected entries -> assume a path to a database document
+ OFileNotation aFileNotation( selectedDataSource, OFileNotation::N_SYSTEM );
+ selectedDataSource = aFileNotation.get( OFileNotation::N_URL );
+ }
+ return selectedDataSource;
+ }
+ }
+
// ===================================================================
// = IAssigmentData
// ===================================================================
@@ -857,9 +873,7 @@ public:
Reference< XCompletedConnection > xDS;
if ( m_pImpl->bWorkingPersistent )
{
- String sSelectedDS = m_aDatasource.GetText();
- OFileNotation aFileNotation( sSelectedDS ,OFileNotation::N_SYSTEM);
- sSelectedDS = aFileNotation.get(OFileNotation::N_URL);
+ String sSelectedDS = lcl_getSelectedDataSource( m_aDatasource );
// get the data source the user has chosen and let it build a connection
INetURLObject aURL( sSelectedDS );
@@ -1179,9 +1193,7 @@ public:
// -------------------------------------------------------------------
IMPL_LINK(AddressBookSourceDialog, OnOkClicked, Button*, EMPTYARG)
{
- String sSelectedDS = m_aDatasource.GetText();
- OFileNotation aFileNotation( sSelectedDS ,OFileNotation::N_SYSTEM);
- sSelectedDS = aFileNotation.get(OFileNotation::N_URL);
+ String sSelectedDS = lcl_getSelectedDataSource( m_aDatasource );
if ( m_pImpl->bWorkingPersistent )
{
m_pImpl->pConfigData->setDatasourceName(sSelectedDS);
@@ -1231,7 +1243,6 @@ public:
Reference<XPropertySet> xProp(xAdminDialog,UNO_QUERY);
if ( xProp.is() )
{
- String sOldDS = m_aDatasource.GetText();
::rtl::OUString sName;
xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataSourceName"))) >>= sName;
diff --git a/svtools/source/dialogs/wizdlg.cxx b/svtools/source/dialogs/wizdlg.cxx
index f0c69a24e4e4..aa0e62046ea6 100644
--- a/svtools/source/dialogs/wizdlg.cxx
+++ b/svtools/source/dialogs/wizdlg.cxx
@@ -303,8 +303,9 @@ void WizardDialog::ImplPosTabPage()
}
else if ( meViewAlign == WINDOWALIGN_LEFT )
{
- nOffX += aViewSize.Width()+WIZARDDIALOG_VIEW_DLGOFFSET_X;
- aDlgSize.Width() -= aViewSize.Width()+WIZARDDIALOG_VIEW_DLGOFFSET_X;
+ long nViewOffset = mbEmptyViewMargin ? 0 : WIZARDDIALOG_VIEW_DLGOFFSET_X;
+ nOffX += aViewSize.Width() + nViewOffset;
+ aDlgSize.Width() -= nOffX;
}
else if ( meViewAlign == WINDOWALIGN_BOTTOM )
aDlgSize.Height() -= aViewSize.Height()+WIZARDDIALOG_VIEW_DLGOFFSET_Y;
diff --git a/svtools/source/filter.vcl/wmf/wmfwr.cxx b/svtools/source/filter.vcl/wmf/wmfwr.cxx
index 3c3ca09692af..ee3a71c51f9d 100644
--- a/svtools/source/filter.vcl/wmf/wmfwr.cxx
+++ b/svtools/source/filter.vcl/wmf/wmfwr.cxx
@@ -438,16 +438,7 @@ void WMFWriter::WMFRecord_CreateFontIndirect(const Font & rFont)
BYTE nPitchFamily;
WriteRecordHeader(0x00000000,W_META_CREATEFONTINDIRECT);
-
- if ( !rFont.GetSize().Width() )
- {
- VirtualDevice aDev;
- FontMetric aMetric( aDev.GetFontMetric( rFont ) );
- WriteHeightWidth(Size(aMetric.GetWidth(),-rFont.GetSize().Height()));
- }
- else
- WriteHeightWidth(Size(rFont.GetSize().Width(),-rFont.GetSize().Height()));
-
+ WriteHeightWidth(Size(rFont.GetSize().Width(),-rFont.GetSize().Height()));
*pWMF << (short)rFont.GetOrientation() << (short)rFont.GetOrientation();
switch (rFont.GetWeight()) {
diff --git a/svtools/source/inc/passwordcontainer.hxx b/svtools/source/inc/passwordcontainer.hxx
index a6edea49f699..a067672f3cf6 100644
--- a/svtools/source/inc/passwordcontainer.hxx
+++ b/svtools/source/inc/passwordcontainer.hxx
@@ -34,13 +34,14 @@
#include <vector>
#include <map>
#include <com/sun/star/task/XPasswordContainer.hpp>
+#include <com/sun/star/task/XUrlContainer.hpp>
#include <com/sun/star/task/PasswordRequestMode.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XSingleServiceFactory.hpp>
#include <com/sun/star/lang/XEventListener.hpp>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/task/XMasterPasswordHandling2.hpp>
-#include <cppuhelper/implbase4.hxx>
+#include <cppuhelper/implbase5.hxx>
#include <cppuhelper/typeprovider.hxx>
#include <cppuhelper/queryinterface.hxx>
#include <cppuhelper/factory.hxx>
@@ -52,6 +53,8 @@
#include <rtl/ref.hxx>
#include <osl/mutex.hxx>
+#include "syscreds.hxx"
+
#define MEMORY_RECORD 0
#define PERSISTENT_RECORD 1
@@ -241,9 +244,10 @@ enum PasswordState {
cancelled
};
-class PasswordContainer : public ::cppu::WeakImplHelper4<
+class PasswordContainer : public ::cppu::WeakImplHelper5<
::com::sun::star::task::XPasswordContainer,
::com::sun::star::task::XMasterPasswordHandling2,
+ ::com::sun::star::task::XUrlContainer,
::com::sun::star::lang::XServiceInfo,
::com::sun::star::lang::XEventListener >
{
@@ -253,6 +257,7 @@ private:
::osl::Mutex mMutex;
::rtl::OUString m_aMasterPasswd; // master password is set when the string is not empty
::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > mComponent;
+ SysCredentialsConfig mUrlContainer;
::com::sun::star::uno::Sequence< ::com::sun::star::task::UserRecord > CopyToUserRecordSequence(
const ::std::list< NamePassRecord >& original,
@@ -269,6 +274,19 @@ private:
const ::rtl::OUString& name,
const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& Handler )
throw(::com::sun::star::uno::RuntimeException);
+bool createUrlRecord(
+ const PassMap::iterator & rIter,
+ bool bName,
+ const ::rtl::OUString & aName,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler,
+ ::com::sun::star::task::UrlRecord & rRec )
+ throw( ::com::sun::star::uno::RuntimeException );
+
+::com::sun::star::task::UrlRecord find(
+ const ::rtl::OUString& aURL,
+ const ::rtl::OUString& aName,
+ bool bName, // only needed to support empty user names
+ const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& aHandler ) throw(::com::sun::star::uno::RuntimeException);
::rtl::OUString GetDefaultMasterPassword();
@@ -369,6 +387,12 @@ public:
virtual ::sal_Bool SAL_CALL useDefaultMasterPassword( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler ) throw (::com::sun::star::uno::RuntimeException);
virtual ::sal_Bool SAL_CALL isDefaultMasterPasswordUsed( ) throw (::com::sun::star::uno::RuntimeException);
+ // XUrlContainer
+ virtual void SAL_CALL addUrl( const ::rtl::OUString& Url, ::sal_Bool MakePersistent ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::rtl::OUString SAL_CALL findUrl( const ::rtl::OUString& Url ) throw (::com::sun::star::uno::RuntimeException);
+ virtual void SAL_CALL removeUrl( const ::rtl::OUString& Url ) throw (::com::sun::star::uno::RuntimeException);
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getUrls( ::sal_Bool OnlyPersistent ) throw (::com::sun::star::uno::RuntimeException);
+
void Notify();
};
diff --git a/svtools/source/misc/dialogcontrolling.cxx b/svtools/source/misc/dialogcontrolling.cxx
index 01f9d4ed0eef..d461e5898227 100644
--- a/svtools/source/misc/dialogcontrolling.cxx
+++ b/svtools/source/misc/dialogcontrolling.cxx
@@ -79,8 +79,8 @@ namespace svt
//= DialogController
//=====================================================================
//---------------------------------------------------------------------
- DialogController::DialogController( Window& _rInstigator, const PWindowEventFilter _pEventFilter,
- const PWindowOperator _pOperator )
+ DialogController::DialogController( Window& _rInstigator, const PWindowEventFilter& _pEventFilter,
+ const PWindowOperator& _pOperator )
:m_pImpl( new DialogController_Data( _rInstigator, _pEventFilter, _pOperator ) )
{
DBG_ASSERT( m_pImpl->pEventFilter.get() && m_pImpl->pOperator.get(),
@@ -108,31 +108,33 @@ namespace svt
void DialogController::addDependentWindow( Window& _rWindow )
{
m_pImpl->aConcernedWindows.push_back( &_rWindow );
- impl_update( _rWindow );
+
+ VclWindowEvent aEvent( &_rWindow, 0, NULL );
+ impl_update( aEvent, _rWindow );
}
//---------------------------------------------------------------------
- IMPL_LINK( DialogController, OnWindowEvent, const VclSimpleEvent*, _pEvent )
+ IMPL_LINK( DialogController, OnWindowEvent, const VclWindowEvent*, _pEvent )
{
if ( m_pImpl->pEventFilter->payAttentionTo( *_pEvent ) )
- impl_updateAll();
+ impl_updateAll( *_pEvent );
return 0L;
}
//---------------------------------------------------------------------
- void DialogController::impl_updateAll()
+ void DialogController::impl_updateAll( const VclWindowEvent& _rTriggerEvent )
{
for ( ::std::vector< Window* >::iterator loop = m_pImpl->aConcernedWindows.begin();
loop != m_pImpl->aConcernedWindows.end();
++loop
)
- impl_update( *(*loop) );
+ impl_update( _rTriggerEvent, *(*loop) );
}
//---------------------------------------------------------------------
- void DialogController::impl_update( Window& _rWindow )
+ void DialogController::impl_update( const VclWindowEvent& _rTriggerEvent, Window& _rWindow )
{
- m_pImpl->pOperator->operateOn( _rWindow );
+ m_pImpl->pOperator->operateOn( _rTriggerEvent, _rWindow );
}
//=====================================================================
@@ -177,6 +179,13 @@ namespace svt
}
//---------------------------------------------------------------------
+ void ControlDependencyManager::addController( const PDialogController& _pController )
+ {
+ OSL_ENSURE( _pController.get() != NULL, "ControlDependencyManager::addController: invalid controller, this will crash, sooner or later!" );
+ m_pImpl->aControllers.push_back( _pController );
+ }
+
+ //---------------------------------------------------------------------
void ControlDependencyManager::enableOnRadioCheck( RadioButton& _rRadio, Window& _rDependentWindow )
{
PDialogController pController( new RadioDependentEnabler( _rRadio ) );
diff --git a/svtools/source/misc/embedhlp.cxx b/svtools/source/misc/embedhlp.cxx
index 8eaf915f3b0c..6bd1126f8082 100644
--- a/svtools/source/misc/embedhlp.cxx
+++ b/svtools/source/misc/embedhlp.cxx
@@ -54,6 +54,7 @@
#include <com/sun/star/embed/NoVisualAreaSizeException.hpp>
#include <com/sun/star/util/XModifiable.hpp>
#include <com/sun/star/datatransfer/XTransferable.hpp>
+#include <com/sun/star/chart2/XDefaultSizeTransmitter.hpp>
#include <cppuhelper/implbase4.hxx>
#include "vcl/svapp.hxx"
#include <rtl/logfile.hxx>
@@ -249,6 +250,7 @@ struct EmbeddedObjectRef_Impl
sal_Int64 nViewAspect;
BOOL bIsLocked;
sal_Bool bNeedUpdate;
+ awt::Size aDefaultSizeForChart_In_100TH_MM;//#i103460# charts do not necessaryly have an own size within ODF files, in this case they need to use the size settings from the surrounding frame, which is made available with this member
};
void EmbeddedObjectRef::Construct_Impl()
@@ -260,6 +262,7 @@ void EmbeddedObjectRef::Construct_Impl()
mpImp->nViewAspect = embed::Aspects::MSOLE_CONTENT;
mpImp->bIsLocked = FALSE;
mpImp->bNeedUpdate = sal_False;
+ mpImp->aDefaultSizeForChart_In_100TH_MM = awt::Size(8000,7000);
}
EmbeddedObjectRef::EmbeddedObjectRef()
@@ -286,6 +289,7 @@ EmbeddedObjectRef::EmbeddedObjectRef( const EmbeddedObjectRef& rObj )
mpImp->aPersistName = rObj.mpImp->aPersistName;
mpImp->aMediaType = rObj.mpImp->aMediaType;
mpImp->bNeedUpdate = rObj.mpImp->bNeedUpdate;
+ mpImp->aDefaultSizeForChart_In_100TH_MM = rObj.mpImp->aDefaultSizeForChart_In_100TH_MM;
if ( rObj.mpImp->pGraphic && !rObj.mpImp->bNeedUpdate )
mpImp->pGraphic = new Graphic( *rObj.mpImp->pGraphic );
@@ -334,6 +338,14 @@ void EmbeddedObjectRef::Assign( const NS_UNO::Reference < NS_EMBED::XEmbeddedObj
mpImp->nViewAspect = nAspect;
mxObj = xObj;
mpImp->xListener = EmbedEventListener_Impl::Create( this );
+
+ //#i103460#
+ {
+ ::com::sun::star::uno::Reference < ::com::sun::star::chart2::XDefaultSizeTransmitter > xSizeTransmitter( xObj, uno::UNO_QUERY );
+ DBG_ASSERT( xSizeTransmitter.is(), "Object does not support XDefaultSizeTransmitter -> will cause #i103460#!" );
+ if( xSizeTransmitter.is() )
+ xSizeTransmitter->setDefaultSize( mpImp->aDefaultSizeForChart_In_100TH_MM );
+ }
}
void EmbeddedObjectRef::Clear()
@@ -902,4 +914,18 @@ BOOL EmbeddedObjectRef::IsChart() const
return sal_False;
}
+void EmbeddedObjectRef::SetDefaultSizeForChart( const Size& rSizeIn_100TH_MM )
+{
+ //#i103460# charts do not necessaryly have an own size within ODF files,
+ //for this case they need to use the size settings from the surrounding frame,
+ //which is made available with this method
+
+ mpImp->aDefaultSizeForChart_In_100TH_MM = awt::Size( rSizeIn_100TH_MM.getWidth(), rSizeIn_100TH_MM.getHeight() );
+
+ ::com::sun::star::uno::Reference < ::com::sun::star::chart2::XDefaultSizeTransmitter > xSizeTransmitter( mxObj, uno::UNO_QUERY );
+ DBG_ASSERT( xSizeTransmitter.is(), "Object does not support XDefaultSizeTransmitter -> will cause #i103460#!" );
+ if( xSizeTransmitter.is() )
+ xSizeTransmitter->setDefaultSize( mpImp->aDefaultSizeForChart_In_100TH_MM );
+}
+
}
diff --git a/svtools/source/misc/errtxt.src b/svtools/source/misc/errtxt.src
index 033ecefc10e7..ebd922bfedf7 100644
--- a/svtools/source/misc/errtxt.src
+++ b/svtools/source/misc/errtxt.src
@@ -478,6 +478,10 @@ Resource RID_ERRHDL
{
Text [ en-US ] = "The digitally signed document content and/or macros do not match the current document signature.\n\nThis could be the result of document manipulation or of structural document damage due to data transmission.\n\nWe recommend that you do not trust the content of the current document.\nExecution of macros is disabled for this document.\n " ;
};
+ String ERRCODE_SFX_INCOMPLETE_ENCRYPTION
+ {
+ Text [ en-US ] = "The encrypted document contains unexpected non-encrypted streams.\n\nThis could be the result of document manipulation.\n\nWe recommend that you do not trust the content of the current document.\nExecution of macros is disabled for this document.\n " ;
+ };
String ERRCODE_IO_INVALIDLENGTH
{
diff --git a/svtools/source/misc/langtab.src b/svtools/source/misc/langtab.src
index 21953d25d92a..4458d4b0f132 100644
--- a/svtools/source/misc/langtab.src
+++ b/svtools/source/misc/langtab.src
@@ -302,6 +302,14 @@ StringArray STR_ARR_SVT_LANGUAGE_TABLE
< "Maltese" ; LANGUAGE_MALTESE ; > ;
< "Tok Pisin" ; LANGUAGE_USER_TOK_PISIN ; > ;
< "Shuswap" ; LANGUAGE_USER_SHUSWAP ; > ;
+ < "Oromo" ; LANGUAGE_OROMO ; > ;
+ < "Greek, Ancient" ; LANGUAGE_USER_ANCIENT_GREEK ; > ;
+ < "Yiddish" ; LANGUAGE_YIDDISH ; > ;
+ < "Quechua (Ecuador)" ; LANGUAGE_QUECHUA_ECUADOR ; > ;
+ < "Uyghur" ; LANGUAGE_UIGHUR_CHINA ; > ;
+ < "Asturian" ; LANGUAGE_USER_ASTURIAN ; > ;
+ < "Sorbian, Upper" ; LANGUAGE_UPPER_SORBIAN_GERMANY ; > ;
+ < "Sorbian, Lower" ; LANGUAGE_LOWER_SORBIAN_GERMANY ; > ;
};
};
diff --git a/svtools/source/misc1/docmspasswdrequest.cxx b/svtools/source/misc1/docmspasswdrequest.cxx
deleted file mode 100644
index e892d3a57d1a..000000000000
--- a/svtools/source/misc1/docmspasswdrequest.cxx
+++ /dev/null
@@ -1,143 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright IBM Corporation 2009.
- * Copyright 2009 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: docmspasswdrequest.cxx,v $
- * $Revision: 1.0 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-
-#include "docmspasswdrequest.hxx"
-#include <com/sun/star/task/XInteractionAbort.hpp>
-#include <com/sun/star/task/XInteractionPassword.hpp>
-
-//==========================================================================
-
-class MSAbortContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionAbort >
-{
- sal_Bool mbSelected;
-
-public:
- MSAbortContinuation() : mbSelected( sal_False ) {}
-
- sal_Bool isSelected() { return mbSelected; }
-
- void reset() { mbSelected = sal_False; }
-
- virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException) { mbSelected = sal_True; }
-};
-
-//==========================================================================
-
-class MSPasswordContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionPassword >
-{
- sal_Bool mbSelected;
- ::rtl::OUString maPassword;
-
-public:
- MSPasswordContinuation() : mbSelected( sal_False ) {}
-
- sal_Bool isSelected() { return mbSelected; }
-
- void reset() { mbSelected = sal_False; }
-
- virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setPassword( const ::rtl::OUString& aPass ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getPassword( ) throw (::com::sun::star::uno::RuntimeException);
-};
-
-void SAL_CALL MSPasswordContinuation::select()
- throw(::com::sun::star::uno::RuntimeException)
-{
- mbSelected = sal_True;
-}
-
-void SAL_CALL MSPasswordContinuation::setPassword( const ::rtl::OUString& aPass )
- throw (::com::sun::star::uno::RuntimeException)
-{
- maPassword = aPass;
-}
-
-::rtl::OUString SAL_CALL MSPasswordContinuation::getPassword()
- throw (::com::sun::star::uno::RuntimeException)
-{
- return maPassword;
-}
-
-//==========================================================================
-
-RequestMSDocumentPassword::RequestMSDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName )
-{
- ::rtl::OUString temp;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2;
- ::com::sun::star::task::DocumentMSPasswordRequest
- aDocumentMSPasswordRequest( temp,
- temp2,
- ::com::sun::star::task::InteractionClassification_QUERY,
- nMode,
- aName );
-
- m_aRequest <<= aDocumentMSPasswordRequest;
-
- m_pAbort = new MSAbortContinuation;
- m_pPassword = new MSPasswordContinuation;
-
- m_lContinuations.realloc( 2 );
- m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort );
- m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pPassword );
-}
-
-sal_Bool RequestMSDocumentPassword::isAbort()
-{
- return m_pAbort->isSelected();
-}
-
-sal_Bool RequestMSDocumentPassword::isPassword()
-{
- return m_pPassword->isSelected();
-}
-
-::rtl::OUString RequestMSDocumentPassword::getPassword()
-{
- return m_pPassword->getPassword();
-}
-
-::com::sun::star::uno::Any SAL_CALL RequestMSDocumentPassword::getRequest()
- throw( ::com::sun::star::uno::RuntimeException )
-{
- return m_aRequest;
-}
-
-::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >
- SAL_CALL RequestMSDocumentPassword::getContinuations()
- throw( ::com::sun::star::uno::RuntimeException )
-{
- return m_lContinuations;
-}
-
-
diff --git a/svtools/source/misc1/docpasswdrequest.cxx b/svtools/source/misc1/docpasswdrequest.cxx
deleted file mode 100644
index 37ceb85ec132..000000000000
--- a/svtools/source/misc1/docpasswdrequest.cxx
+++ /dev/null
@@ -1,142 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2008 by Sun Microsystems, Inc.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * $RCSfile: docpasswdrequest.cxx,v $
- * $Revision: 1.5 $
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_svtools.hxx"
-
-#include "docpasswdrequest.hxx"
-#include <com/sun/star/task/XInteractionAbort.hpp>
-#include <com/sun/star/task/XInteractionPassword.hpp>
-
-//==========================================================================
-
-class AbortContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionAbort >
-{
- sal_Bool mbSelected;
-
-public:
- AbortContinuation() : mbSelected( sal_False ) {}
-
- sal_Bool isSelected() { return mbSelected; }
-
- void reset() { mbSelected = sal_False; }
-
- virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException) { mbSelected = sal_True; }
-};
-
-//==========================================================================
-
-class PasswordContinuation : public ::cppu::WeakImplHelper1< ::com::sun::star::task::XInteractionPassword >
-{
- sal_Bool mbSelected;
- ::rtl::OUString maPassword;
-
-public:
- PasswordContinuation() : mbSelected( sal_False ) {}
-
- sal_Bool isSelected() { return mbSelected; }
-
- void reset() { mbSelected = sal_False; }
-
- virtual void SAL_CALL select() throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setPassword( const ::rtl::OUString& aPass ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getPassword( ) throw (::com::sun::star::uno::RuntimeException);
-};
-
-void SAL_CALL PasswordContinuation::select()
- throw(::com::sun::star::uno::RuntimeException)
-{
- mbSelected = sal_True;
-}
-
-void SAL_CALL PasswordContinuation::setPassword( const ::rtl::OUString& aPass )
- throw (::com::sun::star::uno::RuntimeException)
-{
- maPassword = aPass;
-}
-
-::rtl::OUString SAL_CALL PasswordContinuation::getPassword()
- throw (::com::sun::star::uno::RuntimeException)
-{
- return maPassword;
-}
-
-//==========================================================================
-
-RequestDocumentPassword::RequestDocumentPassword( ::com::sun::star::task::PasswordRequestMode nMode, ::rtl::OUString aName )
-{
- ::rtl::OUString temp;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > temp2;
- ::com::sun::star::task::DocumentPasswordRequest
- aDocumentPasswordRequest( temp,
- temp2,
- ::com::sun::star::task::InteractionClassification_QUERY,
- nMode,
- aName );
-
- m_aRequest <<= aDocumentPasswordRequest;
-
- m_pAbort = new AbortContinuation;
- m_pPassword = new PasswordContinuation;
-
- m_lContinuations.realloc( 2 );
- m_lContinuations[0] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pAbort );
- m_lContinuations[1] = ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation >( m_pPassword );
-}
-
-sal_Bool RequestDocumentPassword::isAbort()
-{
- return m_pAbort->isSelected();
-}
-
-sal_Bool RequestDocumentPassword::isPassword()
-{
- return m_pPassword->isSelected();
-}
-
-::rtl::OUString RequestDocumentPassword::getPassword()
-{
- return m_pPassword->getPassword();
-}
-
-::com::sun::star::uno::Any SAL_CALL RequestDocumentPassword::getRequest()
- throw( ::com::sun::star::uno::RuntimeException )
-{
- return m_aRequest;
-}
-
-::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >
- SAL_CALL RequestDocumentPassword::getContinuations()
- throw( ::com::sun::star::uno::RuntimeException )
-{
- return m_lContinuations;
-}
-
-
diff --git a/svtools/source/misc1/makefile.mk b/svtools/source/misc1/makefile.mk
index 3ca57ff36f92..dd143ea4e972 100644
--- a/svtools/source/misc1/makefile.mk
+++ b/svtools/source/misc1/makefile.mk
@@ -1,7 +1,7 @@
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
+#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
@@ -49,14 +49,11 @@ EXCEPTIONSFILES=\
SLOFILES=\
$(EXCEPTIONSFILES) \
$(SLO)$/adrparse.obj \
- $(SLO)$/docpasswdrequest.obj \
- $(SLO)$/docmspasswdrequest.obj \
$(SLO)$/filenotation.obj \
$(SLO)$/inethist.obj \
$(SLO)$/inettype.obj \
$(SLO)$/iniadrtk.obj \
$(SLO)$/lngmisc.obj \
- $(SLO)$/loginerr.obj \
$(SLO)$/PasswordHelper.obj
SRS1NAME=$(TARGET)
diff --git a/svtools/source/numbers/numfmuno.cxx b/svtools/source/numbers/numfmuno.cxx
index 7417367ec124..d65a2fd696ce 100644
--- a/svtools/source/numbers/numfmuno.cxx
+++ b/svtools/source/numbers/numfmuno.cxx
@@ -774,7 +774,7 @@ uno::Any SAL_CALL SvNumberFormatObj::getPropertyValue( const rtl::OUString& aPro
else if (aString.EqualsAscii( PROPERTYNAME_LOCALE ))
{
lang::Locale aLocale( MsLangId::convertLanguageToLocale(
- pFormat->GetLanguage()));
+ pFormat->GetLanguage()));
aRet <<= aLocale;
}
else if (aString.EqualsAscii( PROPERTYNAME_TYPE ))
diff --git a/svtools/source/numbers/zforscan.cxx b/svtools/source/numbers/zforscan.cxx
index d6ce04c4da2a..77b33226559c 100644
--- a/svtools/source/numbers/zforscan.cxx
+++ b/svtools/source/numbers/zforscan.cxx
@@ -491,6 +491,8 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
if ( j < NF_MAX_DEFAULT_COLORS )
i = j;
}
+
+ Color* pResult = NULL;
if (i >= NF_MAX_DEFAULT_COLORS)
{
const String& rColorWord = pKeyword[NF_KEY_COLOR];
@@ -516,15 +518,9 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
{
long nIndex = sString.ToInt32();
if (nIndex > 0 && nIndex <= 64)
- return pFormatter->GetUserDefColor((USHORT)nIndex-1);
- else
- return NULL;
+ pResult = pFormatter->GetUserDefColor((USHORT)nIndex-1);
}
- else
- return NULL;
}
- else
- return NULL;
}
else
{
@@ -538,8 +534,9 @@ Color* ImpSvNumberformatScan::GetColor(String& sStr)
else
sStr = pKeyword[NF_KEY_FIRSTCOLOR+i];
- return &(StandardColor[i]);
+ pResult = &(StandardColor[i]);
}
+ return pResult;
}
diff --git a/svtools/source/passwordcontainer/makefile.mk b/svtools/source/passwordcontainer/makefile.mk
index 70692ecbf06b..31e1336ad966 100644
--- a/svtools/source/passwordcontainer/makefile.mk
+++ b/svtools/source/passwordcontainer/makefile.mk
@@ -43,7 +43,8 @@ DLLPRE=
# --- Files -------------------------------------
SLOFILES= \
- $(SLO)$/passwordcontainer.obj
+ $(SLO)$/passwordcontainer.obj\
+ $(SLO)$/syscreds.obj
SHL1TARGET= $(TARGET)
SHL1IMPLIB= i$(TARGET)
diff --git a/svtools/source/passwordcontainer/passwordcontainer.cxx b/svtools/source/passwordcontainer/passwordcontainer.cxx
index 9855e7e3c487..cebde0705f12 100644
--- a/svtools/source/passwordcontainer/passwordcontainer.cxx
+++ b/svtools/source/passwordcontainer/passwordcontainer.cxx
@@ -152,10 +152,17 @@ static vector< ::rtl::OUString > getInfoFromInd( ::rtl::OUString aInd )
static sal_Bool shorterUrl( ::rtl::OUString& aURL )
{
sal_Int32 aInd = aURL.lastIndexOf( sal_Unicode( '/' ) );
- if( aInd > 0 && aURL.indexOf( ::rtl::OUString::createFromAscii( "://" ) ) != aInd-2 )
+
+ if( aInd > 0 )
{
- aURL = aURL.copy( 0, aInd );
- return sal_True;
+ sal_Int32 aPrevInd = aURL.lastIndexOf( sal_Unicode( '/' ), aInd );
+ if ( aURL.indexOf( ::rtl::OUString::createFromAscii( "://" ) )
+ != aPrevInd - 2 ||
+ aInd != aURL.getLength() - 1 )
+ {
+ aURL = aURL.copy( 0, aInd );
+ return sal_True;
+ }
}
return sal_False;
@@ -753,37 +760,14 @@ void PasswordContainer::PrivateAdd( const ::rtl::OUString& Url, const ::rtl::OUS
UrlRecord SAL_CALL PasswordContainer::find( const ::rtl::OUString& aURL, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
{
- ::osl::MutexGuard aGuard( mMutex );
-
- if( !m_aContainer.empty() )
- {
- ::rtl::OUString aUrl( aURL );
- PassMap::iterator aIter = m_aContainer.find( aUrl );
-
- if( aIter != m_aContainer.end() )
- return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
-
- // each iteration remove last '/...' section from the aUrl
- // while it's possible, up to the most left '://'
- while( shorterUrl( aUrl ) )
- {
- // first look for <url>/somename and then look for <url>/somename/...
- aIter = m_aContainer.find( aUrl );
- if( aIter != m_aContainer.end() )
- return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
- else
- {
- ::rtl::OUString tmpUrl( aUrl );
- tmpUrl += ::rtl::OUString::createFromAscii( "/" );
+ return find( aURL, rtl::OUString(), false, aHandler );
+}
- aIter = m_aContainer.lower_bound( aUrl );
- if( aIter != m_aContainer.end() )
- return UrlRecord( aIter->first, CopyToUserRecordSequence( aIter->second, aHandler ) );
- }
- }
- }
+//-------------------------------------------------------------------------
- return UrlRecord();
+UrlRecord SAL_CALL PasswordContainer::findForName( const ::rtl::OUString& aURL, const ::rtl::OUString& aName, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
+{
+ return find( aURL, aName, true, aHandler );
}
//-------------------------------------------------------------------------
@@ -810,48 +794,76 @@ Sequence< UserRecord > PasswordContainer::FindUsr( const list< NamePassRecord >&
//-------------------------------------------------------------------------
-UrlRecord SAL_CALL PasswordContainer::findForName( const ::rtl::OUString& aURL, const ::rtl::OUString& aName, const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
+bool PasswordContainer::createUrlRecord(
+ const PassMap::iterator & rIter,
+ bool bName,
+ const ::rtl::OUString & aName,
+ const Reference< XInteractionHandler >& aHandler,
+ UrlRecord & rRec )
+ throw( RuntimeException )
{
+ if ( bName )
+ {
+ Sequence< UserRecord > aUsrRec
+ = FindUsr( rIter->second, aName, aHandler );
+ if( aUsrRec.getLength() )
+ {
+ rRec = UrlRecord( rIter->first, aUsrRec );
+ return true;
+ }
+ }
+ else
+ {
+ rRec = UrlRecord(
+ rIter->first,
+ CopyToUserRecordSequence( rIter->second, aHandler ) );
+ return true;
+ }
+ return false;
+}
+
+//-------------------------------------------------------------------------
+UrlRecord PasswordContainer::find(
+ const ::rtl::OUString& aURL,
+ const ::rtl::OUString& aName,
+ bool bName, // only needed to support empty user names
+ const Reference< XInteractionHandler >& aHandler ) throw(RuntimeException)
+{
::osl::MutexGuard aGuard( mMutex );
- if( !m_aContainer.empty() )
+
+ if( !m_aContainer.empty() && aURL.getLength() )
{
::rtl::OUString aUrl( aURL );
- PassMap::iterator aIter = m_aContainer.find( aUrl );
-
- if( aIter != m_aContainer.end() )
- {
- Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
- if( aUsrRec.getLength() )
- return UrlRecord( aIter->first, aUsrRec );
- }
// each iteration remove last '/...' section from the aUrl
// while it's possible, up to the most left '://'
- while( shorterUrl( aUrl ) )
+ do
{
// first look for <url>/somename and then look for <url>/somename/...
- aIter = m_aContainer.find( aUrl );
+ PassMap::iterator aIter = m_aContainer.find( aUrl );
if( aIter != m_aContainer.end() )
{
- Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
- if( aUsrRec.getLength() )
- return UrlRecord( aIter->first, aUsrRec );
+ UrlRecord aRec;
+ if ( createUrlRecord( aIter, bName, aName, aHandler, aRec ) )
+ return aRec;
}
else
{
::rtl::OUString tmpUrl( aUrl );
- tmpUrl += ::rtl::OUString::createFromAscii( "/" );
+ if ( tmpUrl.getStr()[tmpUrl.getLength() - 1] != (sal_Unicode)'/' )
+ tmpUrl += ::rtl::OUString::createFromAscii( "/" );
- aIter = m_aContainer.lower_bound( aUrl );
- if( aIter != m_aContainer.end() )
+ aIter = m_aContainer.lower_bound( tmpUrl );
+ if( aIter != m_aContainer.end() && aIter->first.match( tmpUrl ) )
{
- Sequence< UserRecord > aUsrRec = FindUsr( aIter->second, aName, aHandler );
- if( aUsrRec.getLength() )
- return UrlRecord( aIter->first, aUsrRec );
+ UrlRecord aRec;
+ if ( createUrlRecord( aIter, bName, aName, aHandler, aRec ) )
+ return aRec;
}
}
}
+ while( shorterUrl( aUrl ) && aUrl.getLength() );
}
return UrlRecord();
@@ -1355,6 +1367,35 @@ void SAL_CALL PasswordContainer::removeMasterPassword()
return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) && !aEncodedMP.getLength() );
}
+
+//-------------------------------------------------------------------------
+void SAL_CALL PasswordContainer::addUrl( const ::rtl::OUString& Url, ::sal_Bool MakePersistent )
+ throw (uno::RuntimeException)
+{
+ mUrlContainer.add( Url, MakePersistent );
+}
+
+//-------------------------------------------------------------------------
+::rtl::OUString SAL_CALL PasswordContainer::findUrl( const ::rtl::OUString& Url )
+ throw (uno::RuntimeException)
+{
+ return mUrlContainer.find( Url );
+}
+
+//-------------------------------------------------------------------------
+void SAL_CALL PasswordContainer::removeUrl( const ::rtl::OUString& Url )
+ throw (uno::RuntimeException)
+{
+ mUrlContainer.remove( Url );
+}
+
+//-------------------------------------------------------------------------
+uno::Sequence< ::rtl::OUString > SAL_CALL PasswordContainer::getUrls( ::sal_Bool OnlyPersistent )
+ throw (uno::RuntimeException)
+{
+ return mUrlContainer.list( OnlyPersistent );
+}
+
//-------------------------------------------------------------------------
void PasswordContainer::Notify()
@@ -1487,7 +1528,9 @@ MasterPasswordRequest_Impl::MasterPasswordRequest_Impl( PasswordRequestMode Mode
aRememberModes, // rRememberPasswordModes
RememberAuthentication_NO, // eDefaultRememberPasswordMode
aRememberModes, // rRememberAccountModes
- RememberAuthentication_NO // eDefaultRememberAccountMode
+ RememberAuthentication_NO, // eDefaultRememberAccountMode
+ sal_False, // bCanUseSystemCredentials
+ sal_False // bDefaultUseSystemCredentials
);
Sequence<
diff --git a/svtools/source/passwordcontainer/syscreds.cxx b/svtools/source/passwordcontainer/syscreds.cxx
new file mode 100644
index 000000000000..b8c223040e6d
--- /dev/null
+++ b/svtools/source/passwordcontainer/syscreds.cxx
@@ -0,0 +1,298 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "syscreds.hxx"
+#include "com/sun/star/beans/PropertyValue.hpp"
+
+using namespace com::sun::star;
+
+SysCredentialsConfigItem::SysCredentialsConfigItem(
+ SysCredentialsConfig * pOwner )
+: utl::ConfigItem( rtl::OUString::createFromAscii( "Office.Common/Passwords" ),
+ CONFIG_MODE_IMMEDIATE_UPDATE ),
+ m_bInited( false ),
+ m_pOwner( pOwner )
+{
+ uno::Sequence< ::rtl::OUString > aNode( 1 );
+ aNode[ 0 ] = rtl::OUString::createFromAscii(
+ "Office.Common/Passwords/AuthenticateUsingSystemCredentials" );
+ EnableNotification( aNode );
+}
+
+//virtual
+void SysCredentialsConfigItem::Notify(
+ const uno::Sequence< rtl::OUString > & /*seqPropertyNames*/ )
+{
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+ m_bInited = false;
+ // rebuild m_seqURLs
+ getSystemCredentialsURLs();
+ }
+ m_pOwner->persistentConfigChanged();
+}
+
+uno::Sequence< rtl::OUString >
+SysCredentialsConfigItem::getSystemCredentialsURLs()
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ if ( !m_bInited )
+ {
+ // read config item
+ uno::Sequence< ::rtl::OUString > aPropNames( 1 );
+ aPropNames[ 0 ] = rtl::OUString::createFromAscii(
+ "AuthenticateUsingSystemCredentials" );
+ uno::Sequence< uno::Any > aAnyValues(
+ utl::ConfigItem::GetProperties( aPropNames ) );
+
+ OSL_ENSURE(
+ aAnyValues.getLength() == 1,
+ "SysCredentialsConfigItem::getSystemCredentialsURLs: "
+ "Error reading config item!" );
+
+ uno::Sequence< rtl::OUString > aValues;
+ if ( ( aAnyValues[ 0 ] >>= aValues ) ||
+ ( !aAnyValues[ 0 ].hasValue() ) )
+ {
+ m_seqURLs = aValues;
+ m_bInited = true;
+ }
+ }
+ return m_seqURLs;
+}
+
+void SysCredentialsConfigItem::setSystemCredentialsURLs(
+ const uno::Sequence< rtl::OUString > & seqURLList )
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ // write config item.
+ uno::Sequence< rtl::OUString > aPropNames( 1 );
+ uno::Sequence< uno::Any > aPropValues( 1 );
+ aPropNames[ 0 ]
+ = ::rtl::OUString::createFromAscii(
+ "AuthenticateUsingSystemCredentials" );
+ aPropValues[ 0 ] <<= seqURLList;
+
+ utl::ConfigItem::SetModified();
+ utl::ConfigItem::PutProperties( aPropNames, aPropValues );
+
+ m_seqURLs = seqURLList;
+ m_bInited = true;
+}
+
+//============================================================================
+
+namespace
+{
+ // TODO: This code is actually copied from svtools/source/passwordcontainer.cxx
+ bool removeLastSegment( ::rtl::OUString & aURL )
+ {
+ sal_Int32 aInd = aURL.lastIndexOf( sal_Unicode( '/' ) );
+
+ if( aInd > 0 )
+ {
+ sal_Int32 aPrevInd = aURL.lastIndexOf( sal_Unicode( '/' ), aInd );
+ if ( aURL.indexOf( ::rtl::OUString::createFromAscii( "://" ) )
+ != aPrevInd - 2 ||
+ aInd != aURL.getLength() - 1 )
+ {
+ aURL = aURL.copy( 0, aInd );
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ bool findURL( StringSet const & rContainer, rtl::OUString const & aURL, rtl::OUString & aResult )
+ {
+ // TODO: This code is actually copied from svtools/source/passwordcontainer.cxx
+ if( !rContainer.empty() && aURL.getLength() )
+ {
+ ::rtl::OUString aUrl( aURL );
+
+ // each iteration remove last '/...' section from the aUrl
+ // while it's possible, up to the most left '://'
+ do
+ {
+ // first look for <url>/somename and then look for <url>/somename/...
+ StringSet::const_iterator aIter = rContainer.find( aUrl );
+ if( aIter != rContainer.end() )
+ {
+ aResult = *aIter;
+ return true;
+ }
+ else
+ {
+ ::rtl::OUString tmpUrl( aUrl );
+ if ( tmpUrl.getStr()[tmpUrl.getLength() - 1] != (sal_Unicode)'/' )
+ tmpUrl += ::rtl::OUString::createFromAscii( "/" );
+
+ aIter = rContainer.lower_bound( tmpUrl );
+ if( aIter != rContainer.end() && aIter->match( tmpUrl ) )
+ {
+ aResult = *aIter;
+ return true;
+ }
+ }
+ }
+ while( removeLastSegment( aUrl ) && aUrl.getLength() );
+ }
+ aResult = rtl::OUString();
+ return false;
+ }
+
+} // namespace
+
+SysCredentialsConfig::SysCredentialsConfig()
+: m_aConfigItem( this ),
+ m_bCfgInited( false )
+{
+}
+
+void SysCredentialsConfig::initCfg()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+ if ( !m_bCfgInited )
+ {
+ uno::Sequence< rtl::OUString > aURLs(
+ m_aConfigItem.getSystemCredentialsURLs() );
+ for ( sal_Int32 n = 0; n < aURLs.getLength(); ++n )
+ m_aCfgContainer.insert( aURLs[ n ] );
+
+ m_bCfgInited = true;
+ }
+}
+
+void SysCredentialsConfig::writeCfg()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ OSL_ENSURE( m_bCfgInited, "SysCredentialsConfig::writeCfg : not initialized!" );
+
+ uno::Sequence< rtl::OUString > aURLs( m_aCfgContainer.size() );
+ StringSet::const_iterator it = m_aCfgContainer.begin();
+ const StringSet::const_iterator end = m_aCfgContainer.end();
+ sal_Int32 n = 0;
+
+ while ( it != end )
+ {
+ aURLs[ n ] = *it;
+ ++it;
+ ++n;
+ }
+
+ m_aConfigItem.setSystemCredentialsURLs( aURLs );
+}
+
+rtl::OUString SysCredentialsConfig::find( rtl::OUString const & aURL )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+ rtl::OUString aResult;
+ if ( findURL( m_aMemContainer, aURL, aResult ) )
+ return aResult;
+
+ initCfg();
+ if ( findURL( m_aCfgContainer, aURL, aResult ) )
+ return aResult;
+
+ return rtl::OUString();
+}
+
+void SysCredentialsConfig::add( rtl::OUString const & rURL, bool bPersistent )
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if ( bPersistent )
+ {
+ m_aMemContainer.erase( rURL );
+
+ initCfg();
+ m_aCfgContainer.insert( rURL );
+ writeCfg();
+ }
+ else
+ {
+ initCfg();
+ if ( m_aCfgContainer.erase( rURL ) > 0 )
+ writeCfg();
+
+ m_aMemContainer.insert( rURL );
+ }
+}
+
+void SysCredentialsConfig::remove( rtl::OUString const & rURL )
+{
+ m_aMemContainer.erase( rURL );
+
+ initCfg();
+ if ( m_aCfgContainer.erase( rURL ) > 0 )
+ writeCfg();
+}
+
+uno::Sequence< rtl::OUString > SysCredentialsConfig::list( bool bOnlyPersistent )
+{
+ initCfg();
+ sal_Int32 nCount = m_aCfgContainer.size()
+ + ( bOnlyPersistent ? 0 : m_aMemContainer.size() );
+ uno::Sequence< rtl::OUString > aResult( nCount );
+
+ StringSet::const_iterator it = m_aCfgContainer.begin();
+ StringSet::const_iterator end = m_aCfgContainer.end();
+ sal_Int32 n = 0;
+
+ while ( it != end )
+ {
+ aResult[ n ] = *it;
+ ++it;
+ ++n;
+ }
+
+ if ( !bOnlyPersistent )
+ {
+ it = m_aMemContainer.begin();
+ end = m_aMemContainer.end();
+
+ while ( it != end )
+ {
+ aResult[ n ] = *it;
+ ++it;
+ ++n;
+ }
+ }
+ return aResult;
+}
+
+void SysCredentialsConfig::persistentConfigChanged()
+{
+ ::osl::MutexGuard aGuard( m_aMutex );
+ m_bCfgInited = false; // re-init on demand.
+}
diff --git a/svtools/source/passwordcontainer/syscreds.hxx b/svtools/source/passwordcontainer/syscreds.hxx
new file mode 100644
index 000000000000..b037e17c348e
--- /dev/null
+++ b/svtools/source/passwordcontainer/syscreds.hxx
@@ -0,0 +1,95 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: $
+ * $Revision: $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_SVTOOLS_SYSCREDS_HXX
+#define INCLUDED_SVTOOLS_SYSCREDS_HXX
+
+#include <set>
+#include <memory>
+#include "osl/mutex.hxx"
+#include "rtl/ustring.hxx"
+#include "com/sun/star/uno/Sequence.hxx"
+#include "unotools/configitem.hxx"
+
+class SysCredentialsConfig;
+
+class SysCredentialsConfigItem : public utl::ConfigItem
+{
+ public:
+ SysCredentialsConfigItem( SysCredentialsConfig * pOwner );
+ //virtual ~SysCredentialsConfigItem();
+
+ virtual void Notify(
+ const com::sun::star::uno::Sequence< rtl::OUString > &
+ seqPropertyNames );
+ //virtual void Commit();
+
+ com::sun::star::uno::Sequence< rtl::OUString >
+ getSystemCredentialsURLs();
+
+ void setSystemCredentialsURLs(
+ const com::sun::star::uno::Sequence< rtl::OUString > &
+ seqURLList );
+
+ //bool isSystemCredentialsURL( const rtl::OUString & rURL ) const;
+
+private:
+ ::osl::Mutex m_aMutex;
+ bool m_bInited;
+ com::sun::star::uno::Sequence< rtl::OUString > m_seqURLs;
+ SysCredentialsConfig * m_pOwner;
+};
+
+typedef std::set< rtl::OUString > StringSet;
+
+class SysCredentialsConfig
+{
+ public:
+ SysCredentialsConfig();
+
+ rtl::OUString find( rtl::OUString const & rURL );
+ void add( rtl::OUString const & rURL, bool bPersistent );
+ void remove( rtl::OUString const & rURL );
+ com::sun::star::uno::Sequence< rtl::OUString > list( bool bOnlyPersistent );
+
+ void persistentConfigChanged();
+
+ private:
+ void initCfg();
+ void writeCfg();
+
+ ::osl::Mutex m_aMutex;
+ StringSet m_aMemContainer;
+ StringSet m_aCfgContainer;
+ SysCredentialsConfigItem m_aConfigItem;
+ bool m_bCfgInited;
+};
+
+#endif // INCLUDED_SVTOOLS_SYSCREDS_HXX
diff --git a/svtools/source/syslocale/syslocale.cxx b/svtools/source/syslocale/syslocale.cxx
index abe236bb46d0..9811d97fd964 100644
--- a/svtools/source/syslocale/syslocale.cxx
+++ b/svtools/source/syslocale/syslocale.cxx
@@ -66,18 +66,18 @@ public:
virtual void Notify( SvtBroadcaster& rBC, const SfxHint& rHint );
+ CharClass* GetCharClass();
+
};
// -----------------------------------------------------------------------
-SvtSysLocale_Impl::SvtSysLocale_Impl()
+SvtSysLocale_Impl::SvtSysLocale_Impl() : pCharClass(NULL)
{
const lang::Locale& rLocale = Application::GetSettings().GetLocale();
pLocaleData = new LocaleDataWrapper(
::comphelper::getProcessServiceFactory(), rLocale );
- pCharClass = new CharClass(
- ::comphelper::getProcessServiceFactory(), rLocale );
aSysLocaleOptions.AddListener( *this );
}
@@ -89,7 +89,15 @@ SvtSysLocale_Impl::~SvtSysLocale_Impl()
delete pLocaleData;
}
-
+CharClass* SvtSysLocale_Impl::GetCharClass()
+{
+ if ( !pCharClass )
+ {
+ const lang::Locale& rLocale = Application::GetSettings().GetLocale();
+ pCharClass = new CharClass(::comphelper::getProcessServiceFactory(), rLocale );
+ }
+ return pCharClass;
+}
void SvtSysLocale_Impl::Notify( SvtBroadcaster&, const SfxHint& rHint )
{
const SfxSimpleHint* p = PTR_CAST( SfxSimpleHint, &rHint );
@@ -98,7 +106,7 @@ void SvtSysLocale_Impl::Notify( SvtBroadcaster&, const SfxHint& rHint )
MutexGuard aGuard( SvtSysLocale::GetMutex() );
const lang::Locale& rLocale = Application::GetSettings().GetLocale();
pLocaleData->setLocale( rLocale );
- pCharClass->setLocale( rLocale );
+ GetCharClass()->setLocale( rLocale );
}
}
@@ -158,11 +166,11 @@ const LocaleDataWrapper* SvtSysLocale::GetLocaleDataPtr() const
const CharClass& SvtSysLocale::GetCharClass() const
{
- return *(pImpl->pCharClass);
+ return *(pImpl->GetCharClass());
}
const CharClass* SvtSysLocale::GetCharClassPtr() const
{
- return pImpl->pCharClass;
+ return pImpl->GetCharClass();
}
diff --git a/svtools/source/uno/unoiface.cxx b/svtools/source/uno/unoiface.cxx
index e6922aa4f099..54cc448ff89e 100644
--- a/svtools/source/uno/unoiface.cxx
+++ b/svtools/source/uno/unoiface.cxx
@@ -133,7 +133,7 @@ SAL_DLLPUBLIC_EXPORT Window* CreateWindow( VCLXWindow** ppNewComp, const ::com::
}
else if (aServiceName.EqualsIgnoreCaseAscii("roadmap") )
{
- pWindow = new ::svt::ORoadmap( pParent, WB_DIALOGCONTROL);
+ pWindow = new ::svt::ORoadmap( pParent, WB_TABSTOP );
*ppNewComp = new SVTXRoadmap;
}
else if ( aServiceName.EqualsIgnoreCaseAscii( "ProgressBar" ) )
diff --git a/toolkit/inc/toolkit/helper/vclunohelper.hxx b/toolkit/inc/toolkit/helper/vclunohelper.hxx
index 1c5d89a3cc64..e29b7237abb8 100644
--- a/toolkit/inc/toolkit/helper/vclunohelper.hxx
+++ b/toolkit/inc/toolkit/helper/vclunohelper.hxx
@@ -36,6 +36,7 @@
#include <com/sun/star/uno/Sequence.h>
#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/awt/MouseEvent.hpp>
namespace com { namespace sun { namespace star { namespace uno {
@@ -59,6 +60,7 @@ namespace com { namespace sun { namespace star { namespace awt {
struct SimpleFontMetric;
struct FontDescriptor;
struct Rectangle;
+ struct KeyEvent;
}}}}
@@ -71,6 +73,8 @@ namespace com { namespace sun { namespace star { namespace awt {
class Window;
class OutputDevice;
+class MouseEvent;
+class KeyEvent;
// ----------------------------------------------------
// class VclUnoHelper
@@ -144,6 +148,18 @@ public:
static ::Rectangle ConvertToVCLRect( ::com::sun::star::awt::Rectangle const & _rRect );
static ::com::sun::star::awt::Rectangle ConvertToAWTRect( ::Rectangle const & _rRect );
+
+ static ::com::sun::star::awt::MouseEvent
+ createMouseEvent(
+ const ::MouseEvent& _rVclEvent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext
+ );
+
+ static ::com::sun::star::awt::KeyEvent
+ createKeyEvent(
+ const ::KeyEvent& _rVclEvent,
+ const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContext
+ );
};
diff --git a/toolkit/source/awt/makefile.mk b/toolkit/source/awt/makefile.mk
index 86953691ad27..406386c5723e 100644
--- a/toolkit/source/awt/makefile.mk
+++ b/toolkit/source/awt/makefile.mk
@@ -44,7 +44,6 @@ ENABLE_EXCEPTIONS=TRUE
# --- Files --------------------------------------------------------
.IF "$(GUIBASE)"=="aqua"
-OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions
CFLAGSCXX+=$(OBJCXXFLAGS)
.ENDIF # "$(GUIBASE)"=="aqua"
diff --git a/toolkit/source/awt/vclxmenu.cxx b/toolkit/source/awt/vclxmenu.cxx
index c8e5e1bd3853..5200849d66ed 100644
--- a/toolkit/source/awt/vclxmenu.cxx
+++ b/toolkit/source/awt/vclxmenu.cxx
@@ -578,7 +578,7 @@ sal_Int16 VCLXMenu::execute( const ::com::sun::star::uno::Reference< ::com::sun:
sal_Int16 nRet = 0;
if ( mpMenu && IsPopupMenu() )
- nRet = ((PopupMenu*)mpMenu)->Execute( VCLUnoHelper::GetWindow( rxWindowPeer ), VCLRectangle(rArea), nFlags );
+ nRet = ((PopupMenu*)mpMenu)->Execute( VCLUnoHelper::GetWindow( rxWindowPeer ), VCLRectangle(rArea), nFlags | POPUPMENU_NOMOUSEUPCLOSE );
return nRet;
}
diff --git a/toolkit/source/awt/vclxwindow.cxx b/toolkit/source/awt/vclxwindow.cxx
index 337400c08713..a8c0912a583e 100644
--- a/toolkit/source/awt/vclxwindow.cxx
+++ b/toolkit/source/awt/vclxwindow.cxx
@@ -554,48 +554,6 @@ void ImplInitWindowEvent( ::com::sun::star::awt::WindowEvent& rEvent, Window* pW
pWindow->GetBorder( rEvent.LeftInset, rEvent.TopInset, rEvent.RightInset, rEvent.BottomInset );
}
-void ImplInitKeyEvent( ::com::sun::star::awt::KeyEvent& rEvent, const KeyEvent& rEvt )
-{
- rEvent.Modifiers = 0;
- if ( rEvt.GetKeyCode().IsShift() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::SHIFT;
- if ( rEvt.GetKeyCode().IsMod1() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1;
- if ( rEvt.GetKeyCode().IsMod2() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2;
- if ( rEvt.GetKeyCode().IsMod3() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD3;
-
- rEvent.KeyCode = rEvt.GetKeyCode().GetCode();
- rEvent.KeyChar = rEvt.GetCharCode();
- rEvent.KeyFunc = sal::static_int_cast< sal_Int16 >(
- rEvt.GetKeyCode().GetFunction());
-}
-
-void ImplInitMouseEvent( awt::MouseEvent& rEvent, const MouseEvent& rEvt )
-{
- rEvent.Modifiers = 0;
- if ( rEvt.IsShift() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::SHIFT;
- if ( rEvt.IsMod1() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1;
- if ( rEvt.IsMod2() )
- rEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2;
-
- rEvent.Buttons = 0;
- if ( rEvt.IsLeft() )
- rEvent.Buttons |= ::com::sun::star::awt::MouseButton::LEFT;
- if ( rEvt.IsRight() )
- rEvent.Buttons |= ::com::sun::star::awt::MouseButton::RIGHT;
- if ( rEvt.IsMiddle() )
- rEvent.Buttons |= ::com::sun::star::awt::MouseButton::MIDDLE;
-
- rEvent.X = rEvt.GetPosPixel().X();
- rEvent.Y = rEvt.GetPosPixel().Y();
- rEvent.ClickCount = rEvt.GetClicks();
- rEvent.PopupTrigger = sal_False;
-}
-
// ----------------------------------------------------
// class VCLXWindow
// ----------------------------------------------------
@@ -890,9 +848,9 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
if ( mpImpl->getKeyListeners().getLength() )
{
- ::com::sun::star::awt::KeyEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitKeyEvent( aEvent, *(KeyEvent*)rVclWindowEvent.GetData() );
+ ::com::sun::star::awt::KeyEvent aEvent( VCLUnoHelper::createKeyEvent(
+ *(KeyEvent*)rVclWindowEvent.GetData(), *this
+ ) );
mpImpl->getKeyListeners().keyPressed( aEvent );
}
}
@@ -901,9 +859,9 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
if ( mpImpl->getKeyListeners().getLength() )
{
- ::com::sun::star::awt::KeyEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitKeyEvent( aEvent, *(KeyEvent*)rVclWindowEvent.GetData() );
+ ::com::sun::star::awt::KeyEvent aEvent( VCLUnoHelper::createKeyEvent(
+ *(KeyEvent*)rVclWindowEvent.GetData(), *this
+ ) );
mpImpl->getKeyListeners().keyReleased( aEvent );
}
}
@@ -925,9 +883,7 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
}
MouseEvent aMEvt( aWhere, 1, MOUSE_SIMPLECLICK, MOUSE_LEFT, 0 );
- awt::MouseEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitMouseEvent( aEvent, aMEvt );
+ awt::MouseEvent aEvent( VCLUnoHelper::createMouseEvent( aMEvt, *this ) );
aEvent.PopupTrigger = sal_True;
mpImpl->notifyMouseEvent( aEvent, EVENT_MOUSE_PRESSED );
}
@@ -938,10 +894,7 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
MouseEvent* pMouseEvt = (MouseEvent*)rVclWindowEvent.GetData();
if ( mpImpl->getMouseListeners().getLength() && ( pMouseEvt->IsEnterWindow() || pMouseEvt->IsLeaveWindow() ) )
{
- awt::MouseEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitMouseEvent( aEvent, *pMouseEvt );
-
+ awt::MouseEvent aEvent( VCLUnoHelper::createMouseEvent( *pMouseEvt, *this ) );
mpImpl->notifyMouseEvent(
aEvent,
pMouseEvt->IsEnterWindow() ? EVENT_MOUSE_ENTERED : EVENT_MOUSE_EXITED
@@ -950,11 +903,8 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
if ( mpImpl->getMouseMotionListeners().getLength() && !pMouseEvt->IsEnterWindow() && !pMouseEvt->IsLeaveWindow() )
{
- awt::MouseEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitMouseEvent( aEvent, *pMouseEvt );
+ awt::MouseEvent aEvent( VCLUnoHelper::createMouseEvent( *pMouseEvt, *this ) );
aEvent.ClickCount = 0; // #92138#
-
if ( pMouseEvt->GetMode() & MOUSE_SIMPLEMOVE )
mpImpl->getMouseMotionListeners().mouseMoved( aEvent );
else
@@ -966,9 +916,7 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
if ( mpImpl->getMouseListeners().getLength() )
{
- awt::MouseEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitMouseEvent( aEvent, *(MouseEvent*)rVclWindowEvent.GetData() );
+ awt::MouseEvent aEvent( VCLUnoHelper::createMouseEvent( *(MouseEvent*)rVclWindowEvent.GetData(), *this ) );
mpImpl->notifyMouseEvent( aEvent, EVENT_MOUSE_PRESSED );
}
}
@@ -977,9 +925,7 @@ void VCLXWindow::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent )
{
if ( mpImpl->getMouseListeners().getLength() )
{
- awt::MouseEvent aEvent;
- aEvent.Source = (::cppu::OWeakObject*)this;
- ImplInitMouseEvent( aEvent, *(MouseEvent*)rVclWindowEvent.GetData() );
+ awt::MouseEvent aEvent( VCLUnoHelper::createMouseEvent( *(MouseEvent*)rVclWindowEvent.GetData(), *this ) );
mpImpl->notifyMouseEvent( aEvent, EVENT_MOUSE_RELEASED );
}
}
diff --git a/toolkit/source/controls/roadmapcontrol.cxx b/toolkit/source/controls/roadmapcontrol.cxx
index 724421da5f3c..da3a265130b8 100644
--- a/toolkit/source/controls/roadmapcontrol.cxx
+++ b/toolkit/source/controls/roadmapcontrol.cxx
@@ -104,6 +104,7 @@ static void lcl_throwIndexOutOfBoundsException( )
ImplRegisterProperty( BASEPROPERTY_COMPLETE );
ImplRegisterProperty( BASEPROPERTY_ACTIVATED );
ImplRegisterProperty( BASEPROPERTY_CURRENTITEMID );
+ ImplRegisterProperty( BASEPROPERTY_TABSTOP );
ImplRegisterProperty( BASEPROPERTY_TEXT );
}
diff --git a/toolkit/source/helper/vclunohelper.cxx b/toolkit/source/helper/vclunohelper.cxx
index 029e520baca6..89bde88d018e 100644
--- a/toolkit/source/helper/vclunohelper.cxx
+++ b/toolkit/source/helper/vclunohelper.cxx
@@ -45,6 +45,8 @@
#include <com/sun/star/awt/XControlContainer.hpp>
#include <com/sun/star/awt/FontWeight.hpp>
#include <com/sun/star/awt/FontWidth.hpp>
+#include <com/sun/star/awt/KeyModifier.hpp>
+#include <com/sun/star/awt/MouseButton.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/embed/EmbedMapUnits.hpp>
@@ -67,6 +69,8 @@
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/awt/Point.hpp>
+using namespace ::com::sun::star;
+
// ----------------------------------------------------
// class VCLUnoHelper
// ----------------------------------------------------
@@ -745,3 +749,54 @@ com::sun::star::awt::Point VCLUnoHelper::ConvertToAWTPoint(::Point /* VCLPoint *
{
return ::com::sun::star::awt::Rectangle( _rRect.Left(), _rRect.Top(), _rRect.GetWidth(), _rRect.GetHeight() );
}
+
+awt::MouseEvent VCLUnoHelper::createMouseEvent( const ::MouseEvent& _rVclEvent, const uno::Reference< uno::XInterface >& _rxContext )
+{
+ awt::MouseEvent aMouseEvent;
+ aMouseEvent.Source = _rxContext;
+
+ aMouseEvent.Modifiers = 0;
+ if ( _rVclEvent.IsShift() )
+ aMouseEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::SHIFT;
+ if ( _rVclEvent.IsMod1() )
+ aMouseEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD1;
+ if ( _rVclEvent.IsMod2() )
+ aMouseEvent.Modifiers |= ::com::sun::star::awt::KeyModifier::MOD2;
+
+ aMouseEvent.Buttons = 0;
+ if ( _rVclEvent.IsLeft() )
+ aMouseEvent.Buttons |= ::com::sun::star::awt::MouseButton::LEFT;
+ if ( _rVclEvent.IsRight() )
+ aMouseEvent.Buttons |= ::com::sun::star::awt::MouseButton::RIGHT;
+ if ( _rVclEvent.IsMiddle() )
+ aMouseEvent.Buttons |= ::com::sun::star::awt::MouseButton::MIDDLE;
+
+ aMouseEvent.X = _rVclEvent.GetPosPixel().X();
+ aMouseEvent.Y = _rVclEvent.GetPosPixel().Y();
+ aMouseEvent.ClickCount = _rVclEvent.GetClicks();
+ aMouseEvent.PopupTrigger = sal_False;
+
+ return aMouseEvent;
+}
+
+awt::KeyEvent VCLUnoHelper::createKeyEvent( const ::KeyEvent& _rVclEvent, const uno::Reference< uno::XInterface >& _rxContext )
+{
+ awt::KeyEvent aKeyEvent;
+ aKeyEvent.Source = _rxContext;
+
+ aKeyEvent.Modifiers = 0;
+ if ( _rVclEvent.GetKeyCode().IsShift() )
+ aKeyEvent.Modifiers |= awt::KeyModifier::SHIFT;
+ if ( _rVclEvent.GetKeyCode().IsMod1() )
+ aKeyEvent.Modifiers |= awt::KeyModifier::MOD1;
+ if ( _rVclEvent.GetKeyCode().IsMod2() )
+ aKeyEvent.Modifiers |= awt::KeyModifier::MOD2;
+ if ( _rVclEvent.GetKeyCode().IsMod3() )
+ aKeyEvent.Modifiers |= awt::KeyModifier::MOD3;
+
+ aKeyEvent.KeyCode = _rVclEvent.GetKeyCode().GetCode();
+ aKeyEvent.KeyChar = _rVclEvent.GetCharCode();
+ aKeyEvent.KeyFunc = ::sal::static_int_cast< sal_Int16 >( _rVclEvent.GetKeyCode().GetFunction());
+
+ return aKeyEvent;
+}
diff --git a/toolkit/util/makefile.mk b/toolkit/util/makefile.mk
index a04bdcbdf801..3c5da82d0dd9 100644
--- a/toolkit/util/makefile.mk
+++ b/toolkit/util/makefile.mk
@@ -80,22 +80,6 @@ DEF1DEPN =$(LIB1TARGET)
DEF1DES =TK
DEFLIB1NAME =tk
-.IF "$(OS)"=="MACOSX"
-
-# [ed] 6/16/02 Add in X libraries if we're building X
-
-.IF "$(GUIBASE)"=="unx"
-SHL1STDLIBS +=\
- -lX11 -lXt -lXmu
-.ENDIF
-
-.ELSE
-.IF "$(GUI)"=="UNX"
-SHL1STDLIBS +=\
- -lX11
-.ENDIF
-.ENDIF
-
RESLIB1IMAGES=$(PRJ)$/source$/awt
RES1FILELIST=$(SRS)$/awt.srs
RESLIB1NAME=$(TARGET)
diff --git a/tools/inc/tools/errcode.hxx b/tools/inc/tools/errcode.hxx
index af420397eba2..337fedfea44a 100644
--- a/tools/inc/tools/errcode.hxx
+++ b/tools/inc/tools/errcode.hxx
@@ -314,6 +314,7 @@ inline ULONG ERRCODE_TOERROR( ULONG x )
#define PRINTER_ABORT ERRCODE_IO_ABORT
#define PRINTER_OUTOFMEMORY ERRCODE_IO_OUTOFMEMORY
#define PRINTER_GENERALERROR ERRCODE_IO_GENERAL
+#define PRINTER_ACCESSDENIED ERRCODE_IO_ACCESSDENIED
#define ERRCODE_INET_NAME_RESOLVE (ERRCODE_AREA_INET | ERRCODE_CLASS_READ | 1)
#define ERRCODE_INET_CONNECT (ERRCODE_AREA_INET | ERRCODE_CLASS_READ | 2)
diff --git a/tools/inc/tools/rc.h b/tools/inc/tools/rc.h
index 11d6e2030162..8bad7dbf3f8a 100644
--- a/tools/inc/tools/rc.h
+++ b/tools/inc/tools/rc.h
@@ -102,6 +102,7 @@ typedef short RSWND_STYLE;
//#define NUMERICFORMATTER_I12 0x08 // erAck: got rid of class International (2005-06-17)
#define NUMERICFORMATTER_DECIMALDIGITS 0x10
#define NUMERICFORMATTER_VALUE 0x20
+#define NUMERICFORMATTER_NOTHOUSANDSEP 0x40
#define METRICFORMATTER_UNIT 0x01
#define METRICFORMATTER_CUSTOMUNITTEXT 0x02
diff --git a/tools/source/fsys/urlobj.cxx b/tools/source/fsys/urlobj.cxx
index 2aff0d734bf6..f7ffed5e4dd1 100644
--- a/tools/source/fsys/urlobj.cxx
+++ b/tools/source/fsys/urlobj.cxx
@@ -407,7 +407,7 @@ static INetURLObject::SchemeInfo const aSchemeInfoMap[INET_PROT_END]
{ "out", "out://", 0, true, false, false, false, false, false,
false, false },
{ "vnd.sun.star.wfs", "vnd.sun.star.wfs://", 0, true, false, false,
- false, true, false, true, false },
+ false, true, true, true, false },
{ "vnd.sun.star.hier", "vnd.sun.star.hier:", 0, true, false, false,
false, false, false, true, false },
{ "vim", "vim://", 0, true, true, false, true, false, false, true,
@@ -4825,9 +4825,8 @@ bool INetURLObject::setFSysPath(rtl::OUString const & rFSysPath,
break;
}
- rtl::OUStringBuffer aSynAbsURIRef(
- rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file://"),
- RTL_TEXTENCODING_ASCII_US));
+ rtl::OUStringBuffer aSynAbsURIRef(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("file://")));
+
switch (eStyle)
{
case FSYS_VOS:
diff --git a/transex3/prj/build.lst b/transex3/prj/build.lst
index 91a5056acce3..1ba0a50ff41c 100644
--- a/transex3/prj/build.lst
+++ b/transex3/prj/build.lst
@@ -1,7 +1,10 @@
-tr transex3 : tools NULL
+tr transex3 : tools libxslt berkeleydb lucene NULL
tr transex3 usr1 - all tr_mkout NULL
tr transex3\inc nmake - all tr_inc NULL
tr transex3\source nmake - all tr_src tr_inc NULL
tr transex3\layout nmake - all rt_layout tr_src tr_inc NULL
tr transex3\java\l10nconv nmake - all tr_conv NULL
tr transex3\java\receditor nmake - all tr_rece NULL
+tr transex3\source\help nmake - all tr_bla_help NULL
+tr transex3\source\filter\utils nmake - all tr_bla_utils NULL
+tr transex3\source\filter\merge nmake - all tr_bla_merge tr_bla_utils NULL
diff --git a/transex3/prj/d.lst b/transex3/prj/d.lst
index 54d1ab156205..39bafa4694c6 100644
--- a/transex3/prj/d.lst
+++ b/transex3/prj/d.lst
@@ -1,4 +1,10 @@
mkdir: %_DEST%\inc%_EXT%\transex3
+mkdir: %_DEST%\bin%_EXT%
+mkdir: %_DEST%\bin%_EXT%\help
+mkdir: %_DEST%\bin%_EXT%\help\com
+mkdir: %_DEST%\bin%_EXT%\help\com\sun
+mkdir: %_DEST%\bin%_EXT%\help\com\sun\star
+mkdir: %_DEST%\bin%_EXT%\help\com\sun\star\help
..\%__SRC%\bin\cfgex.exe %_DEST%\bin%_EXT%\cfgex.exe
..\%__SRC%\bin\cfgex %_DEST%\bin%_EXT%\cfgex
@@ -20,6 +26,14 @@ mkdir: %_DEST%\inc%_EXT%\transex3
..\%__SRC%\bin\txtconv %_DEST%\bin%_EXT%\txtconv
..\%__SRC%\bin\tralay.exe %_DEST%\bin%_EXT%\tralay.exe
..\%__SRC%\bin\tralay %_DEST%\bin%_EXT%\tralay
+..\%__SRC%\bin\ulfconv %_DEST%\bin%_EXT%\ulfconv
+..\%__SRC%\class\FCFGMerge.jar %_DEST%\bin%_EXT%\FCFGMerge.jar
+..\%__SRC%\class\HelpIndexerTool.jar %_DEST%\bin%_EXT%\HelpIndexerTool.jar
+..\%__SRC%\bin\HelpLinker %_DEST%\bin%_EXT%\HelpLinker
+..\%__SRC%\bin\HelpCompiler %_DEST%\bin%_EXT%\HelpCompiler
+..\%__SRC%\bin\HelpCompiler.exe %_DEST%\bin%_EXT%\HelpCompiler.exe
+..\%__SRC%\bin\HelpLinker.exe %_DEST%\bin%_EXT%\HelpLinker.exe
+..\%__SRC%\bin\HelpLinker* %_DEST%\bin%_EXT%
..\%__SRC%\class\converter\converter.jar %_DEST%\bin%_EXT%\converter.jar
..\%__SRC%\doc\converter_javadoc.zip %_DEST%\bin%_EXT%\converter_javadoc.zip
@@ -38,3 +52,8 @@ mkdir: %_DEST%\inc%_EXT%\transex3
..\inc\utf8conv.hxx %_DEST%\inc%_EXT%\transex3\utf8conv.hxx
..\%__SRC%\lib\transex.lib %_DEST%\lib%_EXT%\transex.lib
..\%__SRC%\lib\libtransex.a %_DEST%\lib%_EXT%\libtransex.a
+
+..\source\help\compilehelp.hxx %_DEST%\inc%_EXT%\transex3\compilehelp.hxx
+#..\source\help\helplinkerdllapi.h %_DEST%\inc%_EXT%\transex3\helplinkerdllapi.h
+..\%__SRC%\lib\* %_DEST%\lib%_EXT%\*
+..\%__SRC%\class\com\sun\star\help\* %_DEST%\bin%_EXT%\help\com\sun\star\help\*
diff --git a/transex3/source/filter/merge/FCFGMerge.cfg b/transex3/source/filter/merge/FCFGMerge.cfg
new file mode 100644
index 000000000000..46fcccafe7e4
--- /dev/null
+++ b/transex3/source/filter/merge/FCFGMerge.cfg
@@ -0,0 +1,125 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: FCFGMerge.cfg,v $
+#
+# $Revision: 1.5 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+#************************************************
+# Specify the verbose mode of this tool.
+# 1 = show errors only
+# 2 = show errors/warnings (default)
+# 3 = show errors/warnings and some generic infos
+# 4 = show anything (including detailed infos)
+#
+# [OPTIONAL]
+#************************************************
+
+loglevel = 2
+
+#************************************************
+# This extension is used for all XML files. It doesnt
+# matter if its used for reading fragments or writing
+# XML packages.
+# Must be given without any additional signes like "."
+# or "*."!
+#
+# [REQUIRED]
+#************************************************
+
+extension_xcu=xcu
+
+#************************************************
+# This extension is used for all Package files. It doesnt
+# matter if its used for reading such files or writing
+# it.
+# Must be given without any additional signes like "."
+# or "*."!
+#
+# [REQUIRED]
+#************************************************
+
+extension_pkg=pkg
+
+#************************************************
+# These values are used to generate a correct XML
+# header.
+# Note: The property "xmlpackage" must be specified
+# via command line. There exists more then one
+# possible value.
+#
+# [REQUIRED]
+#************************************************
+
+xmlversion = 1.0
+xmlencoding = UTF-8
+xmlpath = org.openoffice.TypeDetection
+#xmlpackage =
+
+#************************************************
+# These values are used to name the configuration
+# sets inside the generated XCM file for different
+# item groups like e.g. types, filters etcpp.
+#
+# [REQUIRED]
+#************************************************
+
+setname_types = Types
+setname_filters = Filters
+setname_frameloaders = FrameLoaders
+setname_contenthandlers = ContentHandlers
+
+subdir_types = types
+subdir_filters = filters
+subdir_frameloaders = frameloaders
+subdir_contenthandlers = contenthandlers
+
+#************************************************
+# This delimiter is used to split every
+# item list of the package configuration files
+# (which are temp. created by the make proccess)
+# into its tokens.
+#
+# [REQUIRED]
+#************************************************
+delimiter=,
+
+#************************************************
+# Enable/disable removing of leading/trailing withespaces
+# during splitting stringlists.
+#
+# [REQUIRED]
+#************************************************
+trim=true
+
+#************************************************
+# Enable/disable removing of leading/trailing "-signs
+# during splitting stringlists.
+#
+# [REQUIRED]
+#************************************************
+decode=false
diff --git a/transex3/source/filter/merge/FCFGMerge.java b/transex3/source/filter/merge/FCFGMerge.java
new file mode 100644
index 000000000000..7fbfa8a0c986
--- /dev/null
+++ b/transex3/source/filter/merge/FCFGMerge.java
@@ -0,0 +1,131 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: FCFGMerge.java,v $
+ * $Revision: 1.5 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.filter.config.tools.merge;
+
+//_______________________________________________
+
+import java.lang.*;
+import java.util.*;
+import java.io.*;
+import com.sun.star.filter.config.tools.utils.*;
+
+//_______________________________________________
+
+/**
+ * Its a simple command line tool, which can merge different XML fragments
+ * together. Such fragments must exist as files on disk, will be moved into
+ * one file together on disk.
+ *
+ *
+ */
+public class FCFGMerge
+{
+ //___________________________________________
+ // const
+
+ private static final java.lang.String CFGFILE = "com/sun/star/filter/config/tools/merge/FCFGMerge.cfg";
+ private static final java.lang.String PROP_LOGLEVEL = "loglevel";
+
+ //___________________________________________
+ // main
+
+ public static void main(java.lang.String[] sCmdLine)
+ {
+ FCFGMerge.printCopyright();
+
+ // create log object in default mode "WARNINGS"
+ // If a command line parameter indicates another
+ // level - change it!
+ Logger aLog = new Logger();
+
+ try
+ {
+ // merge config file and overwrite properties
+ // via command line
+ ConfigHelper aCfg = null;
+ aCfg = new ConfigHelper(CFGFILE, sCmdLine);
+
+ // update log level
+ int nLogLevel = aCfg.getInt(PROP_LOGLEVEL, Logger.LEVEL_WARNINGS);
+ aLog = new Logger(nLogLevel);
+
+ // help requested?
+ if (aCfg.isHelp())
+ {
+ FCFGMerge.printHelp();
+ System.exit(-1);
+ }
+
+ // create new merge object and start operation
+ Merger aMerger = new Merger(aCfg, aLog);
+ aMerger.merge();
+ }
+ catch(java.lang.Throwable ex)
+ {
+ aLog.setException(ex);
+ System.exit(-1);
+ }
+
+ System.exit(0);
+ }
+
+ //___________________________________________
+
+ /** prints out a copyright message on stdout.
+ */
+ private static void printCopyright()
+ {
+ java.lang.StringBuffer sOut = new java.lang.StringBuffer(256);
+ sOut.append("FCFGMerge\n");
+ sOut.append("Copyright: 2003 by Sun Microsystems, Inc.\n");
+ sOut.append("All Rights Reserved.\n");
+ System.out.println(sOut.toString());
+ }
+
+ //___________________________________________
+
+ /** prints out a help message on stdout.
+ */
+ private static void printHelp()
+ {
+ java.lang.StringBuffer sOut = new java.lang.StringBuffer(256);
+ sOut.append("____________________________________________________________\n");
+ sOut.append("usage: FCFGMerge cfg=<file name>\n" );
+ sOut.append("parameters:\n" );
+ sOut.append("\tcfg=<file name>\n" );
+ sOut.append("\t\tmust point to a system file, which contains\n" );
+ sOut.append("\t\tall neccessary configuration data for the merge process.\n");
+ sOut.append("\n\tFurther cou can specify every parameter allowed in the\n" );
+ sOut.append("\n\tconfig file as command line parameter too, to overwrite\n" );
+ sOut.append("\n\tthe value from the file.\n" );
+ System.out.println(sOut.toString());
+ }
+}
diff --git a/transex3/source/filter/merge/Manifest.mf b/transex3/source/filter/merge/Manifest.mf
new file mode 100644
index 000000000000..1337eaf4d39a
--- /dev/null
+++ b/transex3/source/filter/merge/Manifest.mf
@@ -0,0 +1 @@
+Main-Class: com.sun.star.filter.config.tools.merge.FCFGMerge
diff --git a/transex3/source/filter/merge/Merger.java b/transex3/source/filter/merge/Merger.java
new file mode 100644
index 000000000000..0bf11fc42fbf
--- /dev/null
+++ b/transex3/source/filter/merge/Merger.java
@@ -0,0 +1,364 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: Merger.java,v $
+ * $Revision: 1.8 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.filter.config.tools.merge;
+
+//_______________________________________________
+
+import java.lang.*;
+import java.util.*;
+import java.io.*;
+import com.sun.star.filter.config.tools.utils.*;
+
+//_______________________________________________
+
+/** can merge different xml fragments together.
+ *
+ *
+ */
+public class Merger
+{
+ //___________________________________________
+ // const
+
+ private static final java.lang.String PROP_XMLVERSION = "xmlversion" ; // <= global cfg file
+ private static final java.lang.String PROP_XMLENCODING = "xmlencoding" ; // <= global cfg file
+ private static final java.lang.String PROP_XMLPATH = "xmlpath" ; // <= global cfg file
+ private static final java.lang.String PROP_XMLPACKAGE = "xmlpackage" ; // <= global cfg file
+
+ private static final java.lang.String PROP_SETNAME_TYPES = "setname_types" ; // <= global cfg file
+ private static final java.lang.String PROP_SETNAME_FILTERS = "setname_filters" ; // <= global cfg file
+ private static final java.lang.String PROP_SETNAME_LOADERS = "setname_frameloaders" ; // <= global cfg file
+ private static final java.lang.String PROP_SETNAME_HANDLERS = "setname_contenthandlers" ; // <= global cfg file
+
+ private static final java.lang.String PROP_SUBDIR_TYPES = "subdir_types" ; // <= global cfg file
+ private static final java.lang.String PROP_SUBDIR_FILTERS = "subdir_filters" ; // <= global cfg file
+ private static final java.lang.String PROP_SUBDIR_LOADERS = "subdir_frameloaders" ; // <= global cfg file
+ private static final java.lang.String PROP_SUBDIR_HANDLERS = "subdir_contenthandlers" ; // <= global cfg file
+
+ private static final java.lang.String PROP_EXTENSION_XCU = "extension_xcu" ; // <= global cfg file
+ private static final java.lang.String PROP_EXTENSION_PKG = "extension_pkg" ; // <= global cfg file
+
+ private static final java.lang.String PROP_DELIMITER = "delimiter" ; // <= global cfg file
+ private static final java.lang.String PROP_TRIM = "trim" ; // <= global cfg file
+ private static final java.lang.String PROP_DECODE = "decode" ; // <= global cfg file
+
+ private static final java.lang.String PROP_FRAGMENTSDIR = "fragmentsdir" ; // <= cmdline
+ private static final java.lang.String PROP_TEMPDIR = "tempdir" ; // <= cmdline
+ private static final java.lang.String PROP_OUTDIR = "outdir" ; // <= cmdline
+ private static final java.lang.String PROP_PKG = "pkg" ; // <= cmdline
+ private static final java.lang.String PROP_DEBUG = "debug" ; // <= cmdline
+
+ private static final java.lang.String PROP_TCFG = "tcfg" ; // <= cmdline
+ private static final java.lang.String PROP_FCFG = "fcfg" ; // <= cmdline
+ private static final java.lang.String PROP_LCFG = "lcfg" ; // <= cmdline
+ private static final java.lang.String PROP_CCFG = "ccfg" ; // <= cmdline
+ private static final java.lang.String PROP_LANGUAGEPACK = "languagepack" ; // <= cmdline
+
+ private static final java.lang.String PROP_ITEMS = "items" ; // <= pkg cfg files!
+
+ //___________________________________________
+ // member
+
+ //-------------------------------------------
+ /** TODO */
+ private ConfigHelper m_aCfg;
+
+ //-------------------------------------------
+ /** TODO */
+ private Logger m_aLog;
+
+ //-------------------------------------------
+ /** TODO */
+ private java.io.File m_aFragmentsDir;
+
+ //-------------------------------------------
+ /** TODO */
+ private java.io.File m_aTempDir;
+
+ //-------------------------------------------
+ /** TODO */
+ private java.io.File m_aOutDir;
+
+ //-------------------------------------------
+ /** TODO */
+ private java.util.Vector m_lTypes;
+ private java.util.Vector m_lFilters;
+ private java.util.Vector m_lLoaders;
+ private java.util.Vector m_lHandlers;
+
+ //___________________________________________
+ // interface
+
+ //-------------------------------------------
+ /** initialize a new instance of this class and
+ * try to get all needed resources from the config module.
+ *
+ * @param aCfg
+ * provides access to all values of the global
+ * config file and to the command line.
+ *
+ * @param aLog
+ * can be used to print out log informations.
+ */
+ public Merger(ConfigHelper aCfg,
+ Logger aLog)
+ throws java.lang.Exception
+ {
+ m_aCfg = aCfg;
+ m_aLog = aLog;
+
+ m_aFragmentsDir = new java.io.File(m_aCfg.getString(PROP_FRAGMENTSDIR));
+ m_aTempDir = new java.io.File(m_aCfg.getString(PROP_TEMPDIR ));
+// m_aOutDir = new java.io.File(m_aCfg.getString(PROP_OUTDIR ));
+
+ java.lang.String sDelimiter = m_aCfg.getString(PROP_DELIMITER);
+ boolean bTrim = m_aCfg.getBoolean(PROP_TRIM);
+ boolean bDecode = m_aCfg.getBoolean(PROP_DECODE);
+
+ try
+ {
+ ConfigHelper aFcfg = new ConfigHelper(m_aCfg.getString(PROP_TCFG), null);
+ m_lTypes = aFcfg.getStringList(PROP_ITEMS, sDelimiter, bTrim, bDecode);
+ }
+ catch(java.util.NoSuchElementException ex1)
+ {
+ m_lTypes = new java.util.Vector();
+ //m_aLog.setWarning("Fragment list of types is missing. Parameter \"items\" seems to be invalid.");
+ }
+
+ try
+ {
+ ConfigHelper aFcfg = new ConfigHelper(m_aCfg.getString(PROP_FCFG), null);
+ m_lFilters = aFcfg.getStringList(PROP_ITEMS, sDelimiter, bTrim, bDecode);
+ }
+ catch(java.util.NoSuchElementException ex1)
+ {
+ m_lFilters = new java.util.Vector();
+ //m_aLog.setWarning("Fragment list of filters is missing. Parameter \"items\" seems to be invalid.");
+ }
+
+ try
+ {
+ ConfigHelper aFcfg = new ConfigHelper(m_aCfg.getString(PROP_LCFG), null);
+ m_lLoaders = aFcfg.getStringList(PROP_ITEMS, sDelimiter, bTrim, bDecode);
+ }
+ catch(java.util.NoSuchElementException ex1)
+ {
+ m_lLoaders = new java.util.Vector();
+ //m_aLog.setWarning("Fragment list of frame loader objects is missing. Parameter \"items\" seems to be invalid.");
+ }
+
+ try
+ {
+ ConfigHelper aFcfg = new ConfigHelper(m_aCfg.getString(PROP_CCFG), null);
+ m_lHandlers = aFcfg.getStringList(PROP_ITEMS, sDelimiter, bTrim, bDecode);
+ }
+ catch(java.util.NoSuchElementException ex1)
+ {
+ m_lHandlers = new java.util.Vector();
+ //m_aLog.setWarning("Fragment list of content handler objects is missing. Parameter \"items\" seems to be invalid.");
+ }
+ }
+
+ //-------------------------------------------
+ /** TODO */
+ public synchronized void merge()
+ throws java.lang.Exception
+ {
+ java.lang.StringBuffer sBuffer = new java.lang.StringBuffer(1000000);
+ java.lang.String sPackage = m_aCfg.getString(PROP_PKG);
+
+ m_aLog.setGlobalInfo("create package \""+sPackage+"\" ...");
+ m_aLog.setDetailedInfo("generate package header ... ");
+
+ sBuffer.append(
+ XMLHelper.generateHeader(
+ m_aCfg.getString (PROP_XMLVERSION ),
+ m_aCfg.getString (PROP_XMLENCODING ),
+ m_aCfg.getString (PROP_XMLPATH ),
+ m_aCfg.getString (PROP_XMLPACKAGE ),
+ m_aCfg.getBoolean(PROP_LANGUAGEPACK, false)));
+
+ // counts all transfered fragments
+ // Can be used later to decide, if a generated package file
+ // contains "nothing"!
+ int nItemCount = 0;
+
+ for (int i=0; i<4; ++i)
+ {
+ java.lang.String sSetName = null;
+ java.lang.String sSubDir = null;
+ java.util.Vector lFragments = null;
+
+ try
+ {
+ switch(i)
+ {
+ case 0: // types
+ {
+ m_aLog.setDetailedInfo("generate set for types ... ");
+ sSetName = m_aCfg.getString(PROP_SETNAME_TYPES);
+ sSubDir = m_aCfg.getString(PROP_SUBDIR_TYPES );
+ lFragments = m_lTypes;
+ }
+ break;
+
+ case 1: // filters
+ {
+ m_aLog.setDetailedInfo("generate set for filter ... ");
+ sSetName = m_aCfg.getString(PROP_SETNAME_FILTERS);
+ sSubDir = m_aCfg.getString(PROP_SUBDIR_FILTERS );
+ lFragments = m_lFilters;
+ }
+ break;
+
+ case 2: // loaders
+ {
+ m_aLog.setDetailedInfo("generate set for frame loader ... ");
+ sSetName = m_aCfg.getString(PROP_SETNAME_LOADERS);
+ sSubDir = m_aCfg.getString(PROP_SUBDIR_LOADERS );
+ lFragments = m_lLoaders;
+ }
+ break;
+
+ case 3: // handlers
+ {
+ m_aLog.setDetailedInfo("generate set for content handler ... ");
+ sSetName = m_aCfg.getString(PROP_SETNAME_HANDLERS);
+ sSubDir = m_aCfg.getString(PROP_SUBDIR_HANDLERS );
+ lFragments = m_lHandlers;
+ }
+ break;
+ }
+
+ nItemCount += lFragments.size();
+
+ getFragments(
+ new java.io.File(m_aFragmentsDir, sSubDir),
+ sSetName,
+ lFragments,
+ 1,
+ sBuffer);
+ }
+ catch(java.util.NoSuchElementException exIgnore)
+ { continue; }
+ }
+
+ m_aLog.setDetailedInfo("generate package footer ... ");
+ sBuffer.append(XMLHelper.generateFooter());
+
+ // Attention!
+ // If the package seem to be empty, it make no sense to generate a corresponding
+ // xml file. We should suppress writing of this file on disk completly ...
+ if (nItemCount < 1)
+ {
+ m_aLog.setWarning("Package is empty and will not result into a xml file on disk!? Please check configuration file.");
+ return;
+ }
+ m_aLog.setGlobalInfo("package contains "+nItemCount+" items");
+
+ java.io.File aPackage = new File(sPackage);
+ m_aLog.setGlobalInfo("write temp package \""+aPackage.getPath()); // TODO encoding must be readed from the configuration
+ FileHelper.writeEncodedBufferToFile(aPackage, "UTF-8", false, sBuffer); // check for success is done inside this method!
+ }
+
+ //-------------------------------------------
+ /** TODO */
+ private void getFragments(java.io.File aDir ,
+ java.lang.String sSetName ,
+ java.util.Vector lFragments ,
+ int nPrettyTabs,
+ java.lang.StringBuffer sBuffer )
+ throws java.lang.Exception
+ {
+ if (lFragments.size()<1)
+ {
+ m_aLog.setWarning("List of fragments is empty!? Will be ignored ...");
+ return;
+ }
+
+ java.util.Enumeration pFragments = lFragments.elements();
+ java.lang.String sExtXcu = m_aCfg.getString(PROP_EXTENSION_XCU);
+
+ for (int tabs=0; tabs<nPrettyTabs; ++tabs)
+ sBuffer.append("\t");
+ sBuffer.append("<node oor:name=\""+sSetName+"\">\n");
+ ++nPrettyTabs;
+
+ // special mode for generating language packs.
+ // In such case we must live with some missing fragment files.
+ // Reason behind; Not all filters are realy localized.
+ // But we dont use a different fragment list. We try to locate
+ // any fragment file in its language-pack version ...
+ boolean bHandleLanguagePacks = m_aCfg.getBoolean(PROP_LANGUAGEPACK, false);
+ boolean bDebug = m_aCfg.getBoolean(PROP_DEBUG , false);
+ java.lang.String sEncoding = "UTF-8";
+ if (bDebug)
+ sEncoding = "UTF-8Special";
+
+ while(pFragments.hasMoreElements())
+ {
+ java.lang.String sFragment = (java.lang.String)pFragments.nextElement();
+ java.io.File aFragment = new java.io.File(aDir, sFragment+"."+sExtXcu);
+
+ // handle simple files only and check for existence!
+ if (!aFragment.exists())
+ {
+ if (bHandleLanguagePacks)
+ {
+ m_aLog.setWarning("language fragment \""+aFragment.getPath()+"\" does not exist. Will be ignored.");
+ continue;
+ }
+ else
+ throw new java.io.IOException("fragment \""+aFragment.getPath()+"\" does not exists.");
+ }
+
+ if (!aFragment.isFile())
+ {
+ m_aLog.setWarning("fragment \""+aFragment.getPath()+"\" seem to be not a valid file.");
+ continue;
+ }
+
+ // copy file content of original fragment
+ // Note: A FileNotFoundException will be thrown automaticly by the
+ // used reader objects. Let it break this method too. Our calli is interested
+ // on such errors :-)
+ m_aLog.setDetailedInfo("merge fragment \""+aFragment.getPath()+"\" ...");
+ FileHelper.readEncodedBufferFromFile(aFragment, sEncoding, sBuffer);
+
+ sBuffer.append("\n");
+ }
+
+ --nPrettyTabs;
+ for (int tabs=0; tabs<nPrettyTabs; ++tabs)
+ sBuffer.append("\t");
+ sBuffer.append("</node>\n");
+ }
+}
diff --git a/transex3/source/filter/merge/makefile.mk b/transex3/source/filter/merge/makefile.mk
new file mode 100644
index 000000000000..bf768be851d8
--- /dev/null
+++ b/transex3/source/filter/merge/makefile.mk
@@ -0,0 +1,96 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.9.102.1 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ = ..$/..$/..
+TARGET = FCFGMerge
+PRJNAME = filter
+PACKAGE = com$/sun$/star$/filter$/config$/tools$/merge
+
+# --- Settings -----------------------------------------------------
+
+.INCLUDE: settings.mk
+
+#----- compile .java files -----------------------------------------
+#.IF "$(L10N_framework)"==""
+
+OWNCOPY = \
+ $(MISC)$/$(TARGET)_copied.done
+
+#JARFILES = \
+# ridl.jar \
+# unoil.jar \
+# jurt.jar \
+# juh.jar \
+# java_uno.jar
+
+CFGFILES = \
+ FCFGMerge.cfg
+
+JAVACLASSFILES = \
+ $(CLASSDIR)$/$(PACKAGE)$/Merger.class \
+ $(CLASSDIR)$/$(PACKAGE)$/FCFGMerge.class
+
+CUSTOMMANIFESTFILE = \
+ Manifest.mf
+
+MAXLINELENGTH = 100000
+
+#----- make a jar from compiled files ------------------------------
+
+JARCLASSDIRS = \
+ com$/sun$/star$/filter$/config$/tools$/utils \
+ com$/sun$/star$/filter$/config$/tools$/merge
+
+JARTARGET = $(TARGET).jar
+
+JARCOMPRESS = TRUE
+
+# --- targets -----------------------------------------------------
+
+.INCLUDE : target.mk
+
+.IF "$(SOLAR_JAVA)" != "" || "$(GUI)"=="OS2"
+ALLTAR : $(OWNCOPY)
+
+.IF "$(JARTARGETN)" != ""
+$(JARTARGETN) : $(OWNCOPY)
+.ENDIF
+
+$(OWNCOPY) : $(CFGFILES)
+ -$(MKDIRHIER) $(CLASSDIR)$/$(PACKAGE)
+ $(COPY) $? $(CLASSDIR)$/$(PACKAGE) && $(TOUCH) $@
+
+.ENDIF # "$(SOLAR_JAVA)" != ""
+
+#.ELSE
+#pseudo:
+
+#.ENDIF
diff --git a/transex3/source/filter/utils/AnalyzeStartupLog.java b/transex3/source/filter/utils/AnalyzeStartupLog.java
new file mode 100644
index 000000000000..498528850697
--- /dev/null
+++ b/transex3/source/filter/utils/AnalyzeStartupLog.java
@@ -0,0 +1,328 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: AnalyzeStartupLog.java,v $
+ * $Revision: 1.4 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+package com.sun.star.filter.config.tools.utils;
+
+//_______________________________________________
+// imports
+import java.util.*;
+import java.lang.*;
+
+//_______________________________________________
+// implementation
+public class AnalyzeStartupLog
+{
+ private class OperationTime
+ {
+ /** name the measured operation. */
+ public java.lang.String sOperation;
+
+ /** contains the time value, when this operation was started. */
+ public long nStartTime;
+
+ /** contains the time value, when this operation was finished. */
+ public long nEndTime;
+
+ /** text inside log file, which identifies the start time value. */
+ public java.lang.String sStartMsg;
+
+ /** text inside log file, which identifies the end time value. */
+ public java.lang.String sEndMsg;
+ }
+
+ //_________________________________
+ // main
+
+ public static void main(java.lang.String[] lCmdLine)
+ {
+ int nExit = 0;
+ try
+ {
+ // analyze command line
+ ConfigHelper aCmdLine = new ConfigHelper("", lCmdLine);
+ java.lang.String sLogDir = aCmdLine.getString("logdir" );
+ java.lang.String sDataFile = aCmdLine.getString("datafile");
+
+ if (sLogDir == null || sDataFile == null)
+ {
+ System.err.println("AnalyzeStartupLog lodir=<dir> datafile=<file>");
+ System.err.println("E.g.: AnalyzeStartupLog lodir=c:\\temp\\logs datafile=c:\\temp\\data.csv");
+ System.exit(--nExit);
+ }
+
+ // get list of all log files
+ boolean bRecursive = true;
+ java.util.Vector lLogs = FileHelper.getSystemFilesFromDir(new java.io.File(sLogDir), bRecursive);
+ if (lLogs == null || lLogs.isEmpty())
+ {
+ System.err.println("log dir is empty");
+ System.exit(--nExit);
+ }
+
+ // analyze it
+ java.lang.StringBuffer sOut = new java.lang.StringBuffer(1000);
+ sOut.append("log;t_cfg_start;t_cfg_end;t_fwk_start;t_fwk_end;t_sfx_start;t_sfx_end;t_types_start;t_types_end;t_filters_start;t_filters_end;");
+ sOut.append("t_filters_swriter_start;t_filters_swriter_end;t_filters_sweb_start;t_filters_sweb_end;t_filters_sglobal_start;t_filters_sglobal_end;t_filters_scalc_start;t_filters_scalc_end;t_filters_sdraw_start;t_filters_sdraw_end;t_filters_simpress_start;t_filters_simpress_end;t_filters_schart_start;t_filters_schart_end;t_filters_smath_start;t_filters_smath_end;");
+ sOut.append("t_others_start;t_others_end;d_cfg;d_fwk;d_sfx;d_types;d_filters;d_others;d_complete\n");
+
+ java.util.Enumeration aIt = lLogs.elements();
+ while (aIt.hasMoreElements())
+ {
+ java.io.File aLog = (java.io.File)aIt.nextElement();
+ java.io.FileReader aReader = new java.io.FileReader(aLog);
+ java.io.BufferedReader aBuffer = new java.io.BufferedReader(aReader);
+
+ long t_cfg_start = 0;
+ long t_cfg_end = 0;
+
+ long t_fwk_start = 0;
+ long t_fwk_end = 0;
+
+ long t_sfx_start = 0;
+ long t_sfx_end = 0;
+
+ long t_types_start = 0;
+ long t_types_end = 0;
+
+ long t_filters_start = 0;
+ long t_filters_end = 0;
+
+ long t_filters_swriter_start = 0;
+ long t_filters_swriter_end = 0;
+
+ long t_filters_sweb_start = 0;
+ long t_filters_sweb_end = 0;
+
+ long t_filters_sglobal_start = 0;
+ long t_filters_sglobal_end = 0;
+
+ long t_filters_scalc_start = 0;
+ long t_filters_scalc_end = 0;
+
+ long t_filters_sdraw_start = 0;
+ long t_filters_sdraw_end = 0;
+
+ long t_filters_simpress_start = 0;
+ long t_filters_simpress_end = 0;
+
+ long t_filters_schart_start = 0;
+ long t_filters_schart_end = 0;
+
+ long t_filters_smath_start = 0;
+ long t_filters_smath_end = 0;
+
+ long t_others_start = 0;
+ long t_others_end = 0;
+
+ while (true)
+ {
+ java.lang.String sLine = aBuffer.readLine();
+ if (sLine == null)
+ break;
+
+ if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : { creation ConfigItem [file=standard, version=6, mode=3]"))
+ t_cfg_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : } creation ConfigItem"))
+ t_cfg_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : { reading TypeDetection.xml"))
+ t_fwk_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("| framework (as96863) ::FilterCache::FilterCache : } reading TypeDetection.xml"))
+ t_fwk_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadTypes"))
+ t_types_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadTypes"))
+ t_types_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadFilters"))
+ t_filters_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadFilters"))
+ t_filters_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [swriter]"))
+ t_filters_swriter_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [swriter]"))
+ t_filters_swriter_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [sweb]"))
+ t_filters_sweb_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [sweb]"))
+ t_filters_sweb_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [sglobal]"))
+ t_filters_sglobal_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [sglobal]"))
+ t_filters_sglobal_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [scalc]"))
+ t_filters_scalc_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [scalc]"))
+ t_filters_scalc_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [sdraw]"))
+ t_filters_sdraw_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [sdraw]"))
+ t_filters_sdraw_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [simpress]"))
+ t_filters_simpress_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [simpress]"))
+ t_filters_simpress_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [schart]"))
+ t_filters_schart_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [schart]"))
+ t_filters_schart_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ reading FilterGroup [smath]"))
+ t_filters_smath_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} reading FilterGroup [smath]"))
+ t_filters_smath_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("{ framework (as96863) ::FilterCFGAccess::impl_loadDetectors"))
+ t_others_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} framework (as96863) ::FilterCFGAccess::impl_loadContentHandlers"))
+ t_others_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} framework (as96863) ::FilterCache::FilterCache"))
+ t_sfx_start = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ else
+ if (sLine.endsWith("} desktop (lo119109) OfficeWrapper::OfficeWrapper"))
+ t_sfx_end = new java.lang.Long(sLine.substring(0, 6)).longValue();
+ }
+
+ sOut.append(aLog.getName() );
+ sOut.append(";" );
+ sOut.append(t_cfg_start );
+ sOut.append(";" );
+ sOut.append(t_cfg_end );
+ sOut.append(";" );
+ sOut.append(t_fwk_start );
+ sOut.append(";" );
+ sOut.append(t_fwk_end );
+ sOut.append(";" );
+ sOut.append(t_sfx_start );
+ sOut.append(";" );
+ sOut.append(t_sfx_end );
+ sOut.append(";" );
+ sOut.append(t_types_start );
+ sOut.append(";" );
+ sOut.append(t_types_end );
+ sOut.append(";" );
+ sOut.append(t_filters_start );
+ sOut.append(";" );
+ sOut.append(t_filters_end );
+ sOut.append(";" );
+
+ sOut.append(t_filters_swriter_start );
+ sOut.append(";" );
+ sOut.append(t_filters_swriter_end );
+ sOut.append(";" );
+ sOut.append(t_filters_sweb_start );
+ sOut.append(";" );
+ sOut.append(t_filters_sweb_end );
+ sOut.append(";" );
+ sOut.append(t_filters_sglobal_start );
+ sOut.append(";" );
+ sOut.append(t_filters_sglobal_end );
+ sOut.append(";" );
+ sOut.append(t_filters_scalc_start );
+ sOut.append(";" );
+ sOut.append(t_filters_scalc_end );
+ sOut.append(";" );
+ sOut.append(t_filters_sdraw_start );
+ sOut.append(";" );
+ sOut.append(t_filters_sdraw_end );
+ sOut.append(";" );
+ sOut.append(t_filters_simpress_start );
+ sOut.append(";" );
+ sOut.append(t_filters_simpress_end );
+ sOut.append(";" );
+ sOut.append(t_filters_schart_start );
+ sOut.append(";" );
+ sOut.append(t_filters_schart_end );
+ sOut.append(";" );
+ sOut.append(t_filters_smath_start );
+ sOut.append(";" );
+ sOut.append(t_filters_smath_end );
+ sOut.append(";" );
+
+ sOut.append(t_others_start );
+ sOut.append(";" );
+ sOut.append(t_others_end );
+ sOut.append(";" );
+ sOut.append(t_cfg_end -t_cfg_start );
+ sOut.append(";" );
+ sOut.append(t_fwk_end -t_fwk_start );
+ sOut.append(";" );
+ sOut.append(t_sfx_end -t_sfx_start );
+ sOut.append(";" );
+ sOut.append(t_types_end -t_types_start );
+ sOut.append(";" );
+ sOut.append(t_filters_end-t_filters_start);
+ sOut.append(";" );
+ sOut.append(t_others_end -t_others_start );
+ sOut.append(";" );
+ sOut.append(t_others_end -t_cfg_start );
+ sOut.append("\n" );
+
+ aBuffer.close();
+ }
+
+ java.io.FileWriter aCSV = new java.io.FileWriter(sDataFile);
+ java.lang.String sData = sOut.toString();
+ aCSV.write(sData, 0, sData.length());
+ aCSV.flush();
+ aCSV.close();
+ }
+ catch(java.lang.Throwable exAny)
+ {
+ System.err.println(exAny.getMessage());
+ exAny.printStackTrace();
+ System.exit(--nExit);
+ }
+
+ System.exit(0);
+ }
+}
diff --git a/transex3/source/filter/utils/Cache.java b/transex3/source/filter/utils/Cache.java
new file mode 100644
index 000000000000..94c26008ed13
--- /dev/null
+++ b/transex3/source/filter/utils/Cache.java
@@ -0,0 +1,2449 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: Cache.java,v $
+ * $Revision: 1.7 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+package com.sun.star.filter.config.tools.utils;
+
+//_______________________________________________
+
+import java.lang.*;
+import java.util.*;
+import java.io.*;
+
+//_______________________________________________
+
+/**
+ * It implements a container for all possible entries which are part of the type
+ * and filter mechanism of an office - means all items of the configuration file
+ * "TypeDetection". How these entries will be readed or written can be switch
+ * in different modes. That would make it possible to edit an xml directly or
+ * to contact a running office instance.
+ *
+ *
+ */
+public class Cache
+{
+ //___________________________________________
+ // public const
+
+ /** identifies a file type item of this cache. */
+ public static final int E_TYPE = 0;
+
+ /** identifies a filter item of this cache. */
+ public static final int E_FILTER = 1;
+
+ /** identifies a detect service item of this cache. */
+ public static final int E_DETECTSERVICE = 2;
+
+ /** identifies a frame loader item of this cache. */
+ public static final int E_FRAMELOADER = 3;
+
+ /** identifies a content handler item of this cache. */
+ public static final int E_CONTENTHANDLER = 4;
+
+ /** indicates an unsupported xml format => error! */
+ public static final int FORMAT_UNSUPPORTED = -1;
+
+ /** identify the configuration format of an office 6.0.
+ * The own formated data string is used. */
+ public static final int FORMAT_60 = 0;
+
+ /** identify the configuration format of an office 6.y.
+ * Properties are realy xml tags again. */
+ public static final int FORMAT_6Y = 1;
+
+ /** identify the configuration format which is used inside
+ * this tooling project. */
+ public static final int FORMAT_INTERNAL = 2;
+
+ /** right value for a command line parameter to define a 6.0 version. */
+ public static final java.lang.String CMDVAL_FORMAT_60 = "6.0";
+
+ /** right value for a command line parameter to define a 6.Y version. */
+ public static final java.lang.String CMDVAL_FORMAT_6Y = "6.Y";
+
+ /** right value for a command line parameter to define an internal xml version! */
+ public static final java.lang.String CMDVAL_FORMAT_INTERNAL = "internal";
+
+ // general
+ public static final java.lang.String PROPNAME_DATA = "Data";
+ public static final java.lang.String PROPNAME_NAME = "Name";
+ public static final java.lang.String PROPNAME_UINAME = "UIName";
+ public static final java.lang.String PROPNAME_UINAMES = "UINames";
+
+ // type 6.0 ...
+ public static final java.lang.String PROPNAME_MEDIATYPE = "MediaType";
+ public static final java.lang.String PROPNAME_PREFERRED = "Preferred";
+ public static final java.lang.String PROPNAME_CLIPBOARDFORMAT = "ClipboardFormat";
+ public static final java.lang.String PROPNAME_DOCUMENTICONID = "DocumentIconID";
+ public static final java.lang.String PROPNAME_URLPATTERN = "URLPattern";
+ public static final java.lang.String PROPNAME_EXTENSIONS = "Extensions";
+ // ... +6.y
+ public static final java.lang.String PROPNAME_UIORDER = "UIOrder";
+ public static final java.lang.String PROPNAME_PREFERREDFILTER = "PreferredFilter";
+ public static final java.lang.String PROPNAME_DETECTSERVICE = "DetectService";
+ public static final java.lang.String PROPNAME_FRAMELOADER = "FrameLoader";
+ public static final java.lang.String PROPNAME_CONTENTHANDLER = "ContentHandler";
+
+ // filter
+ public static final java.lang.String PROPNAME_DOCUMENTSERVICE = "DocumentService";
+ public static final java.lang.String PROPNAME_FILEFORMATVERSION = "FileFormatVersion";
+ public static final java.lang.String PROPNAME_FILTERSERVICE = "FilterService";
+ public static final java.lang.String PROPNAME_FLAGS = "Flags";
+ public static final java.lang.String PROPNAME_ORDER = "Order"; // -6.y
+ public static final java.lang.String PROPNAME_TEMPLATENAME = "TemplateName";
+ public static final java.lang.String PROPNAME_TYPE = "Type";
+ public static final java.lang.String PROPNAME_UICOMPONENT = "UIComponent";
+ public static final java.lang.String PROPNAME_USERDATA = "UserData";
+
+ // frame loader / detect services / content handler
+ public static final java.lang.String PROPNAME_TYPES = "Types";
+
+ //___________________________________________
+ // private const
+
+ private static final java.lang.String FILTERSERVICE_NATIVEWARPPER = "com.sun.star.filter.NativeFilterWrapper";
+ private static final java.lang.String GENERIC_DETECTSERVICE = "com.sun.star.comp.office.FrameLoader";
+
+ /** its the name of the cfg set, which contains all types. */
+ private static final java.lang.String CFGNODE_TYPES = "Types";
+
+ /** its the name of the cfg set, which contains all filters. */
+ private static final java.lang.String CFGNODE_FILTERS = "Filters";
+
+ /** its the name of the cfg set, which contains all detect services. */
+ private static final java.lang.String CFGNODE_DETECTSERVICES = "DetectServices";
+
+ /** its the name of the cfg set, which contains all frame loaders. */
+ private static final java.lang.String CFGNODE_FRAMELOADERS = "FrameLoaders";
+
+ /** its the name of the cfg set, which contains all content handlers. */
+ private static final java.lang.String CFGNODE_CONTENTHANDLERS = "ContentHandlers";
+
+ // names for filter flags
+ private static final java.lang.String FLAGNAME_3RDPARTYFILTER = "3RDPARTYFILTER";
+ private static final java.lang.String FLAGNAME_ALIEN = "ALIEN";
+ private static final java.lang.String FLAGNAME_ASYNCHRON = "ASYNCHRON";
+ private static final java.lang.String FLAGNAME_BROWSERPREFERRED = "BROWSERPREFERRED";
+ private static final java.lang.String FLAGNAME_CONSULTSERVICE = "CONSULTSERVICE";
+ private static final java.lang.String FLAGNAME_DEFAULT = "DEFAULT";
+ private static final java.lang.String FLAGNAME_EXPORT = "EXPORT";
+ private static final java.lang.String FLAGNAME_IMPORT = "IMPORT";
+ private static final java.lang.String FLAGNAME_INTERNAL = "INTERNAL";
+ private static final java.lang.String FLAGNAME_NOTINCHOOSER = "NOTINCHOOSER";
+ private static final java.lang.String FLAGNAME_NOTINFILEDIALOG = "NOTINFILEDIALOG";
+ private static final java.lang.String FLAGNAME_NOTINSTALLED = "NOTINSTALLED";
+ private static final java.lang.String FLAGNAME_OWN = "OWN";
+ private static final java.lang.String FLAGNAME_PACKED = "PACKED";
+ private static final java.lang.String FLAGNAME_PREFERRED = "PREFERRED";
+ private static final java.lang.String FLAGNAME_READONLY = "READONLY";
+ private static final java.lang.String FLAGNAME_SILENTEXPORT = "SILENTEXPORT";
+ private static final java.lang.String FLAGNAME_TEMPLATE = "TEMPLATE";
+ private static final java.lang.String FLAGNAME_TEMPLATEPATH = "TEMPLATEPATH";
+ private static final java.lang.String FLAGNAME_USESOPTIONS = "USESOPTIONS";
+
+ private static final java.lang.String FLAGNAME_COMBINED = "COMBINED";
+ private static final java.lang.String FLAGNAME_SUPPORTSSELECTION= "SUPPORTSSELECTION";
+
+ // values for filter flags
+ private static final int FLAGVAL_3RDPARTYFILTER = 0x00080000; // 524288
+ private static final int FLAGVAL_ALIEN = 0x00000040; // 64
+ private static final int FLAGVAL_ALL = 0xffffffff; // 4294967295
+ private static final int FLAGVAL_ASYNCHRON = 0x00004000; // 16384
+ private static final int FLAGVAL_BROWSERPREFERRED = 0x00400000; // 4194304
+ private static final int FLAGVAL_CONSULTSERVICE = 0x00040000; // 262144
+ private static final int FLAGVAL_DEFAULT = 0x00000100; // 256
+ private static final int FLAGVAL_EXPORT = 0x00000002; // 2
+ private static final int FLAGVAL_IMPORT = 0x00000001; // 1
+ private static final int FLAGVAL_INTERNAL = 0x00000008; // 8
+ private static final int FLAGVAL_NOTINCHOOSER = 0x00002000; // 8192
+ private static final int FLAGVAL_NOTINFILEDIALOG = 0x00001000; // 4096
+ private static final int FLAGVAL_NOTINSTALLED = 0x00020000; // 131072
+ private static final int FLAGVAL_OWN = 0x00000020; // 32
+ private static final int FLAGVAL_PACKED = 0x00100000; // 1048576
+ private static final int FLAGVAL_PREFERRED = 0x10000000; // 268435456
+ private static final int FLAGVAL_READONLY = 0x00010000; // 65536
+ private static final int FLAGVAL_SILENTEXPORT = 0x00200000; // 2097152
+ private static final int FLAGVAL_TEMPLATE = 0x00000004; // 4
+ private static final int FLAGVAL_TEMPLATEPATH = 0x00000010; // 16
+ private static final int FLAGVAL_USESOPTIONS = 0x00000080; // 128
+
+ private static final int FLAGVAL_COMBINED = 0x00800000; // ...
+ private static final int FLAGVAL_SUPPORTSSELECTION = 0x00000400; // 1024
+
+ //___________________________________________
+ // member
+
+ /** list of all located types.
+ * Format: [string,HashMap]
+ */
+ private java.util.HashMap m_lTypes;
+
+ /** list of all located filters.
+ * Format: [string,HashMap]
+ */
+ private java.util.HashMap m_lFilters;
+
+ /** list of all located detect services.
+ * Format: [string,HashMap]
+ */
+ private java.util.HashMap m_lDetectServices;
+
+ /** list of all located frame loader.
+ * Format: [string,HashMap]
+ */
+ private java.util.HashMap m_lFrameLoaders;
+
+ /** list of all located content handler.
+ * Format: [string,HashMap]
+ */
+ private java.util.HashMap m_lContentHandlers;
+
+ /** contains all analyzed relations between
+ * filters and types. The key is an internal
+ * type name (can be used as reference into the
+ * list m_lTypes) and the value is a Vector of all
+ * internal filter names, which are registered for
+ * this type.
+ * Format: [string, Vector]
+ */
+ private java.util.HashMap m_lFilterToTypeRegistrations;
+
+ private int m_nDoubleRegisteredFilters;
+ private int m_nTypesForFilters;
+ private int m_nTypesForDetectServices;
+ private int m_nTypesForFrameLoaders;
+ private int m_nTypesForContentHandlers;
+
+ /** can be used to log different informations. */
+ private Logger m_aDebug;
+
+ //___________________________________________
+ // interface
+
+ /** standard ctor.
+ *
+ * Initialize an empty cache instance. You have to use
+ * on of the fromXXX() methods to fill it from different
+ * sources with content.
+ */
+ public Cache(Logger aDebug)
+ {
+ reset();
+ m_aDebug = aDebug;
+ }
+
+ //___________________________________________
+
+ /** free memory and set default values on all members.
+ */
+ public synchronized void reset()
+ {
+ m_lTypes = new java.util.HashMap();
+ m_lFilters = new java.util.HashMap();
+ m_lFrameLoaders = new java.util.HashMap();
+ m_lDetectServices = new java.util.HashMap();
+ m_lContentHandlers = new java.util.HashMap();
+ m_lFilterToTypeRegistrations = new java.util.HashMap();
+ m_aDebug = new Logger();
+ m_nDoubleRegisteredFilters = 0;
+ m_nTypesForFilters = 0;
+ m_nTypesForDetectServices = 0;
+ m_nTypesForFrameLoaders = 0;
+ m_nTypesForContentHandlers = 0;
+ }
+
+ //___________________________________________
+
+ /** converts a string representation of an xml format
+ * to its int value, which must be used at some interface
+ * methods of this cache.
+ *
+ * If the given string does not match to any well known format,
+ * the return value will be FORMAT_UNSUPPORTED. The calli have to
+ * check that. Otherwhise a called interface method at this cache
+ * instance will be rejected by an exception!
+ *
+ * @param sFormat
+ * the string representation
+ * Must be one of our public const values from type CMDVAL_FORMAT_xxx.
+ *
+ * @return [int]
+ * the int representation.
+ * Will be one of our public const values from type FORMAT_xxx.
+ */
+ public static int mapFormatString2Format(java.lang.String sFormat)
+ {
+ int nFormat = FORMAT_UNSUPPORTED;
+ if (sFormat.equalsIgnoreCase(CMDVAL_FORMAT_60))
+ nFormat = FORMAT_60;
+ else
+ if (sFormat.equalsIgnoreCase(CMDVAL_FORMAT_6Y))
+ nFormat = FORMAT_6Y;
+ else
+ if (sFormat.equalsIgnoreCase(CMDVAL_FORMAT_INTERNAL))
+ nFormat = FORMAT_INTERNAL;
+ return nFormat;
+ }
+
+ //___________________________________________
+
+ /** return some statistic values.
+ *
+ * Such values can be: - count of container items,
+ * - ...
+ *
+ * @return [java.lang.String]
+ * a formated string, which contains al statistic data.
+ */
+ public synchronized java.lang.String getStatistics()
+ {
+ java.lang.StringBuffer sBuffer = new java.lang.StringBuffer(256);
+
+ sBuffer.append("types = "+m_lTypes.size() +"\n");
+ sBuffer.append("filters = "+m_lFilters.size() +"\n");
+ sBuffer.append("detect services = "+m_lDetectServices.size() +"\n");
+ sBuffer.append("frame loaders = "+m_lFrameLoaders.size() +"\n");
+ sBuffer.append("content handler = "+m_lContentHandlers.size() +"\n");
+ sBuffer.append("double registered filters = "+m_nDoubleRegisteredFilters+"\n");
+ sBuffer.append("types used by filters = "+m_nTypesForFilters +"\n");
+ sBuffer.append("types used by detect services = "+m_nTypesForDetectServices +"\n");
+ sBuffer.append("types used by frame loaders = "+m_nTypesForFrameLoaders +"\n");
+ sBuffer.append("types used by content handlers = "+m_nTypesForContentHandlers+"\n");
+
+ return sBuffer.toString();
+ }
+
+ //___________________________________________
+
+ /** reset this cache and fill it with new values using the given XML file.
+ *
+ * @param aXML
+ * must be a system file of a suitable XML file, which
+ * include all neccessary type/filter items.
+ *
+ * @param nFormat
+ * identifies the format of the specified xml file,
+ * which must be interpreted.
+ */
+ public synchronized void fromXML(java.io.File aXML ,
+ int nFormat)
+ throws java.lang.Exception
+ {
+ // clear this cache
+ reset();
+
+ // parse it
+ javax.xml.parsers.DocumentBuilderFactory aFactory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
+ /* Attention:
+ * This call is important. It force right handling of entities during parsing and(!)
+ * writing. It let all possible signs for entities or it's quoted representations
+ * untouched. So this class don't change the original signs of the original file.
+ * Means:
+ * <ul>
+ * <li>(') => (')</li>
+ * <li>(") => (")</li>
+ * <li>(>) => (&gt;)</li>
+ * <li>(<) => (&lt;)</li>
+ * <li>(&gt;) => (&gt;)</li>
+ * <li>(&amp;) => (&amp;)</li>
+ * <li>...</li>
+ * </ul>
+ */
+
+ System.out.println("TODO: must be adapted to java 1.3 :-(");
+ System.exit(-1);
+//TODO_JAVA aFactory.setExpandEntityReferences(false);
+
+ javax.xml.parsers.DocumentBuilder aBuilder = aFactory.newDocumentBuilder();
+ org.w3c.dom.Document aDOM = aBuilder.parse(aXML);
+ org.w3c.dom.Element aRoot = aDOM.getDocumentElement();
+
+ // step over all sets
+ java.util.Vector lSetNodes = XMLHelper.extractChildNodesByTagName(aRoot, XMLHelper.XMLTAG_NODE);
+ java.util.Enumeration it1 = lSetNodes.elements();
+ while (it1.hasMoreElements())
+ {
+ // try to find out, which set should be read
+ org.w3c.dom.Node aSetNode = (org.w3c.dom.Node)it1.nextElement();
+ java.lang.String sSetName = XMLHelper.extractNodeAttribByName(aSetNode, XMLHelper.XMLATTRIB_OOR_NAME);
+ if (sSetName == null)
+ throw new java.io.IOException("unsupported format: could not extract set name on node ...\n"+aSetNode);
+
+ // map some generic interfaces to the right members!
+ int eType = -1 ;
+ java.util.HashMap rMap = null;
+
+ if (sSetName.equals(CFGNODE_TYPES))
+ {
+ eType = E_TYPE;
+ rMap = m_lTypes;
+ }
+ else
+ if (sSetName.equals(CFGNODE_FILTERS))
+ {
+ eType = E_FILTER;
+ rMap = m_lFilters;
+ }
+ else
+ if (sSetName.equals(CFGNODE_FRAMELOADERS))
+ {
+ eType = E_FRAMELOADER;
+ rMap = m_lFrameLoaders;
+ }
+ else
+ if (sSetName.equals(CFGNODE_DETECTSERVICES))
+ {
+ eType = E_DETECTSERVICE;
+ rMap = m_lDetectServices;
+ }
+ else
+ if (sSetName.equals(CFGNODE_CONTENTHANDLERS))
+ {
+ eType = E_CONTENTHANDLER;
+ rMap = m_lContentHandlers;
+ }
+ else
+ throw new java.io.IOException("unsupported format: unknown set name [\""+sSetName+"\"] detected on node ...\n"+aSetNode);
+
+ // load all set entries
+ java.util.Vector lChildNodes = XMLHelper.extractChildNodesByTagName(aSetNode, XMLHelper.XMLTAG_NODE);
+ java.util.Enumeration it2 = lChildNodes.elements();
+ while (it2.hasMoreElements())
+ {
+ org.w3c.dom.Node aChildNode = (org.w3c.dom.Node)it2.nextElement();
+ java.lang.String sChildName = XMLHelper.extractNodeAttribByName(aChildNode, XMLHelper.XMLATTRIB_OOR_NAME);
+ if (sChildName == null)
+ throw new java.io.IOException("unsupported format: could not extract child node name on node ...\n"+aChildNode);
+ java.util.HashMap aPropSet = null;
+
+ // Note: Our internal format is different from the source format!
+ java.util.HashMap aTempSet = XMLHelper.convertNodeToPropSet(aChildNode);
+ switch(eType)
+ {
+ case E_TYPE :
+ {
+ aPropSet = Cache.convertTypePropsToInternal(aTempSet, nFormat);
+ m_aDebug.setDetailedInfo("type [\""+sChildName+"\"] converted to internal format");
+ }
+ break;
+
+ case E_FILTER :
+ {
+ aPropSet = Cache.convertFilterPropsToInternal(aTempSet, nFormat);
+ m_aDebug.setDetailedInfo("filter [\""+sChildName+"\"] converted to internal format");
+ }
+ break;
+
+ case E_DETECTSERVICE :
+ {
+ aPropSet = Cache.convertDetectServicePropsToInternal(aTempSet, nFormat);
+ m_aDebug.setDetailedInfo("detect service [\""+sChildName+"\"] converted to internal format");
+ }
+ break;
+
+ case E_FRAMELOADER :
+ {
+ aPropSet = Cache.convertFrameLoaderPropsToInternal(aTempSet, nFormat);
+ m_aDebug.setDetailedInfo("frame loader [\""+sChildName+"\"] converted to internal format");
+ }
+ break;
+
+ case E_CONTENTHANDLER :
+ {
+ aPropSet = Cache.convertContentHandlerPropsToInternal(aTempSet, nFormat);
+ m_aDebug.setDetailedInfo("content handler [\""+sChildName+"\"] converted to internal format");
+ }
+ break;
+ }
+ m_aDebug.setDetailedInfo("props = "+aTempSet);
+ rMap.put(sChildName, aPropSet);
+ }
+ }
+ }
+
+ //___________________________________________
+
+ /** create some hml views of the current content of this cache.
+ *
+ * The given directory is used to create different html files
+ * there. Every of them show another aspect of this cache.
+ * E.g.: - all type/filter properties
+ * - relation ships between types/filters/loaders etc.
+ *
+ * @param aDirectory
+ * points to a system directory, which
+ * can be used completely(!) to generate
+ * the results there.
+ *
+ * @param nFormat
+ * specify in which context the cache items should be
+ * interpreted.
+ */
+ public synchronized void toHTML(java.io.File aDirectory,
+ int nFormat ,
+ java.lang.String sEncoding )
+ throws java.lang.Exception
+ {
+ if (nFormat != FORMAT_6Y)
+ throw new java.lang.Exception("HTML views are supported for the new 6.y format only yet.");
+
+ java.lang.StringBuffer sRelationView = new java.lang.StringBuffer(1000);
+ sRelationView.append("<html><header><title>Relation View</title></header><body>");
+ sRelationView.append("<table border=1>");
+ sRelationView.append("<tr><td><b>type</b></td><td><b>detect service</b></td><td><b>preferred filter</b></td><td><b>frame loader</b></td><td><b>content handler</b></td></tr>");
+
+ java.util.Iterator aIt = m_lTypes.keySet().iterator();
+ while (aIt.hasNext())
+ {
+ java.lang.String sType = (java.lang.String)aIt.next();
+ java.util.HashMap aType = (java.util.HashMap)m_lTypes.get(sType);
+
+ sRelationView.append("<tr>");
+ sRelationView.append("<td>"+sType+"</td>");
+
+ java.lang.String sVal = (java.lang.String)aType.get(PROPNAME_DETECTSERVICE);
+ if (sVal == null || sVal.length()<1)
+ sRelationView.append("<td> - </td>");
+ else
+ sRelationView.append("<td>"+sVal+"</td>");
+
+ sVal = (java.lang.String)aType.get(PROPNAME_PREFERREDFILTER);
+ if (sVal == null || sVal.length()<1)
+ sRelationView.append("<td> - </td>");
+ else
+ sRelationView.append("<td>"+sVal+"</td>");
+
+ sVal = (java.lang.String)aType.get(PROPNAME_FRAMELOADER);
+ if (sVal == null || sVal.length()<1)
+ sRelationView.append("<td> - </td>");
+ else
+ sRelationView.append("<td>"+sVal+"</td>");
+
+ sVal = (java.lang.String)aType.get(PROPNAME_CONTENTHANDLER);
+ if (sVal == null || sVal.length()<1)
+ sRelationView.append("<td> - </td>");
+ else
+ sRelationView.append("<td>"+sVal+"</td>");
+
+ sRelationView.append("</tr>");
+ }
+
+ sRelationView.append("</table>");
+ sRelationView.append("</body>");
+
+ FileHelper.writeEncodedBufferToFile(new java.io.File(aDirectory, "relation_view.html"), sEncoding, false, sRelationView);
+
+ java.util.HashMap lFilters2TypeRegistration = new java.util.HashMap();
+ aIt = m_lFilters.keySet().iterator();
+ while (aIt.hasNext())
+ {
+ java.lang.String sFilter = (java.lang.String)aIt.next();
+ java.util.HashMap aFilter = (java.util.HashMap)m_lFilters.get(sFilter);
+ java.lang.String sType = (java.lang.String)aFilter.get(PROPNAME_TYPE);
+
+ java.util.Vector lFilters = (java.util.Vector)lFilters2TypeRegistration.get(sType);
+ if (lFilters == null)
+ lFilters = new java.util.Vector();
+ lFilters.add(sFilter);
+ lFilters2TypeRegistration.put(sType, lFilters);
+ }
+
+ java.lang.StringBuffer sType2FiltersView = new java.lang.StringBuffer(1000);
+ sType2FiltersView.append("<html><header><title>Type2Filters View</title></header><body>");
+ sType2FiltersView.append("<table border=1>");
+ sType2FiltersView.append("<tr><td><b>type</b></td><td><b>filters</b></td></tr>");
+
+ aIt = lFilters2TypeRegistration.keySet().iterator();
+ while (aIt.hasNext())
+ {
+ java.lang.String sType = (java.lang.String)aIt.next();
+ java.util.Vector lFilters = (java.util.Vector)lFilters2TypeRegistration.get(sType);
+
+ sType2FiltersView.append("<tr><td>"+sType+"</td><td>");
+ java.util.Enumeration aEn = lFilters.elements();
+ while(aEn.hasMoreElements())
+ sType2FiltersView.append(aEn.nextElement()+"<br>");
+ sType2FiltersView.append("</td></tr>");
+ }
+
+ sType2FiltersView.append("</table>");
+ sType2FiltersView.append("</body>");
+
+ FileHelper.writeEncodedBufferToFile(new java.io.File(aDirectory, "type2filters_view.html"), sEncoding, false, sType2FiltersView);
+ }
+
+ //___________________________________________
+
+ /** converts all items of this cache to its xml representation
+ * and write it to the given file.
+ *
+ * @param aXML
+ * the target file for output.
+ *
+ * @param nFormat
+ * the requested xml format.
+ * see const values FORMAT_xxx too.
+ *
+ * @param sEncoding
+ * specify the file encoding for the generated xml file.
+ *
+ * @throws [java.lang.Exception]
+ * if something fail during convertion.
+ */
+ public synchronized void toXML(java.io.File aXML ,
+ int nFormat ,
+ java.lang.String sEncoding)
+ throws java.lang.Exception
+ {
+ java.lang.StringBuffer sXML = new java.lang.StringBuffer(500000);
+
+ for (int i=0; i<5; ++i)
+ {
+ // define right sub container
+ java.lang.String sSetName = null;
+ java.util.HashMap rMap = null;
+ int eType = -1;
+
+ switch(i)
+ {
+ case 0 :
+ {
+ sSetName = CFGNODE_TYPES;
+ rMap = m_lTypes;
+ eType = E_TYPE;
+ }
+ break;
+
+ case 1 :
+ {
+ sSetName = CFGNODE_FILTERS;
+ rMap = m_lFilters;
+ eType = E_FILTER;
+ }
+ break;
+
+ case 2 :
+ {
+ sSetName = CFGNODE_DETECTSERVICES;
+ rMap = m_lDetectServices;
+ eType = E_DETECTSERVICE;
+ }
+ break;
+
+ case 3 :
+ {
+ sSetName = CFGNODE_FRAMELOADERS;
+ rMap = m_lFrameLoaders;
+ eType = E_FRAMELOADER;
+ }
+ break;
+
+ case 4 :
+ {
+ sSetName = CFGNODE_CONTENTHANDLERS;
+ rMap = m_lContentHandlers;
+ eType = E_CONTENTHANDLER;
+ }
+ break;
+ }
+
+ // generate set
+ sXML.append("<node oor:name=\""+sSetName+"\" oor:op=\"replace\">\n");
+ java.util.Iterator it = rMap.keySet().iterator();
+ while(it.hasNext())
+ {
+ java.lang.String sItem = (java.lang.String)it.next();
+ sXML.append("<node oor:name=\""+sItem+"\" oor:op=\"replace\">\n");
+ sXML.append(getItemAsXML(eType, sItem, nFormat));
+ sXML.append("</node>\n");
+ }
+ sXML.append("</node>\n");
+ }
+
+ java.io.FileOutputStream aStream = new java.io.FileOutputStream(aXML.getAbsolutePath(), false);
+ java.io.OutputStreamWriter aWriter = new java.io.OutputStreamWriter(aStream, sEncoding);
+ java.lang.String sOut = sXML.toString();
+ aWriter.write(sOut, 0, sOut.length());
+ aWriter.flush();
+ aWriter.close();
+ }
+
+ //___________________________________________
+
+ /** converts a type property set from internal format
+ * to an external one.
+ *
+ * @param aMap
+ * points to the item, which should be converted.
+ *
+ * @param nFormat
+ * specify the requested output format.
+ *
+ * @return [java.util.HashMap]
+ * contains the properties in the requested format.
+ *
+ * @throws [java.lang.Exception
+ * if something fail during convertion.
+ */
+ private static java.util.HashMap convertTypePropsToExternal(java.util.HashMap aMap ,
+ int nFormat)
+ throws java.lang.Exception
+ {
+ java.util.HashMap aResultMap = new java.util.HashMap();
+ // copy Name property ... if it exists!
+ if (aMap.containsKey(PROPNAME_NAME))
+ aResultMap.put(PROPNAME_NAME, aMap.get(PROPNAME_NAME));
+ switch(nFormat)
+ {
+ //-----------------------------------
+ case FORMAT_60 :
+ {
+ // copy UIName property unchanged
+ aResultMap.put(PROPNAME_UINAME, aMap.get(PROPNAME_UINAME));
+
+ // ignore properties "UIOrder", "PreferredFilter", "DetectService"
+ // They are not supported for 6.0 types.
+
+ // pack all other properties to one "Data" string value
+ java.lang.StringBuffer sData = new java.lang.StringBuffer(256);
+
+ sData.append(aMap.get(PROPNAME_PREFERRED));
+ sData.append(",");
+ sData.append(aMap.get(PROPNAME_MEDIATYPE));
+ sData.append(",");
+ sData.append(aMap.get(PROPNAME_CLIPBOARDFORMAT));
+ sDat