Launcherスクリプト仕様書:文法編
1. 目的
本書は Launcher スクリプトの文法を整理したものである。
Launcher スクリプトは .ini 風の独自 DSL であり、メニュー定義、GUI ダイアログ定義、設定保存、ファイル操作、外部プログラム起動を統合して記述する。
本書では、PDF 版の仕様資料を最新仕様として優先する。 fileciteturn7file0 fileciteturn7file1
2. 全体構造
Launcher スクリプトは、セクションの集合からなる。
基本形:
[SectionName]
...
End
ルール:
セクションは
[名前]で始まるEndが現れるまで、そのセクションの命令列が続くcall [section]により別セクションへ制御を移せる fileciteturn7file0
3. セクション種別
3.1 ボタンセクション
[Button1.CIF]
Caption=CIF
...
End
ボタンとメニューに対応する標準的なセクション。
3.2 ヘルプセクション
[Button1.CIF].help
message_dialog 使い方
End
小さい ? ボタンから呼ばれるヘルプ用セクション。
これは古い資料で明示されている。 fileciteturn6file0
3.3 起動時セクション
[Boot]
...
End
Launcher 起動時に実行される特別セクション。
これは古い資料と実例の両方で確認できる。 fileciteturn6file0turn3file15
3.4 現行実例に見られる拡張セクション
最近の .ini 実例では次のような拡張も使われている。
[MenuName].select[TButton].onload[RButton].onload
これらは PDF の主説明には前面には出ていないが、現行実装のフックとして実例で確認できる。 fileciteturn3file15turn3file2
4. 実行モデル
4.1 順次実行
各セクション内部では、命令が上から下へ順に実行される。
4.2 call は制御移動
call [Button1.Fitting]
call [section] は、指定セクションへ制御を移動する。
関数呼び出しというより goto 的に理解するのが近い。 fileciteturn7file0
4.3 変数は共有される
Launcher は環境変数領域を使って値を保持する設計であり、スクリプト全体で変数を共有する。
したがって、あるセクションで設定した変数を別セクションからそのまま利用できる。
5. 変数
5.1 通常変数
通常変数は set 系コマンドや環境変数で定義され、参照時は次の形式を使う。
$(varname)
5.2 特殊変数
古い資料では、次の特殊変数が明示されている。 fileciteturn6file0
$p$i$s$w$0 - $999$a$n$o
特に $o は、ファイル選択系コマンドの結果を受け取る変数として重要である。 fileciteturn7file0
5.3 ダイアログ変数
add_dialog widget_type var_name options の var_name が、ウィジェットの値を受け取る変数になる。
初期値は set, set_if_blank, set_if_null などで事前に設定しておく。 fileciteturn7file1
6. コメント
6.1 コメント行
以下はコメント行として扱われる。 fileciteturn7file0
# comment
: comment
; comment
rem comment
6.2 コメント付き値
選択肢や変数値には、人間向けの #コメント を含められる。
例:
"nelder-mead # Downhill simplex"
実行時に remove_comment var で # 以降を除去できる。 fileciteturn7file0turn7file1
7. 文字列とクオート
ファイルパスや引数文字列は、空白を含む可能性があるため、基本的に " でクオートして渡す。
PDF でも variable=value 形式や def_val=$(python3_path) 形式の記法が示されている。 fileciteturn7file1
8. 行継続
行末に \ がある場合、その行は継続行として扱われる。
これは add_dialog, create_menu などの長い引数列で多用される。 fileciteturn7file1
9. GUI 文法
9.1 ダイアログ開始と表示
new_dialog
...
custom_dialog "title" close
new_dialog: ダイアログ定義開始custom_dialog: ダイアログ表示
最下部ボタン種別としてok,cancel,yes,no,closeが使える。 fileciteturn7file1
9.2 add_dialog の基本形
add_dialog widget_type var_name options
widget_type: ウィジェット種別var_name: 値を受ける変数options: 各ウィジェットへのオプション
9.3 主なウィジェット種別
PDF で確認できる主な種別は以下。 fileciteturn7file1
tabreset_tabchoose_filechoose_dirlabelmessagecomboboxlistboxradiobuttonentryspinboxcheckboxdummyframebuttonpack_frame
9.4 add_dialog オプションの特徴
PDF では次のようなオプションが明示されている。 fileciteturn7file1
label_head=label_tail=entry_width=width=height=init_val=def_val=help_text=state=readonlycheck_exist=1show_path_button=1button1_text=button1_command=side=top|leftanchor=w|e|n|s|...var_type=int|float|double|strfrom=to=increment=
9.5 追加 GUI コマンド
PDF の widget 仕様書では、GUI 周辺の次のコマンドも確認できる。 fileciteturn7file1
evalcopy_svars2configcopy_config2scarsadd_tooltipcreate_menuadd_context_menushow_context_menu
10. パス・ファイル・外部実行文法
10.1 ファイル選択
get_open_file_name "*.xlsx"
get_save_file_name "*.xlsx"
get_open_dir_name "$(last_dir)"
さらに、Cancel しても処理継続する *_continue 系もある。 fileciteturn7file0
10.2 パス生成
join_path parameter_path $(dir_name) $(filebody).prm
join_path は引数を連結してパスを作り、指定変数へ設定する。 fileciteturn7file0
10.3 外部コマンド実行
既知の内部コマンド以外は、実行可能プログラムとその引数として扱う。
これは旧資料でも明示されている。 fileciteturn6file0
11. この文法の特徴
Launcher スクリプトの文法は、次の特徴を持つ。
セクションベース
1行命令中心
callは制御移動変数は環境変数領域ベース
GUI 構築と実行処理を同居可能
複雑なブロック構文を持たず、複合コマンドで表現力を補う
12. ひとことで言うと
Launcher スクリプトの文法は、
「環境変数共有を前提にした、1行命令型・セクション型の GUI ランチャー DSL」
である。