Hallo,
über die Möglichkeit PL jetzt per Scripting steuern zu können habe ich mich riesig gefreut und halte das für eine wirklich wichtige Neuerung bei PL, da ich dafür eine Menge Anwendungsmöglichkeiten für ständig wiederkehrende Arbeitsabläufe sehe. Ein simples Beispiel wäre hier meinerseits z.B. ein offenes Dokument zu duplizieren, auf die Hintergrundebene zu reduzieren und dann als Photoshop-Datei zu speichern und das kopierte Dokument wieder zu schließen. Aber gerade die Möglichkeit, Bedingungen und Abfragen einzubauen, macht Scripting über solche rein sequentiellen Abläufe hinaus, extrem hilfreich.
Bei meinen Bemühungen, mich in das Scripting unter Windows einzuarbeiten, hat sich für mich folgende Frage aufgetan:
Das von PL genutzte VBScript bzw. der Windows Scripting Host scheinen nun schon seit vielen Jahren von Microsoft als veraltete Technologie deklariert zu sein, wenngleich beides auch unter einem aktuellen Windows 10 noch unterstützt wird. Dies macht sich schon allein bei der Suche nach Fachliteratur und Editoren schmerzhaft bemerkbar.
Daher meine Frage: Wäre nicht Scripting per Python ein zukunftsweisenderer Weg, zumal die Scripte dadurch sogar plattformunabhängig wären? Möglicherweise ist das ja sogar angedacht. Nach den Infos von dieser Seite: https://wiki.python.org/moin/AppsWithPythonScripting sollte das im Prinzip ja möglich sein.
Oder gibt es noch andere Möglichkeiten PL zu scripten? Ich meine mich zu erinnern, dass im Betatester-Forum irgendwo mal von JavaScript die Rede war.
Scripting in Python - möglicherweise in Zukunft?
-
- Mitglied
- Posts: 53
- Joined: Sun 25 Feb 2018 19:26
-
- Entwickler
- Posts: 4208
- Joined: Tue 19 Nov 2002 15:49
Re: Scripting in Python - möglicherweise in Zukunft?
Grundsätzlich bietet PhotoLine unter Windows eine COM-Schnittstelle und kann damit von allen Programmiersprachen aus aufgerufen werden, die COM unterstützen.
Martin
Nach dieser Seite bzw. nach https://wiki.python.org/moin/Win32All brauchst du "win32com", um von Python aus COM-Schnittstellen aufzurufen.Nach den Infos von dieser Seite: https://wiki.python.org/moin/AppsWithPythonScripting sollte das im Prinzip ja möglich sein.
Martin
-
- Entwickler
- Posts: 4174
- Joined: Mon 18 Nov 2002 15:30
- Location: Bad Gögging
Re: Scripting in Python - möglicherweise in Zukunft?
JavaScript würde auch gehen, z.B.
Code: Select all
var pl = new ActiveXObject("PhotoLine.application");
var doc = pl.ActiveDocument;
var page;
pl.Visible = 1;
if(doc != null)
{
page = doc.ActivePage;
if (page != null)
{
var layer = page.RootLayer.First;
while (layer != null)
{
// 1 means Image (PhotoLine.LayerType.LTImage)
if (layer.Type == 1)
layer.DoOperation("Dither", "RasterSize", 32, "Angle", 0);
layer = layer.next;
}
}
}
-
- Mitglied
- Posts: 53
- Joined: Sun 25 Feb 2018 19:26
Re: Scripting in Python - möglicherweise in Zukunft?
Vielen Dank! Dann werde ich mich da mal reinarbeiten. (Zu meiner Entschuldigung : ich habe mein System erst vor einem halben Jahr vom Mac auf Windows gewechselt. Die COM-Schnittstelle kannte ich noch nicht.)
-
- Mitglied
- Posts: 53
- Joined: Sun 25 Feb 2018 19:26
Re: Scripting in Python - möglicherweise in Zukunft?
Hallo,
ich wollte nur kurz mitteilen, dass es mit dem Scripting per Python tatsächlich funktioniert! Das ist schon mal eine feine Sache.
Eine Frage/Anregung hat sich dabei allerdings meinerseites schon wieder ergeben:
Es gibt zwar für das Objekt "Application" die Methode "OpenDialog()" aber eine Methode "SaveDialog()" fehlt leider. Es wäre toll, wenn auch diese noch eingebaut würde, damit es auch für automatisiertes Speichern möglich ist, einen flexiblen Speicherort vom User auswählen zu lassen.
P.S: Per JavaScript habe ich es allerdings nicht hinbekommen Photoline zu scripten. Ich wollte das über Node.js laufen lassen, aber das kann nicht auf die COM-Schnittstelle zugreifen. Wäre interessant zu wissen, welche Scripting-Engine/Runtime denn hier in Frage käme (außer IE oder Edge).)
ich wollte nur kurz mitteilen, dass es mit dem Scripting per Python tatsächlich funktioniert! Das ist schon mal eine feine Sache.
Eine Frage/Anregung hat sich dabei allerdings meinerseites schon wieder ergeben:
Es gibt zwar für das Objekt "Application" die Methode "OpenDialog()" aber eine Methode "SaveDialog()" fehlt leider. Es wäre toll, wenn auch diese noch eingebaut würde, damit es auch für automatisiertes Speichern möglich ist, einen flexiblen Speicherort vom User auswählen zu lassen.
P.S: Per JavaScript habe ich es allerdings nicht hinbekommen Photoline zu scripten. Ich wollte das über Node.js laufen lassen, aber das kann nicht auf die COM-Schnittstelle zugreifen. Wäre interessant zu wissen, welche Scripting-Engine/Runtime denn hier in Frage käme (außer IE oder Edge).)
-
- Entwickler
- Posts: 4208
- Joined: Tue 19 Nov 2002 15:49
Re: Scripting in Python - möglicherweise in Zukunft?
Ich habe von dem Thema keine Ahnung, aber wenn ich im Browser nachchessboard wrote: ↑Fri 14 Sep 2018 15:50P.S: Per JavaScript habe ich es allerdings nicht hinbekommen Photoline zu scripten. Ich wollte das über Node.js laufen lassen, aber das kann nicht auf die COM-Schnittstelle zugreifen. (...)
"Node.js" ActiveX
suche, ist bei mir das erste Ergebnis "node-activex". Aber ob das funktioniert, weiß ich nicht.
Martin
-
- Mitglied
- Posts: 53
- Joined: Sun 25 Feb 2018 19:26
Re: Scripting in Python - möglicherweise in Zukunft?
Vielen Dank, Martin. JavaScript ist mir persönlich jetzt auch nicht so wichtig. Meine Frage kam nur, weil Gerhard ein Beispiel in JavaScript gebracht hatte.
Aber wie gesagt funktioniert es bei mir mit Python super. Nur, dass Pythonscripte natürlich nicht über das Menu in PL aufgerufen werden können. Dafür kann ich sie aber per Doppelklick im Explorer starten, das reicht für meine Zwecke.
Aber noch mal kurz zu meiner anderen Frage: Könntet ihr evt. auch noch Zugriff auf einen Save-Dialog einbauen? Das wäre wirklich sehr hilfreich.
Schöne Grüße
Joachim
Aber wie gesagt funktioniert es bei mir mit Python super. Nur, dass Pythonscripte natürlich nicht über das Menu in PL aufgerufen werden können. Dafür kann ich sie aber per Doppelklick im Explorer starten, das reicht für meine Zwecke.
Aber noch mal kurz zu meiner anderen Frage: Könntet ihr evt. auch noch Zugriff auf einen Save-Dialog einbauen? Das wäre wirklich sehr hilfreich.
Schöne Grüße
Joachim
-
- Entwickler
- Posts: 4208
- Joined: Tue 19 Nov 2002 15:49
Re: Scripting in Python - möglicherweise in Zukunft?
Das war JScript und wird wie auch VBScript von Windows direkt unterstützt.chessboard wrote: ↑Sat 15 Sep 2018 12:31 JavaScript ist mir persönlich jetzt auch nicht so wichtig. Meine Frage kam nur, weil Gerhard ein Beispiel in JavaScript gebracht hatte.
Ich muss mir mal überlegen, wie man das am besten einbaut.chessboard wrote: ↑Sat 15 Sep 2018 12:31Aber noch mal kurz zu meiner anderen Frage: Könntet ihr evt. auch noch Zugriff auf einen Save-Dialog einbauen? Das wäre wirklich sehr hilfreich.
Martin
-
- Mitglied
- Posts: 53
- Joined: Sun 25 Feb 2018 19:26
Re: Scripting in Python - möglicherweise in Zukunft?
Der Editor "VBSEdit", mit dem ich die VBScripts ausprobiert habe, stellt ein Tookit zur Verfügung, über das auch ein Save-Dialog aufgerufen werden kann. Dort geht das über:
Die Funktionsargumente sind hier der Default-Ordner, ein Default-Dateiname und mögliche Dateiformate.
Zurückgegeben wird dann ein String, der den vom User vergebenen Dateinamen inkl. komplettem Pfad und Dateiendung enthält, z.B.:
bzw. "null", wenn das Speichern vom User abgebrochen wurde.
Damit kann man dann ja wieder die SaveAs()-Methode vom PL-Document füttern.
Das Unpraktische ist halt, dass man für Photlinescripte dann noch zusätzlich diesen Editor installiert haben muss.
Joachim
Code: Select all
filepath = Vbsedit.Toolkit.SaveFileDialog("C:\Users\Username\Testordner","Test.pld","Photoline-Bild (*.pld)")
Zurückgegeben wird dann ein String, der den vom User vergebenen Dateinamen inkl. komplettem Pfad und Dateiendung enthält, z.B.:
Code: Select all
"C:\Users\Username\Dokumente\Bilder\Mein_Test.pld"
Damit kann man dann ja wieder die SaveAs()-Methode vom PL-Document füttern.
Das Unpraktische ist halt, dass man für Photlinescripte dann noch zusätzlich diesen Editor installiert haben muss.
Joachim