Python script addin scheint ignoriert zu werden

Hilfe zu verschiedenen Themen
Antworten
sfx2k
Beiträge: 32
Registriert: 6. Jun 2024 08:52
Betriebssystem: Windows 10 Home
DOpus Version: 13

Python script addin scheint ignoriert zu werden

Beitrag von sfx2k »

Hallo zusammen,

bin neu hier im deutschen Forum.
War vor ca. 12/14 Jahren im englischsprachigen DOpus-Forum unter dem Namen 'Dinkelhopper' unterwegs.
Habe mich zu der Zeit recht intensiv mit DOpus beschäftigt, unter anderem einige Plugins geschrieben und war Beta-Tester.
Da ich beruflich dann sehr stark eingebunden war (und immer noch bin) und die Interessen auch woanders lagen, habe ich die letzten Jahre DOpus einfach nur noch benutzt, ohne mich um Neuerungen etc. zu kümmern.

Nun habe ich gesehen, dass es möglich ist, die Funktionalität des FAYT-Feldes zu erweitern, was ich dann gleich mal ausprobieren wollte.
Meine bevorzugte Scriptsprache ist Python, welche ich auch schon bei UserCommands und ScriptFunctions auf Buttons etc. erfolgreich einsetze.

Nun sollte es ein ScriptAddin sein und leider musste ich feststellen, dass das nicht so funktioniert, wie ich es erhofft hatte - bzw. es hat gar nicht funktioniert.
Es sieht so aus, als würde das Script komplett ignoriert; es taucht namentlich auch nicht im ScriptManager auf :(

Ich habe es recht einfach gehalten und dennoch passiert nix. Hat jemand eine Idee, was ich falsch gemacht habe?
Der Dateiname ist FAYT Search Preset.py und liegt im Script Addins-Verzeichnis.

Es werden auch keine Fehler im Scriptprotokoll angezeigt und DOpus.Output("Hallo") bewirkt auch nichts...

Code: Alles auswählen

def OnInit(initData):
	initData.name = 'TestSF'
	initData.version = '1.0'
	initData.copyright = '2024 sfx2k'
	initData.desc = ''
	initData.default_enable = True

	cmd = initData.AddCommand()
	cmd.name = 'MeinFAYT'
	cmd.method = 'OnFAYTSearch'
	cmd.desc = ''
	cmd.label = 'MeinFAYT'
	cmd.template = ''
	cmd.hide = False
	cmd.icon = 'script'

	fayt = cmd.fayt
	fayt.enable = True
	fayt.key = '!'
	fayt.backcolor = '#ffc6c6'
	fayt.textcolor = '#000000'
	fayt.label = 'Search'
	fayt.realtime = True

def OnFAYTSearch(scriptFAYTData):
   pass
Auch ein einfaches 'normales' Kommando, welches aus einem JS-Beispiel abgeleitet ist, funktioniert nicht.

Code: Alles auswählen

def OnInit(initData):
	initData.name = "SF Newest Files"
	initData.desc = "Select the newest X files in the folder"
	initData.copyright = "(c)"
	initData.default_enable = True

	cmd = initData.AddCommand()
	cmd.name = "SFNewest"
	cmd.method = "OnSelectNewest"
	cmd.desc = initData.desc
	cmd.label = "Select Newest Files"
	cmd.template = "NUMBER/N,FROM/K/N,NODESELECT/S"

def OnSelectNewest(scriptCmdData):
	pass
Hat jemand eine Idee, was ich falsch mache?
Benutzeravatar
tbone
Supporter
Beiträge: 475
Registriert: 29. Okt 2021 00:45
Betriebssystem: Windows 10 Pro

Re: Python script addin scheint ignoriert zu werden

Beitrag von tbone »

Kannst Du ein Python-Script mit..

Code: Alles auswählen

cscript.exe script.py
..ausführen?
sfx2k
Beiträge: 32
Registriert: 6. Jun 2024 08:52
Betriebssystem: Windows 10 Home
DOpus Version: 13

Re: Python script addin scheint ignoriert zu werden

Beitrag von sfx2k »

Hi und danke für Deine Rückmeldung.

Oha, das geht tatsächlich nicht.
image.png
Hast Du ad hoc eine Lösung? Ansonsten bemühe ich das Internet ;)

Edit: das Internet konnte mir bisher leider noch nicht helfen :(
Benutzeravatar
tbone
Supporter
Beiträge: 475
Registriert: 29. Okt 2021 00:45
Betriebssystem: Windows 10 Pro

Re: Python script addin scheint ignoriert zu werden

Beitrag von tbone »

Na also irgendwie muss man dem Windows Scripting Host (WSH) beibringen, dass er auch Python ausführen soll /kann. Da muss es also irgendwas geben, was den Python Interpreter für Windows verfügbar macht.

Solange das über "cscript.exe" nicht geht, geht in DOpus auch nichts, weil der auch nur ausführen kann, was im WSH bekannt ist. Such nochmal "Python" und "WSH", bzw. "Windows Scripting Host".. irgendwas muss es geben! o)
sfx2k
Beiträge: 32
Registriert: 6. Jun 2024 08:52
Betriebssystem: Windows 10 Home
DOpus Version: 13

Re: Python script addin scheint ignoriert zu werden

Beitrag von sfx2k »

Ich habe mir (noch von 2012 und meinen Experimenten) mal notiert, dass pywin32 installiert und dann etwas registriert werden muss.
Das habe ich mal gemacht und die Dateiendung des Scriptes auf PYS anstatt PY geändert.
Jetzt spuckt das Scriptprotokoll vom DOPus zumindest schonmal Fehler aus :)
Scheint also der richtige Weg zu sein.

Ich probiere mal weiter. Vielen Dank :)
Benutzeravatar
tbone
Supporter
Beiträge: 475
Registriert: 29. Okt 2021 00:45
Betriebssystem: Windows 10 Pro

Re: Python script addin scheint ignoriert zu werden

Beitrag von tbone »

Wenn Du das Rätsel wieder gelöst hast, halte es hier in einer Zusammenfassung fest! o)
sfx2k
Beiträge: 32
Registriert: 6. Jun 2024 08:52
Betriebssystem: Windows 10 Home
DOpus Version: 13

Re: Python script addin scheint ignoriert zu werden

Beitrag von sfx2k »

Also:

für die Python-Version, die benutzt werden soll, muss das pywin32-Modul installiert werden

Code: Alles auswählen

python -m pip install pywin32
Um dem Windows Script Host nun Python als nutzbare Engine bekannt zu machen muss anschließend folgendes aufgerufen werden:

Code: Alles auswählen

C:\python37\Scripts\pywin32_postinstall.py -install
wobei der Pfad natürlich angepasst werden muss.

Das Python-Script, welches im DOpus-ScriptAddins-Verzeichnis installiert werden soll, muss die Dateiendung PYS haben (nicht PY !).
image.png
image.png (31.23 KiB) 8202 mal betrachtet
Wichtig: die benannte Python-Version muss die erste in der PATH-Variablen sein!


Das folgende Script fügt dem DOpus-FAYT-Modul eine Schnelltaste ("!") hinzu (die Funktionalität muss natürlich noch ausprogrammiert werden):

Code: Alles auswählen

g_preset = "My1stFAYTCommand"
g_name_internal = "My1stFAYTCommand"
g_def_key = "!"
g_def_back_color = r"#ffc6c6"
g_def_text_color = r"#000000"

def OnInit(initData):
	initData.name = "FAYT Search " + g_preset
	initData.version = "1.0"
	initData.copyright = "(c) 2024 sfx2k"
	initData.desc = ""
	initData.default_enable = True
	initData.min_version = "13.0"


def OnAddCommands(addCmdData):
	cmd = addCmdData.AddCommand
	cmd.name = g_name_internal
	cmd.method = "OnFAYTSearch"
	cmd.desc = ""
	cmd.label = g_name_internal
	cmd.template = ""
	cmd.hide = True
	cmd.icon = "script"

	fayt = cmd.fayt
	fayt.enable = True
	fayt.key = g_def_key
	fayt.backcolor = g_def_back_color
	fayt.textcolor = g_def_text_color
	fayt.label = g_preset
	fayt.realtime = True

def OnFAYTSearch(scriptFAYTData):
   pass
image.png
image.png (1.98 KiB) 8202 mal betrachtet
Benutzeravatar
tbone
Supporter
Beiträge: 475
Registriert: 29. Okt 2021 00:45
Betriebssystem: Windows 10 Pro

Re: Python script addin scheint ignoriert zu werden

Beitrag von tbone »

Gratuliere! Und danke! o)

Interessant, geht also noch, wunderbar! o) Vielleicht gehe ich auch irgendwann mal auf Python (wenigstens testweise), einfach nur zur Abwechslung und um ein bisschen mehr zu üben, unter Linux ist der Python ja geläufiger als unter Windows, aber auch nicht ohne Tücken. o)

Denn mal los und viel Spass beim FAYT Hacking! o)
Antworten