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
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?
Nein es ist auf Dauer nicht tragbar.
Es macht keinen Sinn dauernd neue Versionen herauszubringen, die dann neue Fehler in Funktionen haben, die bereits fehlerfrei waren. Es ist sehr bedauerlich, aber OpenOffice ist bei weitem nicht so gut wie manche gerne tun.
'Tschuldige, ich habe gestern abend nicht mehr probiert, ob der Code mit der 2.4.1 noch funktioniert. Das nehme ich mir nun für's Wochenende vor.
Du -und alle anderen- sind eingeladen an den Regressionstests des Projekts teilzunehmen. Weil: Fehler findet man nur, wenn man testet.
Und dass sich bei Softwareänderungen (von so grossen Paketen) Änderungen "einschleichen", ist statistisch erwiesen. Harry Sneed sprach mal von einer "zwei-drittel Wahrscheinlichkeit", dass eine Codeänderung einen Fehler implantiert. Selbst sogenannte "stabile" Funktionalitäten sind manchmal betroffen.
Nichts gegen Dich, aber auch erwiesen: viele der Fehler sitzen vor dem Bildschirm. Es wird dann aber gleich 'geschrieen', dass die Software defekt sei usw. Und solche Meldungen sind eben "lauter", als die Zufriedenheit von vielen Anwendern, die keine Probleme haben...
Du kannst es gerne mit anderer Software für den Officeeinsatz versuchen. Ob Du damit glücklicher wirst ? Viel Erfolg!
Cheers Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5 DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Tja, ich habe es jetzt auf fünf verschiedenen Rechner probiert mit dem Ergebnis 3:2. Auf dreien geht es auf zweien geht es nicht. Auf meinen Entwicklungsrechner habe ich OpenOffice komplett gelöscht (inkl. des Userpfads) und es geht nach einer neu Installation immer noch nicht. Mit StarOffice 8 und neuestem Patch geht es auf diesem PC.
Ich finde das eine tolles Ergebnis. Jetzt kann ich eine, ich denke eine gute, Lösung zu Arbeit mit OpenOffice anbieten, muß aber den Leuten sagen: Sorry es tut mir leid aber es kann sein das es nicht richtig geht.