0

我想为名为gmsh的命令行二进制文件创建一个简单的 GUI Cocoa-Applescript 应用程序。它可以使用我想通过 GUI 指定的许多参数启动。当它启动时,它会打开一个 X11 窗口。

在创建复杂的 GUI 之前,我创建了一个带有一个文本字段和一个按钮的简单界面。我希望文本字段信息成为传递给二进制文件的一个参数,并且当我单击二进制文件的按钮以使用该参数启动时。

我可以使用显示警报来完成这项工作,例如,当按下按钮时,警报会显示文本字段输入。但是,当我尝试用 do shell 脚本替换显示警报时,应用程序冻结并且没有任何反应。

我不知道添加 gmsh 二进制文件的合适位置,所以我把它放在了 Supporting Files 中。

这是我的非工作 AppDelegate.applscript,

script AppDelegate
property parent : class "NSObject"

property argOne : ""

on buttonClicked_(sender)
    -- display alert "Argument one is " & argOne
    do shell script "gmsh " & argOne
end buttonClicked_

on applicationWillFinishLaunching_(aNotification)
    -- Insert code here to initialize your application before any files are opened 
end applicationWillFinishLaunching_

on applicationShouldTerminate_(sender)
    -- Insert code here to do any housekeeping before your application quits 
    return current application's NSTerminateNow
end applicationShouldTerminate_

end script

一旦 X11 应用程序启动,我不需要该应用程序保持打开状态,因为 Cocoa-Applescript 只是一个 gui 启动器。

4

1 回答 1

0

执行 do shell 脚本时,只要 shell 脚本正在运行,您的 GUI 就会冻结。当程序一直冻结时,这意味着您的 do shell 脚本正在挂起。我看到的第一件事是我错过了命令和您发送来执行 shell 脚本的参数之间的空格。这可能是你的第一个问题,应该是这样的

  do shell script "gmsh " & argOne

当您想要保持 GUI 响应时,AppleScriptObjC 中有三个选项:

  1. 在后台运行 shell 命令
  2. 使用 performSelectorInBackground_withObject_("NameOfHandler:", 参数)
  3. 创建一个 NSTask
于 2013-02-18T23:18:05.240 回答