เจเจฟเจตเฉเจ เจเจฟ เจ
เจธเฉเจ เจฒเฉเจจเจเจธ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ 1C เจเจคเจชเจพเจฆ เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ เจเจธ เจตเจฟเจธเจผเฉ เจตเจฟเฉฑเจ เจเฉเจ เจเฉเจคเฉ, เจเฉฑเจ เจเจฎเฉ เจฒเฉฑเจญเฉ เจเจ - 1C เจธเจฐเจตเจฐเจพเจ เจฆเฉ เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจ เจเฉฑเจ เจธเฉเจตเจฟเจงเจพเจเจจเจ เจเฉเจฐเจพเจซเจฟเจเจฒ เจฎเจฒเจเฉ-เจชเจฒเฉเจเจซเจพเจฐเจฎ เจเฉเจฒ เจฆเฉ เจเจพเจเฅค เจ
เจคเฉ เจฐเฉเจ เจเฉฐเจธเฉเจฒ เจเจชเจฏเฉเจเจคเจพ เจฒเจ เจเฉฑเจ GUI เจฒเจฟเจ เจเฉ เจเจธ เจเจฎเฉ เจจเฉเฉฐ เจ เฉเจ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค Tcl/tk เจจเฉเฉฐ เจตเจฟเจเจพเจธ เจญเจพเจธเจผเจพ เจตเจเฉเจ เจเฉเจฃเจฟเจ เจเจฟเจ เจธเฉ, เจเจฟเจเจเจเจฟ เจฎเฉเจฐเฉ เจฐเจพเจ เจตเจฟเฉฑเจ, เจเจธ เจเฉฐเจฎ เจฒเจ เจธเจญ เจคเฉเจ เจขเฉเจเจตเจพเจ เจนเฉเฅค เจ
เจคเฉ เจเจธ เจฒเจ, เจฎเฉเจ เจเจธ เจธเจฎเฉฑเจเจฐเฉ เจตเจฟเฉฑเจ เจนเฉฑเจฒ เจฆเฉ เจเฉเจ เจฆเจฟเจฒเจเจธเจช เจชเจนเจฟเจฒเฉเจเจ เจจเฉเฉฐ เจชเฉเจธเจผ เจเจฐเจจเจพ เจเจพเจนเจพเจเจเจพ.
เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจคเฉเจนเจพเจจเฉเฉฐ tcl/tk เจ
เจคเฉ 1C เจตเฉฐเจกเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจ
เจคเฉ เจเจฟเจเจเจเจฟ เจฎเฉเจ เจฅเจฐเจก-เจชเจพเจฐเจเฉ เจชเฉเจเฉเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจฌเจฟเจจเจพเจ เจฌเฉเจจเจฟเจเจฆเฉ tcl/tk เจกเจฟเจฒเจฟเจตเจฐเฉ เจฆเฉเจเจ เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ เจฆเจพ เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจฒเจพเจญ เจเจ เจพเจเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจนเฉ, เจฎเฉเจจเฉเฉฐ เจธเฉฐเจธเจเจฐเจฃ 8.6.7 เจฆเฉ เจฒเฉเฉ เจชเจตเฉเจเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ ttk - เจตเจพเจงเฉ เจเฉเจฐเจพเจซเจฟเจ เจคเฉฑเจคเจพเจ เจตเจพเจฒเจพ เจเฉฑเจ เจชเฉเจเฉเจ เจธเจผเจพเจฎเจฒ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจเฉเจ เจธเจพเจจเฉเฉฐ เจฎเฉเฉฑเจ เจคเฉเจฐ 'เจคเฉ ttk เจฆเฉ เจฒเฉเฉ เจนเฉเฅค ::TreeView, เจเจน เจเฉฑเจ เจฐเฉเฉฑเจ เจฆเฉ เจขเจพเจเจเฉ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจ
เจคเฉ เจเฉฑเจ เจธเจพเจฐเจฃเฉ (เจธเฉเจเฉ) เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจฆเฉเจตเฉเจ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจจเจพเจฒ เจนเฉ, เจจเจตเฉเจ เจธเฉฐเจธเจเจฐเจฃ เจตเจฟเฉฑเจ, เจ
เจชเจตเจพเจฆเจพเจ เจตเจพเจฒเฉ เจเฉฐเจฎ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจเจ เจเจฟเจ เจนเฉ (เจเฉเจฐเจพเจ เจเจฎเจพเจเจก, เจเฉ เจเจฟ เจฌเจพเจนเจฐเฉ เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจตเฉเจฒเฉ เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉ)เฅค
เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจเจ เจซเจพเจเจฒเจพเจ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ (เจนเจพเจฒเจพเจเจเจฟ เจเฉเจ เจตเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจตเจฟเฉฑเจ เจธเจญ เจเฉเจ เจเจฐเจจ เจคเฉเจ เจจเจนเฉเจ เจฐเฉเจเจฆเจพ):
rac_gui.cfg - เจกเจฟเจซเจพเจฒเจ เจธเฉฐเจฐเจเจจเจพ
rac_gui.tcl - เจฎเฉเฉฑเจ เจฒเจพเจเจ เจธเจเฉเจฐเจฟเจชเจ
lib เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ เจเจน เจซเจพเจเจฒเจพเจ เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ เจเฉ เจธเจผเฉเจฐเฉเจเจคเฉ เจธเจฎเฉเจ เจเจชเจฃเฉ เจเจช เจฒเฉเจก เจนเฉเฉฐเจฆเฉเจเจ เจนเจจ:
function.tcl - เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจตเจพเจฒเฉ เจซเจพเจเจฒ
gui.tcl - เจฎเฉเฉฑเจ เจเฉเจฐเจพเจซเจฟเจเจฒ เจเฉฐเจเจฐเจซเฉเจธ
images.tcl - base64 เจเจฟเฉฑเจคเจฐ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ
rac_gui.tcl เจซเจพเจเจฒ, เจ เจธเจฒ เจตเจฟเฉฑเจ, เจฆเฉเจญเจพเจธเจผเฉเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉ, เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉ, เจฎเฉเจกเฉเจเจฒ เจฒเฉเจก เจเจฐเจฆเฉ เจนเฉ, เจธเฉฐเจฐเจเจจเจพเจตเจพเจ, เจเจฆเจฟเฅค เจเจฟเฉฑเจชเจฃเฉเจเจ เจตเจพเจฒเฉ เจซเจพเจเจฒ เจฆเฉ เจธเจฎเฉฑเจเจฐเฉ:
rac_gui.tcl
#!/bin/sh
exec wish "$0" -- "$@"
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ัะตะบััะธะน ะบะฐัะฐะปะพะณ
set dir(root) [pwd]
# ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ัะฐะฑะพัะธะน ะบะฐัะฐะปะพะณ, ะตัะปะธ ะตะณะพ ะฝะตั ัะพ ัะพะทะดะฐัะผ
set dir(work) [file join $env(HOME) .rac_gui]
if {[file exists $dir(work)] == 0 } {
file mkdir $dir(work)
}
# ะบะฐัะฐะปะพะณ ั ะผะพะดัะปัะผะธ
set dir(lib) "[file join $dir(root) lib]"
# ะทะฐะณััะถะฐะตะผ ะฟะพะปัะทะพะฒะฐัะตะปััะบะธะน ะบะพะฝัะธะณ, ะตัะปะธ ะพะฝ ะพััััััะฒัะตั, ัะพ ะบะพะฟะธััะตะผ ะดะตัะพะปัะฝัะน
if {[file exists [file join $dir(work) rac_gui.cfg]] ==0} {
file copy [file join [pwd] rac_gui.cfg] [file join $dir(work) rac_gui.cfg]
}
source [file join $dir(work) rac_gui.cfg]
# ะะพะด ะฟัะพะฒะตัะบะธ ะฝะฐะปะธัะธั rac ะธ ะฟัะฐะฒะธะปัะฝะพััะธ ัะบะฐะทะฐะฝะธั ะฟััะธ ะฒ ะบะพะฝัะธะณะต
# ะตัะปะธ ะฟัะพะณัะฐะผะผะฐ ะฝะต ะฝะฐะนะดะตะฝะฐ ัะพ ะฑัะดะตั ะฒัะฒะตะดะตะฝ ะดะธะฐะปะพะณ ะดะปั ัะบะฐะทะฐะฝะธั ะบะพััะตะบัะฝะพะณะพ ะฟััะธ
# ะธ ััะพั ะฟััั ะฑัะดะตั ะทะฐะฟะธัะฐะฝ ะฒ ะฟะพะปัะทะพะฒะฐัะตะปััะบะธะน ะบะพะฝัะธะณ
if {[file exists $rac_cmd] == 0} {
set rac_cmd [tk_getOpenFile -initialdir $env(HOME) -parent . -title "ะฃะบะฐะถะธัะต ะฟััั ะดะพ rac" -initialfile rac]
file copy [file join $dir(work) rac_gui.cfg] [file join $dir(work) rac_gui.cfg.bak]
set orig_file [open [file join $dir(work) rac_gui.cfg.bak] "r"]
set file [open [file join $dir(work) rac_gui.cfg] "w"]
while {[gets $orig_file line] >=0 } {
if {[string match "set rac_cmd*" $line]} {
puts $file "set rac_cmd $rac_cmd"
} else {
puts $file $line
}
}
close $file
close $orig_file
#return "$host:$port"
file delete [file join $dir(work) 1c_srv.cfg.bak]
} else {
puts "Found $rac_cmd"
}
set cluster_user ""
set cluster_pwd ""
set agent_user ""
set agent_pwd ""
## LOAD FILE ##
# ะะฐะณััะถะฐะตะผ ะผะพะดัะปะธ ะบัะพะผะต gui.tcl ัะฐะบ ะบะฐะบ ะตะณะพ ะฝะฐะดะพ ะทะฐะณััะทะธัั ะฟะพัะปะตะดะฝะธะผ
foreach modFile [lsort [glob -nocomplain [file join $dir(lib) *.tcl]]] {
if {[file tail $modFile] ne "gui.tcl"} {
source $modFile
puts "Loaded module $modFile"
}
}
source [file join $dir(lib) gui.tcl]
source [file join $dir(work) rac_gui.cfg]
# ะงะธัะฐะตะผ ัะฐะนะป ัะพ ัะฟะธัะบะพะผ ัะตัะฒะตัะพะฒ 1ะก
# ะธ ะดะพะฑะฐะฒะปัะตะผ ะฒ ะดะตัะตะฒะพ
if [file exists [file join $dir(work) 1c_srv.cfg]] {
set f [open [file join $dir(work) 1c_srv.cfg] "RDONLY"]
while {[gets $f line] >=0} {
.frm_tree.tree insert {} end -id "server::$line" -text "$line" -values "$line"
}
}
เจฒเฉเฉเฉเจเจฆเฉ เจนเจฐ เจเฉเจเจผ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจเจฐเจจ เจ เจคเฉ rac เจเจชเจฏเฉเจเจคเจพ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเฉฑเจ เจเฉเจฐเจพเจซเจฟเจเจฒ เจตเจฟเฉฐเจกเฉ เจฒเจพเจเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉเฅค เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเฉฐเจเจฐเจซเฉเจธ เจตเจฟเฉฑเจ เจคเจฟเฉฐเจจ เจคเฉฑเจค เจนเฉเฉฐเจฆเฉ เจนเจจ:
เจเฉเจฒเจฌเจพเจฐ, เจฐเฉเฉฑเจ เจ เจคเฉ เจธเฉเจเฉ
เจฎเฉเจ "เจฐเฉเฉฑเจ" เจฆเฉเจเจ เจธเจฎเฉฑเจเจฐเฉเจเจ เจจเฉเฉฐ 1C เจคเฉเจ เจฎเจฟเจเจฐเฉ เจตเจฟเฉฐเจกเฉเจเจผ เจเจชเจเจฐเจฃเจพเจ เจฆเฉ เจธเจฎเจพเจจ เจฌเจฃเจพเจเจ เจนเฉเฅค
เจฎเฉเฉฑเจ เจเฉเจก เจเฉ เจเจธ เจตเจฟเฉฐเจกเฉ เจจเฉเฉฐ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจเจน เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจนเฉ
lib/gui.tcl
# ัััะฐะฝะพะฒะบะฐ ัะฐะทะผะตัะฐ ะธ ะฟะพะปะพะถะตะฝะธั ะพัะฝะพะฒะฝะพะณะพ ะพะบะฝะฐ
# ะผะพะถะฝะพ ัััะฐะฝะพะฒะธัั ะฒ ะฟะตัะตะผะตะฝะฝัั topLevelGeometry ะฒ ะบะพะฝัะธะณ ะฟัะพะณัะฐะผะผั
if {[info exists topLevelGeometry]} {
wm geometry . $topLevelGeometry
} else {
wm geometry . 1024x768
}
# ะะฐะณะพะปะพะฒะพะบ ะพะบะฝะฐ
wm title . "1C Rac GUI"
wm iconname . "1C Rac Gui"
# ะธะบะพะฝะบะฐ ะพะบะฝะฐ (ะฑะตัะตััั ะธะท ัะฐะนะปะฐ lib/imges.tcl)
wm iconphoto . tcl
wm protocol . WM_DELETE_WINDOW Quit
wm overrideredirect . 0
wm positionfrom . user
ttk::style theme use clam
# ะะฐะฝะตะปั ะธะฝัััะผะตะฝัะพะฒ
set frm_tool [frame .frm_tool]
pack $frm_tool -side left -fill y
ttk::panedwindow .panel -orient horizontal -style TPanedwindow
pack .panel -expand true -fill both
pack propagate .panel false
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
ttk::button $frm_tool.btn_del -command Del -image del_grey_32
ttk::button $frm_tool.btn_edit -command Edit -image edit_grey_32
ttk::button $frm_tool.btn_quit -command Quit -image quit_grey_32
pack $frm_tool.btn_add $frm_tool.btn_del $frm_tool.btn_edit -side top -padx 5 -pady 5
pack $frm_tool.btn_quit -side bottom -padx 5 -pady 5
# ะะตัะตะฒะพ ั ะฟะพะปะพัะฐะผะธ ะฟัะพะบัััะบะธ
set frm_tree [frame .frm_tree]
ttk::scrollbar $frm_tree.hsb1 -orient horizontal -command [list $frm_tree.tree xview]
ttk::scrollbar $frm_tree.vsb1 -orient vertical -command [list $frm_tree.tree yview]
set tree [ttk::treeview $frm_tree.tree -show tree
-xscrollcommand [list $frm_tree.hsb1 set] -yscrollcommand [list $frm_tree.vsb1 set]]
grid $tree -row 0 -column 0 -sticky nsew
grid $frm_tree.vsb1 -row 0 -column 1 -sticky nsew
grid $frm_tree.hsb1 -row 1 -column 0 -sticky nsew
grid columnconfigure $frm_tree 0 -weight 1
grid rowconfigure $frm_tree 0 -weight 1
# ะฝะฐะทะฝะฐัะตะฝะธะต ะพะฑัะฐะฑะพััะธะบะฐ ะฝะฐะถะฐัะธั ะบะฝะพะฟะบะพะน ะผััะธ
bind $frm_tree.tree <ButtonRelease> "TreePress $frm_tree.tree"
# ะกะฟะธัะพะบ ะดะปั ะดะฐะฝะฝัั
(ัะฐะฑะปะธัะฐ)
set frm_work [frame .frm_work]
ttk::scrollbar $frm_work.hsb -orient horizontal -command [list $frm_work.tree_work xview]
ttk::scrollbar $frm_work.vsb -orient vertical -command [list $frm_work.tree_work yview]
set tree_work [
ttk::treeview $frm_work.tree_work
-show headings -columns "par val" -displaycolumns "par val"
-xscrollcommand [list $frm_work.hsb set]
-yscrollcommand [list $frm_work.vsb set]
]
# ะฃััะฐะฝะพะฒะบะฐ ัะฒะตัะพะฒ ะดะปั ัะตัะตะดะพะฒะฐะฝะธั ะฒ ัะฐะฑะปะธัะต
$tree_work tag configure dark -background $color(dark_table_bg)
$tree_work tag configure light -background $color(light_table_bg)
# ะ ะฐะทะผะตัะตะฝะธะต ัะปะตะผะตะฝัะพะฒ ะฝะฐ ัะพัะผะต
grid $tree_work -row 0 -column 0 -sticky nsew
grid $frm_work.vsb -row 0 -column 1 -sticky nsew
grid $frm_work.hsb -row 1 -column 0 -sticky nsew
grid columnconfigure $frm_work 0 -weight 1
grid rowconfigure $frm_work 0 -weight 1
pack $frm_tree $frm_work -side left -expand true -fill both
#.panel add $frm_tool -weight 1
.panel add $frm_tree -weight 1
.panel add $frm_work -weight 1
เจชเฉเจฐเฉเจเจฐเจพเจฎ เจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจนเฉเจ เจฒเจฟเจเฉ เจ เจจเฉเจธเจพเจฐ เจนเฉ:
1. เจชเจนเจฟเจฒเจพเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจฎเฉเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจธเจฐเจตเจฐ (เจเจฟเจตเฉเจ เจเจฟ, เจเจฒเฉฑเจธเจเจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ เจธเจฐเจตเจฐ (เจฒเฉเจจเจเจธ เจตเจฟเฉฑเจ, เจชเฉเจฐเจฌเฉฐเจงเจจ เจจเฉเฉฐ โ/opt/1C/v8.3/x86_64/ras เจเจฒเฉฑเจธเจเจฐ โเจกเฉเจฎเจจโ) เจเจฎเจพเจเจก เจจเจพเจฒ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ) เจจเฉเฉฐ เจเฉเฉเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจ เจเจฟเจนเจพ เจเจฐเจจ เจฒเจ, โ+โ เจฌเจเจจ เจคเฉ เจเจฒเจฟเจ เจเจฐเฉ เจ เจคเฉ เจเฉเฉฑเจฒเจฃ เจตเจพเจฒเฉ เจตเจฟเฉฐเจกเฉ เจตเจฟเฉฑเจ, เจธเจฐเจตเจฐ เจฆเจพ เจชเจคเจพ เจ เจคเฉ เจชเฉเจฐเจ เจฆเจฐเจ เจเจฐเฉ:
เจฌเจพเจ
เจฆ เจตเจฟเฉฑเจ, เจธเจพเจกเจพ เจธเจฐเจตเจฐ เจเจธ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจจเจพเจฒ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ, เจเจฒเฉฑเจธเจเจฐเจพเจ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจเฉเฉฑเจฒ เจเจพเจตเฉเจเฉ เจเจพเจ เจเฉฑเจ เจเฉเจจเฉเจเจธเจผเจจ เจเจฒเจคเฉ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเฉ.
2. เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจจเจพเจฎ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจจเจพเจฒ เจเจธเจฆเฉ เจฒเจ เจเจชเจฒเจฌเจง เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจธเฉเจเฉ เจเฉเฉฑเจฒเฉเจน เจเจพเจตเฉเจเฉเฅค
3เฅคโฆ
เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ, i.e. เจเฉฑเจ เจจเจตเจพเจ เจเจฒเฉฑเจธเจเจฐ เจเฉเฉเจจ เจฒเจ, เจธเฉเจเฉ เจตเจฟเฉฑเจ เจเจชเจฒเจฌเจง เจเจฟเจธเฉ เจเฉฑเจ เจจเฉเฉฐ เจเฉเจฃเฉ เจ เจคเฉ เจเฉเจฒเจฌเจพเจฐ เจตเจฟเฉฑเจ "+" เจฌเจเจจ เจฆเจฌเจพเจ เจ เจคเฉ เจจเจตเจพเจ เจเฉเฉเฉ เจกเจพเจเจฒเจพเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเจตเฉเจเจพ:
เจเฉเจฒเจฌเจพเจฐ เจตเจฟเจเจฒเฉ เจฌเจเจจ เจธเฉฐเจฆเจฐเจญ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจซเฉฐเจเจธเจผเจจ เจเจฐเจฆเฉ เจนเจจ, เจเจฟเจตเฉเจ เจเจฟ. เจฐเฉเฉฑเจ เจเจพเจ เจธเฉเจเฉ เจฆเจพ เจเจฟเจนเฉเจพ เจคเฉฑเจค เจเฉเจฃเจฟเจ เจเจฟเจ เจนเฉ, เจเจธ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจฟเจเจ, เจเฉฑเจ เจเจพเจ เจฆเฉเจเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉเฅค
เจเจ เจเจก เจฌเจเจจ (โ+โ) เจฆเฉ เจเจฆเจพเจนเจฐเจจ เจตเฉเจเฉเจ:
เจฌเจเจจ เจเจจเจฐเฉเจธเจผเจจ เจเฉเจก:
ttk::button $frm_tool.btn_add -command Add -image add_grey_32
เจเฉฑเจฅเฉ เจ เจธเฉเจ เจฆเฉเจเจฆเฉ เจนเจพเจ เจเจฟ เจเจฆเฉเจ เจฌเจเจจ เจฆเจฌเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ "เจเจก" เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจเจธเจฆเจพ เจเฉเจก:
proc Add {} {
global active_cluster host
# ะะฟัะตะดะตะปัะตะผ ะธะดะตะฝัะธัะธะบะฐัะพั ะฒัะดะตะปะตะฝะฝะพะณะพ ัะปะตะผะตะฝัะฐ
set id [.frm_tree.tree selection]
# ะะฟัะตะดะตะปัะตะผ ะทะฝะฐัะตะฝะธะต ััะพะณะพ ัะปะตะผะตะฝัะฐ
set values [.frm_tree.tree item [.frm_tree.tree selection] -values]
set key [lindex [split $id "::"] 0]
# ะฒ ะทะฐะฒะธัะธะผะพััะธ ะพั ัะพะณะพ ััะพ ะฒัะดะตะปะธะปะธ ะฑัะดะตั ะทะฐะฟััะตะฝะฐ ะฝัะถะฝะฐั ะฟัะพัะตะดััะฐ
if {$key eq "" || $key eq "server"} {
set host [ Add::server ]
return
}
Add::$key .frm_tree.tree $host $values
}
เจเฉฑเจฅเฉ เจเจฟเฉฑเจเจฒ เจฆเฉ เจซเจพเจเจฆเจฟเจเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจนเฉ: เจคเฉเจธเฉเจ เจเฉฑเจ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจจเจพเจฎ เจตเจเฉเจ เจชเจพเจธ เจเจฐ เจธเจเจฆเฉ เจนเฉ:
Add::$key .frm_tree.tree $host $values
เจญเจพเจต, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉเจเจฐ เจ เจธเฉเจ เจฎเฉเฉฑเจ เจธเจฐเจตเจฐ เจตเฉฑเจฒ เจเจธเจผเจพเจฐเจพ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ โ+โ เจฆเจฌเจพเจเจเจฆเฉ เจนเจพเจ, เจคเจพเจ Add::server เจตเจฟเจงเฉ เจธเจผเฉเจฐเฉ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ, เจเฉเจเจฐ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ - Add::cluster เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจนเฉเจฐ (เจฎเฉเจ เจเจธ เจฌเจพเจฐเฉ เจฒเจฟเจเจพเจเจเจพ เจเจฟ เจเจฟเฉฑเจฅเฉ เจฒเฉเฉเฉเจเจฆเฉเจเจ "เจเฉเฉฐเจเฉเจเจ" เจฅเฉเฉเฉเจนเฉ เจเจฟเจนเฉ เจนเฉเจ เจพเจ เจคเฉเจ เจเจเจเจฆเฉเจเจ เจนเจจ), เจธเฉเจเฉเจฌเฉฑเจง เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจธเฉฐเจฆเจฐเจญ เจฆเฉ เจ เจจเฉเจเฉเจฒ เจเฉเจฐเจพเจซเจฟเจ เจคเฉฑเจคเจพเจ เจจเฉเฉฐ เจเจฟเฉฑเจเจฆเฉเจเจ เจนเจจเฅค
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฆเฉเจเจฟเจ เจนเฉเจตเฉเจเจพ, เจซเจพเจฐเจฎ เจธเจผเฉเจฒเฉ เจตเจฟเฉฑเจ เจธเจฎเจพเจจ เจนเจจ - เจเจน เจเฉเจ เจนเฉเจฐเจพเจจเฉ เจฆเฉ เจเฉฑเจฒ เจจเจนเฉเจ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจน เจเฉฑเจ เจตเจฟเจงเฉ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเฉฐเจฆเฉ เจนเจจ, เจซเจพเจฐเจฎ เจฆเฉ เจฎเฉเฉฑเจ เจซเจฐเฉเจฎ (เจตเจฟเฉฐเจกเฉ, เจฌเจเจจ, เจเจฟเฉฑเจคเจฐ, เจฒเฉเจฌเจฒ), เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเจพ เจจเจพเจฎ. เจเฉเจช เจฒเฉเจตเจฒ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
proc AddToplevel {lbl img {win_name .add}} {
set cmd "destroy $win_name"
if [winfo exists $win_name] {destroy $win_name}
toplevel $win_name
wm title $win_name $lbl
wm iconphoto $win_name tcl
# ะผะตัะบะฐ ั ะธะบะพะฝะบะพะน
ttk::label $win_name.lbl -image $img
# ััะตะนะผ ั ะฟะพะปัะผะธ ะฒะฒะพะดะฐ
set frm [ttk::labelframe $win_name.frm -text $lbl -labelanchor nw]
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
# ััะตะนะผ ะธ ะบะฝะพะฟะบะธ
set frm_btn [frame $win_name.frm_btn -border 0]
ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { }
ttk::button $frm_btn.btn_cancel -command $cmd -image quit_grey_24
grid $win_name.lbl -row 0 -column 0 -sticky nw -padx 5 -pady 10
grid $frm -row 0 -column 1 -sticky nw -padx 5 -pady 5
grid $frm_btn -row 1 -column 1 -sticky se -padx 5 -pady 5
pack $frm_btn.btn_cancel -side right
pack $frm_btn.btn_ok -side right -padx 10
return $frm
}
เจเจพเจฒ เจชเฉเจฐเจพเจฎเฉเจเจฐ: เจธเจฟเจฐเจฒเฉเจ, เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจคเฉเจ เจเจเจเจจ เจฒเจ เจเจฟเฉฑเจคเจฐ เจฆเจพ เจจเจพเจฎ (lib/images.tcl) เจ เจคเฉ เจเฉฑเจ เจตเจฟเจเจฒเจชเจฟเจ เจตเจฟเฉฐเจกเฉ เจจเจพเจฎ เจชเฉเจฐเจพเจฎเฉเจเจฐ (เจกเจฟเจซเฉเจฒเจ .add)เฅค เจเจธ เจคเจฐเฉเจนเจพเจ, เจเฉเจเจฐ เจ เจธเฉเจ เจฎเฉเฉฑเจ เจธเจฐเจตเจฐ เจ เจคเฉ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจเฉเฉเจจ เจฒเจ เจเจชเจฐเฉเจเจค เจเจฆเจพเจนเจฐเจฃเจพเจ เจจเฉเฉฐ เจฒเฉเจเจฆเฉ เจนเจพเจ, เจคเจพเจ เจเจพเจฒ เจเจธ เจ เจจเฉเจธเจพเจฐ เจนเฉเจตเฉเจเฉ:
AddToplevel "ะะพะฑะฐะฒะปะตะฝะธะต ะพัะฝะพะฒะฝะพะณะพ ัะตัะฒะตัะฐ" server_grey_64
เจ
AddToplevel "ะะพะฑะฐะฒะปะตะฝะธะต ะบะปะฐััะตัะฐ" cluster_grey_64
เจเฉเจฐ, เจเจนเจจเจพเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจจเฉเฉฐ เจเจพเจฐเฉ เจฐเฉฑเจเจฆเฉ เจนเฉเจ, เจฎเฉเจ เจเจนเจจเจพเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจตเจพเจเจเจพ เจเฉ เจธเจฐเจตเจฐ เจเจพเจ เจเจฒเฉฑเจธเจเจฐ เจฒเจ เจเจก เจกเจพเจเจฒเจพเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเฉ เจนเจจเฅค
เจธเจผเจพเจฎเจฒ เจเจฐเฉ::เจธเจฐเจตเจฐ
proc Add::server {} {
global default
# ะฒัะฒะพะดะธะผ ะพัะฝะพะฒะฝัั ัะพัะผั
set frm [AddToplevel "ะะพะฑะฐะฒะปะตะฝะธะต ะพัะฝะพะฒะฝะพะณะพ ัะตัะฒะตัะฐ" server_grey_64]
# ะดะพะฑะฐะฒะปัะตะผ ะตัะบะธ ะธ ะฟะพะปั ะฒะฒะพะดะฐ ะฝะฐ ััั ัะพัะผั
label $frm.lbl_host -text "ะะดัะตั ัะตัะฒะตัะฐ"
entry $frm.ent_host
label $frm.lbl_port -text "ะะพัั"
entry $frm.ent_port
$frm.ent_port insert end $default(port)
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid columnconfigure $frm 0 -weight 1
grid rowconfigure $frm 0 -weight 1
#set frm_btn [frame .add.frm_btn -border 0]
# ะฟะตัะตะพะฟัะตะดะตะปัะตะผ ะพะฑัะฐะฑะพััะธะบ ะฝะฐะถะฐัะธั ะบะฝะพะฟะบะธ
.add.frm_btn.btn_ok configure -command {
set host [SaveMainServer [.add.frm.ent_host get] [.add.frm.ent_port get]]
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
destroy .add
return $host
}
return $frm
}
เจเฉเฉเฉ::เจเจฒเฉฑเจธเจเจฐ
proc Add::cluster {tree host values} {
global default lifetime_limit expiration_timeout session_fault_tolerance_level
global max_memory_size max_memory_time_limit errors_count_threshold security_level
global load_balancing_mode kill_problem_processes
agent_user agent_pwd cluster_user cluster_pwd auth_agent
if {$agent_user ne "" && $agent_pwd ne ""} {
set auth_agent "--agent-user=$agent_user --agent-pwd=$agent_pwd"
} else {
set auth_agent ""
}
# ัััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะณะปะพะฑะฐะปัะฝัะต ะฟะตัะตะผะตะฝะฝัะต ()
set lifetime_limit $default(lifetime_limit)
set expiration_timeout $default(expiration_timeout)
set session_fault_tolerance_level $default(session_fault_tolerance_level)
set max_memory_size $default(max_memory_size)
set max_memory_time_limit $default(max_memory_time_limit)
set errors_count_threshold $default(errors_count_threshold)
set security_level [lindex $default(security_level) 0]
set load_balancing_mode [lindex $default(load_balancing_mode) 0]
set frm [AddToplevel "ะะพะฑะฐะฒะปะตะฝะธะต ะบะปะฐััะตัะฐ" cluster_grey_64]
label $frm.lbl_host -text "ะะดัะตั ะพัะฝะพะฒะฝะพะณะพ ัะตัะฒะตัะฐ"
entry $frm.ent_host
label $frm.lbl_port -text "ะะพัั"
entry $frm.ent_port
$frm.ent_port insert end $default(port)
label $frm.lbl_name -text "ะะฐะทะฒะฐะฝะธะต ะบะปะฐััะตัะฐ"
entry $frm.ent_name
label $frm.lbl_secure_connect -text "ะะฐัะธััะฝะฝะพะต ัะพะตะดะธะฝะตะฝะธะต"
ttk::combobox $frm.cb_security_level -textvariable security_level -values $default(security_level)
label $frm.lbl_expiration_timeout -text "ะััะฐะฝะฐะฒะปะธะฒะฐัั ะฒัะบะปััะตะฝะฝัะต ะฟัะพัะตััั ัะตัะตะท:"
entry $frm.ent_expiration_timeout -textvariable expiration_timeout
label $frm.lbl_session_fault_tolerance_level -text "ะฃัะพะฒะตะฝั ะพัะบะฐะทะพัััะพะนัะธะฒะพััะธ"
entry $frm.ent_session_fault_tolerance_level -textvariable session_fault_tolerance_level
label $frm.lbl_load_balancing_mode -text "ะ ะตะถะธะผ ัะฐัะฟัะตะดะตะปะตะฝะธั ะฝะฐะณััะทะบะธ"
ttk::combobox $frm.cb_load_balancing_mode -textvariable load_balancing_mode
-values $default(load_balancing_mode)
label $frm.lbl_errors_count_threshold -text "ะะพะฟัััะธะผะพะต ะพัะบะปะพะฝะตะฝะธะต ะบะพะปะธัะตััะฒะฐ ะพัะธะฑะพะบ ัะตัะฒะตัะฐ, %"
entry $frm.ent_errors_count_threshold -textvariable errors_count_threshold
label $frm.lbl_processes -text "ะ ะฐะฑะพัะธะต ะฟัะพัะตััั:"
label $frm.lbl_lifetime_limit -text "ะะตัะธะพะด ะฟะตัะตะทะฐะฟััะบะฐ, ัะตะบ."
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
label $frm.lbl_max_memory_size -text "ะะพะฟัััะธะผัะน ะพะฑััะผ ะฟะฐะผััะธ, ะะ"
entry $frm.ent_max_memory_size -textvariable max_memory_size
label $frm.lbl_max_memory_time_limit -text "ะะฝัะตัะฒะฐะป ะฟัะตะฒััะตะฝะธั ะดะพะฟัััะธะผะพะณะพ ะพะฑััะผะฐ ะฟะฐะผััะธ, ัะตะบ."
entry $frm.ent_max_memory_time_limit -textvariable max_memory_time_limit
label $frm.lbl_kill_problem_processes -justify left -anchor nw -text "ะัะธะฝัะดะธัะตะปัะฝะพ ะทะฐะฒะตััะฐัั ะฟัะพะฑะปะตะผะฝัะต ะฟัะพัะตััั"
checkbutton $frm.check_kill_problem_processes -variable kill_problem_processes -onvalue yes -offvalue no
grid $frm.lbl_host -row 0 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_host -row 0 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_port -row 1 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_port -row 1 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_name -row 2 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_name -row 2 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_secure_connect -row 3 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_security_level -row 3 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_expiration_timeout -row 4 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_expiration_timeout -row 4 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_session_fault_tolerance_level -row 5 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_session_fault_tolerance_level -row 5 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_load_balancing_mode -row 6 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.cb_load_balancing_mode -row 6 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_errors_count_threshold -row 7 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_errors_count_threshold -row 7 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_processes -row 8 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.lbl_lifetime_limit -row 9 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_lifetime_limit -row 9 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_max_memory_size -row 10 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_max_memory_size -row 10 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_max_memory_time_limit -row 11 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.ent_max_memory_time_limit -row 11 -column 1 -sticky nsew -padx 5 -pady 5
grid $frm.lbl_kill_problem_processes -row 12 -column 0 -sticky nw -padx 5 -pady 5
grid $frm.check_kill_problem_processes -row 12 -column 1 -sticky nw -padx 5 -pady 5
# ะฟะตัะตะพะฟัะตะดะตะปัะตะผ ะพะฑัะฐะฑะพััะธะบ
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster insert
--host=[.add.frm.ent_host get]
--port=[.add.frm.ent_port get]
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth_agent $host"
Run::server $tree $host ""
destroy .add
}
return $frm
}
เจเจนเจจเจพเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจเฉเจก เจฆเฉ เจคเฉเจฒเจจเจพ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจ เฉฐเจคเจฐ เจจเฉฐเจเฉ เจ เฉฑเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจฎเฉเจ "เจเจเฉ" เจฌเจเจจ เจนเฉเจเจกเจฒเจฐ 'เจคเฉ เจงเจฟเจเจจ เจเฉเจเจฆเจฐเจค เจเจฐเจพเจเจเจพเฅค Tk เจตเจฟเฉฑเจ, เจตเจฟเจเจฒเจช เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเฉเจฐเจพเจซเจฟเจ เจเจฒเฉเจฎเฉเจเจเจธ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉเจฐเจพเจจ เจเจตเจฐเจฐเจพเจเจก เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ เจธเฉฐเจฐเจเจฟเจค. เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฌเจเจจ เจจเฉเฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจจ เจฒเจ เจธเจผเฉเจฐเฉเจเจคเฉ เจเจฎเจพเจเจก:
ttk::button $frm_btn.btn_ok -image ok_grey_24 -command { }
เจชเจฐ เจธเจพเจกเฉ เจฐเฉเจชเจพเจ เจตเจฟเฉฑเจ, เจเจฎเจพเจเจก เจฒเฉเฉเฉเจเจฆเฉ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเฉ เจนเฉ:
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster insert
--host=[.add.frm.ent_host get]
--port=[.add.frm.ent_port get]
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth_agent $host"
Run::server $tree $host ""
destroy .add
}
เจเจชเจฐเฉเจเจค เจเจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจ, "เจเฉฑเจฒเฉ เจนเฉเจ" เจฌเจเจจ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจเฉเฉเจจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจธเจผเฉเจฐเฉ เจเจฐเจฆเจพ เจนเฉเฅค
เจเฉฑเจฅเฉ เจเจน Tk เจตเจฟเฉฑเจ เจเฉเจฐเจพเจซเจฟเจ เจคเฉฑเจคเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ - เจตเฉฑเจ-เจตเฉฑเจ เจกเฉเจเจพ เจเจจเจชเฉเจ เจคเฉฑเจคเจพเจ (เจเจเจเจฐเฉ, เจเฉฐเจฌเฉเจฌเจพเจเจธ, เจเฉเฉฑเจเจฌเจเจจ, เจเจฆเจฟ) เจฒเจ เจเฉฑเจ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจเฉฑเจ เจเฉเจเจธเจ เจตเฉเจฐเฉเจเจฌเจฒ เจตเจเฉเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจฟเจ เจนเฉ:
entry $frm.ent_lifetime_limit -textvariable lifetime_limit
เจเจน เจตเฉเจฐเฉเจเจฌเจฒ เจเจฒเฉเจฌเจฒ เจจเฉเจฎเจธเจชเฉเจธ เจตเจฟเฉฑเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจ เจฆเจพเจเจฒ เจเฉเจคเจพ เจฎเฉเฉฑเจฒ เจธเจผเจพเจฎเจฒ เจนเฉเฅค เจเจน. เจซเฉเจฒเจก เจคเฉเจ เจฆเจพเจเจฒ เจเฉเจคเฉ เจเฉเจเจธเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ, เจคเฉเจนเจพเจจเฉเฉฐ เจธเจฟเจฐเจซ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจ เจจเฉเจธเจพเจฐเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจฌเฉเจธเจผเจ, เจฌเจธเจผเจฐเจคเฉ เจเจน เจคเฉฑเจค เจฌเจฃเจพเจเจฃ เจตเฉเจฒเฉ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจนเฉเจตเฉ)เฅค
เจฆเจฐเจ เจเฉเจคเฉ เจเฉเจเจธเจ เจจเฉเฉฐ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฆเจพ เจฆเฉเจเจพ เจคเจฐเฉเจเจพ (เจเจเจเจฐเฉ เจเจฟเจธเจฎ เจฆเฉ เจคเฉฑเจคเจพเจ เจฒเจ) get เจเจฎเจพเจเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจนเฉ:
.add.frm.ent_name get
เจเจชเจฐเฉเจเจค เจเฉเจก เจตเจฟเฉฑเจ เจเจน เจฆเฉเจตเฉเจ เจขเฉฐเจ เจตเฉเจเฉ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค
เจเจธ เจฌเจเจจ เจจเฉเฉฐ เจฆเจฌเจพเจเจฃ เจจเจพเจฒ, เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, rac เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจเฉเฉเจจ เจฒเจ เจคเจฟเจเจฐ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจฆเฉ เจจเจพเจฒ RunCommand เจตเจฟเจงเฉ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเจพ เจนเฉ:
/opt/1C/v8.3/x86_64/rac cluster insert --host=localhost --port=1540 --name=dsdsds --expiration-timeout=0 --lifetime-limit=0 --max-memory-size=0 --max-memory-time-limit=0 --security-level=0 --session-fault-tolerance-level=0 --load-balancing-mode=performance --errors-count-threshold=0 --kill-problem-processes=no localhost:1545
เจนเฉเจฃ เจ เจธเฉเจ เจฎเฉเฉฑเจ เจเจฎเจพเจเจก 'เจคเฉ เจเจเจเจฆเฉ เจนเจพเจ, เจเฉ เจธเจพเจจเฉเฉฐ เจฒเฉเฉเฉเจเจฆเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจจเจพเจฒ rac เจฆเฉ เจฒเจพเจเจ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจฆเฉ เจนเฉ, เจเฉเจเจฐ เจฒเฉเฉ เจนเฉเจตเฉ เจคเจพเจ เจเจฎเจพเจเจกเจพเจ เจฆเฉ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจธเฉเจเฉเจเจ เจ เจคเฉ เจฐเจฟเจเจฐเจจเจพเจ เจตเจฟเฉฑเจ เจชเจพเจฐเจธ เจตเฉ เจเจฐเจฆเฉ เจนเฉ:
RunCommand
proc RunCommand {root par} {
global dir rac_cmd cluster work_list_row_count agent_user agent_pwd cluster_user cluster_pwd
puts "$rac_cmd $par"
set work_list_row_count 0
# ะพัะบััะฒะฐะตะผ ะบะฐะฝะฐะป ะฒ ะฝะตะฑะปะพะบะธััััะตะผ ัะตะถะธะผะต
# $rac - ะบะพะผะฐะฝะดะฐ ั ะฟะพะปะฝัะผ ะฟัััะผ
# $par - ััะพัะผะธัะพะฒะฐะฝะฝัะต ะบะปััะธ ะทะฐะฟััะบะฐ ะธ ะพะฟัะธะธ
set pipe [open "|$rac_cmd $par" "r"]
try {
set lst ""
set l ""
# ะฒัะฒะพะด ะบะพะผะฐะฝะดั ะดะพะฑะฐะฒะปัะตะผ ะฒ ัะฟะธัะพะบ ัะฟะธัะบะพะฒ
while {[gets $pipe line]>=0} {
#puts $line
if {$line eq ""} {
lappend l $lst
set lst ""
} else {
lappend lst [string trim $line]
}
}
close $pipe
return $l
} on error {result options} {
# ะะฐะฟััะบ ะพะฑัะฐะฑะพััะธะบะฐ ะพัะธะฑะพะบ
ErrorParcing $result $options
return ""
}
}
เจฎเฉเฉฑเจ เจธเจฐเจตเจฐ เจกเฉเจเจพ เจฆเจพเจเจฒ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจธเจจเฉเฉฐ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจตเฉเจเจพ, เจเจธเจฆเฉ เจฒเจ, เจเจชเจฐเฉเจเจค Add:server เจตเจฟเจงเฉ เจตเจฟเฉฑเจ, เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเจพ เจเฉเจก เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐ เจนเฉ:
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
เจนเฉเจฃ, เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเจฐเจตเจฐ เจฆเฉ เจจเจพเจฎ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจจเจพเจฒ, เจธเจพเจจเฉเฉฐ เจเจธ เจธเจฐเจตเจฐ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจเจฒเฉฑเจธเจเจฐเจพเจ เจฆเฉ เจธเฉเจเฉ เจฎเจฟเจฒเจฆเฉ เจนเฉ, เจ เจคเฉ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจจเจพเจฒ, เจธเจพเจจเฉเฉฐ เจเจฒเฉฑเจธเจเจฐ เจคเฉฑเจคเจพเจ (เจธเจฐเจตเจฐ, เจเจจเจซเฉเจฌเฉเจธ, เจเจฆเจฟ) เจฆเฉ เจธเฉเจเฉ เจฎเจฟเจฒเจฆเฉ เจนเฉเฅค เจเจน TreePress เจตเจฟเจงเฉ (file lib/function.tcl) เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเฉเจคเจพ เจเจฟเจ เจนเฉ:
proc TreePress {tree} {
global host server active_cluster infobase
# ะพะฟัะตะดะตะปัะตะผ ะฒัะดะตะปะตะฝะฝัะน ัะปะตะผะตะฝั
set id [$tree selection]
# ัััะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฝัะถะฝัะต ะณะปะพะฑะฐะปัะฝัะต ะฟะตัะตะผะตะฝะฝัะต
SetGlobalVarFromTreeItems $tree $id
# ะะฟัะตะดะตะปัะตะผ ะบะปัั ะธ ะทะฝะฐัะตะฝะธะต, ั.ะต. ะธะผะตะฝะฝะพ ัะธะฟ ะฒัะฑัะฐะฝะฝะพะณะพ ัะปะตะผะตะฝัะฐ
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
# ะธ ะฒ ะทะฐะฒะธัะธะผะพััะธ ะพั ัะพะณะพ ััะพ ะฒัะฑัะฐะปะธ ะฑัะดะตั ะทะฐะฟััะตะฝะฐ ัะพะพัะฒะตัััะฒัััะฐั ะฟัะพัะตะดััะฐ
# ะฒ ะฟัะพัััะฐะฝััะฒะต ะธะผัะฝ Run
Run::$key $tree $host $values
}
เจเจธ เจ เจจเฉเจธเจพเจฐ, Run::server เจจเฉเฉฐ เจฎเฉเฉฑเจ เจธเจฐเจตเจฐ เจฒเจ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ (เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจฒเจ - Run::cluster, เจเฉฑเจ เจเฉฐเจฎ เจเจฐเจจ เจตเจพเจฒเฉ เจธเจฐเจตเจฐ เจฒเจ - Run::work_server, เจเจฆเจฟ)เฅค เจเจน. $key เจตเฉเจฐเฉเจเจฌเจฒ เจฆเจพ เจฎเฉเฉฑเจฒ เจตเจฟเจเจฒเจช เจฆเฉเจเจฐเจพ เจฆเจฐเจธเจพเจ เจเจ เจเฉเจฐเฉ เจเจฒเฉเจฎเฉเจเจ เจฆเฉ เจจเจพเจฎ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจนเฉ -เจเจก.
เจเจ เจตเจฟเจงเฉ เจตเฉฑเจฒ เจงเจฟเจเจจ เจฆเฉเจเจ
เจเจฒเจพเจ::เจธเจฐเจตเจฐ
proc Run::server {tree host values} {
# ะฟะพะปััะฐะตะผ ัะฟะธัะพะบ ะบะปะฐััะตัะพะฒ ััะตะฑัะตะผะพะณะพ ัะตัะฒะตัะฐ
set lst [RunCommand server::$host "cluster list $host"]
if {$lst eq ""} {return}
set l [lindex $lst 0]
#puts $lst
# ัะดะฐะปัะตะผ ะปะธัะฝะตะต ะธะท ัะฟะธัะบะฐ
.frm_work.tree_work delete [ .frm_work.tree_work children {}]
# ัะธัะฐะตะผ ัะฟะธัะพะบ
foreach cluster_list $lst {
# ะะฐะฟะพะปะฝัะตะผ ัะฟะธัะพะบ ะฟะพะปััะตะฝะฝัะผะธ ะทะฝะฐัะตะฝะธัะผะธ
InsertItemsWorkList $cluster_list
# ะพะฑัะฐะฑะฐััะฒะฐะตะผ ะฒัะฒะพะด (ัะฟะธัะพะบ) ะดะปั ะดะพะฑะฐะฒะปะตะฝะธั ะดะฐะฝะฝัั
ะฒ ะดะตัะตะฒะพ
foreach i $cluster_list {
#puts $i
set cluster_list [split $i ":"]
if {[string trim [lindex $cluster_list 0]] eq "cluster"} {
set cluster_id [string trim [lindex $cluster_list 1]]
lappend cluster($cluster_id) $cluster_id
}
if {[string trim [lindex $cluster_list 0]] eq "name"} {
lappend cluster($cluster_id) [string trim [lindex $cluster_list 1]]
}
}
}
# ะดะพะฑะฐะฒะปัะตะผ ะบะปะฐััะตัั ะฒ ะดะตัะตะฒะพ
foreach x [array names cluster] {
set id [lindex $cluster($x) 0]
if { [$tree exists "cluster::$id"] == 0 } {
$tree insert "server::$host" end -id "cluster::$id" -text "[lindex $cluster($x) 1]" -values "$id"
# ะดะพะฑะฐะฒะปัะตะผ ัะปะตะผะตะฝัั ะฒ ะบะปะฐััะตั
InsertClusterItems $tree $id
}
}
if { [$tree exists "agent_admins::$id"] == 0 } {
$tree insert "server::$host" end -id "agent_admins::$id" -text "ะะดะผะธะฝะธัััะฐัะพัั" -values "$id"
#InsertClusterItems $tree $id
}
}
เจเจน เจชเฉเจฐเจเจฟเจฐเจฟเจ เจธเจฐเจตเจฐ เจคเฉเจ RunCommand เจเจฎเจพเจเจก เจฆเฉเจเจฐเจพ เจชเฉเจฐเจพเจชเจค เจเฉเจคเฉเจเจ เจเจเจเจ เจเฉเจเจผเจพเจ 'เจคเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจเฉเจฐเฉ - เจเจฒเฉฑเจธเจเจฐ, เจตเฉฑเจ-เจตเฉฑเจ เจฐเฉเจ เจคเฉฑเจค (เจฌเฉเจธ, เจเจพเจฐเจเจธเจผเฉเจฒ เจธเจฐเจตเจฐ, เจธเฉเจธเจผเจจ, เจ เจคเฉ เจนเฉเจฐ) เจตเจฟเฉฑเจ เจนเจฐ เจคเจฐเฉเจนเจพเจ เจฆเฉเจเจ เจเฉเจเจผเจพเจ เจเฉเฉเจฆเฉ เจนเฉเฅค เจเฉ เจคเฉเจธเฉเจ เจงเจฟเจเจจ เจจเจพเจฒ เจฆเฉเจเจฆเฉ เจนเฉ, เจคเจพเจ เจคเฉเจธเฉเจ เจ เฉฐเจฆเจฐ InsertItemsWorkList เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฒเจ เจเฉฑเจ เจเจพเจฒ เจตเฉเจเฉเจเฉเฅค เจเจน rac เจเฉฐเจธเฉเจฒ เจเจชเจฏเฉเจเจคเจพ เจฆเฉ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจชเฉเจฐเฉเจธเฉเจธ เจเจฐเจเฉ เจเฉฑเจ เจเจฐเจพเจซเฉเจเจฒ เจธเฉเจเฉ เจตเจฟเฉฑเจ เจคเฉฑเจค เจเฉเฉเจจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจเฉ เจเจฟ เจชเจนเจฟเจฒเจพเจ $lst เจตเฉเจฐเฉเจเจฌเจฒ เจฒเจ เจเฉฑเจ เจธเฉเจเฉ เจตเจเฉเจ เจตเจพเจชเจธ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจเจน เจเฉฑเจ เจเฉเจฒเจจ เจฆเฉเจเจฐเจพ เจตเฉฑเจ เจเฉเจคเฉ เจคเฉฑเจคเจพเจ เจฆเฉ เจเฉเฉเฉ เจตเจพเจฒเฉเจเจ เจธเฉเจเฉเจเจ เจฆเฉ เจธเฉเจเฉ เจนเฉเฅค
เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจฒเฉฑเจธเจเจฐ เจเจจเฉเจเจธเจผเจจเจพเจ เจฆเฉ เจธเฉเจเฉ:
svk@svk ~]$ /opt/1C/v8.3/x86_64/rac connection list --cluster=783d2170-56c3-11e8-c586-fc75165efbb2 localhost:1545
connection : dcf5991c-7d24-11e8-1690-fc75165efbb2
conn-id : 0
host : svk.home
process : 79de2e16-56c3-11e8-c586-fc75165efbb2
infobase : 00000000-0000-0000-0000-000000000000
application : "JobScheduler"
connected-at : 2018-07-01T14:49:51
session-number : 0
blocked-by-ls : 0
connection : b993293a-7d24-11e8-1690-fc75165efbb2
conn-id : 0
host : svk.home
process : 79de2e16-56c3-11e8-c586-fc75165efbb2
infobase : 00000000-0000-0000-0000-000000000000
application : "JobScheduler"
connected-at : 2018-07-01T14:48:52
session-number : 0
blocked-by-ls : 0
เจเฉเจฐเจพเจซเจฟเจเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจน เจเฉเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ:
เจเจชเจฐเฉเจเจค เจตเจฟเจงเฉ เจธเจพเจฐเจฃเฉ เจจเฉเฉฐ เจญเจฐเจจ เจฒเจ เจธเจฟเจฐเจฒเฉเจ เจ เจคเฉ เจกเฉเจเจพ เจฒเจ เจคเฉฑเจคเจพเจ เจฆเฉ เจจเจพเจฎ เจเฉเจฃเจฆเฉ เจนเฉ:
เจเจเจเจฎเจพเจ เจตเจฐเจเจฒเจฟเจธเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
proc InsertItemsWorkList {lst} {
global work_list_row_count
# ัััะฐะฝะพะฒะบะฐ ัะตัะตะดะพะฒะฐะฝะธั ัะฒะตัะฐ ะดะปั ัััะพะบะธ
if [expr $work_list_row_count % 2] {
set tag dark
} else {
set tag light
}
# ัะฐะทะฑะพั ัััะพะบ ะฝะฐ ะฟะฐัั ะบะปัั - ะทะฝะฐัะตะฝะธะต
foreach i $lst {
if [regexp -nocase -all -- {(D+)(s*?|)(:)(s*?|)(.*)} $i match param v2 v3 v4 value] {
lappend column_list [string trim $param]
lappend value_list [string trim $value]
}
}
# ะทะฐะฟะพะปะฝะตะฝะธะต ัะฐะฑะปะธัั
.frm_work.tree_work configure -columns $column_list -displaycolumns $column_list
.frm_work.tree_work insert {} end -values $value_list -tags $tag
.frm_work.tree_work column #0 -stretch
# ัััะฐะฝะพะฒะบะฐ ะทะฐะณะพะปะพะฒะบะพะฒ
foreach j $column_list {
.frm_work.tree_work heading $j -text $j
}
incr work_list_row_count
}
เจเฉฑเจฅเฉ, เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเจฎเจพเจเจก [split $str ":"] เจฆเฉ เจฌเจเจพเจ, เจเฉ เจธเจเฉเจฐเจฟเฉฐเจ เจจเฉเฉฐ ":" เจฆเฉเจเจฐเจพ เจตเฉฑเจ เจเฉเจคเฉ เจคเฉฑเจคเจพเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฆเฉ เจนเฉ เจ เจคเฉ เจเฉฑเจ เจธเฉเจเฉ เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเฉ, เจเฉฑเจ เจจเจฟเจฏเจฎเจค เจธเจฎเฉเจเจฐเจจ เจตเจฐเจคเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจเฉเจ เจคเฉฑเจคเจพเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเฉเจฒเจจ เจตเฉ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค
InsertClusterItems เจตเจฟเจงเฉ (เจเจ เจธเจฎเจพเจจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ) เจฌเจธ เจฒเฉเฉเฉเจเจฆเฉ เจเจฒเฉฑเจธเจเจฐ เจคเฉฑเจค เจฆเฉ เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจชเจเจพเจฃเจเจฐเจคเจพเจตเจพเจ เจฆเฉ เจจเจพเจฒ เจเจพเจเจฒเจก เจเจฒเฉเจฎเฉเจเจเจธ เจฆเฉ เจเฉฑเจ เจธเฉเจเฉ เจเฉเฉเจฆเฉ เจนเฉเฅค
เจเจฒเฉฑเจธเจเจฐ เจเจเจเจฎเจพเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
proc InsertClusterItems {tree id} {
set parent "cluster::$id"
$tree insert $parent end -id "infobases::$id" -text "ะะฝัะพัะผะฐัะธะพะฝะฝัะต ะฑะฐะทั" -values "$id"
$tree insert $parent end -id "servers::$id" -text "ะ ะฐะฑะพัะธะต ัะตัะฒะตัั" -values "$id"
$tree insert $parent end -id "admins::$id" -text "ะะดะผะธะฝะธัััะฐัะพัั" -values "$id"
$tree insert $parent end -id "managers::$id" -text "ะะตะฝะตะดะถะตัั ะบะปะฐััะตัะฐ" -values $id
$tree insert $parent end -id "processes::$id" -text "ะ ะฐะฑะพัะธะต ะฟัะพัะตััั" -values "workprocess-all"
$tree insert $parent end -id "sessions::$id" -text "ะกะตะฐะฝัั" -values "sessions-all"
$tree insert $parent end -id "locks::$id" -text "ะะปะพะบะธัะพะฒะบะธ" -values "blocks-all"
$tree insert $parent end -id "connections::$id" -text "ะกะพะตะดะธะฝะตะฝะธั" -values "connections-all"
$tree insert $parent end -id "profiles::$id" -text "ะัะพัะธะปะธ ะฑะตะทะพะฟะฐัะฝะพััะธ" -values $id
}
เจคเฉเจธเฉเจ เจเฉฑเจ เจธเจฎเจพเจจ เจตเจฟเจงเฉ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจฆเฉ เจนเฉเจฐ เจตเจฟเจเจฒเจชเจพเจ 'เจคเฉ เจตเจฟเจเจพเจฐ เจเจฐ เจธเจเจฆเฉ เจนเฉ, เจเจฟเฉฑเจฅเฉ เจเจน เจธเจชเฉฑเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจฆเจฟเจเจพเจ เจฆเฉเจตเฉเจเจพ เจเจฟ เจคเฉเจธเฉเจ เจเจฟเจตเฉเจ เจ เจจเฉเจเฉเจฒเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจฆเฉเจนเจฐเจพเจเจฃ เจตเจพเจฒเฉเจเจ เจเจฎเจพเจเจกเจพเจ เจคเฉเจ เจเฉเจเจเจพเจฐเจพ เจชเจพ เจธเจเจฆเฉ เจนเฉ:
เจเจธ เจตเจฟเจงเฉ เจตเจฟเฉฑเจ, เจเฉเฉเจจเจพ เจ เจคเฉ เจเจพเจเจ เจเจฐเจจเจพ เจธเจฟเจฐเฉ เจคเฉเจ เจนเฉฑเจฒ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ:
InsertBaseItems
proc InsertBaseItems {tree id} {
set parent "infobase::$id"
if { [$tree exists "sessions::$id"] == 0 } {
$tree insert $parent end -id "sessions::$id" -text "ะกะตะฐะฝัั" -values "$id"
}
if { [$tree exists "locks::$id"] == 0 } {
$tree insert $parent end -id "locks::$id" -text "ะะปะพะบะธัะพะฒะบะธ" -values "$id"
}
if { [$tree exists "connections::$id"] == 0 } {
$tree insert $parent end -id "connections::$id" -text "ะกะพะตะดะธะฝะตะฝะธั" -values "$id"
}
}
เจเฉฑเจฅเฉ เจเฉฑเจ เจนเฉเจฐ เจธเจนเฉ เจชเจนเฉเฉฐเจ เจนเฉ:
เจชเฉเจฐเฉเจซเจพเจเจฒ เจเจเจเจฎเจพเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
proc InsertProfileItems {tree id} {
set parent "profile::$id"
set lst {
{dir "ะะธัััะฐะปัะฝัะต ะบะฐัะฐะปะพะณะธ"}
{com "ะ ะฐะทัะตััะฝะฝัะต COM-ะบะปะฐััั"}
{addin "ะะฝะตัะฝะธะต ะบะพะผะฟะพะฝะตะฝัั"}
{module "ะะฝะตัะฝะธะต ะพััััั ะธ ะพะฑัะฐะฑะพัะบะธ"}
{app "ะ ะฐะทัะตััะฝะฝัะต ะฟัะธะปะพะถะตะฝะธั"}
{inet "ะ ะตััััั ะธะฝัะตัะฝะตั"}
}
foreach i $lst {
append item [lindex $i 0] "::$id"
if { [$tree exists $item] == 0 } {
$tree insert $parent end -id $item -text [lindex $i 1] -values "$id"
}
unset item
}
}
เจเจนเจจเจพเจ เจตเจฟเฉฑเจ เจ เฉฐเจคเจฐ เจเฉฑเจ เจฒเฉเจช เจฆเฉ เจตเจฐเจคเฉเจ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจฆเฉเจนเจฐเจพเจเจเจ เจเจเจเจ เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจฟเจธ เจชเจนเฉเฉฐเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจเจพ เจกเจฟเจตเฉเจฒเจชเจฐ เจฆเฉ เจฎเจฐเจเจผเฉ 'เจคเฉ เจนเฉเฅค
เจ เจธเฉเจ เจคเฉฑเจค เจเฉเฉเจจ เจ เจคเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจจเฉเฉฐ เจเจตเจฐ เจเฉเจคเจพ เจนเฉ, เจนเฉเจฃ เจธเฉฐเจชเจพเจฆเจจ 'เจคเฉ เจงเจฟเจเจจ เจฆเฉเจฃ เจฆเจพ เจธเจฎเจพเจ เจ เจเจฟเจ เจนเฉเฅค เจเจฟเจเจเจเจฟ, เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ, เจเจนเฉ เจฎเจพเจชเจฆเฉฐเจกเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจธเฉฐเจชเจพเจฆเจจ เจ เจคเฉ เจเฉเฉเจจ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ (เจเจพเจฃเจเจพเจฐเฉ เจ เจงเจพเจฐ เจฆเฉ เจ เจชเจตเจพเจฆ เจฆเฉ เจจเจพเจฒ), เจเจนเฉ เจกเจพเจเจฒเจพเจ เจซเจพเจฐเจฎ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจเฉเฉเจจ เจฒเจ เจเจพเจฒเจฟเฉฐเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฒเจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
เจเฉเฉเฉ::$key->AddToplevel
เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเฉ เจธเฉฐเจชเจพเจฆเจจ เจฒเจ:
เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเฉ::$key->Add::$key->AddTopLevel
เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเจ เจเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเฉเจ, เจฏเจพเจจเฉ. เจเฉเจฐเฉ เจตเจฟเฉฑเจ เจเจฒเฉฑเจธเจเจฐ เจฆเฉ เจจเจพเจฎ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจเฉเจฒเจฌเจพเจฐ (เจชเฉเจจเจธเจฟเจฒ) เจตเจฟเฉฑเจ เจเจกเจฟเจ เจฌเจเจจ เจฆเจฌเจพเจ เจ เจคเฉ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจซเจพเจฐเจฎ เจธเจเฉเจฐเฉเจจ 'เจคเฉ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจนเฉเจตเฉเจเจพ:
เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเฉ::เจเจฒเฉฑเจธเจเจฐ
proc Edit::cluster {tree host values} {
global default lifetime_limit expiration_timeout session_fault_tolerance_level
global max_memory_size max_memory_time_limit errors_count_threshold security_level
global load_balancing_mode kill_problem_processes active_cluster
agent_user agent_pwd cluster_user cluster_pwd auth
if {$cluster_user ne "" && $cluster_pwd ne ""} {
set auth "--cluster-user=$cluster_user --cluster-pwd=$cluster_pwd"
} else {
set auth ""
}
# ัะธััะตะผ ัะพัะผั ะดะปั ะบะปะฐััะตัะฐ
set frm [Add::cluster $tree $host $values]
# ะผะตะฝัะตะผ ัะตะบัั ะฝะฐ ะผะตัะบะต
$frm configure -text "ะ ะตะดะฐะบัะธัะพะฒะฐะฝะธะต ะบะปะฐััะตัะฐ"
set active_cluster $values
# ะฟะพะปััะฐะตะผ ะดะฐะฝะฝัะต ะฟะพ ะฒัะดะตะปะตะฝะฝะพะผั ะบะปะฐััะตัั
set lst [RunCommand cluster::$values "cluster info --cluster=$active_cluster $host"]
# ะทะฐะฟะพะปะฝัะตะผ ะฟะพะปั
FormFieldsDataInsert $frm $lst
# ะฒัะบะปััะฐะตะผ ะฟะพะปั, ัะตะดะฐะบัะธัะพะฒะฐะฝะธะต ะบะพัะพััั
ะทะฐะฟัะตัะตะฝะพ
$frm.ent_host configure -state disable
$frm.ent_port configure -state disable
# ะฟะตัะตะฝะฐะทะฝะฐัะฐะตะผ ะพะฑัะฐะฑะพััะธะบ
.add.frm_btn.btn_ok configure -command {
RunCommand "" "cluster update
--cluster=$active_cluster $auth
--name=[.add.frm.ent_name get]
--expiration-timeout=$expiration_timeout
--lifetime-limit=$lifetime_limit
--max-memory-size=$max_memory_size
--max-memory-time-limit=$max_memory_time_limit
--security-level=$security_level
--session-fault-tolerance-level=$session_fault_tolerance_level
--load-balancing-mode=$load_balancing_mode
--errors-count-threshold=$errors_count_threshold
--kill-problem-processes=$kill_problem_processes
$auth $host"
$tree delete "cluster::$active_cluster"
Run::server $tree $host ""
destroy .add
}
}
เจเฉเจก เจตเจฟเฉฑเจ เจเจฟเฉฑเจชเจฃเฉเจเจ เจฆเฉ เจ เจงเจพเจฐ เจคเฉ, เจธเจฟเจงเจพเจเจค เจตเจฟเฉฑเจ, เจธเจญ เจเฉเจ เจธเจชเจธเจผเจ เจนเฉ, เจธเจฟเจตเจพเจ เจฌเจเจจ เจนเฉเจเจกเจฒเจฐ เจเฉเจก เจจเฉเฉฐ เจเจตเจฐเจฐเจพเจเจก เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจ เจคเฉ เจเฉฑเจ FormFieldsDataInsert เจตเจฟเจงเฉ เจนเฉ เจเฉ เจกเฉเจเจพ เจจเจพเจฒ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจญเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเฉ:
FormFieldsDataInsert
proc FormFieldsDataInsert {frm lst} {
foreach i [lindex $lst 0] {
# ะฟะพะปััะฐะตะผ ัะฟะธัะพะบ ะฟะฐัะฐะผะตััะพะฒ ะธ ะทะฝะฐัะตะฝะธะน
if [regexp -nocase -all -- {(D+)(s*?|)(:)(s*?|)(.*)} $i match param v2 v3 v4 value] {
# ะผะตะฝัะตะผ ัะธะผะฒะพะปั
regsub -all -- "-" [string trim $param] "_" entry_name
# ะทะฐะฟะพะปะฝัะตะผ ะดะฐะฝะฝัะผะธ
if [winfo exists $frm.ent_$entry_name] {
$frm.ent_$entry_name delete 0 end
$frm.ent_$entry_name insert end [string trim $value """]
}
if [winfo exists $frm.cb_$entry_name] {
global $entry_name
set $entry_name [string trim $value """]
}
# ะดะปั ัะตะบะฑะพะบัะพะฒ ะผะตะฝัะตะผ ะทะฝะฐัะตะฝะธั
if [winfo exists $frm.check_$entry_name] {
global $entry_name
if {$value eq "0"} {
set $entry_name no
} elseif {$value eq "1"} {
set $entry_name yes
} else {
set $entry_name $value
}
}
}
}
}
เจเจธ เจตเจฟเจงเฉ เจตเจฟเฉฑเจ, tcl เจฆเจพ เจเฉฑเจ เจนเฉเจฐ เจซเจพเจเจฆเจพ เจธเจพเจนเจฎเจฃเฉ เจเจเจ - เจฆเฉเจเฉ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจฎเฉเฉฑเจฒ เจตเฉเจฐเฉเจเจฌเจฒ เจจเจพเจฎเจพเจ เจตเจเฉเจ เจฌเจฆเจฒเฉ เจเจพเจเจฆเฉ เจนเจจเฅค เจเจน. เจซเจพเจฐเจฎเจพเจ เจจเฉเฉฐ เจญเจฐเจจ เจ เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจธเจผเฉเจฐเฉเจเจค เจจเฉเฉฐ เจธเจตเฉเจเจพเจฒเจค เจเจฐเจจ เจฒเจ, เจเฉเจคเจฐเจพเจ เจ เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจจเจพเจฎ rac เจเจชเจฏเฉเจเจคเจพ เจฆเฉ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจธเจตเจฟเฉฑเจเจพเจ เจ เจคเฉ เจเฉเจ เจ เจชเจตเจพเจฆ เจฆเฉ เจจเจพเจฒ เจเจฎเจพเจเจก เจเจเจเจชเฉเฉฑเจ เจชเฉเจฐเจพเจฎเฉเจเจฐเจพเจ เจฆเฉ เจจเจพเจฎ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเฉ เจนเจจ - เจกเฉเจธเจผ เจจเฉเฉฐ เจเฉฑเจ เจ เฉฐเจกเจฐเจธเจเฉเจฐ เจจเจพเจฒ เจฌเจฆเจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจฆเจพ เจ เจจเฉเจธเฉเจเจฟเจค-เจจเฉเจเจฐเฉเจเจ-เจเจจเจเจพเจฐ เจเฉเจคเจฐ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเจพ เจนเฉ ent_scheduled_jobs_deny เจ เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจ เจจเฉเจธเฉเจเจฟเจค_เจจเฉเจเจฐเฉเจเจ_เจฎเฉฐเจจเฉ.
เจเฉเฉเจจ เจ เจคเฉ เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเจจ เจฒเจ เจซเจพเจฐเจฎ เจเฉเจคเจฐเจพเจ เจฆเฉ เจฐเจเจจเจพ เจตเจฟเฉฑเจ เจตเฉฑเจเจฐเฉ เจนเฉ เจธเจเจฆเฉ เจนเจจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจเฉฑเจ เจเจพเจฃเจเจพเจฐเฉ เจ เจงเจพเจฐ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ:
เจเจพเจฃเจเจพเจฐเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจจเฉเฉฐ เจเฉเฉเจจเจพ
เจเจพเจฃเจเจพเจฐเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจฆเจพ เจธเฉฐเจชเจพเจฆเจจ เจเจฐเจจเจพ
เจธเฉฐเจชเจพเจฆเจจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจธเฉฐเจชเจพเจฆเจจ::เจเจจเจซเฉเจฌเฉเจธ, เจฒเฉเฉเฉเจเจฆเฉ เจเฉเจคเจฐเจพเจ เจจเฉเฉฐ เจซเจพเจฐเจฎ เจตเจฟเฉฑเจ เจเฉเฉเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจเจธ เจฒเจ เจฎเฉเจ เจเจธเจจเฉเฉฐ เจเฉฑเจฅเฉ เจชเฉเจธเจผ เจจเจนเฉเจ เจเจฐเจฆเจพ เจนเจพเจเฅค
เจธเจฎเจพเจจเจคเจพ เจฆเฉเจเจฐเจพ, เจนเฉเจฐ เจคเฉฑเจคเจพเจ เจฒเจ เจเฉเฉเจจ, เจธเฉฐเจชเจพเจฆเจจ เจเจฐเจจ, เจฎเจฟเจเจพเจเจฃ เจฆเฉเจเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฒเจพเจเฉ เจเฉเจคเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค
เจเจฟเจเจเจเจฟ เจเจชเจฏเฉเจเจคเจพ เจฆเฉ เจธเฉฐเจเจพเจฒเจจ เจฆเจพ เจฎเจคเจฒเจฌ เจธเจฐเจตเจฐ, เจเจฒเฉฑเจธเจเจฐ, เจเจพเจฃเจเจพเจฐเฉ เจฌเฉเจธ, เจเจฆเจฟ เจฆเฉ เจ เจธเฉเจฎเจฟเจค เจเจฟเจฃเจคเฉ เจนเฉ, เจเจน เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฒเจ เจเจฟ เจเจฟเจนเฉเจพ เจเจฒเฉฑเจธเจเจฐ เจเจฟเจธ เจธเจฐเจตเจฐ เจเจพเจ เจธเฉเจเจจเจพ เจธเฉเจฐเฉฑเจเจฟเจ เจชเฉเจฐเจฃเจพเจฒเฉ เจจเจพเจฒ เจธเจฌเฉฐเจงเจค เจนเฉ, เจเจ เจเจฒเฉเจฌเจฒ เจตเฉเจฐเฉเจเจฌเจฒ เจชเฉเจธเจผ เจเฉเจคเฉ เจเจ เจนเจจ, เจเจฟเจจเฉเจนเจพเจ เจฆเฉ เจฎเฉเฉฑเจฒ เจนเจฐเฉเจ เจจเฉเฉฐ เจธเฉเฉฑเจ เจเฉเจคเฉ เจเจ เจนเจจเฅค เจเจฆเฉเจ เจคเฉเจธเฉเจ เจฐเฉเฉฑเจ เจฆเฉ เจคเฉฑเจคเจพเจ 'เจคเฉ เจเจฒเจฟเฉฑเจ เจเจฐเจฆเฉ เจนเฉเฅค เจเจน. เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฎเฉเฉ-เจฎเฉเฉ เจธเจพเจฐเฉ เจฎเฉเจฒ เจคเฉฑเจคเจพเจ เจฆเฉเจเจฐเจพ เจเจฒเจฆเฉ เจนเฉ เจ เจคเฉ เจตเฉเจฐเฉเจเจฌเจฒ เจธเฉเฉฑเจ เจเจฐเจฆเฉ เจนเฉ:
GlobalVarFromTreeItems เจธเฉเฉฑเจ เจเจฐเฉ
proc SetGlobalVarFromTreeItems {tree id} {
global host server active_cluster infobase
set parent [$tree parent $id]
set values [$tree item $id -values]
set key [lindex [split $id "::"] 0]
switch -- $key {
server {set host $values}
work_server {set server $values}
cluster {set active_cluster $values}
infobase {set infobase $values}
}
if {$parent eq ""} {
return
} else {
SetGlobalVarFromTreeItems $tree $parent
}
}
1C เจเจฒเฉฑเจธเจเจฐ เจคเฉเจนเจพเจจเฉเฉฐ เจ เจงเจฟเจเจพเจฐ เจฆเฉ เจจเจพเจฒ เจเจพเจ เจฌเจฟเจจเจพเจ เจเฉฐเจฎ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉเฅค เจเฉฑเจฅเฉ เจฆเฉ เจชเฉเจฐเจเจพเจฐ เจฆเฉ เจชเฉเจฐเจธเจผเจพเจธเจ เจนเจจ-เจเจฒเฉฑเจธเจเจฐ เจเจเฉฐเจ เจชเฉเจฐเจธเจผเจพเจธเจ เจ เจคเฉ เจเจฒเฉฑเจธเจเจฐ เจชเฉเจฐเจธเจผเจพเจธเจเฅค เจเจธ เจ เจจเฉเจธเจพเจฐ, เจธเจนเฉ เจเจพเจฐเจตเจพเจ เจฒเจ, เจชเฉเจฐเจธเจผเจพเจธเจ เจฒเฉเจเจเจจ เจ เจคเฉ เจชเจพเจธเจตเจฐเจก เจตเจพเจฒเฉ 4 เจนเฉเจฐ เจเจฒเฉเจฌเจฒ เจตเฉเจฐเฉเจเจฌเจฒ เจชเฉเจธเจผ เจเฉเจคเฉ เจเจ เจธเจจเฅค เจเจน. เจเฉเจเจฐ เจเจฒเฉฑเจธเจเจฐ เจตเจฟเฉฑเจ เจเฉฑเจ เจชเฉเจฐเจธเจผเจพเจธเจ เจเจพเจคเจพ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจกเจพ เจฒเฉเจเจเจจ เจ เจคเฉ เจชเจพเจธเจตเจฐเจก เจฆเจฐเจ เจเจฐเจจ เจฒเจ เจเฉฑเจ เจกเจพเจเจฒเจพเจ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจกเฉเจเจพ เจจเฉเฉฐ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจธเฉเจฐเฉฑเจเจฟเจ เจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจ เจคเฉ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเจฒเฉฑเจธเจเจฐ เจฒเจ เจนเจฐเฉเจ เจเจฎเจพเจเจก เจตเจฟเฉฑเจ เจชเจพ เจฆเจฟเฉฑเจคเจพ เจเจพเจตเฉเจเจพเฅค
เจเจน เจเจฒเจคเฉ เจจเฉเฉฐ เจธเฉฐเจญเจพเจฒเจฃ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉ เจเจผเจฟเฉฐเจฎเฉเจตเจพเจฐเฉ เจนเฉเฅค
เจเจฒเจคเฉ เจชเจพเจฐเจธเจฟเฉฐเจ
proc ErrorParcing {err opt} {
global cluster_user cluster_pwd agent_user agent_pwd
switch -regexp -- $err {
"Cluster administrator is not authenticated" {
AuthorisationDialog "ะะดะผะธะฝะธัััะฐัะพั ะบะปะฐััะตัะฐ"
.auth_win.frm_btn.btn_ok configure -command {
set cluster_user [.auth_win.frm.ent_name get]
set cluster_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
#RunCommand $root $par
}
"Central server administrator is not authenticated" {
AuthorisationDialog "ะะดะผะธะฝะธัััะฐัะพั ะฐะณะตะฝัะฐ ะบะปะฐััะตัะฐ"
.auth_win.frm_btn.btn_ok configure -command {
set agent_user [.auth_win.frm.ent_name get]
set agent_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
}
"ะะดะผะธะฝะธัััะฐัะพั ะบะปะฐััะตัะฐ ะฝะต ะฐััะตะฝัะธัะธัะธัะพะฒะฐะฝ" {
AuthorisationDialog "ะะดะผะธะฝะธัััะฐัะพั ะบะปะฐััะตัะฐ"
.auth_win.frm_btn.btn_ok configure -command {
set cluster_user [.auth_win.frm.ent_name get]
set cluster_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
#RunCommand $root $par
}
"ะะดะผะธะฝะธัััะฐัะพั ัะตะฝััะฐะปัะฝะพะณะพ ัะตัะฒะตัะฐ ะฝะต ะฐััะตะฝัะธัะธัะธัะพะฒะฐะฝ" {
AuthorisationDialog "ะะดะผะธะฝะธัััะฐัะพั ะฐะณะตะฝัะฐ ะบะปะฐััะตัะฐ"
.auth_win.frm_btn.btn_ok configure -command {
set agent_user [.auth_win.frm.ent_name get]
set agent_pwd [.auth_win.frm.ent_pwd get]
destroy .auth_win
}
}
(.+) {
tk_messageBox -type ok -icon error -message "$err"
}
}
}
เจเจน. เจเจธ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเจพ เจนเฉ เจเจฟ เจเจฎเจพเจเจก เจเฉ เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเฉ, เจชเฉเจฐเจคเฉเจเฉเจฐเจฟเจ เจเจธ เจ เจจเฉเจธเจพเจฐ เจนเฉเจตเฉเจเฉเฅค
เจเจธ เจธเจฎเฉเจ, เจฒเจเจญเจ 95 เจชเฉเจฐเจคเฉเจธเจผเจค เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจ เจนเฉ, เจเฉ เจฌเจพเจเฉ เจฌเจเจฟเจ เจนเฉ เจเจน เจธเฉเจฐเฉฑเจเจฟเจ เจชเฉเจฐเฉเจซเจพเจเจฒเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฐเจฎ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพ เจนเฉ เจ เจคเฉ เจเจธเจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจนเฉ =). เจเจน เจธเจญ เจนเฉ. เจฎเฉเจ เจเจฐเจพเจฌ เจเจนเจพเจฃเฉ เจฒเจ เจฎเฉเจเจซเฉ เจฎเฉฐเจเจฆเจพ เจนเจพเจเฅค
เจเฉเจก เจฐเจตเจพเจเจคเฉ เจคเฉเจฐ 'เจคเฉ เจเจชเจฒเจฌเจง เจนเฉ
เจ เฉฑเจชเจกเฉเจ: เจฎเฉเจ เจธเฉเจฐเฉฑเจเจฟเจ เจชเฉเจฐเฉเจซเจพเจเจฒเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจชเฉเจฐเจพ เจเจฐ เจฒเจฟเจ เจนเฉเฅค เจนเฉเจฃ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ 100% เจฒเจพเจเฉ เจนเฉเฅค
เจ
เฉฑเจชเจกเฉเจ 2: เจ
เฉฐเจเจฐเฉเจเจผเฉ เจ
เจคเฉ เจฐเฉเจธเฉ เจตเจฟเฉฑเจ เจธเจฅเจพเจจเจเจเจฐเจจ เจเฉเฉเจฟเจ เจเจฟเจ เจนเฉ, win7 เจตเจฟเฉฑเจ เจเฉฐเจฎ เจฆเฉ เจเจพเจเจ เจเฉเจคเฉ เจเจ เจนเฉ
เจธเจฐเฉเจค: www.habr.com