FvwmScript - グラフィックユーザインターフェースを構築する モジュール |
FvwmPager は fvwm によって実行されなければならず、コマンド ラインからの呼び出しでは動作しません。 |
FvwmScript は、デストップアクセサリ、ポップアップメニュー のついたボタンパネル、流行の入力部分などの、多くのグラフィ カルなアプリケーションを作り出すことができるようにするよう なモジュールです。起動時に、FvwmScript はコマンドライン で 指定したファイルを読みます。このファイルは、スクリプトを含 んでいますが、スクリプトは、Fvwm の設定ファイル内には入 れ ません。 |
FvwmScript は、‘Module FvwmScript スクリプト名’ のような行 を .fvwmrc ファイルに入れることで呼び出せます。 FvwmScript で 使 用されるすべてのスクリプトは、.fvwmrc 内のコマンド行 ‘*FvwmScriptPath スクリプトディレクトリパス’ で指 定 し た ディレクトリに置きます。 FvwmScript を fvwm の初期化の間に 起動させる場合はそれ自身を一つの行として置くことができます し、 あ るいはそれを後で呼び出すためにメニューやマウスボタ ン、キーストロークなどに割り当てることも可能 で す。 Fvwm は、設定オプションの ModulePath で指定されたディレクトリを 探して FvwmScript をみつけようとします。 あなたの .fvwmrc ファイルの ModulePath に、 FvwmScript の パスが設定されているか確認してください。 |
FvwmScript は、特別なプログラミング言語を使います。スクリ プトは 4 つの部分から構成されます。ヘッダ (heading) は、 ウィ ン ドウの一般的な特徴とすべてのウィジェットに関するデ フォルトの属性を持ちます。 2 番目の部分は、スクリプトの 起 動時に実行される命令 (instruction) を持っています。 3 番目 の部分は、1 秒毎に実行される周期的な作業を持ちます。最後の 部 分は、ウィジェットの記述です。ウィジェットは、11 種類の 項目から構成されます: テキストラベル、一行入力、ラジオボタ ン、 チェックボックス、プッシュボタン、水平/垂直スクロール バー、長方形、ポップアップメニュー、swallowexec、ミニス ク ロールバー。 |
書式は以下の通りです: |
WindowTitle string |
このオプションは、ウィンドウタイトルを設定します。 |
WindowSize width height |
このオプションは、ウィンドウサイズを設定し ま す。 width と height は数値です。 |
WindowPosition x y |
このオプションは、ウィンドウの位置を設定します。 x と y は数値です。 |
ForeColor {color} |
このオプションは、すべてのウィジェットに対す る デ フォルトの前景色を設定します。 |
BackColor {color} |
こ の オプションは、すべてのウィジェットに対するデ フォルトの背景色を設定します。 |
HilightColor {color} |
このオプションは、すべてのウィジェットに対す る デ フォルトのハイライト色を設定します。 |
ShadowColor {color} |
こ の オプションは、すべてのウィジェットに対するデ フォルトの影の色を設定します。 |
Font {font} |
このオプションは、すべてのウィジェットに対す る デ フォルトのフォントを設定します。 |
この部分は、起動時に実行される命令を持っています。例: Init Begin Do "Exec cat tada.voc > /dev/dsp" WarpPointer 1 Set $ToDo=Restart End これらの命令は、すべての起動時に、音声を再生し、ポインタを ウィジェット 1 へ移動し、$ToDo を "Restart" に初期化 し ま す。 |
この部分は、毎秒実行される命令を持ちます。例: Periodic Task Begin If (RemainderOfDiv (GetTime) 10)==0 Then Do {Exec xcalc} End この例は、xcalc を 10 秒毎に立ち上げる方法を示しています。 |
スクリプトの 2 番目の部分は、プログラム内で使用されるす べ て の ウィジェットに対する記述を持ちます。ウィジェットのキ ジュツは、2 つの部分からできています。最初の部分は初期属性 を 記 述し、2 番目の部分は、ウィジェットがメッセージを受け とったときに実行される命令を持ちます。すべてのウィジェット はメッセージを送受信できます。すべてのメッセージは、数で特 定されます。メッセージ "UserAction" は、ユーザがウィジェッ トを変更したときに、そのウィジェットに送信されます。書式は 以下の通りです: |
id |
||
# ウィジェットの ID を設定 |
Property |
文字列 |
||
高さ |
||
x y |
||
{ 文字列 } |
||
整数 |
||
整数 |
||
整数 |
||
文字列 |
||
{ 色 } |
||
{ 色 } |
||
{ 色 } |
||
{ 色 } |
||
Hidden または NoReliefString |
オプション ’Flags’ は、そのウィジェットを隠す (hidden) か 否か、そして文字列を浮き彫り (relief) つきで書くか否か、を 指定するのに使います。 Main Case Message of SingleClic: Begin # ウィジェットがメッセージ "SingleClic" を # 受け取ったときに実行される命令のリスト。 # このメッセージはユーザが発生させる。 End 1: Begin # ウィジェットがメッセージ 1 を # 受け取ったときに実行される命令のリスト。 End End |
ウィジェットには 15 種類の型があります。 |
ItemDraw: アイコン、または文字列を表示。 |
Title: 表示する文字列。 Icon: 表示するアイコン。 |
PushButton: アイコン、または文字列つきのプッシュボタンを表 示。 |
Title: この文字列は、以下の書式を持ちます: {Title of the button|Option 1|Option 2|Option3|...|Option N}。 "Option 1|Option 2|...|Option N" は、右ボタン が 押 されたときに表示されるポップアップメニューで す。 Icon: 表示するアイコン。 |
RadioButton: 文字列つきのラジオボタンを表示。 |
Title: ラジオボタンのタイトル。 Value: Value が 1 ならボックスはチェックされ、それ 以外はそうされません。 |
CheckBox: 文字列つきのチェックボックスを表示。 |
Title: チェックボックスのタイトル。 Value: Value が 1 ならボックスはチェックされ、それ 以外はそうされません。 |
TextField: 文字列入力フィールドを表示。これは 1 行文字列の 編集に使えます。 |
Title: 文字列フィールドの中身。 Value: 入力点の位置。 |
HScrollBar: 水平スクロールバーを表示。 |
Value: つまみの位置。 MaxValue: Value の上の限界。 MinValue: Value の下の限界。 |
VScrollBar: 垂直スクロールバーを表示。 |
Value: つまみの位置。 MaxValue: Value の上の限界。 MinValue: Value の下の限界。 |
MiniScrollBar: とても小さい垂直スクロールバーを表示。 |
Value: つまみの位置。 MaxValue: Value の上の限界。 MinValue: lower limit of Value. |
Rectangle: 長方形を表示。このウィジェットは、ウィンドウの 飾りに使えます。 |
SwallowExec: このウィジェットは、FvwmScript にあるプロセス を生成させ、名前かリソースが Title に等しい最初のウィンド ウを捕み取り、それをスクリプトウィンドウ内に表示させます。 |
Title: 捕み取ってスクリプトウィンドウ内に表示す る ウィンドウの名前を指定。 SwallowExec: プロセスを生成するために実行するコマ ンドラインを指定。モジュールも swallow できます。 Value: 境界の見た目を指定。-1, 0, 1 のいずれかが指 定可能。 |
PopupMenu: ポップアップメニューを表示。 |
Value: どのオプションが選択されるのかを指定。 Title: Title は、 以下の書式を持ちます: {Option 1|Option 2|...|Option N}。 "Option 1|Option 2|...|Option N" は、マウスボタンが押されたときに表 示されるポップアップメニューです。 |
HDipstick: 水平ものさしを表示。このウィジェットはディスク 使用量の表示に使えます。 |
Value: ものさしの現在の値を指定。 MinValue: ものさしの最小値を指定。 MaxValue: ものさしの最大値を指定。 |
VDipstick: 垂直ものさしを表示。 |
Value: ものさしの現在の値を指定。 MinValue: ものさしの最小値を指定。 MaxValue: ものさしの最大値を指定。 |
List: 一覧を表示。一覧は、ユーザに色々なオプションからの選 択をさせます。 |
Value: どのオプションが選択されるのかを指定。 Title: Title はリストに表示されるオプションを含 み ま す。 その書式は以下の通りです: {Option 1|Option 2|...|Option N}。すべてのメニューはウィンドウの 上 に表示されます。 |
Menu: ユーザにオプションを選択させるメニューを表示。 |
Value: どのオプションが選択されるのかを指定。 Title: Title はメニューに表示されるオプションを含 みます。その書式は以下の通りです: {Option 1|Option 2|...|Option N}。 |
以下は、すべての命令の説明です。 |
HideWidget id : 番号 id のウィジェットを隠します。 |
ShowWidget id: 番号 id のウィジェットを表示。 |
ChangeValue id1 id2: 番号 id1 のウィジェットの値を id2 に 設定。 |
ChangeMaxValue id1 id2: 番号 id1 のウィジェットの最大値を id2 に設定。 |
ChangeMinValue id1 id2: 番号 id1 のウィジェットの最小値を id2 に設定。 |
ChangeTitle id1 id2: 番号 id1 のウィジェットのタイトルを id2 に設定。 |
ChangeIcon id1 id2: 番号 id1 のウィジェットのアイコンを id2 に設定。 |
ChangeForeColor id1 {color}: 番号 id1 のウィジェットの前景 色を id2 に設定。 |
ChangeBackColor id1 {color}: 番号 id1 のウィジェットの背景 色を id2 に設定。 |
.IP "ChangePosition id1 x y: 番号 id1 のウィ ジェットを位置 (x,y) へ移動。" |
ChangeSize id1 width height: 番号 id1 のウィジェットのサイ ズを (width,height) に設定。 |
ChangeFont id1 newfont: 番号 id1 のウィジェットのフォント を newfont に設定。 |
WarpPointer id: マウスポインタを番号 id のウィジェット内へ 移動。 |
WriteToFile filename {str1} {str2} ...: ファイル filename にすべての引数 str1, str2, ... をつなげた文字列を書き出し ます。 |
Do {str1} {str2} ...: すべての引数 str1, str2, ... をつな げたコマンドを実行。 |
Set $var={str1} {str2} ...: すべての引数を文字列につなげ て、変数 $var にその文字列を設定。 |
Quit: プログラムを終了。 |
SendSignal id1 id2: 番 号 id2 のメッセージをウィジェット id1 に送信。 |
SendToScript id_script {str11} {str2} ...: ID id_script の スクリプトにメッセージを送信。このメッセージは str, str2, ... を連結したもの。 |
コマンドのほどんどは引数を使用します。引数には、数字と文字 列の 2 種類があります。数値の引数は -32000 と 32000 間の値 で、文字列はカッコで囲まないといけません。変数は文 字 "$" から始める必要があり、数値も文字列も含むことができます。 |
関数はすべて引数として使用され、文字列、数字の両方を返すこ とができます。書式は以下の通り: (function argument1 argument2 ...) 以下は、引数の一覧です: |
(GetTitle id): 番 号 id のウィジェットのタイトルを返しま す。 |
(GetValue id): 番 号 id のウィジェットの現在の値を返しま す。 |
(GetOutput {str} int1 int2): コマンド str を実行し、その標 準出力を取得し、int1 番目の行内の int2 番目の単語を返しま す。int2 が -1 の場合は、GetOutput は行全体を返します。 |
(NumToHex int): int の 16 進数値を返します。 |
(HexToNum {str}): str の 10 進数値を返します。str は 16 進 数値の必要があります。 |
(Add int1 int2): (int1+int2) の結果を返します。 |
(Mult int1 int2): (int1*int2) の結果を返します。 |
(Div int1 int2): (int1/int2) の結果を返します。 |
(StrCopy {str} int1 int2): int1 と int2 の間の位置の文字列 を返します。例えば、(StrCopy {Hello} 1 2) は {He} を返しま す。 |
(LaunchScript {str}): この関数は、名前 str のスクリプトを 実行し、その ID 番号を返しま す。 こ の 番 号 は、 関 数 SendToScript と ReceivFromScript を使用するのに必要。文字 列 str はスクリプト名といくつかの引数を持ちます。 |
(GetScriptArgument {int}): この関数は、関 数 LaunchScript で 使 用 さ れる引数のスクリプトを返します。int が 0 の場 合、GetScriptArgument はスクリプトの名前を返します。 |
(GetScriptFather): この関数は、親スクリプトの ID 番号を返 します。 |
(ReceivFromScript {int}): この関数は番号 int のスクリプト によって送られたメッセージを返します。 |
(RemainderOfDiv {int1 int2}): この関数は、商 (int1/int2) の余りを返します。 |
(GetTime): この関数は、秒単位での時刻を返します。 |
3 種類の分岐やループがあります。命令 "If-Then-Else" は以下 の書式で使用します: If $ToDo=={Open xcalc} Then |
# 命令のリスト |
Else |
# 命令のリスト |
Do {Exec echo xcalc killed > /dev/console} 2 番目の "Else-Begin-End" の部分は必須ではありません。実行 部分に一つの命令しかなければ、Begin と End は省略 で き ま す。命令 "While-Do" は以下の書式で使用します: While $i<5 Do Begin |
# List of instructions |
End "==" で 2 つの文字列を比較でき、 "<", "<=", ">=", ">" で 2 つの数字を比較できます。ループ "For-Do-Begin-End" は以下の 書式で使用します: For $i=1 To 20 Do Begin |
# 命令のリスト |
End |
Frederic Cordier (cordie97@cui.unige.ch or f-cord96@univ-lyon1.fr). |
Eddy J. Gurney (eddy@gizmo.aa.ans.net). |