HCiup for PHP-Extension ( Ver.0.4 alpha )

クロスプラットフォームGUIツールキット[ IUP ]をPHPで使える拡張モジュールにしてみました。
これはまだ試験的なもので、IUPの全ての機能が使えるわけではありませんが、一部の機能で、さらに簡単になるように独自に付け加えた処理を利用することができます。

MITライセンス

[ PHP-5.3用 ] Zip ( 208KB ) HCiup_php503.zip
[ PHP-5.4用 ] Zip ( 208KB ) HCiup_php504.zip
[ サンプル ] Zip ( 79.5KB ) hciup_sample.zip

▼下記の条件に該当するPHPを別途ダウンロードしてください
http://windows.php.net/download/#php-5.3
( VC9 x86 Thread Safe ) php-5.3.*-Win32-VC9-x86.zip
http://windows.php.net/download/#php-5.4
( VC9 x86 Thread Safe ) php-5.4.*-Win32-VC9-x86.zip

エクステンションを有効にするには、PHPパッケージ内の extフォルダへ HCiup.dll を入れ、php.ini に下記の設定を追加します。
extension=HCiup.dll

▼Python用もあります。

[ Python2.7用 ] Zip ( 213KB ) HCpyIup.zip
[ サンプル ] Zip ( 79.4KB ) hcpyiup_sample.zip

使い方は、DLLsフォルダに HCpyIup.pyd を入れて import HCpyIup のようにして使います。
詳しくはサンプルをご覧ください。




int hciup_tree(void)

ツリー。

これには、簡単に扱えるように hciup_mktree_set(), hciup_mktree_get() という独自の関数が用意されています。


array hciup_mktree_set(int $handle, string $path [, array $types])

指定されたフォルダの内容からフォルダとファイルの階層構造を作り、ツリーに表示し、そのデータを配列で返します。

第1引数にはツリーのハンドル。
第2引数にはターゲットとなるフォルダへの絶対パス。
第3引数は拡張子を指定できます(複数可)必要な場合のみ。
例 → array('.jpg', '.png') このように配列で設定します。


array hciup_mktree_get(int $handle, array $data)

第1引数にはツリーのハンドル。
第2引数には hciup_mktree_set() が返した配列データを入力。

選択されているツリーデータをこのような配列で返します。

array(5) {
    ["flag"]=>
    string(8) "ADDLEAF0"
    ["name"]=>
    string(10) "sample.txt"
    ["path"]=>
    string(17) "C:/usr/sample.txt"
    ["depth"]=>
    string(1) "1"
    ["kind"]=>
    string(4) "LEAF"
}

また、ツリーをダブルクリックすると上記配列の name のデータを文字列で得られます。


void hciup_mainloop(void)

メインループ。

▼ウィンドウを表示するだけのサンプル
$dlg = hciup_dlg(null);
hciup_set_plms($dlg, 'TITLE="Sample", MINSIZE=640x480, MARGIN=10x10, GAP=10');
hciup_show($dlg);

hciup_mainloop();


void hciup_close(void)

ウィンドウを閉じます。
独自に設定したボタンなどで閉じる時に使います。
通常はウィンドウ右上の×ボタンで閉じる事ができるので必要ありません。


void hciup_callback(int $handle, string $function_name)

ボタンなどが押されたときに実行されるユーザー関数名を設定します。
static であればクラス名でも可能です。


void hciup_set_plms(int $handle, string $sets)

アイテムにオプションパラメータを設定します。

hciup_set_plms($handle, 'SIZE=100x30, VALUE="test value"');

上記ような形で複数設定可能です。
ダブルクォーテーションは使用できます。


void hciup_set_plm(int $handle, string $name, string $value)

これも hciup_set_plms() と同じ働きをしますが、違いは1つのパラメータのみ設定できる点です。

hciup_set_plm($handle, 'VALUE', 'test value');


string hciup_get_plm(int $handle, string $name)

アイテムに設定したパラメータを取り出します。


void hciup_set_handle(string $name, int $handle)

アイテムのハンドルを任意な名前(文字列)で登録します。
登録されたアイテムのハンドルは、設定した名前でプログラム中のどこからでも取り出せます。


int hciup_get_handle(string $name)

設定したアイテムのハンドル名から、実際に使えるハンドルを返します。


string hciup_get_classname(int $handle)

ハンドルからアイテムのタイプを文字列で返します。


int hciup_dlg(int $handle)

ベースとなるウィンドウ。


void hciup_show(int $handle [, int $x=IUP_CENTER, int $y=IUP_CENTER])

ウィンドウを表示します。
第2、第3引数の X,Y を指定した場合、指定座標にウィンドウを表示します。
第2、第3引数が未入力の場合、画面中央に表示します。


void hciup_popup(int $handle [, int $x=IUP_CENTER, int $y=IUP_CENTER])

hciup_filedlg() hciup_messagedlg() などで使います。


void hciup_map(int $handle)



void hciup_unmap(int $handle)



void hciup_refresh(int $handle)



int hciup_button(string $title)

プッシュボタン。


int hciup_text(void)

エディットボックス。


int hciup_list(void)

リスト。

リストへデータをセットする時は、String型の数字をキーとして設定します。
hciup_set_plm($handle, '1', 'data1');
hciup_set_plm($handle, '2', 'data2');
しかし、下記のサンプルのようにキーが Integer型であっても内部で String型にキャストされるため問題にはなりません。
注意点は、0 からではなく 1 からスタートさせる必要があるということです。

▼サンプル
$ih = hciup_list();
foreach (array(null, 'data1', 'data2') as $key => $val) {
    if ($key) {
        hciup_set_plm($ih, $key, $val);
    }
}


void hciup_message(string $title, string $message)

メッセージボックス。


int hciup_hbox(int $handle ...)

横並びのレイアウトボックス。


int hciup_vbox(int $handle ...)

縦並びのレイアウトボックス。


void hciup_destroy(int $handle)

アイテムを削除します。


int hciup_multiline(void)

マルチラインテキストボックス。

hciup_text() でも MULTILINE=YES とパラメータを設定することで同じ効果を得る事ができます。


int hciup_frame(int $handle)



int hciup_spin(void)



int hciup_progressbar(void)



int hciup_tabs(int $handle ...)

タブ。


int hciup_canvas(void)



int hciup_label(string $title)

ラベル。
文字だけでなく、ビットマップ画像も表示できます。


int hciup_link(string $title, string $url)

WEBページへのリンク。
設定したURLを既定ブラウザで開きます。


int hciup_val(void)

ボリュームスイッチ。


int hciup_fill(void)



int hciup_radio(int $handle)

hciup_toggle() と組み合わせて使います。


int hciup_filedlg(void)

ファイルダイアログ。


int hciup_messagedlg(int $handle)

メッセージダイアログ。


int hciup_colordlg(void)

カラーダイログ。


int hciup_fontdlg(void)

フォントダイアログ。


int hciup_progressdlg(void)



int hciup_item(string $title)


int hciup_submenu(string $title, int $child)


void hciup_separator(void)

仕切り線。


int hciup_menu(int $handle ...)

メニュー。

▼例
$menu = hciup_menu(
                hciup_submenu('ファイル(&F)',
                      hciup_menu(
                          hciup_item('選択'),
                          hciup_separator(),
                          hciup_item('Close(&E)')
                      )
                )
            );


void hciup_set_global(string $name, int $handle)



string hciup_get_global(string $name)



int hciup_set_focus(int $handle)



int hciup_get_focus(void)



int hciup_get_int(int $handle, string $name)

hciup_get_plm() は文字列でデータを受け取りますが、これは int 型で受け取れます。

YES,NO,ON,OFF などを 1 と 0 の整数で受け取れます。


int hciup_toggle(string $title)

プッシュアンドキャンセラー型のボタン、ラジオボタン、チェックボックスはこれを使います。


int hciup_timer(int $handle)



void hciup_update(int $handle)



void hciup_globalkeypress(int $key_code, int $press)

キーボードで押されたキーを認識します。

第1引数には、キーコードが、第2引数では、キーが押された状態を得る事ができます。
キーを押し込んだ状態は 1、押された状態から放した状態を 0 で識別できます。

キーボードが押された場合に行いたい処理がある場合、この関数をプログラムの中に一つ書いてください。
そして、目的のキーが押された場合の処理を以下のように書きます。

◎ switch 文サンプル
function hciup_globalkeypress($code, $press)
{
    switch ($code) {
      case K_ESC:
          if (!$press) {
              hciup_close();
          }
          break;

      case K_cA:
          break;
      }
}

◎ if 文サンプル
function hciup_globalkeypress($code, $press)
{
    if ($code == K_ESC) {
        if (!$press) {
            hciup_close();
        }
    } elseif ($code == K_cA) {

    }
}

▼認識できるキーコード

シングル
K_PAUSE K_ESC K_HOME K_LEFT K_UP K_RIGHT K_DOWN K_PGUP K_PGDN K_END
K_MIDDLE K_Print K_INS K_Menu K_DEL K_F1 K_F2 K_F3 K_F4 K_F5
K_F6 K_F7 K_F8 K_F9 K_F10 K_F11 K_F12 K_LSHIFT K_RSHIFT K_LCTRL
K_RCTRL K_LALT K_RALT K_NUM K_SCROLL K_CAPS

Ctrl キーと同時押し
K_cA K_cB K_cC K_cD K_cE K_cF K_cG K_cH K_cI K_cJ K_cK K_cL K_cM K_cN K_cO
K_cP K_cQ K_cR K_cS K_cT K_cU K_cV K_cW K_cX K_cY K_cZ K_c1 K_c2 K_c3 K_c4
K_c5 K_c6 K_c7 K_c8 K_c9 K_c0

Shift キーと同時押し
K_sHOME K_sUP K_sPGUP K_sLEFT K_sMIDDLE K_sRIGHT K_sEND K_sDOWN K_sPGDN
K_sINS K_sDEL K_sSP K_sTAB K_sCR K_sBS K_sPAUSE K_sESC K_sF1
K_sF2 K_sF3 K_sF4 K_sF5 K_sF6 K_sF7 K_sF8 K_sF9 K_sF10
K_sF11 K_sF12 K_sPrint K_sMenu

Ctrl キーと同時押し
K_cHOME K_cUP K_cPGUP K_cLEFT K_cMIDDLE K_cRIGHT K_cEND K_cDOWN K_cPGDN
K_cINS K_cDEL K_cSP K_cTAB K_cCR K_cBS K_cPAUSE K_cESC K_cCcedilla
K_cF1 K_cF2 K_cF3 K_cF4 K_cF5 K_cF6 K_cF7 K_cF8 K_cF9
K_cF10 K_cF11 K_cF12 K_cPrint K_cMenu

コメント

この記事へのコメントは終了しました。