Scripting in Python - möglicherweise in Zukunft?

Moderator: Hoogo

User avatar
chessboard
Mitglied
Posts: 17
Joined: Sun 25 Feb 2018 19:26

Scripting in Python - möglicherweise in Zukunft?

Post by chessboard » Tue 11 Sep 2018 17:31

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.

Martin Huber
Entwickler
Entwickler
Posts: 3241
Joined: Tue 19 Nov 2002 15:49

Re: Scripting in Python - möglicherweise in Zukunft?

Post by Martin Huber » Wed 12 Sep 2018 09:42

Grundsätzlich bietet PhotoLine unter Windows eine COM-Schnittstelle und kann damit von allen Programmiersprachen aus aufgerufen werden, die COM unterstützen.
Nach den Infos von dieser Seite: https://wiki.python.org/moin/AppsWithPythonScripting sollte das im Prinzip ja möglich sein.
Nach dieser Seite bzw. nach https://wiki.python.org/moin/Win32All brauchst du "win32com", um von Python aus COM-Schnittstellen aufzurufen.

Martin

User avatar
Gerhard Huber
Entwickler
Entwickler
Posts: 3557
Joined: Mon 18 Nov 2002 15:30
Location: Bad Gögging

Re: Scripting in Python - möglicherweise in Zukunft?

Post by Gerhard Huber » Wed 12 Sep 2018 10:24

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;
	   }
	}
}

User avatar
chessboard
Mitglied
Posts: 17
Joined: Sun 25 Feb 2018 19:26

Re: Scripting in Python - möglicherweise in Zukunft?

Post by chessboard » Wed 12 Sep 2018 11:09

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.)

User avatar
chessboard
Mitglied
Posts: 17
Joined: Sun 25 Feb 2018 19:26

Re: Scripting in Python - möglicherweise in Zukunft?

Post by chessboard » Fri 14 Sep 2018 15:50

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).)

Martin Huber
Entwickler
Entwickler
Posts: 3241
Joined: Tue 19 Nov 2002 15:49

Re: Scripting in Python - möglicherweise in Zukunft?

Post by Martin Huber » Sat 15 Sep 2018 08:54

chessboard wrote:
Fri 14 Sep 2018 15:50
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. (...)
Ich habe von dem Thema keine Ahnung, aber wenn ich im Browser nach

"Node.js" ActiveX

suche, ist bei mir das erste Ergebnis "node-activex". Aber ob das funktioniert, weiß ich nicht.

Martin

User avatar
chessboard
Mitglied
Posts: 17
Joined: Sun 25 Feb 2018 19:26

Re: Scripting in Python - möglicherweise in Zukunft?

Post by chessboard » Sat 15 Sep 2018 12:31

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

Martin Huber
Entwickler
Entwickler
Posts: 3241
Joined: Tue 19 Nov 2002 15:49

Re: Scripting in Python - möglicherweise in Zukunft?

Post by Martin Huber » Sat 15 Sep 2018 14:42

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.
Das war JScript und wird wie auch VBScript von Windows direkt unterstützt.

chessboard wrote:
Sat 15 Sep 2018 12:31
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.
Ich muss mir mal überlegen, wie man das am besten einbaut.

Martin

User avatar
chessboard
Mitglied
Posts: 17
Joined: Sun 25 Feb 2018 19:26

Re: Scripting in Python - möglicherweise in Zukunft?

Post by chessboard » Sat 15 Sep 2018 19:08

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:

Code: Select all

filepath = Vbsedit.Toolkit.SaveFileDialog("C:\Users\Username\Testordner","Test.pld","Photoline-Bild (*.pld)")
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.:

Code: Select all

"C:\Users\Username\Dokumente\Bilder\Mein_Test.pld"
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