Pull to refresh

Visual Tcl. Разработка графического пользовательского интерфейса для утилит командной строки (Продолжение)

Reading time 3 min
Views 9.2K
Cryptography *Open source *IT systems testing *Programming *Desktop environments *
В предыдущей статье в качестве инструментария для создания графического интерфейса для утилит командной строки на базе Tcl/Tk был рассмотрен конструктор tkBuilder. Конструктор хорош, но как было отмечено в статье обладает и рядом недостатков, главным из которых является отсутствие поддержки UTF-8, а следовательно, и русского алфавита. Еще один недостаток был отмечен пользователем merlin-vrn. Это поддержка на сегодняшний день только Tcl/Tk версии 8.4.

Но вот в комментарии от пользователя svk28 был упомянут конструктор Visual Tcl на базе Tck/Tk:

image

После предварительного ознакомления было решено использовать его в деле, тем более, что предыдущий материал фактически остался незавершенным, если смотреть на него с точки зрения объявленной цели – дать графическую оболочку утилитам командной строки, с помощью которых можно получить доступ к облачному токену 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! 
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$

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

image

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

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

image

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

1. Виджет GUICloudConfig, основное окно с функциями утилиты ls11cloudconfig (см. выше);
2. Виджет Password, который так или иначе задействован во всех функциях:

image

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

image

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

Отметим одну особенность дизайнера Visual Tcl. Она связана с редактированием функций. Изменения, вносимые в функции, не попадут в проект до тех пор, пока не будет закрыто окно, в котором редактируется функция:

image

Отметим также, что проект в понимании 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-скрипты и исполняемые программы) упаковать и выложить для свободного использования. Скачать дистрибутивы для платформ Linux/OS X (macOS)/Windows можно здесь:


Большое спасибо пользователю svk28 за его подсказку!
Tags:
Hubs:
Total votes 7: ↑7 and ↓0 +7
Comments 7
Comments Comments 7

Posts