Добавлен диалог вызова помощи. Добавлены горячие клавиши

master
Sergey Kalinin 2019-09-13 13:36:09 +03:00
parent 8a5a586a73
commit 50c061f491
9 changed files with 112 additions and 12 deletions

View File

@ -14,3 +14,4 @@ http://nuk-svk.ru/soft/rac-gui/
Иконки взяты с сайта https://www.iconsdb.com/royal-blue-icons/

View File

@ -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 - вызов дилога помощи

View File

@ -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 {} {

View File

@ -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} {

View File

@ -24,6 +24,11 @@ wm positionfrom . user
bind . <Control-q> Quit
bind . <Control-Q> Quit
bind . <Control-eacute> Quit
bind . <Control-Insert> Add
bind . <Control-Delete> Del
bind . <Control-Return> Edit
bind . <F1> 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

View File

@ -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
}

View File

@ -145,4 +145,4 @@
::msgcat::mcset ru "Locked" "Заблокировано"
::msgcat::mcset ru "Connected at" "Подключено в"
::msgcat::mcset ru "Session number" "Номер сессии"
::msgcat::mcset ru "About" "О программе"

View File

@ -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:: {

View File

@ -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 ""
}