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

    В предыдущей статье в качестве инструментария для создания графического интерфейса для утилит командной строки на базе 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! 
    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$

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

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

    Большое спасибо пользователю svk28 за его подсказку!
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 7
    • 0
      Всегда считал что слово «виджет» мужского рода…
      • 0

        Да, вы правы. На автомате. Спасибо.

        • +1

          Часто использую Tcl/Tk в связке с python (tkinter, ttk). Пробовал разные гуи билдеры, но потом понял что Библиотека настолько проста, что проще и быстрее все сделать ручками.

          • 0

            И в этом есть ее плюс

          • 0
            Рад что помог =)
            Я когда начинал изучать tcl перепробовал массу всяких программ, в итоге запили свою ide и пользуюсь по сей день (правда редко уже).
            • 0

              Редко, но метко. Свой ide — это круто!

              • +1
                Конструктор tkBuilder хорош, но как было отмечено в статье обладает и рядом недостатков, главным из которых является отсутствие поддержки UTF-8, а следовательно, и русского алфавита.

                Этот недостаток tkBuilder, как оказалось, легко снимается. Достаточно в файл file.tcl в функции File::WriteTkbFile и File::ReadTkbFile после строки:


                fconfigure $fileID -translation binary


                вставить следующую строку:
                fconfigure $fileID -encoding utf-8


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

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

                Самое читаемое