アラートダイアログのウィンドウタイトル部分に任意の画像をアイコンとして表示するAppleScriptです。
本来、NSWindowのタイトル部分にアイコン表示を行うワザのようです。なにか、Cocoaのバグのような仕様を使っているようです。本来、タイトル部分に直接アイコンを表示させることはできないのですが、ドキュメントのURLを指定すると、該当するパス(URL)の書類アイコンを指定する機能はあります。
▲Mac App Store上で販売中のAppleScriptで開発したアプリケーション「Kamenoko」でも、ウィンドウにアイコン表示するコードが使われています。本Scriptではなく、もっとまっとうな方法で
そこに、存在しないURLを指定すると、直後にアイコン指定できるという、、、どこで役立つのかわかりませんが、そういう方法もあるということで。
AppleScript名:アラートダイアログでウィンドウタイトル部分にアイコン指定 |
— Created 2020-05-08 by Takaaki Naganoya — 2020 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" use framework "AppKit" property NSAlert : a reference to current application’s NSAlert property |NSURL| : a reference to current application’s |NSURL| property NSImage : a reference to current application’s NSImage property NSRunningApplication : a reference to current application’s NSRunningApplication property NSImageNameComputer : a reference to current application’s NSImageNameComputer property NSWindowDocumentIconButton : a reference to current application’s NSWindowDocumentIconButton property returnCode : 0 –Get Computer Icon set anImage to getComputerIcon() of me set aMainMes to "TEST" set aSubMes to "Window title icon TEST" set wTitle to "Window Title" set paramObj to {myMessage:aMainMes, mySubMessage:aSubMes, myWinTitle:wTitle, myImage:anImage} –my displayAlertDialog:paramObj my performSelectorOnMainThread:"displayAlertDialog:" withObject:(paramObj) waitUntilDone:true on displayAlertDialog:paramObj set aMainMes to myMessage of paramObj set aSubMes to mySubMessage of paramObj set anImage to myImage of paramObj set aWinTitle to myWinTitle of paramObj — set up alert set theAlert to NSAlert’s alloc()’s init() tell theAlert its setMessageText:aMainMes its setInformativeText:aSubMes its addButtonWithTitle:"OK" its addButtonWithTitle:"Cancel" –its setIcon:anImage set aWin to its |window|() end tell aWin’s setTitle:aWinTitle aWin’s setRepresentedURL:(|NSURL|’s URLWithString:"WindowTitle") –Dummy URL (aWin’s standardWindowButton:(current application’s NSWindowDocumentIconButton))’s setImage:(anImage) — show alert in modal loop NSRunningApplication’s currentApplication()’s activateWithOptions:0 my performSelectorOnMainThread:"doModal:" withObject:(theAlert) waitUntilDone:true if (my returnCode as number) = 1001 then error number -128 end displayAlertDialog: on doModal:aParam set (my returnCode) to aParam’s runModal() end doModal: on getComputerIcon() return NSImage’s imageNamed:(NSImageNameComputer) end getComputerIcon |