Statuszeile anpassen

Hallo Zusammen,

wie kann ich in LO die Statuszeile anpassen?

D.h. wie kann ich den Inhalt der Statuszeile in LO ändern?

In Word kann ich einfach mit der rechten Maustaste auf der Statuszeile
das Einstellungsmenü als Kontextmenü öffnen und bestimmte Dinge, die
in der Statuszeile angezeigt bzw. mit dem Screenreader angesagt werden
sollen ein- und ausschalten.

Das scheint bei LO nicht zu funktionieren.

Hat jemand einen Tipp für mich?

Vielen Dank und viele Grüße

Niels

Hallo Niels,

in manchen Segmenten bin ich mit der rechten Maustaste erfolgreich. Versuche es z. B. mal im letzten Segment.

LG Günther

Hallo Günther,

vielen Dank für den Hinweis. Das Problem ist nur, das ich den Ort wo
ich auf der Statuszeile klicke nicht steuern kann. Normalerweise
bewege ich mich mit F6 durch die Anwendungsstruktur bis ich auf der
Statuszeile lande und öffne dann beispielsweise mit shift+F10 das
Kontextmenü.

Leider scheint es so zu sein, das ich mit F6 nur durch das obere
Cockpit komme, aber nicht zur Statuszeile. Oder ich komme zur
Statuszeile und sie wird nicht vorgelesen. Witzigerweise sagt mir aber
NVDA bei der Statuszeile, das "Keine Informationen in der
Statusleiste" seien. D.h. er erkennt sie, kann nur die inhalte nicht
auslesen. Mit F6 scheint er nicht einmal die Statuszeile zu kennen...

Eigentlich möchte ich nur eine wichtige Info haben und das ist die
"vertikale Seitenposition" - Bei Word gibt es so etwas, ob es die bei
LO gibt- keine Ahnung. Aber in Word kann man die Info über die
Statuszeile bekommen...daher dachte ich versuche ich einmal mein Glück
mit LO...

Viele Grüße

Niels

Hallo Niels,

ich kann zwar nur raten, was mit "vertikale Seitenposition" gemeint ist, aber das müsste ja eine Angabe in Zentimetern oder einer anderen Maßeinheit sein. So etwas wird in LibreOffice in der Statuszeile nicht angezeigt; etwas ähnliches gibt es zwar für Zeichnungsobjekte, da wird die Position angezeigt, aber ich denke, es geht dir um den Textcursor, da sieht man da nichts.
Ich habe auch vor einiger Zeit, ich denke, aufgrund einer Frage von dir, nachgeschaut, ob man per Makro die Cursorposition ausgeben kann, bin da aber auch auf keinen grünen Zweig gekommen.

Viele Grüße
Gerhard

Hallo Gerhard,

ja, du hast recht was die vertikale Seitenposition betrifft. Auf einer
Office Website heist es dazu:

"An welcher Stelle von oben sich die Schreibmarke eines Word-Dokuments
gerade befindet, bis Word 2003 wurde diese Information stets in der
Statusleiste angezeigt. Seit Word 2007 fehlt die Angabe
standardmässig. Dabei ist es oft hilfreich zu wissen, wo man gerade
auf dem Papier schreibt – zum Beispiel für normgerechte
Anschrifts-Blöcke.
Auch in Word 2007 und neuer können Sie die vertikale Seiten-Position
in der Word-Statusleiste anzeigen. Dazu sind nur wenige Klicks
nötig..."

Das ist also kein super geiles Word Feature, was vor kurzen
herausgekommen ist, sondern schon praktisch seit 20 Jahren
intrinischer Bestandteil von Word. Mich wundert es wirklich, das LO
offenbar nicht in der Lage ist so etwas auszugeben/anzuzeigen -
unabhängig von der Barrierefreiheit. Da ist LO schlicht rückständig...

Für mich ist diese Funktion sehr wichtig, weil ich die Kontrolle haben
möchte, wo auf dem virtuellen Blatt Papier was ist. Z.B. wenn ich
einen Brief oder sonst ein Dokument selbstständig unterschreiben soll,
dann muss ich wissen, wo ich unterschreiben soll. D.h. ich lasse mir
die virtuelle Seitenposition ausgeben um später abmessen zu können wo
ich unterschreiben kann.

Bei dieser Funktion handelt es sich nicht um eine von mir gewünschte
Spielerei, sondern sie ist elementar. Und wenn staatliche Stellen und
Betriebe LO geschäftsmäßig einsetzen wollen, dann sollte man dafür
sorgen, dass diese Funktion zur Verfügung steht!

Viele Grüße

Niels

Hallo Gerhard,

Ich habe auch vor einiger Zeit, ich denke, aufgrund einer Frage von dir, nachgeschaut, ob man per Makro die Cursorposition ausgeben kann, bin da aber auch auf keinen grünen Zweig gekommen.

Viele Grüße
Gerhard

Kennst du Andrew Pitonyaks Versuch, der zwar verbesserungsbedürftig ist, aber vielleicht Ansatzpunkte liefern könnte?

Ich habe vor längerer Zeit Anpassungen vorgenommen, sehe aber aktuell wieder Ungenauigkeiten. In meiner Bearbeitung von OOME, vom 27. 1.2021, S. 342, Listing 312.

Schöne Grüße
Volker

Entschuldigung, ich vergaß den Link:
https://www.uni-due.de/~abi070/ooo.html

Hallo Volker,

Andrews Werk und auch deine deutsche Übersetzung sind mir bekannt, aber ich bin tatsächlich nicht auf die Idee gekommen, da nachzuschauen. Was ich beim flüchtigen Durchlesen sehe, ist, dass ich schon an der selben Stelle war, aber dann aus den Zahlen nicht schlau wurde; ich hatte z. B. den X-Wert mit Rand 2 cm und 0 cm verglichen, wenn der Cursor am Anfang stand, und mit den mir bekannten Umrechnungen. Aber ich werde mir das anhand des Makros noch einmal anschauen, das müsste mich weiterbringen.

Viele Grüße
Gerhard

Hallo Zusammen,

nur für mich zum Verständnis:

1) Eine Funktion "vertikale Seitenposition" wie sie Word bietet (Word
bietet in dem Bereich auch noch mehr) gibt es in LO nicht. Jedenfalls
habe ich diesbezüglich noch keine weiteren Hinweise bekommen, wo sich
diese Funktion befinden könnte - wo man die Infos abrufen könnte -
wenn nicht auf der Statuszeile.

Für mich wäre das dann ein Feature Request wert.

Ein schwacher Trost bietet ein "vertikales Lineal" das man einstellen
kann. Das Problem ist nur- weder beim normalen horizontalen, noch beim
vertikalen Lineal gibt mein Screenreader Werte aus...

Das mit dem horizontalen Lineal habe ich schon damals als Bug
gemeldet, das andere noch nicht...

Über eine Antwort wäre ich dankbar.

Wenn man da mit Makros was machen könnte wäre natürlich toll. Soweit
ich weis hat LO auch eine Python schnittstelle, so dass es prinzipiell
möglich wäre da etwas zu machen. Mir wäre aber natürlich eine Lösung
in LO selber lieber. Wenn man ständig den Screenreader an die Software
anpassen muss hechelt man immer der Technik hinterher und ist im
schlimmsten Fall nicht einsatzfähig. Es muss umgekehrt sein. Nicht der
Screenreader muss sich der Software anpassen, sondern die Software den
Screenreader! Es wäre schön, wenn das von allen LO Entwicklern auch
beherzigt werden würde...

Viele Grüße

Niels

Hallo Niels,

für die vertikale Cursorposition existiert eine Lösung, die im schon erwähnten Makro in OOME steckt. Sie geht davon aus, dass alle benutzten Seitenformate gleich sind. Der aktuelle Controller gibt die aktuelle Cursorposition auf der Basis der linken oberen Ecke der ersten Seite des Dokuments aus. Man muss also die Summe der Höhe der vorherigen Seiten von der aktuellen Cursor-Y-Position abziehen. Zu beachten ist außerdem, dass die Writerfolie zwischen den einzelnen Seiten einen schmalen Steg enthält, der zur Seitenhöhe addiert werden muss.

Sub PrintCursorYPosition
   Dim oDoc 'Aktuelles Dokument
   Dim oViewCursor 'Aktueller Viewcursor
   Dim sStyleName 'Name der Seitenvorlage
   Dim oStyle 'Aktuelle Seitenvorlage
   Dim dHeight As Double 'Seitenhöhe aus der Seitenvorlage in 1/100 mm
   Dim dTop As Double 'Oberer Seitenrand in mm
   Dim dYCursor As Double 'Abstand des Cursors von der oberen Kante in mm
   Dim pos As New com.sun.star.awt.Point 'Cursorposition
   Dim lPreviousPages As Long 'Die Anzahl der vorherigen Seiten
   Dim dInterPageSpace As Double 'Der schmale Steg zwischen den Seiten,
                                 'empirisch ermittelt.

   oDoc = ThisComponent
   oViewCursor = oDoc.CurrentController.getViewCursor()

   sStyleName = oViewCursor.PageStyleName
   oStyle = oDoc.StyleFamilies.getByName("PageStyles").getByName(sStyleName)
   dHeight = oStyle.Height
   dTop = oStyle.TopMargin / 100.0
   REM Die Koordinaten des Cursors bezogen auf die obere linke Ecke der Folie in 1/100 mm:
   pos = oViewCursor.getPosition()

   dInterPageSpace = 501.3 '1/100 mm
   lPreviousPages = Fix(pos.Y / (dHeight + dInterPageSpace))

   REM Die Cursorposition ist der Abstand zum Seitenrand plus der Seitenrand.
   dYCursor = Fix((pos.Y - lPreviousPages * (dHeight + dInterPageSpace)) / 100.0 + dTop)

   MsgBox dYCursor, 0, "Seiteninformationen"
End Sub

Zur X-Position habe ich noch keine Lösung, außer für den Fall, dass die Darstellung des Dokuments das Bearbeitungsfenster genau füllt oder breiter ist.

Schöne Grüße
Volker

Hallo Volker,

vielen Dank für deine Mail, aber ich bin kein Makroprogrammierer. D.h.
ich kann mit deinen Codezeilen wenig anfangen.

Was muss ich mit dem "Code" anstellen, damit ich irgendetwas
sinnvolles herausbekomme, bzw. angesagt bekomme?

Wer in Python bewandert ist, da könnte man was die Bildschirmansage
betrifft vielleicht etwas von anderen Add ons klauen. Es ist die
Frage, ob LO die entsprechenden Schnittstellen bietet. Aber das müsste
sich wirklich einer in der Programmierung bewandeter tun. Ich bin nur
Anwender...

Viele Grüße

Niels

Hallo Niels,

das folgende Makro wird dir die aktuelle Cursorposition sowohl von oben als auch von links ausgeben. Es ist beileibe nicht optimiert und es funktioniert auch nur dann korrekt für den Y-Wert, wenn im Dokument immer dieselbe Seitenformatvorlage verwendet wird. Der X-Wert ist nur dann korrekt, wenn die Darstellung des Dokuments das Bearbeitungsfenster genau füllt oder breiter ist.

In diesem Makro geht es vor allem um die Werte, die aus der Anwendung stammen. Diese Werte werden von der API (Application Programming Interface) bereitgestellt, auf die mit Basic und Python gleichermaßen zugegriffen wird. Die Berechnung stellt für beide Sprachen kein Problem dar.

Option VBASupport 1

Sub PrintCursorPosition
   Dim oDoc 'Aktuelles Dokument
   Dim oViewCursor 'Aktueller Viewcursor
   Dim cursorPos As New com.sun.star.awt.Point 'Cursorposition
   Dim iPreviousPages As Integer 'Die Anzahl der vorherigen Seiten
   Dim dInterPageSpace As Double 'Der schmale Steg zwischen den Seiten,
                                 'in 1/100 mm
   Dim oStyle 'Aktuelle Seitenvorlage
   REM Die Werte aus der Seitenvorlage in 1/100 mm:
   Dim dHeight As Double 'Seitenhöhe
   Dim dWidth As Double 'Seitenbreite
   Dim dTop As Double 'Oberer Seitenrand
   Dim dLeft As Double 'Linker Seitenrand
   REM Die Ausgabewerte:
   Dim lXCursor As Long 'Abstand des Cursors von links in mm
   Dim lYCursor As Long 'Abstand des Cursors von oben in mm
   Dim sMsgText As String 'Ausgabestring

   oDoc = ThisComponent
   oViewCursor = oDoc.CurrentController.getViewCursor()

   oStyle = oDoc.StyleFamilies.getByName("PageStyles")_
            .getByName(oViewCursor.PageStyleName)
   dHeight = oStyle.Height
   dWidth = oStyle.Width
   dTop = oStyle.TopMargin
   dLeft = oStyle.LeftMargin

   REM Die Koordinaten des Cursors bezogen auf die obere linke Ecke
   REM der Writerfolie in 1/100 mm:
   cursorPos = oViewCursor.getPosition()

   dInterPageSpace = 501.3 'empirisch ermittelt
   iPreviousPages = Fix(cursorPos.Y / (dHeight + dInterPageSpace))

   REM Die Cursorposition ist der Abstand zum Seitenrand
   REM plus der Seitenrand.
   lXCursor = Round((cursorPos.X + dLeft) / 100)
   lYCursor = Round(((cursorPos.Y - _
              iPreviousPages * (dHeight + dInterPageSpace)) _
              + dTop) / 100)
   sMsgText = "Cursorposition:" & Chr(10) & _
              "von links: " & lXCursor & " mm" & Chr(10) & _
              "von oben: " & lYCursor & " mm"
   MsgBox sMsgText, MB_ICONINFORMATION, "Cursorposition"
End Sub

Das Makro ist aus einem Zusammenhang heraus genommen und sollte nur die Auswertung von Formatvorlagen illustrieren. Es ist, wie schon gesagt, nicht frei von Fehlern, könnte aber einen Ansatz zu einer in jeder Situation korrekten Lösung bieten.

Du kannst das Makro über "Extras|Makros|Makros verwalten" in ein Modul einfügen (dazu gibt es Hilfetexte) und es dann über "Extras|Anpassen" z.B. im Menü eines jeden Writerdokuments unterbringen.

Schöne Grüße
Volker