Как добавить поддержку AppleScript / JXA в приложение без какао? - PullRequest
0 голосов
/ 01 октября 2018

Я смотрю на вещи, которые могу внести в открытый код.У многих приложений FOSS, которые я использую, есть одна болевая точка: они не поддерживают скрипты.Я думаю, что было бы неплохо, по крайней мере, попытаться добавить базовую поддержку сценариев для некоторых приложений, которые я использую, например, OBS.

Однако все руководства по добавлению поддержки сценариев предполагают, что рассматриваемое приложениенаписано в какао.Многие из этих приложений FOSS, на которые я смотрю,… нет.Есть ли у кого-нибудь хорошие ресурсы для предоставления нативной функциональности нативным системным службам, как это потребуется для сценариев?

1 Ответ

0 голосов
/ 01 октября 2018

Реализация нетривиально Поддержка событий Apple - это правильная PITA;так что если вам нужно реализовать его с нуля в C / C ++ (CocoaScripting.framework не является началом для приложений, не относящихся к Cocoa, и любые сторонние фреймворки будут в значительной степени устаревшими).Прямо сейчас я бы даже не попробовал: AppleScript умирает, а JXA уже мертва, и Apple ничего не говорит о своих планах (если таковые имеются) на будущее Mac Automation.Это может измениться, если / когда ярлыки появятся в macOS, но этого не произойдет до 10.15.

Если вы просто хотите добавить действительно базовую поддержку автоматизации (т. Е. Нет «объектной модели»,просто простые команды, такие как play FILE / convert FILE), и приложение прекрасно работает с циклом событий macOS, не очень сложно (хотя и крайне утомительно) установить обработчики событий Apple, распаковать и упаковать простые аргументы и результаты (числа, строкичерез старый C Apple Event Manager API.Это не будет очень "AppleScript-иш", но по крайней мере это достижимо.Или, если приложение уже имеет свою собственную встроенную (например, JavaScript) поддержку сценариев, реализация обработчика do script CODE [with parameters {ARG1,ARG2,…}] для вызова этого является легкой победой.

Что касается документации и примера кода, выполните поискдля AEInstallEventHandler и посмотрим, что произойдет.Не будет здорово, но это так же хорошо, как и получается.Будьте готовы выяснить многое из этого для себя.

...