e65c0fe553
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
2093 lines
69 KiB
XML
Executable file
2093 lines
69 KiB
XML
Executable file
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
|
|
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="ScriptBinding" script:language="StarBasic">REM ***** BASIC *****
|
|
|
|
REM ----- Global Variables -----
|
|
|
|
'bindingDialog can refer to either KeyBinding or MenuBinding dialog
|
|
private languages() as String
|
|
private extensions() as Object
|
|
private locations() as String
|
|
private filesysScripts() as String
|
|
private filesysCount as integer
|
|
private bindingDialog as object
|
|
private helpDialog as object
|
|
'Couldn't get redim to work, so scriptDisplayList is and array of arrays
|
|
'where the one and only array in scriptDisplayList is an array
|
|
'of com.sun.star.beans.PropertyValue, where Name = [logicalName][FunctionName]
|
|
'and value is ScriptStorage object
|
|
private scriptDisplayList(0)
|
|
private testArray() as String
|
|
'Array to store lines from the xml file
|
|
private xmlFile() as string
|
|
'Name of the xml file [writer/calc][menubar/keybindings].xml
|
|
private xmlFileName as string
|
|
'Number of lines in the xml file
|
|
private numberOfLines as integer
|
|
|
|
'Parallel arrays to store all top-level menu names and line positions
|
|
private menuItems() as string
|
|
private menuItemLinePosition() as integer
|
|
'Counter for the number of top-level menus
|
|
private menuCount as integer
|
|
|
|
'Parallel arrays to store all sub-menu names and line positions for a particular top-level menu
|
|
private subMenuItems() as string
|
|
private subMenuItemLinePosition() as integer
|
|
'Counter for the number of sub-menus
|
|
private subMenuCount as integer
|
|
|
|
'Parallel arrays to store all script names and line positions
|
|
private scriptNames() as string
|
|
private scriptLinePosition() as integer
|
|
'Counter for the number of scripts
|
|
private scriptCount as integer
|
|
|
|
'Array to store all combinations of key bindings
|
|
private allKeyBindings() as string
|
|
|
|
'Array of Arrays
|
|
'KeyBindArrayOfArrays(0) contains array of "SHIFT + CONTROL + F Keys" data
|
|
'Similarly
|
|
'KeyBindArrayOfArrays(1) contains SHIFT + CONTROL + digits
|
|
'KeyBindArrayOfArrays(2) contains SHIFT + CONTROL + letters
|
|
'KeyBindArrayOfArrays(3) contains CONTROL + F keys
|
|
'KeyBindArrayOfArrays(4) contains CONTROL + digits
|
|
'KeyBindArrayOfArrays(5) contains CONTROL + letters
|
|
'KeyBindArrayOfArrays(6) contains SHIFT + F keys
|
|
private KeyBindArrayOfArrays(6)
|
|
|
|
'Each PropertyValue represents a key, Name member contains the script (if a binding exists)
|
|
' the Value contains and integer
|
|
' 0 means no script bound
|
|
' 1 script is bound to an office function
|
|
' >1 line number of entry in xmlfile array
|
|
private keyAllocationMap(6,25) as new com.sun.star.beans.PropertyValue
|
|
'array to store key group descriptions
|
|
private AllKeyGroupsArray(6) as String
|
|
|
|
|
|
'Array of props to store all event bindings for the Applications
|
|
private allEventTypesApp( 14 ) as new com.sun.star.beans.PropertyValue
|
|
'Array of props to store all event bindings for the Document
|
|
private allEventTypesDoc( 14 ) as new com.sun.star.beans.PropertyValue
|
|
'Array of props to store all event types (Name) and textual description (Value)
|
|
private allEventTypes( 14 ) as new com.sun.star.beans.PropertyValue
|
|
|
|
|
|
private dialogName as String
|
|
REM ------ Storage Refresh Function ------
|
|
|
|
|
|
sub RefreshUserScripts()
|
|
' TDB - change Menu bindings to allow user to refresh all, user, share or document script
|
|
RefreshAppScripts( "USER" )
|
|
end sub
|
|
|
|
sub RefreshAllScripts()
|
|
RefreshAppScripts( "USER" )
|
|
RefreshAppScripts( "SHARE" )
|
|
RefreshDocumentScripts
|
|
end sub
|
|
|
|
sub RefreshAppScripts( appName as String )
|
|
On Error Goto ErrorHandler
|
|
smgr = getProcessServiceManager()
|
|
context = smgr.getPropertyValue( "DefaultContext" )
|
|
scriptstoragemgr = context.getValueByName( "/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager" )
|
|
|
|
scriptstoragemgr.refreshScriptStorage( appName )
|
|
|
|
Exit sub
|
|
|
|
ErrorHandler:
|
|
reset
|
|
MsgBox ("Error: Unable to refresh Java (scripts)" + chr$(10) + chr$(10)+ "Detail: " & error$ + chr$(10) + chr$(10)+ "Action: Please restart Office",0,"Error" )
|
|
|
|
end sub
|
|
|
|
sub RefreshDocumentScripts()
|
|
On Error Goto ErrorHandler
|
|
smgr = getProcessServiceManager()
|
|
context = smgr.getPropertyValue( "DefaultContext" )
|
|
scriptstoragemgr = context.getValueByName( "/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager" )
|
|
|
|
oDocURL = ThisComponent.GetCurrentController.getModel.getURL
|
|
|
|
On Error Goto ErrorHandlerDoc
|
|
scriptstoragemgr.refreshScriptStorage( oDocURL )
|
|
|
|
Exit sub
|
|
|
|
ErrorHandlerDoc:
|
|
reset
|
|
' Ignore document script errors as it will happen when refreshing an unsaved doc
|
|
Exit sub
|
|
|
|
ErrorHandler:
|
|
reset
|
|
MsgBox ("Error: Unable to refresh Java (scripts)" + chr$(10) + chr$(10)+ "Detail: " & error$ + chr$(10) + chr$(10)+ "Action: Please restart Office",0,"Error" )
|
|
|
|
end sub
|
|
|
|
|
|
REM ----- Launch Functions -----
|
|
|
|
Sub createAndPopulateKeyArrays()
|
|
'Create SHIFT + CONTROL + F keys array
|
|
'Dim keyGroupProp as new com.sun.star.beans.PropertyValue
|
|
|
|
Dim SCFKey( 11 )
|
|
for FKey = 1 to 12
|
|
SCFKey( FKey - 1 ) = "SHIFT + CONTROL + F" + FKey
|
|
next FKey
|
|
|
|
KeyBindArrayOfArrays(0) = SCFKey()
|
|
|
|
'Create SHIFT + CONTROL + digits
|
|
Dim SCDKey( 9 )
|
|
for Digit = 0 to 9
|
|
SCDKey( Digit ) = "SHIFT + CONTROL + " + Digit
|
|
next Digit
|
|
KeyBindArrayOfArrays(1) = SCDKey()
|
|
|
|
'Create SHIFT + CONTROL + letters
|
|
|
|
Dim SCLKey( 25 )
|
|
for Alpha = 65 to 90
|
|
SCLKey( Alpha - 65 ) = "SHIFT + CONTROL + " + chr$( Alpha )
|
|
next Alpha
|
|
KeyBindArrayOfArrays(2) = SCLKey()
|
|
|
|
'Create CONTROL + F keys
|
|
Dim CFKey( 11 )
|
|
for FKey = 1 to 12
|
|
CFKey( Fkey - 1 ) = "CONTROL + F" + FKey
|
|
next FKey
|
|
KeyBindArrayOfArrays(3) = CFKey()
|
|
|
|
'Create CONTROL + digits
|
|
Dim CDKey( 9 )
|
|
for Digit = 0 to 9
|
|
CDKey( Digit ) = "CONTROL + " + Digit
|
|
next Digit
|
|
KeyBindArrayOfArrays(4) = CDKey()
|
|
|
|
'Create CONTROL + letters
|
|
Dim CLKey( 25 )
|
|
for Alpha = 65 to 90
|
|
CLKey( Alpha - 65 ) = "CONTROL + " + chr$( Alpha )
|
|
next Alpha
|
|
KeyBindArrayOfArrays(5) = CLKey()
|
|
|
|
'Create SHIFT + F Keys
|
|
Dim SFKey( 11 )
|
|
for FKey = 1 to 12
|
|
SFKey( Fkey - 1 ) = "SHIFT + F" + FKey
|
|
next FKey
|
|
KeyBindArrayOfArrays(6) = SFKey()
|
|
|
|
End Sub
|
|
|
|
Sub updateMapWithDisabledKeys()
|
|
'disable CONTROL + F1 &
|
|
keyAllocationMap( 3, 0 ).Value = 1
|
|
keyAllocationMap( 3, 0 ).Name = ""
|
|
'disable CONTROL + F4 &
|
|
keyAllocationMap( 3, 3 ).Value = 1
|
|
keyAllocationMap( 3, 3 ).Name = ""
|
|
'disable CONTROL + F6
|
|
keyAllocationMap( 3, 5 ).Value = 1
|
|
keyAllocationMap( 3, 5 ).Name = ""
|
|
|
|
|
|
'disable SHIFT + F1 &
|
|
keyAllocationMap( 6, 0 ).Value = 1
|
|
keyAllocationMap( 6, 0 ).Name = ""
|
|
'disable SHIFT + F2 &
|
|
keyAllocationMap( 6, 1 ).Value = 1
|
|
keyAllocationMap( 6, 1 ).Name = ""
|
|
'disable SHIFT + F6 &
|
|
keyAllocationMap( 6, 5 ).Value = 1
|
|
keyAllocationMap( 6, 5 ).Name = ""
|
|
|
|
End Sub
|
|
|
|
Sub initialiseFileExtensions()
|
|
ReDim extensions(ubound(languages())+1) as Object
|
|
oConfigProvider = CreateUnoService( "com.sun.star.configuration.ConfigurationProvider" )
|
|
Dim configArgs(1) as new com.sun.star.beans.PropertyValue
|
|
configargs(0).Name = "nodepath"
|
|
configArgs(0).Value = "org.openoffice.Office.Scripting/ScriptRuntimes"
|
|
configargs(1).Name = "lazywrite"
|
|
configArgs(1).Value = false
|
|
oConfigAccess = oConfigProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess", configArgs())
|
|
for index = 0 to ubound(languages())
|
|
if(languages(index) <> "Java") then
|
|
xPropSet = oConfigAccess.getByName(languages(index))
|
|
extns() = xPropSet.getPropertyValue("SupportedFileExtensions")
|
|
extensions(index) = extns()
|
|
endif
|
|
next index
|
|
end sub
|
|
|
|
Sub ExecuteEditDebug()
|
|
|
|
locations = Array ( "User", "Share", "Document", "Filesystem" )
|
|
languages = Array ( "BeanShell", "JavaScript" )
|
|
dialogName = "EditDebug"
|
|
initialiseFileExtensions()
|
|
bindingDialog = LoadDialog( "ScriptBindingLibrary", "EditDebug" )
|
|
|
|
PopulateLanguageCombo()
|
|
PopulateLocationCombo()
|
|
PopulateScriptList( languages(0), locations(0) )
|
|
|
|
bindingDialog.execute()
|
|
End Sub
|
|
|
|
Sub ExecuteKeyBinding()
|
|
dialogName = "Key"
|
|
createAndPopulateKeyArrays()
|
|
updateMapWithDisabledKeys()
|
|
xmlFileName = GetDocumentType( "Key" )
|
|
|
|
if not (ReadXMLToArray( "Key" )) then
|
|
Exit Sub
|
|
endif
|
|
|
|
bindingDialog = LoadDialog( "ScriptBindingLibrary", "KeyBinding" )
|
|
PopulateKeyBindingList(0)
|
|
initialiseNavigationComboArrays()
|
|
PopulateLanguageCombo()
|
|
PopulateLocationCombo()
|
|
PopulateScriptList( languages(0), locations(0) )
|
|
PopulateTopLevelKeyBindingList()
|
|
bindingDialog.execute()
|
|
end Sub
|
|
|
|
|
|
Sub initialiseNavigationComboArrays()
|
|
locations = Array ( "User", "Share", "Document", "Filesystem" )
|
|
ReDim languages(0) as String
|
|
ReDim extensions(0) as Object
|
|
languages(0) = "Java"
|
|
REM extensions(0) = ""
|
|
|
|
' Setup languages array for all supported languages
|
|
oServiceManager = GetProcessServiceManager()
|
|
svrArray = oServiceManager.getAvailableServiceNames
|
|
|
|
langCount = 1
|
|
for index = 0 to ubound(svrArray)
|
|
iPos = inStr(svrArray(index), "ScriptProviderFor")
|
|
|
|
if (iPos > 0) then
|
|
lang = Mid(svrArray(index), iPos + Len("ScriptProviderFor")
|
|
|
|
if not (lang = "Java") then
|
|
'Add to language vector
|
|
ReDim Preserve languages(langCount) as String
|
|
languages(langCount) = lang
|
|
langCount = langCount + 1
|
|
endif
|
|
endif
|
|
next index
|
|
initialiseFileExtensions()
|
|
End Sub
|
|
|
|
|
|
Sub ExecuteEventBinding
|
|
dialogName = "Event"
|
|
createAllEventTypes()
|
|
createAllEventBindings()
|
|
|
|
'Populate application event bindings array (from config xml file)
|
|
if not (ReadXMLToArray( "Event" )) then
|
|
Exit Sub
|
|
endif
|
|
'Populate document event bindings array (using Office API calls)
|
|
ReadEventsFromDoc()
|
|
|
|
bindingDialog = LoadDialog( "ScriptBindingLibrary", "EventsBinding" )
|
|
initialiseNavigationComboArrays()
|
|
PopulateLanguageCombo()
|
|
PopulateLocationCombo()
|
|
PopulateScriptList( languages(0), locations(0) )
|
|
populateEventList( 0 )
|
|
EventListListener()
|
|
bindingDialog.execute()
|
|
End Sub
|
|
|
|
Sub ExecuteMenuBinding()
|
|
dialogName = "Menu"
|
|
xmlFileName = GetDocumentType( "Menu" )
|
|
if not (ReadXMLToArray( "Menu" )) then
|
|
Exit Sub
|
|
endif
|
|
|
|
bindingDialog = LoadDialog( "ScriptBindingLibrary", "MenuBinding" )
|
|
initialiseNavigationComboArrays()
|
|
PopulateLanguageCombo()
|
|
PopulateLocationCombo()
|
|
PopulateScriptList( languages(0), locations(0) )
|
|
PopulateMenuCombo()
|
|
PopulateSubMenuList( 1 )
|
|
|
|
subMenuList = bindingDialog.getControl("SubMenuList")
|
|
|
|
subMenuList.selectItemPos( 0, true )
|
|
|
|
bindingDialog.execute()
|
|
end Sub
|
|
|
|
|
|
REM ----- Initialising functions -----
|
|
|
|
|
|
function LoadDialog( libName as string, dialogName as string ) as object
|
|
dim library as object
|
|
dim libDialog as object
|
|
dim runtimeDialog as object
|
|
libContainer = DialogLibraries
|
|
libContainer.LoadLibrary( libName )
|
|
library = libContainer.getByName( libname )
|
|
libDialog = library.getByName( dialogName )
|
|
runtimeDialog = CreateUnoDialog( libDialog )
|
|
LoadDialog() = runtimeDialog
|
|
|
|
end function
|
|
|
|
|
|
function GetDocumentType( bindingType as string ) as string
|
|
document = StarDesktop.ActiveFrame.Controller.Model
|
|
Dim errornumber As Integer
|
|
errornumber = 111
|
|
Error errornumber
|
|
if document.SupportsService("com.sun.star.sheet.SpreadsheetDocument") then
|
|
if bindingType = "Key" then
|
|
GetDocumentType() = "calckeybinding.xml"
|
|
else
|
|
if bindingType = "Menu" then
|
|
GetDocumentType() = "calcmenubar.xml"
|
|
end if
|
|
end if
|
|
elseif document.SupportsService("com.sun.star.text.TextDocument") then
|
|
if bindingType = "Key" then
|
|
GetDocumentType() = "writerkeybinding.xml"
|
|
else
|
|
if bindingType = "Menu" then
|
|
GetDocumentType() = "writermenubar.xml"
|
|
end if
|
|
end if
|
|
elseif document.SupportsService("com.sun.star.presentation.PresentationDocument") then
|
|
if bindingType = "Key" then
|
|
GetDocumentType() = "impresskeybinding.xml"
|
|
else
|
|
if bindingType = "Menu" then
|
|
GetDocumentType() = "impressmenubar.xml"
|
|
end if
|
|
end if
|
|
elseif document.SupportsService("com.sun.star.presentation.PresentationDocument") then
|
|
if bindingType = "Key" then
|
|
GetDocumentType() = "impresskeybinding.xml"
|
|
else
|
|
if bindingType = "Menu" then
|
|
GetDocumentType() = "impressmenubar.xml"
|
|
end if
|
|
end if
|
|
elseif document.SupportsService("com.sun.star.drawing.DrawingDocument") then
|
|
if bindingType = "Key" then
|
|
GetDocumentType() = "drawkeybinding.xml"
|
|
else
|
|
if bindingType = "Menu" then
|
|
GetDocumentType() = "drawmenubar.xml"
|
|
end if
|
|
end if
|
|
else
|
|
MsgBox ("Error: Couldn't determine configuration file type" + chr$(10) + chr$(10) + "Action: Please reinstall Scripting Framework",0,"Error" )
|
|
end if
|
|
end function
|
|
|
|
function lastIndexOf( targetStr as String, substr as String ) as Integer
|
|
copyStr = targetStr
|
|
while instr(copyStr, substr) > 0
|
|
pos = instr(copyStr, substr)
|
|
tpos = tpos + pos
|
|
copyStr = mid(copyStr, pos+1, len(copyStr)-pos )
|
|
wend
|
|
lastIndexOf() = tpos
|
|
end function
|
|
|
|
function getScriptURI( selectedScript as String ) as String
|
|
combo = bindingDialog.getControl( "LocationCombo" )
|
|
location = combo.text
|
|
if ( location = "User" ) then
|
|
location = "user"
|
|
elseif ( location = "Share" ) then
|
|
location = "share"
|
|
elseif ( location = "Filesystem" ) then
|
|
location = "filesystem"
|
|
else
|
|
location = "document"
|
|
end if
|
|
|
|
|
|
|
|
if ( location = "filesystem" ) then
|
|
REM need to build URI here - dcf
|
|
combo = bindingDialog.getControl( "LanguageCombo" )
|
|
language = combo.text
|
|
url = selectedscript
|
|
pos = lastIndexOf( url, "/" )
|
|
locationPath = mid( url, 1, pos)
|
|
url = mid( url, pos+1, len( url ) - pos )
|
|
functionName = url
|
|
pos = lastIndexOf( url, "." )
|
|
logicalName = mid( url, 1, pos - 1 )
|
|
getScriptURI() = "script://" + logicalName + "?language=" _
|
|
+ language + "&amp;function=" + functionName _
|
|
+ "&amp;location=filesystem:" + locationPath
|
|
else
|
|
Dim scriptInfo as Object
|
|
scripts() = scriptDisplayList(0)
|
|
for n = LBOUND( scripts() ) to UBOUND( scripts() )
|
|
|
|
if ( scripts( n ).Name = selectedScript ) then
|
|
scriptInfo = scripts( n ).Value
|
|
exit for
|
|
end if
|
|
next n
|
|
getScriptURI() = "script://" + scriptInfo.getLogicalName + "?language=" _
|
|
+ scriptInfo.getLanguage() + "&amp;function=" + _
|
|
scriptInfo.getFunctionName() + "&amp;location=" + location
|
|
end if
|
|
|
|
end function
|
|
|
|
function GetOfficePath() as string
|
|
REM Error check and prompt user to manually input Office Path
|
|
settings = CreateUnoService( "com.sun.star.frame.Settings" )
|
|
path = settings.getByName( "PathSettings" )
|
|
unformattedOfficePath = path.getPropertyValue( "UserPath" )
|
|
|
|
dim officePath as string
|
|
const removeFromEnd = "/user"
|
|
const removeFromEndWindows = "\user"
|
|
|
|
REM If Solaris or Linux
|
|
if not ( instr( unformattedOfficePath, removeFromEnd ) = 0 ) then
|
|
endPosition = instr( unformattedOfficePath, removeFromEnd )
|
|
officePath = mid( unformattedOfficePath, 1, endPosition )
|
|
REM If Windows
|
|
else if not ( instr( unformattedOfficePath, removeFromEndWindows ) = 0 ) then
|
|
endPosition = instr( unformattedOfficePath, removeFromEndWindows )
|
|
officePath = mid( unformattedOfficePath, 1, endPosition )
|
|
while instr( officePath, "\" ) > 0
|
|
backSlash = instr( officePath, "\" )
|
|
startPath = mid( officePath, 1, backSlash - 1 )
|
|
endPath = mid( officePath, backslash + 1, len( officePath ) - backSlash )
|
|
officePath = startPath + "/" + endPath
|
|
wend
|
|
else
|
|
MsgBox ("Error: Office path not found" + chr$(10) + chr$(10) + "Action: Please reinstall Scripting Framework",0,"Error" )
|
|
REM Prompt user
|
|
end if
|
|
end if
|
|
|
|
GetOfficePath() = officePath
|
|
end function
|
|
|
|
|
|
|
|
REM ----- File I/O functions -----
|
|
|
|
|
|
function ReadXMLToArray( bindingType as string ) as boolean
|
|
On Error Goto ErrorHandler
|
|
if ( bindingType = "Event" ) then
|
|
xmlfilename = "eventbindings.xml"
|
|
endif
|
|
|
|
simplefileaccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
|
|
filestream = simplefileaccess.openFileRead( "file://" + GetOfficePath() + "user/config/soffice.cfg/" + xmlFileName )
|
|
|
|
textin = CreateUnoService( "com.sun.star.io.TextInputStream" )
|
|
textin.setInputStream( filestream )
|
|
|
|
redim xmlFile( 400 ) as String
|
|
redim menuItems( 30 ) as String
|
|
redim menuItemLinePosition( 30 ) as Integer
|
|
redim scriptNames( 120 ) as string
|
|
redim scriptLinePosition( 120) as integer
|
|
|
|
lineCount = 1
|
|
menuCount = 1
|
|
scriptCount = 1
|
|
|
|
do while not textin.isEOF()
|
|
xmlline = textin.readLine()
|
|
xmlFile( lineCount ) = xmlline
|
|
|
|
const menuItemWhiteSpace = 2
|
|
const menuXMLTag = "<menu:menu"
|
|
|
|
if bindingType = "Menu" then
|
|
evaluateForMenu( xmlline, lineCount )
|
|
elseif bindingType = "Key" then
|
|
processKeyXMLLine( lineCount, xmlline )
|
|
elseif bindingType = "Event" then
|
|
evaluateForEvent( xmlline, lineCount )
|
|
else
|
|
MsgBox ("Error: Couldn't determine file type" + chr$(10) + chr$(10) + "Action: Please reinstall Scripting Framework",0,"Error" )
|
|
end if
|
|
lineCount = lineCount + 1
|
|
loop
|
|
|
|
'Set global variable numberOfLines (lineCount is one too many at end of the loop)
|
|
numberOfLines = lineCount - 1
|
|
'Set global variable menuCount (it is one too many at end of the loop)
|
|
menuCount = menuCount - 1
|
|
|
|
filestream.closeInput()
|
|
ReadXMLToArray( ) = true
|
|
Exit function
|
|
|
|
ErrorHandler:
|
|
reset
|
|
MsgBox ("Error: Unable to read Star Office configuration file - " + xmlFileName + chr$(10) + chr$(10) + "Action: Please reinstall Scripting Framework",0,"Error" )
|
|
ReadXMLToArray( ) = false
|
|
end function
|
|
|
|
|
|
|
|
sub evaluateForMenu( xmlline as string, lineCount as integer )
|
|
const menuItemWhiteSpace = 2
|
|
const menuXMLTag = "<menu:menu"
|
|
'If the xml line is a top-level menu
|
|
if instr( xmlline, menuXMLTag ) = menuItemWhiteSpace then
|
|
menuLabel = ExtractLabelFromXMLLine( xmlline )
|
|
menuItems( menuCount ) = menuLabel
|
|
menuItemLinePosition( menuCount ) = lineCount
|
|
menuCount = menuCount + 1
|
|
end if
|
|
end sub
|
|
|
|
sub evaluateForEvent( xmlline as string, lineCount as integer )
|
|
dim eventName as String
|
|
'if the xml line identifies a script or SB macro
|
|
dim scriptName as string
|
|
dim lineNumber as integer
|
|
if instr( xmlline, "event:language=" + chr$(34) + "Script" ) > 0 then
|
|
eventName = ExtractEventNameFromXMLLine( xmlline )
|
|
scriptName = ExtractEventScriptFromXMLLine( xmlline )
|
|
lineNumber = lineCount
|
|
elseif instr( xmlline, "event:language=" + chr$(34) + "StarBasic" ) > 0 then
|
|
eventName = ExtractEventNameFromXMLLine( xmlline )
|
|
scriptName = "Allocated to Office function"
|
|
lineNumber = 1
|
|
end if
|
|
|
|
'Need to sequence to find the corresponding index for the event type
|
|
for n = 0 to ubound( allEventTypesApp() )
|
|
if ( eventName = allEventTypes( n ).Name ) then
|
|
allEventTypesApp( n ).Name = scriptName
|
|
allEventTypesApp( n ).Value = lineNumber
|
|
end if
|
|
next n
|
|
end sub
|
|
|
|
|
|
function isOKscriptProps( props() as Object, eventName as string ) as Boolean
|
|
On Error Goto ErrorHandler
|
|
props = ThisComponent.getEvents().getByName( eventName )
|
|
test = ubound( props() )
|
|
isOKscriptProps() = true
|
|
exit function
|
|
|
|
ErrorHandler:
|
|
isOKscriptProps() = false
|
|
end function
|
|
|
|
sub ReadEventsFromDoc()
|
|
On Error Goto ErrorHandler
|
|
|
|
eventSupplier = ThisComponent
|
|
for n = 0 to ubound( allEventTypes() )
|
|
Dim scriptProps() as Object
|
|
if (isOKscriptProps( scriptProps(), allEventTypes( n ).Name) ) then
|
|
if ( ubound( scriptProps ) > 0 ) then
|
|
if ( scriptProps(0).Value = "Script" ) then
|
|
'Script binding
|
|
allEventTypesDoc(n).Name = scriptProps(1).Value
|
|
allEventTypesDoc(n).value = 2
|
|
elseif( scriptProps(0).Value = "StarBasic" ) then
|
|
'StarBasic macro
|
|
allEventTypesDoc(n).Name = "Allocated to Office function"
|
|
allEventTypesDoc(n).value = 1
|
|
end if
|
|
end if
|
|
end if
|
|
next n
|
|
|
|
exit sub
|
|
|
|
' eventProps is undefined if there are no event bindings in the doc
|
|
ErrorHandler:
|
|
reset
|
|
end sub
|
|
|
|
|
|
sub WriteEventsToDoc()
|
|
On Error Goto ErrorHandler
|
|
|
|
eventSupplier = ThisComponent
|
|
for n = 0 to ubound( allEventTypes() )
|
|
scriptName = allEventTypesDoc( n ).Name
|
|
eventName = allEventTypes( n ).Name
|
|
if( allEventTypesDoc( n ).Value > 1 ) then 'script
|
|
'add to doc
|
|
AddEventToDocViaAPI( scriptName, eventName )
|
|
elseif( allEventTypesDoc( n ).Value = 0 ) then 'blank (this will "remove" already blank entries)
|
|
'remove from doc
|
|
RemoveEventFromDocViaAPI( eventName )
|
|
endif
|
|
'Otherwise it is a StarBasic binding - leave alone
|
|
next n
|
|
'Mark document as modified ( should happen automatically as a result of calling the API )
|
|
ThisComponent.CurrentController.getModel().setModified( True )
|
|
exit sub
|
|
|
|
ErrorHandler:
|
|
reset
|
|
msgbox( "Error calling UNO API for writing event bindings to the document" )
|
|
end sub
|
|
|
|
|
|
sub RemoveEventFromDocViaAPI( event as string )
|
|
dim document as object
|
|
dim dispatcher as object
|
|
dim parser as object
|
|
dim url as new com.sun.star.util.URL
|
|
|
|
document = ThisComponent.CurrentController.Frame
|
|
parser = createUnoService("com.sun.star.util.URLTransformer")
|
|
dim args(0) as new com.sun.star.beans.PropertyValue
|
|
args(0).Name = ""
|
|
args(0).Value = event
|
|
|
|
url.Complete = "script://_$ScriptFrmwrkHelper.removeEvent?" _
|
|
+ "language=Java&function=ScriptFrmwrkHelper.removeEvent" _
|
|
+ "&location=share"
|
|
|
|
parser.parseStrict(url)
|
|
disp = document.queryDispatch(url,"",0)
|
|
disp.dispatch(url,args())
|
|
end sub
|
|
|
|
|
|
sub AddEventToDocViaAPI( scriptName as string, eventName as string )
|
|
dim properties( 1 ) as new com.sun.star.beans.PropertyValue
|
|
properties( 0 ).Name = "EventType"
|
|
properties( 0 ).Value = "Script"
|
|
properties( 1 ).Name = "Script"
|
|
properties( 1 ).Value = scriptName
|
|
|
|
eventSupplier = ThisComponent
|
|
nameReplace = eventSupplier.getEvents()
|
|
nameReplace.replaceByName( eventName, properties() )
|
|
end sub
|
|
|
|
|
|
' returns 0 for Fkey
|
|
' 1 for digit
|
|
' 2 for letter
|
|
|
|
function getKeyTypeOffset( key as String ) as integer
|
|
length = Len( key )
|
|
if ( length > 1 ) then
|
|
getKeyTypeOffset() = 0
|
|
|
|
elseif ( key >= "0" AND key <= "9" ) then
|
|
getKeyTypeOffset() = 1
|
|
else
|
|
getKeyTypeOffset() = 2
|
|
end if
|
|
end function
|
|
|
|
function getKeyGroupIndex( key as String, offset as Integer ) as Integer
|
|
' Keys we are interested in are A - Z, F2 - F12, 0 - 9 anything else should
|
|
' ensure -1 is returned
|
|
cutKey = mid( key,2 )
|
|
|
|
if ( cutKey <> "" ) then
|
|
acode = asc ( mid( cutKey,1,1) )
|
|
if ( acode > 57 ) then
|
|
getKeyGroupIndex() = -1
|
|
exit function
|
|
end if
|
|
end if
|
|
|
|
select case offset
|
|
case 0:
|
|
num = cint( cutKey )
|
|
getKeyGroupIndex() = num - 1
|
|
exit function
|
|
case 1:
|
|
num = asc( key ) - 48
|
|
getKeyGroupIndex() = num
|
|
exit function
|
|
case 2:
|
|
num = asc( key ) - 65
|
|
getKeyGroupIndex() = num
|
|
exit function
|
|
end select
|
|
getKeyGroupIndex() = -1
|
|
end function
|
|
|
|
Sub processKeyXMLLine( lineCount as Integer, xmlline as String )
|
|
|
|
if instr( xmlline, "<accel:item" ) > 0 then
|
|
shift = false
|
|
control = false
|
|
if instr( xmlline, "accel:shift="+chr$(34)+"true"+chr$(34) ) > 0 then
|
|
shift = true
|
|
end if
|
|
if instr( xmlFile( lineCount ), "accel:mod1="+chr$(34)+"true"+chr$(34) ) > 0 then
|
|
control = true
|
|
end if
|
|
offsetIntoArrayOfArrays = -1 'default unknown
|
|
if ( control AND shift ) then
|
|
offsetIntoArrayOfArrays = 0
|
|
elseif ( control ) then
|
|
offsetIntoArrayOfArrays = 3
|
|
elseif ( shift ) then
|
|
offsetIntoArrayOfArrays = 6
|
|
endif
|
|
' Calculate which of the 7 key group arrays we need to point to
|
|
key = ExtractKeyCodeFromXMLLine( xmlline )
|
|
keyTypeOffset = getKeyTypeOffset( key )
|
|
offsetIntoArrayOfArrays = offsetIntoArrayOfArrays + keyTypeOffset
|
|
|
|
' Calculate from the key the offset into key group array we need to point to
|
|
KeyGroupIndex = getKeyGroupIndex( key, keyTypeOffset )
|
|
if ( offsetIntoArrayOfArrays = -1 ) then
|
|
'Unknown key group, no processing necessary
|
|
Exit Sub
|
|
end if
|
|
if ( KeyGroupIndex > -1 ) then
|
|
|
|
' Determine if a script framework binding is present or not
|
|
if instr( xmlline, "script://" ) > 0 then
|
|
' its one of ours so update its details
|
|
scriptName = ExtractScriptIdFromXMLLine( xmlline )
|
|
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = lineCount
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
|
|
else
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = 1
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = ""
|
|
|
|
end if
|
|
end if
|
|
end if
|
|
End Sub
|
|
|
|
Sub WriteXMLFromArray()
|
|
On Error Goto ErrorHandler
|
|
cfgFile = GetOfficePath() + "user/config/soffice.cfg/" + xmlFileName
|
|
updateCfgFile( cfgFile )
|
|
'if ( false ) then' config stuff not in build yet
|
|
if ( true ) then
|
|
updateConfig( xmlFileName )
|
|
else
|
|
msgbox ("Office must be restarted before your changes will take effect."+ chr$(10)+"Also close the Office QuickStarter (Windows and Linux)", 48, "Assign Script (Java) To Menu" )
|
|
endif
|
|
Exit Sub
|
|
|
|
ErrorHandler:
|
|
reset
|
|
MsgBox ("Error: Unable to write to Star Office configuration file" + chr$(10) + "/" + GetOfficePath() + "user/config/soffice.cfg/" +xmlFileName + chr$(10) + chr$(10) + "Action: Please make sure you have write access to this file",0,"Error" )
|
|
end Sub
|
|
|
|
|
|
Sub UpdateCfgFile ( fileName as String )
|
|
dim ScriptProvider as Object
|
|
dim Script as Object
|
|
dim args(1)
|
|
dim displayDialogFlag as boolean
|
|
displayDialogFlag = false
|
|
args(0) = ThisComponent
|
|
args(1) = displayDialogFlag
|
|
|
|
ScriptProvider = createUnoService("drafts.com.sun.star.script.framework.provider.MasterScriptProvider")
|
|
ScriptProvider.initialize( args() )
|
|
Script = ScriptProvider.getScript("script://_$ScriptFrmwrkHelper.updateCfgFile?" _
|
|
+ "language=Java&function=ScriptFrmwrkHelper.updateCfgFile&location=share")
|
|
Dim inArgs(2)
|
|
Dim outArgs()
|
|
Dim outIndex()
|
|
dim localNumLines as integer
|
|
|
|
inArgs(0) = xmlFile()
|
|
inArgs(1) = fileName
|
|
inArgs(2) = numberOfLines
|
|
Script.invoke( inArgs(), outIndex(), outArgs() )
|
|
End Sub
|
|
|
|
sub UpdateConfig( a$ )
|
|
dim document as object
|
|
dim dispatcher as object
|
|
dim parser as object
|
|
dim disp as object
|
|
dim url as new com.sun.star.util.URL
|
|
document = ThisComponent.CurrentController.Frame
|
|
parser = createUnoService("com.sun.star.util.URLTransformer")
|
|
dim args1(0) as new com.sun.star.beans.PropertyValue
|
|
args1(0).Name = "StreamName"
|
|
args1(0).Value = a$
|
|
url.Complete = ".uno:UpdateConfiguration"
|
|
parser.parseStrict(url)
|
|
disp = document.queryDispatch(url,"",0)
|
|
disp.dispatch(url,args1())
|
|
|
|
End Sub
|
|
|
|
|
|
sub AddNewEventBinding( scriptName as string, eventPosition as integer, isApp as boolean )
|
|
event = allEventTypes( eventPosition ).Name
|
|
'dim scriptProp as new com.sun.star.beans.PropertyValue
|
|
if isApp then
|
|
'scriptProp.Name = scriptName
|
|
'scriptProp.Value = numberOfLines
|
|
allEventTypesApp( eventPosition ).Name = scriptName
|
|
allEventTypesApp( eventPosition ).Value = numberOfLines
|
|
|
|
newline = " <event:event event:name=" + chr$(34) + event + chr$(34)
|
|
newline = newline + " event:language=" + chr$(34) + "Script" + chr$(34) + " xlink:href=" + chr$(34)
|
|
newline = newline + scriptName + chr$(34) + " xlink:type=" + chr$(34) + "simple" + chr$(34) + "/>"
|
|
xmlFile( numberOfLines ) = newline
|
|
xmlFile( numberOfLines + 1 ) = "</event:events>"
|
|
numberOfLines = numberOfLines + 1
|
|
else
|
|
'scriptProp.Name = scriptName
|
|
'scriptProp.Value = 2
|
|
allEventTypesDoc( eventPosition ).Name = scriptName
|
|
allEventTypesDoc( eventPosition ).Value = 2
|
|
end if
|
|
end sub
|
|
|
|
REM ----- Array update functions -----
|
|
|
|
|
|
sub AddNewMenuBinding( newScript as string, newMenuLabel as string, newLinePosition as integer )
|
|
dim newXmlFile( 400 ) as string
|
|
dim newLineInserted as boolean
|
|
dim lineCounter as integer
|
|
lineCounter = 1
|
|
|
|
do while lineCounter <= numberOfLines
|
|
if not newLineInserted then
|
|
REM If the line number is the position at which to insert the new line
|
|
if lineCounter = newLinePosition then
|
|
if( instr( xmlFile( lineCounter ), "<menu:menupopup>" ) > 0 ) then
|
|
indent = GetMenuWhiteSpace( xmlFile( newLinePosition + 1 ) )
|
|
newXmlFile( lineCounter ) = xmlFile( lineCounter )
|
|
newXmlFile( lineCounter + 1 ) = ( indent + "<menu:menuitem menu:id="+chr$(34) + newScript + chr$(34)+" menu:helpid="+chr$(34)+"1929"+chr$(34)+" menu:label="+chr$(34)+ newMenuLabel + chr$(34)+"/>" )
|
|
else
|
|
indent = GetMenuWhiteSpace( xmlFile( newLinePosition - 1 ) )
|
|
newXmlFile( lineCounter ) = ( indent + "<menu:menuitem menu:id="+chr$(34) + newScript + chr$(34)+" menu:helpid="+chr$(34)+"1929"+chr$(34)+" menu:label="+chr$(34)+ newMenuLabel + chr$(34)+"/>" )
|
|
newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
|
|
end if
|
|
REM added -1 for debug -->
|
|
' indent = GetMenuWhiteSpace( xmlFile( newLinePosition ) )
|
|
' newXmlFile( lineCounter ) = ( indent + "<menu:menuitem menu:id="+chr$(34)+"script://" + newScript + chr$(34)+" menu:helpid="+chr$(34)+"1929"+chr$(34)+" menu:label="+chr$(34)+ newMenuLabel + chr$(34)+"/>" )
|
|
' newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
|
|
newLineInserted = true
|
|
else
|
|
newXmlFile( lineCounter ) = xmlFile( lineCounter )
|
|
end if
|
|
else
|
|
REM if the new line has been inserted the read from one position behind
|
|
newXmlFile( lineCounter + 1 ) = xmlFile( lineCounter )
|
|
end if
|
|
lineCounter = lineCounter + 1
|
|
loop
|
|
|
|
numberOfLines = numberOfLines + 1
|
|
|
|
REM read the new file into the global array
|
|
for n = 1 to numberOfLines
|
|
xmlFile( n ) = newXmlFile( n )
|
|
next n
|
|
|
|
end sub
|
|
|
|
|
|
sub AddNewKeyBinding( scriptName as string, shift as boolean, control as boolean, key as string )
|
|
|
|
dim keyCombo as string
|
|
newLine = " <accel:item accel:code="+chr$(34)+"KEY_" + key +chr$(34)
|
|
if shift then
|
|
keyCombo = "SHIFT + "
|
|
newLine = newLine + " accel:shift="+chr$(34)+"true"+chr$(34)
|
|
end if
|
|
if control then
|
|
keyCombo = keyCombo + "CONTROL + "
|
|
newLine = newLine + " accel:mod1="+chr$(34)+"true"+chr$(34)
|
|
end if
|
|
keyCombo = keyCombo + key
|
|
newLine = newLine + " xlink:href="+chr$(34)+ scriptName +chr$(34) +"/>"
|
|
|
|
if ( control AND shift ) then
|
|
offsetIntoArrayOfArrays = 0
|
|
elseif ( control ) then
|
|
offsetIntoArrayOfArrays = 3
|
|
elseif ( shift ) then
|
|
offsetIntoArrayOfArrays = 6
|
|
endif
|
|
|
|
keyTypeOffset = getKeyTypeOffset( key )
|
|
offsetIntoArrayOfArrays = offsetIntoArrayOfArrays + keyTypeOffset
|
|
' Calculate from the key the offset into key group array we need to point to
|
|
KeyGroupIndex = getKeyGroupIndex( key, keyTypeOffset )
|
|
|
|
' if key is allready allocated to a script then just reallocate
|
|
if ( keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value > 1 ) then
|
|
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
|
|
'replace line in xml file
|
|
xmlFile( keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value ) = newLine
|
|
else
|
|
' this is a new binding, create a new line in xml file
|
|
for n = 1 to numberOfLines
|
|
if n = numberOfLines then
|
|
xmlFile( n ) = newLine
|
|
xmlFile( n + 1 ) = "</accel:acceleratorlist>"
|
|
exit for
|
|
else
|
|
xmlFile( n ) = xmlFile( n )
|
|
end if
|
|
next n
|
|
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Value = n
|
|
keyAllocationMap( offsetIntoArrayOfArrays, KeyGroupIndex ).Name = scriptName
|
|
numberOfLines = numberOfLines + 1
|
|
endif
|
|
|
|
end sub
|
|
|
|
|
|
Sub RemoveBinding( lineToRemove as Integer )
|
|
xmlFile( lineToRemove ) = ""
|
|
end Sub
|
|
|
|
REM Adds or removes the starting xml line positions for each top-level menu after the menu with the added script
|
|
sub UpdateTopLevelMenus( topLevelMenuPosition as integer, addLine as boolean )
|
|
for n = topLevelMenuPosition to 8
|
|
if addLine then
|
|
menuItemLinePosition( n ) = menuItemLinePosition( n ) + 1
|
|
|
|
end if
|
|
next n
|
|
end sub
|
|
|
|
|
|
REM Remove scriptNames and scriptLinePosition entries
|
|
sub RemoveScriptNameAndPosition( keyComboPosition )
|
|
dim updatedScriptNames( 120 ) as string
|
|
dim updatedScriptLinePosition( 120 ) as integer
|
|
dim removedScript as boolean
|
|
removedScript = false
|
|
|
|
for n = 1 to scriptCount
|
|
if not removedScript then
|
|
if not( n = keyComboPosition ) then
|
|
updatedScriptNames( n ) = scriptNames( n )
|
|
else
|
|
removedScript = true
|
|
end if
|
|
else
|
|
updatedScriptNames( n - 1 ) = scriptNames( n )
|
|
end if
|
|
next n
|
|
scriptCount = scriptCount - 1
|
|
|
|
for n = 1 to scriptCount
|
|
scriptNames( n ) = updatedScriptNames( n )
|
|
next n
|
|
end sub
|
|
|
|
|
|
|
|
REM ----- Populating Dialog Controls -----
|
|
|
|
Sub PopulateLanguageCombo()
|
|
langCombo = bindingDialog.getControl( "LanguageCombo" )
|
|
langCombo.removeItems( 0, langCombo.getItemCount() )
|
|
for n = LBOUND( languages() ) to UBOUND ( languages() )
|
|
langCombo.addItem( languages( n ), n )
|
|
next n
|
|
langCombo.setDropDownLineCount( n )
|
|
langCombo.text = langCombo.getItem( 0 )
|
|
End Sub
|
|
|
|
Sub PopulateLocationCombo()
|
|
dim ScriptProvider as Object
|
|
dim args(1)
|
|
dim displayDialogFlag as boolean
|
|
displayDialogFlag = false
|
|
args(0) = ThisComponent
|
|
args(1) = displayDialogFlag
|
|
|
|
ScriptProvider = createUnoService("drafts.com.sun.star.script.framework.provider.MasterScriptProvider")
|
|
ScriptProvider.initialize( args() )
|
|
|
|
locCombo = bindingDialog.getControl( "LocationCombo" )
|
|
locCombo.removeItems( 0, locCombo.getItemCount() )
|
|
for n = LBOUND( locations() ) to UBOUND ( locations() )
|
|
locCombo.addItem( locations( n ), n )
|
|
next n
|
|
locCombo.setDropDownLineCount( n )
|
|
locCombo.text = locCombo.getItem( 0 )
|
|
End Sub
|
|
|
|
sub PopulateScriptList( lang as String, loc as String )
|
|
Dim detailedView as boolean
|
|
detailedView = bindingDialog.Model.detail.state
|
|
scriptList = bindingDialog.getControl( "ScriptList" )
|
|
scriptList.removeItems( 0, scriptList.getItemCount() )
|
|
|
|
smgr = getProcessServiceManager()
|
|
context = smgr.getPropertyValue( "DefaultContext" )
|
|
scriptstoragemgr = context.getValueByName( "/singletons/drafts.com.sun.star.script.framework.storage.theScriptStorageManager" )
|
|
scriptLocationURI = "USER"
|
|
if ( loc = "Share" ) then
|
|
scriptLocationURI = "SHARE"
|
|
elseif ( loc = "Document" )then
|
|
document = StarDesktop.ActiveFrame.Controller.Model
|
|
scriptLocationURI = document.getURL()
|
|
elseif ( loc = "Filesystem" ) then
|
|
REM populate the list from the filesysScripts list
|
|
if(lang = "Java" ) then
|
|
exit sub
|
|
endif
|
|
length = UBOUND( filesysScripts() )
|
|
if(length = -1) then
|
|
exit sub
|
|
endif
|
|
for langIndex = lbound(languages()) to ubound(languages())
|
|
if ( lang = languages(langIndex)) then
|
|
extns = extensions(langIndex)
|
|
exit for
|
|
endif
|
|
next langIndex
|
|
dim locnDisplayList( length ) as new com.sun.star.beans.PropertyValue
|
|
for index = lbound(filesysScripts()) to ubound(filesysScripts())
|
|
scriptextn = filesysScripts( index )
|
|
pos = lastIndexOf( scriptextn, "." )
|
|
scriptextn = mid( scriptextn, pos + 1, len( scriptextn ) - pos )
|
|
|
|
for extnsIndex = lbound(extns()) to ubound(extns())
|
|
extn = extns(extnsIndex)
|
|
if ( scriptextn = extn ) then
|
|
if ( detailedView ) then
|
|
locnDisplayList( index ).Name = filesysScripts( index )
|
|
locnDisplayList( index ).Value = filesysScripts( index )
|
|
else
|
|
REM replace name with simplified view
|
|
locnDisplayList( index ).Name = filesysScripts( index )
|
|
locnDisplayList( index ).Value = filesysScripts( index )
|
|
end if
|
|
scriptList.addItem( locnDisplayList( index ).Name, index )
|
|
exit for
|
|
end if
|
|
next extnsIndex
|
|
next index
|
|
ScriptDisplayList(0) = locnDisplayList()
|
|
scriptList.selectItemPos( 0, true )
|
|
|
|
REM !!!!At this point we exit the sub!!!!
|
|
exit sub
|
|
|
|
endif
|
|
|
|
scriptStorageID = scriptstoragemgr.getScriptStorageID( scriptLocationURI )
|
|
dim resultList() as Object
|
|
if ( scriptStorageID > -1 ) then
|
|
storage = scriptstoragemgr.getScriptStorage( scriptStorageID )
|
|
implementations() = storage.getAllImplementations()
|
|
length = UBOUND( implementations() )
|
|
reservedScriptTag = "_$"
|
|
if ( length > -1 ) then
|
|
dim tempDisplayList( length ) as new com.sun.star.beans.PropertyValue
|
|
for n = LBOUND( implementations() ) to UBOUND( implementations() )
|
|
logicalName = implementations( n ).getLogicalName()
|
|
firstTwoChars = LEFT( logicalName, 2 )
|
|
'Only display scripts whose logicalnames don't begin with "_$"
|
|
if ( firstTwoChars <> reservedScriptTag ) then
|
|
if ( lang = implementations( n ).getLanguage() ) then
|
|
if ( detailedView ) then
|
|
tempDisplayList( n ).Name = logicalName _
|
|
+ " [" + implementations( n ).getFunctionName() + "]"
|
|
tempDisplayList( n ).Value = implementations( n )
|
|
else
|
|
tempDisplayList( n ).Name = logicalName
|
|
tempDisplayList( n ).Value = implementations( n )
|
|
endif
|
|
scriptList.addItem( tempDisplayList( n ).Name, n )
|
|
endif
|
|
endif
|
|
next n
|
|
resultList = tempDisplayList()
|
|
endif
|
|
ScriptDisplayList(0) = resultList()
|
|
endif
|
|
scriptList.selectItemPos( 0, true )
|
|
|
|
end sub
|
|
|
|
sub PopulateMenuCombo()
|
|
menuComboBox = bindingDialog.getControl( "MenuCombo" )
|
|
menuComboBox.removeItems( 0, menuComboBox.getItemCount() )
|
|
for n = 1 to menuCount
|
|
menuComboBox.addItem( menuItems( n ), n - 1 )
|
|
next n
|
|
menuComboBox.setDropDownLineCount( 8 )
|
|
menuComboBox.text = menuComboBox.getItem( 0 )
|
|
end sub
|
|
|
|
|
|
sub PopulateSubMenuList( menuItemPosition as integer )
|
|
redim subMenuItems( 100 ) as string
|
|
redim subMenuItemLinePosition( 100 ) as integer
|
|
dim lineNumber as integer
|
|
const menuItemWhiteSpace = 4
|
|
const menuXMLTag = "<menu:menu"
|
|
subMenuCount = 1
|
|
|
|
REM xmlStartLine and xmlEndLine refer to the first and last lines
|
|
' menuItemPosition of a top-level menu ( 1=File to 8=Help ) add one line
|
|
xmlStartLine = menuItemLinePosition( menuItemPosition ) + 1
|
|
|
|
REM If last menu item is chosen
|
|
if menuItemPosition = menuCount then
|
|
xmlEndLine = numberOfLines
|
|
else
|
|
REM Other wise get the line before the next top-level menu begins
|
|
xmlEndLine = menuItemLinePosition( menuItemPosition + 1 ) - 1
|
|
end if
|
|
|
|
for lineNumber = xmlStartLine to xmlEndLine
|
|
REM Insert all sub-menus and sub-popupmenus
|
|
if not( instr( xmlFile( lineNumber ), menuXMLTag ) = 0 ) and instr( xmlFile( lineNumber ), "menupopup") = 0 then
|
|
subMenuIndent = GetMenuWhiteSpace( xmlFile( lineNumber ) )
|
|
if subMenuIndent = " " then
|
|
subMenuIndent = ""
|
|
else
|
|
subMenuIndent = subMenuIndent + subMenuIndent
|
|
end if
|
|
if not( instr( xmlFile( lineNumber ), "menuseparator" ) = 0 ) then
|
|
subMenuItems( subMenuCount ) = subMenuIndent + "----------------"
|
|
else
|
|
subMenuName = ExtractLabelFromXMLLine( xmlFile( lineNumber ) )
|
|
REM Add script Name if there is one bound to menu item
|
|
if instr( xmlFile( lineNumber ), "script://" ) > 0 then
|
|
script = ExtractScriptIdFromXMLLine( xmlFile( lineNumber ) )
|
|
subMenuItems( subMenuCount ) = ( subMenuIndent + subMenuName + " [" + script + "]" )
|
|
else
|
|
subMenuItems( subMenuCount ) = subMenuIndent + subMenuName
|
|
end if
|
|
end if
|
|
subMenuItemLinePosition( subMenuCount ) = lineNumber
|
|
subMenuCount = subMenuCount + 1
|
|
end if
|
|
next lineNumber
|
|
|
|
subMenuList = bindingDialog.getControl( "SubMenuList" )
|
|
|
|
currentPosition = subMenuList.getSelectedItemPos()
|
|
|
|
subMenuList.removeItems( 0, subMenuList.getItemCount() )
|
|
'If there are no sub-menus i.e. a dynamically generated menu like Format
|
|
'if subMenuCount = 1 then
|
|
if menuItems( menuItemPosition ) = "Format" then
|
|
subMenuList.addItem( "Unable to Assign Scripts to this menu", 0 )
|
|
else
|
|
for n = 1 to subMenuCount - 1
|
|
subMenuList.addItem( subMenuItems( n ), n - 1 )
|
|
next n
|
|
end if
|
|
|
|
subMenuList.selectItemPos( currentPosition, true )
|
|
|
|
SubMenuListListener()
|
|
MenuLabelBoxListener()
|
|
end sub
|
|
|
|
|
|
|
|
sub PopulateTopLevelKeyBindingList()
|
|
|
|
allKeyGroupsArray(0) = "SHIFT + CONTROL + F keys"
|
|
allKeyGroupsArray(1) = "SHIFT + CONTROL + digits" ' CURRENTLY DISABLED
|
|
allKeyGroupsArray(2) = "SHIFT + CONTROL + letters"
|
|
allKeyGroupsArray(3) = "CONTROL + F keys"
|
|
allKeyGroupsArray(4) = "CONTROL + digits"
|
|
allKeyGroupsArray(5) = "CONTROL + letters"
|
|
allKeyGroupsArray(6) = "SHIFT + F keys"
|
|
|
|
keyCombo = bindingDialog.getControl( "KeyCombo" )
|
|
keyCombo.removeItems( 0, keyCombo.getItemCount() )
|
|
pos = 0
|
|
for n = LBOUND( allKeyGroupsArray() ) to UBOUND( allKeyGroupsArray() )
|
|
' SHIFT + CONTROL + digits group is disabled at the moment, so skip
|
|
' it
|
|
if ( n <> 1 ) then
|
|
keyCombo.addItem( allKeyGroupsArray( n ), pos )
|
|
pos = pos +1
|
|
endif
|
|
next n
|
|
keyCombo.text = keyCombo.getItem( 0 )
|
|
end sub
|
|
|
|
sub PopulateKeyBindingList( keyGroupIndex as Integer )
|
|
keyList = bindingDialog.getControl( "KeyList" )
|
|
selectedPos = keyList.getSelectedItemPos()
|
|
keyList.removeItems( 0, keyList.getItemCount() )
|
|
|
|
ShortCutKeyArray() = KeyBindArrayOfArrays( keyGroupIndex )
|
|
|
|
Dim keyProp as new com.sun.star.beans.PropertyValue
|
|
for n = lbound( ShortCutKeyArray() ) to ubound( ShortCutKeyArray() )
|
|
keyName = ShortCutKeyArray( n )
|
|
if ( keyAllocationMap( keyGroupIndex, n ).Value = 1 ) then
|
|
keyName = keyName + " [Allocated to Office function]"
|
|
|
|
elseif ( keyAllocationMap( keyGroupIndex, n ).Value > 1 ) then
|
|
keyName = keyName + " " + keyAllocationMap( keyGroupIndex, n ).Name
|
|
endif
|
|
keyList.addItem( keyName, n )
|
|
next n
|
|
|
|
if ( selectedPos <> -1 )then
|
|
keyList.selectItemPos( selectedPos, true )
|
|
else
|
|
keyList.selectItemPos( 0, true )
|
|
end if
|
|
KeyListListener()
|
|
end sub
|
|
|
|
sub populateEventList( focusPosition as integer )
|
|
allApps = bindingDialog.getControl( "AllAppsOption" )
|
|
eventList = bindingDialog.getControl( "EventList" )
|
|
eventList.removeItems( 0, eventList.getItemCount() )
|
|
|
|
dim isApp as boolean
|
|
if allApps.state = true then ' Application event
|
|
isApp = true
|
|
else
|
|
isApp = false
|
|
end if
|
|
|
|
' use allEventTypes() to fill list box
|
|
' for each element compare with allEventTypesApp
|
|
dim scriptName as string
|
|
dim lineNumber as integer
|
|
for n = 0 to ubound( allEventTypes() )
|
|
' If the line number is 1 then SB macro
|
|
' more than 1 it is the line number of the script
|
|
if isApp and n > 12 then
|
|
exit for
|
|
endif
|
|
if isApp then
|
|
lineNumber = allEventTypesApp( n ).Value
|
|
scriptName = allEventTypesApp( n ).Name
|
|
else
|
|
lineNumber = allEventTypesDoc( n ).Value
|
|
scriptName = allEventTypesDoc( n ).Name
|
|
end if
|
|
stringToAdd = ""
|
|
if ( lineNumber >= 1 ) then
|
|
stringToAdd = " [" + scriptName + "]"
|
|
end if
|
|
eventList.addItem( allEventTypes( n ).Value + " " + stringToAdd, n )
|
|
next n
|
|
|
|
eventList.selectItemPos( focusPosition, true )
|
|
end sub
|
|
|
|
|
|
|
|
sub CreateAllKeyBindings()
|
|
reDim allKeyBindings( 105 ) as string
|
|
keyBindingPosition = 1
|
|
|
|
for FKey = 2 to 12
|
|
allKeyBindings( keyBindingPosition ) = "SHIFT + CONTROL + F" + FKey
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next FKey
|
|
for Digit = 0 to 9
|
|
allKeyBindings( keyBindingPosition ) = "SHIFT + CONTROL + " + Digit
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next Digit
|
|
for Alpha = 65 to 90
|
|
allKeyBindings( keyBindingPosition ) = "SHIFT + CONTROL + " + chr$( Alpha )
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next Alpha
|
|
|
|
for FKey = 2 to 12
|
|
allKeyBindings( keyBindingPosition ) = "CONTROL + F" + FKey
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next FKey
|
|
for Digit = 0 to 9
|
|
allKeyBindings( keyBindingPosition ) = "CONTROL + " + Digit
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next Digit
|
|
for Alpha = 65 to 90
|
|
allKeyBindings( keyBindingPosition ) = "CONTROL + " + chr$( Alpha )
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next Alpha
|
|
|
|
for FKey = 2 to 12
|
|
allKeyBindings( keyBindingPosition ) = "SHIFT + F" + FKey
|
|
keyBindingPosition = keyBindingPosition + 1
|
|
next FKey
|
|
end sub
|
|
|
|
|
|
sub createAllEventTypes()
|
|
allEventTypes( 0 ).Name = "OnStartApp"
|
|
allEventTypes( 0 ).Value = "Start Application"
|
|
allEventTypes( 1 ).Name = "OnCloseApp"
|
|
allEventTypes( 1 ).Value = "Close Application"
|
|
allEventTypes( 2 ).Name = "OnNew"
|
|
allEventTypes( 2 ).Value = "Create Document"
|
|
allEventTypes( 3 ).Name = "OnLoad"
|
|
allEventTypes( 3 ).Value = "Open Document"
|
|
allEventTypes( 4 ).Name = "OnSaveAs"
|
|
allEventTypes( 4 ).Value = "Save Document As"
|
|
allEventTypes( 5 ).Name = "OnSaveAsDone"
|
|
allEventTypes( 5 ).Value = "Document has been saved as"
|
|
allEventTypes( 6 ).Name = "OnSave"
|
|
allEventTypes( 6 ).Value = "Save Document"
|
|
allEventTypes( 7 ).Name = "OnSaveDone"
|
|
allEventTypes( 7 ).Value = "Document has been saved"
|
|
allEventTypes( 8 ).Name = "OnPrepareUnload"
|
|
allEventTypes( 8 ).Value = "Close Document"
|
|
allEventTypes( 9 ).Name = "OnUnload"
|
|
allEventTypes( 9 ).Value = "Close Document"
|
|
allEventTypes( 10 ).Name = "OnFocus"
|
|
allEventTypes( 10 ).Value = "Activate document"
|
|
allEventTypes( 11 ).Name = "OnUnfocus"
|
|
allEventTypes( 11 ).Value = "DeActivate document"
|
|
allEventTypes( 12 ).Name = "OnPrint"
|
|
allEventTypes( 12 ).Value = "Print Document"
|
|
REM The following are document-only events
|
|
allEventTypes( 13 ).Name = "OnMailMerge"
|
|
allEventTypes( 13 ).Value = "Print form letters"
|
|
allEventTypes( 14 ).Name = "OnPageCountChange"
|
|
allEventTypes( 14 ).Value = "Changing the page count"
|
|
end sub
|
|
|
|
|
|
sub createAllEventBindings()
|
|
'dim props as new com.sun.star.beans.PropertyValue
|
|
'props.Name = "" 'Name = script name
|
|
'props.Value = 0 'Value = 0 for empty, 1 for macro, linenumber for script
|
|
|
|
' Creates all types of event bindings for both Application and Document
|
|
' Initially both arrays have no bindings allocated to the events
|
|
' The value for Doc is only Script/macro name (no need for line number)
|
|
for n = 0 to ubound( allEventTypes() )
|
|
allEventTypesApp( n ).Name = ""
|
|
allEventTypesApp( n ).Value = 0
|
|
allEventTypesDoc( n ).Name = ""
|
|
allEventTypesDoc( n ).Value = 0
|
|
next n
|
|
end sub
|
|
|
|
|
|
REM ----- Text Handling Functions -----
|
|
|
|
|
|
function ExtractLabelFromXMLLine( XMLLine as string ) as string
|
|
labelStart = instr( XMLLine, "label="+chr$(34)) + 7
|
|
labelEnd = instr( XMLLine, chr$(34)+">" )
|
|
if labelEnd = 0 then
|
|
labelEnd = instr( XMLLine, chr$(34)+"/>" )
|
|
end if
|
|
labelLength = labelEnd - labelStart
|
|
|
|
menuLabelUnformatted = mid( XMLLine, labelStart, labelLength )
|
|
tildePosition = instr( menuLabelUnformatted, "~" )
|
|
select case tildePosition
|
|
case 0
|
|
menuLabel = menuLabelUnformatted
|
|
case 1
|
|
menuLabel = right( menuLabelUnformatted, labelLength - 1 )
|
|
case else
|
|
menuLabelLeft = left( menuLabelUnformatted, tildePosition - 1 )
|
|
menuLabelRight = right( menuLabelUnformatted, labelLength - tildePosition )
|
|
menuLabel = menuLabelLeft + menuLabelRight
|
|
end select
|
|
|
|
ExtractLabelFromXMLLine() = menuLabel
|
|
end function
|
|
|
|
|
|
function ExtractScriptIdFromXMLLine( XMLLine as string ) as string
|
|
idStart = instr( XMLLine, "script://") + 9
|
|
if instr( XMLLine, chr$(34)+" menu:helpid=" ) = 0 then
|
|
idEnd = instr( XMLLIne, "?location=" )
|
|
else
|
|
idEnd = instr( XMLLine, ""+chr$(34)+" menu:helpid=" )
|
|
end if
|
|
idLength = idEnd - idStart
|
|
scriptId = mid( XMLLine, idStart, idLength )
|
|
|
|
ExtractScriptIdFromXMLLine() = scriptId
|
|
end function
|
|
|
|
function ExtractEventScriptFromXMLLine( xmlline as string )
|
|
if instr( xmlline, "script://" ) > 0 then
|
|
idStart = instr( xmlline, "script://") + 9
|
|
idEnd = instr( xmlline, chr$(34)+" xlink:type=" )
|
|
idLength = idEnd - idStart
|
|
scriptId = mid( xmlline, idStart, idLength )
|
|
end if
|
|
ExtractEventScriptFromXMLLine() = scriptId
|
|
end function
|
|
|
|
|
|
function ExtractEventNameFromXMLLine( xmlline as string )
|
|
idStart = instr( xmlline, "event:name=" + chr$(34) ) + 12
|
|
idEnd = instr( xmlline, chr$(34)+" event:language" )
|
|
idLength = idEnd - idStart
|
|
event = mid( xmlline, idStart, idLength )
|
|
|
|
ExtractEventNameFromXMLLine() = event
|
|
end function
|
|
|
|
function ExtractKeyCodeFromXMLLine( XMLLine as string ) as string
|
|
keyStart = instr( XMLLine, "code="+chr$(34)+"KEY_") + 10
|
|
keyCode = mid( XMLLine, keyStart, ( len( XMLLine ) - keyStart ) )
|
|
keyEnd = instr( keyCode, chr$(34) )
|
|
keyCode = mid( keyCode, 1, keyEnd - 1 )
|
|
|
|
ExtractKeyCodeFromXMLLine() = keyCode
|
|
end function
|
|
|
|
|
|
function GetMenuWhiteSpace( MenuXMLLine as string ) as string
|
|
whiteSpace = ""
|
|
numberOfSpaces = instr( MenuXMLLine, "<" ) - 1
|
|
for i = 1 to numberOfSpaces
|
|
whiteSpace = whiteSpace + " "
|
|
next i
|
|
|
|
GetMenuWhiteSpace() = whiteSpace
|
|
end function
|
|
|
|
function IsAllocatedMenuItem( script as string ) as boolean
|
|
foundMenuItem = false
|
|
Allocated = false
|
|
count = 0
|
|
do
|
|
count = count + 1
|
|
if strcomp( script, subMenuItems( count ) ) = 0 then
|
|
foundMenuItem = true
|
|
end if
|
|
loop while not( foundMenuItem ) and count < subMenuCount
|
|
|
|
linePosition = subMenuItemLinePosition( count )
|
|
|
|
if not( instr( xmlFile( linePosition ), "script://" ) = 0 ) then
|
|
Allocated = true
|
|
end if
|
|
|
|
isAllocatedMenuItem() = Allocated
|
|
end Function
|
|
|
|
|
|
function HasShiftKey( keyCombo ) as boolean
|
|
if instr( keyCombo, "SHIFT" ) = 0 then
|
|
hasShift = false
|
|
else
|
|
hasShift = true
|
|
end if
|
|
|
|
HasShiftKey = hasShift
|
|
end function
|
|
|
|
|
|
function HasControlKey( keyCombo ) as boolean
|
|
if instr( keyCombo, "CONTROL" ) = 0 then
|
|
hasControl = false
|
|
else
|
|
hasControl = true
|
|
end if
|
|
|
|
HasControlKey = hasControl
|
|
end function
|
|
|
|
|
|
function ExtractKeyFromCombo( keyString as string ) as string
|
|
while not( instr( keyString, "+" ) = 0 )
|
|
removeTo = instr( keyString, "+ " ) + 2
|
|
keyString = mid( keyString, removeTo, ( len( keyString ) - removeTo ) + 1 )
|
|
wend
|
|
ExtractKeyFromCombo() = keyString
|
|
end function
|
|
|
|
|
|
|
|
REM ------ Event Handling Functions (Listeners) ------
|
|
|
|
|
|
sub KeyListListener()
|
|
keyShortCutList = bindingDialog.getControl( "KeyList" )
|
|
selectedShortCut = keyShortCutList.getSelectedItem()
|
|
combo = bindingDialog.getControl( "KeyCombo" )
|
|
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = menuScriptList.getSelectedItem()
|
|
|
|
keyGroup = combo.text
|
|
dim keyGroupIndex as Integer
|
|
dim selectedKeyIndex as Integer
|
|
for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
|
|
if ( allKeyGroupsArray( n ) = keyGroup )then
|
|
keyGroupIndex = n
|
|
exit for
|
|
end if
|
|
next n
|
|
selectedKeyIndex = keyShortCutList.getSelectedItemPos()
|
|
|
|
if keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value > 1 then
|
|
bindingDialog.Model.Delete.enabled = true
|
|
bindingDialog.Model.AddOn.enabled = true
|
|
if selectedScript <> "" then
|
|
bindingDialog.Model.NewButton.enabled = true
|
|
endif
|
|
|
|
else
|
|
|
|
if keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value = 1 then
|
|
bindingDialog.Model.Delete.enabled = false
|
|
bindingDialog.Model.AddOn.enabled = false
|
|
bindingDialog.Model.NewButton.enabled = false
|
|
else
|
|
bindingDialog.Model.Delete.enabled = false
|
|
bindingDialog.Model.AddOn.enabled = false
|
|
if selectedScript <> "" then
|
|
bindingDialog.Model.NewButton.enabled = true
|
|
end if
|
|
end if
|
|
end if
|
|
end sub
|
|
|
|
|
|
sub SubMenuListListener()
|
|
scriptList = bindingDialog.getControl( "ScriptList" )
|
|
subMenuList = bindingDialog.getControl( "SubMenuList" )
|
|
selectedMenuItem = subMenuList.getSelectedItem()
|
|
if IsAllocatedMenuItem( selectedMenuItem ) then
|
|
bindingDialog.Model.Delete.enabled = true
|
|
bindingDialog.Model.AddOn.enabled = true
|
|
else
|
|
bindingDialog.Model.Delete.enabled = false
|
|
bindingDialog.Model.AddOn.enabled = false
|
|
end if
|
|
end sub
|
|
|
|
REM a keypress listener that in turn fires the MenuCL on a return key even only
|
|
sub fireMenuComboListernerOnRet( eventobj as object )
|
|
if (eventobj.KeyCode = 1280 ) then
|
|
MenuComboListener()
|
|
endif
|
|
end sub
|
|
|
|
'Populates the SubMenuList with the appropriate menu items from the Top-level menu selected from the combo box
|
|
sub MenuComboListener()
|
|
combo = bindingDialog.getControl( "MenuCombo" )
|
|
newToplevelMenu = combo.text
|
|
counter = 0
|
|
do
|
|
counter = counter + 1
|
|
loop while not( newToplevelMenu = menuItems( counter ) )
|
|
|
|
PopulateSubMenuList( counter )
|
|
end sub
|
|
|
|
REM a keypress listener that in turn fires the LLCL on a return key even only
|
|
sub fireLangLocComboListernerOnRet( eventobj as object )
|
|
if (eventobj.KeyCode = 1280 ) then
|
|
LangLocComboListener()
|
|
endif
|
|
end sub
|
|
|
|
sub LangLocComboListener()
|
|
|
|
combo = bindingDialog.getControl( "LanguageCombo" )
|
|
language = combo.text
|
|
combo = bindingDialog.getControl( "LocationCombo" )
|
|
location = combo.text
|
|
|
|
PopulateScriptList( language,location )
|
|
|
|
'Enable/disable Assign button
|
|
scriptList = bindingDialog.getControl( "ScriptList" )
|
|
if not (dialogName = "EditDebug") then
|
|
if scriptList.getSelectedItem() = "" then
|
|
bindingDialog.Model.NewButton.enabled = false
|
|
end if
|
|
end if
|
|
|
|
if ( location = "Filesystem" ) and ( language <> "Java" ) then
|
|
bindingDialog.Model.Browse.enabled = true
|
|
if not (dialogName = "EditDebug") then
|
|
bindingDialog.Model.fsonly.enabled = true
|
|
end if
|
|
else
|
|
bindingDialog.Model.Browse.enabled = false
|
|
if not (dialogName = "EditDebug") then
|
|
bindingDialog.Model.fsonly.enabled = false
|
|
end if
|
|
endif
|
|
|
|
' extra dialog dependant processing
|
|
if dialogName = "Menu" then
|
|
' will set New button to false if no text in LableBox
|
|
MenuLabelBoxListener()
|
|
elseif dialogName = "Key" then
|
|
' will set Assigne button to false if appropriate
|
|
KeyListListener()
|
|
elseif dialogName = "Event" then
|
|
EventListListener()
|
|
end if
|
|
|
|
end sub
|
|
|
|
REM a keypress listener that in turn fires the KeyCL on a return key even only
|
|
sub fireKeyComboListernerOnRet( eventobj as object )
|
|
if (eventobj.KeyCode = 1280 ) then
|
|
KeyComboListener()
|
|
endif
|
|
end sub
|
|
|
|
'Populates the KeyList with the appropriate key combos from the Top-level key group selected from the combo box
|
|
sub KeyComboListener()
|
|
combo = bindingDialog.getControl( "KeyCombo" )
|
|
keyGroup = combo.text
|
|
for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
|
|
if ( allKeyGroupsArray( n ) = keyGroup )then
|
|
keyGroupIndex = n
|
|
exit for
|
|
end if
|
|
next n
|
|
PopulateKeyBindingList( keyGroupIndex )
|
|
end sub
|
|
|
|
|
|
sub MenuLabelBoxListener()
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = menuScriptList.getSelectedItem()
|
|
'if the SubMenuList is from a dynamically created menu (e.g. Format)
|
|
'or if the Menu Label text box is empty
|
|
subMenuList = bindingDialog.getControl( "SubMenuList" )
|
|
firstItem = subMenuList.getItem( 0 )
|
|
if bindingDialog.Model.MenuLabelBox.text = "" OR firstItem = "Unable to Assign Scripts to this menu" OR selectedScript = "" then
|
|
bindingDialog.Model.NewButton.enabled = false
|
|
else
|
|
bindingDialog.Model.NewButton.enabled = true
|
|
end if
|
|
end sub
|
|
|
|
sub AppDocEventListener()
|
|
populateEventList( 0 )
|
|
EventListListener()
|
|
end sub
|
|
|
|
|
|
sub EventListListener()
|
|
on error goto ErrorHandler
|
|
|
|
eventList = bindingDialog.getControl( "EventList" )
|
|
eventPos = eventList.getSelectedItemPos()
|
|
|
|
allApps = bindingDialog.getControl( "AllAppsOption" )
|
|
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = menuScriptList.getSelectedItem()
|
|
|
|
dim binding as integer
|
|
if allApps.state = true then
|
|
binding = allEventTypesApp( eventPos ).Value
|
|
else
|
|
binding = allEventTypesDoc( eventPos ).Value
|
|
endif
|
|
|
|
if ( binding > 1 ) then
|
|
bindingDialog.Model.Delete.enabled = true
|
|
else
|
|
bindingDialog.Model.Delete.enabled = false
|
|
end if
|
|
|
|
if ( binding = 1 ) then
|
|
' staroffice binding, can't assign
|
|
bindingDialog.Model.NewButton.enabled = false
|
|
elseif ( selectedScript <> "" ) then
|
|
bindingDialog.Model.NewButton.enabled = true
|
|
end if
|
|
exit sub
|
|
|
|
ErrorHandler:
|
|
reset
|
|
bindingDialog.Model.Delete.enabled = false
|
|
|
|
end sub
|
|
|
|
|
|
REM ------ Event Handling Functions (Buttons) ------
|
|
|
|
function getFilePicker() as Object
|
|
REM file dialog
|
|
oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
|
|
|
|
combo = bindingDialog.getControl( "LanguageCombo" )
|
|
language = combo.text
|
|
currentFilter = ""
|
|
|
|
for langIndex = 0 to ubound(languages())
|
|
if( languages(langIndex) <> "Java" ) then
|
|
filterName = languages(langIndex) + " ("
|
|
filterVal=""
|
|
extns = extensions(langIndex)
|
|
for extnIndex = lbound(extns()) to ubound(extns())
|
|
filterName = filterName + "*." + extns(extnIndex) + ","
|
|
filterVal = filterVal + "*." + extns(extnIndex) + ","
|
|
next extnIndex
|
|
filterName = left(filterName, len(filterName) -1) + ")"
|
|
filterVal = left(filterVal, len(filterVal) -1)
|
|
if(instr(filterName,language) = 1 ) then
|
|
currentFilter = filterName
|
|
end if
|
|
oFilePicker.AppendFilter(filterName, filterVal)
|
|
end if
|
|
next langIndex
|
|
if(len(currentFilter) > 0 ) then
|
|
oFilePicker.SetCurrentFilter( currentFilter )
|
|
end if
|
|
|
|
If sFileURL = "" Then
|
|
oSettings = CreateUnoService( "com.sun.star.frame.Settings" )
|
|
oPathSettings = oSettings.getByName( "PathSettings" )
|
|
sFileURL = oPathSettings.getPropertyValue( "Work" )
|
|
End If
|
|
|
|
REM set display directory
|
|
oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
|
|
|
|
If oSimpleFileAccess.exists( sFileURL ) And oSimpleFileAccess.isFolder( sFileURL ) Then
|
|
oFilePicker.setDisplayDirectory( sFileURL )
|
|
End If
|
|
getFilePicker() = oFilePicker
|
|
end function
|
|
|
|
Sub DoBrowseAndEdit()
|
|
Dim oFilePicker As Object, oSimpleFileAccess As Object
|
|
Dim oSettings As Object, oPathSettings As Object
|
|
Dim sFileURL As String
|
|
Dim sFiles As Variant
|
|
|
|
oFilePicker = getFilePicker()
|
|
REM execute file dialog
|
|
If oFilePicker.execute() Then
|
|
sFiles = oFilePicker.getFiles()
|
|
|
|
sFileURL = sFiles(0)
|
|
oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
|
|
If oSimpleFileAccess.exists( sFileURL ) Then
|
|
for langIndex = 0 to ubound(languages())
|
|
If (instr(oFilePicker.GetCurrentFilter, languages(langIndex)) = 1 ) then
|
|
RunDebugger(languages(langIndex), sFileURL, "")
|
|
End If
|
|
next langIndex
|
|
End If
|
|
bindingDialog.endExecute()
|
|
End If
|
|
End Sub
|
|
|
|
Sub RunDebugger(lang as String, uri as String, filename as String)
|
|
dim document as object
|
|
dim dispatcher as object
|
|
dim parser as object
|
|
dim url as new com.sun.star.util.URL
|
|
|
|
document = ThisComponent.CurrentController.Frame
|
|
parser = createUnoService("com.sun.star.util.URLTransformer")
|
|
dim args(2) as new com.sun.star.beans.PropertyValue
|
|
args(0).Name = "language"
|
|
args(0).Value = lang
|
|
args(1).Name = "uri"
|
|
args(1).Value = uri
|
|
args(2).Name = "filename"
|
|
args(2).Value = filename
|
|
|
|
url.Complete = "script://_$DebugRunner.Debug?" _
|
|
+ "language=Java&function=DebugRunner.go" _
|
|
+ "&location=share"
|
|
|
|
parser.parseStrict(url)
|
|
disp = document.queryDispatch(url,"",0)
|
|
disp.dispatch(url, args())
|
|
End Sub
|
|
|
|
sub DoEdit()
|
|
Dim scriptInfo as Object
|
|
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = menuScriptList.getSelectedItem()
|
|
|
|
if not (selectedScript = "") then
|
|
scripts() = scriptDisplayList(0)
|
|
for n = LBOUND( scripts() ) to UBOUND( scripts() )
|
|
if ( scripts( n ).Name = selectedScript ) then
|
|
scriptInfo = scripts( n ).Value
|
|
exit for
|
|
end if
|
|
next n
|
|
|
|
RunDebugger(scriptInfo.getLanguage, scriptInfo.getParcelURI, scriptInfo.getFunctionName)
|
|
bindingDialog.endExecute()
|
|
end if
|
|
end sub
|
|
|
|
sub MenuOKButton()
|
|
WriteXMLFromArray()
|
|
bindingDialog.endExecute()
|
|
end sub
|
|
|
|
|
|
sub MenuCancelButton()
|
|
bindingDialog.endExecute()
|
|
end sub
|
|
|
|
|
|
sub MenuHelpButton()
|
|
helpDialog = LoadDialog( "ScriptBindingLibrary", "HelpBinding" )
|
|
helpDialog.execute()
|
|
end sub
|
|
|
|
|
|
sub MenuDeleteButton()
|
|
subMenuList = bindingDialog.getControl( "SubMenuList" )
|
|
linePos = subMenuItemLinePosition( subMenuList.getSelectedItemPos() + 1 )
|
|
|
|
RemoveBinding( linePos )
|
|
|
|
REM Update the top-level menu's line positions
|
|
combo = bindingDialog.getControl( "MenuCombo" )
|
|
newToplevelMenu = combo.text
|
|
counter = 0
|
|
do
|
|
counter = counter + 1
|
|
loop while not( newToplevelMenu = menuItems( counter ) )
|
|
UpdateTopLevelMenus( counter + 1, false )
|
|
|
|
MenuComboListener()
|
|
|
|
subMenuList.selectItemPos( subMenuList.getSelectedItemPos(), true )
|
|
end sub
|
|
|
|
|
|
sub MenuNewButton()
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = menuScriptList.getSelectedItem()
|
|
scriptURI = getScriptURI( selectedScript )
|
|
newMenuLabel = bindingDialog.Model.MenuLabelBox.text
|
|
|
|
subMenuList = bindingDialog.getControl( "SubMenuList" )
|
|
|
|
REM Update the top-level menu's line positions
|
|
combo = bindingDialog.getControl( "MenuCombo" )
|
|
newToplevelMenu = combo.text
|
|
counter = 0
|
|
do
|
|
counter = counter + 1
|
|
loop while not( newToplevelMenu = menuItems( counter ) )
|
|
UpdateTopLevelMenus( counter + 1, true )
|
|
|
|
REM New line position is one ahead of the selected sub menu item
|
|
linePos = subMenuItemLinePosition( subMenuList.getSelectedItemPos() + 1 ) + 1
|
|
|
|
AddNewMenuBinding( scriptURI, newMenuLabel, linePos )
|
|
|
|
MenuComboListener()
|
|
subMenuList.selectItemPos( subMenuList.getSelectedItemPos() + 1, true )
|
|
SubMenuListListener()
|
|
end sub
|
|
|
|
sub BrowseButton()
|
|
Dim oFilePicker As Object, oSimpleFileAccess As Object
|
|
Dim oSettings As Object, oPathSettings As Object
|
|
Dim sFileURL As String
|
|
Dim sFiles As Variant
|
|
|
|
oFilePicker = getFilePicker()
|
|
|
|
REM execute file dialog
|
|
If oFilePicker.execute() Then
|
|
sFiles = oFilePicker.getFiles()
|
|
sFileURL = sFiles(0)
|
|
oSimpleFileAccess = CreateUnoService( "com.sun.star.ucb.SimpleFileAccess" )
|
|
If oSimpleFileAccess.exists( sFileURL ) Then
|
|
REM add sFileURL to the list
|
|
ReDim preserve filesysScripts(filesysCount) as String
|
|
filesysScripts( filesysCount ) = sFileURL
|
|
filesysCount=filesysCount+1
|
|
' if user changed filter in file picker then populate
|
|
' language with language associated with that in file picker
|
|
sFilter = oFilePicker.getCurrentFilter()
|
|
langCombo = bindingDialog.getControl( "LanguageCombo" )
|
|
dim items() as String
|
|
items() = langCombo.getItems()
|
|
for index = lbound(items()) to ubound(items())
|
|
iPos = inStr(sFilter," ")
|
|
Dim theLanguage as String
|
|
if( iPos > 0 ) then
|
|
theLanguage = Left( sFilter, iPos - 1)
|
|
if ( theLanguage = items( index ) ) then
|
|
langCombo.text = items( index )
|
|
exit for
|
|
end if
|
|
end if
|
|
next index
|
|
End If
|
|
End If
|
|
LangLocComboListener()
|
|
End Sub
|
|
|
|
sub KeyOKButton()
|
|
WriteXMLFromArray()
|
|
bindingDialog.endExecute()
|
|
end sub
|
|
|
|
|
|
sub KeyCancelButton()
|
|
bindingDialog.endExecute()
|
|
end sub
|
|
|
|
|
|
sub KeyHelpButton()
|
|
helpDialog = LoadDialog( "ScriptBindingLibrary", "HelpBinding" )
|
|
helpDialog.execute()
|
|
end sub
|
|
|
|
|
|
sub KeyNewButton()
|
|
combo = bindingDialog.getControl( "KeyCombo" )
|
|
keyGroup = combo.text
|
|
for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
|
|
if ( allKeyGroupsArray( n ) = keyGroup )then
|
|
keyGroupIndex = n
|
|
exit for
|
|
end if
|
|
next n
|
|
menuScriptList = bindingDialog.getControl( "ScriptList" )
|
|
script = menuScriptList.getSelectedItem()
|
|
scriptURI = getScriptURI( script )
|
|
|
|
keyList = bindingDialog.getControl( "KeyList" )
|
|
keyIndex = keyList.getSelectedItemPos()
|
|
ShortCutKeyArray() = KeyBindArrayOfArrays( keyGroupIndex )
|
|
keyText = ShortCutKeyArray( keyIndex )
|
|
|
|
AddNewKeyBinding( scriptURI, HasShiftKey( keyText ), HasControlKey( keyText ), ExtractKeyFromCombo( keyText ) )
|
|
|
|
KeyComboListener()
|
|
end sub
|
|
|
|
|
|
sub KeyDeleteButton()
|
|
|
|
keyShortCutList = bindingDialog.getControl( "KeyList" )
|
|
selectedShortCut = keyShortCutList.getSelectedItem()
|
|
combo = bindingDialog.getControl( "KeyCombo" )
|
|
|
|
keyGroup = combo.text
|
|
dim keyGroupIndex as Integer
|
|
dim selectedKeyIndex as Integer
|
|
for n = lbound ( allKeyGroupsArray() ) to ubound ( allKeyGroupsArray() )
|
|
if ( allKeyGroupsArray( n ) = keyGroup )then
|
|
keyGroupIndex = n
|
|
exit for
|
|
end if
|
|
next n
|
|
selectedKeyIndex = keyShortCutList.getSelectedItemPos()
|
|
linePosition = keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value
|
|
keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Value = 0
|
|
keyAllocationMap( keyGroupIndex, selectedKeyIndex ).Name = ""
|
|
RemoveBinding( linePosition )
|
|
KeyComboListener()
|
|
end sub
|
|
|
|
|
|
sub EventNewButton()
|
|
eventScriptList = bindingDialog.getControl( "ScriptList" )
|
|
selectedScript = eventScriptList.getSelectedItem()
|
|
scriptURI = getScriptURI( selectedScript )
|
|
eventList = bindingDialog.getControl( "EventList" )
|
|
eventPosition = eventList.getSelectedItemPos()
|
|
|
|
allApps = bindingDialog.getControl( "AllAppsOption" )
|
|
dim isApp as boolean
|
|
if allApps.state = true then 'Application
|
|
isApp = true
|
|
else 'Document
|
|
isApp = false
|
|
end if
|
|
AddNewEventBinding( scriptURI, eventPosition, isApp )
|
|
|
|
populateEventList( eventPosition )
|
|
EventListListener()
|
|
end sub
|
|
|
|
|
|
sub EventDeleteButton()
|
|
eventList = bindingDialog.getControl( "EventList" )
|
|
REM Check that combo is a script
|
|
eventPosition = eventList.getSelectedItemPos()
|
|
|
|
allApps = bindingDialog.getControl( "AllAppsOption" )
|
|
if allApps.state = true then 'Application
|
|
linePosition = allEventTypesApp( eventPosition ).Value
|
|
'dim eventProp as new com.sun.star.beans.PropertyValue
|
|
'eventProp.Name = ""
|
|
'eventProp.Value = 0
|
|
allEventTypesApp( eventPosition ).Name = ""
|
|
allEventTypesApp( eventPosition ).Value = 0
|
|
RemoveBinding( linePosition )
|
|
else 'Document
|
|
'DeleteEvent( allEventTypes( eventPosition ) )
|
|
allEventTypesDoc( eventPosition ).Name = ""
|
|
allEventTypesDoc( eventPosition ).Value = 0
|
|
end if
|
|
|
|
PopulateEventList( eventPosition )
|
|
EventListListener()
|
|
end sub
|
|
|
|
|
|
sub EventOKButton
|
|
WriteEventsToDoc()
|
|
WriteXMLFromArray()
|
|
bindingDialog.endExecute()
|
|
end sub
|
|
|
|
|
|
sub HelpOKButton()
|
|
helpDialog.endExecute()
|
|
end sub
|
|
</script:module>
|