เดฒเดฟเดจเดเตเดธเต เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ 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"
}
}
เดเดตเดถเตเดฏเดฎเตเดณเตเดณเดคเตเดฒเตเดฒเดพเด เดกเตเตบเดฒเตเดกเต เดเตเดฏเตโเดคเต เดฑเดพเดเตเดเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเด เดถเตเดทเด, เดเดฐเต เดเตเดฐเดพเดซเดฟเดเตเดเตฝ เดตเดฟเตปเดกเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด. เดชเตเดฐเตเดเตเดฐเดพเด เดเดจเตเดฑเตผเดซเตเดธเดฟเตฝ เดฎเตเดจเตเดจเต เดเดเดเดเตเดเตพ เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต:
เดเตเตพเดฌเดพเตผ, เดเตเดฐเต, เดฒเดฟเดธเตเดฑเตเดฑเต
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 cluster โdaemon" เดเดจเตเดจ เดเดฎเดพเตปเดกเต เดเดชเดฏเตเดเดฟเดเตเดเดพเดฃเต เดฎเดพเดจเตเดเตเดฎเตเดจเตเดฑเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเต)).
เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, "+" เดฌเดเตเดเดฃเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดคเต เดคเตเดฑเดเตเดเตเดจเตเดจ เดตเดฟเตปเดกเตเดฏเดฟเตฝ เดธเตเตผเดตเตผ เดตเดฟเดฒเดพเดธเดตเตเด เดชเตเตผเดเตเดเตเด เดจเตฝเดเตเด:
เด
เดคเดฟเดจเตเดถเตเดทเด, เดเดเตเดเดณเตเดเต เดธเตเตผเดตเตผ เด
เดคเดฟเตฝ เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเดเต เดเตเดฐเตเดฏเดฟเตฝ เดฆเตเดถเตเดฏเดฎเดพเดเตเด, เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดคเตเดฑเดเตเดเตเด เด
เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเดฐเต เดเดฃเดเตเดทเตป เดชเดฟเดถเดเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด.
2. เดเตเดฒเดธเตเดฑเตเดฑเตผ เดจเดพเดฎเดคเตเดคเดฟเตฝ เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต เด เดคเดฟเดจเต เดฒเดญเตเดฏเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดคเตเดฑเดเตเดเตเด.
3.โฆ
เด เดเตเดเดจเต, เด เดคเดพเดฏเดคเต. เดเดฐเต เดชเตเดคเดฟเดฏ เดเตเดฒเดธเตเดฑเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดฒเดฟเดธเตเดฑเตเดฑเดฟเตฝ เดฒเดญเตเดฏเดฎเดพเดฏ เดเดคเตเดเตเดเดฟเดฒเตเด เดเดจเตเดจเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเต เดเตเตพเดฌเดพเดฑเดฟเดฒเต "+" เดฌเดเตเดเตบ เด เดฎเตผเดคเตเดคเตเด, เดชเตเดคเดฟเดฏ เดเตเตผเดเตเดเตเด เดกเดฏเดฒเตเดเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด:
เดเตเตพเดฌเดพเดฑเดฟเดฒเต เดฌเดเตเดเดฃเตเดเตพ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดจเดจเตเดธเดฐเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเตพ เดเตเดฏเตเดฏเตเดจเตเดจเต, เด เดคเดพเดฏเดคเต. เดตเตเดเตเดทเดคเตเดคเดฟเดจเตเดฑเตเดฏเต เดชเดเตเดเดฟเดเดฏเตเดเตเดฏเต เดเดคเต เดเดเดเดฎเดพเดฃเต เดคเดฟเดฐเดเตเดเตเดเตเดคเตเดคเดคเต เดเดจเตเดจเดคเดฟเดจเต เดเดถเตเดฐเดฏเดฟเดเตเดเต, เดเดจเตเดจเต เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดฎเดฑเตเดฑเตเดฐเต เดจเดเดชเดเดฟเดเตเดฐเดฎเด เดจเดเดคเตเดคเตเด.
เดเดกเต เดฌเดเตเดเดฃเดฟเดจเตเดฑเต (โ+โ) เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด:
เดฌเดเตเดเตบ เดเดจเดฑเตเดทเตป เดเตเดกเต:
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
เด เดคเดพเดฏเดคเต, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดเตเดเตพ เดชเตเดฐเดงเดพเดจ เดธเตเตผเดตเดฑเดฟเตฝ เดเตเดฃเตเดเดฟเดเตเดเดพเดฃเดฟเดเตเดเต โ+โ เด เดฎเตผเดคเตเดคเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเตเตผเดเตเดเตเด:: เดธเตเตผเดตเตผ เดจเดเดชเดเดฟเดเตเดฐเดฎเด เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด, เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเดพเดฃเตเดเตเดเดฟเตฝ - เดเตเตผเดเตเดเตเด:: เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเด เดฎเดฑเตเดฑเตเด (เดเดตเดฟเดเตเดฏเดพเดฃเตเดจเตเดจเต เดเดพเตป เดเดดเตเดคเดพเด. เดเดตเดถเตเดฏเดฎเดพเดฏ "เดเตเดเตพ" เดเตเดฑเดเตเดเต เดเตเดตเดเต เดจเดฟเดจเตเดจเต เดตเดฐเตเดจเตเดจเต), เดฒเดฟเดธเตเดฑเตเดฑเตเดเตเดฏเตเดค เดจเดเดชเดเดฟเดเตเดฐเดฎเดเตเดเตพ เดธเดจเตเดฆเตผเดญเดคเตเดคเดฟเดจเต เด เดจเตเดฏเตเดเตเดฏเดฎเดพเดฏ เดเตเดฐเดพเดซเดฟเดเต เดเดเดเดเตเดเตพ เดตเดฐเดฏเตเดเตเดเตเดจเตเดจเต.
เดจเดฟเดเตเดเตพ เดเดคเดฟเดจเดเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดฟเดฐเดฟเดเตเดเดพเด, เดซเตเดฎเตเดเตพ เดถเตเดฒเดฟเดฏเดฟเตฝ เดธเดฎเดพเดจเดฎเดพเดฃเต - เดเดคเต เดเดถเตเดเดฐเตเดฏเดเดฐเดฎเดฒเตเดฒ, เดเดพเดฐเดฃเด เด เดต เดเดฐเต เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเดฒเตเดเตเดฏเดพเดฃเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเต, เดเตเดเตเดคเตฝ เดเตเดคเตเดฏเดฎเดพเดฏเดฟ เดซเตเดฎเดฟเดจเตเดฑเต เดชเตเดฐเดงเดพเดจ เดซเตเดฐเตเดฏเดฟเด (เดตเดฟเตปเดกเต, เดฌเดเตเดเดฃเตเดเตพ, เดเดฎเตเดเต, เดฒเตเดฌเตฝ), เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดกเต เดเตเดชเตเดชเต เดฒเตเดตเตฝ
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
เด เดฐเดฃเตเดเต เดฐเตเดคเดฟเดเดณเตเด เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเตเดกเดฟเตฝ เดเดพเดฃเดพเตป เดเดดเดฟเดฏเตเด.
เด เดฌเดเตเดเดฃเดฟเตฝ เดเตเดฒเดฟเดเตเดเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเต, เด เดธเดพเดนเดเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดฑเตบเดเดฎเดพเตปเดกเต เดชเตเดฐเตเดธเตเดเดฟเดฏเตผ เดฑเตเดเตเดเดฟเดจเตเดฑเต เด เดเดฟเดธเตเดฅเดพเดจเดคเตเดคเดฟเตฝ เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดค เดเดฎเดพเตปเดกเต เดฒเตเตป เดเดชเดฏเตเดเดฟเดเตเดเต เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเต:
/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
เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดชเตเดฐเดงเดพเดจ เดเดฎเดพเตปเดกเดฟเดฒเตเดเตเดเต เดตเดฐเตเดจเตเดจเต, เด เดคเต เดจเดฎเตเดเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดฑเดพเดเตเดเดฟเดจเตเดฑเต เดธเดฎเดพเดฐเดเดญเด เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดเตเดเตเดจเตเดจเต, เดเดตเดถเตเดฏเดฎเตเดเตเดเดฟเตฝ เดเดฎเดพเตปเดกเตเดเดณเตเดเต เดเดเตเดเตเดชเตเดเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเตเด เดฑเดฟเดเตเดเตเดฃเตเดเดณเดฟเดฒเตเดเตเดเตเด เดชเดพเดดเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเต:
เดฑเตบเดเดฎเดพเตปเดกเต
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 ""
}
}
เดชเตเดฐเดงเดพเดจ เดธเตเตผเดตเตผ เดกเดพเดฑเตเดฑ เดจเตฝเดเดฟเดฏ เดถเตเดทเด, เด เดคเต เดเตเดฐเตเดฏเดฟเดฒเตเดเตเดเต เดเตเตผเดเตเดเตเด, เดเดคเดฟเดจเดพเดฏเดฟ, เดฎเตเดเดณเดฟเดฒเตเดณเตเดณ เดเตเตผเดเตเดเตเด:เดธเตเตผเดตเตผ เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเตฝ, เดเดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดเตเดกเต เดเดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฃเต:
.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
}
เด เดคเดจเตเดธเดฐเดฟเดเตเดเต, เดชเตเดฐเดงเดพเดจ เดธเตเตผเดตเดฑเดฟเดจเดพเดฏเดฟ เดฑเตบ:: เดธเตเตผเดตเตผ เดธเดฎเดพเดฐเดเดญเดฟเดเตเดเตเด (เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเดพเดฏเดฟ - เดฑเตบ:: เดเตเดฒเดธเตเดฑเตเดฑเตผ, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดธเตเตผเดตเดฑเดฟเดจเดพเดฏเดฟ - เดฑเตบ:: เดตเตผเดเตเดเต_เดธเตเตผเดตเตผ เดฎเตเดคเดฒเดพเดฏเดต). เด. $เดเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเตเดฑเต เดฎเตเดฒเตเดฏเด เดเดชเตโเดทเตป เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏ เดเตเดฐเต เดเดฒเดฎเตเดจเตเดฑเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดจเตเดฑเต เดญเดพเดเดฎเดพเดฃเต -เดเดกเดฟ.
เดจเดเดชเดเดฟเดเตเดฐเดฎเด เดถเตเดฐเดฆเตเดงเดฟเดเตเดเดพเด
เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเด::เดธเตเตผเดตเตผ
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
}
}
เด เดจเดเดชเดเดฟเดเตเดฐเดฎเด เดฑเตบเดเดฎเดพเตปเดกเต เดเดฎเดพเตปเดกเต เดตเดดเดฟ เดธเตเตผเดตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเตเดตเตเดเดฐเดฟเดเตเดเดคเต เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฐเตเดฏเดฟเดฒเตเดเตเดเต เดเดฒเตเดฒเดพเดคเตเดคเดฐเด เดเดพเดฐเตเดฏเดเตเดเดณเตเด เดเตเตผเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต - เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเตพ, เดตเดฟเดตเดฟเดง เดฑเตเดเตเดเต เดเดเดเดเตเดเตพ (เดฌเตเดธเต, เดตเตผเดเตเดเดฟเดเดเต เดธเตเตผเดตเดฑเตเดเตพ, เดธเตเดทเดจเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต). เดจเดฟเดเตเดเตพ เดธเตเดเตเดทเตเดฎเดฎเดพเดฏเดฟ เดจเตเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เด เดเดคเตเดคเตเดณเตเดณ InsertItemsWorkList เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฐเต เดเตเตพ เดจเดฟเดเตเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเตเด. $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
เดเตเดฐเดพเดซเดฟเดเตเดเตฝ เดฐเตเดชเดคเตเดคเดฟเตฝ เดเดคเต เดเดคเตเดชเตเดฒเต เดเดพเดฃเดชเตเดชเตเดเตเด:
เดฎเตเดเดณเดฟเดฒเต เดจเดเดชเดเดฟเดเตเดฐเดฎเด, เดชเดเตเดเดฟเด เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดคเดฒเดเตเดเตเดเตเดเดฟเดจเตเด เดกเดพเดฑเตเดฑเดฏเตเดเตเดเตเดฎเตเดณเตเดณ เดเดเดเดเตเดเดณเตเดเต เดชเตเดฐเตเดเตพ เดคเดฟเดฐเดเตเดเตเดเตเดเตเดเตเดจเตเดจเต:
InsertItemsWorkList
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
}
เดเดตเดฟเดเต, เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฎเดพเตปเดกเดฟเดจเต เดชเดเดฐเด [เดธเตเดชเตเดฒเดฟเดฑเตเดฑเต $str ":"], เด เดคเต เดธเตโเดเตเดฐเดฟเดเดเดฟเดจเต ":" เดเตเดฃเตเดเต เดตเตเตผเดคเดฟเดฐเดฟเดเตเด เดเดเดเดเตเดเดณเดพเดฏเดฟ เดตเดฟเดญเดเดฟเดเตเดเตเดเดฏเตเด เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดจเตฝเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต, เดเดฟเดฒ เดเดเดเดเตเดเดณเดฟเตฝ เดเตเดณเดจเตเด เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ เดเดฐเต เดธเดพเดงเดพเดฐเดฃ เดชเดฆเดชเตเดฐเดฏเตเดเด เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต.
InsertClusterItems เดจเดเดชเดเดฟเดเตเดฐเดฎเด (เดธเดฎเดพเดจเดฎเดพเดฏ เดชเดฒเดคเดฟเตฝ เดเดจเตเดจเต) เดเดตเดถเตเดฏเดฎเดพเดฏ เดเตเดฒเดธเตเดฑเตเดฑเตผ เดเดฒเดฎเตเดจเตเดฑเดฟเดจเตเดฑเต เดเตเดฐเตเดฏเดฟเดฒเตเดเตเดเต เด
เดจเตเดฌเดจเตเดง เดเดกเดจเตเดฑเดฟเดซเดฏเดฑเตเดเดณเตเดณเตเดณ เดเตเตฝเดกเต เดเดเดเดเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเตเตผเดเตเดเตเดจเตเดจเต.
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"
}
}
เดเตเดเตเดคเตฝ เดถเดฐเดฟเดฏเดพเดฏ เดธเดฎเตเดชเดจเด เดเดคเดพ:
InsertProfileItems
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->เดเตเตผเดเตเดเตเด::$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 เดจเตเดฑเต เดฎเดฑเตเดฑเตเดฐเต เดจเตเดเตเดเด เดเดฏเตผเดจเตเดจเต - เดฎเดฑเตเดฑเต เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดตเตเดฐเดฟเดฏเดฌเดฟเตพ เดจเดพเดฎเดเตเดเดณเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเดเตเดเตเดจเตเดจเต. เด. เดซเตเดฎเตเดเตพ เดชเตเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเดฐเดเดญเดฟเดเตเดเตเดจเตเดจเดคเตเด เดฏเดพเดจเตเดคเตเดฐเดฟเดเดฎเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดซเตเตฝเดกเตเดเดณเตเดเตเดฏเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเดเตเดฏเตเด เดชเตเดฐเตเดเตพ เดฑเดพเดเตเดเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเต เดเดฎเดพเตปเดกเต เดฒเตเตป เดธเตเดตเดฟเดเตเดเตเดเตพเดเตเดเตเด เดเดฎเดพเตปเดกเต เดเดเตเดเตโเดชเตเดเตเดเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเดฑเตเดเดณเตเดเต เดชเตเดฐเตเดเตพเดเตเดเตเด เดเดฟเดฒ เดเดดเดฟเดตเดพเดเตเดเดฒเตเดเดณเตเดเต เดฏเตเดเดฟเดเตเดเตเดจเตเดจเต - เดกเดพเดทเดฟเดจเต เดชเดเดฐเด เดเดฐเต เด เดฃเตเดเตผ เดธเตโเดเตเตผ เดจเตฝเดเตเดจเตเดจเต. เดเดฆเดพ เดทเตเดกเตเดฏเตเตพ เดเตเดฏเตเดค เดเตเดฒเดฟเดเตพ เดจเดฟเดทเตเดงเดฟเดเตเดเตเดจเตเดจเต เดซเตเตฝเดกเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเตเดจเตเดจเต ent_scheduled_jobs_deny เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเด เดทเตเดกเตเดฏเตเตพ เดเตเดฏเตเดค_เดเตเดฒเดฟเดเตพ_เดจเดฟเดทเตเดงเดฟ.
เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดซเตเดฎเตเดเตพ เดซเตเตฝเดกเตเดเดณเตเดเต เดเดเดจเดฏเดฟเตฝ เดตเตเดฏเดคเตเดฏเดพเดธเดชเตเดชเตเดเตเดเดฟเดฐเดฟเดเตเดเดพเด, เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดฐเต เดตเดฟเดตเดฐ เด เดเดฟเดคเตเดคเดฑเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเด:
เดตเดฟเดตเดฐ เดธเตเดฐเดเตเดท เดเตเตผเดเตเดเตเดจเตเดจเต
เดตเดฟเดตเดฐ เดธเตเดฐเดเตเดท เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต
เดเดกเดฟเดฑเตเดฑเดฟเดเดเต เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเตฝ Edit::infobase, เดเดตเดถเตเดฏเดฎเดพเดฏ เดซเตเตฝเดกเตเดเตพ เดซเตเดฎเดฟเดฒเตเดเตเดเต เดเตเตผเดคเตเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต; เดเตเดกเต เดตเดณเดฐเต เดตเดฒเตเดคเดพเดฃเต, เด
เดคเดฟเดจเดพเตฝ เดเดพเตป เด
เดคเต เดเดตเดฟเดเต เด
เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
เดธเดพเดฎเตเดฏเดฎเดจเตเดธเดฐเดฟเดเตเดเต, เดฎเดฑเตเดฑเต เดเดเดเดเตเดเตพเดเตเดเดพเดฏเดฟ เดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเตเด เดเดกเดฟเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด เดเดฒเตเดฒเดพเดคเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฎเตเดณเตเดณ เดจเดเดชเดเดฟเดเตเดฐเดฎเดเตเดเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเต.
เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดชเดฐเดฟเดงเดฟเดฏเดฟเดฒเตเดฒเดพเดคเตเดค เดธเตเตผเดตเดฑเตเดเตพ, เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเตพ, เดเตปเดซเตผเดฎเตเดทเตป เดฌเตเดธเตเดเตพ เดฎเตเดคเดฒเดพเดฏเดต เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดเดคเต เดธเตเตผเดตเตผ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดเตปเดซเตผเดฎเตเดทเตป เดธเตเดเตเดฏเตเดฐเดฟเดฑเตเดฑเดฟ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฑเตเดคเต เดเดคเต เดเตเดฒเดธเตเดฑเตเดฑเตผ เดเดฃเตเดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเดเตเดเดพเตป, เดจเดฟเดฐเดตเดงเดฟ เดเดเตเดณ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเต, เด เดตเดฏเตเดเต เดฎเตเดฒเตเดฏเดเตเดเตพ เดเดฐเตเดจเตเดจเตเด เดธเดเตเดเตเดเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดฎเดฐเดคเตเดคเดฟเดจเตเดฑเต เดฎเตเดฒเดเดเตเดเดณเดฟเตฝ เดเตเดฒเดฟเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจ เดธเดฎเดฏเด. เด. เดจเดเดชเดเดฟเดเตเดฐเดฎเด เดเดฒเตเดฒเดพ เดชเดพเดฐเดจเตเดฑเต เดเดเดเดเตเดเดณเดฟเดฒเตเดเตเดฏเตเด เดเดตเตผเดคเตเดคเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดเดฏเตเด เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต:
SetGlobalVarFromTreeItems
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 เดเดเตเดณ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดเตเดเดฟ เด เดตเดคเดฐเดฟเดชเตเดชเดฟเดเตเดเต. เด. เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดเดฐเต เด เดกเตเดฎเดฟเดจเดฟเดธเตเดเตเดฐเตเดฑเตเดฑเตผ เด เดเตเดเตเดฃเตเดเต เดเดฃเตเดเตเดเตเดเดฟเตฝ, เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดตเตเดถเดจเดตเตเด เดชเดพเดธเตโเดตเตเดกเตเด เดจเตฝเดเตเดจเตเดจเดคเดฟเดจเต เดเดฐเต เดกเดฏเดฒเตเดเต เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด, เดกเดพเดฑเตเดฑ เดฎเตเดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดเดฏเตเด เด เดจเตเดฌเดจเตเดง เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเดพเดฏเดฟ เดเดฐเต เดเดฎเดพเตปเดกเดฟเดฒเตเดเตเดเตเด เดคเดฟเดฐเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด.
เดชเดฟเดถเดเต เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดจเดเดชเดเดฟเดเตเดฐเดฎเดคเตเดคเดฟเดจเตเดฑเต เดเดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเดพเดฃเดฟเดคเต.
ErrorParcing
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