Draw Ebenen Eigenschaften
Moderator: Moderatoren
Draw Ebenen Eigenschaften
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.
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
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Draw Ebenen Eigenschaften
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
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
wehr rächtschraipfähler findet khan si behalden
-
- ****
- Beiträge: 159
- Registriert: So, 17.10.2010 16:54
Re: Draw Ebenen Eigenschaften
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:
In der anhängenden Datei ist das Makro aufrufbar über den Menübefehl Layer - ToggleVisible.
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
- Dateianhänge
-
- DrawLayerToggleVisible.odg
- (14.07 KiB) 189-mal heruntergeladen
Re: Draw Ebenen Eigenschaften
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.
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
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Draw Ebenen Eigenschaften
Moin clag,
und, bist Du schon weiter gekommen?
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.
Das besagt, die Ebene ist sichtbar.
Und hier für Ebene nicht sichtbar.
Und hier mal ein Eintrag zu 'Raster sichtbar' aus der gleichen settings.xml.
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
und, bist Du schon weiter gekommen?
VERGESS ES!!!Hoffentlich finde noch raus wo die Farbe für die Ebenenamen gesetzt wird.
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>
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>
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
wehr rächtschraipfähler findet khan si behalden
Re: Draw Ebenen Eigenschaften
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.
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.
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
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
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Draw Ebenen Eigenschaften
Hallo
Was genau hast du nicht verstanden an der Aussage: "Die API bietet keinen Zugriff auf diese Eigenschaft" ???Ich habe keine Ahnung ob man eventuell mit Python an diese Eigenschaft Schriftfarbe kommt ?
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Draw Ebenen Eigenschaften
Mahlzeit.
@clag
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.
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)
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.
@Karolus
Gruß
balu
@clag
Gern geschen.Danke das du dich da noch einmal so rein gekniet hast,
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.
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.Ich hatte auch mal im englischen Forum 83961 angefragt, scheinbar weiß auch da keiner ob es eine Möglichkeit gibt die Farbe zu setzen.
Immerhin besser als gar nix.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 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
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.
@Karolus
Wo bitte schön steht diese Aussage? Ich sehe hier dazu gar nix. Würdest Du mir das bitte mal zeigen?Was genau hast du nicht verstanden an der Aussage: "Die API bietet keinen Zugriff auf diese Eigenschaft" ???
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
wehr rächtschraipfähler findet khan si behalden
Re: Draw Ebenen Eigenschaften
Hallo,
@Balu
haha so unterschiedlich die Menschen so unterschiedlich deren Assoziation zu etwas
ich hatte mir Knastgitter vorgestellt also #Layer# eingesperrt Layer frei
@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....
@Balu
haha so unterschiedlich die Menschen so unterschiedlich deren Assoziation zu etwas
ich hatte mir Knastgitter vorgestellt also #Layer# eingesperrt Layer frei
@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
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Draw Ebenen Eigenschaften
Mahlzeit clag,
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
Stimmt! Da geb ich dir Recht.haha so unterschiedlich die Menschen so unterschiedlich deren Assoziation zu etwas
Okay, jetzt versteh ich.ich hatte mir Knastgitter vorgestellt also #Layer# eingesperrt Layer frei
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
wehr rächtschraipfähler findet khan si behalden