シンプルなスクリプト
続いて紹介していくのは、非常にシンプルなスクリプトです。
シンプルというのは、ウィンドウなどのインタラクティブな操作画面は持たず、記述されたことをそのまま実行するというスクリプトです。
しかし、これだけ小さなプログラムでもいかに強力な処理が可能か、その一端をご覧いただけると思います。
メッセージボックスの表示
Hello worldの表示で使ったメッセージボックスについて、もう少し深く掘り下げたスクリプトです。
ご覧いただければ分かるとおり、wxWidgetが提供しているwxMessageBoxのスタイルをほぼそのまま利用できます。
このスクリプトで見るように、「はい」「いいえ」ボタンなどはその環境に合わせて自動的にローカライズされるほか、日本語など、多言語の表示が可能です。
// メッセージボックスを表示するスクリプト
wxMessageBox("日本語も表示できるメッセージボックス", "メッセージボックスのタイトル", wxYES_NO|wxICON_INFORMATION);
他のプログラムを実行する
スクリプト言語を利用すると、必ずといっていいほど「他のプログラムを起動したい」という要望が生まれます。通常のJavaScriptの範疇でこれを実現することは難しいですが、wxJavaScriptを用いることで、簡単に外部のプログラムを呼び出すことができます。
// 外部のプログラムを起動するスクリプト wxExecute( 'explorer.exe /select, C:\\WINDOWS' );
ファイルにデータを書き出す
普通にJavaScriptを利用していてはできないことの一つに、ローカルのファイルへのアクセスがあります。そんな操作も、wxJavaScriptを用いることで簡単に実現できます。
次のコードは、ファイルにシンプルなCのプログラムを書き出すスクリプトです。
// ファイルにデータを書き出すスクリプト
var file = new wxFile( "simple.c", wxFile.write );
// データの書き込み
file.write("#include \nint main(void)\n{\n\tprintf(\"Hello world\");\n\treturn 0;\n}\n");
file.close();
JSONと連携する
こうして見ると、ブラウザ上で動いていたJavaScriptとは一線を画しているように思えます。しかし、やはり中身はJavaScriptなので、JavaScriptで利用できる強力なデータ表現手段であるJSONとの連携も可能です。
次の例ではJSON形式で記述されたデータをメッセージボックスで表示しています。もちろん、先のファイルにデータを書き出すプログラムと連携させて、データをJSON経由でやりとりすることも可能です。
// JSONデータを表示するスクリプト
var jsonData = '{"language": "JavaScript", "library": "wxJavaScript"}'
var data = eval( "(" + jsonData + ")");
wxMessageBox( "Language:" + data.language + "\n" + "Library:" + data.library );
テキストファイルを扱う
GUIを扱うライブラリでは、特定のデータ形式に特化したオブジェクトが用意されていることがよくあります。wxWidgetも例外ではなく、テキストファイルの扱いに特化したwxTextFileというオブジェクトが用意されています。もちろんこれはwxJavaScriptでも利用することが可能で、イテレータを使うことで、テキストファイルに手軽にアクセスできるようになります。
次のプログラムは、先ほどのデータ書きだしスクリプトで書き出したsimple.cというファイルを開き、コンソール上にその内容を表示するというスクリプトです。
// テキストファイルを扱う
var tFile = new wxTextFile("simple.c");
// ファイルが存在するかをチェックし
// 存在していた場合だけ表示処理をする
if( tFile.exists() ) {
tFile.open();
// 読み込んだファイルを表示する
for( i in tFile.lines) {
print(tFile.lines[i].content + "\n");
}
} else { // ファイルが存在しなかったとき
wxMessageBox("ファイルが存在しません。", "失敗", wxICON_ERROR);
}
正規表現を用いて、テキストファイルの中を検索する
テキストファイルを開いて読み書きする手法が分かったので、続いてはこれらの機能とJavaScriptの提供する正規表現とを組み合わせて、テキストファイルの中を正規表現で検索するスクリプトを紹介します。
JSONでも見たように、既存のJavaScriptの機能と連携しながら処理をこなせるという点が、wxJavaScriptの有用なところです。
// テキストファイルに対して、正規表現を用いて検索する
var tFile = new wxTextFile("simple.c");
// ファイルが存在するかをチェックし
// 存在していた場合だけ表示処理をする
if( tFile.exists() ) {
tFile.open();
// 読み込んだファイルを表示する
for( i in tFile.lines) {
if(tFile.lines[i].content.search(/i/i) != -1) { // 正規表現にマッチするなら表示
print(tFile.lines[i].content);
}
print("\n"); // マッチしてもしなくても、最後に改行を表示する
}
} else { // ファイルが存在しなかったとき
wxMessageBox("ファイルが存在しません。", "失敗", wxICON_ERROR);
}
