From 50c061f49135aa68151b7481b4defdd0725ab7b8 Mon Sep 17 00:00:00 2001 From: Sergey Kalinin Date: Fri, 13 Sep 2019 13:36:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B4=D0=B8=D0=B0=D0=BB=D0=BE=D0=B3=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=20=D0=BF=D0=BE=D0=BC=D0=BE=D1=89=D0=B8?= =?UTF-8?q?.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D0=B3=D0=BE=D1=80=D1=8F=D1=87=D0=B8=D0=B5=20=D0=BA=D0=BB=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=88=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + doc/racgui_manual.txt | 25 +++++++++++++++++++++++++ lib/config.tcl | 4 ++++ lib/function.tcl | 24 +++++++++++++++++++++++- lib/gui.tcl | 6 ++++++ lib/images.tcl | 26 ++++++++++++++++++++++++++ lib/msg/ru.msg | 2 +- lib/ttk_theme_dark.tcl | 10 +++++++++- rac_gui.tcl | 26 +++++++++++++++++--------- 9 files changed, 112 insertions(+), 12 deletions(-) create mode 100644 doc/racgui_manual.txt diff --git a/README.md b/README.md index 8615b3a..29903ee 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,4 @@ http://nuk-svk.ru/soft/rac-gui/ Иконки взяты с сайта https://www.iconsdb.com/royal-blue-icons/ + diff --git a/doc/racgui_manual.txt b/doc/racgui_manual.txt new file mode 100644 index 0000000..83d3bb9 --- /dev/null +++ b/doc/racgui_manual.txt @@ -0,0 +1,25 @@ +####################################################### +# RAC GUI +# Distributed under GNU Public License +# Author: Sergey Kalinin svk@nuk-svk.ru +# Copyright (c) "SVK", 2019, http://nuk-svk.ru +###################################################### + +Программа Rac-GUI представляет собой мультиплатформенный графический интерфейс к консольной утилите 1С rac. +Основной интерфейс программы состоит из: +1. Панели инструментов +2. Дерева для отображения структуры +3. Табличного поля + +Для добавления, редактирования, удаления сущностей (сервера, информационные базы, сеансы) предназначены соответствующие кнопки, расположенные в панели инструментов слева. Кнопки контекстно-зависимые, т.е. в зависимости от того какой раздел активен для работы (сервер, информационные базы, кластер, сеансы и так далее), функции кнопок меняются. + +После первого запуска программы следует добавить основной сервер кластера 1С (где запущен ras). Для этого надо нажать кнопку "+" в панели инструментов, или сочетание клавиш Control-Insert. И в открывшейся форме заполнить соответствующие поля. Так как каждый сервер управления и клиент могут работать только на одинаковой платформе 1С, то в RAC-GUI для каждого сервера указывается команда (файл rac) для соответствующей платформы. + +"Горячие" клавиши: + +Control-Insert - добавление нового +Control-Delete - удаление текущего раздела (сущности) +Control-Enter - редактирование текущего раздела (сущности) +Control-Q - выход из программы +F1 - вызов дилога помощи + diff --git a/lib/config.tcl b/lib/config.tcl index ad40d61..88e0347 100644 --- a/lib/config.tcl +++ b/lib/config.tcl @@ -98,6 +98,9 @@ proc SaveConfig {} { global dir servers_list set file [open [file join $dir(work) 1c_srv_new.cfg] "w"] set f [open [file join $dir(work) 1c_srv_new_.cfg] "w"] + if {![dict exists $servers_list servers]} { + return + } set dict [dict get $servers_list servers] #puts "\n\n[split $dict " "]\n\n" set dict [string map {"\{" "\{\n" "\}" "\n\}"} $dict] @@ -226,3 +229,4 @@ proc CopyNewConfig {} { + diff --git a/lib/function.tcl b/lib/function.tcl index f162032..c752405 100644 --- a/lib/function.tcl +++ b/lib/function.tcl @@ -405,7 +405,28 @@ proc SetRacCommand {} { } } - +proc ShowHelpDialog {} { + global default dir + set frm [AddToplevel [::msgcat::mc "About"] help_grey_64] + wm title .add [::msgcat::mc "About"] + text $frm.txt -wrap word + ttk::scrollbar $frm.hsb -orient horizontal -command [list $frm.t xview] + ttk::scrollbar $frm.vsb -orient vertical -command [list $frm.t yview] + text $frm.t -xscrollcommand [list $frm.hsb set] -yscrollcommand [list $frm.vsb set] + grid $frm.t -row 0 -column 0 -sticky nsew + grid $frm.vsb -row 0 -column 1 -sticky nsew + grid $frm.hsb -row 1 -column 0 -sticky nsew + grid columnconfigure $frm 0 -weight 1 + grid rowconfigure $frm 0 -weight 1 + + set file_help [open [file join $dir(doc) racgui_manual.txt] "RDONLY"] + while {[gets $file_help line] >=0} { + $frm.t insert end "$line\n" + } + close $file_help + destroy .add.frm_btn.btn_ok + return $frm +} namespace eval Run {} {} # Получение данных по кластерам @@ -2575,3 +2596,4 @@ proc Del::inet {tree host profile_name} { + diff --git a/lib/gui.tcl b/lib/gui.tcl index d08dee2..d2cb701 100644 --- a/lib/gui.tcl +++ b/lib/gui.tcl @@ -24,6 +24,11 @@ wm positionfrom . user bind . Quit bind . Quit +bind . Quit +bind . Add +bind . Del +bind . Edit +bind . ShowHelpDialog #ttk::style configure TPanedwindow -background blue #ttk::style configure Sash -sashthickness 5 @@ -121,3 +126,4 @@ pack $frm_tree $frm_work -side left -expand true -fill both + diff --git a/lib/images.tcl b/lib/images.tcl index 3da3f07..d559ca6 100644 --- a/lib/images.tcl +++ b/lib/images.tcl @@ -621,3 +621,29 @@ image create photo app_grey_64 -data { ZhhOnihW5Ql725851hOPesCgxn4/bfEYVJ5mwlTT7EDyT2bwR4yyTf3d6bFcLIPtYoR++ujBwUmV mhdPl2vMUeYmt/VyyQtF7jBPKF0n5wAAAABJRU5ErkJggg== } +image create photo help_grey_64 -data { + iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAA + DsQAAA7EAZUrDhsAAAAHdElNRQfjCQ0JDhex/+rmAAAEzklEQVRo3sWZf0iVVxjHP727CxGJCAmJ + IZeIajfnD/IO56BshX+ELhF1wsI/Jv1x2lgbrTURN4bbmtiajW2HYlmMrcCYCFMzg5KcjeLiRGRJ + hAvxDxmXFhdxcnF3++Ne7/ve9/465/5Y37/uOfd9nud73nOe5zzP865DE8JgO8XsopAC8tnAKj68 + LPIHs0wzJwN6+tZpmN7EQWqpYnOCh7yMMcSg9GaYgNiDoI4cRa1+RpCMqrwNBQKihg5eRB8zfEpf + MhJJCIhSzrKH1DHJMflLigREDp28g4P0EOA8J+SSNgHh4grFZAYPeE1Oxf7LiGO+jl8zZh62MyGa + Y//1TEzzb3FR+cSr4Vnq3cueO0oExAd8oRMflB2+2m14xpISEG9zmmxhr/tvz0RCAqKeC1lYvYn9 + 7jnPdFwvEMVMkEd2scJeeS8mAZHHXVyKala5yRCTLLBMDvkU8jI17FSSfUSZfBKLwDccVTTfR7t8 + GOOerKSTKgX5XtkaRUBUMh4vKtgi20l5OsFl/REfKujYL8ciCAiDu5Qrrb5DfhKS2UInFeQwR7cc + tZDo5r2kWn6nRK5aI2GTovkZPg//vsobuNjKAX4WFZZn2plKqsdFiyUUC4MOxd3vD/IGUUhleHY9 + beYj0s/HCprahMN8AweVT/9f4V+5EfOlEaMRlpJq2sarJgGh7MW5llXHngfkCvMKut4MERCbqVYm + 0CjWDFcmfO6Jgq4q4QQHUKeRdJTyo+jCTw3ttvhmd7TkMKjnjAOo1QqlDTTEmP3TNt6kpOsQZwzh + SCvnM/3aGo5y2aokVSFyDVxsyACBGxGjA4rpzHrKDZsDpQYfAxHjY8qSxQbPZ4DAV9Jn2YBmXlGW + 3GHgTNv8It0W8zuRGrJOgy1pEzhurl8Uco2NGrL5hqLDxMewvBw27+SW5hvdaNhCqi6WzDAuihhX + dD+LHxhKSUh8dMlQ1BdVjPOctrxh4E/D/DJfh8w3cF1r78Mh3KF0bcTDzWByKeq4kmIR6zOiorgO + ZkPZ9IWUa2ivoXRzJ05PXGl40ryD+2kQeEEcBnaloeG+QyGBjI9mmtOMItMGU1HJxP+HVSYNucKd + p0ZgUvoMYOipERgJZsX9BFISD3CbHr5lJmUCP4VKM3FLqaS017iN0hMqa1qQKbR0pmXJWl1wTlvY + T23QPMiAvKSRA5k4ZxYm/SxoCvfLyBf/HY80NTzm+zAB6eeUpvh45FAGtOPJl8Hm5dpl3MucpgeT + QiliTeN6LNUxyBWOayl4Kaox4dKSP7nWvA2nI3LAllonRpPYFjE+rNgfCmKUH8z6zLIMFjWq5Gui + KCzYpJUJP6bVbOJHtumqGdK42f0M8BAHFVrFXYBDctAc2pqS4n26shx+2+Vn1qGtU+qZcBcodotS + w3naPP8mIADu6zgpyZL5yxyR/0RORRHwBNyDFLA7C+Z7aZVR8SNGu94TcA/jZ19Gm9YBTvGuffUx + DqHlONZwkfwMmfdxRPbF69PEgRykjOGMmL9NWTzzJCrM5AK1vK59T9pjfiv7ZIJ7Juk+izyOciKl + zfBylh6ZpGWpdNBEHi0IirSaVpJLMnm/VOvjdTmN1CS99WYZ5Kr1m0jGCIRoFFBBMTtwkh/uLfjx + Ms8DfsMjNc/Mf4o2PgHmKkMjAAAAAElFTkSuQmCC +} diff --git a/lib/msg/ru.msg b/lib/msg/ru.msg index dcc2756..e086a05 100644 --- a/lib/msg/ru.msg +++ b/lib/msg/ru.msg @@ -145,4 +145,4 @@ ::msgcat::mcset ru "Locked" "Заблокировано" ::msgcat::mcset ru "Connected at" "Подключено в" ::msgcat::mcset ru "Session number" "Номер сессии" - +::msgcat::mcset ru "About" "О программе" diff --git a/lib/ttk_theme_dark.tcl b/lib/ttk_theme_dark.tcl index 13a256d..5c7d13e 100644 --- a/lib/ttk_theme_dark.tcl +++ b/lib/ttk_theme_dark.tcl @@ -91,11 +91,18 @@ namespace eval ttk::theme::dark { -background $colors(-lightframe) -itembackground {gray60 gray50} \ -itemfill #ffffff -itemaccentfill yellow \ -fieldbackground $colors(-lightframe) + + ttk::style configure Text \ + -background [list active $colors(-lighter)] \ + -foreground [list disabled $colors(-disabledfg)] + # ttk::style configure TreeCtrl \ # -background gray30 -itembackground {gray60 gray50} \ # -itemfill #ffffff -itemaccentfill yellow + option add *Toplevel.Background $colors(-dark) interactive + option add *Text.Foreground $colors(-foreground) interactive + option add *Text.Background $colors(-frame) interactive } - option add *Toplevel.Background $colors(-dark) interactive #option add *Treeview.Background red interactive # option add *Frame.Background $colors(-frame) interactive # option add *Label.Background $colors(-frame) interactive @@ -140,3 +147,4 @@ namespace eval ::tablelist:: { + diff --git a/rac_gui.tcl b/rac_gui.tcl index 471307f..d42d34b 100755 --- a/rac_gui.tcl +++ b/rac_gui.tcl @@ -20,6 +20,8 @@ package require msgcat # Устанавливаем текущий каталог set dir(root) [pwd] +set dir(doc) [file join $dir(root) doc] + # Устанавливаем рабочий каталог, если его нет то создаём. # Согласно спецификации XDG проверяем наличие переменных и каталогов if [info exists env(XDG_CONFIG_HOME)] { @@ -86,19 +88,25 @@ CheckVariablesSet #set serversList [dict create servers] if [file exists [file join $dir(work) 1c_srv_new.cfg]] { set f_new [open [file join $dir(work) 1c_srv_new.cfg] "RDONLY"] + set str "" while {[gets $f_new line] >=0} { append str " [string trim $line]" } - set str [string map {"\{ " "\{" " \}" "\}"} $str] - dict set servers_list servers $str - close $f_new - puts $servers_list - puts [dict get $servers_list servers] - dict for {host host_data} [dict get $servers_list servers] { - .frm_tree.tree insert {} end -id "server::$host" -text [dict get $host_data name] -values "$host" - set rac_cmd_for_host($host) [dict get $host_data rac_cmd] + if {$str ne ""} { + set str [string map {"\{ " "\{" " \}" "\}"} $str] + dict set servers_list servers $str + close $f_new + puts $servers_list + puts [dict get $servers_list servers] + dict for {host host_data} [dict get $servers_list servers] { + .frm_tree.tree insert {} end -id "server::$host" -text [dict get $host_data name] -values "$host" + set rac_cmd_for_host($host) [dict get $host_data rac_cmd] + } + } else { + set servers_list "" } +} else { + set servers_list "" } -