Scripting in Python - möglicherweise in Zukunft?

Benutzeravatar
chessboard
Mitglied
Beiträge: 51
Registriert: So 25 Feb 2018 19:26

Scripting in Python - möglicherweise in Zukunft?

Beitrag von chessboard »

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
Beiträge: 4159
Registriert: Di 19 Nov 2002 15:49

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

Beitrag von Martin Huber »

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
Benutzeravatar
Gerhard Huber
Entwickler
Entwickler
Beiträge: 4143
Registriert: Mo 18 Nov 2002 15:30
Wohnort: Bad Gögging

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

Beitrag von Gerhard Huber »

JavaScript würde auch gehen, z.B.

Code: Alles auswählen

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;
	   }
	}
}
Benutzeravatar
chessboard
Mitglied
Beiträge: 51
Registriert: So 25 Feb 2018 19:26

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

Beitrag von chessboard »

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.)
Benutzeravatar
chessboard
Mitglied
Beiträge: 51
Registriert: So 25 Feb 2018 19:26

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

Beitrag von chessboard »

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
Beiträge: 4159
Registriert: Di 19 Nov 2002 15:49

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

Beitrag von Martin Huber »

chessboard hat geschrieben: Fr 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. (...)
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
Benutzeravatar
chessboard
Mitglied
Beiträge: 51
Registriert: So 25 Feb 2018 19:26

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

Beitrag von chessboard »

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
Beiträge: 4159
Registriert: Di 19 Nov 2002 15:49

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

Beitrag von Martin Huber »

chessboard hat geschrieben: Sa 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 hat geschrieben: Sa 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.
Ich muss mir mal überlegen, wie man das am besten einbaut.

Martin
Benutzeravatar
chessboard
Mitglied
Beiträge: 51
Registriert: So 25 Feb 2018 19:26

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

Beitrag von chessboard »

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: Alles auswählen

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: Alles auswählen

"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