Как сохранить файл, созданный виджетом панели инструментов OS X? - PullRequest
2 голосов
/ 27 апреля 2010

У меня есть веб-приложение, которое я портирую на виджет OS X Dashboard. Веб-приложение генерирует некоторые данные на стороне клиента с помощью JavaScript, а затем, когда пользователь хочет сохранить их, отправляет их в сценарий на стороне сервера, который возвращает данные с заголовком HTTP Content-disposition: attachment;, вызывая файл сохранения диалог в большинстве браузеров.

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

Итак, как мне вызвать «диалоговое окно сохранения файла» - или, если это не удалось, вообще использовать какой-либо метод для сохранения данных, создаваемых виджетом в виде файла?

Ответы [ 2 ]

2 голосов
/ 06 мая 2010

Правильный способ сделать это - плагин виджета какао, который позволит вам использовать диалог сохранения как. Быстрый способ сделать это примерно так:

command = widget.system("/bin/bash -c 'cat - > ~/Desktop/test.txt'", yourHandler);
command.write( "some text" );
command.close();

Это говорит bash к cat stdin в файл на рабочем столе, а затем записывает в stdin.

2 голосов
/ 03 мая 2010

Насколько я знаю, невозможно сохранить файл из виджета сводной панели через диалоговое окно «Сохранить файл», поскольку цель виджетов состоит в том, чтобы отображать информацию (с доступом к Интернету или без него), выполнять вычисления или контролировать приложения.

Однако у вас есть три варианта локального хранения данных:

  1. Сохраните данные в настройках виджета. Установите данные с помощью метода виджета setPreferenceForKey и получите их с помощью метода виджета preferenceForKey . Это вариант, только если данные принадлежат виджету и не должны быть доступны вне виджета. Также размер данных не должен быть слишком большим.

  2. Выполнение сценариев с помощью системной команды виджета. Здесь можно использовать любой язык сценариев (sh, perl, ruby, python, AppleScript, ...).

  3. Написать плагин для виджетов, основанный на Какао / Objective-C .

...