Inkpodアプリの基本形と、インストール方法について、Hello Worldサンプルを例にとって説明します。
以下のサンプルは、ヘルプメニューの最後に"Hello"メニュー項目を追加します。追加されたメニュー項目を選ぶと"Hello, Inkpod world!"というメッセージを表示します。Hello, World サンプル: hello.js
function init() { inkpod.ui.addUIExtensionListener(function(event) { inkpod.ui.actions.addAction({ id : "HELLO", text : "Hello", action : function(frame, event) { inkpod.showInfo("Hello, Inkpod world!"); } }); inkpod.ui.menuBar.helpMenu.addMenuItem("HELLO"); }); } function dispose() { } plugin = { init : init, dispose : dispose }
InkpodがインストールされたフォルダをINKPOD_HOMEとしたとき、このファイル(hello.js)を INKPOD_HOME/apps/jp.carabiner.hello/hello.js に置いて、Inkpodを起動すると、アプリが使用可能になります。
なお、JavaScriptのファイルは、すべてUTF-8で書かれている必要があります。
すべてのアプリケーションは、INKPOD_HOME/apps/ 以下の、それぞれ異なるフォルダに配置されます。アプリケーションにはそれぞれ識別子があります。識別子をAPP_IDとした場合、INKPOD_HOME/apps/APP_ID/ が、それぞれのアプリケーションの配置場所になります。例えば、hello.jsの場合、jp.carabiner.hello がアプリケーションの識別子で、アプリの場所が、INKPOD_HOME/apps/jpcarabiner.hello/ です。
Inkpodは、INKPOD_HOME/apps/APP_ID/ 直下の全ての、*.js ファイルを読み込みます。しかし、 一つ下の階層のjsファイルは読み込みません。例えば、INKPOD_HOME/apps/APP_ID/js/foo.js は、読み込まれません。JavaScriptのグローバル変数の空間はjsファイルごとに独立していて、INKPOD_HOME/apps/APP_ID/ 直下に複数のjsファイルを置いても、互いに独立して扱われ、アクセスすることはできません。
アプリケーションを複数のjsファイルに分割したい場合は、Inkpodに直接読み込んでもらいたいファイルと、それ以外を分けます。そして、Inkpodに読み込ませたいjsファイルは、INKPOD_HOME/apps/APP_ID/ 直下に配置し、それ以外のjsファイルはフォルダを作ってその下に配置します。他のjsファイルを読み込む場合は、組み込み関数のimportScript()関数で読み込みます。引数は、読込元のjsファイルからの相対パスです。
標準的な配置では、INKPOD_HOME/apps/APP_ID/ 直下に1つメインとなるjsファイルを置き、そこから読み込まれるjsファイルを1階層下のフォルダに配置します。hello.jsの場合、例えば、以下のようになります。
importScript("js/foo.js"); function init() { // 以下略
アプリから、Javaで書かれたライブラリを使用したい場合、hello.jsと同じフォルダか、それより下のフォルダにjarファイルを置くことで、使用可能になります。
クラスローダは、アプリ毎に独立しているため、他のアプリと違うバージョンライブラリを使用することも可能です。
Inkpodを起動したままプラグインを再読込したい場合、「ファイル」-「プラグインの再読込」メニューで再読込できます。
再読込は以下の手順で行われます