« 箱降臨。 | トップページ | BA Ess。 »

2010年9月20日 (月)

XPOP参 (XPOP普及委員会その12)

久しぶりの委員会活動です。



おおおお、 もはや開発は続行していないのかと思われた XPOP がバージョンアップ!!!
http://rray.de/xsi/xpop/



未だに常用している XPOP 中毒患者としては、なんかすげー嬉しい。


実はまだ実際に試していないのですが、見たところ、

 ・メニューのグレイアウトができる
 ・アイコンが使える(チェックマークも)
 ・アイコン集が付属
 ・オブジェクト指向の API を搭載
 ・メニューアイテムをセクションヘッダを使ってグルーピング可能
 ・余白やフォントや色などビジュアル面でのチューニングが可能

というのが新機能だそうですよ。




グレイアウトができるってことは、あるブツの状態を反映して特定の操作をできなくするとか、そういうのに使えそうですよね。欲しかった。


アイコンもありがたいですね。でかい XPOP メニューを作ってしまうと、パッと見で目的のメニューアイテムを探せなくなっちゃいますからね。 チェックマークもありがたい。例えばあるスイッチをオンオフする機能を付けた時、メニューが出た時点でそのスイッチが現在オンなのかオフなのかまず知りたいじゃないですか。今まではチェックマークの代わりに、メニューアイテムの文字列の先頭に * や # を付けて擬似的にやってました。


アイコン集はずいぶん実用的というか汎用的というか、ほぼこれだけで全部をまかなえるんじゃないかってくらい付いてますね。 でも独自のアイコンも使えるそうです。 16 x 16 の .ico ファイルを用意すればいいそうです。 へへへへ。作るぞ。


オブジェクト指向な API、これは実にありがたい。今までの XPOP は若干変わっているというか、文字列を特定のルールで一直線にズンドコつなげて行く変態 API でしたからね。 普通のスクリプト書く時のように、 object.method( ) とか、 object.parameter = 値 みたいな書き方ができるようになったということですね。

・・・・でも、どうなんだろう、意外と、逆に不便になってしまうことがあるような気がしないでもない・・・・。 固定的なポップアップメニューの場合ならこの新バージョンの書き方が楽なはずだけど、シーンの状態やユーザが指定したオプションに従ってダイナミックに中身が変わるポップアップメニューの場合、旧 API の文字列ズンドコ方式の方がより直線的に記述ができて楽なのではないか。特にループ構造の中では旧式の方が書き易いのではないか。 ある状態を判別して、文字列をケツにズンドコ追加していくだけですからね。 ま、実際にメニューひとつ書いてみればわかるかな。


セクションヘッダでグルーピングというのは、カテゴリごとにラベル(見出し)のようなものを付けられるということですね。 今まではポップアップメニューの先頭にラベルを付けられるだけでした。あるいはサブメニューを作った時にはそのサブメニューのトップレベルにラベルを付けることはできました。分割線もありました。  新バージョンではこれに加えて、サブメニューでなくともメニューの途中のどこへでもラベルを付けられて、カテゴリ分けしやすくなったということですね。階層が深くなるのを嫌ってサブメニュー化しないフラットなポップアップメニューを作った時なんかに、見やすいものになりそうです。


フォントやら色やらの指定も可能だそうです。実にありがたい。 今までは先頭のラベルの色が指定可能だっただけです。しかも自由な色ではなく、あらかじめ用意された色から選ぶ必要がありました。 新バージョンでは色は16進数の RGB で指定するみたいですね。




とまあ、まだ使ってもいないのにニヤニヤしている変態野郎ですが、書いてある全ての新機能が大歓迎ですね。ひとつとして余計なものはなく、かつ欲しいと思っていた機能がほぼ網羅されている気がします。

あとは、2バイト文字対応はどうなんだろう?
ここ結構重要なんだが・・・・。


俺の過去の XPOP を使ったプラグインも、徐々に XPOP3 に対応させていくことになるでしょう。たぶん。 特に俺のXPOP を移植せねば・・・。

そういうや思い出した。 XSI の Layer Manager っていうんですか、6 を押して出てくるやつ、昔からアレが嫌いでしてね。どうも操作の感触が XSI の標準の UI から外れている気がするし、フローティングで使っていると単純に邪魔なんですよね。 なので 6 を押してこのウインドウ出さなくても Layer の操作ができるように、XPOP から Current Layer を切り替えたり、選択中のオブジェクトから新しい Layer を作ったりするというプラグインをだいぶ前に書いたのですが、そもそも俺があまり Layer を使わないということもあり、放置されています。自分のために書いたくせにあまり使い易くなくて気に入ってないというのもありまして。 誰か要りますかね? どこ行ったっけかな。探してみよう。  練習として、XPOP3 用に書き直してみるか。




Max のクアッドメニュー風なやつとか、何て言うんですか、あの Maya のぐるっとしたやつみたいなの、そういうポップアップメニューなプラグインを XSI 用に書いてくれる人も出てきて大いに刺激を受け、いつか自分でもポップアップメニューのプラグインを書けないかなーと思っていたのですが、あまりにも未知の分野であり、端緒としてどこに手を付けていいのかの想像すらつかず、ベンキョに踏み込むことができずにいます。

どなたか、俺にチュートリアル作ってくれたら、ビールおごります。




.

|

« 箱降臨。 | トップページ | BA Ess。 »

コメント

XPOP3で日本語使えるようにするには、ちょっと書き換えが必要っぽいです。
と言っても簡単で、DrawText を DrawTextW に置き換えるだけです。

投稿: 通りすがりのプログラマ | 2011年1月27日 (木) 23時39分

通りすがりのプログラマさん

わっ ほんとだっ できたっ
超ありがとうございます。そのうち記事にするかも知れません。

ええと、知りたいのは、なぜそう改造するとできるのだとわかるのですか?
そういうのって、どうやって調べたらいいのでしょう?

投稿: junki | 2011年1月28日 (金) 14時08分

PythonはWindowsのAPI(WindowsOS特有の機能を実現する関数)サービスが簡単に使えるようになっています。
XPOPはこれを利用してメニューのウィンドウを表示させてます。
そしてこのAPIには、1バイト文字用の関数と多バイト文字用の関数が用意されていて、英語圏以外のプログラマはだいたい多バイト文字用のほうを使うように訓練されています。
ようするに、自分はC++とかでのWindowsプログラムの経験があったんで、このAPI関数の知識があったというだけです。

Win32APIで調べれば解説があると思いますが、その中でもpythonで使えるかとかはpythonのマニュアルを見ないとわかりません。

投稿: 通りすがりのプログラマ | 2011年1月29日 (土) 01時24分

通りすがりのプログラマさん、なるほど、わかりました。わかってないけど。 超ありがとうございます。


どうかまた通りすがって下さい。 俺がスクリプティングのこととかで阿呆なことを言い出したら痛烈に突っ込んで下さい。

おおきに。

投稿: junki | 2011年1月29日 (土) 02時05分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217974/49504139

この記事へのトラックバック一覧です: XPOP参 (XPOP普及委員会その12):

« 箱降臨。 | トップページ | BA Ess。 »