Maplet アプリケーションの作成
|
最初の Maplet
|
|
この Maplet は、テキスト Hello world を持つウィンドウを表示します。
全ての Maplets におけるトップレベルの要素は、要素 Maplet とならなくてはなりません。
>
|
with(Maplets[Elements]):
|
>
|
Maplets[Display]( Maplet( ["Hello world"] ) );
|
ウィンドウの隅にある [x] (閉じるを表すアイコン)がクリックされると、その終了および制御を行った Maplet は、Maple のセッションへ返されます。
注意: 閉じるを表すアイコンは、ウィンドウマネージャ毎に様々な種類があります。
|
|
階層化されたリスト
|
|
ある maplet は、ボックスレイアウト構造を用いて定義されます。ボックスレイアウト構造は、Maple の階層化されたリスト(リストのリスト)の概念に基づいています。Maple では、角括弧 ([ ]) で囲まれた、コンマ区切りの式からなる順に並んだ列のことを、リストと呼びます。
例:
角括弧で囲まれた、コンマ区切りの式からなる順に並んだ列のうち、それぞれの式がリストであるものを、階層化されたリストと呼びます。
例:
>
|
NestedList := [1, [2,3], [4, 5,6], 7, 8, [9,10]];
|
maplet を書く際に、テキストの文字列、ユーザプロンプト、テキストフィールドはそれぞれ、リスト内にある式として定義されます。
maplet ウィンドウの定義には、テキストの文字列、ユーザプロンプト、その他の要素を含む、メインリストが含まれます。
|
|
ボタンの追加
|
|
この例題では、それをクリックすると maplet を終了するという、OK ボタンが含まれています。そのボタンは、要素を用いて定義されます。この要素には、2 組の情報が含まれます:
この例題では、そのボタンがクリックされる際に、maplet は引数を持たない Shutdown アクション要素にアクセスします。
最初の maplet の例題内で、階層化されたリストはテキストボックスを持つウィンドウとして解釈されます。
ボタンを加えるためには、その階層化されたリストに、Button 要素を挿入します。この maplet 内では、テキストはボタンの横に表示されます。
>
|
with(Maplets[Elements]):
|
>
|
maplet2a := Maplet( [
["Hello world", Button("OK", Shutdown())]
] ):
Maplets[Display]( maplet2a );
|
このボタンをテキストの下 (つまり、2 行目) に配置するという指定を行うためには、テキストとボタンを階層化されたリスト内の別々のリストに配置します。
>
|
with(Maplets[Elements]):
|
>
|
maplet2b := Maplet( [
"Hello world",
Button("OK", Shutdown())
] ):
Maplets[Display]( maplet2b );
|
|
|
タイトルの追加
|
|
この例題では、タイトルがウィンドウに追加されます。ボタンの追加の例題内で、階層化されたリストは、デフォルトではウィンドウとして解釈されます。デフォルト値でないオプションを指定するためには、明示的に Window 要素を含める必要があります。ウィンドウのタイトルを指定するためには、階層化されたリストを Window 要素で囲みます。
>
|
with(Maplets[Elements]):
|
>
|
maplet3 := Maplet( Window( 'title'= "3rd", [
"Hello world",
Button("OK", Shutdown())
] ) ):
Maplets[Display]( maplet3 );
|
|
|
ユーザ入力の取得
|
|
この例題には、入力フィールドが含まれています。これには 2 つのボタンがあります:
•
|
O K - maplet を終了し、入力テキストを Maple のセッションへ返す。
|
•
|
Clear - 入力フィールドの値を "" に再設定する。
|
maplet 内に、TextField 要素を挿入します。入力フィールドは、その値が返される、参照を必要とします。maplet 内の要素には、要素の索引の中に参照として配置する(例:TextField[TF1]() )ことで、個々の識別子が与えられます。
ユーザが Clear ボタンをクリックする際にその入力フィールドの値を消去するためには、SetOption アクション要素を使用します。
>
|
with(Maplets[Elements]):
|
>
|
maplet4 := Maplet( Window( 'title'="4th", [
"Enter something:",
TextField['TF1'](),
[Button("OK", Shutdown(['TF1'])), Button("Clear", SetOption('TF1' = ""))]
] ) ):
Maplets[Display]( maplet4 );
|
注意: 戻り値は、ユーザが入力した値に対応する文字列を含む、リストとなります。Shutdown アクション要素内で複数の参照が与えられる場合には、文字列のリストが返されます。
|
|
Maplet ウィンドウでの出力の戻し
|
|
この例題では、出力フィールドに Maple エンジンを呼び出す出力を表示します。maplet は、ユーザに被積分関数と積分変数を問い掛けます。ユーザが Integrate ボタンをクリックすると、maplet は int を呼び出してその積分を計算し、出力ボックス内に不定積分を表示します。maplet が終了されると、被積分関数の値、積分変数、および不定積分が Maple のセッションに返されます。
2 つの入力フィールド、TF1 および TF2 が必要となります。出力は、高さ 3、幅 40 の TextBox 要素 TB1 内に配置されます。ユーザが出力を編集することは許すべきではありません: オプション not editable を使用します。
要素 Evaluate( TB1 = 'int( TF1, TF2 )' ) は、TF1 および TF2 の内容を用いて int を呼び出し、結果をボックス TB1 内に配置します。
>
|
with(Maplets[Elements]):
|
>
|
maplet5 := Maplet( Window( 'title'="5th", [
["Integrand: ", TextField['TF1']()],
["Variable of Integration: ", TextField['TF2'](3)],
TextBox['TB1']('editable' = 'false', 3..40 ),
[Button("Integrate", Evaluate('TB1' = 'int(TF1, TF2)')),
Button("OK", Shutdown(['TF1', 'TF2', 'TB1'])),
Button("Clear", SetOption('TF1' = ""))]
] ) ):
Maplets[Display]( maplet5 );
|
|
|
エラーの取り扱い
|
|
前の例題 (maplet5) では、有用なエラーメッセージを用意していません。例えば、データの入力時にフィールドを省略するという場合です。
以下に示す maplet では、Maplets[Tools] パッケージ内にある Get ルーチンを使用します。Get ルーチンは、引数の文脈と、その型が適切であるかどうかをチェックします。
この例題では、初期手続きが maplet に追加されます。maplet は、 MyInt という手続き内でエラーに関するチェックを行った後で、入力値の評価を行います。
>
|
with(Maplets[Elements]):
|
>
|
MyInt := proc()
local integrand, var;
use Maplets[Tools] in
integrand := Get( 'TF1'::algebraic );
var := Get( 'TF2'::name );
end use;
int( integrand, var );
end proc:
|
>
|
maplet6 := Maplet( Window( 'title'="6th", [
["Integrand: ", TextField['TF1']()],
["Variable of Integration: ", TextField['TF2'](3)],
TextBox['TB1']( 'editable' = 'false', 3..40 ),
[Button( "Integrate", Evaluate('TB1' = "MyInt" ) ),
Button( "OK", Shutdown(['TF1', 'TF2', 'TB1'] ) ),
Button( "Clear", SetOption('TF1' = "" ) )]
] ) ):
Maplets[Display]( maplet6 );
|
|
|
ヘルプダイアログとプロットの追加
|
|
この例題では、maplet は以下の内容を含みます:
•
|
プロットの右端の点を示すために使用される、スライダーを持つプロットウィンドウ
|
•
|
表示モニタ上で maplet が縮小された場合に、ユーザがボタンを確認できるようにするための、垂直方向のスクロールバー
|
プロットウィンドウは、Plotter 要素を用いて定義されます。プロットは、Evaluate( PL1 = 'plot([TF1, TB1], TF2=0..SL1)' ) 要素を実行する、Plot ボタンをユーザがクリックする際に表示されます。
スライダーは、Slider 要素を用いて実行されます。スライダーの値は、1 から 20 までの様々な値をとり、そのデフォルト値は 5 となります。
maplet 内で MessageDialog 要素を参照する RunDialog アクション要素は、ヘルプダイアログを表示します。
>
|
with(Maplets[Elements]):
|
>
|
maplet7 := Maplet( Window( 'title'="7th", BoxColumn('vscroll'='always',
["Integrand: ", TextField['TF1']()],
["Variable of Integration: ", TextField['TF2'](3)],
TextBox['TB1']( 'editable' = 'false', 3..40 ),
Plotter['PL1'](),
Slider['SL1']( 0..20, 5, 'showticks', 'majorticks'=5, 'minorticks'=1, 'visible'='false', Evaluate( 'PL1' = 'plot([TF1, TB1], TF2=0..SL1)' ) ),
[Button("Integrate", Action(Evaluate('TB1' = 'int(TF1, TF2)'), SetOption('B1'(enabled)='true'))),
Button("OK", Shutdown(['TF1', 'TF2', 'TB1'])),
Button("Clear", Action(SetOption('TF1' = ""), SetOption('TF2' = ""), SetOption('TB1' = ""), SetOption('B1'(enabled)='false'), SetOption('SL1'('visible')='false'), Evaluate( 'PL1' = 'plot(undefined, x=0..SL1)' ))),
Button("Help", RunDialog('MD1')),
Button['B1']("Plot", 'enabled'='false', Action( SetOption('SL1'('visible')='true'), Evaluate( 'PL1' = 'plot([TF1, TB1], TF2=0..SL1)' ) ) )]
) ),
MessageDialog['MD1']( "An expression which, being integrated, produces a given integral.", 'type'='information' ) ):
Maplets[Display](maplet7);
|
|
|
その他の要素
|
|
Maplets パッケージ内には、多くの要素があります。以下の節では、最も重要なもののいくつかについて、議論します。
|
ウィンドウボディ要素
|
|
|
Button
|
|
ボタンはユーザにより選択され、ある動作を引き起こします。ボタンは、見出しを持ちますが、値は持ちません。true または false の値のいずれかをとるトグルボタンとは、異なります。
>
|
Maplets[Display]( Maplet( [
Button("OK", Shutdown())
] ) );
|
|
|
CheckBox
|
|
チェックボックスは、true または false の値をとります。
>
|
Maplets[Display]( Maplet( [
[CheckBox['ChB1']( 'value' = 'true' )],
[Button("OK", Shutdown(['ChB1']))]
] ) );
|
|
|
ComboBox
|
|
コンボボックスは、ユーザが見出しから選択するか値を入力するかのいずれかの方法で指定した、文字列のリストとなります。コンビネーションボックスのデフォルト値は、'value' = "string" オプションを用いて設定されます。以前ユーザが文字列を選択していると、コンビネーションボックスの値は、最近選択された文字列となります。コンボボックスは、オブジェクトのリストが可能で有効な見出し全てを含んでいない場合に、有用です。
>
|
Maplets[Display]( Maplet( [
ComboBox['CoB1']( 'value' = "blue", ["red", "orange", "yellow", "green", "blue", "violet"] ),
Button("OK", Shutdown(['CoB1']))
] ) );
|
|
|
DropDownBox
|
|
ドロップダウンボックスは、ユーザが選択する文字列のリストとなります。コンビネーションボックスのデフォルト値は、'value' = "string" オプションを用いて設定されます。そうでない場合には、ボックス内の最初の文字列がデフォルトとなります。以前ユーザが文字列を選択していると、コンビネーションボックスの値は、最近選択された文字列となります。受け付け可能な見出しの集合が、正しく定義されている場合には、コンボボックスを用いるよりもドロップダウンボックスのほうが優れています。
>
|
Maplets[Display]( Maplet( [
DropDownBox['DDB1']( 'value' = "Victoria", [
"Victoria", "Edmonton", "Regina", "Winnipeg", "Toronto", "Quebec City",
"Fredericton", "Halifax", "Charlottetown", "St. John's", "Whitehorse",
"Yellowknife", "Iqaluit"] ),
Button("OK", Shutdown(['DDB1']))
] ) );
|
|
|
Label
|
|
ラベルは、テキストまたは画像を含みます。そのテキストに対しては、ユーザが選択または変更を行うことはできません。レイアウト内では、文字列は自動的に Label 要素で囲まれますが、標準でないフォントが使用される場合には、明示的に Label 要素を指定する必要があります。
>
|
Maplets[Display]( Maplet( [
"Standard text",
Label( "Italicized text", 'font' = Font( helvetica, italic, 25 ) ),
Button("OK", Shutdown())
] ) );
|
|
|
ListBox
|
|
リストボックスは、ユーザにリストから零または複数の見出しを選択させます。複数の選択を行うためには、リスト内の項目をクリックする間、ユーザは [Ctrl] キーを押し続ける必要があります。リストボックスからの結果は、Maplets[Tools][ListBoxSplit] ルーチンを用いて分割される、コンマで区切られたリストとなります。
>
|
result := Maplets[Display]( Maplet( [
ListBox['LB1']( 'value' = "Victoria", [
"Victoria", "Edmonton", "Regina", "Winnipeg", "Toronto", "Quebec City",
"Fredericton", "Halifax", "Charlottetown", "St. John's", "Whitehorse",
"Yellowknife", "Iqaluit"] ),
Button("OK", Shutdown(['LB1']))
] ) ):
if result <> NULL then
Maplets[Tools][ListBoxSplit]( result[1] );
end if;
|
|
|
MathML Viewer
|
|
MathMLViewer 要素は、MathML を表示します。デフォルト値が MathML の式ではないならば、部分式の割り当てが、有効なMathML の文字列となる必要があります。
>
|
Maplets[Display]( Maplet( [
"Enter some expression to display in MathML:",
TextField['TF1'](),
MathMLViewer['MMLV1']( 'value' = x^2 - 4*x + 3 ),
[Button("Display", Evaluate( 'MMLV1' = 'MathML[Export](TF1)' ) ), Button("OK", Shutdown())]
] ) );
|
|
|
Plotter
|
|
Plotter 要素は、2-D または 3-D プロットのいずれかを表示します。
>
|
Maplets[Display]( Maplet( [
"Enter some expression to plot on x=0..10:",
TextField['TF1']( 'value' = x^2 - 4*x + 3),
Plotter['PL1']( 'value' = plot( x^2 - 4*x + 3, x=0..10 ) ),
[Button("Display", Evaluate( 'PL1' = 'plot(TF1, x=0..10)' ) ), Button("OK", Shutdown())]
] ) );
|
|
|
RadioButton
|
|
チェックボックスのように、ラジオボタンも true または false の値をとります。ラジオボタンが( ButtonGroup 要素で定義される)ボタングループの一部である場合には、ほとんどのボタンが値 true を持ちます。
>
|
Maplets[Display]( Maplet( [
[RadioButton['RB1']( "1st", true, 'group' = BG1 ), RadioButton['RB2']( "2nd", 'group' = 'BG1' )],
[Button("OK", Shutdown(['RB1', 'RB2']))]], ButtonGroup['BG1']() ) );
|
|
|
Slider
|
|
スライダーは、整数値の値を取ります。オプション majorticks は数字のついた目盛りが表示される頻度を、minorticks は小さな数字なしの目盛りが表示される頻度を、それぞれ定義します。
>
|
Maplets[Display]( Maplet( [
"Select an integer:",
Slider['SL1']( 10, 0..20, 'majorticks'=10, 'minorticks'=2, 'showticks' ),
Button("OK", Shutdown(['SL1']))
] ) );
|
|
|
Table
|
|
表は、組織された書式でテキストの情報を表示するために使用されます。
>
|
IL := [sin(x), cos(x), tan(x), sec(x), csc(x), cot(x)]:
Maplets[Display]( Maplet( [
Table( ["integrand", "integral"], [seq( [i, int( i, x )], i = IL )], 'width'=400 ),
Button("OK", Shutdown())
] ) );
|
|
|
Text Box
|
|
テキストボックスは、入力、出力、ラベルに関する、複数行のボックスを作成します。
テキストボックスの内容は選択が可能です。また、テキストボックスを右クリックすると、ポップアップメニューが表示されます。
>
|
with(Maplets[Elements]):
maplet := Maplet([
["Enter text: ", BoxCell(TextBox['IB1'](3..30), 'as_needed')],
[Button("OK", Shutdown(['IB1'])), Button("Cancel", Shutdown())]
]):
Maplets[Display](maplet);
|
テキストボックスは、ユーザへの情報の表示と、ユーザからの情報の取得の両方で使用されます。
>
|
with(Maplets[Elements]):
|
>
|
Maplets[Display]( Maplet( [
"Enter an expression to integrate w.r.t. x:",
[TextBox['TF1']('value' = x^2 - 4*x + 3)],
[Button("Integrate", Evaluate( 'TF1' = 'int(TF1, x)' ) ), Button("OK", Shutdown(['TF1']))]
] ) );
|
出力に関するテキストボックスを作成するためには、editable オプションを false に設定します。
>
|
with(Maplets[Elements]):
maplet := Maplet([
[TextBox['IB1']('editable'='false', "This text is inside the TextBox. You cannot type in this box.")],
[Button("OK", Shutdown(['IB1'])), Button("Cancel", Shutdown())]
]):
Maplets[Display](maplet);
|
|
|
Text Field
|
|
テキストフィールドは、1 行の入力または出力フィールドを作成します。テキストフィールドは、ユーザへの情報の表示と、ユーザからの情報の取得の両方で使用されます。テキストフィールドの内容は選択が可能です。また、テキストフィールドを右クリックすると、ポップアップメニューが表示されます。
>
|
with(Maplets[Elements]):
|
>
|
Maplets[Display]( Maplet( [
"Enter an expression to integrate w.r.t. x:",
TextField['TF1']( 'value' = x^2 - 4*x + 3),
[Button("Integrate", Evaluate( 'TF1' = 'int(TF1, x)' ) ), Button("OK", Shutdown(['TF1']))]
] ) );
|
|
|
Toggle Button
|
|
チェックボックスやラジオボタンのように、トグルボタンも true または false の値をとります。
>
|
Maplets[Display]( Maplet( [
[ToggleButton['RB1']( "1st", true ), ToggleButton['RB2']( "2nd" )],
Button("OK", Shutdown(['RB1', 'RB2']))]) );
|
|
|
|
ダイアログ要素
|
|
Maplets のダイアログ要素は、事前に定義されたレイアウトを持っています。ダイアログについては、製作者が要素を指定することはできません。これが、ボタンやレイアウト要素といった、他の要素を含むことのできる window 要素との相違点です。ほとんどの場合、ダイアログ要素は( MessageDialog 要素の場合を除き)値を持ちます。そしてその結果は、先の処理において maplet で使用することが可能です。
|
Alert Dialog
|
|
警告のダイアログでは、OK または Cancel のいずれかを選択することで、ユーザが表題に対して対応することができます。
>
|
Maplets[Display]( Maplet( AlertDialog(
"Assuming x > 0 leads to a contradiction",
'onapprove' = Shutdown('true'),
'oncancel' = Shutdown("FAIL")
) ) );
|
|
|
Color Dialog
|
|
カラーダイアログでは、色見本、または RGB および HSB パレットから、ユーザが色を選択します。
>
|
Maplets[Display]( Maplet( ColorDialog['CD1'](
'onapprove' = Shutdown(['CD1']),
'oncancel' = Shutdown()
) ) );
|
|
|
Confirm Dialog
|
|
確認のダイアログでは、Yes, No または Cancel のいずれかを選択することで、ユーザが表題に対して対応することができます。
>
|
Maplets[Display]( Maplet(ConfirmDialog( 'question', "Is x > 0 ?",
'onapprove' = Shutdown('true'),
'ondecline' = Shutdown('false'),
'oncancel' = Shutdown("FAIL")
) ) );
|
|
|
File Dialog
|
|
ファイルダイアログでは、ユーザがファイルを選択します。
>
|
Maplets[Display]( Maplet( FileDialog['FD1'](
'onapprove' = Shutdown(['FD1']),
'oncancel' = Shutdown()
) ) );
|
|
|
Input Dialog
|
|
入力のダイアログでは、テキストを入力して OK を選択するか、または Cancel を選択するかのいずれかで、ユーザが表題に対して対応することができます。
>
|
Maplets[Display]( Maplet(
InputDialog['ID1']("Enter an integer",
'onapprove'=Shutdown(['ID1']),
'oncancel'=Shutdown()
)
) );
|
|
|
Message Dialog
|
|
メッセージダイアログは、ユーザが OK ボタンを選択することで失われる、表題を表示します。
>
|
Maplets[Display]( Maplet( MessageDialog(
warning,
"Contradictory assumptions on `x`",
'onapprove'=Shutdown()
) ) );
|
|
|
Question Dialog
|
|
質問のダイアログでは、Yes または No のいずれかを選択することで、ユーザが質問に対して対応することができます。
>
|
Maplets[Display]( Maplet( QuestionDialog("Is x > 0?",
'onapprove'=Shutdown('true'),
'ondecline'=Shutdown('false')
) ) );
|
|
|
|
メニュー要素
|
|
メニューバーをウィンドウに挿入することが可能です。メニューバーには、メニュー項目とセパレータから作成される、任意の数のメニューを含むことが可能です。
>
|
with(Maplets[Elements]):
|
>
|
Maplets[Display]( Maplet(
Window('title'="Integration and Differentiation", 'menubar'='MB1', ["Enter an expression and select a command from the menu:",[TextField['TF1']()], Button("Exit", Shutdown("Closed from button", ['TF1']))]),
MenuBar['MB1'](
Menu("File", MenuItem("Close", Shutdown("Closed from menu", ['TF1']))),
Menu("Commands",
MenuItem("Integrate", Evaluate('TF1' = 'int(TF1, x)') ),
MenuSeparator(),
MenuItem("Differentiate", Evaluate('TF1' = 'diff(TF1, x)'))
)
)
) );
|
|
|
ツールバー要素
|
|
ツールバーをウィンドウに挿入することが可能です。ツールバーには、任意の数のツールバーボタンとセパレータを含むことが可能です。
>
|
Maplets[Display]( Maplet(
Window('toolbar'='TB1', [TextField['TF1'](), Button("OK", Shutdown(['TF1']))]),
ToolBar['TB1'](
ToolBarButton("Integrate", Evaluate('TF1' = 'int(TF1, x)') ),
ToolBarSeparator(),
ToolBarButton("Differentiate", Evaluate('TF1' = 'diff(TF1, x)'))
)
) );
|
|
|
コマンド要素
|
|
Action 要素は、任意の数のコマンド要素を含みます。ある動作が実行されると、各コマンド要素が順に実行されます。
|
Close Window
|
|
ウィンドウを閉じます。
>
|
with(Maplets[Elements]):
maplet := Maplet('onstartup' = 'A1',
Window['W1']("1",
[Button("Run New Window", RunWindow('W2')),
Button("Exit", Shutdown("1"))]
),
Window['W2']("2",
[Button("Close This Window", CloseWindow('W2')),
Button("Exit", Shutdown("2"))]
),
Action['A1'](RunWindow('W1'))
):
Maplets[Display](maplet);
|
|
|
Evaluate
|
|
Maple の式を評価します。
>
|
Maplets[Display]( Maplet( [
["Enter an expression", TextField['TF1']('width' = 30)],
[
"Differentiate w.r.t. x:",
Button("Calculate", Evaluate('TF1' = 'diff(TF1, x)')),
Button("OK", Shutdown(['TF1']))
]
] ) );
|
|
|
RunDialog
|
|
ダイアログ要素を表示します。
>
|
Maplets[Display]( Maplet(
Window([
[TextField['TF1']()],
[
Button("Diff w.r.t. x", Evaluate('TF1' = 'diff(TF1, x)')),
Button("Help", RunDialog('MD1')),
Button("OK", Shutdown(['TF1']))
]
]),
MessageDialog['MD1']("See ?diff for help with the differentiation command")
) );
|
|
|
RunWindow
|
|
ウィンドウ要素を表示します。
>
|
with(Maplets[Elements]):
maplet := Maplet('onstartup' = 'A1',
Window['W1']('title' = "Select Method", 'layout' = 'BL0'),
BoxLayout['BL0'](
BoxColumn(
BoxRow("Select a method"),
BoxRow(
Button("Differentiation", RunWindow('W2')),
Button("Integration", RunWindow('W3'))
)
)
),
Window['W2']('title'="Differentiation", [
[
"Enter an expression:",
TextField['TF1']()
],
[
Button("Differentiate with respect to x", Evaluate('TF1' = 'diff(TF1, x)')),
Button("Exit", Shutdown(['TF1']))
]
]),
Window['W3']('title'="Integration", [
[
"Enter an integrand:",
TextField['TF2']()
],
[
Button("Integrate with respect to x", Evaluate('TF2' = 'int(TF2, x)')),
Button("Exit", Shutdown(['TF2']))
]
]),
Action['A1'](RunWindow('W1'))
):
Maplets[Display](maplet);
|
|
|
SetOption
|
|
maplet のオプションに値を設定します。
>
|
Maplets[Display]( Maplet( [
"Enter some text:",
TextField['B1'](20),
TextField['B2'](20, 'editable'='false'),
[
Button("Clear 1st Field", SetOption('target' = 'B1', 'value' = "")),
Button("Copy to 2nd Field", SetOption('target' = 'B2', Argument('B1'))),
Button("Return 2nd Field", Shutdown(['B2']))
]
] ) );
|
|
|
Shutdown
|
|
maplet を閉じ、maplet 内のある値またはオプションの値を可能な限り返します。
>
|
Maplets[Display](Maplet([[Button("OK", Shutdown())]]));
|
|
|
|
レイアウト要素
|
|
|
Box Layout
|
|
ボックスレイアウトは、列または行内にオブジェクトを配置します。列および行は階層化が可能です。水平および垂直方向のいずれでも配置が行えますが、両方同時の指定はできません。Window または Maplet 要素内にあるリストは、ボックスレイアウトとなるように仮定されています。
>
|
Maplets[Display]( Maplet(
Window(["A", [["B", "C"], "D", [["E", "F", "G"], "H", "I"], "J"], Button("OK", Shutdown())])
) );
|
|
|
Grid Layout
|
|
格子レイアウトは、垂直および水平の両方の配置を持つ、四角い格子となります。
>
|
Maplets[Display]( Maplet(
Window([GridLayout( [["A", "B"], ["C", "D"], ["E", "F"]] ), Button("OK", Shutdown())])
) );
|
|
|
|
|