Neue Menüs gehen nicht in Vorlagen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Neue Menüs gehen nicht in Vorlagen

Beitrag von ykcim »

Mit dem folgenden Code füge ich ein neues Menu mit mehreren Enträgen in die Menuleiste der OpenOffice-Anwendungen ein.

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
 
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
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von komma4 »

Kann ich nicht nachvollziehen...

Verwende den gleichen Code erfolgreich bei einem Testrechner (OOo 2.3.1/WinXP), auch bei neu aus Vorlagen erstellten Dokumenten.
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)
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von ykcim »

Hallo,

ich verwende 2.4.1. Werde jetzt aber mal in einer Testumgebung eine ältere Version installieren und es probieren.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von ykcim »

Testumgebung mit 2.4.....
Und siehe da alles geht wunderbar.
Ich bin es langsam leid. Jede neue Version hat neue Fehler.

mfg
Michael
Der darüber nachdenkt sich von OpenOffice zu verabschieden.
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von komma4 »

>Jede neue Version hat neue Fehler.


Ja.
Zum Glück: ich verdiene mein Geld damit. Ich kann Dir versichern, dass das mit JEDER Software so ist.

Solange es "nur" solche "Komfortfunktionen" betrifft ist das nur lästig, aber noch tragbar.
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)
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von ykcim »

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.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von komma4 »

'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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von komma4 »

Michael,

sorry - der Code funktioniert hier auch mit der 2.4.1 Suse 10.1, update mittels RPM.
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)
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Neue Menüs gehen nicht in Vorlagen

Beitrag von ykcim »

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.

Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Antworten