Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

programming:yad [2013/12/18 19:29]
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//
Печать/экспорт