=encoding euc-jp
=head1 名前
Wx::WidgetMaker - wxPerlのためのCGI.pmのようなライブラリ
=head1 概要
use Wx::WidgetMaker;
$q = Wx::WidgetMaker->new(-parent => $frame);
# ページャーにコントロールを'print'する
$ctrl = $q->h1('H1 text');
$pagesizer = Wx::BoxSizer->new(wxVERTICAL);
$q->print($control, $pagesizer);
# あるいはStaticTextを'print'する
$ctrl1 = $q->print('Password: ');
# あるいはコントロールの配列リファレンスを'print'する
$ctrl2 = $q->password_field(
-name => 'password',
-default => 'blue',
-size => 50, # 文字数ではなくウィンドウの幅
-maxlength => 30,
);
$rowsizer = Wx::BoxSizer->new(wxHORIZONTAL);
$q->print([$ctrl1, $ctrl2], $rowsizer);
$pagesizer->Add($rowsizer);
=head1 説明
wxPerlを学習し始めるとき、どのウイジットがどんな機能を扱っているのかを
明確にわかるようにしようとしてイライラするかもしれません。
CGIを開発したことがあれば、Webブラウザをグラフィカルなユーザー・インターフェース
として利用することが悪くないことだということは、すぐにわかるでしょう:
あなたがHTML/CGI開発者として当然だと思う機能を実装することは複雑かもしれません。
このモジュールはwxPerlダイアログを、CGI.pmに似ているAPIを使うことによって
Perl CGIプログラマにとって、もっとフレンドリにしようとしています。
(特に、私が便利/適切だと考えたCGI.pmの:standardでエキスポートされるタグの
サブセットをサポートしています)
適用可能ところでは、妥当なCGI APIに忠実にあわせ、そうでなければ
なんらか直感的にわかるようなことをするようにしています。
フォーム関連のメソッド(popup_menu, textfield, 等)は、-nameパラメータを
必要とします。それはCGI.pmと同じ目的を果たします。
ユーザーがフォームから入力/選択した値は、$q->param('somename')を通して
アクセスすることができます。'somename'のところは-name引数で与えられたものです。
=head1 メソッド
以下にAPIのリファレンスを示します。一般的にメソッドは、
名前付きのパラメータ(-name => 'first')と並べられた順番で渡される
名前無しのパラメータの両方を取ります。オプションのパラメータは
それぞれのデフォルト値を持ちます。それは括弧の中の右側に並べます;
そうでなければ、そのパラメータは必須です。
=head2 new
コンストラクタ
I<パラメータ>
=over 4
=item * -parent
親ウィンドウ(Wx::Windowでなければなりません)。
=back
I<戻り値>
新しいWx::WidgetMaker オブジェクト
=head2 h1, h2, h3, h4, h5, h6
同じ名前のHTMLタグと同等。
これらのメソッドは、文字列パラメータをそれぞれ大きさの
太字フォントで表示します。C
が最も大きく、Cが最も
小さくなります。HTMLタグとは違い、テキストの前後に改行は
入らないことに注意してください。このため明示的にあなたの
行に改行を入れなければなりません。
I<パラメータ>
=over 4
=item * テキスト文字列
=back
I<戻り値>
Wx::StaticTextオブジェクト
=head2 textfield
I<パラメータ>
=over 4
=item * -name
textfield(テキストフィールド)の名前
=item * -default, -value ('')
textfield(テキストフィールド)のためのデフォルト・テキスト
=item * -size (-1)
textfield(テキストフィールド)のサイズ(幅)
=item * -maxlength (unimplemented)
ユーザーがそのtextfield(テキストフィールド)に入力できる最大文字数。
現在、これは実装されていません。
=back
I<戻り値>
Wx::TextCtrlオブジェクト
=head2 password_field
I<パラメータ>
=over 4
=item * -name
textfield(テキストフィールド)の名前
=item * -default, -value ('')
textfield(テキストフィールド)のためのデフォルト・テキスト
=item * -size (-1)
textfield(テキストフィールド)のサイズ(幅)
=item * -maxlength (unimplemented)
ユーザーがそのtextfield(テキストフィールド)に入力できる最大文字数。
=back
I<戻り値>
Wx::TextCtrl
=head2 textarea
I<パラメータ>
=over 4
=item * -name
textarea(テキストエリア)の名前
=item * -default, -value ('')
textarea(テキストエリア)のためのデフォルト・テキスト
=item * -rows (50)
高さ(ピクセル単位) (XXX: テキストの行数であるほうが望ましいかもしれません).
=item * -columns, -cols (100)
Width in pixels (XXX: テキストの文字数であるほうが望ましいかもしれません).
=back
I<戻り値>
Wx::TextCtrl
=head2 popup_menu
I<パラメータ>
=over 4
=item * -name
popup_menu(ポップアップメニュー)の名前
=item * -value, -values
そのメニューのための値の配列へのリファレンス。
=item * -default, -defaults (-valueの配列での先頭要素)
最初に選択されるメニューの値。
=item * -labels (-value の値)
-valuesでの各値をテキスト・ラベルに関連付ける
ハッシュ・リファレンス
=back
I<戻り値>
Wx::Choiceオブジェクト。
=head2 scrolling_list
I<パラメータ>
=over 4
=item * -name
scrolling_listのための名前。
=item * -value, -values
メニューのための値の配列へのリファレンス
=item * -default, -defaults
最初に選択されるメニューの値 (-valueの配列の先頭要素)
=item * -size (50)
ウィンドウの高さ
(XXX: 一度に表示される要素の数のほうが望ましいかもしれません)
=item * -multiple (false => デフォルト・スタイル)
もしユーザーが複数のメニュー要素を選択することができれば、True
=item * -labels (-valueの値)
-valuesでの各値をテキスト・ラベルに関連付ける
ハッシュ・リファレンス
=back
I<戻り値>
Wx::ListBoxオブジェクト
=head2 checkbox_group
B<このメソッドは、まだ実装されていません。>
I<パラメータ>
=over 4
=item * -name
checkbox_groupの名前
=item * -value, -values
ベースとなるチェックボックスの値のための値の配列へのリファレンス。
=item * -default, -defaults (どのボックスもチェックされません)
最初にチェックされている値。
=item * -linebreak (false => 水平)
垂直に並べてチェックボックスを表示するためにはtrue値を設定
してください。詳細は-rows と -cols のエントリをご覧ください。
=item * -labels (-valueの値)
-valuesの中のそれぞれ値と、テキストラベルを関連付ける
ハッシュ・リファレンス
=item * -rows (1)
-linebreakがfalseであれば、-rowsの値は表示する
最大行数になります。
=item * -cols (あるいは -columns) (1)
-linebreakがtrueであれば、-rowsの値は表示する
最大列数になります。
=item * -rowheaders
このパラメータは、まだ実装されていません。
=item * -colheaders
このパラメータは、まだ実装されていません。
=item * -nolabels (false => ラベルを表示)
何もラベルを表示したいためには(実際には、すべてのラベルで''を
表示するために)trueに設定してください。
=back
=head2 checkbox
I<パラメータ>
=over 4
=item * -name
チェックボックスのための必要とされる名前。
=item * -checked, -selected, -on (false => チェックされません)
最初にそのチェックボックスをチェックしておくためには、
これらのオプションのいずれかをtrue値にしてください。
=item * -value
このパラメータは何もしません。CGI.pmでは、'on'になっている
チェックボックスに関連付けられた値を設定するために使うことが
出来ます。しかしwxPerlでは、チェックボックスがチェックされて
いれば値はTRUE、チェックされていなければFALSEになります。
=item * -label (-name 引数)
ユーザに表示されるオプションのラベル。
=back
I<戻り値>
Wx::CheckBox オブジェクト。
=head2 radio_group
I<パラメータ>
=over 4
=item * -name
radio_groupに必須の名前。
=item * -value, -values
値の配列へのリファレンス。これらの値はラジオボタンの
ラベルとして表示されます。-labelsをご覧ください。
=item * -default (選択なし)
最初にチェックされている値。
=item * -linebreak (false => 水平)
チェックボックス(訳者注:ラジオボタンの間違いでしょう)を
垂直に並べるためには、これにtrue値を設定してください。
詳細は-rows と -cols エントリをご覧ください。
=item * -labels (-valuesを利用します)
-valuesと同義語です。CGI.pmでは、-valuesは各ラジオボタンを値を、
-labelsはラベルを与えます。wxPerlでは、ラジオボタンは関連付けられた
値を持ちません。そのため-valuesと-labels のどちらを使っても同じことです。
もし両方とも与えられると、-labelsが優先されます。
=item * -rows (1)
-linebreakがfalseであれば(あるいは与えられなければ)、-rowsの値は
表示する(最大)行数になります。
=item * -cols (or -columns) (1)
-linebreakがtrueであれば、-colsの値は
表示する(最大)列数になります。
=item * -rowheaders
このパラメータはまだ実装されていません。
=item * -colheaders
このパラメータはまだ実装されていません。
=item * -nolabels (false)
何もラベルを表示しないためには、これをtrueに設定してください。
=item * -caption ('')
このパラメータはCGI.pmへの追加です。しかしラジオボタンの
グループの周りに配置されるStaticBoxがあるので、ここでは便利です。
(好きか嫌いかに関わらず、Wx::RadioBoxはこうします)。
StaticBoxのためのラベルを指定するために-captionオプションを使って
ください。
どこかの時点で、私は個々のRadioBoxを使ったradio_groupを実装し、
StaticBoxでradio_groupを囲わないようなオプションを提供するかもしれません:
これにより-rowheaders と-colheadersも実装することができます。
=back
I<戻り値>
Wx::RadioBoxオブジェクト
=head2 submit
テキストがついたボタンを作成します。そのボタンには何も
イベント・ハンドラがつけられていないので、CGIフォームでの
submitボタンとは似ていないことに注意してください。
そのためデフォルトでは、ボタンをクリックしても何も起きません。
I<パラメータ>
=over 4
=item * -name
submitボタンに必須の名前。CGI.pmとは違い、この名前はボタンラベルとして
表示されません。これはwindow名です。こうしなければ-nameパラメータは、
他のメソッドと矛盾してしまいます。
=item * -value, -label ('Submit')
CGI.pmでは、-value (あるいは -label)が、ボタンが押されたとき
アプリケーションに"下で"渡される関連付けられた文字列を与えます。
ここでは、その代わりに-valueがボタンのラベルになります。
ラベル文字列を$button->GetLabel()で取り出すことが出来ることに注意
してください。
=back
I<戻り値>
Wx::Buttonオブジェクト
=head2 image_button
I<パラメータ>
=over 4
=item * -name
ボタンに必要な名前。
=item * -src
ボタン上のビットマップの位置を与えるファイル名。
絶対パスのファイル名か現在の作業ディレクトリからの
相対パスでのファイル名を与える必要があります。
現在では、以下の拡張子がついたファイル名をサポートしています
(wxWindowsがそれをコンパイルで入っているものとします):
.bmp, .gif, .xbm, .xpm, .jpg, .jpeg, .png, .pcx, .pnm, .tif, .tiff.
そうでなければ、おそらくセクメンテーション・フォルトになるでしょう。
=item * -align
このパラメータは実装されていません。
=back
I<戻り値>
Wx::BitmapButton。
=head2 print
これはCGI.pmのメソッドではありませんが(しかしApache.pmのメソッド(!)
ではあります :)、StaticTextオブジェクトを作成したり、Sizerに制御
オブジェクトを追加するためには役に立ちます。
I<パラメータ>
=over 4
=item * -add
このパラメータは文脈に合わせてオーバーロードされます。もし引数が
普通の文字列であれば、StaticTextオブジェクトが返されます。
もし引数がWx::Controlオブジェクト(TextCtrl、Choiceなど
他のWx::WidgetMakerの1つによって返された何か)やオブジェクトの
配列リファレンスであれば、そして-sizer引数がWx::Sizerであれば、
そのコントロールは直接sizerに追加されます。詳細については以下の
-sizerパラメータをご覧ください。
=item * -sizer (undef)
-add引数がWx::Controlであれば、オブジェクトは-sizer引数で指定された
Wx::Sizerに$sizer->Add($control)で追加されます。
もし-add引数がWx::Controlオブジェクトの配列リファレンスであれば、
すべてのオブジェクトは順番に$sizerに追加されます。
=item * -option (0)
Wx::Sizer::Addへの'option'パラメータ。
=item * -flag (0)
Wx::Sizer::Addへの'flag'パラメータ。
=item * -border (0)
Wx::Sizer::Addへの'border'パラメータ。
=back
I<戻り値>
-textが文字列であればWx::StaticTextオブジェクト、
あるいは-sizerが与えられていれば何らかのWx::Controlサブクラス
=head2 param
I<パラメータ>
=over 4
=item * ゼロまたは1つの文字列
paramの"setterバージョンがないことに注意してください。"
=back
I<戻り値>
何も引数が渡されなければ、全ての子供コントロールの名前のリストを
返します(それらが名前を持っていものとして。もしこのモジュールで
作られたのであれば持っています)。もし名前が渡されると、
リスト・コンテキストでは選択された値を返します。一方、
スカラー・コンテキストでは見つかった最初の値を返します。
=head1 作者
Copyright 2002, Scott Lanning .
All rights reserved.
This module is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 参考資料
L と L のPOD。
wxPerl メーリング・リスト