Firefox Hacks 翻訳日記

アクセスカウンタ

zoom RSS 拡張機能作成メモ (2)

<<   作成日時 : 2006/05/25 23:58   >>

トラックバック 0 / コメント 0

Find Toolbar Tweaks ver 0.9.0 を作っていて気付いた事のメモ。
前のメモ と同様に技術的な事項なので、これから拡張機能を作ってみよう、という人以外には
何の役にも立たないエントリだと思われる。
さらに、初心者ゆえの誤解もあると思われるので、ご指摘いただければ嬉しい。

つうか、無知をさらして恥をかきつつ、識者の皆さんに教えを請う、
教えて君的エントリだったりもするわけだが。

1. Firefox のリアルタイム・デバッグ
Piro さんのご助言もあって、デバッグの時にいちいち jar ファイルに固めずとも
動作確認することが出来るようになった。
実に快適だ。
さらに、後述する Extension Developer の Reload All Chrome を併用すれば完璧だと思われる。

Getting started with extension development - MozillaZine Knowledge Base には、
「xpi パッケージでも chrome のファイルを jar 圧縮する必要はないが、
リリース用のファイルは jar にする事を強く推奨する。
なぜなら jar で固めた方が起動時のパフォーマンスがいい」、と書いてあったので、
chrome.manifest を 2つ作って、リリース用の方は相変わらず jar ファイルに固めている。
ファイルをちょっと変えたり、ロケールにラベルを追加したりするたびに固めていた時代から考えると
このくらいの手間は苦にならないけど、パフォーマンスを云々する程ではない
小規模な拡張(例えば Find Toolbar Tweaks 0.8.0)ならそのままでいいかも。

余談と言うか、すでに常識なのかもしれないが、
Setting up extension development environment - MozillaZine Knowledge Base にあるように、
拡張の開発には別プロファイルを作成する事をお勧めする。
開発中にプロファイルのデータをロストしても被害が少ない (経験者は語る)。

2. Extension Developer's Extension
Ted's Mozilla page にある拡張機能。
その名の通り、拡張機能作者のための拡張機能だ。
残念ながら、Firefox 1.5 で私が試した限りでは、動作しない機能が結構あるようなのだが、
MozillaZine Forums で作者の Ted Mielczarek 氏は「時間もないしモチベーションも低下した」
と投稿しているので、このまま放置されそうな予感がしている。
とは言うものの、上記した Reload All Chrome (Firefox を再起動せずに Chrome を再読み込み) や
Toggle Debugging Prefs (デバッグに必要な prefs を一括変更) は動作するようだ。

3. 続・Firefox 1.5 の preferances system
0.9.0 で追加した設定が、accessibility.typeaheadfind.timeout の UI だ。
下の画像では「ツールバーを閉じるまでの時間」の部分になる。

画像


ここでは、大きく二つの事をやっている。
 1. 単位がミリ秒の prefs 値を、秒単位に変換。
 2. accessibility.typeaheadfind.enabletimeout の値(「自動でツールバーを閉じる」のチェックの有無)に応じて設定をグレイアウトする。

こういう細かいことをするために、Firefox 1.5 の新しい preferances system では
prefwindow 限定で動作するイベントハンドラが用意されている。
onsyncfrompreference と onsynctopreference だ。
読んで字のごとく (^^; prefwindow で prefs を読み書きする(疑似)イベントで、例えば;
<textbox id="timeoutInputbox" preference="timeoutDuration"
 onsyncfrompreference="return msecToSec();" onsynctopreference="return secToMsec();"/>

のように xul ファイルに記述しておいて、js ファイルの方で
function msecToSec() {
 var prefDuration = document.getElementById("timeoutDuration");
 return prefDuration.value/1000;
}

これで、prefs の値を読み込んで表示する時に、ミリ秒単位から秒単位への変換ができるわけだ。

ここまでは簡単だったが、2. のグレイアウトを実現しようとして、
msecToSec に記述を追加しようとしたり、
ラベル二つと textbox をいっぺんにグレイアウトできるだろうと
hide はあっても disabled のない hbox に disabled を設定しようとしたりして難儀した。
結局、0.9.0 では、「自動でツールバーを閉じる」のチェックボックスの方に;
<checkbox id="enableTimeoutCheckbox" preference="enableTimeout"
 onsyncfrompreference="return toggleTimeouotBoxDisplay();"
 onsynctopreference="return toggleTimeouotBoxDisplay();"/>

として、toggleTimeouotBoxDisplay で三個の要素の disabled を切り替えている。

もう少しエレガントな方法がありそうだけど、今はこれが精一杯。

テーマ

関連テーマ 一覧


月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
URL(任意)
本 文
拡張機能作成メモ (2) Firefox Hacks 翻訳日記/BIGLOBEウェブリブログ
文字サイズ:       閉じる