y@Launcher.py 2023 }jA@z


y͂߂Ɂz
@Launcher.py͊ȒPȃob`\ȃvO`[łB

yӁz
{vO̎gpɓẮA҂͈؂̐ӔC𕉂܂B

yݒt@Cz
@python GUIvOł́A[tkProg]\ini fBNgBꍇA
̉ɃAJEgʂ̐ݒt@C܂B


yXNvgt@C̒ǉz
@Launcher.pył́Agq .ini ̃XNvgt@CLauncherj[^{^ɓo^A
s邱Ƃł܂B
iPj@VXNvgt@CǉA邢͍폜ꍇ́A[Launcher]/scripts
@@@gq.inĩXNvgt@Cǉ܂B
iQj@XNvgt@ĆAt@C𕶎Ƃă\[gԂœǂݍ܂܂
iRj@XNvgt@̍\͈ȉ̒ʂł


yXNvgt@C̍\z
@XNvgt@C̍\́AڂPłB

@Launcher.pyNƁAɃj[ListBox\܂B
Launcher͋NɁAXNvgt@ĆA[ButtonXX.xxxxx]ƂZNVA
xxxxxXg{bNXɕ\܂B

@Launcher̃EBhEʂł́A15(l)̃{^܂B̃{^́A
ォE܂ŁAButton1...Button3AE܂Button13...Button15Ƃ
OĂ܂B

@Xg{bNXŁAƂCIFIĂꍇButton1NbNƁA
XNvg[Button1.CIF]ZNV̓es܂B
lɁAButton4NbNƁA[Button4.CIF]s܂B

@[Boot]ZNV͓ʃZNVłB
LauncherNACEChE\Ɏs܂B
@@ĩXNvgt@C[Boot]ZNVꍇAׂĎs܂j


yZNV̏z
	[DBLClick.CIF]
	Caption=CIF			;{^̃LvV̐ݒ
	$(eitor_path) $(agument)	;R}hXNvg
	DDDDD			;@DDDDDDD
	End				;XNvg̏I

	[DBLClick.CIF].help
	messge_dialog g؏܂	:R}hXNvg
	End					;XNvg̏I

E Captionɂ́A{^ɕ\镶w肵܂B
E ].help̂ZNV́A '?' {^Ŏs܂B
@ {^ɂCaption͕\Ȃ̂ŁACaptions͕svłB
E XNvgɂ́ACӂ̃R}h܂B
@̗ł́A[Boot]ZNVeditor_pathϐɐݒ肵GfB^[A
@GfBbgRg[ɂ镶 $(agument) ɂċNĂ܂B
@ŌEndƁÃZNVpĎs܂BXNvg
E I鎞ɂ́AKEndĂB
Es\ꍇApsƂĈ܂


yȉ̕ϐAR}hg悤ɂȂĂ܂z
yϐz
	$(var)  XNvgϐ var ̓eWJB	

R}hXNvg̃t@C͈ȉ̕ϐŎ擾ł܂B
	$p	Launcher.exẽtpX
	$i	Launcher.inĩtpX
	$s	Launcher.exêhCu܂ރfBNgB
	$w	Windows̃hCu܂ރfBNgB

	$0 - $999@Launcherɗ^ꂽwB
		$0Launcher̃vOgB$1炪AB
		$1ȍ~́AArgsGfBbgRg[̕łB
	$a	$1-$999܂ł̈󔒂ŋ؂ė^B
		ArgsGfBbgRg[̑SɓB

()@$e	$eR}h񒆂ɂƁA$eeXɑ΂$euA
		̐R}hsBႦ΁Aargs"a b"鎞A
			notepad $e
		ƂƁAnotepad a@ notepad b sB
		$e͈̃R}hɈȂłB	

	$(tkProgRoot)		[tkProg]
	$(tklib_Root)		[tkProg]/tklib
	$(pythonlib_path)	[tkProg]/tklib/python
	$(perllib_path)		[tkProg]/tklib/Perl/lib
	$(tkprog_path)		[tkProg]/tkprogBtkprog_X_pathɂȂpython/perlvO
	$(tkprog_X_path)	[tkProg]/tkprog_COEȂ
	$(tkapp_path)		[tkProg]/tkappB_JvO
	$(tkapp_open_path)	[tkProg]/tkapp_openBVESTAȂǂgꍇtkappRs[Kv܂
	$(tkapp_etc_path)	[tkProg]/tkapp_etcBȊÕAv
	$(script_dir)		Launcher.pŷfBNgB

	$(internal_editor_path)	ݒ_CAOŎw肵GfB^Bl͎܂
	$(python_path)		python/python3̃pXBPATHϐ玩܂
	$(perl_path)		python/python3̃pXBPATHϐ玩܂
	ȉ[Boot]Œ`Ă܂
	$(script_drive)		pythonXNvĝhCu
	$(script_dir)		pythonXNvĝfBNgB
	$(Group)		$(tkprog_X_path)X̕Bǂ̃O[vɔzzꂽvOʂ
	$(tkdb_path)		f[^x[XfBNgB

t@CȊO
	$n	sBbZ[WȂǂ𕡐sɂ鎞ɎgB

	$o	FileGfBbgRg[̑SB
		FileGfBbgRg[ɂ́Aget_open_fileNameR}hȂǂ
		gĎ擾t@CB
	$(argument)	GfBbgRg[̑SB

	ϐɐݒ肳Ăϐ

yt@CR}hz
get_cur_dir var
	varɌ݂̃fBNgBpX܂
chdir, cd directory
	LinuxchdirƓłB
mkdir, md directory
	LinuxmkdirƓłB
rmdir, remove directory
	LinuxrmdirƓłB
copy source destination
	LinuxcpƓłBAsource, destinationɂ
	P̃t@Cwł܂񂵁AChJ[hg܂B
delete, del file
	LinuxdelƓłBAfileɂ͂P̃t@Cwł܂񂵁A
	ChJ[hg܂B

@CopyIfExist source destination
	source݂Ƃɂ̂݁ACopy source destinations܂B
@CopyIfNotExist source destination
	destination݂ȂƂɂ̂݁ACopy source destinations܂B


yϐ֘AR}hz
rem Comment
;Comment
:Comment
#Comment
	Rgs

get_cur_menu var
get_cur_menu_file var
get_cur_button_caption var
get_cur_button_idx var

set Env=Value
	DOSsetƓłB̌ʂLauncher.exeI܂ŁALauncher.exe
	NvÔ݂ɗLłB
set_if_blank var Env=Value
	var`󔒂̏ꍇAEnvValueZbg܂B
set_if_null var Env=Value
	var󔒂̏ꍇAEnvValueZbg܂B

split_str str_val sep idx var_name
	 str_val  sep ŋ؂Aϐ var_name ɐݒ肵܂

split_str  : 0 l0

add_path newpath
	$(path)newpath݂ȂƂ̂݁A
		set path=newpath;$(path) 
	s܂B

input Env_Var Message
	Cvbg_CAO\āAϐEnv_Varɂ̓eݒ肵܂B
	Cvbg_CAOɂMessage\܂B
	܂AEnv_Varɑ݂鎞́ACvbg_CAO\ɁAEnv_Var
	e\܂Bhɂ́AInput̑OɁAset Env_Var=s
	B

select_dialog var title message str1 str2 ...
	Xg{bNX_CAO\āAstr1ȍ~̑II񂾕ϐ var ɕԂ܂B
	 #ȍ~̓RgƂč폜܂B
	ftHglvar̒lƁAstr1ȍ~̃Rg폜Ƃ̃}b`OőI΂܂

color_dialog var
	FI_CAO\Aϐvarɐݒ肵܂B

font_dialog var
	tHgI_CAO\Aϐvarɐݒ肵܂B

new_dialog
	V_CAO̒`Jn܂

custom_dialog title buttons
	add_dialogŒ`_CAO\܂Btitle̓_CAO^Cg
	buttonsŃ_CAÕ{^włBok cancel yes no closeBokyesAcancelnóAtextēB
	closeokcancel̗̋@\ (ENTERokŕAESCcancelŕ)


add_dialog widget_type var_name options
	_CAOɃEBWFbgǉ܂BgEBWFbg͈ȉ̒ʂ
	widget_type͉L̃EBWFbg̎ށB
	var_name͓͂ݒ肷ϐBϐ=l ̌`ŁANH[gꍇ͑Ŝ "" ł邱Ƃɒ
	ϐɂsetset_if_nullȂǂŏlݒ肷Kv܂B
	optionsɂ́ACEBWFbgւ̈^܂

	# fobOp̃_~[
	add_dialog dummy label2 "a=1" "b=1.33" "c=i am here"
	ϐ͎gȂ̂dummyȂǂɂĂ

	# ^uőIły[W (notebook) ǉ	
	add_dialog tab dummy "text=title"
	ϐ͎gȂ̂dummyȂǂɂĂ
	ȍ~ add_dialog ͂̃y[Wɑ΂čs
	text=Ń^u̖O (y[W) w肷

	# notebook܂
	add_dialog reset_tab dummy
	ϐ͎gȂ̂dummyȂǂɂĂ
	ȍ~ add_dialog ͋ʃy[Wɑ΂čs

	# \
	add_dialog label dummy "text=ASY:"
	ϐ͎gȂ̂dummyȂǂɂĂ

	# bZ[WgɃbZ[W\
	add_dialog message dummy "text=͂Ȃ"
	ϐ͎gȂ̂dummyȂǂɂĂ

	# Ps
	add_dialog entry entry1 "label_head=head_entry" "text=entry" width=30 "label_tail=end_entry"

	# s
	add_dialog text  text1  "label_head=head_text" "text=text def" width=50 height=2  "label_tail=end_text"

	# {^B̃{^ɕׂ
	# frameȂƁAOframẻEɃ{^zu
	add_dialog frame dummy
	add_dialog button dummy "text=run" "command=call [Execute_scikit-regressions]"
	add_dialog pack_frame dummy

	# t@CI
	add_dialog choose_file\
		python3_path\			# ϐ
		"label_head=python3:"\		# 擪̕
		entry_width=50\			# t@CGg[̕
		"def_val=$(python3_path)"\	# t@Cl
		initialdir=.\			# t@C~_CAȌfBNgB
		"file_type=Exec:*.exe"\		# t@C}XN
		"label_tail="			# I[̕

	# fBNgBI
	add_dialog choose_dir\
		script\
		"label_head=script:"\
		entry_width=50\
		"def_val=$(script)"\
		initialdir=.\
		"label_tail="

	# Xg{bNX
	add_dialog listbox\
		method\
		width=50\
		height=5\
		relief=groove\
		"def_val=$(method)"\
		"values=a##b"\			# Xg ## ŋ؂ēnƂł
		"linear #`A"\		# =̖ڂIɂȂ܂Bvlauesw肳Ăꍇvaluešɒǉ܂
		"ridge  #RidgeA"\
		"label_tail="
	
	# WI{^
	add_dialog radiobutton\
		method1\
		"def_val=$(method1)"\
		"values=a##b"\			# Xg ## ŋ؂ēnƂł
		"linear #`A"\		# =̖ڂIɂȂ܂Bvlauesw肳Ăꍇvaluešɒǉ܂
		"ridge  #RidgeA"\
		"lasso  #LASSOA"\
		"label_tail="

	# R{{bNX
	add_dialog combobox\
		method\
		width=30\
		height=5\
		"label_head=cbs"\
		"values=a##b"\			# Xg ## ŋ؂ēnƂł
		"linear #`A"\		# =̖ڂIɂȂ܂Bvlauesw肳Ăꍇvaluešɒǉ܂
		"gpr    #KEXߒA"\
		"rfr    #_tHXgA"\
		"label_tail=cbe"

	# Xs{bNX
	add_dialog spinbox \
		frac_test\
		var_type=double\
		"label_head=frac_test:"\
		entry_width=10\
		"def_val=$(frac_test)"\
		from=0.0\			# Xs{^Ƃ̐l̍ŏl
		to=1.0\				# Xs{^Ƃ̐l̍ől
		increment=0.1\			# Xs{^Ƃ̑
		"label_tail=  ؃f[^̊"

	# `FbN{bNX
	add_dialog checkbox \
		plot\
		"label_head="\
		"def_val=$(plot)"\
		"label_tail="


remove_comment var
	ϐvarA#ȑŐ󔒂#ȍ~̕SĂ폜Avarɑ܂

read_ini_all Ini_FileName Var
	init@CIniFileName̕ϐVarϐɓǂݍ݂܂B
	eϐinit@Ckeyg Var.key ɓǂݍ܂܂

print_all ret
	ret.keyϐ\܂

read_ini Ini_FileName Section Key Var  [DefVal]
	init@CIniFileNameSectionZNVKeyL[̒lǂݍ݁A
	ϐVarɑ܂BKeyɒlݒ肳ĂȂꍇADefValݒ肵܂B
write_ini Ini_FileName Section Key String
	init@CIniFileNameSectionZNVKeyL[
	String݂܂B

read_labels path Var
	path.xlsxt@Cǂݍ݁A1sڂ̃x ## ŋ؂
	ϐ Var ɐݒ肵܂B
	## ŋ؂XǵAadd_dialog list valuesɐݒł܂

del_quote Env_Var String
	String̗[̃NH[e[V(",')폜܂B

@DecomposeParameters Str
	Str̒g󔒕ŋ؂Aɂ
		key==val
	̕Ƃ݂ȂAϐkeyvalݒ肷B
	@=Ȃꍇ̓t@CƂ݂ȂA
		ArgFileԍ (ԍ1n܂A)
	Ƃϐɂ̕ݒ肷B
@GetHeader FileName HeaderName Len Env_String
	FileNameƂ[t@ĆAHeaderNameƂwb_[̓eAőLen܂ŁA
	ϐEnv_Stringɐݒ肷BHeaderName͗Ⴆ΁A"From:"A"Subject:"ȂǁBŌ':'
	ȂĂǂBLen1-128̒lŁAO鎞128ɐݒ肳B

yLauncherVXe֘AR}hz
set_title Title_String
	Launcher̃EBhELvVTitle_StringɕύXB
echo message
	R\[message\܂
show_message message
	LauncherbZ[WeLXg{bNXmessage\B

load_menu
	init@Cǂݍ݂ȂAXg{bNX̃j[A{^
	ŐV̂̂ɍXV܂B
@UpdateCaption
	Caption$(Env_String)ȂǂgꍇAϐ̕ύX{^
	LvVɔfB
@ClearErrorMessage
	LauncherErrorϐɋ󔒕""܂B
@OnError Command
	G[NƂACommands܂B
	Commandɂ
		continue	AXNvg̎s𑱂܂
		stop		XNvg~܂B
		̃R}h
	wł܂B

yEBhE֘AR}hz
show_window [Minimize/Maximize/Normal/Hide/Show/TopMost/NoTopMost]
	Launcher̕\Ԃ𐧌䂷B
	[Minimize/...../NoTopMost]ɂẮAȉQƁB
show_window Minimize
	LauncherACRB
show_window Maximize
	Launcherő剻B
show_window Normal
	Launcher̃EBhẼTCYɕAB
show_window Hide
	Launcher̃EBhEsɂ܂BXNvgIɂ́A
	IShowWindow Normals܂B
show_window TopMost
	Launcher̃EBhEđOʂɌŒ肷B
show_window NoTopMost
	ShowWindow TopMost𖳌ɂ܂B

yXNvg֌WR}hz
wait_process
	OɎsOvOs͎̍Ƃɐi܂ȂB
@.exest@C̓obNOEhs܂BvOI܂
̏Ɉڂ肽Ȃꍇwait_processg܂B

  ȊÕR}hׂ͂āAs\vOƂ̈Ƃ݂Ȃ܂B
@܂A_CNVtB^[gvOł́Aob`t@C
ĎgA"cmd /K "program.exe < input.txt > output.txt"ƁA
/C/KIvVāAVFcmd.exeɎsR}hnĂB
_CNVAtB^[̓VF̋@\łA
XNvgɒړnĂ_CNVAtB^[͎g܂

call [Section]
	[Section]ZNṼXNvg֎sٓB
	Ⴆ΁A[Button1.VASP]s鎞́A
		Call Button1.VASP
	ƏB
debug [1|on|0|off]
	fobO[hݒ肵܂
confirm on
	ȌɃvOs鎞AR}hCҏW_CAO
	\܂B
confirm off
	Confirm on𖳌ɂ܂(ftHgj

check_exist path message
	j[ύX: path݂ȂꍇA{^Caption "!!! " ܂
	XNvgsF path݂ȂꍇAmessage_CAOŕ\A
	@@@@@@@@@@ tHg ԎAATCY 8 ɕύX܂

exit_if_defined ENV
	ENVϐ`Ăꍇ̓ob`𒆎~B
exit_if_not_defined ENV
	ENVϐ`ĂȂꍇ̓ob`𒆎~B
exit_if_exist file
	file݂鎞̓ob`𒆎~B
exit_if_not_exist file
	file݂Ȃ̓ob`𒆎~B
bye
	LauncherI܂B

message_dialog message_string
	message_stringMessageBox_CAOŕ\܂B[U[OK{^
	܂B
	@OK{^Cancel{^\܂ACancelƃXNvg
	f܂B

set_dialog_var widget_var str
	EBWFbgϐ widget_var ̃EBWFbg str ݒ肵܂

set_message message
	bZ[WGg[message\܂
set_command_line cmd
	R}hCGg[cmd\܂
set_command_line2 cmd
	R}hCGg[2cmd\܂

y  t@C֘AR}hz
use_os_path_sep path
	path̃Zp[^OSKɏC܂

get_open_file_name File_Mask InitialDirectory Caption
get_save_file_name File_Mask InitialDirectory Caption
	_CAOFile OpenNt@C擾܂B
	File_Maskɂ̓ChJ[h""ň͂Ŏw肵܂B
	InitialDirectoryɂ́AOpenDialog̏fBNgBw肵܂B
	CaptiońAI[v_CAÕLvVłB
	File_Mask, InitialDirectoryACaption͏ȗ\łB
	̃R}hŎ擾t@ĆA$oŎQƂł܂B
	܂ALauncherEBhEFileGfBbgRg[ɕ\܂B
get_open_dir_name InitialDirectory Caption
	R_CAOFile OpenNfBNgB擾܂B
	InitialDirectoryɂ́AOpenDialog̏fBNgBw肵܂B
	CaptiońAI[v_CAÕLvVłB
	InitialDirectoryACaption͏ȗ\łB
	̃R}hŎ擾fBNgB́A$oŎQƂł܂B
	܂ALauncherEBhEFileGfBbgRg[ɕ\܂B

get_drive FileName Env_String
		hCu					(c:)
get_directory_without_drive FileName Env_String
		hCu					(c:)
get_directory FileName Env_String
		fBNgB				(\win3\system)
get_last_directory FileName Env_String
		Ō̃fBNgB				(system)
get_filename FileName Env_String
		t@C					(b.bat)
get_ext FileName Env_String
		gq						(bat)
get_filebody FileName Env_String
		gqȊÕt@C				(b)
get_cur_dir Env_String
		JgfBNgBϐEnv_Stringɐݒ肷B
set_selected_file string
		FileGfBbg{bNXɕStringZbgB
set_args string
		ArgsGfBbg{bNXɕStringZbgB


y̑z
@GetAppFile Env_String FileMask Message
	@init@C[Helper]ZNV́AEnv_String=̓eϐEnv_Stringɐݒ肷B
	Env_String=L[Ȃꍇ́At@CI[v_CAOt@C}XNFieMask
	JāAݒ肷vOw肷Bw肳ꂽvO͊ϐEnv_String
	ݒ肳A[Helper]ZNVEnv_String=L[ɓo^B
	@܂AGetAppDirsɁAEnv_String=L[Ɏw肳ꂽt@C݂ȂꍇA
	vOݒ肵ȂB
	@wp[Avo^̂ɎgBႦ΁A
		[Button1.Rietan]
		Caption=&RieMenu
		GetAppFile riemenu RieMenu.exe RieMenuw肵Ă
		$(riemenu)
		End
	Ƃ΁Aŏ̈񂾂RieMenu.exëʒuw肷΁Aڂinit@C
	RieMenu.exê肩킩̂ŁAw肷KvȂB

yDevelopment tabevalŎgϐE֐z
[tkprog_XX]\Launcher\Launcher.py `ĂglobalϐE֐g

from numpy import exp, log, log10, sin, cos, tan, arcsin, arccos, arctan, sqrt
from tklib.tksci.tksci import h, h_bar, hbar, e, kB, NA, c, pi, pi2, torad, todeg, basee
from tklib.tksci.tksci import me, mp, mn, u0, e0, e2_4pie0, a0, R, F, g
from tklib.tksci.tksci import acos, asin, atan, cosh, sinh, tanh
from tklib.tksci.tksci import degcos, degsin, degtan, degacos, degasin, degatan
from tklib.tksci.tksci import eVTonm, nmToeV
from tklib.tksci.tksci import factorial, Gaussian, Lorentzian, combination, gamma
