オフラインミーティングのログ
未踏ユースのブースト会議で発表したり、GRINEditを使ってみたいという人のマシンにソースコードを入れて開発環境を整えたりしてきました。
開発環境を整えるための手順
- まずEclipseに空のプロジェクトを作成
- srcフォルダにソースコードをコピー
- ファイル名「cvs」で検索してcvs情報のフォルダを消した
- ほんというとリポジトリからチェックアウトしてもらえるようにしておくべき。
- Jarファイルをクラスパスに追加
- SWT関係
- org.eclipse.swt_3.1.0
- org.eclipse.jface_3.1.1
- org.eclipse.swt.win32.win32.x86_3.1.2
- org.eclipse.core.runtime_3.1.2
- XML-RPC関係
- xmlrpc-2.0.jar
- commons-codec-1.3.jar
- Jython関係
- jython.jar
- 動的にロードされるものがあるので コンパイルエラーが出なくても追加する必要があることに注意。
- SWT関係
- プロジェクトのルートディレクトリにconfig.pyとswt*.dllとpythonScriptフォルダをコピー
- config.pyに書かれているpythonScriptsフォルダの位置を修正する
備考。 Macで動かすには「org.eclipse.swt.win32.win32.x86_3.1.2」のようなライブラリが必要そう。 JythonがインストールされていないとJythonコンソールを出すメニューはエラーを出す。 Jythonコンソールを使わない多数派のユーザにJythonのインストールを強要することはしたくないので、これはinit.pyでXML-RPCをON/OFFしているような方法でメニューをON/OFFしてしまえばいいのではないだろうか。
- グラフの頂点以外に画面に表示したい物がある
- それも頂点として実装する
- 反発や引力などの物理演算はみんなターゲットを指定できるようになっている
- 実はaddVertexメソッドは"vertex"という名前に関連づけられたHashtableに 指定されたオブジェクトを作って入れるだけ。
- addObjectメソッドで"vertex"以外の物に追加すればいい
- 移動は物理演算
- マウスの操作のカスタマイズはどこでやる?
- →MouseOperationでやる
- TODO:これもプラグインで追加できるようにする
- addMouseOperationで追加、setMouseOperation("name", "LEFT")で左マウスボタンに割り当てとかかな?
- MouseOperationプラグインのサンプルを作る
- ドラッグドロップでドロップされた付近の頂点に対して何かする
- 頂点を頂点にドラッグドロップすると辺が出来るとか
- 入れ子になるとか
- ドラッグドロップでドロップされた付近の頂点に対して何かする
- 既存ソフトウェアの一部として使うとき、
すでにそのソフトウェアにある頂点クラスにはRenderableVertexを継承させられないケースがある
- 描画と無関係の「位置」や「速度」などを持ったクラスがある(MassPoint)ので それを既存の頂点クラスに持たせる。
- GRINEditのjarを作っておくべき。
- キャンバスのAWT化
- アプレットにする際に楽
- XML-RPCで全部の頂点の情報をまとめて取得するメソッドを作る
- getVertexでvertexの情報を取得する側のサンプルコードがない。書くべし。
- 非矩形選択ができるといいなぁ
- しかもそれを畳んだり出来るといいなぁ
- 辺のIDのプレフィクスがvertexになっているのを修正する
- ピン留めされていることをはっきり表示する 清木さんのアイデア
- もちろんピン留めされたときにピンの絵を出す頂点をプラグインとして作れば実現できるが、そんな些細なことでいちいちJavaで開発しないと行けないのは重荷
- リファクタリングするべき?
- 辺と頂点の選択方法(なんでMediatorに実装されてるんだ!)
- 選択時の表示の変化(でもどう変えるのがいいのだろう?)
- 現状のSelectionの仕様
- Selection.setで既存の選択範囲に含まれる頂点のselectedをfalseにし 新しい選択頂点をselected=trueにする
- 現状のSelectionの仕様
- キャンバスサイズが決めうちなのはよくない
- config.pyで設定?init.pyで設定?
- メインのGUI自体をプラグイン化?
- 必要のないプラグインの中までサーチしないようにすべき?
- →現状ではpluginsフォルダの中にあるjarファイルから探している
- →「必要ある/ない」を切り替えるためには、設定をするためのファイルを用意するか、 設定用のスクリプトに書き足すなどの作業が必要になる
- →HashtableでJarのロケーションとON/OFFの対応を持たせておいて 個々のプラグインフォルダのconfig.pyでそのON/OFFを切り替えられるようにしておく?