LINUX.ORG.RU

Visual Tcl. Разработка графического интерфейса на базе Tcl/tk для утилит командной строки

 , , , ,


4

1

Тестируя облачный криптографический токен PKCS#11 на различных платформах, меня не покидала мысль о некой несправедливости: почему утилиты конфигурирования токенов PKCS#11 на платформе MS Windows имеют графический интерфейс, а для других платформ его нет.

Выходом могло бы быть написание на языке C/C++ GUI (графической оболочки) для этих утилиты, например, с использованием библиотеки Qt. Но тут в памяти всплыло, что есть скриптовый язык высокого яровня Tcl (Tool Command Language), который в связке с графической библиотекой Tk (Tool Kit) и позволяет быстро создавать графические интерфейсы для консольных программ или утилит командной строки.

Впервые я познакомился с пакетом Tk/Tcl в далеком 1997 году, когда планировалось на нем написать графический интерфейс для системы контроля доступа (СКД). Тогда графические возможности пакета произвели сильное впечатление и, в частности, tetris.

Одной из причин, по которой отказались от использования Tk/Tcl, было отсутствие для него в то время конструктора (дизайнера) аналогичного сегодняшнему, скажем, QT-designer. Освежив в памяти возможности Tk/Tcl, а нас интересовало, помимо графических возможностей, организация взаимодействия с утилитами командной строки, и убедившись, что мы стоим на правильном пути, мы принялись за поиск конструктора. После проведенного анализа имеющихся конструкторов выбор пал на дизайнер tkBuilder и Visual Tcl.

Что касается утилиты tkBuilder, то здесь не обошлось без ложки дегтя. Первое, она поддерживает только tcl/tk версии 8.4.Ну и вторая ложка дегтя классическая. Дизайнер tkBuilder отказывается работать с русскими буквами. Подчеркиваю, это касается только дизайнера и не касается Tcl/Tk, для которого русский язык как дом родной.

Что касается второго конструктора, то он оказался лишенным этих недостатков. Текущая поддерживаемая версия это версия 8.6:

bash-4.3$ cd ../vtcl.vtcl-8.6-master
bash-4.3$ ./configure 
Using /bin/wish8.6
bash-4.3$

И никаких проблем с «великим, могучим, правдивым и свободным русским языком!» (И.С. Тургенев).

После предварительного ознакомления было решено использовать его в деле, а именно разработать графическую оболочку для утилиты командной строки ls11cloud_config, с помощью которой можно получить доступ к облачному криптографическому токену PKCS#11:

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) 2017 
bash-4.3$

Первый запуск конструктора не вдохновил, уж больно много окон появилось на рабочем столе.

Но осмотревшись оказалось что пару окон (новостную ленту – Visual Tcl News и знаете ли вы это – Did you know)можно закрывать без всякого ущерба для работы. И оказывается, что окон уже и не так много и, при необходимости, их можно периодически скрывать.

Приятной неожиданностью стало наличие своего мольберта] для каждого виджета класса toplevel.

В нашем проекте потребовалось три виджета класса toplevel и, соответственно, в нашем распоряжении было три мольберта:

1. Виджет GUICloudConfig, основное окно с функциями утилиты ls11cloudconfig (см. выше);

2. Виджет Password, который так или иначе задействован во всех функциях утилиты для ввода пароля для доступа к облаку токена;

3. Виджет CloudToken, который задействуется в функциях Регистрации и Дублирования облачного криптографического токена.

Проект в понимании Visual Tcl сохраняется как файл Tcl/Tk (*.tcl) и его в любой момент можно выполнять самостоятельно без дополнительных преобразований. Обратное не верно, далеко не каждый файл Tcl/Tk конструктор Visual Tcl будет рассматривать как свой проект.

На еще одну очень полезную вещь навел проект 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-скрипты и исполняемые программы) упаковать в архив и выложить для учебных целей. Скачать архив можно здесь.

Ответ на: комментарий от no-such-file

Я думал vtcl сдох и не поддерживает последние версии тикля.

Тут вы не правы. Последняя модификация Visual tcl была не так давно - в конце февраля 2016 года. Так что жизнь продолжается.

P.S. Правда, если вы говорите про Visual tcl от SCO, то да оба почили, и SCO в том числе

pki_gost ()
Ответ на: комментарий от no-such-file

Я думал vtcl сдох и не поддерживает последние версии тикля.

pki_gost дал исчерпывающий ответ ниже.

vip513 ()
Ответ на: комментарий от anonymous

в графическом окружении недостаточно файловых менегеров?

В чьем окружении?

vip513 ()

Последняя модификация Visual tcl была не так давно - в конце февраля 2016 года. Так что жизнь продолжается

Одна модификация с 2010 года, это не «жизнь продолжается», а какой-то добрый самаритянин сделал фикс, чтобы работало на тикле 8.6

no-such-file ★★★★★ ()

рад за то что «жив курилка» :-)

раз уж вы его существенно «потыкали палочкой»: Как там у vtcl с поддержкой производных от Tk виджетов ? (itk, bwidgets,snit и главное ttk::treeview или treectrl)

MKuznetsov ★★★★★ ()

rattleCAD - велосипедная САПР на Tcl/Tk

Когда речь заходит об Tcl/Tk сразу же вспоминаю об rattleCAD

http://rattlecad.sourceforge.net

Проект в понимании Visual Tcl сохраняется как файл Tcl/Tk (*.tcl) и его в любой момент можно выполнять самостоятельно без дополнительных преобразований.

...

Теперь осталось только все (проекты, tcl-скрипты и исполняемые программы) упаковать в архив и выложить для учебных целей.

Кстати, есть ещё и формат пакетов — *.kit, и тот же rattleCAD теперь его и использует

https://sourceforge.net/projects/rattlecad/files/3.4.05/rattleCAD_3.4.05.05.k...

Правда, я так и не смог запустить этот 'kit' на LinuxMint 18.1

atsym ★★★★★ ()
Ответ на: rattleCAD - велосипедная САПР на Tcl/Tk от atsym

Правда, я так и не смог запустить этот 'kit' на LinuxMint 18.1

для запуска 'kit' нужен tclkit, точнее wishkit это tcl (или tcltk соотв.) с либами и батарейками собранные в один бинарник. (см.http://wiki.tcl.tk/52)

то есть запускать: wishkit somekitpack.kit

и помниться что и тиклем напрямую тоже можно было: tclsh somekit.kit

kit - это практически zip-архив c VFS в которой все юзерские скрипты.

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

то есть запускать: wishkit somekitpack.kit

Дай прямую ссылку на бинарник wishkit для Xenial 16.04 LTS, а то сам найти немогу.

atsym ★★★★★ ()
Ответ на: комментарий от atsym

Дай прямую ссылку на бинарник wishkit для Xenial 16.04 LTS, а то сам найти немогу.

:-) мельчает нынешнее племя

как почётный оператор броузера, так уж и быть, два раза кликнул мышкой :

скачать tclkit для своей платформы можно тут http://www.rkeene.org/devel/kitcreator/kitbuild/nightly/ (это ночные сброки в наиболее популярных конфигурациях)

но можно построить и самому используя http://kitcreator.rkeene.org/fossil/wiki?name=Examples

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

скачать tclkit для своей платформы можно тут http://www.rkeene.org/devel/kitcreator/kitbuild/nightly/

Но это не прямая ссылка для загрузки под Xenial (amd64)

Я же просил прямую ссылку (direct link), а то там вариантов столько что я незнаю что и выбирать

но можно построить и самому

Хочу бинарник а не сорцы

atsym ★★★★★ ()
Последнее исправление: atsym (всего исправлений: 1)
Ответ на: комментарий от atsym

Но это не прямая ссылка для загрузки под Xenial (amd64)

сложно найти в списке «ось»-«версия tcl»-amd64 ????

Хочу бинарник а не сорцы

1. ткнуть сюда http://www.rkeene.org/devel/kitcreator/kitbuild/nightly/tclkit-8.6.6-win64-am...

2. сохранить как tclkit.exe

3. борьба с антивирем, прописание путей и настройка ассоциаций *.tcl *.kit - на WinFAQ

4. глупых вопросов больше не задавать

MKuznetsov ★★★★★ ()
Ответ на: комментарий от MKuznetsov

сохранить как tclkit.exe

Xenial (xUbuntu 16.04 LTS, LinuxMint 18.1) — ЭТО Linux!

Зачем ты даешь ссылку для винды?

atsym ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.