Draw Ebenen Eigenschaften

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Draw Ebenen Eigenschaften

Beitrag von clag »

Hallo Gemeinde,

Ich möchte in Draw direkten Zugriff auf die Ebeneneigenschaften "sichtbar" und "gesperrt" bekommen,
der normale Weg dahin ist umständlich und leider auch nicht über Extras auf einen shortcut legbar
Ein Makro kann ich in Draw auch nicht aufzeichnen (ausgegraut) ??? und Dannenhoefer.de lässt sich leider über Draw auch nicht aus :( .
Und nun stehe ziemlich ratlos im OO Basicwald und bräuchte eure Hilfe.

Also ich möchte ein Makro das die aktuelle Ebene ein/ausblendet, vorteilhafterweise wird der Ebenename dann bereits auf blau gesetzt
und ein zweites Makro, das direkt die Ebene sperrt/entsperrt und zusatzlich den Namen auf rot setzt bzw violet, wenn gesperrt und ausgeblendet.

Ich denke das ist nicht sooo aufwändig wenn man erst einmal weiß wie man and die Ebeneneigenschaft kommt.
Hoffe ihr könnt mir auf die Sprünge helfen.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Draw Ebenen Eigenschaften

Beitrag von balu »

Hallo clag,

hab genau so viel Ahnung wie Du -{na ja, auch wenn ich die ganze Problematik anders angehe als Du(*)}-, deshalb versuch mal hiermit etwas anzufangen.

(*)
Ich würde den helfern ja mitteilen ob ich schon ein inspektions Tool angesetzt habe und bis wohin ich gekommen bin. Und ferner, ob ich in Andrew schon reingeschaut habe. Auch würde ich mitteilen ob die Suche hier im Forum mir nicht geholfen hat, oder ob ich vielleicht die falschen Suchparameter eingegeben habe.




Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Axel Richter
****
Beiträge: 159
Registriert: So, 17.10.2010 16:54

Re: Draw Ebenen Eigenschaften

Beitrag von Axel Richter »

Hallo clag,

Draw-Makros sind tatsächlich fast nirgends so richtig dokumentiert. Aber das Prinzip ist natürlich das selbe, wie bei Calc und Writer. Man braucht ein Tool wie XRAY o. ä. und Zugang zur API http://www.openoffice.org/api/docs/comm ... le-ix.html, um OpenOffice oder LibreOffice programmieren zu können.

Beispiel:

Code: Alles auswählen

Sub ToggleVisible

 oDrawDocument = ThisComponent
 
 oCurrentController = oDrawDocument.getCurrentController()
 oLayer = oCurrentController.getPropertyValue("ActiveLayer")
 
 'Das Umschalten der Eigenschaften IsVisible, IsPrintable und IsLocked funktioniert nur,
 'wenn der Code (das Makro) vom Dolument aus aufgerufen wird.
 'Es funktioniet nicht im Step-Mode aus der IDE heraus.
 oLayer.IsVisible = Not oLayer.IsVisible
 
 'Einfügen und Löschen eines temporären Layers, um die Registerfärbung aufzufrischen.
 'Leider habe ich keinen anderen Weg gefunden als diesen schmutzigen Trick.
 oLayerManager = oDrawDocument.getLayerManager()
 oLayerTMP = oLayerManager.insertNewByIndex(0)
 oLayerManager.remove(oLayerTMP)

End Sub
In der anhängenden Datei ist das Makro aufrufbar über den Menübefehl Layer - ToggleVisible.
Dateianhänge
DrawLayerToggleVisible.odg
(14.07 KiB) 188-mal heruntergeladen
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Draw Ebenen Eigenschaften

Beitrag von clag »

Hallo Balu und Axel,

erst einmal besten Dank für eure Denkanstöße, muss mich da mit XRAY oder MRI mal durchfriemeln.
@ Axel Richter
dein Makro funktioniert prima, habe es auf eine Taste gelegt, so tut genau wie gewünscht :)
Hoffentlich finde noch raus wo die Farbe für die Ebenenamen gesetzt wird.
Wünsche allen einen schönen Sonntagabend.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Draw Ebenen Eigenschaften

Beitrag von balu »

Moin clag,

und, bist Du schon weiter gekommen?

Hoffentlich finde noch raus wo die Farbe für die Ebenenamen gesetzt wird.
VERGESS ES!!! :twisted:

Nach meinen bisherigen Recherchen und Versuchen teile ich dir meinen aktuellen Wissenstand mit. Der da lautet: Diese Eigenschaften kann man nicht ändern, da sie OO-System gebunden sind.

Du darfst die Reiter bei einer Zeichnung nicht mit denen bei Calc verwechseln. In Calc kann man sie über die Optionen ein- oder ausschalten, und ferner seit OOo 3.3.0 die Registerfarbe ändern, entweder über dem dementsprechenden Menüeintrag oder aber per rechtsklick auf die Reiter. Das ganze geht dann natürlich auch per Makro.

In Draw habe ich bis jetzt nirgendwo einen Punkt gefunden wo man z.B. die Hintergrundfarbe der Reiter ändern kann. Also schon mal schlecht.


Okay! Manchmal kann man in OO auch per Makro etwas einstellen/verändern was man nicht auf dem normalem Weg, sprich z.B. Menüeintrag, realisieren kann. Also habe ich hier mal für mich zwei ganz einfache Beispieldateien erstellt, wo nur die Eigenschaft Sichtbar aktiv oder deaktiv ist. Und anschließend die Dateien entpackt und mir die settings.xml mal genauer angeschaut. Und siehe da, ich habe einen Eintrag für Sichtbar gefunden.
Hier ist er.

Code: Alles auswählen

<config:config-item config:name="VisibleLayers" config:type="base64Binary">//////////////////////////////////////////8=</config:config-item>
 
Das besagt, die Ebene ist sichtbar.

Und hier für Ebene nicht sichtbar.

Code: Alles auswählen

<config:config-item config:name="VisibleLayers" config:type="base64Binary">3/////////////////////////////////////////8=</config:config-item>
 

Und hier mal ein Eintrag zu 'Raster sichtbar' aus der gleichen settings.xml.

Code: Alles auswählen

<config:config-item config:name="GridIsVisible" config:type="boolean">false</config:config-item>
 
Also ist bis jetzt nix in den ganzen xml-Dateien zu finden.


Andere Baustelle.

Die Datei und den Code von Axel genommen und einige Experimente durchgeführt, mit Unterstützung von MRI.
Aber egal was ich auch untersucht habe, es hat nix gebracht. Kann vielleicht sein das ein echter Makro spezialist doch noch irgendwo einen Weg findet, aber ich zumindest gebs auf.

Egal ob ich von ThisComponent, oder von oDrawDocument.getCurrentController(), oder von oCurrentController.getPropertyValue("ActiveLayer") mich weiter durchgeschlängelt habe, ich habe nix passendes gefunden. Eigentlich hatte ich etwas in der Art von TabColor, oder ähnliches, gesucht, bin aber nicht fündig geworden. Und irgendwann hatte ich keine Lust mehr, und gab es schlußendlich vollkommen auf mir noch weitere Gedanken deswegen zu machen.

Das wars.

Der nächste bitte.


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Draw Ebenen Eigenschaften

Beitrag von clag »

Moin Balu,

Danke das du dich da noch einmal so rein gekniet hast, Schade das dabei keine Möglichkeit zum setzen der Farbe offenbart wurde.
Ich hatte auch mal im englischen Forum 83961 angefragt, scheinbar weiß auch da keiner ob es eine Möglichkeit gibt die Farbe zu setzen. Allerdings hatte da der @Zizi64 die wie ich Finde gute Idee, den Ebenennamen entsprechend zu ändern, das habe ich jetzt auch ersteinmal so eingebaut.
Aber das setzen der Farbe für den Ebenennamen wäre doch viel schöner, deutlicher und schneller mit dem Auge zu erfassen, zumal ich dann auch weitere Variationen anwenden möchte.

Code: Alles auswählen

Sub ToggleLock
 oDrawDocument = ThisComponent
 oCurrentController = oDrawDocument.getCurrentController()
 oLayer = oCurrentController.getPropertyValue("ActiveLayer")
  oLayer.IsLocked = Not oLayer.IsLocked
	If oLayer.IsLocked then
		oLayer.Name = "#" & oLayer.Name & "#"
	ElseIf Left(oLayer.Name,1) = "#" and Right(oLayer.Name,1) = "#" Then 
		oLayer.Name = Mid(oLayer.Name,2, Len(oLayer.Name)-2)
	end if
' or better format the "layer name" in red, but how ??
End Sub
Ich habe keine Ahnung ob man eventuell mit Python an diese Eigenschaft Schriftfarbe kommt ??? ( Hallo Karolus ;) !? )

Was mich etwas irritiert bzw überhaupt erst auf diesen Linie gebracht hat ist, dass die Farbe für unsichtbar gesetzte Ebenen bereits von AOO geändert wird, da hätte ich mir eine weitergehende Umsetzung gewünscht. Das versuche ich gerade auf dem DIY Weg.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7431
Registriert: Mo, 02.01.2006 19:48

Re: Draw Ebenen Eigenschaften

Beitrag von Karolus »

Hallo
Ich habe keine Ahnung ob man eventuell mit Python an diese Eigenschaft Schriftfarbe kommt ?
Was genau hast du nicht verstanden an der Aussage: "Die API bietet keinen Zugriff auf diese Eigenschaft" ???
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Draw Ebenen Eigenschaften

Beitrag von balu »

Mahlzeit.

@clag
Danke das du dich da noch einmal so rein gekniet hast,
Gern geschen.
Ich sags dir aber dennoch: Das ganze hatte sich bei mir "zum Traum meiner schlaflosen Nächte" entwickelt. Und das sage ich diesmal auch so wie ich es meine.

Ich hatte auch mal im englischen Forum 83961 angefragt, scheinbar weiß auch da keiner ob es eine Möglichkeit gibt die Farbe zu setzen.
Das war mir auch schon aufgefallen, denn wenn ich bei gooogele bestimmte Suchwörter eingebe dann sind da meistens auch sofort treffer dabei welche in englische Foren verweisen. Doch diesmal war da gar nix. Treffer zur API, ja, satt und lang. Doch geholfen hatten sie auch nicht.


Allerdings hatte da der @Zizi64 die wie ich Finde gute Idee, den Ebenennamen entsprechend zu ändern, das habe ich jetzt auch ersteinmal so eingebaut.
Immerhin besser als gar nix.
Aber wenn dir das vorübergehend als Notbehelf reicht, dann würde ich zumindest das ein wenig anders gestalten. Klar, hätte Farbe den Vorteil das es rein optisch schneller zu erfassen ist, es sei denn, das ungünstige Lichtverhältnisse herrschen (schon mal daran gedacht?). Aber wenn es um die nachvollziehbare Optik geht, dann könnte man auch den Ebenennamen anders gestallten so das auch das einen optischen auffälligen Effekt gibt.

Mir schwirrt da etwas im Kopf umher, welches aber einer gewissen Selbstdisziplin voraussetzt.
-> Wenn etwas groß und auffällig ist, dann ist es weithin sichtbar.
-> Wenn es aber klein und unauffällig ist, dann übersieht man es.

Was hat das jetzt zu bedeuten?
Ich sage nur UCase und LCase.

Mit anderen Worten.
Der Ebenennamen wird durchgehend klein oder groß geschrieben.

Also anstatt (beispielsweise):
Layer4 (oder Ebene4)
dann
layer4 (oder ebene4)

Code: Alles auswählen

   If oLayer.IsLocked then
      oLayer.Name = LCase(oLayer.Name)
   Else 
      oLayer.Name = UCase(oLayer.Name)
   end if
LCase = alle Buchstaben werden klein geschrieben.
UCase = alle Buchstaben werden GROSS geschrieben.

Das wäre also mein Vorschlag, den ich zumindest für mich persönlich in die Tat umsetzen würde. :wink:



@Karolus
Was genau hast du nicht verstanden an der Aussage: "Die API bietet keinen Zugriff auf diese Eigenschaft" ???
Wo bitte schön steht diese Aussage? Ich sehe hier dazu gar nix. Würdest Du mir das bitte mal zeigen?



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Draw Ebenen Eigenschaften

Beitrag von clag »

Hallo,

@Balu
haha so unterschiedlich die Menschen so unterschiedlich deren Assoziation zu etwas
ich hatte mir Knastgitter vorgestellt also #Layer# eingesperrt Layer frei :lol:

@Karolus
schade ich hatte gehofft das Python da tiefer eingreifen kann und du irgend einen Trumpf aus dem Ärmel hättest ziehen können.

Program intern ist es bestimmt nur geringster Aufwand, auch den gesperrten Ebenen eine Farbe zuzuweisen.
Vielleicht sollte man das mal in die AOO Wunschliste eintragen falls es die gibt....
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
balu
********
Beiträge: 3810
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Draw Ebenen Eigenschaften

Beitrag von balu »

Mahlzeit clag,
haha so unterschiedlich die Menschen so unterschiedlich deren Assoziation zu etwas
Stimmt! Da geb ich dir Recht.

ich hatte mir Knastgitter vorgestellt also #Layer# eingesperrt Layer frei :lol:
Okay, jetzt versteh ich.
Aber mein aufgezeigter Weg ist am kürzesten und am einfachsten. Jedoch assozieren Menschen nicht nur unterschiedlich, nein, sie haben auch unterschiedliche geschmäcker. Wichtig ist nur, das man Satt wird, egal ob durch ein Steak oder durch ne Mantaplatte ;-)



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten