如何使用不带Xcode的下拉菜单制作AppleScript?


Answers:


1

AppleScript语言的对话框警报中没有内置的菜单概念。

您可以执行的最接近的操作是使用适当的操作来命名一些虚拟文件(在临时文件夹中),然后让用户选择标有您要执行的操作的文件。

open folder blah
  with selected file bah
    do whatever

需要可可菜单的问题的可怕“解决方案”-无论是用Xcode制作还是使用其他可可菜单-Xcode / IB是创建菜单的工具。MacRuby是编写比AppleScript更需要全功能UI的应用程序的一种好方法。您不需要Xcode / IB即可从纯脚本中构建应用程序。

您可以使用Interface Builder创建一个NIB并使用AppleScript编写所有脚本,但是该Nib定义菜单本身-不是AppleScript(即使AppleScript在运行时可以填充或删除菜单项)。


11

一种选择是使用CocoaDialog **:

set l to {"aa", "bb", "cc"}
set choices to ""
repeat with x in l
    set choices to choices & quoted form of x & " "
end repeat
set dialog to paragraphs of (do shell script "/Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog" & " standard-dropdown --title title --text text --items " & choices)
if item 1 of dialog is "2" then return -- pressed cancel button
item ((item 2 of dialog) + 1) of l

您也可以使用choose from list

choose from list {"aa", "bb", "cc"} with title "Title" with prompt "Please choose" default items "bb" with multiple selections allowed


**此Github存储库的原始URL mstratman已更改。从研究看来,CocoaDialog已经过渡到组织。这是新的更改:


1

此外,如果您只需要一个列表来选择,也可以

choose from list listYouDefined with prompt "Choose from the list."

Google“ AppleScript从列表中选择”。


1

我知道这是一个古老的问题,但是由于最好的答案是在CocoaDialog 2的文档中说的:

下载不起作用下载cocoadialog 2的下载不再可用。这主要是由于多年来的各种变化和缺乏永久性存储。

和3直到18春夏我要寻找其他替代品时才发现Pashua

在此处输入图片说明 (图片摘自网站)

文档下,这称为popup

Example: Using popup
p.type = popup
p.label = Example popup menu
p.width = 310
p.option = Popup menu item #1
p.option = Popup menu item #2
p.option = Popup menu item #3
p.default = Popup menu item #2

屏幕截图:

在此处输入图片说明

Github 回购

使用它后,我发现您可以将Pashua.app安装在您的应用程序目录中,也可以将Pashua嵌入您的应用程序中。我不是这篇文章的作者,但是我需要一个GUI的基本解决方案,并且没有提到。


0

对于AppleScript,您不需要Xcode。只需在“应用程序/实用程序”中打开AppleScript编辑器(“实用程序”文件夹的Finder快捷方式:⌘ Command+ Shift+ U)。MacScripter上的下拉菜单有一些示例代码:Dropdown menu


我已经看过那个链接了。该脚本需要一个NIB / Xcode接口。
daviesgeek 2011年

这是一个很好的例子,说明了AppleScript如何在运行时修改菜单项:-)
bmike

是的,但不是我想要的。
daviesgeek
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.