Добавление пользовательских пунктов меню с использованием AppleScript для приложения в док-станции - PullRequest
1 голос
/ 26 ноября 2010

Вы можете написать AppleScript и сохранить его как приложение, а затем поместить его на док-станцию. Но возможно ли добавить в него пункты меню, чтобы при повторном нажатии отображать эти пункты меню? Если да, то как их определить и определить их действия?

Спасибо

Ответы [ 3 ]

0 голосов
/ 26 ноября 2010

С Xcode сделайте следующее:

  1. NIB-файлы -> MainMenu.xib (двойной щелчок). Это открывает интерфейс конструктора.
  2. file -> new ... -> Cocoa -> mainMenu
  3. свяжите dockMenu вашего mainMenu с "владельцем файла" (второй клик по mainMenu -> перетащите окружность dockMenu к владельцу файла)
  4. дважды щелкните по mainMenu и отредактируйте названия элементов. Свяжите элемент «отправить действия» с действиями, которые вы хотите выполнить (аналогично пункту 3).

Пуля 4 немного шаткая, потому что я точно не помню, как она идет. Я дам вам ссылку для дальнейшего чтения: http://cocoadevcentral.com/articles/000036.php. Не должно быть никаких проблем, чтобы связать ее с applecriptcript.

Буду признателен, если вы опубликуете рабочее решение (я имею в виду, когда оно будет работать).

ш, Юха

0 голосов
/ 26 ноября 2010

Я выкопал, как я это сделал.Это работает для леопарда и старше: это оболочка приложения какао для команд оболочки.Для снежного барса вы можете сделать это напрямую для сценариев Apple.

  1. xcode -> новый проект ... -> Приложение -> Приложение какао
  2. (правая панель) NIB Files ->(щелкните правой кнопкой мыши) Добавить -> Новый файл -> Какао -> Класс Objective C -> "runScript.m"
  3. изменить файл runScript.h (правая панель):
#import Cocoa/Cocoa.h // add gt and lt (does not show here)
@interface runScript : NSObject {}
-(IBAction)runHello:(id)sender;
@end
  1. изменить runScript.m:
#import "runScript.h"
@implementation runScript
-(IBAction)runHello:(id)sender
{
    NSTask *script=[[NSTask alloc] init];
    [script setLaunchPath:@"~/Desktop/hello.app/Contents/MacOS/hello"];
    [script launch];
}
  1. Файлы NIB -> MainMenu.xib (двойной щелчок открывает конструктор интерфейса)
  2. конструктор интерфейса -> инструменты ->библиотека (страница-объектов) -> библиотека-какао- "объекты и контроллеры" -> объект (перетащите этот синий куб в окно Main Menu.xib)
  3. выберите объект (который вы только что добавили) ->конструктор интерфейса -> инструменты -> инспектор идентичности -> класс -> выберите runScript из выпадающего списка (это класс объекта c, который вы создали в 2)
  4. MainMenu.xib -> (двойной щелчок) MainMenu -> (удалить лишние +) переименовать «file-> new» в file-> runHello
  5. щелкнуть правой кнопкой мыши runHello -> перетащить кружок рядом с «Actions: runHello »для запуска скрипта -> runHello (в MainMenu.xib)
  6. В окне Mainmenu.xib: щелкните правой кнопкой мыши« Владелец файла »-> перетащите кружок рядом с dockMenu в MainMenu
  7. Goвернуться к xcode -> build -> build and go -> сохранить все

Теперь при запуске программы в доке должен быть элемент "file-> runHello".

Вы можетеудалите окно в "Mainmenu.xib".Кроме того, NSTask может выполнять все команды оболочки, а не только скрипты.

В Snow Leopard существует «яблочный скрипт IBAction».И вы можете изменить «Приложение какао» на «Приложение Applescript».

br,
Juha

0 голосов
/ 26 ноября 2010

Вы не можете сделать это с помощью Applescript.Сохранение Applescript в качестве приложения действительно устраняет необходимость в редакторе сценариев для запуска сценария, а также пару других незначительных изменений.В конце концов, это всего лишь сценарий.Если вам нужна дополнительная функциональность, вам следует заняться созданием приложений на основе Applescript с помощью Xcode (в том, что раньше называлось Applescript Studio).

...