2013-02-18 2 views
0

Я хочу создать простое приложение GUI Cocoa-Applescript для двоичного кода командной строки, которое называется gmsh. Его можно запустить с помощью ряда аргументов, которые я хотел бы указать через графический интерфейс. Когда он запускается, он открывает окно X11.Как запустить двоичную строку командной строки из приложения Cocoa-Applescript?

Прежде чем создать сложный графический интерфейс, я создал простой интерфейс с одним текстовым полем и одной кнопкой. Я хочу, чтобы информация текстового поля была одним аргументом, переданным в двоичный файл, и когда я нажимаю кнопку для запуска двоичного файла с аргументом.

Я могу сделать эту работу с предупреждением на дисплее, например. при нажатии кнопки появляется текстовое поле. Однако, когда я пытаюсь заменить предупреждающее сообщение на экран с помощью скрипта do, приложение зависает, и ничего не происходит.

Я не знаю, где подходящее место для добавления двоичного файла gmsh, поэтому я поместил его в Поддерживающие файлы.

Это мой нерабочим 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 начал, как какао-Applescript это просто графический интерфейс запуска.

ответ

0

При выполнении сценария do shell ваш графический интерфейс зависает до тех пор, пока работает сценарий оболочки. Когда программа продолжает замораживать, это означает, что ваш скрипт оболочки работает. Первое, что я вижу, это то, что я пропускаю пробел между командой и аргументами, которые вы отправляете, для создания сценария оболочки. Это, вероятно, ваш первый вопрос, это должно быть что-то вроде

do shell script "gmsh " & argOne 

Если вы хотите сохранить графический интерфейс отзывчивый есть три варианта в AppleScriptObjC:

  1. Выполните команду оболочки в фоновом режиме
  2. использования performSelectorInBackground_withObject _ ("NameOfHandler:" аргумент)
  3. Создать NSTask
+0

Я исправленный моя опечатка, но это не помогает. Мне не нужно, чтобы приложение оставалось открытым, как только вы нажимаете кнопку, поскольку это просто панель запуска GUI для двоичного файла, который сам запускает окно X11. – joshu

+0

Использование: 'make shell script "gmsh" & quoted form of argOne & "&>/dev/null &"', Это запускает команду оболочки в фоновом режиме. –

+0

Я получаю команду не найденную в выводе консоли. Как ссылаться на двоичный файл, находящийся в папке с файлами, поддерживающими проект? – joshu

Смежные вопросы