[PR]看護師の好条件な求人情報満載:年間50000人の看護師が転職に利用!

XUL チュートリアル - 12.3 - 「開く」ダイアログと「保存」ダイアログ
戻る 内容 リファレンス 進む

XUL チュートリアル - 「開く」ダイアログと「保存」ダイアログ

よくあるダイアログは、ユーザーが開いたり保存したりするファイルを選択できるものでしょう。

ファイルピッカー (File Picker)

ファイルピッカーとは、ユーザーがファイルを選択できるダイアログです。これが最もよく使われるのは、「開く」と「名前を付けて保存」メニューコマンドですが、ユーザーがファイルを選択する必要のある場所ならどこでも使うことができます。XPCOM インターフェース nsIFilePicker がファイルピッカーを実装するのに使われています。

ファイルピッカーは、次の 3 つのモードの一つで使用できます。

ダイアログの外観は、その種類により違います。また、プラットフォームによっても変化します。ユーザーがファイルやフォルダーを選択すると、その読み書きができます。

ファイルピッカーインターフェース nsIFilePicker は、3 つのモードの一つでダイアログを表示する役割を果たします。インターフェースを使うことにより、ダイアログの機能の多くの設定ができます。ダイアログを閉じる場合、選択したファイルを取得するためインターフェースの関数が使えます。

始めに、ファイルピッカーコンポーネントを作り、それを初期化する必要があります。

var fp = Components.classes["@mozilla.org/filepicker;1"]
        .createInstance(Components.interfaces.nsIFilePicker);
fp.init(window, "Select a File", nsIFilePicker.modeOpen);

まず、新しいファイルピッカーオブジェクトを作り、変数 'fp' に保存しています。'init' 関数を使ってファイルピッカーを初期化します。この関数は、引数を 3 つ取ります。ダイアログを開いているウィンドウ、ダイアログのタイトル、そしてモードです。モードはここでは 'modeOpen' で、これは「開く」ダイアログのために使われています。他の 2 つのモードの場合、'modeGetFolder' と 'modeSave' が使えます。これらのモードは、nsIFilePicker インターフェースの定数です。

ダイアログを表示する前に、ダイアログに設定できる機能が 2 つあります。最初は、ダイアログが開かれるときに表示されるデフォルトディレクトリーです。2 番目は、ダイアログに表示されるファイルの型のリストを示すフィルターです。これを使えば、例えば、HTML ファイル以外のすべてのファイルを隠すことができます。

デフォルトディレクトリーは、ファイルピッカーオブジェクトの displayDirectory プロパティーをディレクトリーに設定することにより指定できます。ディレクトリーは、 nsILocalFile オブジェクトでなければなりません。これを設定しない場合、適切なデフォルトが選択されます。フィルターを追加するには、appendFilter 関数を呼び出して、表示させたいファイルの型を設定します。

fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterImages);
fp.appendFilters(nsIFilePicker.filterText | nsIFilePicker.filterAll);

最初の例は、HTML とイメージファイルのためのフィルターを追加しています。ユーザーは、この型のファイルからしか選択できません。これを行なう方法は、プラットフォームによって異なります。プラットフォームによっては、個々のフィルターは区別され、ユーザーは HTML ファイルとイメージファイルから選ぶことができます。2 番目の例は、テキストファイルとすべてのファイルのためのフィルターを追加しています。このため、ユーザーにはテキストファイルだけを表示するかすべてのファイルを表示するかのオプションが与えられています。

XML ファイルと XUL ファイルのために、'filterXML' と 'filterXUL' を使うこともできます。カスタムファイルのフィルターが欲しい場合、次のようにすれば、appendFilter 関数が使えます。

fp.appendFilter("Audio Files","*.wav; *.mp3");

この行は、Wave と MP3 オーディオファイルのためのフィルターを追加します。最初の引数はファイルの型のタイトルで、2 番目はセミコロンで区切ったファイルマスクのリストです。必要に応じて、マスクを増やしたり減らしたりできます。別のフィルターを追加するため、何度でも appendFilter を呼び出すことができます。フィルターを追加する順序により、優先度が決まります。多くの場合、追加した最初のものがデフォルトで選択されます。

最後に、show 関数を呼び出すことによりダイアログを表示できます。これは引数を取りませんが、ユーザーが選択したものを示すステータスコードを返します。3 つの定数のどれかを返します。

戻り値をチェックしてから、ファイルピッカーからファイルオブジェクトを取得すべきです。


var res=fp.show();
if (res==nsIFilePicker.returnOK){
  var thefile=fp.file;
  // --- ここでファイルを使って何かをする ---
}

(進む) 次は、共通内容を処理するため、オーバーレイの使い方を見ることにしましょう。

XUL チュートリアル - 12.3 - 「開く」ダイアログと「保存」ダイアログ
戻る 内容 リファレンス 進む

[PR]〈特集〉内側からの美容法:うるおい美人の秘密を公開!キューサイ