====== widgets.dat ======
meta-author: t.ashula
meta-creation_date: 2007-07-15T15:34:57+09:00
Opera のWidget 管理ファイル widgets.dat の解説.
注意
この文書は,WindowsXPにWindows版の Opera 9.6の情報に基づいて作成してます.この文書を基にして,Operaにカスタマイズその他の変更を加えて,不具合が発生しても責任は取れません.
突っ込み,感想,その他は,office@ashula.infoまで
==== 説明 ====
widgets.datは,Opera 9 から追加された widget を管理するためのファイルのひとつ.
Widget Panel などで直接ユーザに見える部分は [[opera:inis:widgetsadr]] というファイルで管理している.
「ユーザごとの設定を使う」でインストールすると,''Opera Directory''(通常,''%APPDATA%\Opera\Opera\profile'')以下の widgets フォルダに作られる(''%APPDATA%''は,通常''Documents and Settings\user_name\Application Data'').
拡張子こそ dat だが,実際の中身は XML である.
==== 構造 ====
widgets.adr ファイルは,XMLファイルで,ルート要素は ''preferences''
かなりいい加減な DTD で書くと,[[http://ashula.info/files/opera/inis/widgetsdat.dtd|widgetsdat.dtd]]のようになるはず.
=== ''preferences'' ===
''preferences''要素 は 1つ以上の ''section''要素を持つ.属性は無し.
=== ''section'' ===
''section''要素は1つ以上の ''value''要素を持つ.属性として ''id''がある.
''id'' は リテラルの ''widgets''か 30文字の文字列のどちらか.
リテラルの ''widgets'' の設定された ''section'' は ''preferences''要素の最初の子要素のみ.それ以外の ''section''要素の ''id''は全て30文字の文字列となっている.この 30文字の文字列は [[opera:inis:widgetsadr#widgets_IDENTIFIER|widgets.adr]]の''#WIDGET''の''IDENTIFIER''の値と対応する.
=== ''value'' ===
''value''要素の内容は #PCDATA で,属性として ''id'' がある.
''id'' は 次の4種類の値をとる.
; path to widget data : ''section''の最初の子要素にのみ使われる.この要素の内容は widget本体のパス として扱われる.おそらくは widget の ''config.xml'' を含むフォルダで,zipファイルである必要は無い.
; ''number of saved values'' : ''section'' の最後の子要素にのみ使われる.この要素の内容は,後述の key と val の数を表す.key/val が無いときは 0.
; ''key #n'' : ウィジェットが保存する値の名前(''widget.preferenceForKey''の引数)を表す.''n'' には 数字が入り,''key #0'',''key #1'',''key #2''と増加する.
; ''val #n'' : ウィジェットが保存する値(''widget.preferenceForKey''の戻り値)を表す.''n'' には 数字が入り,''val #0'',''val #1'',''val #2''と増加する.
===== 参考文献 =====
; Widget : [[http://dev.opera.com/articles/view/opera-widgets-specification-1-0/|Opera Widgets Specification 1.0 - Opera Developer Community]], http://dev.opera.com/articles/view/opera-widgets-specification-1-0/ , Opera Software
===== 更新履歴 =====
- 2007/07/15 : 初版
- 2008/10/10 : Opera 9.60 リリースに合わせて書き直し