office-gobmx/basic/source/uno/scriptcont.cxx
Thorsten Behrens e65c0fe553 Merge commit 'ooo/DEV300_m101' into integration/dev300_m101
Conflicts:
	avmedia/inc/avmedia/mediaitem.hxx
	avmedia/prj/build.lst
	avmedia/source/framework/mediaitem.cxx
	avmedia/source/gstreamer/gstcommon.hxx
	avmedia/source/gstreamer/gstframegrabber.cxx
	avmedia/source/gstreamer/gstframegrabber.hxx
	avmedia/source/gstreamer/gstmanager.cxx
	avmedia/source/gstreamer/gstmanager.hxx
	avmedia/source/gstreamer/gstplayer.cxx
	avmedia/source/gstreamer/gstplayer.hxx
	avmedia/source/gstreamer/gstuno.cxx
	avmedia/source/gstreamer/gstwindow.cxx
	avmedia/source/gstreamer/gstwindow.hxx
	avmedia/source/gstreamer/makefile.mk
	avmedia/source/quicktime/quicktimeuno.cxx
	avmedia/source/viewer/mediawindow.cxx
	avmedia/source/viewer/mediawindow_impl.cxx
	avmedia/source/viewer/mediawindow_impl.hxx
	avmedia/source/viewer/mediawindowbase_impl.cxx
	avmedia/source/win/winuno.cxx
	basic/inc/basic/basmgr.hxx
	basic/inc/basic/mybasic.hxx
	basic/inc/basic/process.hxx
	basic/inc/basic/sbmeth.hxx
	basic/inc/basic/sbmod.hxx
	basic/inc/basic/sbxdef.hxx
	basic/inc/basic/sbxvar.hxx
	basic/source/app/app.cxx
	basic/source/app/app.hxx
	basic/source/app/appbased.cxx
	basic/source/app/appedit.cxx
	basic/source/app/appwin.cxx
	basic/source/app/appwin.hxx
	basic/source/app/brkpnts.cxx
	basic/source/app/brkpnts.hxx
	basic/source/app/dialogs.cxx
	basic/source/app/dialogs.hxx
	basic/source/app/msgedit.cxx
	basic/source/app/mybasic.cxx
	basic/source/app/process.cxx
	basic/source/app/processw.hxx
	basic/source/app/textedit.cxx
	basic/source/basmgr/basicmanagerrepository.cxx
	basic/source/basmgr/basmgr.cxx
	basic/source/classes/disas.cxx
	basic/source/classes/eventatt.cxx
	basic/source/classes/image.cxx
	basic/source/classes/sb.cxx
	basic/source/classes/sbunoobj.cxx
	basic/source/classes/sbxmod.cxx
	basic/source/comp/codegen.cxx
	basic/source/comp/dim.cxx
	basic/source/comp/exprgen.cxx
	basic/source/comp/exprnode.cxx
	basic/source/comp/exprtree.cxx
	basic/source/comp/sbcomp.cxx
	basic/source/inc/expr.hxx
	basic/source/inc/object.hxx
	basic/source/inc/sbunoobj.hxx
	basic/source/runtime/dllmgr-x86.cxx
	basic/source/runtime/iosys.cxx
	basic/source/runtime/makefile.mk
	basic/source/runtime/methods.cxx
	basic/source/runtime/methods1.cxx
	basic/source/runtime/runtime.cxx
	basic/source/runtime/stdobj.cxx
	basic/source/runtime/step0.cxx
	basic/source/runtime/step1.cxx
	basic/source/runtime/step2.cxx
	basic/source/sbx/sbxarray.cxx
	basic/source/sbx/sbxbase.cxx
	basic/source/sbx/sbxbool.cxx
	basic/source/sbx/sbxbyte.cxx
	basic/source/sbx/sbxcoll.cxx
	basic/source/sbx/sbxconv.hxx
	basic/source/sbx/sbxcurr.cxx
	basic/source/sbx/sbxexec.cxx
	basic/source/sbx/sbxint.cxx
	basic/source/sbx/sbxobj.cxx
	basic/source/sbx/sbxscan.cxx
	basic/source/sbx/sbxstr.cxx
	basic/source/sbx/sbxvals.cxx
	basic/source/sbx/sbxvalue.cxx
	basic/source/sbx/sbxvar.cxx
	basic/workben/mgrtest.cxx
	configmgr/prj/build.lst
	configmgr/source/access.cxx
	configmgr/source/configurationprovider.cxx
	configmgr/source/defaultprovider.cxx
	configmgr/source/pad.cxx
	configmgr/source/services.cxx
	configmgr/source/update.cxx
	configmgr/source/xmlreader.cxx
	configmgr/source/xmlreader.hxx
	connectivity/prj/build.lst
	connectivity/qa/complex/connectivity/TestCase.java
	connectivity/source/cpool/Zregistration.cxx
	connectivity/source/drivers/adabas/Bservices.cxx
	connectivity/source/drivers/ado/Aservices.cxx
	connectivity/source/drivers/calc/Cservices.cxx
	connectivity/source/drivers/calc/makefile.mk
	connectivity/source/drivers/dbase/DIndex.cxx
	connectivity/source/drivers/dbase/DIndexIter.cxx
	connectivity/source/drivers/dbase/DNoException.cxx
	connectivity/source/drivers/dbase/DTable.cxx
	connectivity/source/drivers/dbase/Dservices.cxx
	connectivity/source/drivers/dbase/dindexnode.cxx
	connectivity/source/drivers/evoab/LNoException.cxx
	connectivity/source/drivers/evoab/LServices.cxx
	connectivity/source/drivers/evoab2/NServices.cxx
	connectivity/source/drivers/file/FNoException.cxx
	connectivity/source/drivers/file/FPreparedStatement.cxx
	connectivity/source/drivers/file/FResultSet.cxx
	connectivity/source/drivers/file/FStatement.cxx
	connectivity/source/drivers/file/quotedstring.cxx
	connectivity/source/drivers/flat/ETable.cxx
	connectivity/source/drivers/flat/Eservices.cxx
	connectivity/source/drivers/hsqldb/Hservices.cxx
	connectivity/source/drivers/jdbc/jservices.cxx
	connectivity/source/drivers/kab/KServices.cxx
	connectivity/source/drivers/macab/MacabServices.cxx
	connectivity/source/drivers/mozab/MResultSet.cxx
	connectivity/source/drivers/mozab/bootstrap/MNSFolders.cxx
	connectivity/source/drivers/mozab/bootstrap/MNSProfileDiscover.cxx
	connectivity/source/drivers/mysql/Yservices.cxx
	connectivity/source/drivers/odbc/OFunctions.cxx
	connectivity/source/drivers/odbc/oservices.cxx
	connectivity/source/inc/dbase/DIndexPage.hxx
	connectivity/source/inc/file/FTable.hxx
	connectivity/source/manager/mregistration.cxx
	connectivity/source/parse/PColumn.cxx
	desktop/prj/build.lst
	desktop/qa/deployment_misc/test_dp_version.cxx
	desktop/source/app/app.cxx
	desktop/source/app/appfirststart.cxx
	desktop/source/app/cmdlineargs.cxx
	desktop/source/app/cmdlineargs.hxx
	desktop/source/app/sofficemain.cxx
	desktop/source/deployment/gui/dp_gui.hrc
	desktop/source/deployment/gui/dp_gui_dialog2.cxx
	desktop/source/deployment/gui/dp_gui_dialog2.hxx
	desktop/source/deployment/gui/dp_gui_updatedialog.cxx
	desktop/source/deployment/gui/dp_gui_updatedialog.hxx
	desktop/source/deployment/manager/dp_extensionmanager.cxx
	desktop/source/deployment/manager/dp_extensionmanager.hxx
	desktop/source/deployment/misc/dp_misc.src
	desktop/source/deployment/registry/component/dp_component.cxx
	desktop/source/deployment/registry/configuration/dp_configuration.cxx
	desktop/source/deployment/registry/dp_backend.cxx
	desktop/source/deployment/registry/help/dp_help.cxx
	desktop/source/deployment/registry/script/dp_script.cxx
	desktop/source/migration/pages.cxx
	desktop/source/migration/pages.hxx
	desktop/source/migration/wizard.cxx
	desktop/source/migration/wizard.hrc
	desktop/source/migration/wizard.hxx
	desktop/source/migration/wizard.src
	desktop/source/pkgchk/unopkg/unopkg_shared.h
	desktop/source/so_comp/services.cxx
	desktop/source/splash/makefile.mk
	desktop/source/splash/services_spl.cxx
	desktop/source/splash/splash.cxx
	drawinglayer/source/processor2d/vclmetafileprocessor2d.cxx
	editeng/inc/editeng/adjitem.hxx
	editeng/inc/editeng/bolnitem.hxx
	editeng/inc/editeng/borderline.hxx
	editeng/inc/editeng/boxitem.hxx
	editeng/inc/editeng/brkitem.hxx
	editeng/inc/editeng/brshitem.hxx
	editeng/inc/editeng/bulitem.hxx
	editeng/inc/editeng/charreliefitem.hxx
	editeng/inc/editeng/charrotateitem.hxx
	editeng/inc/editeng/charscaleitem.hxx
	editeng/inc/editeng/cmapitem.hxx
	editeng/inc/editeng/colritem.hxx
	editeng/inc/editeng/crsditem.hxx
	editeng/inc/editeng/editdata.hxx
	editeng/inc/editeng/editeng.hxx
	editeng/inc/editeng/editobj.hxx
	editeng/inc/editeng/editstat.hxx
	editeng/inc/editeng/editview.hxx
	editeng/inc/editeng/emphitem.hxx
	editeng/inc/editeng/escpitem.hxx
	editeng/inc/editeng/fhgtitem.hxx
	editeng/inc/editeng/flstitem.hxx
	editeng/inc/editeng/fontitem.hxx
	editeng/inc/editeng/frmdiritem.hxx
	editeng/inc/editeng/fwdtitem.hxx
	editeng/inc/editeng/hyznitem.hxx
	editeng/inc/editeng/kernitem.hxx
	editeng/inc/editeng/langitem.hxx
	editeng/inc/editeng/lrspitem.hxx
	editeng/inc/editeng/lspcitem.hxx
	editeng/inc/editeng/numitem.hxx
	editeng/inc/editeng/outliner.hxx
	editeng/inc/editeng/paravertalignitem.hxx
	editeng/inc/editeng/pmdlitem.hxx
	editeng/inc/editeng/postitem.hxx
	editeng/inc/editeng/protitem.hxx
	editeng/inc/editeng/shaditem.hxx
	editeng/inc/editeng/sizeitem.hxx
	editeng/inc/editeng/svxacorr.hxx
	editeng/inc/editeng/svxfont.hxx
	editeng/inc/editeng/svxrtf.hxx
	editeng/inc/editeng/swafopt.hxx
	editeng/inc/editeng/tstpitem.hxx
	editeng/inc/editeng/twolinesitem.hxx
	editeng/inc/editeng/txtrange.hxx
	editeng/inc/editeng/udlnitem.hxx
	editeng/inc/editeng/ulspitem.hxx
	editeng/inc/editeng/wghtitem.hxx
	editeng/inc/editeng/writingmodeitem.hxx
	editeng/inc/editeng/xmlcnitm.hxx
	editeng/inc/helpid.hrc
	editeng/inc/pch/precompiled_editeng.hxx
	editeng/source/editeng/editdbg.cxx
	editeng/source/editeng/editdoc.cxx
	editeng/source/editeng/editdoc.hxx
	editeng/source/editeng/editdoc2.cxx
	editeng/source/editeng/editeng.cxx
	editeng/source/editeng/editobj.cxx
	editeng/source/editeng/editobj2.hxx
	editeng/source/editeng/editsel.cxx
	editeng/source/editeng/editundo.cxx
	editeng/source/editeng/editundo.hxx
	editeng/source/editeng/editview.cxx
	editeng/source/editeng/edtspell.hxx
	editeng/source/editeng/eehtml.cxx
	editeng/source/editeng/eehtml.hxx
	editeng/source/editeng/eeobj.cxx
	editeng/source/editeng/eerdll.cxx
	editeng/source/editeng/eertfpar.cxx
	editeng/source/editeng/impedit.cxx
	editeng/source/editeng/impedit.hxx
	editeng/source/editeng/impedit2.cxx
	editeng/source/editeng/impedit3.cxx
	editeng/source/editeng/impedit4.cxx
	editeng/source/editeng/impedit5.cxx
	editeng/source/editeng/makefile.mk
	editeng/source/items/bulitem.cxx
	editeng/source/items/charhiddenitem.cxx
	editeng/source/items/flditem.cxx
	editeng/source/items/frmitems.cxx
	editeng/source/items/makefile.mk
	editeng/source/items/numitem.cxx
	editeng/source/items/paraitem.cxx
	editeng/source/items/svxfont.cxx
	editeng/source/items/textitem.cxx
	editeng/source/items/writingmodeitem.cxx
	editeng/source/items/xmlcnitm.cxx
	editeng/source/misc/SvXMLAutoCorrectImport.cxx
	editeng/source/misc/svxacorr.cxx
	editeng/source/misc/txtrange.cxx
	editeng/source/misc/unolingu.cxx
	editeng/source/outliner/outleeng.cxx
	editeng/source/outliner/outliner.cxx
	editeng/source/outliner/outlundo.hxx
	editeng/source/outliner/outlvw.cxx
	editeng/source/outliner/paralist.cxx
	editeng/source/outliner/paralist.hxx
	editeng/source/rtf/rtfgrf.cxx
	editeng/source/rtf/rtfitem.cxx
	editeng/source/rtf/svxrtf.cxx
	editeng/source/uno/unoipset.cxx
	editeng/util/makefile.mk
	embeddedobj/prj/build.lst
	embeddedobj/source/commonembedding/miscobj.cxx
	eventattacher/prj/build.lst
	fileaccess/source/FileAccess.cxx
	formula/inc/formula/FormulaCompiler.hxx
	formula/inc/formula/token.hxx
	formula/inc/formula/tokenarray.hxx
	formula/source/core/api/FormulaCompiler.cxx
	formula/source/core/api/token.cxx
	formula/source/ui/dlg/FormulaHelper.cxx
	formula/source/ui/dlg/formula.cxx
	formula/source/ui/dlg/parawin.cxx
	formula/source/ui/dlg/structpg.cxx
	fpicker/prj/d.lst
	fpicker/source/aqua/FPentry.cxx
	fpicker/source/office/OfficeControlAccess.cxx
	fpicker/source/office/iodlg.cxx
	fpicker/source/office/iodlg.hxx
	fpicker/source/office/iodlg.src
	fpicker/source/office/iodlgimp.cxx
	fpicker/source/unx/gnome/FPentry.cxx
	fpicker/source/unx/gnome/SalGtkFilePicker.cxx
	fpicker/source/unx/gnome/SalGtkPicker.cxx
	fpicker/source/unx/kde4/KDE4FPEntry.cxx
	fpicker/source/win32/filepicker/FPentry.cxx
	framework/AllLangResTarget_fwe.mk
	framework/inc/dispatch/interaction.hxx
	framework/inc/framework/addonmenu.hxx
	framework/inc/framework/addonsoptions.hxx
	framework/inc/framework/bmkmenu.hxx
	framework/inc/framework/imageproducer.hxx
	framework/inc/framework/sfxhelperfunctions.hxx
	framework/inc/framework/statusbarconfiguration.hxx
	framework/inc/framework/titlehelper.hxx
	framework/inc/framework/toolboxconfiguration.hxx
	framework/inc/threadhelp/lockhelper.hxx
	framework/inc/xml/eventsdocumenthandler.hxx
	framework/inc/xml/statusbardocumenthandler.hxx
	framework/inc/xml/toolboxconfiguration.hxx
	framework/inc/xml/toolboxconfigurationdefines.hxx
	framework/inc/xml/toolboxdocumenthandler.hxx
	framework/prj/build.lst
	framework/qa/complex/ModuleManager/makefile.mk
	framework/qa/complex/accelerators/makefile.mk
	framework/qa/complex/framework/recovery/makefile.mk
	framework/qa/complex/imageManager/_XInitialization.java
	framework/source/classes/menumanager.cxx
	framework/source/dispatch/interaction.cxx
	framework/source/fwe/classes/bmkmenu.cxx
	framework/source/fwe/helper/actiontriggerhelper.cxx
	framework/source/fwe/helper/imageproducer.cxx
	framework/source/fwe/xml/menuconfiguration.cxx
	framework/source/fwe/xml/toolboxdocumenthandler.cxx
	framework/source/helper/uiconfigelementwrapperbase.cxx
	framework/source/helper/uielementwrapperbase.cxx
	framework/source/inc/pattern/window.hxx
	framework/source/jobs/jobdata.cxx
	framework/source/layoutmanager/layoutmanager.cxx
	framework/source/layoutmanager/panel.hxx
	framework/source/loadenv/loadenv.cxx
	framework/source/register/registerservices.cxx
	framework/source/services/menudocumenthandler.cxx
	framework/source/uiconfiguration/moduleuiconfigurationmanager.cxx
	framework/source/uiconfiguration/uiconfigurationmanager.cxx
	framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx
	framework/source/uielement/addonstoolbarmanager.cxx
	framework/source/uielement/controlmenucontroller.cxx
	framework/source/uielement/fontsizemenucontroller.cxx
	framework/source/uielement/imagebuttontoolbarcontroller.cxx
	framework/source/uielement/macrosmenucontroller.cxx
	framework/source/uielement/menubarmanager.cxx
	framework/source/uielement/newmenucontroller.cxx
	framework/source/uielement/togglebuttontoolbarcontroller.cxx
	framework/source/uielement/toolbarmanager.cxx
	framework/source/uielement/toolbarsmenucontroller.cxx
	framework/test/makefile.mk
	framework/test/threadtest/makefile.mk
	framework/test/typecfg/makefile.mk
	framework/util/guiapps/makefile.mk
	framework/util/makefile.mk
	idl/inc/bastype.hxx
	idl/inc/hash.hxx
	idl/inc/lex.hxx
	idl/inc/module.hxx
	idl/inc/object.hxx
	idl/inc/slot.hxx
	idl/inc/types.hxx
	idl/source/cmptools/hash.cxx
	idl/source/cmptools/lex.cxx
	idl/source/objects/basobj.cxx
	idl/source/objects/bastype.cxx
	idl/source/objects/module.cxx
	idl/source/objects/object.cxx
	idl/source/objects/slot.cxx
	idl/source/objects/types.cxx
	idl/source/prj/command.cxx
	idl/source/prj/database.cxx
	idl/source/prj/globals.cxx
	idl/source/prj/svidl.cxx
	linguistic/inc/linguistic/misc.hxx
	linguistic/prj/build.lst
	linguistic/source/convdic.cxx
	linguistic/source/convdiclist.cxx
	linguistic/source/dicimp.cxx
	linguistic/source/dlistimp.cxx
	linguistic/source/gciterator.cxx
	linguistic/source/iprcache.cxx
	linguistic/source/lngopt.cxx
	linguistic/source/lngprophelp.cxx
	linguistic/source/lngsvcmgr.cxx
	linguistic/source/lngsvcmgr.hxx
	linguistic/source/misc2.cxx
	linguistic/workben/sprophelp.cxx
	officecfg/registry/data/org/openoffice/VCL.xcu
	officecfg/util/makefile.mk
	oovbaapi/ooo/vba/XApplicationBase.idl
	oovbaapi/ooo/vba/XVBAAppService.idl
	oovbaapi/ooo/vba/XVBADocService.idl
	oovbaapi/ooo/vba/excel/XApplication.idl
	oovbaapi/ooo/vba/excel/XRange.idl
	oovbaapi/ooo/vba/excel/XWorkbook.idl
	oovbaapi/ooo/vba/excel/XWorksheet.idl
	oovbaapi/ooo/vba/word/XApplication.idl
	oovbaapi/ooo/vba/word/XGlobals.idl
	oovbaapi/ooo/vba/word/XTableOfContents.idl
	readlicense_oo/prj/build.lst
	scripting/prj/build.lst
	scripting/prj/d.lst
	scripting/source/basprov/basprov.cxx
	scripting/source/basprov/basscript.cxx
	scripting/source/basprov/basscript.hxx
	scripting/source/dlgprov/dlgprov.cxx
	scripting/source/inc/util/util.hxx
	scripting/source/protocolhandler/scripthandler.cxx
	scripting/source/provider/ProviderCache.cxx
	scripting/source/pyprov/makefile.mk
	scripting/source/runtimemgr/ScriptNameResolverImpl.cxx
	scripting/source/runtimemgr/ScriptRuntimeManager.cxx
	scripting/source/runtimemgr/StorageBridge.cxx
	scripting/source/storage/ScriptMetadataImporter.cxx
	scripting/source/storage/ScriptSecurityManager.cxx
	scripting/source/storage/ScriptStorage.cxx
	scripting/source/storage/ScriptStorageManager.cxx
	sfx2/inc/about.hxx
	sfx2/inc/brokenpackageint.hxx
	sfx2/inc/docvor.hxx
	sfx2/inc/pch/precompiled_sfx2.hxx
	sfx2/inc/sfx2/app.hxx
	sfx2/inc/sfx2/basmgr.hxx
	sfx2/inc/sfx2/bindings.hxx
	sfx2/inc/sfx2/childwin.hxx
	sfx2/inc/sfx2/ctrlitem.hxx
	sfx2/inc/sfx2/dinfdlg.hxx
	sfx2/inc/sfx2/dispatch.hxx
	sfx2/inc/sfx2/docfilt.hxx
	sfx2/inc/sfx2/evntconf.hxx
	sfx2/inc/sfx2/fcontnr.hxx
	sfx2/inc/sfx2/frame.hxx
	sfx2/inc/sfx2/imagemgr.hxx
	sfx2/inc/sfx2/imgmgr.hxx
	sfx2/inc/sfx2/linksrc.hxx
	sfx2/inc/sfx2/macrconf.hxx
	sfx2/inc/sfx2/macropg.hxx
	sfx2/inc/sfx2/mnuitem.hxx
	sfx2/inc/sfx2/mnumgr.hxx
	sfx2/inc/sfx2/module.hxx
	sfx2/inc/sfx2/msg.hxx
	sfx2/inc/sfx2/objsh.hxx
	sfx2/inc/sfx2/passwd.hxx
	sfx2/inc/sfx2/prnmon.hxx
	sfx2/inc/sfx2/request.hxx
	sfx2/inc/sfx2/sfx.hrc
	sfx2/inc/sfx2/sfxbasemodel.hxx
	sfx2/inc/sfx2/sfxhtml.hxx
	sfx2/inc/sfx2/sfxresid.hxx
	sfx2/inc/sfx2/sfxsids.hrc
	sfx2/inc/sfx2/sfxuno.hxx
	sfx2/inc/sfx2/shell.hxx
	sfx2/inc/sfx2/stbitem.hxx
	sfx2/inc/sfx2/styfitem.hxx
	sfx2/inc/sfx2/tabdlg.hxx
	sfx2/inc/sfx2/tbxctrl.hxx
	sfx2/inc/sfx2/tplpitem.hxx
	sfx2/inc/sfx2/viewfrm.hxx
	sfx2/inc/sfx2/viewsh.hxx
	sfx2/inc/sfxbasic.hxx
	sfx2/inc/sorgitm.hxx
	sfx2/prj/build.lst
	sfx2/qa/complex/docinfo/makefile.mk
	sfx2/qa/cppunit/makefile.mk
	sfx2/sdi/makefile.mk
	sfx2/source/appl/app.cxx
	sfx2/source/appl/app.hrc
	sfx2/source/appl/app.src
	sfx2/source/appl/appbas.cxx
	sfx2/source/appl/appcfg.cxx
	sfx2/source/appl/appchild.cxx
	sfx2/source/appl/appmain.cxx
	sfx2/source/appl/appmisc.cxx
	sfx2/source/appl/appopen.cxx
	sfx2/source/appl/appquit.cxx
	sfx2/source/appl/appserv.cxx
	sfx2/source/appl/appuno.cxx
	sfx2/source/appl/childwin.cxx
	sfx2/source/appl/fileobj.cxx
	sfx2/source/appl/helpinterceptor.cxx
	sfx2/source/appl/imagemgr.cxx
	sfx2/source/appl/impldde.cxx
	sfx2/source/appl/impldde.hxx
	sfx2/source/appl/linkmgr2.cxx
	sfx2/source/appl/lnkbase2.cxx
	sfx2/source/appl/makefile.mk
	sfx2/source/appl/module.cxx
	sfx2/source/appl/newhelp.cxx
	sfx2/source/appl/opengrf.cxx
	sfx2/source/appl/sfxdll.cxx
	sfx2/source/appl/sfxhelp.cxx
	sfx2/source/appl/shutdownicon.cxx
	sfx2/source/appl/shutdowniconunx.cxx
	sfx2/source/appl/workwin.cxx
	sfx2/source/bastyp/fltfnc.cxx
	sfx2/source/bastyp/frmhtml.cxx
	sfx2/source/bastyp/frmhtmlw.cxx
	sfx2/source/bastyp/helper.cxx
	sfx2/source/bastyp/minarray.cxx
	sfx2/source/bastyp/progress.cxx
	sfx2/source/bastyp/sfxhtml.cxx
	sfx2/source/config/evntconf.cxx
	sfx2/source/control/bindings.cxx
	sfx2/source/control/ctrlitem.cxx
	sfx2/source/control/dispatch.cxx
	sfx2/source/control/macrconf.cxx
	sfx2/source/control/macro.cxx
	sfx2/source/control/makefile.mk
	sfx2/source/control/minfitem.cxx
	sfx2/source/control/msg.cxx
	sfx2/source/control/msgpool.cxx
	sfx2/source/control/objface.cxx
	sfx2/source/control/request.cxx
	sfx2/source/control/shell.cxx
	sfx2/source/control/sorgitm.cxx
	sfx2/source/dialog/about.cxx
	sfx2/source/dialog/basedlgs.cxx
	sfx2/source/dialog/dinfdlg.cxx
	sfx2/source/dialog/dinfedt.cxx
	sfx2/source/dialog/dockwin.cxx
	sfx2/source/dialog/filedlghelper.cxx
	sfx2/source/dialog/mailmodel.cxx
	sfx2/source/dialog/mailmodelapi.cxx
	sfx2/source/dialog/makefile.mk
	sfx2/source/dialog/mgetempl.cxx
	sfx2/source/dialog/passwd.cxx
	sfx2/source/dialog/passwd.hrc
	sfx2/source/dialog/printopt.cxx
	sfx2/source/dialog/securitypage.cxx
	sfx2/source/dialog/splitwin.cxx
	sfx2/source/dialog/styfitem.cxx
	sfx2/source/dialog/tabdlg.cxx
	sfx2/source/dialog/taskpane.cxx
	sfx2/source/dialog/templdlg.cxx
	sfx2/source/dialog/tplpitem.cxx
	sfx2/source/dialog/versdlg.cxx
	sfx2/source/doc/QuerySaveDocument.cxx
	sfx2/source/doc/SfxDocumentMetaData.cxx
	sfx2/source/doc/applet.cxx
	sfx2/source/doc/doc.hrc
	sfx2/source/doc/doc.src
	sfx2/source/doc/docfile.cxx
	sfx2/source/doc/docinf.cxx
	sfx2/source/doc/doctempl.cxx
	sfx2/source/doc/doctemplates.cxx
	sfx2/source/doc/docvor.cxx
	sfx2/source/doc/guisaveas.cxx
	sfx2/source/doc/makefile.mk
	sfx2/source/doc/objcont.cxx
	sfx2/source/doc/objitem.cxx
	sfx2/source/doc/objmisc.cxx
	sfx2/source/doc/objserv.cxx
	sfx2/source/doc/printhelper.cxx
	sfx2/source/doc/sfxacldetect.cxx
	sfx2/source/doc/sfxbasemodel.cxx
	sfx2/source/inc/applet.hxx
	sfx2/source/inc/fltoptint.hxx
	sfx2/source/inc/sfxlocal.hrc
	sfx2/source/inc/virtmenu.hxx
	sfx2/source/inc/workwin.hxx
	sfx2/source/menu/mnuitem.cxx
	sfx2/source/menu/objmnctl.cxx
	sfx2/source/menu/virtmenu.cxx
	sfx2/source/notify/eventsupplier.cxx
	sfx2/source/notify/makefile.mk
	sfx2/source/toolbox/imgmgr.cxx
	sfx2/source/toolbox/tbxitem.cxx
	sfx2/source/view/frame.cxx
	sfx2/source/view/orgmgr.cxx
	sfx2/source/view/printer.cxx
	sfx2/source/view/prnmon.cxx
	sfx2/source/view/viewfrm.cxx
	sfx2/source/view/viewprn.cxx
	sfx2/source/view/viewsh.cxx
	sfx2/util/makefile.mk
	sfx2/workben/custompanel/makefile.mk
	shell/source/backends/desktopbe/desktopbackend.cxx
	shell/source/backends/gconfbe/gconfbackend.cxx
	shell/source/backends/kde4be/kde4backend.cxx
	shell/source/backends/kdebe/kdebackend.cxx
	shell/source/win32/SysShentry.cxx
	shell/source/win32/shlxthandler/propsheets/propsheets.cxx
	shell/source/win32/simplemail/smplmailentry.cxx
	svx/inc/float3d.hrc
	svx/inc/fmhelp.hrc
	svx/inc/globlmn_tmpl.hrc
	svx/inc/helpid.hrc
	svx/inc/pch/precompiled_svx.hxx
	svx/inc/sjctrl.hxx
	svx/inc/srchitem.hxx
	svx/inc/svdibrow.hxx
	svx/inc/svx/SmartTagItem.hxx
	svx/inc/svx/algitem.hxx
	svx/inc/svx/camera3d.hxx
	svx/inc/svx/chrtitem.hxx
	svx/inc/svx/clipfmtitem.hxx
	svx/inc/svx/ctredlin.hxx
	svx/inc/svx/dbtoolsclient.hxx
	svx/inc/svx/deflt3d.hxx
	svx/inc/svx/dialogs.hrc
	svx/inc/svx/drawitem.hxx
	svx/inc/svx/e3ditem.hxx
	svx/inc/svx/extrud3d.hxx
	svx/inc/svx/flagsdef.hxx
	svx/inc/svx/float3d.hxx
	svx/inc/svx/frmsel.hxx
	svx/inc/svx/gallery.hxx
	svx/inc/svx/gallery1.hxx
	svx/inc/svx/galtheme.hxx
	svx/inc/svx/grfcrop.hxx
	svx/inc/svx/hdft.hxx
	svx/inc/svx/hlnkitem.hxx
	svx/inc/svx/hyprlink.hxx
	svx/inc/svx/itemwin.hxx
	svx/inc/svx/lathe3d.hxx
	svx/inc/svx/linkwarn.hxx
	svx/inc/svx/modctrl.hxx
	svx/inc/svx/msdffdef.hxx
	svx/inc/svx/obj3d.hxx
	svx/inc/svx/optgenrl.hxx
	svx/inc/svx/optgrid.hxx
	svx/inc/svx/pageitem.hxx
	svx/inc/svx/paraprev.hxx
	svx/inc/svx/postattr.hxx
	svx/inc/svx/rotmodit.hxx
	svx/inc/svx/ruler.hxx
	svx/inc/svx/rulritem.hxx
	svx/inc/svx/scene3d.hxx
	svx/inc/svx/sdasaitm.hxx
	svx/inc/svx/sdasitm.hxx
	svx/inc/svx/sdggaitm.hxx
	svx/inc/svx/sdmetitm.hxx
	svx/inc/svx/sdtaaitm.hxx
	svx/inc/svx/sdtaditm.hxx
	svx/inc/svx/sdtaitm.hxx
	svx/inc/svx/sdtakitm.hxx
	svx/inc/svx/sdtfchim.hxx
	svx/inc/svx/sdtfsitm.hxx
	svx/inc/svx/srchdlg.hxx
	svx/inc/svx/svddrag.hxx
	svx/inc/svx/svdetc.hxx
	svx/inc/svx/svdglue.hxx
	svx/inc/svx/svdhlpln.hxx
	svx/inc/svx/svdlayer.hxx
	svx/inc/svx/svdmark.hxx
	svx/inc/svx/svdmodel.hxx
	svx/inc/svx/svdoashp.hxx
	svx/inc/svx/svdobj.hxx
	svx/inc/svx/svdocirc.hxx
	svx/inc/svx/svdoedge.hxx
	svx/inc/svx/svdogrp.hxx
	svx/inc/svx/svdomeas.hxx
	svx/inc/svx/svdoole2.hxx
	svx/inc/svx/svdorect.hxx
	svx/inc/svx/svdotable.hxx
	svx/inc/svx/svdotext.hxx
	svx/inc/svx/svdovirt.hxx
	svx/inc/svx/svdpage.hxx
	svx/inc/svx/svdsnpv.hxx
	svx/inc/svx/svdtrans.hxx
	svx/inc/svx/svdundo.hxx
	svx/inc/svx/svimbase.hxx
	svx/inc/svx/svx3ditems.hxx
	svx/inc/svx/svxdlg.hxx
	svx/inc/svx/sxcikitm.hxx
	svx/inc/svx/sxekitm.hxx
	svx/inc/svx/sxelditm.hxx
	svx/inc/svx/sxenditm.hxx
	svx/inc/svx/sxmkitm.hxx
	svx/inc/svx/sxmtpitm.hxx
	svx/inc/svx/sxmuitm.hxx
	svx/inc/svx/tabarea.hxx
	svx/inc/svx/tabline.hxx
	svx/inc/svx/unoprov.hxx
	svx/inc/svx/viewlayoutitem.hxx
	svx/inc/svx/xbitmap.hxx
	svx/inc/svx/xbtmpit.hxx
	svx/inc/svx/xcolit.hxx
	svx/inc/svx/xfillit0.hxx
	svx/inc/svx/xflclit.hxx
	svx/inc/svx/xflftrit.hxx
	svx/inc/svx/xflgrit.hxx
	svx/inc/svx/xflhtit.hxx
	svx/inc/svx/xftadit.hxx
	svx/inc/svx/xftsfit.hxx
	svx/inc/svx/xftshit.hxx
	svx/inc/svx/xlineit0.hxx
	svx/inc/svx/xlinjoit.hxx
	svx/inc/svx/xlnclit.hxx
	svx/inc/svx/xlndsit.hxx
	svx/inc/svx/xlnedcit.hxx
	svx/inc/svx/xlnedit.hxx
	svx/inc/svx/xlnedwit.hxx
	svx/inc/svx/xlnstcit.hxx
	svx/inc/svx/xlnstit.hxx
	svx/inc/svx/xlnstwit.hxx
	svx/inc/svx/xlnwtit.hxx
	svx/inc/svx/xtextit0.hxx
	svx/inc/svx/zoomitem.hxx
	svx/inc/svx/zoomslideritem.hxx
	svx/inc/xpolyimp.hxx
	svx/inc/zoom_def.hxx
	svx/prj/d.lst
	svx/source/accessibility/AccessibleShape.cxx
	svx/source/accessibility/DescriptionGenerator.cxx
	svx/source/customshapes/EnhancedCustomShapeEngine.cxx
	svx/source/customshapes/EnhancedCustomShapeFontWork.cxx
	svx/source/dialog/_bmpmask.cxx
	svx/source/dialog/_contdlg.cxx
	svx/source/dialog/connctrl.cxx
	svx/source/dialog/contwnd.cxx
	svx/source/dialog/ctredlin.cxx
	svx/source/dialog/ctredlin.hrc
	svx/source/dialog/ctredlin.src
	svx/source/dialog/dialcontrol.cxx
	svx/source/dialog/dlgctrl.cxx
	svx/source/dialog/docrecovery.cxx
	svx/source/dialog/fntctrl.cxx
	svx/source/dialog/fontwork.cxx
	svx/source/dialog/frmsel.cxx
	svx/source/dialog/graphctl.cxx
	svx/source/dialog/grfflt.cxx
	svx/source/dialog/hdft.cxx
	svx/source/dialog/hyperdlg.cxx
	svx/source/dialog/hyprdlg.hxx
	svx/source/dialog/hyprlink.cxx
	svx/source/dialog/hyprlink.hxx
	svx/source/dialog/hyprlink.src
	svx/source/dialog/imapdlg.cxx
	svx/source/dialog/imapwnd.cxx
	svx/source/dialog/linkwarn.hrc
	svx/source/dialog/makefile.mk
	svx/source/dialog/optgrid.cxx
	svx/source/dialog/orienthelper.cxx
	svx/source/dialog/pagectrl.cxx
	svx/source/dialog/prtqry.cxx
	svx/source/dialog/rlrcitem.cxx
	svx/source/dialog/rubydialog.cxx
	svx/source/dialog/rulritem.cxx
	svx/source/dialog/simptabl.cxx
	svx/source/dialog/srchdlg.cxx
	svx/source/dialog/svxbmpnumvalueset.cxx
	svx/source/dialog/svxruler.cxx
	svx/source/dialog/swframeexample.cxx
	svx/source/engine3d/float3d.cxx
	svx/source/engine3d/float3d.src
	svx/source/engine3d/svx3ditems.cxx
	svx/source/fmcomp/gridctrl.cxx
	svx/source/fmcomp/trace.cxx
	svx/source/form/ParseContext.cxx
	svx/source/form/datanavi.cxx
	svx/source/form/filtnav.cxx
	svx/source/form/fmexch.cxx
	svx/source/form/fmexpl.cxx
	svx/source/form/fmobjfac.cxx
	svx/source/form/fmpage.cxx
	svx/source/form/fmshell.cxx
	svx/source/form/fmshimp.cxx
	svx/source/form/fmsrcimp.cxx
	svx/source/form/fmvwimp.cxx
	svx/source/form/makefile.mk
	svx/source/form/tabwin.cxx
	svx/source/form/tbxform.cxx
	svx/source/form/typemap.cxx
	svx/source/gallery2/galbrws1.cxx
	svx/source/gallery2/galbrws2.cxx
	svx/source/gallery2/galexpl.cxx
	svx/source/gallery2/gallery1.cxx
	svx/source/gallery2/galtheme.cxx
	svx/source/gallery2/makefile.mk
	svx/source/gengal/gengal.cxx
	svx/source/gengal/makefile.mk
	svx/source/inc/fmgroup.hxx
	svx/source/intro/about_ooo.hrc
	svx/source/intro/iso.src
	svx/source/intro/ooo.src
	svx/source/items/SmartTagItem.cxx
	svx/source/items/algitem.cxx
	svx/source/items/chrtitem.cxx
	svx/source/items/clipfmtitem.cxx
	svx/source/items/customshapeitem.cxx
	svx/source/items/drawitem.cxx
	svx/source/items/e3ditem.cxx
	svx/source/items/grfitem.cxx
	svx/source/items/hlnkitem.cxx
	svx/source/items/makefile.mk
	svx/source/items/pageitem.cxx
	svx/source/items/rotmodit.cxx
	svx/source/items/viewlayoutitem.cxx
	svx/source/items/zoomitem.cxx
	svx/source/items/zoomslideritem.cxx
	svx/source/src/app.hrc
	svx/source/stbctrls/makefile.mk
	svx/source/stbctrls/modctrl.cxx
	svx/source/stbctrls/xmlsecctrl.cxx
	svx/source/stbctrls/zoomctrl.cxx
	svx/source/svdraw/clonelist.cxx
	svx/source/svdraw/svdattr.cxx
	svx/source/svdraw/svdcrtv.cxx
	svx/source/svdraw/svdedtv1.cxx
	svx/source/svdraw/svdedtv2.cxx
	svx/source/svdraw/svdedxv.cxx
	svx/source/svdraw/svdetc.cxx
	svx/source/svdraw/svdfmtf.cxx
	svx/source/svdraw/svdfmtf.hxx
	svx/source/svdraw/svdglue.cxx
	svx/source/svdraw/svdhdl.cxx
	svx/source/svdraw/svdhlpln.cxx
	svx/source/svdraw/svdibrow.cxx
	svx/source/svdraw/svdlayer.cxx
	svx/source/svdraw/svdmodel.cxx
	svx/source/svdraw/svdoashp.cxx
	svx/source/svdraw/svdobj.cxx
	svx/source/svdraw/svdocapt.cxx
	svx/source/svdraw/svdocirc.cxx
	svx/source/svdraw/svdoedge.cxx
	svx/source/svdraw/svdograf.cxx
	svx/source/svdraw/svdogrp.cxx
	svx/source/svdraw/svdomeas.cxx
	svx/source/svdraw/svdomedia.cxx
	svx/source/svdraw/svdopath.cxx
	svx/source/svdraw/svdotext.cxx
	svx/source/svdraw/svdotxdr.cxx
	svx/source/svdraw/svdotxed.cxx
	svx/source/svdraw/svdotxfl.cxx
	svx/source/svdraw/svdotxln.cxx
	svx/source/svdraw/svdotxtr.cxx
	svx/source/svdraw/svdoutl.cxx
	svx/source/svdraw/svdpage.cxx
	svx/source/svdraw/svdpagv.cxx
	svx/source/svdraw/svdpntv.cxx
	svx/source/svdraw/svdpoev.cxx
	svx/source/svdraw/svdsnpv.cxx
	svx/source/svdraw/svdstr.src
	svx/source/svdraw/svdtrans.cxx
	svx/source/svdraw/svdundo.cxx
	svx/source/svdraw/svdview.cxx
	svx/source/svdraw/svdxcgv.cxx
	svx/source/table/svdotable.cxx
	svx/source/tbxctrls/colorwindow.hxx
	svx/source/tbxctrls/extrusioncontrols.cxx
	svx/source/tbxctrls/fillctrl.cxx
	svx/source/tbxctrls/grafctrl.cxx
	svx/source/tbxctrls/itemwin.cxx
	svx/source/tbxctrls/layctrl.cxx
	svx/source/tbxctrls/lboxctrl.cxx
	svx/source/tbxctrls/linectrl.cxx
	svx/source/tbxctrls/tbcontrl.cxx
	svx/source/tbxctrls/verttexttbxctrl.cxx
	svx/source/unodraw/unomod.cxx
	svx/source/unodraw/unopage.cxx
	svx/source/unodraw/unoprov.cxx
	svx/source/unodraw/unoshape.cxx
	svx/source/unodraw/unoshtxt.cxx
	svx/source/xml/xmlxtexp.cxx
	svx/source/xoutdev/_xpoly.cxx
	svx/source/xoutdev/xattr.cxx
	svx/source/xoutdev/xattr2.cxx
	svx/source/xoutdev/xattrbmp.cxx
	svx/source/xoutdev/xtabcolr.cxx
	svx/util/makefile.mk
	svx/workben/edittest.cxx
	sysui/desktop/productversion.mk
	ucb/prj/build.lst
	ucb/source/cacher/cacheserv.cxx
	ucb/source/core/ucb1.component
	ucb/source/core/ucbserv.cxx
	ucb/source/core/ucbstore.cxx
	ucb/source/core/ucbstore.hxx
	ucb/source/sorter/sortmain.cxx
	ucb/source/ucp/file/prov.cxx
	ucb/source/ucp/file/shell.cxx
	ucb/source/ucp/ftp/ftpservices.cxx
	ucb/source/ucp/gio/gio_provider.cxx
	ucb/source/ucp/gvfs/gvfs_provider.cxx
	ucb/source/ucp/hierarchy/hierarchyservices.cxx
	ucb/source/ucp/odma/odma_lib.cxx
	ucb/source/ucp/odma/odma_services.cxx
	ucb/source/ucp/package/pkgservices.cxx
	ucb/source/ucp/tdoc/tdoc_services.cxx
	ucb/source/ucp/webdav/ContentProperties.cxx
	ucb/source/ucp/webdav/NeonHeadRequest.cxx
	ucb/source/ucp/webdav/webdavcontent.cxx
	ucb/source/ucp/webdav/webdavservices.cxx
	uui/source/iahndl.cxx
	uui/source/iahndl.hxx
	uui/source/loginerr.hxx
	uui/source/nameclashdlg.hxx
	uui/source/passcrtdlg.cxx
	uui/source/passworddlg.cxx
	uui/source/passworddlg.hxx
	uui/source/services.cxx
	vbahelper/inc/vbahelper/vbahelper.hxx
	vbahelper/prj/build.lst
	vbahelper/prj/d.lst
	vbahelper/source/msforms/makefile.mk
	vbahelper/source/msforms/vbauserform.cxx
	vbahelper/source/vbahelper/makefile.mk
	vbahelper/source/vbahelper/vbaapplicationbase.cxx
	vbahelper/source/vbahelper/vbacommandbarcontrol.cxx
	vbahelper/source/vbahelper/vbadocumentbase.cxx
	vbahelper/source/vbahelper/vbadocumentsbase.cxx
	vbahelper/source/vbahelper/vbahelper.cxx
	vbahelper/util/makefile.mk
	xmlhelp/source/cxxhelp/provider/databases.cxx
	xmlhelp/source/cxxhelp/provider/services.cxx
	xmlhelp/source/treeview/tvfactory.cxx
	xmloff/JunitTest_xmloff_unoapi.mk
	xmloff/inc/functional.hxx
	xmloff/inc/xmloff/formlayerexport.hxx
	xmloff/inc/xmloff/formlayerimport.hxx
	xmloff/inc/xmloff/functional.hxx
	xmloff/inc/xmloff/shapeimport.hxx
	xmloff/inc/xmloff/xmlcnitm.hxx
	xmloff/inc/xmloff/xmlnumfi.hxx
	xmloff/prj/build.lst
	xmloff/source/chart/SchXMLChartContext.cxx
	xmloff/source/chart/SchXMLExport.cxx
	xmloff/source/chart/SchXMLImport.cxx
	xmloff/source/chart/SchXMLLegendContext.hxx
	xmloff/source/chart/SchXMLPlotAreaContext.cxx
	xmloff/source/core/xmluconv.cxx
	xmloff/source/draw/sdxmlexp.cxx
	xmloff/source/draw/shapeexport4.cxx
	xmloff/source/draw/ximp3dobject.cxx
	xmloff/source/draw/ximp3dscene.cxx
	xmloff/source/forms/formlayerexport.cxx
	xmloff/source/forms/formlayerimport.cxx
	xmloff/source/forms/handler/vcl_time_handler.hxx
	xmloff/source/forms/layerimport.cxx
	xmloff/source/forms/layerimport.hxx
	xmloff/source/forms/property_meta_data.hxx
	xmloff/source/style/PageHeaderFooterContext.cxx
	xmloff/source/style/PageMasterStyleMap.cxx
	xmloff/source/style/prstylei.cxx
	xmloff/source/style/xmlimppr.cxx
	xmloff/source/style/xmlnumfi.cxx
	xmloff/source/style/xmlstyle.cxx
	xmloff/source/table/tabledesignsimporter.cxx
	xmloff/source/text/XMLTextNumRuleInfo.cxx
	xmloff/source/text/XMLTextShapeStyleContext.cxx
	xmloff/source/text/txtstyle.cxx
	xmloff/source/transform/ChartOOoTContext.cxx
	xmloff/source/transform/EventOOoTContext.cxx
	xmloff/source/transform/TransformerBase.cxx
	xmloff/util/makefile.mk
	xmlscript/util/xcr.component
2011-03-12 02:42:58 +01:00

1329 lines
50 KiB
C++
Executable file

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* 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_basic.hxx"
#include "scriptcont.hxx"
#include "sbmodule.hxx"
#include <com/sun/star/container/XNameContainer.hpp>
#include <com/sun/star/xml/sax/XParser.hpp>
#include <com/sun/star/xml/sax/InputSource.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/io/XInputStream.hpp>
#include <com/sun/star/io/XActiveDataSource.hpp>
#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
#include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/embed/XEncryptionProtectedSource.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/embed/XTransactedObject.hpp>
#include <com/sun/star/task/ErrorCodeIOException.hpp>
#include <com/sun/star/script/ModuleType.hpp>
#include <comphelper/processfactory.hxx>
#include <comphelper/storagehelper.hxx>
#include <unotools/streamwrap.hxx>
#include <unotools/ucbstreamhelper.hxx>
#include <osl/mutex.hxx>
#include <rtl/digest.h>
#include <rtl/strbuf.hxx>
// For password functionality
#include <tools/urlobj.hxx>
#include <unotools/pathoptions.hxx>
#include <svtools/sfxecode.hxx>
#include <svtools/ehdl.hxx>
#include <basic/basmgr.hxx>
#include <basic/sbmod.hxx>
#include <basic/basicmanagerrepository.hxx>
#include "basic/modsizeexceeded.hxx"
#include <xmlscript/xmlmod_imexp.hxx>
#include <cppuhelper/factory.hxx>
#include <com/sun/star/util/VetoException.hpp>
#include <com/sun/star/script/XLibraryQueryExecutable.hpp>
#include <cppuhelper/implbase1.hxx>
namespace basic
{
using namespace com::sun::star::document;
using namespace com::sun::star::container;
using namespace com::sun::star::io;
using namespace com::sun::star::uno;
using namespace com::sun::star::ucb;
using namespace com::sun::star::lang;
using namespace com::sun::star::script;
using namespace com::sun::star::xml::sax;
using namespace com::sun::star;
using namespace cppu;
using namespace osl;
using ::rtl::OUString;
using ::rtl::OUString;
//============================================================================
// Implementation class SfxScriptLibraryContainer
const sal_Char* SAL_CALL SfxScriptLibraryContainer::getInfoFileName() const { return "script"; }
const sal_Char* SAL_CALL SfxScriptLibraryContainer::getOldInfoFileName() const { return "script"; }
const sal_Char* SAL_CALL SfxScriptLibraryContainer::getLibElementFileExtension() const { return "xba"; }
const sal_Char* SAL_CALL SfxScriptLibraryContainer::getLibrariesDir() const { return "Basic"; }
// OldBasicPassword interface
void SfxScriptLibraryContainer::setLibraryPassword
( const String& rLibraryName, const String& rPassword )
{
try
{
SfxLibrary* pImplLib = getImplLib( rLibraryName );
if( rPassword.Len() )
{
pImplLib->mbDoc50Password = sal_True;
pImplLib->mbPasswordProtected = sal_True;
pImplLib->maPassword = rPassword;
}
}
catch( NoSuchElementException& ) {}
}
String SfxScriptLibraryContainer::getLibraryPassword( const String& rLibraryName )
{
SfxLibrary* pImplLib = getImplLib( rLibraryName );
String aPassword;
if( pImplLib->mbPasswordVerified )
aPassword = pImplLib->maPassword;
return aPassword;
}
void SfxScriptLibraryContainer::clearLibraryPassword( const String& rLibraryName )
{
try
{
SfxLibrary* pImplLib = getImplLib( rLibraryName );
pImplLib->mbDoc50Password = sal_False;
pImplLib->mbPasswordProtected = sal_False;
pImplLib->maPassword = OUString();
}
catch( NoSuchElementException& ) {}
}
sal_Bool SfxScriptLibraryContainer::hasLibraryPassword( const String& rLibraryName )
{
SfxLibrary* pImplLib = getImplLib( rLibraryName );
return pImplLib->mbPasswordProtected;
}
// Ctor for service
SfxScriptLibraryContainer::SfxScriptLibraryContainer( void )
:maScriptLanguage( RTL_CONSTASCII_USTRINGPARAM( "StarBasic" ) )
{
// all initialisation has to be done
// by calling XInitialization::initialize
}
SfxScriptLibraryContainer::SfxScriptLibraryContainer( const uno::Reference< embed::XStorage >& xStorage )
:maScriptLanguage( RTL_CONSTASCII_USTRINGPARAM( "StarBasic" ) )
{
init( OUString(), xStorage );
}
// Methods to get library instances of the correct type
SfxLibrary* SfxScriptLibraryContainer::implCreateLibrary( const OUString& aName )
{
(void)aName; // Only needed for SfxDialogLibrary
SfxLibrary* pRet = new SfxScriptLibrary( maModifiable, mxMSF, mxSFI );
return pRet;
}
SfxLibrary* SfxScriptLibraryContainer::implCreateLibraryLink
( const OUString& aName, const OUString& aLibInfoFileURL,
const OUString& StorageURL, sal_Bool ReadOnly )
{
(void)aName; // Only needed for SfxDialogLibrary
SfxLibrary* pRet =
new SfxScriptLibrary
( maModifiable, mxMSF, mxSFI, aLibInfoFileURL, StorageURL, ReadOnly );
return pRet;
}
Any SAL_CALL SfxScriptLibraryContainer::createEmptyLibraryElement( void )
{
OUString aMod;
Any aRetAny;
aRetAny <<= aMod;
return aRetAny;
}
bool SAL_CALL SfxScriptLibraryContainer::isLibraryElementValid( Any aElement ) const
{
return SfxScriptLibrary::containsValidModule( aElement );
}
void SAL_CALL SfxScriptLibraryContainer::writeLibraryElement
(
const Reference < XNameContainer >& xLib,
const OUString& aElementName,
const Reference< XOutputStream >& xOutput
)
throw(Exception)
{
// Create sax writer
Reference< XExtendedDocumentHandler > xHandler(
mxMSF->createInstance(
OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.sax.Writer") ) ), UNO_QUERY );
if( !xHandler.is() )
{
OSL_ENSURE( 0, "### couln't create sax-writer component\n" );
return;
}
Reference< XTruncate > xTruncate( xOutput, UNO_QUERY );
OSL_ENSURE( xTruncate.is(), "Currently only the streams that can be truncated are expected!" );
if ( xTruncate.is() )
xTruncate->truncate();
Reference< XActiveDataSource > xSource( xHandler, UNO_QUERY );
xSource->setOutputStream( xOutput );
xmlscript::ModuleDescriptor aMod;
aMod.aName = aElementName;
aMod.aLanguage = maScriptLanguage;
Any aElement = xLib->getByName( aElementName );
aElement >>= aMod.aCode;
Reference< script::vba::XVBAModuleInfo > xModInfo( xLib, UNO_QUERY );
if( xModInfo.is() && xModInfo->hasModuleInfo( aElementName ) )
{
script::ModuleInfo aModInfo = xModInfo->getModuleInfo( aElementName );
switch( aModInfo.ModuleType )
{
case ModuleType::NORMAL:
aMod.aModuleType = OUString( RTL_CONSTASCII_USTRINGPARAM("normal") );
break;
case ModuleType::CLASS:
aMod.aModuleType = OUString( RTL_CONSTASCII_USTRINGPARAM("class") );
break;
case ModuleType::FORM:
aMod.aModuleType = OUString( RTL_CONSTASCII_USTRINGPARAM("form") );
break;
case ModuleType::DOCUMENT:
aMod.aModuleType = OUString( RTL_CONSTASCII_USTRINGPARAM("document") );
break;
case ModuleType::UNKNOWN:
// nothing
break;
}
}
xmlscript::exportScriptModule( xHandler, aMod );
}
Any SAL_CALL SfxScriptLibraryContainer::importLibraryElement
( const Reference < XNameContainer >& xLib,
const OUString& aElementName, const OUString& aFile,
const uno::Reference< io::XInputStream >& xInStream )
{
Any aRetAny;
Reference< XParser > xParser( mxMSF->createInstance(
OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.sax.Parser") ) ), UNO_QUERY );
if( !xParser.is() )
{
OSL_ENSURE( 0, "### couln't create sax parser component\n" );
return aRetAny;
}
// Read from storage?
sal_Bool bStorage = xInStream.is();
Reference< XInputStream > xInput;
if( bStorage )
{
xInput = xInStream;
}
else
{
try
{
xInput = mxSFI->openFileRead( aFile );
}
catch( Exception& )
//catch( Exception& e )
{
// TODO:
//throw WrappedTargetException( e );
}
}
if( !xInput.is() )
return aRetAny;
InputSource source;
source.aInputStream = xInput;
source.sSystemId = aFile;
// start parsing
xmlscript::ModuleDescriptor aMod;
try
{
xParser->setDocumentHandler( ::xmlscript::importScriptModule( aMod ) );
xParser->parseStream( source );
}
catch( Exception& )
{
SfxErrorContext aEc( ERRCTX_SFX_LOADBASIC, aFile );
sal_uIntPtr nErrorCode = ERRCODE_IO_GENERAL;
ErrorHandler::HandleError( nErrorCode );
}
aRetAny <<= aMod.aCode;
// TODO: Check language
// aMod.aLanguage
// aMod.aName ignored
if( aMod.aModuleType.getLength() > 0 )
{
/* If in VBA compatibility mode, force creation of the VBA Globals
object. Each application will create an instance of its own
implementation and store it in its Basic manager. Implementations
will do all necessary additional initialization, such as
registering the global "This***Doc" UNO constant, starting the
document events processor etc.
*/
if( getVBACompatibilityMode() ) try
{
Reference< frame::XModel > xModel( mxOwnerDocument ); // weak-ref -> ref
Reference< XMultiServiceFactory > xFactory( xModel, UNO_QUERY_THROW );
xFactory->createInstance( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAGlobals" ) ) );
}
catch( Exception& )
{
}
script::ModuleInfo aModInfo;
aModInfo.ModuleType = ModuleType::UNKNOWN;
if( aMod.aModuleType.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("normal") ))
{
aModInfo.ModuleType = ModuleType::NORMAL;
}
else if( aMod.aModuleType.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("class") ))
{
aModInfo.ModuleType = ModuleType::CLASS;
}
else if( aMod.aModuleType.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("form") ))
{
aModInfo.ModuleType = ModuleType::FORM;
aModInfo.ModuleObject = mxOwnerDocument;
}
else if( aMod.aModuleType.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM("document") ))
{
aModInfo.ModuleType = ModuleType::DOCUMENT;
// #163691# use the same codename access instance for all document modules
if( !mxCodeNameAccess.is() ) try
{
Reference<frame::XModel > xModel( mxOwnerDocument );
Reference< XMultiServiceFactory> xSF( xModel, UNO_QUERY_THROW );
mxCodeNameAccess.set( xSF->createInstance( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "ooo.vba.VBAObjectModuleObjectProvider" ) ) ), UNO_QUERY );
}
catch( Exception& ) {}
if( mxCodeNameAccess.is() )
{
try
{
aModInfo.ModuleObject.set( mxCodeNameAccess->getByName( aElementName), uno::UNO_QUERY );
}
catch(uno::Exception&)
{
OSL_TRACE("Failed to get documument object for %s", rtl::OUStringToOString( aElementName, RTL_TEXTENCODING_UTF8 ).getStr() );
}
}
}
Reference< script::vba::XVBAModuleInfo > xVBAModuleInfo( xLib, UNO_QUERY );
if( xVBAModuleInfo.is() )
{
if( xVBAModuleInfo->hasModuleInfo( aElementName ) )
xVBAModuleInfo->removeModuleInfo( aElementName );
xVBAModuleInfo->insertModuleInfo( aElementName, aModInfo );
}
}
return aRetAny;
}
SfxLibraryContainer* SfxScriptLibraryContainer::createInstanceImpl( void )
{
return new SfxScriptLibraryContainer();
}
void SAL_CALL SfxScriptLibraryContainer::importFromOldStorage( const ::rtl::OUString& aFile )
{
// TODO: move loading from old storage to binary filters?
SotStorageRef xStorage = new SotStorage( sal_False, aFile );
if( xStorage.Is() && xStorage->GetError() == ERRCODE_NONE )
{
// We need a BasicManager to avoid problems
// StarBASIC* pBas = new StarBASIC();
BasicManager* pBasicManager = new BasicManager( *(SotStorage*)xStorage, aFile );
// Set info
LibraryContainerInfo aInfo( this, NULL, static_cast< OldBasicPassword* >( this ) );
pBasicManager->SetLibraryContainerInfo( aInfo );
// Now the libraries should be copied to this SfxScriptLibraryContainer
BasicManager::LegacyDeleteBasicManager( pBasicManager );
}
}
// Storing with password encryption
// Methods XLibraryContainerPassword
sal_Bool SAL_CALL SfxScriptLibraryContainer::isLibraryPasswordProtected( const OUString& Name )
throw (NoSuchElementException, RuntimeException)
{
LibraryContainerMethodGuard aGuard( *this );
SfxLibrary* pImplLib = getImplLib( Name );
sal_Bool bRet = pImplLib->mbPasswordProtected;
return bRet;
}
sal_Bool SAL_CALL SfxScriptLibraryContainer::isLibraryPasswordVerified( const OUString& Name )
throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
{
LibraryContainerMethodGuard aGuard( *this );
SfxLibrary* pImplLib = getImplLib( Name );
if( !pImplLib->mbPasswordProtected )
throw IllegalArgumentException();
sal_Bool bRet = pImplLib->mbPasswordVerified;
return bRet;
}
sal_Bool SAL_CALL SfxScriptLibraryContainer::verifyLibraryPassword
( const OUString& Name, const OUString& Password )
throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
{
LibraryContainerMethodGuard aGuard( *this );
SfxLibrary* pImplLib = getImplLib( Name );
if( !pImplLib->mbPasswordProtected || pImplLib->mbPasswordVerified )
throw IllegalArgumentException();
// Test password
sal_Bool bSuccess = sal_False;
if( pImplLib->mbDoc50Password )
{
bSuccess = ( Password == pImplLib->maPassword );
if( bSuccess )
pImplLib->mbPasswordVerified = sal_True;
}
else
{
pImplLib->maPassword = Password;
bSuccess = implLoadPasswordLibrary( pImplLib, Name, sal_True );
if( bSuccess )
{
// The library gets modified by verifiying the password, because other-
// wise for saving the storage would be copied and that doesn't work
// with mtg's storages when the password is verified
pImplLib->implSetModified( sal_True );
pImplLib->mbPasswordVerified = sal_True;
// Reload library to get source
if( pImplLib->mbLoaded )
implLoadPasswordLibrary( pImplLib, Name );
}
}
return bSuccess;
}
void SAL_CALL SfxScriptLibraryContainer::changeLibraryPassword( const OUString& Name,
const OUString& OldPassword, const OUString& NewPassword )
throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
{
LibraryContainerMethodGuard aGuard( *this );
SfxLibrary* pImplLib = getImplLib( Name );
if( OldPassword == NewPassword )
return;
sal_Bool bOldPassword = ( OldPassword.getLength() > 0 );
sal_Bool bNewPassword = ( NewPassword.getLength() > 0 );
sal_Bool bStorage = mxStorage.is() && !pImplLib->mbLink;
if( pImplLib->mbReadOnly || (bOldPassword && !pImplLib->mbPasswordProtected) )
throw IllegalArgumentException();
// Library must be loaded
loadLibrary( Name );
sal_Bool bKillCryptedFiles = sal_False;
sal_Bool bKillUncryptedFiles = sal_False;
// Remove or change password?
if( bOldPassword )
{
if( isLibraryPasswordVerified( Name ) )
{
if( pImplLib->maPassword != OldPassword )
throw IllegalArgumentException();
}
else
{
if( !verifyLibraryPassword( Name, OldPassword ) )
throw IllegalArgumentException();
// Reload library to get source
// Should be done in verifyLibraryPassword loadLibrary( Name );
}
if( !bNewPassword )
{
pImplLib->mbPasswordProtected = sal_False;
pImplLib->mbPasswordVerified = sal_False;
pImplLib->maPassword = OUString();
maModifiable.setModified( sal_True );
pImplLib->implSetModified( sal_True );
if( !bStorage && !pImplLib->mbDoc50Password )
{
// Store application basic uncrypted
uno::Reference< embed::XStorage > xStorage;
storeLibraries_Impl( xStorage, sal_False );
bKillCryptedFiles = sal_True;
}
}
}
// Set new password?
if( bNewPassword )
{
pImplLib->mbPasswordProtected = sal_True;
pImplLib->mbPasswordVerified = sal_True;
pImplLib->maPassword = NewPassword;
maModifiable.setModified( sal_True );
pImplLib->implSetModified( sal_True );
if( !bStorage && !pImplLib->mbDoc50Password )
{
// Store applictaion basic crypted
uno::Reference< embed::XStorage > xStorage;
storeLibraries_Impl( xStorage, sal_False );
bKillUncryptedFiles = sal_True;
}
}
if( bKillCryptedFiles || bKillUncryptedFiles )
{
Sequence< OUString > aElementNames = pImplLib->getElementNames();
sal_Int32 nNameCount = aElementNames.getLength();
const OUString* pNames = aElementNames.getConstArray();
OUString aLibDirPath = createAppLibraryFolder( pImplLib, Name );
try
{
for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
{
OUString aElementName = pNames[ i ];
INetURLObject aElementInetObj( aLibDirPath );
aElementInetObj.insertName( aElementName, sal_False,
INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
if( bKillUncryptedFiles )
aElementInetObj.setExtension( maLibElementFileExtension );
else
aElementInetObj.setExtension( OUString( RTL_CONSTASCII_USTRINGPARAM("pba") ) );
String aElementPath( aElementInetObj.GetMainURL( INetURLObject::NO_DECODE ) );
if( mxSFI->exists( aElementPath ) )
mxSFI->kill( aElementPath );
}
}
catch( Exception& ) {}
}
}
void setStreamKey( uno::Reference< io::XStream > xStream, const ::rtl::OUString& aPass )
{
uno::Reference< embed::XEncryptionProtectedSource > xEncrStream( xStream, uno::UNO_QUERY );
if ( xEncrStream.is() )
xEncrStream->setEncryptionPassword( aPass );
}
// Impl methods
sal_Bool SfxScriptLibraryContainer::implStorePasswordLibrary( SfxLibrary* pLib,
const ::rtl::OUString& aName, const uno::Reference< embed::XStorage >& xStorage, const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler )
{
OUString aDummyLocation;
Reference< XSimpleFileAccess > xDummySFA;
return implStorePasswordLibrary( pLib, aName, xStorage, aDummyLocation, xDummySFA, xHandler );
}
sal_Bool SfxScriptLibraryContainer::implStorePasswordLibrary( SfxLibrary* pLib, const ::rtl::OUString& aName,
const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage,
const ::rtl::OUString& aTargetURL, const Reference< XSimpleFileAccess > xToUseSFI, const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& xHandler )
{
bool bExport = aTargetURL.getLength();
BasicManager* pBasicMgr = getBasicManager();
OSL_ENSURE( pBasicMgr, "SfxScriptLibraryContainer::implStorePasswordLibrary: cannot do this without a BasicManager!" );
if ( !pBasicMgr )
return sal_False;
// Only need to handle the export case here,
// save/saveas etc are handled in sfxbasemodel::storeSelf &
// sfxbasemodel::impl_store
uno::Sequence<rtl::OUString> aNames;
if ( bExport && pBasicMgr->LegacyPsswdBinaryLimitExceeded(aNames) )
{
if ( xHandler.is() )
{
ModuleSizeExceeded* pReq = new ModuleSizeExceeded( aNames );
uno::Reference< task::XInteractionRequest > xReq( pReq );
xHandler->handle( xReq );
if ( pReq->isAbort() )
throw util::VetoException();
}
}
StarBASIC* pBasicLib = pBasicMgr->GetLib( aName );
if( !pBasicLib )
return sal_False;
Sequence< OUString > aElementNames = pLib->getElementNames();
sal_Int32 nNameCount = aElementNames.getLength();
const OUString* pNames = aElementNames.getConstArray();
sal_Bool bLink = pLib->mbLink;
sal_Bool bStorage = xStorage.is() && !bLink;
if( bStorage )
{
for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
{
OUString aElementName = pNames[ i ];
// Write binary image stream
SbModule* pMod = pBasicLib->FindModule( aElementName );
if( pMod )
{
//OUString aCodeStreamName( RTL_CONSTASCII_USTRINGPARAM("code.bin") );
OUString aCodeStreamName = aElementName;
aCodeStreamName += String( RTL_CONSTASCII_USTRINGPARAM(".bin") );
try {
uno::Reference< io::XStream > xCodeStream = xStorage->openStreamElement(
aCodeStreamName,
embed::ElementModes::READWRITE | embed::ElementModes::TRUNCATE );
if ( !xCodeStream.is() )
throw uno::RuntimeException();
SvMemoryStream aMemStream;
/*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream );
sal_Int32 nSize = (sal_Int32)aMemStream.Tell();
Sequence< sal_Int8 > aBinSeq( nSize );
sal_Int8* pData = aBinSeq.getArray();
::rtl_copyMemory( pData, aMemStream.GetData(), nSize );
Reference< XOutputStream > xOut = xCodeStream->getOutputStream();
if ( !xOut.is() )
throw io::IOException(); // access denied because the stream is readonly
xOut->writeBytes( aBinSeq );
xOut->closeOutput();
}
catch( uno::Exception& )
{
// TODO: handle error
}
}
if( pLib->mbPasswordVerified || pLib->mbDoc50Password )
{
/*Any aElement = pLib->getByName( aElementName );*/
if( !isLibraryElementValid( pLib->getByName( aElementName ) ) )
{
#if OSL_DEBUG_LEVEL > 0
::rtl::OStringBuffer aMessage;
aMessage.append( "invalid library element '" );
aMessage.append( ::rtl::OUStringToOString( aElementName, osl_getThreadTextEncoding() ) );
aMessage.append( "'." );
OSL_ENSURE( false, aMessage.makeStringAndClear().getStr() );
#endif
continue;
}
OUString aSourceStreamName = aElementName;
aSourceStreamName += String( RTL_CONSTASCII_USTRINGPARAM(".xml") );
try {
uno::Reference< io::XStream > xSourceStream = xStorage->openStreamElement(
aSourceStreamName,
embed::ElementModes::READWRITE );
uno::Reference< beans::XPropertySet > xProps( xSourceStream, uno::UNO_QUERY );
if ( !xProps.is() )
throw uno::RuntimeException();
String aPropName( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("MediaType") ) );
OUString aMime( RTL_CONSTASCII_USTRINGPARAM("text/xml") );
xProps->setPropertyValue( aPropName, uno::makeAny( aMime ) );
// Set encryption key
setStreamKey( xSourceStream, pLib->maPassword );
Reference< XOutputStream > xOutput = xSourceStream->getOutputStream();
Reference< XNameContainer > xLib( pLib );
writeLibraryElement( xLib, aElementName, xOutput );
// writeLibraryElement should have the stream already closed
// xOutput->closeOutput();
}
catch( uno::Exception& )
{
OSL_ENSURE( sal_False, "Problem on storing of password library!\n" );
// TODO: error handling
}
}
else // !mbPasswordVerified
{
// TODO
// What to do if not verified?! In any case it's already loaded here
}
}
}
// Application libraries have only to be saved if the password
// is verified because otherwise they can't be modified
else if( pLib->mbPasswordVerified || bExport )
{
try
{
Reference< XSimpleFileAccess > xSFI = mxSFI;
if( xToUseSFI.is() )
xSFI = xToUseSFI;
OUString aLibDirPath;
if( bExport )
{
INetURLObject aInetObj( aTargetURL );
aInetObj.insertName( aName, sal_True, INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
aLibDirPath = aInetObj.GetMainURL( INetURLObject::NO_DECODE );
if( !xSFI->isFolder( aLibDirPath ) )
xSFI->createFolder( aLibDirPath );
}
else
{
aLibDirPath = createAppLibraryFolder( pLib, aName );
}
for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
{
OUString aElementName = pNames[ i ];
INetURLObject aElementInetObj( aLibDirPath );
aElementInetObj.insertName( aElementName, sal_False,
INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
aElementInetObj.setExtension( OUString( RTL_CONSTASCII_USTRINGPARAM("pba") ) );
String aElementPath = aElementInetObj.GetMainURL( INetURLObject::NO_DECODE );
/*Any aElement = pLib->getByName( aElementName );*/
if( !isLibraryElementValid( pLib->getByName( aElementName ) ) )
{
#if OSL_DEBUG_LEVEL > 0
::rtl::OStringBuffer aMessage;
aMessage.append( "invalid library element '" );
aMessage.append( ::rtl::OUStringToOString( aElementName, osl_getThreadTextEncoding() ) );
aMessage.append( "'." );
OSL_ENSURE( false, aMessage.makeStringAndClear().getStr() );
#endif
continue;
}
try
{
uno::Reference< embed::XStorage > xElementRootStorage =
::comphelper::OStorageHelper::GetStorageFromURL(
aElementPath,
embed::ElementModes::READWRITE );
if ( !xElementRootStorage.is() )
throw uno::RuntimeException();
// Write binary image stream
SbModule* pMod = pBasicLib->FindModule( aElementName );
if( pMod )
{
OUString aCodeStreamName( RTL_CONSTASCII_USTRINGPARAM("code.bin") );
uno::Reference< io::XStream > xCodeStream = xElementRootStorage->openStreamElement(
aCodeStreamName,
embed::ElementModes::WRITE | embed::ElementModes::TRUNCATE );
SvMemoryStream aMemStream;
/*sal_Bool bStore = */pMod->StoreBinaryData( aMemStream );
sal_Int32 nSize = (sal_Int32)aMemStream.Tell();
Sequence< sal_Int8 > aBinSeq( nSize );
sal_Int8* pData = aBinSeq.getArray();
::rtl_copyMemory( pData, aMemStream.GetData(), nSize );
Reference< XOutputStream > xOut = xCodeStream->getOutputStream();
if ( xOut.is() )
{
xOut->writeBytes( aBinSeq );
xOut->closeOutput();
}
}
// Write encrypted source stream
OUString aSourceStreamName( RTL_CONSTASCII_USTRINGPARAM("source.xml") );
uno::Reference< io::XStream > xSourceStream;
try
{
xSourceStream = xElementRootStorage->openStreamElement(
aSourceStreamName,
embed::ElementModes::WRITE | embed::ElementModes::TRUNCATE );
// #87671 Allow encryption
uno::Reference< embed::XEncryptionProtectedSource > xEncr( xSourceStream, uno::UNO_QUERY );
OSL_ENSURE( xEncr.is(),
"StorageStream opened for writing must implement XEncryptionProtectedSource!\n" );
if ( !xEncr.is() )
throw uno::RuntimeException();
xEncr->setEncryptionPassword( pLib->maPassword );
}
catch( ::com::sun::star::packages::WrongPasswordException& )
{
xSourceStream = xElementRootStorage->openEncryptedStreamElement(
aSourceStreamName,
embed::ElementModes::WRITE | embed::ElementModes::TRUNCATE,
pLib->maPassword );
}
uno::Reference< beans::XPropertySet > xProps( xSourceStream, uno::UNO_QUERY );
if ( !xProps.is() )
throw uno::RuntimeException();
String aPropName( String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM("MediaType") ) );
OUString aMime( RTL_CONSTASCII_USTRINGPARAM("text/xml") );
xProps->setPropertyValue( aPropName, uno::makeAny( aMime ) );
Reference< XOutputStream > xOut = xSourceStream->getOutputStream();
Reference< XNameContainer > xLib( pLib );
writeLibraryElement( xLib, aElementName, xOut );
// i50568: sax writer already closes stream
// xOut->closeOutput();
uno::Reference< embed::XTransactedObject > xTransact( xElementRootStorage, uno::UNO_QUERY );
OSL_ENSURE( xTransact.is(), "The storage must implement XTransactedObject!\n" );
if ( !xTransact.is() )
throw uno::RuntimeException();
xTransact->commit();
}
catch( uno::Exception& )
{
// TODO: handle error
}
// Storage Dtor commits too, that makes problems
// xElementRootStorage->Commit();
}
}
catch( Exception& )
{
//throw e;
}
}
return sal_True;
}
sal_Bool SfxScriptLibraryContainer::implLoadPasswordLibrary
( SfxLibrary* pLib, const OUString& Name, sal_Bool bVerifyPasswordOnly )
throw(WrappedTargetException, RuntimeException)
{
sal_Bool bRet = sal_True;
sal_Bool bLink = pLib->mbLink;
sal_Bool bStorage = mxStorage.is() && !bLink;
// Already loaded? Then only verifiedPassword can change something
SfxScriptLibrary* pScriptLib = static_cast< SfxScriptLibrary* >( pLib );
if( pScriptLib->mbLoaded )
{
if( pScriptLib->mbLoadedBinary && !bVerifyPasswordOnly &&
(pScriptLib->mbLoadedSource || !pLib->mbPasswordVerified) )
return sal_False;
}
StarBASIC* pBasicLib = NULL;
sal_Bool bLoadBinary = sal_False;
if( !pScriptLib->mbLoadedBinary && !bVerifyPasswordOnly && !pLib->mbPasswordVerified )
{
BasicManager* pBasicMgr = getBasicManager();
OSL_ENSURE( pBasicMgr, "SfxScriptLibraryContainer::implLoadPasswordLibrary: cannot do this without a BasicManager!" );
sal_Bool bLoaded = pScriptLib->mbLoaded;
pScriptLib->mbLoaded = sal_True; // Necessary to get lib
pBasicLib = pBasicMgr ? pBasicMgr->GetLib( Name ) : NULL;
pScriptLib->mbLoaded = bLoaded; // Restore flag
if( !pBasicLib )
return sal_False;
bLoadBinary = sal_True;
pScriptLib->mbLoadedBinary = sal_True;
}
sal_Bool bLoadSource = sal_False;
if( !pScriptLib->mbLoadedSource && pLib->mbPasswordVerified && !bVerifyPasswordOnly )
{
bLoadSource = sal_True;
pScriptLib->mbLoadedSource = sal_True;
}
Sequence< OUString > aElementNames = pLib->getElementNames();
sal_Int32 nNameCount = aElementNames.getLength();
const OUString* pNames = aElementNames.getConstArray();
if( bStorage )
{
uno::Reference< embed::XStorage > xLibrariesStor;
uno::Reference< embed::XStorage > xLibraryStor;
if( bStorage )
{
try {
xLibrariesStor = mxStorage->openStorageElement( maLibrariesDir, embed::ElementModes::READ );
if ( !xLibrariesStor.is() )
throw uno::RuntimeException();
xLibraryStor = xLibrariesStor->openStorageElement( Name, embed::ElementModes::READ );
if ( !xLibraryStor.is() )
throw uno::RuntimeException();
}
catch( uno::Exception& )
{
OSL_ENSURE( 0, "### couln't open sub storage for library\n" );
return sal_False;
}
}
for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
{
OUString aElementName = pNames[ i ];
// Load binary
if( bLoadBinary )
{
SbModule* pMod = pBasicLib->FindModule( aElementName );
if( !pMod )
{
pMod = pBasicLib->MakeModule( aElementName, String() );
pBasicLib->SetModified( sal_False );
}
//OUString aCodeStreamName( RTL_CONSTASCII_USTRINGPARAM("code.bin") );
OUString aCodeStreamName= aElementName;
aCodeStreamName += String( RTL_CONSTASCII_USTRINGPARAM(".bin") );
try {
uno::Reference< io::XStream > xCodeStream = xLibraryStor->openStreamElement(
aCodeStreamName,
embed::ElementModes::READ );
if ( !xCodeStream.is() )
throw uno::RuntimeException();
SvStream* pStream = ::utl::UcbStreamHelper::CreateStream( xCodeStream );
if ( !pStream || pStream->GetError() )
{
sal_Int32 nError = pStream ? pStream->GetError() : ERRCODE_IO_GENERAL;
delete pStream;
throw task::ErrorCodeIOException( ::rtl::OUString(), uno::Reference< uno::XInterface >(), nError );
}
/*sal_Bool bRet = */pMod->LoadBinaryData( *pStream );
// TODO: Check return value
delete pStream;
}
catch( uno::Exception& )
{
// TODO: error handling
}
}
// Load source
if( bLoadSource || bVerifyPasswordOnly )
{
// Access encrypted source stream
OUString aSourceStreamName = aElementName;
aSourceStreamName += String( RTL_CONSTASCII_USTRINGPARAM(".xml") );
try {
uno::Reference< io::XStream > xSourceStream = xLibraryStor->openEncryptedStreamElement(
aSourceStreamName,
embed::ElementModes::READ,
pLib->maPassword );
if ( !xSourceStream.is() )
throw uno::RuntimeException();
// if this point is reached then the password is correct
if ( !bVerifyPasswordOnly )
{
uno::Reference< io::XInputStream > xInStream = xSourceStream->getInputStream();
if ( !xInStream.is() )
throw io::IOException(); // read access denied, seems to be impossible
Reference< XNameContainer > xLib( pLib );
Any aAny = importLibraryElement( xLib,
aElementName, aSourceStreamName,
xInStream );
if( pLib->hasByName( aElementName ) )
{
if( aAny.hasValue() )
pLib->maNameContainer.replaceByName( aElementName, aAny );
}
else
{
pLib->maNameContainer.insertByName( aElementName, aAny );
}
}
}
catch( uno::Exception& )
{
bRet = sal_False;
}
}
}
}
else
{
try
{
OUString aLibDirPath = createAppLibraryFolder( pLib, Name );
for( sal_Int32 i = 0 ; i < nNameCount ; i++ )
{
OUString aElementName = pNames[ i ];
INetURLObject aElementInetObj( aLibDirPath );
aElementInetObj.insertName( aElementName, sal_False,
INetURLObject::LAST_SEGMENT, sal_True, INetURLObject::ENCODE_ALL );
aElementInetObj.setExtension( OUString( RTL_CONSTASCII_USTRINGPARAM("pba") ) );
String aElementPath = aElementInetObj.GetMainURL( INetURLObject::NO_DECODE );
uno::Reference< embed::XStorage > xElementRootStorage;
try {
xElementRootStorage = ::comphelper::OStorageHelper::GetStorageFromURL(
aElementPath,
embed::ElementModes::READ );
} catch( uno::Exception& )
{
// TODO: error handling
}
if ( xElementRootStorage.is() )
{
// Load binary
if( bLoadBinary )
{
SbModule* pMod = pBasicLib->FindModule( aElementName );
if( !pMod )
{
pMod = pBasicLib->MakeModule( aElementName, String() );
pBasicLib->SetModified( sal_False );
}
try {
OUString aCodeStreamName( RTL_CONSTASCII_USTRINGPARAM("code.bin") );
uno::Reference< io::XStream > xCodeStream = xElementRootStorage->openStreamElement(
aCodeStreamName,
embed::ElementModes::READ );
SvStream* pStream = ::utl::UcbStreamHelper::CreateStream( xCodeStream );
if ( !pStream || pStream->GetError() )
{
sal_Int32 nError = pStream ? pStream->GetError() : ERRCODE_IO_GENERAL;
delete pStream;
throw task::ErrorCodeIOException( ::rtl::OUString(),
uno::Reference< uno::XInterface >(),
nError );
}
/*sal_Bool bRet = */pMod->LoadBinaryData( *pStream );
// TODO: Check return value
delete pStream;
}
catch( uno::Exception& )
{
// TODO: error handling
}
}
// Load source
if( bLoadSource || bVerifyPasswordOnly )
{
// Access encrypted source stream
OUString aSourceStreamName( RTL_CONSTASCII_USTRINGPARAM("source.xml") );
try {
uno::Reference< io::XStream > xSourceStream = xElementRootStorage->openEncryptedStreamElement(
aSourceStreamName,
embed::ElementModes::READ,
pLib->maPassword );
if ( !xSourceStream.is() )
throw uno::RuntimeException();
if ( !bVerifyPasswordOnly )
{
uno::Reference< io::XInputStream > xInStream = xSourceStream->getInputStream();
if ( !xInStream.is() )
throw io::IOException(); // read access denied, seems to be impossible
Reference< XNameContainer > xLib( pLib );
Any aAny = importLibraryElement( xLib,
aElementName,
aSourceStreamName,
xInStream );
if( pLib->hasByName( aElementName ) )
{
if( aAny.hasValue() )
pLib->maNameContainer.replaceByName( aElementName, aAny );
}
else
{
pLib->maNameContainer.insertByName( aElementName, aAny );
}
}
}
catch ( uno::Exception& )
{
bRet = sal_False;
}
}
}
}
}
catch( Exception& )
{
// TODO
//throw e;
}
}
return bRet;
}
void SfxScriptLibraryContainer::onNewRootStorage()
{
}
sal_Bool SAL_CALL
SfxScriptLibraryContainer:: HasExecutableCode( const ::rtl::OUString& Library ) throw (uno::RuntimeException)
{
BasicManager* pBasicMgr = getBasicManager();
OSL_ENSURE( pBasicMgr, "we need a basicmanager, really we do" );
if ( pBasicMgr )
return pBasicMgr->HasExeCode( Library ); // need to change this to take name
// default to it has code if we can't decide
return sal_True;
}
//============================================================================
// Service
void createRegistryInfo_SfxScriptLibraryContainer()
{
static OAutoRegistration< SfxScriptLibraryContainer > aAutoRegistration;
}
::rtl::OUString SAL_CALL SfxScriptLibraryContainer::getImplementationName( ) throw (RuntimeException)
{
return getImplementationName_static();
}
Sequence< ::rtl::OUString > SAL_CALL SfxScriptLibraryContainer::getSupportedServiceNames( ) throw (RuntimeException)
{
return getSupportedServiceNames_static();
}
Sequence< OUString > SfxScriptLibraryContainer::getSupportedServiceNames_static()
{
Sequence< OUString > aServiceNames( 2 );
aServiceNames[0] = OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.DocumentScriptLibraryContainer" ));
// plus, for compatibility:
aServiceNames[1] = OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.script.ScriptLibraryContainer" ));
return aServiceNames;
}
OUString SfxScriptLibraryContainer::getImplementationName_static()
{
static OUString aImplName;
static sal_Bool bNeedsInit = sal_True;
MutexGuard aGuard( Mutex::getGlobalMutex() );
if( bNeedsInit )
{
aImplName = OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.sfx2.ScriptLibraryContainer" ));
bNeedsInit = sal_False;
}
return aImplName;
}
Reference< XInterface > SAL_CALL SfxScriptLibraryContainer::Create
( const Reference< XComponentContext >& )
throw( Exception )
{
Reference< XInterface > xRet =
static_cast< XInterface* >( static_cast< OWeakObject* >(new SfxScriptLibraryContainer()) );
return xRet;
}
//============================================================================
// Implementation class SfxScriptLibrary
// Ctor
SfxScriptLibrary::SfxScriptLibrary( ModifiableHelper& _rModifiable,
const Reference< XMultiServiceFactory >& xMSF,
const Reference< XSimpleFileAccess >& xSFI )
: SfxLibrary( _rModifiable, getCppuType( (const OUString *)0 ), xMSF, xSFI )
, mbLoadedSource( sal_False )
, mbLoadedBinary( sal_False )
{
}
SfxScriptLibrary::SfxScriptLibrary( ModifiableHelper& _rModifiable,
const Reference< XMultiServiceFactory >& xMSF,
const Reference< XSimpleFileAccess >& xSFI,
const OUString& aLibInfoFileURL,
const OUString& aStorageURL,
sal_Bool ReadOnly )
: SfxLibrary( _rModifiable, getCppuType( (const OUString *)0 ), xMSF, xSFI,
aLibInfoFileURL, aStorageURL, ReadOnly)
, mbLoadedSource( sal_False )
, mbLoadedBinary( sal_False )
{
}
// Provide modify state including resources
sal_Bool SfxScriptLibrary::isModified( void )
{
return implIsModified(); // No resources
}
void SfxScriptLibrary::storeResources( void )
{
// No resources
}
void SfxScriptLibrary::storeResourcesToURL( const ::rtl::OUString& URL,
const Reference< task::XInteractionHandler >& Handler )
{
(void)URL;
(void)Handler;
}
void SfxScriptLibrary::storeResourcesAsURL
( const ::rtl::OUString& URL, const ::rtl::OUString& NewName )
{
(void)URL;
(void)NewName;
}
void SfxScriptLibrary::storeResourcesToStorage( const ::com::sun::star::uno::Reference
< ::com::sun::star::embed::XStorage >& xStorage )
{
// No resources
(void)xStorage;
}
bool SfxScriptLibrary::containsValidModule( const Any& aElement )
{
OUString sModuleText;
aElement >>= sModuleText;
return ( sModuleText.getLength() > 0 );
}
bool SAL_CALL SfxScriptLibrary::isLibraryElementValid( ::com::sun::star::uno::Any aElement ) const
{
return SfxScriptLibrary::containsValidModule( aElement );
}
IMPLEMENT_FORWARD_XINTERFACE2( SfxScriptLibrary, SfxLibrary, SfxScriptLibrary_BASE );
IMPLEMENT_FORWARD_XTYPEPROVIDER2( SfxScriptLibrary, SfxLibrary, SfxScriptLibrary_BASE );
script::ModuleInfo SAL_CALL
SfxScriptLibrary::getModuleInfo( const ::rtl::OUString& ModuleName ) throw (NoSuchElementException, WrappedTargetException, RuntimeException)
{
if ( !hasModuleInfo( ModuleName ) )
throw NoSuchElementException();
return mModuleInfos[ ModuleName ];
}
sal_Bool SAL_CALL
SfxScriptLibrary::hasModuleInfo( const ::rtl::OUString& ModuleName ) throw (RuntimeException)
{
sal_Bool bRes = sal_False;
ModuleInfoMap::iterator it = mModuleInfos.find( ModuleName );
if ( it != mModuleInfos.end() )
bRes = sal_True;
return bRes;
}
void SAL_CALL SfxScriptLibrary::insertModuleInfo( const ::rtl::OUString& ModuleName, const script::ModuleInfo& ModuleInfo ) throw (IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException)
{
if ( hasModuleInfo( ModuleName ) )
throw ElementExistException();
mModuleInfos[ ModuleName ] = ModuleInfo;
}
void SAL_CALL SfxScriptLibrary::removeModuleInfo( const ::rtl::OUString& ModuleName ) throw (NoSuchElementException, WrappedTargetException, RuntimeException)
{
// #FIXME add NoSuchElementException to the spec
if ( !hasModuleInfo( ModuleName ) )
throw NoSuchElementException();
mModuleInfos.erase( mModuleInfos.find( ModuleName ) );
}
//============================================================================
} // namespace basic
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */