Seite 1 von 1
Gallery gezielt anzeigen
Verfasst: Mo, 05.04.2021 13:47
von Stephan
Hallo,
in LO 7.x verwende ich derzeitig zum Anzeigen der Gallery (bitte Kommentar im Code beachten):
Code: Alles auswählen
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'falls Gallery bereits offen, würde sie ausgeblendet,
'deshalb Vorlagenfenster kurz öffnen:
dispatcher.executeDispatch(document, ".uno:DesignerDialog", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Gallery", "", 0, Array())
das gibt jedoch Probleme in OO, weil dort das (alte) Formatvorlagenfenster zusätzlich zur Seitenleiste eingeblendet wird.
Weiß jemand wie ic h prüfen könnte ob die Gallery offen ist (egal ob in der SEitenleiste oder als separates Fenster)?
zusätzlich:
Weiß jemand wie ich ich ein bestimmtes Gallery-Thema gezielt per Makro aktivieren/anzeigen kann?
Gruß
Stephan
Re: Gallery gezielt anzeigen
Verfasst: Mo, 05.04.2021 17:55
von mikeleb
Hallo,
wenn ich mich durch die Fensterelemente wühle, kann ich danach suchen, ob die Gallery geöffnet ist (getestet nur unter Linux und LO5.4):
Code: Alles auswählen
Sub Snippet
Dim oCurrentController As Variant
Dim oComponentWindow As Variant
Dim oAccessibleContext As Variant
Dim sAccessibleName As String
Dim oAccessibleChild As Variant
Dim oAccessibleContext2 As Variant
Dim sAccessibleName2 As String
Dim oAccessibleChild2 As Variant
Dim oAccessibleContext3 As Variant
gefunden=false
oCurrentController = ThisComponent.getCurrentController()
oComponentWindow = oCurrentController.ComponentWindow
oAccessibleContext = oComponentWindow.getAccessibleContext()
for i=0 to oAccessibleContext.AccessibleChildCount-1
oAccessibleChild = oAccessibleContext.getAccessibleChild(i)
oAccessibleContext2 = oAccessibleChild.getAccessibleContext()
if oAccessibleContext2.accessiblerole=56 then
for k=0 to oAccessibleContext2.AccessibleChildCount-1
oAccessibleChild2 = oAccessibleContext2.getAccessibleChild(0)
oAccessibleContext3 = oAccessibleChild2.getAccessibleContext()
if oAccessibleContext3.getAccessibleName()="Gallery" then
if oAccessibleContext3.getAccessibleChild(1).AccessibleContext.AccessibleRole=51 then
gefunden=true
end if
end if
next
end if
next
if gefunden then
msgbox "Gallery offen"
else
msgbox "Gallery geschlossen"
end if
End Sub
Vielleicht ist das ja ein Ansatz.
Re: Gallery gezielt anzeigen
Verfasst: Mo, 05.04.2021 18:52
von Stephan
Danke für den Versuch und die Fleißarbeit, aber unter AOO 4.1.6 funktioniert das weder für die alte, noch für die neue Gallery.
Gruß
Stephan
Re: Gallery gezielt anzeigen
Verfasst: Di, 06.04.2021 00:07
von mikeleb
Hallo Stephan,
unter AOO heißt die Gallery (zumindest in deutscher Oberfläche) "Galerie", sodass folgendes für die Seitenleiste und auch die alte Galerie zu funktionieren scheint.
Code: Alles auswählen
Sub Snippet
Dim oCurrentController As Variant
Dim oComponentWindow As Variant
Dim oAccessibleContext As Variant
Dim sAccessibleName As String
Dim oAccessibleChild As Variant
Dim oAccessibleContext2 As Variant
Dim sAccessibleName2 As String
Dim oAccessibleChild2 As Variant
Dim oAccessibleContext3 As Variant
gefunden=false
oCurrentController = ThisComponent.getCurrentController()
oComponentWindow = oCurrentController.ComponentWindow
oAccessibleContext = oComponentWindow.getAccessibleContext()
for i=0 to oAccessibleContext.AccessibleChildCount-1
oAccessibleChild = oAccessibleContext.getAccessibleChild(i)
oAccessibleContext2 = oAccessibleChild.getAccessibleContext()
if oAccessibleContext2.accessiblerole=56 then
for k=0 to oAccessibleContext2.AccessibleChildCount-1
oAccessibleChild2 = oAccessibleContext2.getAccessibleChild(0)
oAccessibleContext3 = oAccessibleChild2.getAccessibleContext()
if oAccessibleContext3.getAccessibleName()="Gallery" or oAccessibleContext3.getAccessibleName()="Galerie" then
gefunden=true
end if
next
end if
next
if gefunden then
msgbox "Gallery offen"
else
msgbox "Gallery geschlossen"
end if
End Sub
Re: Gallery gezielt anzeigen
Verfasst: Di, 06.04.2021 12:18
von Stephan
Hallo mikeleb,
Danke für Deine Mühe.
sodass folgendes für die Seitenleiste und auch die alte Galerie zu funktionieren scheint.
Gemeinerweise nicht wenn die 'alte' Gallery nur minimiert und nicht geschblossen ist, denn dann wird die Gallery durch DEin Makro als geschlossen detektiert, was aktzeptabel wäre aus Sicht des Benutzers (denn sie ist ja nicht sichtbar), was nur aber aus Makro-Sicht nichts bringt, denn wenn die Gallery nur minimiert ist so schliesst:
Code: Alles auswählen
dispatcher.executeDispatch(document, ".uno:Gallery", "", 0, Array())
die Gallery und macht sie nicht sichtbar.
Bitte verschwende um meinetwillen nicht noch mehr Zeit in dieses Thema hier, denn sooo wichtig ist es nicht.
Gruß
Stephan
Re: Gallery gezielt anzeigen
Verfasst: Di, 06.04.2021 14:20
von mikeleb
Hallo Stephan,
irgendwo muss die Info ja versteckt sein ...
Die accessiblerole 56 scheint die Galerie (alt) bzw. die Sidebar zu meinen (aber eben auch die Datenquellen
) ... ist halt "nur" der grafische Container.
Wenn das Teil dann ein child-Objekt besitzt, wird auch wirklich etwas angezeigt(ist also nicht minimiert).
Code: Alles auswählen
for i=0 to oAccessibleContext.AccessibleChildCount-1
oAccessibleChild = oAccessibleContext.getAccessibleChild(i)
oAccessibleContext2 = oAccessibleChild.getAccessibleContext()
if oAccessibleContext2.accessiblerole=56 then
msgbox "child " & i & " Nr. 56 ist da"
for k=0 to oAccessibleContext2.AccessibleChildCount-1