SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

wxJavaScriptを使ったデスクトップアプリケーションの作成

wxJavaScriptの紹介と実装例

  • X ポスト
  • このエントリーをはてなブックマークに追加

シンプルなスクリプト

 続いて紹介していくのは、非常にシンプルなスクリプトです。
シンプルというのは、ウィンドウなどのインタラクティブな操作画面は持たず、記述されたことをそのまま実行するというスクリプトです。

 しかし、これだけ小さなプログラムでもいかに強力な処理が可能か、その一端をご覧いただけると思います。

メッセージボックスの表示

 Hello worldの表示で使ったメッセージボックスについて、もう少し深く掘り下げたスクリプトです。

 ご覧いただければ分かるとおり、wxWidgetが提供しているwxMessageBoxのスタイルをほぼそのまま利用できます。

 このスクリプトで見るように、「はい」「いいえ」ボタンなどはその環境に合わせて自動的にローカライズされるほか、日本語など、多言語の表示が可能です。

リスト3:メッセージボックスの利用(msgbox.js)
// メッセージボックスを表示するスクリプト
wxMessageBox("日本語も表示できるメッセージボックス", "メッセージボックスのタイトル", wxYES_NO|wxICON_INFORMATION);

他のプログラムを実行する

 スクリプト言語を利用すると、必ずといっていいほど「他のプログラムを起動したい」という要望が生まれます。通常のJavaScriptの範疇でこれを実現することは難しいですが、wxJavaScriptを用いることで、簡単に外部のプログラムを呼び出すことができます。

リスト4:Explorer.exeを呼び出す(execute.js)
// 外部のプログラムを起動するスクリプト
wxExecute( 'explorer.exe /select, C:\\WINDOWS' );

ファイルにデータを書き出す

 普通にJavaScriptを利用していてはできないことの一つに、ローカルのファイルへのアクセスがあります。そんな操作も、wxJavaScriptを用いることで簡単に実現できます。

 次のコードは、ファイルにシンプルなCのプログラムを書き出すスクリプトです。

リスト5:データの書き出し(writec.js)
// ファイルにデータを書き出すスクリプト
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経由でやりとりすることも可能です。

リスト6:JSONを利用する(printJSON.js)
// 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というファイルを開き、コンソール上にその内容を表示するというスクリプトです。

リスト7:テキストファイルの読み込みと表示(textfile.js)
// テキストファイルを扱う
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の有用なところです。

リスト8:正規表現を用いた検索(regexp.js)
// テキストファイルに対して、正規表現を用いて検索する
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);
}

次のページ
より複雑なスクリプト

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

太田 晃(オオタ アキラ)

 ブログ(http://repse.blogspot.com/)では、coLinux上にMinGWを用いてクロスコンパイル環境を構築し、そのうえでSDLやOpenGLを使ってWindows向けのプログラムを書くとか、海外のソフトウェアを(勝手に)日本語化するとか、Windowsのインデックスサービ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3815 2009/04/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング