Различия
Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.
programming:yad [2013/12/16 18:02] |
programming:yad [2024/02/25 14:30] (текущий) sfs [YAD - создание графических интерфейсов (GUI)] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== YAD - создание графических интерфейсов (GUI) ====== | ||
+ | *https://yad-guide.ingk.se/ | ||
+ | *Свежий [[https://git.altlinux.org/tasks/340795/build/100/x86_64/srpm/yad-13.0-alt1.src.rpm|yad с русской локалью]] | ||
+ | *https://sourceforge.net/p/yad-dialog/wiki/browse_pages/ | ||
+ | *http://smokey01.com/yad/ | ||
+ | *https://www.thelinuxrain.com/articles/the-buttons-of-yad | ||
+ | *старый сайт http://code.google.com/p/yad/ | ||
+ | *[[http://forum.puppyrus.org/index.php/topic,13414.0.html|форум]] | ||
+ | *<del>отзывчивый</del> русскоязычный [[https://plus.google.com/u/0/103320353724286955511/posts|автор]] | ||
+ | *yad активно применяется в [[puppyrus/pra|LF]] (ntf netctl.sh net-auto tray) | ||
+ | *Документации и примеров мало. //yad --help-all// | ||
+ | *[[http://murga-linux.com/puppy/viewtopic.php?t=97458|Примеры на murga]] | ||
+ | *Далее примеры из собственного опыта и переписки с автором | ||
+ | ====== --notification ====== | ||
+ | ===== Значок в трее с меню ===== | ||
+ | yad --notification --menu='item name 1!command1|item name 2!command2!icon-name' | ||
+ | |||
+ | *формат описания элемента меню - имя[!команда[!иконка]] | ||
+ | *разделители можешь назначать через --separator - (|) и --item-separator (!) | ||
+ | *маленькая иконка в трее ([[http://forum.puppyrus.org/index.php?topic=20196.msg136739#msg136739|нyжен свежий yad]]) : | ||
+ | |||
+ | yad --notification --image=/path/to/image.png --icon-size=32 | ||
+ | |||
+ | |||
+ | ===== Значок в трее с запуском программы ===== | ||
+ | <code> | ||
+ | #! /bin/bash | ||
+ | function run_gedit { | ||
+ | gedit & | ||
+ | sleep 0.5 | ||
+ | kill -USR1 $YAD_PID | ||
+ | } | ||
+ | export -f run_gedit | ||
+ | yad --notification --command='bash -c run_gedit' | ||
+ | </code> | ||
+ | или более коротко: | ||
+ | yad --notification --text="test" --command='bash -c "(gedit &) ; kill $YAD_PID"' | ||
+ | Если надо чтобы gedit запустился и yad в трее убился. | ||
+ | Чтобы yad в трее убился после закрытия gedit : | ||
+ | yad --notification --text="test" --command='bash -c "gedit && kill $YAD_PID"' | ||
+ | |||
+ | ====== --button ====== | ||
+ | |||
+ | > Как сделать кнопку с произвольным текстом , иконкой (gtk-add) и подсказкой | ||
+ | <code> | ||
+ | --button='Текст'!gtk-add!'подсказка':x | ||
+ | </code> | ||
+ | , где x - код возврата. Получить его в скрипте можно через переменную $? | ||
+ | |||
+ | ====== --form ====== | ||
+ | ===== --columns ===== | ||
+ | |||
+ | yad --form --columns=2 --field=1 --field=2 --field=3 --field=4 | ||
+ | ===== --field ===== | ||
+ | Вывод содержимого поля %N, где N - номер поля | ||
+ | <code> | ||
+ | #!/bin/sh | ||
+ | btn_start(){ yad --text "вывод $1" ;} ; export -f btn_start | ||
+ | yad --form --field=1:CB item1 \ | ||
+ | --field=gtk-info:BTN '@bash -c "btn_start %1"' \ | ||
+ | --field=info:BTN 'yad --text "вывод %1"' | ||
+ | </code> | ||
+ | ====== --list ====== | ||
+ | ===== --column=tooltip:tip ===== | ||
+ | |||
+ | > При наведении мыши на поле выводится это поле | ||
+ | > Можно как-то что-то другое выводить? | ||
+ | если задать столбцу тип TIP - его значения будут использоваться для | ||
+ | всплывающих подсказок. по хорошему, надо бы и отключение подсказок | ||
+ | сделать, но пока руки не дошли | ||
+ | |||
+ | yad --list --column=text --column=tooltip:tip --hide-column=2 "text" "tooltip" | ||
+ | ===== --dclick-action ===== | ||
+ | //использовано в tray (PRA)// | ||
+ | |||
+ | значения текущей строки передаются в качестве аргументов команды, | ||
+ | указанной в --dclick-action | ||
+ | |||
+ | %s нужен, чтобы указать место, куда эти аргументы воткнуть, | ||
+ | по-умолчанию, они просто добавляются в конец строки с командой | ||
+ | |||
+ | пример (выводит значение третьего поля по двойному клику) | ||
+ | |||
+ | <code>#! /bin/bash | ||
+ | dclick(){ echo "$3" ;} | ||
+ | export -f dclick | ||
+ | yad --list --column=1 --column=2 --column=3 --dclick-action='bash -c "dclick %s"' \ | ||
+ | "test sample 11" "test sample 12" "test sample 13" \ | ||
+ | "test sample 21" "test sample 22" "test sample 23" </code> | ||
+ | |||
+ | функция-обработчик двойного клика экспортируется, и т.к. при простом | ||
+ | присоединении аргументов в конец будет каша с кавычками, проще явно | ||
+ | указать, куда необходимо вставить значения полей текущей строки | ||
+ | |||
+ | |||
+ | ===== --hide-column ===== | ||
+ | |||
+ | > --hide-column= можно применять только 1 раз? | ||
+ | |||
+ | да. если по каким-то причинам надо скрывать несколько колонок - им необходимо задать тип --column=text:hd | ||
+ | ===== --column=:IMG ===== | ||
+ | |||
+ | Изображения отображаются как есть, без масштабирования. Для нужного размера достаточно просто указать полный путь к файлу | ||
+ | |||
+ | |||
+ | //Автор: sfs// |