1つのnsIFilePicker.appendFilters()で複数の拡張子のフィルタを追加する時、定数の小さな順にドロップダウンに登録される。ので、任意の順番にしたい場合は複数のnsIFilePicker.appendFilters()を並べてやる必要がある。

1つのnsIFilePicker.appendFilters()

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var filePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
filePicker.init(window, "Select a File", nsIFilePicker.modeOpen);
filePicker.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterText | nsIFilePicker.filterAll);
var res = filePicker.show();
1つのnsIFilePicker.appendFilters()でフィルタを追加した場合のプレビュー。

appendFilters()の引数の順序には意味がない。

複数のnsIFilePicker.appendFilters()

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var filePicker = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
filePicker.init(window, "Select a File", nsIFilePicker.modeOpen);
filePicker.appendFilters(nsIFilePicker.filterHTML);
filePicker.appendFilters(nsIFilePicker.filterText);
filePicker.appendFilters(nsIFilePicker.filterAll);
var res = filePicker.show();
複数のnsIFilePicker.appendFilters()でフィルタを追加した場合のプレビュー。

それぞれのappendFilters()の順序に従ってフィルタが追加される。


というメモ。