2

OSXダッシュボードウィジェットに移植しているWebアプリがあります。Webアプリは、JavaScriptを使用してクライアント側でデータを生成し、ユーザーがそれを保存する場合は、サーバー側のスクリプトに送信します。サーバー側のスクリプトは、データをContent-disposition: attachment;HTTPヘッダーで中継し、ほとんどの場合、ファイルの保存ダイアログをトリガーします。ブラウザ。

ダッシュボード環境でこれを複製してみました。ウィジェットが消えるだけです。わかりませんが、実際にはなじみのないコンテンツに移動しているのではないかと思います。

では、「ファイルの保存ダイアログ」をトリガーするにはどうすればよいですか?それができない場合は、ウィジェットが生成するデータをファイルとして保存するために、なんらかの方法を使用しますか?

4

2 に答える 2

2

私の知る限り、ウィジェットの目的は情報の表示(インターネットアクセスの有無にかかわらず)、計算の実行、またはアプリケーションの制御であるため、「ファイルの保存」ダイアログを介してダッシュボードウィジェットからファイルを保存することはできません。

ただし、データをローカルに保存するための3つのオプションがあります。

  1. ウィジェットの設定にデータを保存します。setPreferenceForKeyウィジェットメソッドを使用してデータを設定し、preferenceForKeyウィジェットメソッドを使用してデータを取得します。これは、データがウィジェットに属し、ウィジェットの外部からアクセスできる必要がない場合の唯一のオプションです。また、データサイズが大きすぎないようにする必要があります。

  2. ウィジェットのシステムコマンドを使用してスクリプトを実行します。ここでは、任意のスクリプト言語を使用できます(sh、perl、ruby、python、AppleScriptなど)。

  3. Cocoa/Objective-Cベースのウィジェットプラグインを作成します。

于 2010-05-03T14:46:52.723 に答える
2

それを行う正しい方法は、[名前を付けて保存]ダイアログを使用できるようにするcocoaウィジェットプラグインです。それを行う簡単な方法は次のようなものです。

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

これは、bashにstdinをデスクトップ上のファイルにcatし、次にstdinに書き込むように指示します。

于 2010-05-06T09:07:03.133 に答える