В предыдущей статье в качестве инструментария для создания графического интерфейса для утилит командной строки на базе Tcl/Tk был рассмотрен конструктор tkBuilder. Конструктор хорош, но как было отмечено в статье обладает и рядом недостатков, главным из которых является отсутствие поддержки UTF-8, а следовательно, и русского алфавита. Еще один недостаток был отмечен пользователем merlin-vrn. Это поддержка на сегодняшний день только Tcl/Tk версии 8.4.
Но вот в комментарии от пользователя svk28 был упомянут конструктор Visual Tcl на базе Tck/Tk:
После предварительного ознакомления было решено использовать его в деле, тем более, что предыдущий материал фактически остался незавершенным, если смотреть на него с точки зрения объявленной цели – дать графическую оболочку утилитам командной строки, с помощью которых можно получить доступ к облачному криптографическому токену PKCS#11. Поэтому настала пора разработать графический интерфейс и для второй утилиты, а именно ls11cloud_config:
Первым делом было проверено, какую версию Tcl/Tk поддерживает Visual Tcl. Оказалось, что версия 8.6, которая установлена на моем компьютере, поддерживается конструктором Visual Tcl:
Первый запуск конструктора не вдохновил, уж больно много окон появилось на рабочем столе:
Но осмотревшись оказалось что пару окон (новостную ленту – Visual Tcl News и знаете ли вы это – Did you know)можно закрывать без всякого ущерба для работы. И оказывается, что окон уже и не так много и, при необходимости, их можно периодически скрывать.
Приятной неожиданностью стало наличие своего мольберта для каждого виджета класса toplevel:
В нашем проекте потребовалось три виджета класса toplevel и, соответственно, в нашем распоряжении было три мольберта:
1. Виджет GUICloudConfig, основное окно с функциями утилиты ls11cloudconfig (см. выше);
2. Виджет Password, который так или иначе задействован во всех функциях:
3. Виджет CloudToken, который задействуется в функциях Регистрации и Дублирования облачного криптографического токена:
И никаких проблем с «великим, могучим, правдивым и свободным русским языком!» (И.С. Тургенев).
Отметим одну особенность дизайнера Visual Tcl. Она связана с редактированием функций. Изменения, вносимые в функции, не попадут в проект до тех пор, пока не будет закрыто окно, в котором редактируется функция:
Отметим также, что проект в понимании Visual Tcl сохраняется как файл Tcl/Tk (*.tcl) и его в любой момент можно выполнять самостоятельно без дополнительных преобразований. Обратное не верно, далеко не каждый файл Tcl/Tk конструктор будет рассматривать как свой проект.
На еще одну очень полезную вещь навел проект Visual Tcl – возможность сохранения проекта в бинарном коде. Для этой цели задействуется утилита freewrap, которая превращает скрипты Tcl / Tk в однофайловые исполняемые программы. Так и мы оба скрипта, реализующих графический интерфейс для утилит p11conf и ls11cloudconfig, преобразовали в исполняемые программы:
Теперь нам осталось только все (проекты, tcl-скрипты и исполняемые программы) упаковать и выложить для свободного использования. Скачать архив можно здесь.
Большое спасибо пользователю svk28 за его подсказку!
Но вот в комментарии от пользователя svk28 был упомянут конструктор Visual Tcl на базе Tck/Tk:
После предварительного ознакомления было решено использовать его в деле, тем более, что предыдущий материал фактически остался незавершенным, если смотреть на него с точки зрения объявленной цели – дать графическую оболочку утилитам командной строки, с помощью которых можно получить доступ к облачному криптографическому токену PKCS#11. Поэтому настала пора разработать графический интерфейс и для второй утилиты, а именно ls11cloud_config:
bash-4.3$ /usr/local/bin64/ls11cloud_config
LS11CLOUD User Utility
usage: /usr/local/bin64/ls11cloud_config <command> [-p <password>] [-n <new password>]
Commands:
register <host> <port> <id> - register new user on the server
duplicate <host> <port> <id> - duplicate user account on other computer
change_pswd - change SESPAKE authentication password
status - display current configuration data
log - display server log file
recreate - re-create token to initial empty state
unregister - remove all user files from the server
NB: Don't use non-latin letters to avoid encoding problems!
Copyright(C) Ltd (http://soft.lissi.ru) 2017
bash-4.3$
Первым делом было проверено, какую версию Tcl/Tk поддерживает Visual Tcl. Оказалось, что версия 8.6, которая установлена на моем компьютере, поддерживается конструктором Visual Tcl:
bash-4.3$ cd ../vtcl.vtcl-8.6-master
bash-4.3$ ./configure
Using /bin/wish8.6
bash-4.3$
Первый запуск конструктора не вдохновил, уж больно много окон появилось на рабочем столе:
Но осмотревшись оказалось что пару окон (новостную ленту – Visual Tcl News и знаете ли вы это – Did you know)можно закрывать без всякого ущерба для работы. И оказывается, что окон уже и не так много и, при необходимости, их можно периодически скрывать.
Приятной неожиданностью стало наличие своего мольберта для каждого виджета класса toplevel:
В нашем проекте потребовалось три виджета класса toplevel и, соответственно, в нашем распоряжении было три мольберта:
1. Виджет GUICloudConfig, основное окно с функциями утилиты ls11cloudconfig (см. выше);
2. Виджет Password, который так или иначе задействован во всех функциях:
3. Виджет CloudToken, который задействуется в функциях Регистрации и Дублирования облачного криптографического токена:
И никаких проблем с «великим, могучим, правдивым и свободным русским языком!» (И.С. Тургенев).
Отметим одну особенность дизайнера Visual Tcl. Она связана с редактированием функций. Изменения, вносимые в функции, не попадут в проект до тех пор, пока не будет закрыто окно, в котором редактируется функция:
Отметим также, что проект в понимании Visual Tcl сохраняется как файл Tcl/Tk (*.tcl) и его в любой момент можно выполнять самостоятельно без дополнительных преобразований. Обратное не верно, далеко не каждый файл Tcl/Tk конструктор будет рассматривать как свой проект.
На еще одну очень полезную вещь навел проект Visual Tcl – возможность сохранения проекта в бинарном коде. Для этой цели задействуется утилита freewrap, которая превращает скрипты Tcl / Tk в однофайловые исполняемые программы. Так и мы оба скрипта, реализующих графический интерфейс для утилит p11conf и ls11cloudconfig, преобразовали в исполняемые программы:
bash-4.3$ ls
GUITKP11Conf.tcl LS11CLOUD_CONFIG.tcl
bash-4.3$
bash-4.3$ freewrap GUITKP11Conf.tcl
bash-4.3$ freewrap LS11CLOUD_CONFIG.tcl
bash-4.3$ ls
GUITKP11Conf LS11CLOUD_CONFIG
GUITKP11Conf.tcl LS11CLOUD_CONFIG.tcl
bash-4.3$
Теперь нам осталось только все (проекты, tcl-скрипты и исполняемые программы) упаковать и выложить для свободного использования. Скачать архив можно здесь.
Большое спасибо пользователю svk28 за его подсказку!
Поделиться с друзьями
Комментарии (7)
svk28
20.07.2017 12:22Рад что помог =)
Я когда начинал изучать tcl перепробовал массу всяких программ, в итоге запили свою ide и пользуюсь по сей день (правда редко уже).
saipr
25.07.2017 11:48+1Конструктор tkBuilder хорош, но как было отмечено в статье обладает и рядом недостатков, главным из которых является отсутствие поддержки UTF-8, а следовательно, и русского алфавита.
Этот недостаток tkBuilder, как оказалось, легко снимается. Достаточно в файл file.tcl в функции File::WriteTkbFile и File::ReadTkbFile после строки:
fconfigure $fileID -translation binary
вставить следующую строку:
fconfigure $fileID -encoding utf-8
И никаких проблем с «великим, могучим, правдивым и свободным русским языком!» (И.С. Тургенев) больше не будет.
caway
Всегда считал что слово «виджет» мужского рода…