|Firefoxのサイドバーですが、toggleSidebar()と言う関数にて、切り替えを行う事が出来ます。titleに詳しく書いています。document.getElementById("sidebar").contentWindow;で取れます。実際の表示をオレオレxulに切り替える、、、で終了なんだけどここまではさっきのMDCのドキュメントに書いてある通り。今回は何が言いたいかと言えば、toggleSidebar()の第一引数です。これなんだよwwwで早速ソース見てみよう。broadcaster要素でした。broadecaster要素の説明はMDCに譲るとして、簡単にかいつまんで言えばxulの属性値を保管する為の要素で、broadcaster要素をobserveすると、値をそのまま引き継ぐ事が出来たりします。toggleSidebar()関数はこのbroadcaster要素のid名を第一引数に取り、対応するbroadcaster要素の属性値からSidebarのタイトル変更したり、実際に表示するコンテンツのURLを取得したりをやってるようです。ように指定する感じです。|アドオンの設定画面にprefwindowダイアログを使って書くと色々と簡単に済みます。titleを参考に簡単に説明すると、通常nsIPrefServiceから目的の設定値のBranchを切り出したりしてやり取りする訳ですが、prefwindowを使ったときに使えるpreferenceを使うと、checkboxなどのフォーム要素のpreference属性と結びつける事によって、フォームの入力値を設定値に直接結びつける事が出来ます。prefwindowをOSXで使ったときの話dlgbuttons属性prefwindowは概ねdialogと同じような構成になっているようなので、OK/キャンセルボタンがあると思いたいのですが、僕の手元のOSXだと出ませんでした。Twitterにてぼやいてたらnorahさんが教えてくれました。dlgbutt...おお、dlgbuttons属性って確かにprefwindowのドキュメントにあったなぁと思い出し、MDCを見る。そりゃ幾らなんでも略し過ぎだろwで、どうもdialogのbuttons属性と同じ設定方法みたい。カンマ区切りで以下の設定値が使える。acceptcancelhelpdisclosureextra1extra2ただこれを指定してみても解決しなかった。browser.preferences.instantApply今度はd:id:nanto_viさんに教えて貰った。about:configのbrows...ビンゴでした。OSXではこれがtrueになっている為、そもそもOK/キャンセルの必要は無いと。falseに設定したらちゃんと出て来ました。確かにprefwindowは便利なんだけど、この設定値に左右されるのは少し嫌だなと思います。openDialog()で開いて、ウィンドウを閉じたい場合に多分Escで消すんだと思うんだけど、どういう状況下か分からないけど、閉じて開いての無限ループになった事がある。dialogで書くべきなんじゃないかなと。|そもそもなんかXULだとCSSでの値の指定、例えばemとか%とかautoが効かなかったり、*1独自のCSSのプロパティがあったりとかで何かと難しい。XULは最低限使うだけにしてHTMLで組んじゃうのが賢い気がしてきました。その方が自由度高いし。パフォーマンスよくないだろうけどGUI部分でパフォーマンスが必要なことはあまりないし。wayってことで自信も出てきました。XUL層にHTMLでOverlayかけると不具合起きるからおすすめできない。XULでの大きさの指定はFlexで制御する方が確実かと。*むほ、flexってなんだろ。miniturboの発言あ、flex便利ですよーと言う訳で調べてみたよ。サンプルサンプルhttp://sample.art-code.org/xul/flex.xul実行結果flex属性とは付けるとその数値を割合として画面一杯*2割り当てる属性で、整数値を指定するみたいです。サンプルのソースと結果見れば一目瞭然ですな。Example3を例にとれば下記のような感じ。/></hbox>1:2:3で幅いっぱいに割り当ててくれる様が良く分かる。XULはハマる人が多そうだから、激しく既出感が拭えませんが敢えて書いてみました。誰かの参考になれば幸いでござる。title*1:この部分はまったく効かない訳じゃないので、訂正。