Mozillaでプログラミング(XUL)
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001Moziller
NGNGMozilla 1.0 RC1がリリースされ、
XUL 1.0の仕様が一応フリーズしました。
なので、そろそろXULアプリケーションも出始めることでしょうし(希望的観測)
MozillaでのXULプログラミングについて騙りませんか。
Mozillaスレッド M10
http://pc.2ch.net/test/read.cgi/software/1019550671/
0877866
NGNGGetDataSourceBlocking ですか、ありがとうございます。ただ、これだけだと selectedIndex = 1; がうまく動きませんでした。
どうやらここでの非同期な動作は、「RDF 読み込み」と「template による要素の生成」のふたつのようで、>>876 は前者、>>866 は多分後者の処理の終了を受け取る方法だと思いました。
そこで >>876 の最後の行 oListBox.selectedIndex = 1; の手続きを >>866 の方法で行うことにしたら、正常に動作するようになりました。
0878デフォルトの名無しさん
NGNGnsICacheServiceにvisitEntriesなるメソッドがあったりしますが…。
0879デフォルトの名無しさん
NGNGまさにそれですね。
var myCacheVisitor={
QueryInterface : function(aIID)
{
if (aIID.equals(Components.interfaces.nsICacheVisitor))
return this;
throw Components.results.NS_NOINTERFACE;
},
visitDevice : function(aDeviceID, aDeviceInfo){return true;},
visitEntry : function(aDeviceID, aEntryInfo){return true;}
};
こんな風に自分でオブジェクトを作って渡すと、cacheServiceが
myCacheVisitor.visitEntry(aDeviceID, aEntryInfo)を呼んでくれます。
falseを返すとそこで止まります。
ttp://developer-test.mozilla.org/xpcom/api/
こんなのがあったんですね。
公式版xulplanetか…
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNG<xul:script src="..."/> とか >>242-246 の mozIJSSubScriptLoader 使うとか。
chrome:// 内じゃないと無理だけど。
0883デフォルトの名無しさん
NGNG0884881
NGNG<constructor><![CDATA[
const scriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
.getService(Components.interfaces.mozIJSSubScriptLoader);
scriptLoader.loadSubScript("chrome://somepackage/content/common.js", this); //this に対して読み込む
...
]]></constructor>
0885デフォルトの名無しさん
NGNGhttp://www.saintpatrickdc.org/bsmedberg/register-locale.html
0886デフォルトの名無しさん
NGNGInput Method を使った(Atok,IME,ことえり,XIMとかの)日本語入力を検知する方法はありませんか?
0887デフォルトの名無しさん
NGNGC++とかでコードを書けば可能なのではないかと。
0888デフォルトの名無しさん
NGNGhttp://lxr.mozilla.org/aviarybranch/source/dom/public/coreEvents/nsIDOMCompositionListener.h#54
0889886
NGNGComponents.interfaces.nsIDOMCompositionListener
が JavaScript で呼び出せないから、
Seamonkey の nsTypeAheadFind.cpp のように C++ でがんばるしかないようです。
http://lxr.mozilla.org/seamonkey/source/extensions/typeaheadfind/src/nsTypeAheadFind.cpp#127
0890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
NGNG0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
NGNGdocument.getElementsByTagName("html")[0].innerHTMLの前後にHTMLタグをくっつける以外の方法はありますか?
0894デフォルトの名無しさん
NGNGできればHTMLのまま取得したいです。
0895デフォルトの名無しさん
NGNGvar request = new XMLHttpRequest();
request.onload = function() { alert(request.responseText); };
request.open('GET', document.location.href);
request.send(null);
ただ、このためだけに通信を行わなくてはならないのが難ですね。
0896デフォルトの名無しさん
NGNGその方法でできました。やはり通信が必要な分タイムラグが生じてしまいますが。
続けて質問させてください。
バイナリファイルをFTPでアップロードする方法を教えてください。
アスキーならBookmarksFTPを参考にして
var sis = Components.classes['@mozilla.org/io/string-input-stream;1'].createInstance(Components.interfaces.nsIStringInputStream);
this._channel = SBservice.IO.newChannelFromURI(uri).QueryInterface(Components.interfaces.nsIUploadChannel);
try {
sis.setData("HOGE", -1);
this._channel.setUploadStream(sis, "text/xml", -1);
this._channel.asyncOpen(this, null);
this._callback("send", status);
…
という方法で簡単にできたのですが…
0897デフォルトの名無しさん
NGNGその方法でできました。やはり通信が必要な分タイムラグが生じてしまいますが。
続けて質問させてください。
バイナリファイルをFTPでアップロードする方法を教えてください。
アスキーならBookmarksFTPを参考にして
var sis = Components.classes['@mozilla.org/io/string-input-stream;1'].createInstance(Components.interfaces.nsIStringInputStream);
this._channel = IO_SERVICE.newChannelFromURI(uri).QueryInterface(Components.interfaces.nsIUploadChannel);
try {
sis.setData("HOGE", -1);
this._channel.setUploadStream(sis, "text/xml", -1);
this._channel.asyncOpen(this, null);
this._callback("send", status);
…
という方法で簡単にできたのですが…
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGバイナリファイルのことだったら、そこのsisのかわりにnsIFileInputStreamを
もってきて、initすればそのまま使えます。
今日はnsIInputStreamの話ばっかりだな…
0900デフォルトの名無しさん
NGNGありがとうございます。FireFTPのソースを見てまいりましたが、根本的にやり方が違うようでした。
ソースが非常に長くて大変ですが、じっくりと読みこなそうと思います。
>>899
BookmarksFTPを参考に以下のように書き換えてみましたが、
アップロード先を見ると、0byteのファイルとなっています。
アスキーのときはきちんとアップロードされたのでパーミッションとかには問題ないと思いますが。
以下、コードの抜粋ですみません。
var fis = Components.classes['@mozilla.org/network/file-input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream);
this._channel = IO_SERVICE.newChannelFromURI(aURI).QueryInterface(Components.interfaces.nsIUploadChannel);
try {
fis.init(aBinFile, 1, 0, false);
this._channel.setUploadStream(fStream, "", -1);
this._channel.asyncOpen(this, null);
this._callback("send", status);
return true;
} catch(e) {
}
0901デフォルトの名無しさん
NGNGありがとうございます。FireFTPのソースを見てまいりましたが、根本的にやり方が違うようでした。
ソースが非常に長くて大変ですが、じっくりと読みこなそうと思います。
>>899
BookmarksFTPを参考に以下のように書き換えてみましたが、
アップロード先を見ると、0byteのファイルとなっています。
アスキーのときはきちんとアップロードされたのでパーミッションとかには問題ないと思いますが。
以下、コードの抜粋ですみません。
var fis = Components.classes['@mozilla.org/network/file-input-stream;1'].createInstance(Components.interfaces.nsIFileInputStream);
this._channel = IO_SERVICE.newChannelFromURI(aURI).QueryInterface(Components.interfaces.nsIUploadChannel);
try {
fis.init(aBinFile, 1, 0, false);
this._channel.setUploadStream(fis, "", -1);
this._channel.asyncOpen(this, null);
this._callback("send", status);
return true;
} catch(e) {
}
0902デフォルトの名無しさん
NGNGTab,Windowの新規作成時のタイミングを得たいのですが、
試してみたaddEventListener("load",では"更新"にも反応してしまいます。
他に何か方法はありますでしょうか?
0903デフォルトの名無しさん
NGNGwindow.addEventListener('load', listener, false)
最後のfalseがポイント
0904デフォルトの名無しさん
NGNG遅くなりました、情報ありがとうございました。
とても簡単なことだったんですね……。
とりあえず、ここのLogに残ってるLinkを少しづつ読んでいって
もう少しましな知識をつけたいと思います。
0905デフォルトの名無しさん
NGNG0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNG誰が何をやめたんですか?
0909デフォルトの名無しさん
NGNG0910デフォルトの名無しさん
NGNG0911デフォルトの名無しさん
NGNG0912デフォルトの名無しさん
NGNGGeckoタブブラウザ Bagel 〜ベーグル〜
http://pc5.2ch.net/test/read.cgi/software/1093876991/
>>911
Geckoベースのブラウザを作ろう。
http://pc5.2ch.net/test/read.cgi/tech/1023546699/
0913デフォルトの名無しさん
NGNGXULチュートリアルにあるように /chrome の下に置いて
installed-chrome.txt 書き換えて再起動しても読み込まれてない
みたいなんですが…
chrome URL で直接呼び出すとちゃんと出てくるので
文法エラー等はないはずです。
0914デフォルトの名無しさん
NGNGabout:configからnglayout.debug.disable_xul_cacheをtrueにしてみてください。
0915デフォルトの名無しさん
NGNGだめでした。何でじゃー
>>856-857に類似の質問があったけど肝心のリンク先が消えてる…
0916デフォルトの名無しさん
NGNGそのページのキャッシュ:http://www.google.co.jp/search?q=cache:uvlvdJ1gfFQJ:fls.moo.jp/wdiary/200406.php+&hl=ja&lr=lang_ja
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG素直にinstall.rdfを書いたほうがいい。
jarにしなくてもインストールできるので。
http://kb.mozillazine.org/index.phtml?title=Dev_:_Tips_:_Disable_XUL_cache
0919デフォルトの名無しさん
NGNG0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG読みやすくてシンプルなExampleのおすすめは何ですか?
私のスキルはC,Python,PHP,です
0922デフォルトの名無しさん
NGNGSageとかコードが綺麗なのを参考にするといい。
GrepSidebarはお勧めしない。
0923デフォルトの名無しさん
NGNGいきなりコード見るよりはとりあえずXULチュートリアルから学んでみてはいかがでしょう?
一部古くて使い物にならない部分もありますが。
http://xul-app.hp.infoseek.co.jp/xultu-janit/
あと、Tourisugari氏のコードもきれいです。
0925921
NGNGこちらを読んでみます。
http://xulplanet.com/tutorials/whyxul.html
0926921
NGNGこっちでした
http://www.xulplanet.com/tutorials/xultu/
0927デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNG*.xulとか*.jsは書けたのですが、それをxpiにするにはどういうファイルを
用意するかとか、xpi/jar内部のディレクトリ構成とかについて
ちゃんと書いてあるページが知りたいです。
一応、自分が使ってる拡張のソースを参考に見様見真似でinstall.rdfや
install.jsを書いたのですが。
あと拡張の更新情報のためにwebに載せるRDFファイル(update.rdf?)の書き方も。
0930デフォルトの名無しさん
NGNGhttp://www.bengoodger.com/software/mb/extensions/packaging/extensions.html
かなぁ。
もっとちゃんとしたドキュメントがあるかもしれない。
0932929
NGNGおお、まさにこれです。ありがとうございます。
サイトマップからも探したのですが見付けられませんでした。
mozilla.orgのweb構造は多分に謎です……
0933デフォルトの名無しさん
NGNG> mozilla.orgのweb構造は多分に謎です……
禿同
0934デフォルトの名無しさん
NGNGttp://www.mozilla.orgを
ttp://www.mozilla-japan.orgに変えると和訳ページに。
ちなみに自分もただいま勉強中です。
やっとこさ、Firefox 0.8系の拡張を1.0でInstall/Uninstallができる様になった
ところで、最近、少しづつ中身を書いております。
自分のやりたいことをGoogleで調べながら書いてますが
だいたい、上記の和訳かXULPlanetかPiro氏のページに飛びますね。
ここ共々お世話になっております。
0935デフォルトの名無しさん
NGNG外部から操作することはできますか?
XULアプリからでもかまいません
0936デフォルトの名無しさん
NGNGttp://www.xulplanet.com/references/xpcomref/xpcomref1.0/nsISHistory.html
ttp://www.xulplanet.com/references/xpcomref/xpcomref1.0/nsIBrowserHistory.html
XULアプリならこのあたりで操作できます。
0937デフォルトの名無しさん
NGNG具体的には
var history = Components.classes["@mozilla.org/browser/global-history;2"].
getService(Components.interfaces.nsIGlobalHistory);
history.removeAllPages(); //← >>936 の nsIGlobalHistory.html参照
のように使う。rdf:history というRDFデータベースとしても利用できたはず。
0938デフォルトの名無しさん
NGNGRSSフィードのLink要素などの中に&や'が含まれていても
デコードすべきところでしてくれないてバグだが、拡張機能Sageだけじゃなく
Firefox1.0のライブブックマークにも同じ症状があるぽいよな…
仮に変換だけ実装しても脆弱性起こしそうだし、これはどう直すべきなんだろう。
自分はXULも何もさっぱりなので手も足も出ないがorz
0939デフォルトの名無しさん
NGNG本当にそんなバグがあるんだったら、
とりあえず、bugzilla.mozilla.orgの方を探してみた方がいいと思うよ。
0940938
NGNGそういやそうだったな。
とりあえずライブブックマークの方に該当すると思われるバグはこれ。
https://bugzilla.mozilla.org/show_bug.cgi?id=252147
0941デフォルトの名無しさん
NGNGそのバグで報告されているリンク先は
&となっているので、まともなxmlじゃないと思う。
0942デフォルトの名無しさん
NGNG&amp;amp;ね。
0943デフォルトの名無しさん
NGNG0944デフォルトの名無しさん
NGNG0945デフォルトの名無しさん
NGNG0946デフォルトの名無しさん
NGNGnsIRDFCompositeDataSourceはnsIRDFDataSourceから作れないようなので
0947デフォルトの名無しさん
NGNGmyCDS.AddDataSource(myDS1);
myCDS.AddDataSource(myDS2);
ではダメですか?
0948デフォルトの名無しさん
NGNGまぁrdfのテンポラリファイルを作るか、すべてのリソースを移動すればいいんですけどね
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951デフォルトの名無しさん
NGNGの copyAllToDataSource とかかな。
0952デフォルトの名無しさん
NGNGそれは昔やってました。
thunderbirdでdocument.evaluateが使えなくRDF化している最中でつまずきました
>>951
それを使えばできそうですね。
ありがとうございます
#というかこんな物があったなんてorz
#独自でラッピング(?)してました。
0953デフォルトの名無しさん
NGNGoverlayした時に不便だから、結局自分で手書きした方が楽なんだよねぇ。
0954デフォルトの名無しさん
NGNGSeqが削除できません。
Unassertで関連を切っても残ってしまいます。
何か方法ありませんか?
#それともこっちのミスかなぁ
0955デフォルトの名無しさん
NGNGvar ds = RDFContainer.DataSource;
var node = RDFContainer.Resource;
var keys = ds.ArcLabelsOut(node),
key,
value;
while (keys.hasMoreElements())
{
try {
key = keys.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
value = ds.GetTarget(node, key, true);
ds.Unassert(node, key, value);
}
catch(e) {
}
}
みたいにすれば消えるはず
0956デフォルトの名無しさん
NGNGSeqの中身をすべて削除してunassertしても空のどことも関連がないSeqが残ってしまいます。
#やっぱコードのミスかなぁ
0957デフォルトの名無しさん
NGNGスクリプトのどこかにミスがあって二重にassertしてるのでは?
>>955の
value = ds.GetTarget(node, key, true);
の代わりに、GetTargetsで全てのノードを取り出してunassertすれば
より確実だと思うけど、野暮ったいから自分のスクリプトではやってない。
0958デフォルトの名無しさん
NGNG元からあるRDFを関数再起呼び出しでunassertするだけなんですが…
GetTargetsでも一つしか帰ってこない気がします。
もしかして削除の順番とかが関係するんでしょうか?
0959デフォルトの名無しさん
NGNGhttp://piro.sakura.ne.jp/xul/tips/x0025.html
を見てRDFの操作方法を憶えたから、Unassert(aResource,aProperty,aTarget,true);と使ってしまっている。
0960デフォルトの名無しさん
NGNGえ…
本当ですね。
でも最後のboolがないだけなので最後をtrueとしても問題はないですね。
0961デフォルトの名無しさん
NGNGコピペして書いたので間違えてましたorz
0962デフォルトの名無しさん
NGNG作ろうとしているのですが、デフォルトで表示される表示領域より
ツールチップのラベルが長いときのツールチップを消せません。
デフォルトのツールチップはどこで表示されているのでしょうか?
0963デフォルトの名無しさん
NGNG×ツールチップのラベルが→○ブックマークのラベルが
0964デフォルトの名無しさん
NGNG消すのはちょいと難しそう
0965デフォルトの名無しさん
NGNGしかもそのコードが悪さをしてるのかtreecellにtooltip設定しても
まともに動作しない…
0968デフォルトの名無しさん
NGNGhttp://wiki.fdiary.net/xul/
0969デフォルトの名無しさん
NGNG0970デフォルトの名無しさん
NGNGこのコードでThunderbirdが即死する。
XULのプログラムは初めてなんですが、どこが間違ってるんでしょうか…
var quoteListener = {
onStartRequest: function(request , context) {
},
onStopRequest: function(request, context , statusCode) {
},
onDataAvailable: function(request, context, inputStream, offset, count) {
},
QueryInterface: function(iid) {
if (iid.equals(Components.interfaces.nsISupports) ||
iid.equals(Components.interfaces.nsIRequestObserver) ||
iid.equals(Components.interfaces.nsIStreamListener))
return this;
throw Components.results.NS_NOINTERFACE;
}
};
var msgQuote = Components.classes['@mozilla.org/messengercompose/quoting;1'].createInstance().QueryInterface(Components.interfaces.nsIMsgQuote);
if (msgQuote)
msgQuote.QuoteMessage(params.originalMsgURI, false, quoteListener, null, false);
0971デフォルトの名無しさん
NGNG->
.createInstance(Components.interfaces.nsIMsgQuote);
0972デフォルトの名無しさん
NGNGこれからも手探りでやるつもり?
自分には無理だ…
0973デフォルトの名無しさん
NGNGありがとう。でも結果同じでやっぱり死んじゃう。・゚・(ノ∀`)・゚・。
QuoteMessage()の呼出し後に、onStartRequest()は実行されてるけど、
onDataAvailable()が実行されずにアプリケーションエラーで死亡(´・ω・`)
XULでプログラムしてる人って、xulplanet.comとMozillaのソースコード
だけで何とかなってるの?
0974デフォルトの名無しさん
NGNGあ、それは自分も経験がある。
引数のinputStreamをうそでも触っておいた方がいいみたい。
>xulplanet.comとMozillaのソースコードだけ
まあ、ない袖は振れないってやつですね。
0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG>引数のinputStreamをうそでも触っておいた方がいいみたい。
ぜひ、詳しく(`・ω・´)
レス数が950を超えています。1000を超えると書き込みができなくなります。