SVG-виджеты для tcl/tk. Финальный аккорд. Часть IV
Реализация проекта «SVG-виджеты для tckl/tk» позволяет устранить одну из главных претензий, предъявляемых к графическому интерфейсу приложений, разрабатываемых с использованием tk — устаревший дизайн виджетов. Переход от классических виджетов к svg-виджетам не требует больших усилий. В этом лично я убедился, переписав gui утилиты для работы с электронной подписью cryptoarmpkcs. Ее дистрибутивы под именем cryptoarmpkcs_svg для платформ Linux64 и Windows64 можно найти в проекте:
Уже на этом скриншоте можно видеть все основные возможности проекта svg-виджеты. Это и разнообразие виджетов, и дизайн кнопок и фреймов, и заливка виджетов. Есть здесь и бегущая строка с текстом «Криптографический АРМ на базе PKCS». Если вдруг строка не бежит, то просто щелкните по ней и она «проснется». Есть и мультипликация — вращающиеся токены, а если они не вращаются, то нужно просто щелкнуть по окантовке цвета cyan. Но не все так было лучезарно, оставался файловый проводник, сделанный на «родных» виджетах. В итоге файловый проводник tkfe также был переписан на svg-виджетах и появился пакет tkfe_svg, который был добавлен в состав интерпретатора tclexecomp140_svg. Пример работы с этим пакетом также добавлен в проект svgwidgets.
Файловый проводник может размещаться как в отдельном окне, так и во фрейме. Например, если после запуска утилиты cryptoarmpkcs_svg щелкнуть по кнопке выбора библиотеки PKCS#11 (на скриншоте правая нижняя кнопка), то появится дополнительное окно с файловым проводником:
А если вы перейдете на вкладку «Работаем сЭП (PKCS7)» и щелкните по кнопке «Выбор файла с ЭП», то появится проводник, размещенный во фрейме:
Если требуется более подробная информация о файле (например, время создания файла), то необходимо его сначала выделить (щелкнуть мышкой по имени файла), а затем в контекстном меню (правая кнопка мыши) выбрать пункт «Свойства файла»:
Названия функций для вызова проводника в новом пакете tkfe_svg аналогичны названию функций в пакете tkfe, а вот параметры передаются по другому. Если в пакете tkfe параметры задаются позиционно, то в новом пакете они именованные как это принято в родном для tcl/tk проводнике и многие совпадают с параметрами родного проводника. Далее мы забываем про проводник tkfe и говорим только о новом пакете tkfe_svg.
Пакет tkfe_svg содержит три функции.
Функция :: FE: fe_getopenfile предназначена для выбора файла для чтения, функция :: FE: saveopenfile выбирает файл для записи в него, а функция :: FE: choosedir предназначена для выбора каталога.
Все функции возвращают полный путь к файлу или каталогу
По умолчанию (при вызове проводника без параметров) проводник запускается в отдельном окне:
%package require tkfe_svg 1.0 %#Запустим проводник для выбора текстового файла с шириной окна 600 px % set file1 [::FE::fe_getopenfile -width 600 -filetypes {{{Текстовый файл} .txt} {Любой *}}]
Выбрав файл и нажав кнопку «Готово» в переменной file1 будет сохранен полный путь к этому файлу (/home/a513/config.txt). Если для задания ширины проводника служит параметр –width, то для задания высоты используется параметр –height. Но проводник можно размещать не только в отдельном окне, но и на фрейме приложения. Расположение проводника задается параметром –type, которое принимает значение либо window (проводник в отдельном окне, принимается по умолчанию), либо frame. В последнем случае проводник размещается во фрейме, который, в свою очередь, размещается в окне приложения
Таким образом, проект SVG-виджеты включает в свой состав разработанные пакеты svgwidgets, svg2can и tkfe_svg. Первый пакет предназначен для создания различных виджетов, на базе svg-графики. Пакет svg2can предназначен для экспорта на холст изображений из svg-файлов, а пакет tkfe_svg обеспечивает приложение файловым проводником. Все эти пакеты включены в состав интерпретаторов tclexrcomp_svg для платформ Linux и Windows. Сам проект, который включает перечисленные выше пакеты, интерпретаторы и примеры можно скачать здесь.
Впереди Новый 2025 Год. Хочу поздравить и пожелать всем счастья и удачи!
Пусть этот год у каждого из нас будет годом свершения всех надежд и чаяний!
До встречи в Новом Году (на фотографии Новогодняя ёлка у станции метро Новокузнецкая):