如何编辑 YAD 问题标签(示例)?

如何编辑 YAD 问题标签(示例)?

亚德是 Zenity 的分叉。

我有这个yad脚本:

#!/bin/bash

yad --text="Execute the file? (press 'Cancel' to open in text editor)" 

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

作为应用程序启动器与桌面文件关联,可用于在单击文件(例如脚本等)时显示窗口。

在此处输入图片描述

在 zenity 中,可以编辑标签的名称:

与 Zenity 相同的脚本应如下所示:

#!/bin/bash

zenity --question --text="What to do?" \
       --ok-label=Run \
       --cancel-label=Edit

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

并且Run和是Edit可以改变的。

我觉得这里它说yad有办法编辑标签:

--button=按钮:ID

Add the dialog button. May be used multiply times. ID is an exit code or a command. BUTTON may be gtk stock item name for predefined

按钮(如 gtk-close 或 gtk-ok)或 LABEL[!ICON[!TOOLTIP]] 格式的文本,其中“!”是项目分隔符。完整的库存项目列表可在 gtk-demo 程序中找到,位于名为“库存项目和图标浏览器”的代码片段中。如果没有指定按钮,则使用 OK 和 Cancel 按钮。有关更多信息,请参阅退出状态部分。如果 ID 具有非数字值,它会被视为命令,单击此类按钮不会关闭对话框。

但我不确定。我不知道该如何理解这些信息。我需要一个例子来说明yad上面脚本中的按钮名称是如何改变的。

我有原因yad代替使用zenity- zenity 脚本无法通过 close 或 Esc 关闭。

答案1

我不完全确定你的意思,但如果我理解正确的话,你想要的是这样的东西:

#!/bin/bash

yad --text="Execute the file?" --button="Execute" --button="Edit"

case $? in
    0)thunar "$1"
    ;;
    1)gedit $1
    ;;
esac

我找到了一个链接(ubuntuusers.de),但它是德语的。不过,有一些代码示例和图片可能会有所帮助。而且你随时可以用谷歌翻译它。

如果可以的话,我本来想把这个写成评论,但目前还不允许。希望这对你有帮助。

答案2

几天前,我偶然写了这篇文章,以回答我自己的一个问题(Bash 模板使用 zenity(或 yad)在文件或数据库中插入/编辑/删除记录)并认为值得分享:

网络同步 1

请注意屏幕上的六个按钮以及它们在下面的代码中的处理方式(抱歉,这项工作仍在进行中)。重要的一点是,使用自定义按钮时始终要捕获默认返回代码,例如 Esc 和 Windows 关闭(单击 X)的 252。

while true ; do

Record=(`yad \
    --title "websync - Compare local scripts to those published on internet." --list \
        --text '<span foreground="blue" font="14">Toggle select next to file then click action button</span>' \
        --width=900 --height=600 --center --radiolist -separator="$IFS" --no-click \
        --button="Insert before":1 --button=Edit:2 --button=Delete:3 --button=Run:4 \
        --button="Cancel ALL":5 --button=Save:6 --search-column=3 \
        --column "Select" --column "Record number" --hide-column=2 --column "File Name" \
        --column "Status" --column " Website Address" \
        "${choices[@]}"`)
Action=$?

RecSelected=false
RecArr=()
i=0

# With radio list only one choice is possible
for Field in "${Record[@]}" ; do
    RecSelected=true
    RecArr[i]=$Field
# echo "RecArr $i ${RecArr[$i]}"
    ((i++))
done

echo "button: $Action"# 
# Note: When X closes window or Escape pressed 252 is returned.

# Insert before || or Edit ?
if [[ $Action == 1 ]] || [[ $Action == 2 ]] ; then
    RecArr[3]="New"
    # --text="Set fields and click OK to update" 
    # Note if there is a space at end of line, next line generates invalid command error from yad
    yad --width=600 --height=400 --title="Link file to Website Address" \
        --form --center \
        --field="Record Number":RO --field="File name":FL --field="Status":RO \
        --field="Website Address":TXT \
        ${RecArr[1]} ${RecArr[2]} ${RecArr[3]} ${RecArr[4]}
    ret=$?

    # Cancel =252, OK = 0
    if [[ $ret == 0 ]] ; then
        # Update array and renumber
        : # noop
    else
        continue # cancel changes.
    fi

elif [[ $Action == 3 ]] ; then
    : # Delete
elif [[ $Action == 4 ]] ; then
    : # Run
elif [[ $Action == 5 ]] || [[ $Action == 252 ]] ; then
    # Cancel ALL || or X the window or Escape
    exit
elif [[ $Action == 6 ]] ; then
    # Save
    exit
else
    zenity --error --text "~/bin/websync - Unknown button return code: $Action"
fi

done # End of while loop

相关内容