Neue Menüs gehen nicht in Vorlagen
Verfasst: Do, 12.06.2008 13:11
Mit dem folgenden Code füge ich ein neues Menu mit mehreren Enträgen in die Menuleiste der OpenOffice-Anwendungen ein.
Das funktioniert auch gut.... Bis auf die Tatsache das die Menüs in neuen Dokumeten die auf einer Vorlage basieren nicht gehen. Wenn ich ein neues leeres Dokument erzeuge ( Datei -> Neu ) gehe die Makros über das Menü. Wenn ich ein neues Dokument aus einer Vorlage erstelle gehen die Makros nicht. Hat jemand ein Tipp woran das liegen könnte?
mfg
Michael
Code: Alles auswählen
const aDataRootFolder="macro:///meineMakros."
Sub InsertFavoritesMenu
ImplInsertFavoritesMenu( "com.sun.star.frame.StartModule" )
ImplInsertFavoritesMenu( "com.sun.star.text.TextDocument" )
ImplInsertFavoritesMenu( "com.sun.star.sheet.SpreadsheetDocument" )
ImplInsertFavoritesMenu( "com.sun.star.drawing.DrawingDocument" )
ImplInsertFavoritesMenu( "com.sun.star.presentation.PresentationDocument" )
End Sub
Sub ImplInsertFavoritesMenu( ModuleName as string )
sMenuBar = "private:resource/menubar/menubar"
sMyPopupMenuCmdId = "vnd.openoffice.org:ooOffice"
oModuleCfgMgrSupplier = createUnoService("com.sun.star.ui.ModuleUIConfigurationManagerSupplier")
oModuleCfgMgr = oModuleCfgMgrSupplier.getUIConfigurationManager( ModuleName )
oMenuBarSettings = oModuleCfgMgr.getSettings( sMenuBar, true )
bHasAlreadyPopupMenu = false
nCount = oMenuBarSettings.getCount()
for i = 0 to nCount-1
oPopupMenu() = oMenuBarSettings.getByIndex( i )
nPopupMenuCount = ubound(oPopupMenu())
for j = 0 to nPopupMenuCount
if oPopupMenu(j).Name = "CommandURL" then
if oPopupMenu(j).Value = sMyPopupMenuCmdId then
bHasAlreadyPopupMenu = true
end if
endif
next j
oModuleCfgMgr.store()
next i
if not bHasAlreadyPopupMenu then
sString = "ooOffice"
oPopupMenu = ImplCreatePopupMenu( sMyPopupMenuCmdId, sString, oMenuBarSettings )
oPopupMenuContainer = oPopupMenu(3).Value
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Main.StartAdrDlg", "Adressenverwaltung" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Main.CallBriefDlg", "Neues Dokument" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"dokverwalt.CallDocDlgAllDocs", "Dokumentenverwaltung" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"speichern.SpeichernInDB", "Speichern in DB" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"speichern.SpeichernInOrdner", "Speichern in Ordner" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Setup.StartSetup", "Einstellungen" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuItem = ImplCreateMenuItem( aDataRootFolder+"Main.StartMain", "Startmenu" )
oPopupMenuContainer.insertByIndex( oPopupMenuContainer.Count(), oMenuItem )
oMenuBarSettings.insertByIndex( nCount, oPopupMenu )
oModuleCfgMgr.replaceSettings( sMenuBar, oMenuBarSettings )
oModuleCfgMgr.store()
end if
End Sub
Function ImplCreatePopupMenu( CommandId, Label, Factory ) as Variant
Dim aPopupMenu(3) as new com.sun.star.beans.PropertyValue
aPopupMenu(0).Name = "CommandURL"
aPopupMenu(0).Value = CommandId
aPopupMenu(1).Name = "Label"
aPopupMenu(1).Value = Label
aPopupMenu(2).Name = "Type"
aPopupMenu(2).Value = 0
aPopupMenu(3).Name = "ItemDescriptorContainer"
aPopupMenu(3).Value = Factory.createInstanceWithContext( GetDefaultContext() )
ImplCreatePopupMenu = aPopupMenu()
End Function
Function ImplCreateMenuItem( Command as String, Label as String ) as Variant
Dim aMenuItem(2) as new com.sun.star.beans.PropertyValue
aMenuItem(0).Name = "CommandURL"
aMenuItem(0).Value = Command
aMenuItem(1).Name = "Label"
aMenuItem(1).Value = Label
aMenuItem(2).Name = "Type"
aMenuItem(2).Value = 0
ImplCreateMenuItem = aMenuItem()
End Function
mfg
Michael