BluntIRCのスクリプト機能

概要

BluntIRCはDynamicJavaを内蔵しています。 プラグインを書いてフックやアクションを登録することでIRCクライアントの機能を拡張することができます。

スクリプトの登録と管理

メニューのTool-スクリプト一覧から スクリプトの追加、削除、開始、停止、更新を行えます。

hello world

じゃ最初はhello world から。 この例ではテキストをバッファに出力します。

hello.djava

アクション

アクションはユーザの操作から実行される機能を追加するためのものです。 hook_manager.addScriptAction() にアクションの名前と、 javax.Swing.Action を実装したクラスのオブジェクトを指定することで登録されます。 アクションの名前はスクリプトのファイル名とaddScriptActionに指定した名前を ハイフンでつないだものになります。 例えばスクリプトがsample3.djavaというファイル名で登録時に"test"と指定した場合、 登録されたアクションの名前は sample3-test になります。

ユーザがアクションを呼び出す方法はいくつかあります。

sample3.djava

アクションの引数と戻り値

引数を得るには App.action_manager.getStackParameter() を使用します。 引数の型はinstanceofを使って判断することができます。

戻り値はApp.action_manager.setStackParameter() で設定できます。 設定しない場合は引数と同じものが戻り値になります。

アクションの引数と戻り値を扱うサンプル

call.djava

フック

フックはイベントが発生した際に何か処理を行ったりメッセージを書き換えたりするものです。 pluginがフックの種類ごとに用意されたinterfaceをimplementsすると イベントが発生した時に呼び出されます。 フックの詳細は sources/hook フォルダを参照してください。

timer.djava

autoOp.djava

アプリケーションへのアクセス

スクリプトとアプリケーションは同じ空間で動いています。 アプリケーション固有のクラス及びJ2SEのクラスを普通に使用できます。

ここではアプリケーション固有のクラスのいくつかについて説明します。

class bluntirc.App extends JFrame
アプリケーションの主ウィンドウです。 staticメソッド getApp() でインスタンスを取得できます。
class bluntirc.ConnTreeNode
接続、チャンネル、プリブバッファなどの「バッファを持つ項目」です。
サブクラスには CTN_App CTN_Conn CTN_Chan CTN_Priv があり、ツリー状の階層を持っています。
現在選択中のノードは App.getSelected() で取得できます。
また、ノードは任意のパラメータを拡張するための PropertyManager property を持っています。
class bluntirc.PropertyManager
接続ツリーのノードごとに保持されます。 プロパティはTreeMap,LinkedList,Stringを組み合わせた階層を持ったデータです。 プログラム及びスクリプトが扱う情報を格納するためのものです。 どのような型のオブジェクトも格納できますが、 プログラムの再起動を行っても保持されるのは上記の3つの型のデータだけです。 ユーザはプロパティインスペクタを使用して情報の閲覧と編集が行えます。
irc.IRCMessage
IRCサーバから送られてきたメッセージを表すクラスです。

細かい注意点