学会行きの電車の中でつれづれと
学会行きの電車の中でつれづれと考える。
早めにNarVisualizerをプラグインで実現できるか試そう。 プラグインで実現できるようにプラグインシステムを改良しよう。
GRINEditの現状のプラグインシステムはpluginsフォルダ内のjarファイルの 中から実行時にクラスをロードできるというだけだが、 ユーザにとって使いやすいプラグインシステムはEclipseみたいに 「ダウンロードして解凍して適当なところにコピーすれば それだけでメニューが追加されたり機能が増えたりする」 というものだ。 pluginsフォルダの中にjar以外の物を入れると、 現状では無視される(これを利用してドキュメントを書くことも出来る)が、 pythonスクリプトが入っていれば起動時に実行することにするといいかも。 そのスクリプトで自分自身の機能をON/OFFするメニューを追加させたり、 翻訳データファイルに追加をさせたりする。
XML-RPCハンドラもプラグインから追加したい。 handlerId = grinedit.loadHandler("org.…")とかやってロードさせて、 grinedit.apply(handlerId, "methodName", params)とやって呼び出す。
ドラッグドロップのハンドラもプラグインから追加させる。 例えば画像ファイルをドラッグドロップするとそれのサムネイルが入った頂点が出来、 ダブルクリックすると開く、とか。 PDFファイルをドラッグドロップするとPDFのアイコンとタイトルの入った頂点が出来、 ダブルクリックすると開くとか。
いまダブルクリックはスルーしているけど、最寄りの頂点のdoubleClickedメソッドを呼び出す、とかでいいかも。
操作マニュアルの自動生成。 今はMouseOperationインスタンスは メニューに表示する文字列だけを持っているが、 メタキーによる修飾をサポートしたので機能がメニューに書ききれなくなった。 機能説明の文字列も持たせよう。
頂点のサイズ変更とか、頂点の中の文字列も動的に書き換えたいですね。 プラグインで出来るかな、それ。
グラフをネットワーク越しに共有して複数人で同時に編集できるようにするには…。 サーバで物理演算をやって、クライアントはその結果を受け取って表示するだけにするか。もちろんクライアントが頂点を追加したり移動したりした場合にはその情報がサーバに送られる、と。JythonやXML-RPCではない操作も全部CommonGatewayを通すことにして、そこでサーバと通信するのが全部まとまっていて楽そうだけど、パフォーマンスはどんな感じになるんだろうか。
GRINEditにコマンドライン引数でPythonスクリプトを渡した場合に、 init.pyなどの実行が済んで初期化が完了した後、 現在start.pyが実行されているタイミングで そのスクリプトが実行されるようにしよう。 そうするとGRINEdit test.pyでテストが起動され、 GRINEdit narVisualizer.pyでNarVisualizerモードで起動し、 何も指定しなければプレーンなGRINEditが起動する、なんてことができる。
タブレットでスケッチっぽく頂点や辺の追加がしたい。