The biggest area of change in terms of scripting is in access to window tabs, which is covered in detail below. But there are also several other scripting changes.
The application object has several new properties, and loses some others. With the introduction of Color Themes, the
apply handler formatting,
handler color, and
script background color properties been removed. The
AppleScript format class is also no longer relevant, so it is no longer an element of the application.
Script Debugger now supports searching, via the
search command, with relevant application properties
search uses regex,
search matches words,
search ignores case and
search wraps. You also set the search and replace string via application properties:
search string and
search replace string.
open in tabs property has been deprecated, in favor of the
prefer tabs property, which lets you choose whether to follow the system setting or override it.
Other new application properties are
can notarize, which tells you if the host Mac meets the requirements for notarizing apps, and several properties that cover settings in the Preferences -> Building pane:
include notes on export, which reflects the setting for the SD Script Notes.rtfd file;
include source on export, which controls whether a copy of the source should also be exported;
export destination fixed and
export folder name, for controlling where exported files end up;
lock applets, which controls whether applets are locked; and
version control friendly, for scripts saved as script bundles.
You can get a list of available themes through the
available themes property, and get or set the active theme via the
current theme property. The application no longer has an
AppleScript formats collection.
document class has some new properties:
autoincrement build number on export joins
autoincrement build number;
embed run only and
embed used frameworks join
embed used libraries for exports;
export name gets and sets the name used used for exported files;
codesign bundles too controls whether the signing settings for applets should also apply to bundles (.scptd files); and
show code folding controls whether code folding is displayed in all the document’s windows.
There is a new command,
direct export, which provides access to the new Export Run-Only facility. You pass the document as the direct parameter, and the script type for the
Windows and Tabs
Script Debugger 8 is using system-provided tabbing for script windows, and as part of that change scripting support has been enhanced to include access to script window tabs. It has also resulted in a couple of less obvious changes.
To understand the way it works, it helps to have some understanding of how Apple implements tabs. Normal windows are easy to understand: window 1 is the frontmost window, and if you click on another window, it comes to the font to become the new window 1. Window indexes represent where windows appear in front-to-back layering order.
In a tabbed window, each tab actually represents a separate window, layered from the left tab to the right, with only the active tab’s window visible. When you click on a different tab to make it active, the order of the windows doesn’t change — all that changes is which one is visible.
Windows are represented in the AppleScript dictionary as
script windows, and each
script window contains one or more
script window tabs. The
script window tab class is a subclass of
script window: the active
script window tab is also a kind of
So if you ask for script window tab 1 of script window 1, the result will always be the left-most tab of the front script window, regardless of which tab is active. If a window has no tabs, script window tab 1 of script window 1 will be the same thing as script window 1.
To move a script window forwards or backwards, you can change its
index property. To move a script window tab within the tabbed group — say, to move it from left-most to right-most — you change the script window tab’s
tab index property.
To move scripts between tab groups, or to make tab groups, you can use the
parent window property. For example, if you have two windows open and you want to combine them into a single tabbed window, you could use set parent window of script window 1 to script window 2. To remove a tab from a group and make it a standalone window, set its
tabbed property to false: set tabbed of script window tab 2 of script window 1 to false
Script windows and script window tabs have some new properties. As mentioned above, only one tab in each tabbed window is drawn at any time. But as far as the system is concerned, they are still visible until they are closed, which means the
visible property is not very helpful. So script windows and script window tabs now have a
content visible property, which returns true only if they are the active tab. Similarly, the
current document property returns the document of the active tab.
One of the subtle changes in tab behavior compared with previous versions of Script Debugger involves window bounds. Suppose you have two windows, and you tab one into the other, and you then resize the resulting window. When you get the bounds of the hidden script window tab, it will still be its original size. In previous versions, you would also see it at this size if you then dragged the tab back out into a window of its own.
However Apple’s tabbing works a bit differently. Although the hidden window will still return its original bounds, as soon as it gets drawn — which is required when it’s dragged or otherwise made active — it is immediately resized to the size of the visible tab.
To deal with this, script windows and script window tabs have a
parent bounds property, which returns the bounds of the script window they belong to. And because of the way tabs work, you can probably think of it as the actual bounds, because that’s what it will be if such a tab ever gets made visible.
Script windows also have a
tabbed property, which will tell you if it is a tabbed window.
Whether new windows are tabbed is controlled by the
prefer tabs property, which has three options:
default. These match the settings in Script Debugger’s preferences, with
default meaning to use the system-wide preference from System Preferences. The
prefer tabs property replaces the
open in tabs property, which has been renamed
open tabs deprecated. You can still use the old property, but because it is a boolean value, it cannot map to all three choices.
make commands have a new
prefer tab property, with the same three choices.