トップページ⇒tech
1001コメント388KB

Mozillaでプログラミング(XUL)

■ このスレッドは過去ログ倉庫に格納されています
0001MozillerNGNG
ム板住人のうちMozilla使ってる人は何%くらいかわかりませんが、
Mozilla 1.0 RC1がリリースされ、
XUL 1.0の仕様が一応フリーズしました。
なので、そろそろXULアプリケーションも出始めることでしょうし(希望的観測)
MozillaでのXULプログラミングについて騙りませんか。

Mozillaスレッド M10
http://pc.2ch.net/test/read.cgi/software/1019550671/
0641デフォルトの名無しさんNGNG
>>640
はっきり言って完成度は3%にも満たない試作品以下のレベルだけど.

http://tool-ya.ddo.jp/2ch/trash-box/file/20040110181719911.xpi

piro氏やflyson氏のソースからかなり流用しています.
特にinstall.jsなんかrssreaderから丸パクリ.
ついでにアンインストール機能なんてものは無い.
0642641NGNG
ファイルを間違えてアップしてしまった.
0643641NGNG
失敬.こっちです.

http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20040110182959912.xpi
0644641NGNG
あらら,間違ったほうのアクセス数のほうが多いってのは不味いな.
0645デフォルトの名無しさんNGNG
>>641 遅くなったがサンクス。にゃるほどー
0646641NGNG
http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20040112130005068.xpi

保存ドキュメントが整形して出力されるようになった.
ENCODE_FLAGS_FORMATTEDに気づくまで2時間くらいかかった.
自らの英語力の無さを痛感.

Mozilla Firebird 0.7で使用すると日本語がUnicode エスケープされる.
Mozilla Suite 1.6bだと大丈夫.
0647641NGNG
このスレにずっと居座るのも何だから,isweb のアカウントを取得.

http://xulisyahookup.hp.infoseek.co.jp/
0648デフォルトの名無しさんNGNG
保守sage
0649デフォルトの名無しさんNGNG
html文書では、XMLHttpRequestのresponseXMLは
何も返さないと思いますが。
html文書をDOMとして得るにはどうすればいいですか?
0650デフォルトの名無しさんNGNG
>>649
var URI =HTMLファイルのURI;
var doc = document.implementation.createDocument('', '', null);

doc.load(URI);
doc.addEventListener('load', docLoaded, false);

function docLoaded {
ここからdocを使用する処理を記述
}
0651649NGNG
>>650
どうもありごとうございます。m(_ _)m
できました。
0652デフォルトの名無しさんNGNG
ふーむ、私のお勧めはnsIDOMParserです。
...
var str=httprequestobject.responseText;
var doc=(new DOMParser()).parseFromString(str,"text/html");

alert(doc.documentElement.localName);

うろ覚えだから関数名は間違ってるかもしれないけど…
詳しくはここ。
http://www.mozilla.org/xmlextras/
0653デフォルトの名無しさんNGNG
650みたいなレーシングは結構怖いな。
イベントリスナーは先に追加してほしい。
0654デフォルトの名無しさんNGNG
最近思うんだけど、MozillaってUTF-8じゃなくて、
UTF-16がデフォルト?
それとも、スクリプトやRDFだけUTF-16なのか?
0655デフォルトの名無しさんNGNG
>>654
nsStringがUTF-16だからデフォルトはUTF-16なんじゃないの?
0656デフォルトの名無しさんNGNG
こんな感じで内部メインはUTF-16
http://wp.netscape.com/eng/intl/docs/iuc17/browser/slide32.html
0657デフォルトの名無しさんNGNG
>656
お、この図はわかりやすいなぁ。
ありがとう。
0658デフォルトの名無しさんNGNG
ふむむ。

Firefoxのブックマークをソートする拡張を作ってみました。
ttp://cgi29.plala.or.jp/~mozzarel/addon/firefox/sortbookmarks/sortbookmarks.xpi
ttp://extensionroom.mozdev.org/more-info/sortbookmarks

作ってるときは楽しかったんですけど、日本語のブックマークって、
文字コード順に並んでても、イマイチありがたみがないですね。
だから、日本語にローカライズしてないんですが…。
extensionroomに「bookmarks」カテゴリーを作るのが目標。

あと、人に頼まれて、about:*****を登録するスクリプトを書いたので、
about:wazillaとかabout:saitamaとかに興味がある人はどうぞ。

componentsディレクトリにインストールするタイプ。
ttp://cgi29.plala.or.jp/~mozzarel/addon/firefox/test/aboutfiresomething.js
拡張のoverlayで実行するタイプ。
ttp://cgi29.plala.or.jp/~mozzarel/addon/firefox/test/aboutfiresomething_overlay.js
0659デフォルトの名無しさんNGNG
about:****ですけど、
オリジナルのnsAboutRidirector.cppは、
httpプロトコルに飛ばすときにセキュリティのレベルを変えてますね。
chromeに行くなら心配はいらないんですが、
aboutのレベルでウェブ上のファイルを読ませると、
えぐいことができそうなので、気をつけてください。
0660デフォルトの名無しさんNGNG
ttp://bugzilla.mozilla.org/show_bug.cgi?id=32641
にvoteしておきました。
でも、さっきまで2だったから、他にも投票した人がいるみたいだね。
0661デフォルトの名無しさんNGNG
>>658-659
面白い。プロトコル追加の解説があったので貼り付けておく。
http://www.nexgenmedia.net/docs/protocol/
0662デフォルトの名無しさんNGNG
>661
読んでみました。
ところで、そのドメインって何やってるんですかねぇ。
ドキュメント自体はIBM名義なので、
就業中に書いたのかもしれませんが、
Doron個人のサイト?
0663デフォルトの名無しさんNGNG
Doron が Netscape(AOL) にいたときから写真やらなんやら置いて
weblog からリンクしてたから、個人的に自由に使えるサイトなんだろ。
0664デフォルトの名無しさんNGNG
---------- 再開 ----------
0665デフォルトの名無しさんNGNG
Emacsで動くGeckoのほうが欲しいな
そうすりゃXULなんぞ必要ないだろ好きなだけ機能追加できる
0666デフォルトの名無しさんNGNG
いいだしっぺの法則
0667デフォルトの名無しさんNGNG
今日のmozillazineの記事によると、
毎月第一火曜日はXULの日、らしい。
あさって(あるいは水曜日の朝?)だな。
0668デフォルトの名無しさんNGNG
XULは糞! XAML最強!!!
0669デフォルトの名無しさんNGNG
XULvsXAMLvsMXML の比較
http://www.surfmind.com/musings/2004/03/31/index.cfm#index
0670デフォルトの名無しさんNGNG
>>667
talkbackを読めばわかるが、このスレで言うXULとは
あまり関係ない。
0671デフォルトの名無しさんNGNG
JavaScriptのOn/Offをカンタンに切り替えるような拡張はでてないのかな?
0672デフォルトの名無しさんNGNG
>>671
http://www.geocities.co.jp/SiliconValley-SanJose/9076/quickprefs/
http://extensionroom.mozdev.org/clav/#prefbuttons
0673デフォルトの名無しさんNGNG
>>672
ありがとう。
0674デフォルトの名無しさんNGNG
Slashzillaをホットキーで開けるようにしようとしているのですが
その辺のソースについて詳しく載っているサイトはありませんか?
0675デフォルトの名無しさんNGNG
>>674
http://xulplanet.com/tutorials/xultu/keyshort.html
このへんの Key Example でわかるんでないかな。
Overlay してる場合はソース見ないと分からんけど、たとえば
<keyset id="(overlay する id)">
<key id="hotkey_slashzilla" key="s" modifiers="accel,shift" oncommand="<開く関数>"/>
</keyset>
こんなんで ctrl+shift+s で開くようになるんじゃないかな。
0676674NGNG
うーん読んでみましたが基本骨子をまだ理解しきっていないので頓珍漢なことをしているような気がして不安
szoverlay.xulのソースが以下のようになっているんですが

<?xml version="1.0"?>

<overlay id="slashzillaOverlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

<!-- Sidebar Overlay -->
<menupopup id="viewSidebarMenu">
<menuitem observes="viewSlashzillaSidebar"/>
</menupopup>

<broadcasterset id="mainBroadcasterSet">
<broadcaster id="viewSlashzillaSidebar"
autoCheck="false"
label="Slashzilla"
type="checkbox" group="sidebar"
sidebarurl="chrome://slashzilla/content/slashzilla.xul"
sidebartitle="Slashzilla"
oncommand="toggleSidebar('viewSlashzillaSidebar');"/>
</broadcasterset>
</overlay>

このソース内の<!-- Sidebar Overlay -->下に
<keyset id="viewSlashzillaSidebar">
<key id="hotkey_slashzilla" key="s" modifiers="accel,shift" oncommand="toggleSidebar('viewSlashzillaSidebar')"/>
</keyset>

を埋め込んでみましたがうまくいきませんでした
idをviewSlashzillaSidebarとmainBroadcasterSetにしても同様でした
0677デフォルトの名無しさんNGNG
slashzilla を nightly の mozilla に入れてみたけどパネル登録ができなくて、
テストできないんだけど、たぶん…

keyset は navigator.xul の keyset に overlay しなきゃ。
DOMInspector で id 調べると navKeys になってる。
また、broadcaster 使ってるから、
http://www.xulplanet.com/tutorials/xultu/broadob.html
を参考にして、

<keyset id="navKeys">
<key id="hotkey_slashzilla" key="s" modifires"accel,shift" observes="viewSlashzillaSidebar"/>
</keyset>

これでどうかな。
0678677NGNG
modifires="accel,shift" のイコールが抜けてた、スマソ
0679674NGNG
すいません重要な事を書いておくのを忘れていました
使用ブラウザはFirefox0.8 4/3nightlyです
0680677NGNG
Firefox nightly で使えてるの?
slashzilla.mozdev.org 見て使えないものとばかり思ってた。
それはともかく Firefox なら <keyset id="mainKeyset"> にしちくり。
0681674NGNG
szoverlay.xulに

<keyset id="mainKeyset">
<key id="hotkey_slashzilla" key="s" modifires="accel,shift" observes="viewSlashzillaSidebar"/>
</keyset>
をoverlayのタグ内に挿入してみましたが駄目でした
また、navigator.xulを検索かけてみましたがFirefoxのフォルダ内にありませんでした…

SlashzillaですがFirefoxで問題なく使えています
Firefox Help 日本語版内の拡張内にあるSlashzillaのxpiを/.-J用に弄って使用しています
0682677NGNG
Firefox に slashzilla 入れてみた。これでできた。
勘違いしまくりでスマソ # RSSReaderPanel にほぼまんまのコードがあっただよ…

<menupopup id="viewSidebarMenu">
<menuitem key="hotkey_slashzilla" observes="viewSlashzillaSidebar"/>
</menupopup>

<keyset id="mainKeyset">
<key id="hotkey_slashzilla" key="s"
modifiers="accel,shift"command="viewSlashzillaSidebar"/>
</keyset>
0683674NGNG
月並みな表現で申し訳ないですがお付き合いありがとうございます
おかげさまでできました

#もっとxulやjsの勉強しなければ・・・
0684デフォルトの名無しさんNGNG
XulPlanetが、ちょっとリニューアル?されてるので上げ。
0685デフォルトの名無しさんNGNG
XULのDOM Methodに大きな変更が加えられたようです。
getElementByAttribute
http://forums.mozillazine.org/viewtopic.php?t=69302
childNodes
http://forums.mozillazine.org/viewtopic.php?t=69556

要するに、返り値のNodeListが
いわゆる"live"(treewalker的な)ではない、
ということですね。
もちろん、treewalkerをつかえば、
従来のような事が出来ると思います。
0686デフォルトの名無しさんNGNG
>>684
ちょっとじゃない〜 詳細はここにも。
http://www.xulplanet.com/ndeakin/article/256?show=c
Scriptable Object Referance 追加と commands, updating commands は
まとまった情報がなかったんで助かる〜
0687デフォルトの名無しさんNGNG
XULアプリコンテストってどうなったんでしょうか?
ひょっとして、エントリーがなかったとか?

コンテストを開くこと自体はたいへん良いと思うので、
告知を3ヶ月前くらいからやってほしいですね。
でも、パーティ関連にすると難しいのかもしれないなぁ。
じゃあ、お前が企画しろよ、って言われると、
参加者を集められる自信は全くないが…
0688デフォルトの名無しさんNGNG
エントリーはありましたよ。8つほど。
0689デフォルトの名無しさんNGNG
じゃ、そのうち結果発表とかあるんですかね。
去年はpiro氏のやつとmoz2chが出てたような記憶が。
0690デフォルトの名無しさんNGNG
投票数自体が少なかったけど、結果としてはXUL/Migemoが圧倒的大勝ですた。
RSS Reader Panelのflyson氏は出品されていませんでした。
だいたいそんなとこで。
0691デフォルトの名無しさんNGNG
XUL/Migemoでてたんですか。
このスレに時々来る通りすがりの人のブックマークのやつはどうでした?
0692デフォルトの名無しさんNGNG
通りすがり師のはなかったと思う。
出てたのは
・http://white.sakura.ne.jp/~piro/xul/xul.html
Ez Sidebar・Sidebar Window/タブキラー/テキストリンク/あと一つ(おもいだせない)
・http://www013.upp.so-net.ne.jp/unha999/fmutil/fmutil.html
・http://mimic.gelsoft.jp/(繋がらない…?インスタントメッセンジャーです。)
・http://www.smellman.homelinux.org/mozilla/xul-hack.html (カップラーメンタイマー)
・http://tkm.s31.xrea.com/xul/xulmigemo.shtml
0693デフォルトの名無しさんNGNG
>692
なるほど。
重ね重ね、ありがとう。
0694デフォルトの名無しさんNGNG
FirefoxのExtension API 暫定版が今日、初公開。
http://www.bengoodger.com/software/mb/extensions/howto.html
0695デフォルトの名無しさんNGNG
つーか、いきなりinstall.jsを捨ててきましたか…
まあ、前に競べたら、納得の内容ですね。
icon関係もうまく処理されているようです。
0696デフォルトの名無しさんNGNG
これは nightly で既に実装済みのものなのかな。
draft 段階のものを読むと
http://jt.mozilla.gr.jp/projects/firefox/extensions/index.html
install.js は後方互換のためか残されそうだけど。

個人的にはコマンドラインオプション実装して欲しい…
0697デフォルトの名無しさんNGNG
上のリンクにも書いてありますが、install.jsはfirefoxから、
一方的に無視されるだけなので、
たとえば、mozillaにインストールしたときは、
install.jsの内容が反映されることになります。

従来のinstall.jsが内部で行っていた、いわゆるscript然とした
細やかな設定は、html側のInstallTrigerで行うべきだ、
というのが、Ben Goodgerの持論なので。

>コマンドラインオプション
なぜ?
0698デフォルトの名無しさんNGNG
全ての拡張がUUIDで管理されるようになれば、
ひょっとして、複数の言語パックを同時にインストールできたりするように
なるのかなぁ。
0699デフォルトの名無しさんNGNG
XULコンテスト、私は何か勘違いしていたようです。
コンテスト用に何か書き降ろさないといけないのかと思ってました。
実は、無圧縮PNGを吐くアイコンエディターを
ネタで作ろうと思っていたのですが…

ところで、私が不甲斐ないばっかりに、
いろんな人が、blogで拡張の解説文を書いてくれています。
ttp://kengo.preston-net.com/archives/001281.shtml
ttp://scramble.no-ip.org/archives/cat_13.html
あと、朝顔日記様とか。

どうもありがとうございます。
0700デフォルトの名無しさんNGNG
http://update.mozilla.org/
がついに動きだすようですね。
http://forums.mozillazine.org/viewtopic.php?t=78912
0701デフォルトの名無しさんNGNG
今日、Firefoxの新しいインストーラーを試してみました。
結構イイ感じで動いてます。
0702デフォルトの名無しさんNGNG
XULに全く関係ない話で恐縮ですが、
JLPのxsltスレは純粋な読み物としても、結構面白いです。
ttp://moz.skillup.jp/jlp/viewtopic.php?t=96

で、先程parseをgoogle英和で調べてみたら、構文解析と書いてあります。
もちろん、私にとって一番わかりやすい訳は「パース」なのですが、
まあ、構文解析でも意味が通らなくはないなぁ、と感心してみたり。

パースは「分析」だけでなく、「読み込む」事自体の意味が加味されている
のが通例なので、「解析」よりは「解釈」の方がしっくり来ます。
例えば、parseIntの10進数と16進数なんかは、解析方法が違うのではなくて、
解釈方法が違う、って言ったほうがより自然な日本語だと思いませんか?

ただ、parse errorは「解釈失敗」より「解析失敗」の方がきれいな言葉ですよね…。
辞書に載っている以上、凡例が少なからずあるはずだから、やはり侮れません。
それでも、「XMLとして解析できません」よりは、「XMLとして解釈できません」
の方がいいと思うのですが…。

その他で気になったのは、"call"の訳語です。
確かに、「呼び出す」より「呼ぶ」の方が日本語として熟れているとは思いますが、
明らかにテクニカルタームなので、ここは「呼び出す」の方に一票を投じたいです。
「〜を呼ぶ」という文ではどれだけこなれていても、
日本語としての不自然さはどうしようもないですから、
日常的な意味ではないことを強調した方が親切でしょう。
0703デフォルトの名無しさんNGNG
FireFox とか Thunderbird とか結構重いように感じるんだけど(非力なマシンなので)、
XUL で作ったアプリも、ある程度の重量感は覚悟する必要があるのでしょうか?
0704デフォルトの名無しさんNGNG
>703
モノに拠ります。
XPCOMをロードして使うようなタイプのアプリは速いです。
逆にfor文で100万回まわすようなスクリプトを書けば、
重くなります。
インタープリターなので当然ですね。
0705デフォルトの名無しさんNGNG
>>702
XULに関係ない話につっこんで悪いんだけど
parse = 構文解析
っていう翻訳はコンパイラの教科書なんかで昔っから使われているから
日本で計算機科学系の学科に居た人はみんなそう訳すんだと思う…

で,parseに「読み込む」っていう意味が加味されているっていうけど
コンパイラの教科書的には,
【字句解析】→【構文解析】→【意味解析】→【最適化】→【コード生成】
とフェーズを分けて教えるんで「読み込み」は 構文解析器(parser)の
仕事とは考えない傾向がある気がする…
0706デフォルトの名無しさんNGNG
>>704
XUL 分かってなかったです。すまそ。
C からも使える物と思ってた。
0707デフォルトの名無しさんNGNG
>>704
Cからも使えますよ。
Mozilla.orgにも、サンプルコードくらいはあったと思います。
ただ、コンパイルすると、当然プラットフォーム依存になります。
単純にUIがほしいのなら、それとトレードオフで得る速度は釣り合いません。

MFCやGTKのリソースファイルも、
UIの部分はテキストで箇条書き(?)にしてあるだけですよね。
アセンブリングの恩恵は、ほとんどないと思います。

処理が重いなら、スクリプトをC++に移植する、
という手がありますがね。
0708デフォルトの名無しさんNGNG
linuxでアンチエイリアスしないにはどうすればいいんですか?
0709デフォルトの名無しさんNGNG
linuxのアンチエイリアスってxulネタなんでしょうか?
0710デフォルトの名無しさんNGNG
>>704
タブブラウザ拡張も XPCOM/C++ で書き直すと速くなるんだろうなぁ...
0711デフォルトの名無しさんNGNG
>>710
タブ拡が遅いですと?
0712デフォルトの名無しさんNGNG
>>710
全部書き直さなくても、パッチとしてマージするだけでもいくらか速くなると思う。
0713デフォルトの名無しさんNGNG
タブといえば、
Option to determine how other applications open new windows
http://bugzilla.mozilla.org/show_bug.cgi?id=172962
のターゲットマイルストーンがfirefox1.0betaになってますね。
どうやら、本気で実装されそうです。
0714デフォルトの名無しさんNGNG
どうでもいいけど、「呉下の阿蒙に非ず」だけ浮いてるよね。
0715デフォルトの名無しさんNGNG
誤爆か?
0716デフォルトの名無しさんNGNG
Fxの新しいエクステンションマネージャーでは、
32*32のアイコンが指定できるので、
某狐女のトレードマークを世界に向けて発信しようと思ったのですが、
なんか、お下品な連想をしてしまったのでやめました。

ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/externalapp/icon.png
なんというか、角度も重要なのかなぁ。
0717デフォルトの名無しさんNGNG
基本的なことなんだけど、XULのGUIライブラリって
GTKをラッピングしてるの?
0718デフォルトの名無しさんNGNG
>>717
まあ、100パーセントそうだとは言えないけど、
gtkが使える環境ならそう言って差し支えない程度には使ってるな。
0719デフォルトの名無しさんNGNG
xulから呼び出す外部のJavaScriptファイルに日本語を使いたいとき、
文字コードはどうすべきですか?UTF-8など色々試しましたがどれも化けます。

それともlocaleを使うべきなんでしょうか。
0720デフォルトの名無しさんNGNG
>>719
ファイル名はシステムの文字コードに依存するのでは?
WindowsならShift_JISかUTF-8でしょうか。
うまくいかないのはUConvでの文字コードの変換に失敗しているからではないかと予想。
0721デフォルトの名無しさんNGNG
ファイル名ではなく「ファイル中に」です。
つまり、alert("こんにちは");とかやると文字化けしてウィンドウが表示されます。
0722デフォルトの名無しさんNGNG
>>721
\u3053\u3093\u306b\u3061\u306f
みたいにUnicodeエスケープするしかないかも知れない。
0723デフォルトの名無しさんNGNG
それは面倒ですね。
やはり開発はすべて英語でやって、後からlocaleを付け加えるのが常識的なのでしょうか?
0724デフォルトの名無しさんNGNG
alert("こんにちは")にするなら、UTF-8じゃなくて、UTF-16の方がいい。
でもそうすると、script自体がパースされないだろうから、
クォーテーションの中だけUTF-16という
変則的な文字コードにしなきゃいけない。

結局、localeを追加した方が安上がりなのよ。
0725デフォルトの名無しさんNGNG
なるほど。了解しました。
詳しく教えていただいて、どうもありがとうございました。
0726ヽ(゚∀゚)メ(゚∀゚)ノNGNG
Moz2chのバヤイ、js自体はEUCで統一してるですが、表示すべき文字列を
ハードコーディングしないでlocaleを使用するようにしてるです。
但し、テストコードのような物だといちいちlocaleを書くのがめんどいという
後ろ向きな理由ですが、EUCで文字列を書いてnsIScriptableUnicodeConverter
を使ってEUC→UNICODEしてから表示するようにしてるです。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/moz2ch/moz2chfirefox/content/moz2ch/charset.js?rev=1.2&content-type=text/vnd.viewcvs-markup
この辺参考にしてくださいです
0727デフォルトの名無しさんNGNG
Firefoxにjarファイルを使わない拡張を
新EMでインストール/アンインストールするパッチを書いてみました。
ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/FolderExtForNewEM/

0.9の場合、componentsフォルダに入っているnsExtensionManager.jsを
ttp://cgi29.plala.or.jp/~mozzarel/addon/aviary/FolderExtForNewEM/nsExtensionManager.js
と差し替えれば、ちゃんと動くはずです。
ナイトリーに使うのであれば、diff.txtをソースにあててください。

ただ、このバグがfixされた方がいいかどうかは微妙ですね。
もちろん、出来るにこした事はない、とは思いますが、
拡張やテーマを自分で書かない限り不要(いわゆるbloated)な気もします。
0728デフォルトの名無しさんNGNG
今日のチェックインみてたら、こんなバグがありました。

_contentのかわりにcontentを使いましょう
http://bugzilla.mozilla.org/show_bug.cgi?id=240947
0729デフォルトの名無しさんNGNG
もうお気づきかと思いますけど、http://update.mozilla.org/が稼働していますね。
特に何もしていませんが、私の拡張も(なぜか)2つだけ入っています。
新EM対応版を公表(?)した時期に関係がありそうです。
勝手にアップデートしてくれるのなら楽でいいや、
と思っていたのですが、どうやら初回サービスのみのようです。
更新しても、反映してくれません。

うそくさいダウンロード数が少しづつ増えるのをみるのは楽しいですが、
コメントに反論できないのがちょっと。
ちなみに、私の周囲では
"Must Have!"という、おばかなフレーズが流行っています。
0730デフォルトの名無しさんNGNG
Mozilla 1.7のダウンロードマネージャがCtrl+Wで閉じれないのや、
メーラーでアカウントを選択しているとスペースキーやNで次の未読に
移動できないのが不満で、comm.jarやmessenger.jarを直接書き換えて
目的を達成したんだけど、こういうのもxpiで実現可能?

xpiさっぱり分からん。
0731730NGNG
ちなみにダウンロードマネージャの方はこんな感じ。

--- comm/content/communicator/downloadmanager/downloadmanager.xul2003-10-22 00:35:56.000000000 +0900
+++ comm/content/communicator/downloadmanager/downloadmanager.xul2004-06-26 10:33:30.000000000 +0900
@@ -27,9 +27,13 @@

<?xml-stylesheet href="chrome://communicator/skin/"?>

+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
+
<!DOCTYPE window [
<!ENTITY % downloadManagerDTD SYSTEM "chrome://communicator/locale/downloadmanager/downloadmanager.dtd">
%downloadManagerDTD;
+<!ENTITY % utilDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd" >
+%utilDTD;
<!ENTITY % downloadProgressDTD SYSTEM "chrome://global/locale/nsProgressDialog.dtd" >
%downloadProgressDTD;
]>
0732デフォルトの名無しさんNGNG
>>731
可能です。
空の拡張をつくって、contents.rdfで
chrome://communicator/content/utilityOverlay.xulをoverlayしてやればいいのです。

ただ、ロケールはoverlayのdoctypeに完全に依存するので、
utilityOverlayにdoctypeがなかったら、
utilityOverlayを手元にコピーしてdoctypeを追加したものを
あらためてoverlayした方が安全かもしれません。
0733デフォルトの名無しさんNGNG
あ、今みてみたら、ばっちりはいってますね。
http://lxr.mozilla.org/mozilla/source/xpfe/communicator/resources/content/utilityOverlay.xul
0734730NGNG
まいったな。せっかく教えてもらったのにさっぱり分かりませぬ。
一応XULチュートリアルの日本語訳も読んでいるが、分量が多くて
どこが該当するのかも分かりません。参考になりそうな拡張ってありますか?
それはともかく、xpiで実現可能というのが分かったのはありがたいです。
0735デフォルトの名無しさんNGNG
「Ctrl+何々でほげほげできるようにします。」系の拡張を
Firefox Help 日本語版あたりで探してみると良いかも。
やり方はそのままSuiteにフィードバックできるので。
0736デフォルトの名無しさんNGNG
>>735
thanx. 動きますた。

*contents.rdf
<?xml version="1.0"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
        xmlns:chrome="http://www.mozilla.org/rdf/chrome#">

  <RDF:Seq about="urn:mozilla:package:root">
    <RDF:li resource="urn:mozilla:package:dmclose"/>
  </RDF:Seq>

  <RDF:Description about="urn:mozilla:package:dmclose"
                  chrome:displayName="dmclose Extensions"
                  chrome:author=""
                  chrome:authorURL=""
                  chrome:name="dmclose"
                  chrome:extension="true"
                  chrome:description="dmclose">
  </RDF:Description>

  <!-- overlay information -->
  <RDF:Seq about="urn:mozilla:overlays">
    <RDF:li resource="chrome://communicator/content/downloadmanager/downloadmanager.xul"/>
  </RDF:Seq>

  <RDF:Seq about="chrome://communicator/content/downloadmanager/downloadmanager.xul">
    <RDF:li>chrome://dmclose/content/dmcloseOverlay.xul</RDF:li>
  </RDF:Seq>

</RDF:RDF>
0737デフォルトの名無しさんNGNG
*dmcloseOverlay.xul
<?xml version="1.0"?>

<?xml-stylesheet href="chrome://communicator/skin/"?>

<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>

<!DOCTYPE window [
<!ENTITY % utilityDTD SYSTEM "chrome://communicator/locale/utilityOverlay.dtd">
%utilityDTD;
]>

<window id="downloadManager">
</window>
0738デフォルトの名無しさんNGNG
なんか変なところありますか? さて、あとはインストーラか。

メーラーの方は、mail3PaneWindowCommands.js, mailWindowOverlay.js, mailWindowOverlay.js を
書き換えて動作を変更しているのですが、こちらは実現できますかね。
一部の関数のみをxpiで差し替えて動作させるようなことはできますか。
それともoncommand=で呼び出される関数から変更した関数に至るまでの部分を
すべてコピーする必要があったりしますか。
0739デフォルトの名無しさんNGNG
これでいいのですが、私が732-733で言いたかったのは、
直接utilityOverlay.xulをoverlayしてみては?ということです。

お分かりかと思いますが、overlayには2通りの方法があります。
ひとつは、「xulに直接<?xul-overlay?>を埋め込む」やりかたで、
もうひとつは「パッケージをインストールする」ことです。

結論から言いますと、この種の拡張(?)ではxulファイルが一切不要です。
0740デフォルトの名無しさんNGNG
>一部の関数のみをxpiで差し替えて動作させるようなことはできますか
できます。
javascriptの面白い点は、関数といえども、オブジェクトのひとつに過ぎない、
と言う点です。
よって、代入できてしまうのです。

値は他の関数でもいいのですが、
名前空間を不必要に汚すよりは、
関数リテラルを代入するほうが望ましい、と思われます。
■ このスレッドは過去ログ倉庫に格納されています