An open letter to fellow developers! If you're involved building third party solution for Adobe applications (mainly Scripts/Extensions) and you care about it, please invest 10 minutes of your time, read along and chime in.
Posts Tagged - Extendscript
BridgeTalk, the system that enables messaging between applications in the Adobe scripting ecosystem, is prone to failure when evaluating functions via .toSource() - be aware and stringify them in advance!
In a ScriptUI Window different components are usually registered for Events, and fire their own Handlers. You can build some interconnection, so for instance a Button's 'click' handler triggers a change in a ListBox, which in turn reacts to its own 'onChange' Event. It's quite easy to decouple this interaction, provided that you set up your code properly.
It's not uncommon, when scripting for Adobe applications, to borrow JS libraries that have been originally written for web development. While the new generation of Adobe HTML Extensions will run on the Chromium Embedded Framework, traditional ExtendScript code is based upon a different, older engine. Besides ECMAScript unsupported features (i.e. ES 5) I've noticed that using minified JS code is a risky business - scripts can break or fail silently. I've set up a proper testing environment to inspect them.
If you aren't in love with Adobe's ExtendScript Toolkit, welcome to the club. I've come up with a Sublime Text 2 build system package that lets you run JSX scripts directly from Sublime Text targeting Photoshop, Command+B or CTRL+B and voilà!
When scripting for the Creative Suite it may be handy to setup a Preset system, in order to allow users save and retrieve their own preferred configurations easily. In this tutorial I'll show you how to implement Presets with a DropDownList menu based upon XML data.
ScriptUI Windows can be tricky in Photoshop, especially if you want to create a non-modal, persistent and idle palette. While a couple of workarounds are possible, as I've shown in a previous post, there's a better alternative involving BridgeTalk.