about:config を扱う拡張機能についての質問

はじめまして、こんにちは。
takataと言います。

自作でThunderbirdのアドオンを作ろうと考えています。
内容は、独自で作ったlocalパッケージを

Thunderbird >環境設定>設定エディタ

で書き換えて適応するのではなく、

1)ツールバーに表示された拡張機能のアイコンをクリック
2)ラジオボタン表示
3)言語選択→「OK」クリック
4)適応(再起動)

とう具合に行いたいと思っています。
ツールバーにアイコン表示、ラジオボタンののったダイアログ表示ということは
自分でできると思います。

分からない点は
1)about:configを扱うアドオンを作るにはどこをオーバレイすればいいか
2)言語選択後、自動でThunderbirdを再起動させる方法
です。

DOM Inspector を使って調べてみたのですが、
chrome://global/content/config.xul がページであること?
各項目がまとめてNodename が treechildren、id がconfigTreeBody であること
がわかりましたが、general.useragent.local 単独で扱う方法がわかりませんでした。

環境は
Mac OS X バージョン 10.5.8
Thunderbird バージョン 2.0.0.23

手元にある資料は
FIREFOX 3 HACKS (オライリージャパン発行)
Firefox拡張機能開発チュートリアル
Firefox 拡張機能開発 準備編
Firefox 拡張機能開発 入門編
です。

始めたばかりで、基本中の基本を聞いていたり、
的外れなことを言っているかもしれませんが、
どうかその場合でもアドバイスをいただけないでしょうか。
また、投稿場所がおかしかったりしてもご指摘お願いしたいです。

どうかよろしくお願いします。

7 件のコメント

  1. mitsugu :

     about:configで表示されているのはプロファイルのデフォルト値とプロファイル・ディレクトリ内の prefs.js に記載された値になります。XPCOM API を利用するか FUEL を利用することでアクセス可能です。
     以下のURLが参考になります。
    https://developer.mozilla.org/ja/Code_snippets/Preferences
    https://developer.mozilla.org/en/nsIPrefBranch
    https://developer.mozilla.org/ja/FUEL

  2. takata :

    コメントありがとうございます!
    早速参考URLで勉強させていただきます。
    それでもわからなかったらまた質問しますので、
    その時もできればよろしくお願いします。

  3. dynamis :

    再起動させる方法については既存の再起動ボタンや言語切り替え系のアドオンを参考に(ライセンスが問題なければコードを流用)されると良いかと思います。
    https://addons.mozilla.org/ja/firefox/addon/3559
    https://addons.mozilla.org/ja/firefox/addon/8462
    https://addons.mozilla.org/ja/firefox/addon/356
    https://addons.mozilla.org/ja/thunderbird/addon/1333

  4. takata :

    ありがとうございます!
    言語切り替えのアドオンを参考にすればabout:configのいじり方もわかりそうですかね。
    mituguさんの教えてくださったのと合わせれば今までチンプンカンプンだったのがちょっとわかりそうです・・・!
    ライセンスは license.txt がなければ自由に使っていいと解釈していいのですか?

  5. mitsugu :

     ソースコードライセンスを確認する方法はいくつかあります。
    1.ライセンスに関する記述がないか xpi パッケージ内のファイルを探す
     xpi パッケージ内にLICENSE.txtがあるとは限らず、ソースファイルに直接明記されている場合もあります。
    2.AMO のサイトに採用しているソースコードライセンスが記載されている場合があるのでそれを確認する。
    3.作者のサイトに記載していることがあるのでそれを確認する。
    4.リポジトリ・サービスを利用している作者さんだと、そのようなサイトのコンテンツに記載している場合があるので、それを確認する (SourceForge,Github,etc…)
    5.直接メールで問い合わせる
     それと間違わないでほしいのですが、ソースコード・ライセンスがある場合はあくまでライセンスの範囲でソースコードを利用することができます。ライセンスがなんら明記されていないものは Copyright All Rights Reserved の場合が大半です。かならずライセンスを設定しているのか、またコードの再利用をしてもよいのか作者さんに問い合わせてください。
     また混乱させるようですが、ある特定の XPCOM API の呼び出しを含む一連の処理など、誰が書いても同じになるようなコードの場合など、法の運用上は著作権を侵害したことにならない、というのが通説です。
     個人的には他のバイナリコードを逆アセンブルするなど、リバースエンジニアリングをするようなことがなければ、拡張のJavaScriptソースコードを読むことは違法にはなりませんので、他の拡張のソースコードを読むことで勉強して、mozilla developer center のドキュメントを元にして、御自身でコードを書かれることをお薦めします。単にコピペするより身になります。

  6. mitsugu :

    【追記】
     手前味噌になりますが github にて JWeather という拡張のソースコードを MPL1.1、GPLv2、LGPLv2.1 のトリプルライセンスで公開しています。http://github.com/mitsugu
     その中の system.js というファイルで、prefs.js にアクセスする getStringValue、setStringValue という二つの関数を定義しています。ソースコード・ライセンスにMPL1.1を採用していますので、system.js はそのまま御利用いただけます。また言語が JavaScript ですから system.js 以外の外部ファイルで system.js 内の system オブジェクトに関数を追加することも可能です。ですから system オブジェクトを拡張する、という方法を採ることも可能です。

  7. takata :

    ありがとうございます!

    ライセンスについて
    思っていたよりも断然複雑でした。誰が書いても同じになるようなものは大丈夫なのですね。ライセンスについて自分でわからなかったら作者さんに問い合わせてみることにします。
    とりあえず参考にさせてもらってまねして書いてみて、その後自分の作りたいものをちゃんとコードが書けるよにがんばってみようと思います。ちゃんとわかるようになりたいので、コピペはできるだけ避けるようにします!

    JWeatherについて
    ソース見させていただきました。ありがとうございます。
    方法はいろいろあるのですね。
    systemオブジェクトを拡張させていただくのがわかりやすい気がします・・・!
    作成するのにどれだけ時間がかかるかわかりませんが、またアドバイスあったらすみませんがお願いします。