XREA.COM Logo XREA.COM Ad

Sleipnir2スレ

9l ★:2006/11/19(日) 22:31:44 ID:???
Sleipnir2メニュー編集スクリプト

前に作ろうと思って途中で投げ出した奴を多少まともにして公開。

Sleipnir2ではメインメニューやタブのポップアップメニューなどを自由にカスタマイズできるが、XMLファイルを直接編集しなければならないので面倒くさい。
そこで、編集用のGUIを作ることに。

最初はDMonkeyかAutoHotkeyでやろうかと思ったが、Sleipnir2の標準機能だけで動作するようにJScriptで作ることに。
UserActionにしようかとも思ったが、いちいちプラグインをインストールしないと使えないのでは本末転倒なので、単なるWSHにした。

Sleipnir2のユーザー設定フォルダが取得できないのが面倒くさい。
APIを使えば取得できるだろうが、無効になっている場合もあるのでできれば使いたくない。
とりあえず、(new ActiveXObject('WScript.Network')).UserNameでユーザー名を取得して何とかした。
マルチユーザー機能を使っていない場合や、ApplicationDataディレクトリに設定を保存している場合のことは面倒なんで無視した。

設定ファイルはADODB.Streamで読み込み、Microsoft.XMLDOMで取得したDOMツリーに再帰的にHTML生成関数を実行する。
Sleipnir2のXMLフォーマットが紛い物なので、MSXMLでは正しくパース出来ない。
「&」が「&」とエスケープされていないのが原因だった。
とりあえずrelpace()で対策したが、他にもあるかも知れない。

ADODB.Streamはバイトオーダーマーク付きのUTF-8ファイルをBOMごと読み込んでしまう。ファイルの先頭から「<」の前までを削除するようにして対策した。

編集画面は、InternetExplorer.Applicationオブジェクトでツリー上のHTMLとして表示する。
JavaScriptでツリー項目をD&Dできるようにしたり、「ゴミ箱」部分にドロップしたら削除されるという機能を付けたりした。
新規項目は、下部に別途ツリーを用意しておいてそこからD&Dで追加することに。
この新規項目パレットは、sleipnirスタイルのMainMenu.xmlから読み込む。

「OK」ボタンが押されたことの確認には、documentオブジェクトに適当なプロパティを設定して、WSH側でwhileループしながらそのプロパティを監視するという方法をとることに。
割とそれらしい動きになった。

とりあえず動作確認をしてみたところ、「デフォルト(&D)」という項目名が「デフォル(&D)」になるという不具合が発生。
どうやら、ADODB.StreamでReadTextした時点でおかしくなっているらしいので、どうしようもない。
表示名がおかしくなる程度であれば、我慢すれば使えるので問題ないだろう。

バックアップ機能とかも付けていないが、飽きたのでとりあえず完成ということに。
どうせ自分では使わないだろうし。

投稿ファイル名: MenuEdit.zip
http://lukewarm.s151.xrea.com/b/file/1163165308_9.zip
サイズ: 4592 bytes
57KB
名前: E-mail:
ファイル:
0ch BBS 2005-10-08