External applications メニュー

本ドキュメントでは、Launcher における External applications メニューの構造と動作を説明する。 対象スクリプトは以下である。

  • 0-010-ExternalApps.ini

1. 概要

[External applications] セクションは、Launcher 上で外部スクリプトやツールを実行するためのメニュー群を定義する。

主な機能は次のとおりである。

  • 他の Launcher の起動

  • Python スクリプトの実行

  • 環境セットアップ

  • Launcher 自体の再読み込み・再起動

  • コンテキストメニューの追加

2. セクション構造

2.1 [External applications].select

このセクションは、External applications メニューの初期化処理を担う。

役割

  • メニューの基準ディレクトリ設定

  • ツールチップ設定

  • コンテキストメニュー設定

[External applications].select
join_path section_root_dir $(tkprog_X_path) Launcher

add_tooltip  1 "Run another default Launcher.py" #dcfbfe #0000ff
add_tooltip  2 "Run another Launcher.py with all functions" #dcfbfe #0000ff
add_tooltip 19 "Reload script files" #dcfbfe #0000ff
add_tooltip 20 "Restart this Launcher.py" #dcfbfe #0000ff
add_tooltip 21 "Restart this Launcher.py with debug mode" #dcfbfe #0000ff
End

join_path

join_path section_root_dir $(tkprog_X_path) Launcher

External applications メニューの基準パスを設定する。 join_path は OS 依存のパス区切りを吸収して安全にパスを構築するためのコマンドである。

add_tooltip

ボタン番号に対応した説明文を設定する。

add_tooltip  1 "Run another default Launcher.py" #dcfbfe #0000ff
add_tooltip  2 "Run another Launcher.py with all functions" #dcfbfe #0000ff

ここでは、背景色と文字色も併せて指定している。

コンテキストメニュー

create_menuadd_context_menu により、右クリックメニューを追加できる。

create_menu hmenu "title=aaa"\
    "label=abc" "command=echo abc"\
    "label=def" "command=echo def"\
    "label=leave menu" "command=End"\
    "label=def" "command=echo def"
add_context_menu hmenu 1

3. 他の Launcher を起動するボタン

External applications メニューには、別設定の Launcher を起動するボタンが定義されている。

3.1 Button1.External applications

[Button1.External applications]
Caption=Main/Launcher.py
$(start) "$(python_path)" "$(script_fullpath)"
End

説明

  • 現在の Launcher.py を通常構成で起動する

  • $(python_path) で Python を指定し、$(script_fullpath) を実行する

3.2 Button2.External applications

[Button2.External applications]
Caption=All/Launcher.py
$(start) "$(python_path)" "$(script_fullpath)" -s=All
End

説明

  • -s=All を与えて Launcher を起動する

  • 全機能版のメニュー構成を読み込む用途である

3.3 Button4.External applications : Electrical

[Button4.External applications]
Caption=Electrical/Launcher.py
join_path app_path "$(tkprog_X_path)" electrical
check_exist $(app_path) "[$(app_path)] が見つかりません。インストールしてください"
join_path list_path "$(tkprog_X_path)" Launcher scripts Electrical.list
check_exist $(list_path) "[$(list_path)] が見つかりません。インストールしてください"

$(start) "$(python_path)" "$(script_fullpath)" -s=Electrical
End

説明

  • Electrical 用メニューを持つ Launcher を起動する

  • 起動前に対象ディレクトリと .list ファイルの存在を確認する

  • check_exist により不足時はエラーメッセージを表示する

3.4 Button5.External applications : VASP

[Button5.External applications]
Caption=VASP/Launcher.py
join_path app_path "$(tkprog_X_path)" VASP
check_exist $(app_path) "[$(app_path)] が見つかりません。インストールしてください"
join_path list_path "$(tkprog_X_path)" Launcher scripts VASP.list
check_exist $(list_path) "[$(list_path)] が見つかりません。インストールしてください"

$(start) "$(python_path)" "$(script_fullpath)" -s=VASP
End

説明

  • VASP 用メニューを持つ Launcher を起動する

  • Electrical と同様に、必要ファイルの存在確認を行ってから起動する

4. インストール・環境構築ボタン

External applications には、セットアップやライブラリ導入を行うボタン群も含まれる。

4.1 Button10.External applications : setup.py

[Button10.External applications]
Caption=setup.py
join_path script "$(tkProg_Root)" setup.py
$(start_cmd_c) "$(python3_path)" "$(script)"
End

説明

  • setup.py を実行する

  • $(start_cmd_c) を使うため、コマンド実行後はコンソールが閉じる

4.2 Button11.External applications : check libs

[Button11.External applications]
Caption=check libs
join_path script "$(tkProg_Root)" chklib.py
$(start_cmd_c) "$(python3_path)" "$(script)"
End

説明

  • ライブラリ確認スクリプト chklib.py を実行する

4.3 Button13.External applications : Python モジュール一括導入

[Button13.External applications]
Caption=Install python modules
join_path script_path "$(tkProg_Root)" bin admin mypip.py
$(python_path) "$(script_path)" wheel 
$(python_path) "$(script_path)" numpy scipy matplotlib seaborn scikit-learn pandas
$(python_path) "$(script_path)" toml chardet pygments tqdm mplcursors 
$(python_path) "$(script_path)" openpyxl python-docx python-pptx msoffcrypto-tool pymupdf
$(python_path) "$(script_path)" monty icecream
$(python_path) "$(script_path)" pymatgen
$(python_path) "$(script_path)" vtk
$(python_path) "$(script_path)" tkinterdnd2, PyOpenGL, opencv-python
End

説明

  • mypip.py を利用して Python モジュールを順次インストールする

  • 数値計算、可視化、Office 文書処理、材料科学、GUI 系まで広く含む

4.4 個別導入ボタン

physbo

[Button14.External applications]
Caption=Install physbo
join_path script_path "$(tkProg_Root)" bin admin mypip.py
$(python_path) "$(script_path)" physbo
End

BoltzTraP2

[Button15.External applications]
Caption=Install BoltzTraP2
join_path script_path "$(tkProg_Root)" bin admin mypip.py
$(python_path) "$(script_path)" wheel
$(python_path) "$(script_path)" BoltzTraP2
End

pydefect

[Button16.External applications]
Caption=Install pydefect
join_path script_path "$(tkProg_Root)" bin admin mypip.py
$(python_path) "$(script_path)" pydefect mp-api
End

Python modules2

[Button17.External applications]
Caption=Install python modules2
join_path script_path "$(tkProg_Root)" bin admin mypip.py
$(python_path) "$(script_path)" pillow
$(python_path) "$(script_path)" pyocr
End

Perl modules

[Button18.External applications]
Caption=Install perl modules
cpan install Jcode File::Copy::Recursive Math:Matrix Math::MatrixReal Math::Vector::Real
cpan install CGI CGI::Carp MIME::Lite Digest::SHA1 HTTP:Cookies
End

説明

  • 専用用途ごとのライブラリを個別に導入する

  • Button18 は cpan を使った Perl モジュール導入である

5. Launcher の再読み込み・再起動

5.1 Button19.External applications : Reload

[Button19.External applications]
Caption=Reload
load_menu
End

ヘルプ

[Button19.External applications].help
message_dialog ランチャメニューを再読み込みします
End

説明

  • load_menu によりメニューを再読み込みする

  • .ini 修正後の反映に使う

5.2 Button20.External applications : Restart

[Button20.External applications]
Caption=Restart
save_config
$(start_cmd_C) $(python_path) $(script_fullpath) -s=$(script_list_name)
Bye
End

ヘルプ

[Button20.External applications].help
message_dialog Launcher.pyをcmd /Cモードで再起動します。Launcherを終了するとコンソールも閉じます
End

説明

  • 設定を保存してから Launcher を再起動する

  • cmd /C 相当で起動するため、終了時にコンソールも閉じる

  • 最後の Bye で現在の Launcher を終了する

5.3 Button21.External applications : Restart(/K)

[Button21.External applications]
Caption=Restart(/K)
save_config
$(start_cmd_K) $(python_path) $(script_fullpath) -s=$(script_list_name)
Bye
End

ヘルプ

[Button21.External applications].help
message_dialog Launcher.pyをcmd /Kモードで再起動します。Launcher終了後もコンソールは残ります
End

説明

  • 設定保存後に Launcher を再起動する

  • cmd /K 相当で起動するため、終了後もコンソールが残る

  • デバッグ時に有用である

6. 主要コマンドの見方

このメニューでは、Launcher スクリプトの典型的なコマンド群が使われている。

6.1 $(start)

$(start) "$(python_path)" "$(script_fullpath)"

外部プログラムやスクリプトを起動するための標準的な呼び出しである。

6.2 $(start_cmd_C) / $(start_cmd_K)

$(start_cmd_C) ...
$(start_cmd_K) ...
  • C は実行後にコンソールを閉じる

  • K は実行後もコンソールを保持する

6.3 join_path

join_path var base sub

パス連結を安全に行う。 空白を含むパスや OS ごとの差異を吸収しやすいため、外部プログラム起動前によく使われる。

6.4 check_exist

check_exist $(app_path) "エラーメッセージ"

指定したファイルやディレクトリが存在しない場合にエラーとする。 依存関係の事前確認に有効である。

6.5 load_menu

メニュー定義を再読み込みする。

6.6 save_config

現在の設定を保存する。 再起動前にユーザー設定を保持したい場合に用いる。

7. 設計上の特徴

External applications メニューは、単なる外部アプリ一覧ではなく、Launcher 全体の運用補助メニューとして設計されている。

7.1 複数 Launcher の起動ハブ

  • Main

  • All

  • Electrical

  • VASP

のように、用途別 Launcher の起動点になっている。

7.2 セットアップ窓口

  • setup.py

  • check libs

  • Install python modules

  • Install perl modules

などをこの画面から直接起動できる。

7.3 メンテナンス機能の集約

  • Reload

  • Restart

  • Restart(/K)

があるため、.ini 編集後の動作確認やデバッグがしやすい。

8. 画面上の見え方との対応

添付画像では、このメニューは Launcher タブ内の External applications 一覧として表示され、右側に補助ボタン、下部に個別ボタン群が並んでいる。 ボタン名としては、たとえば次のものが確認できる。

  • Main/Launcher.py

  • All/Launcher.py

  • Electrical/Launcher.py

  • VASP/Launcher.py

  • setup.py

  • check libs

  • Install python modules

  • Install physbo

  • Install BoltzTraP2

  • Install pydefect

  • Reload

  • Restart

  • Restart(/K)

これらは 0-010-ExternalApps.ini 内の Caption= 定義と対応している。

9. まとめ

External applications メニューは、外部アプリケーション実行メニューであると同時に、Launcher の派生起動、環境構築、再読み込み、再起動を担う管理メニューでもある。

特に次の 3 系統に整理できる。

  1. 別 Launcher の起動

  2. ライブラリや周辺環境の導入

  3. Launcher 自体の再読み込み・再起動

そのため、ユーザー向けの実行入口としてだけでなく、開発・保守用途でも重要なメニューである。


付録: 対応ボタン一覧

ボタン

Caption

機能概要

Button1

Main/Launcher.py

標準 Launcher 起動

Button2

All/Launcher.py

全機能 Launcher 起動

Button4

Electrical/Launcher.py

Electrical 用 Launcher 起動

Button5

VASP/Launcher.py

VASP 用 Launcher 起動

Button10

setup.py

初期セットアップ

Button11

check libs

依存ライブラリ確認

Button13

Install python modules

Python モジュール一括導入

Button14

Install physbo

physbo 導入

Button15

Install BoltzTraP2

BoltzTraP2 導入

Button16

Install pydefect

pydefect 導入

Button17

Install python modules2

追加 Python モジュール導入

Button18

Install perl modules

Perl モジュール導入

Button19

Reload

メニュー再読み込み

Button20

Restart

cmd /C で再起動

Button21

Restart(/K)

cmd /K で再起動

必要なら、次に この内容を .md ファイルとして保存しやすい形で、見出しや表現を少し整理した完成版 に整えます。