このセクションでは、XUL ウィンドウの状態を保存する方法について説明します。
状態を保存する
大きなアプリケーションを作るときには、しばしば、セッションを越えてウィンドウの状態を保存したい場合があると思います。 例えば、利用者がアプリケーションを終了したときに、そのウィンドウでは、どのツールバーが折り畳まれていたかが保存されるほうが、利用者にとっての利便性が向上します。
このためには、スクリプトを作成して保存しておきたい情報の収集を行い、それをファイルに保存する方法も考えられますが、 すべてのアプリケーションについて同様の処理を作成していくのは、苦痛でしかないと思います。 幸いなことに、XUL では、ウィンドウの状態を保存するメカニズムが提供されているため、これを利用するのがより便利な方法になります。
この方法を利用すると、必要な情報が収集されて、利用者の他の設定情報を置くのと同じディレクトリに、RDF ファイル localstore.rdf
として保存されるようになります。
つまり、この RDF ファイルに、個々のウィンドウの状態についての情報が保持されるということです。
また、この方法には、Mozilla のユーザプロファイルと連動するという利点もあります。
これは、個々の利用者ごとに異なった設定が可能になることを意味しています。
XUL では、どの要素の状態も保存できます。 通常は、ツールバーの状態やウィンドウの位置、あるいはパネルが表示されているかどうかといった情報を保存させたい場合が多いと思いますが、機能としては、ほとんど何でも保存することが可能です。
persist 属性
状態を保存可能にするためには、保存したい値をもつ要素に persist
属性を追加するだけです。【訳注: persist は「持続する」あるいは「永続する」といった意味】
属性の値には、その要素で保存したい属性を、空白区切りのリスト形式で指定します。
なお、persist
persist
を設定する要素には、その要素を識別できるように
属性を設定する必要があります。
id
ウィンドウの大きさを保存する例を、以下に示します。
<window id="someWindow" width="200" height="300" persist="width height" . . .
これによって、
要素の 2 つの属性、window
と width
が保存されます。
また、height
属性に、別の属性名を空白で区切って加えることで、その属性も保存させることが可能です。
persist
属性は、どの要素にも加えることができ、どの属性でも保存することができます。
なお、スクリプトを使って属性を操作した場合、通常ありえない値が保存される可能性があります。
persist
ファイル検索ダイアログの例
それでは、persist
属性を、ファイル検索ダイアログのいくつかの要素に追加してみることにしましょう。
ここでは、ウィンドウの位置を保存したいとします。
このためには、window
を変更する必要があります。
<window
id="findfile-window"
title="Find Files"
persist="screenX screenY width height"
orient="horizontal"
xmlns="https://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
これによって、ウィンドウの x 座標と y 座標、ウィンドウの幅と高さが保存されます。 また、さらにスプリッターの折り畳みについての状態を保存するように拡張するのもよいと思います。 しかしながら、現在のタブの状態については、保存したとしても利用者の利便の向上にはあまり役に立たないでしょう。
var el = env.locale; ここまでのファイル検索ダイアログの例 : ソース 表示
次のセクションでは、XUL ファイルに対してスタイルシートを使う方法を見ることにします。