rac-gui/rac_gui.tcl

107 lines
3.7 KiB
Tcl
Raw Normal View History

2018-05-16 14:17:27 +03:00
#!/bin/sh
# Tcl ignores the next line -*- tcl -*- \
exec wish "$0" -- "$@"
######################################################
# Rac GUI
# 1C RAC (tm) grafical user interface
2019-07-24 09:48:07 +03:00
# Distributed under GNU Public License
2018-05-16 14:17:27 +03:00
# Author: Sergey Kalinin svk@nuk-svk.ru
# Home page: https://nuk-svk.ru
# Git repos: https://bitbucket.org/svk28/rac-gui
2019-07-24 09:48:07 +03:00
#
# version: 1.1.0
# release: 1
2019-07-24 09:48:07 +03:00
#
2018-05-16 14:17:27 +03:00
######################################################
package require msgcat
package require json
package require json::write
2018-07-02 16:48:23 +03:00
# Устанавливаем текущий каталог
2018-05-16 14:17:27 +03:00
set dir(root) [pwd]
2019-07-23 16:25:28 +03:00
2018-07-02 16:48:23 +03:00
# Устанавливаем рабочий каталог, если его нет то создаём
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]"
2018-07-02 16:48:23 +03:00
# загружаем пользовательский конфиг, если он отсутствует, то копируем дефолтный
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]
::msgcat::mclocale $default(locale)
::msgcat::mcload [file join $dir(lib) msg]
2018-07-02 16:48:23 +03:00
# Код проверки наличия rac и правильности указания пути в конфиге
# если программа не найдена то будет выведен диалог для указанием корректного пути
# и этот путь будет записан в пользовательский конфиг
if {[file exists $rac_cmd] == 0} {
set rac_cmd "[tk_getOpenFile -initialdir $env(HOME) -parent . \
-title [::msgcat::mc "Show where is a RAC command"] -initialfile rac]"
if {$rac_cmd eq ""} {exit}
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
}
}
#puts $rac_cmd
close $file
close $orig_file
#return "$host:$port"
file delete [file join $dir(work) rac_gui.cfg.bak]
if {$tcl_platform(platform) == "windows"} {
tk_messageBox -message "[::msgcat::mc "Reexecute the programm"]!" \
-icon info -type ok
exit
}
} else {
puts "Found $rac_cmd"
}
set cluster_user ""
set cluster_pwd ""
set agent_user ""
set agent_pwd ""
2018-05-16 14:17:27 +03:00
## LOAD FILE ##
2018-07-02 16:48:23 +03:00
# Загружаем модули кроме gui.tcl так как его надо загрузить последним
2018-05-16 14:17:27 +03:00
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]
2018-07-02 16:48:23 +03:00
# Читаем файл со списком серверов 1С
#set serversList [dict create servers]
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} {
set l [split $line ","]
set host [lindex $l 0]
if {[lindex $l 1] ne ""} {
set rac_cmd_for_host($host) [lindex $l 1]
}
.frm_tree.tree insert {} end -id "server::$host" -text "$host" -values "$host"
# готовим конфиг
dict set servers_list $host clusters {}
}
}
2018-07-02 16:48:23 +03:00
CreateInfoBasesJSONfile $servers_list