对话框的 --checklist 框是否可以输入水平滚动或 \n(换行符)解释?

对话框的 --checklist 框是否可以输入水平滚动或 \n(换行符)解释?

我使用对话框版本:1.3-20210324

鉴于:

LIST_ITEMS=(
  "1." "A ... very ... very ... looooong ... Informationtext" "off"
  "2." "A ... very ... very ... looooong ... Informationtext" "off"
                            ...                                     )
dialog ... --checklist "checklistName" 0 0 0 "${LIST_ITEMS[@]}" 

结果:
经典对话清单信息文本完全不可见。

缺少目标:
我需要一种水平滚动或换行的方法信息文本

编辑1
@Thomas Dickey 提到重新格式化数据,这对我来说是没有选择的,因为无论哪种方式我都没有足够的水平空间。正如我的文章中提到的缺少进球真正的问题仍然存在。不管怎样,谢谢你的想法托马斯!非常欢迎任何帮助,提前致谢!

编辑2:一个可能的解决方案
@LL3 给出了两个关于如何解决问题的简短示例。谢谢你!

概括:
截至本编辑日期,当前同意似乎是:

  • --check-list没有水平滚动选项
  • --check-list旨在成为单行

答案1

AFAIK 中的清单项目的文本dialog应该是一行行的,并且考虑到 Thomas Dickey 本人没有做出不同的暗示,我认为没有办法告诉dialog处理\n这些文本中嵌入的转义序列或文字换行符。

我可以告诉你我如何使用两种方便的替代方案之一(或有时甚至两者)轻松处理像你这样的情况:

如果您非常非常长的信息文本仍然适合单行窗口,您只需添加选项--item-help并为每个项目提供一个附加字段,这将是要显示的较长单行文本。当光标所在的相应字段所在时,该附加字段将显示在窗口底部。

所以你只需执行如下操作:

LIST_ITEMS=(
   "1." "briefer text 1" "off" "A first ... very ... very ... looooong ... Informationtext"
   "2." "briefer text 2" "off" "A second ... very ... very ... looooong ... Informationtext"
)
dialog --item-help --checklist "checklistName" 0 0 0 "${LIST_ITEMS[@]}"

请注意,这些附加字段仍然是单行,dialog如果它们不适合窗口,它们也会被自动截断,就像项目的主要文本一样。

对于真正的长文本和/或多行文本,可以轻松设置额外的对话框,以便根据请求以编程方式处理,如以下示例的概念验证:

#!/bin/bash --
# Note it is conventional practice to use lowercase names for variables,
# whereas uppercase names are left to standards and to shell's own use.
list_items=(
   "1." "A ... very ... very ... looooong ... Informationtext" "off"
   "2." "A ... very ... very ... looooong ... Informationtext" "off"
)
until choice=$(dialog --help-button --checklist "checklistName" 0 0 0 "${list_items[@]}" 2>&1 >/dev/tty); do
    case $? in
    (1) btn=Cancel && break;;
    (2) case $choice in
        ("HELP 1.") dialog --msgbox 'this is a long explanation\nfor option 1.\n' 0 0;;
        ("HELP 2.") dialog --msgbox 'option 2 takes\neven three\nseparate lines.' 0 0;;
        esac
    esac
done
printf -- %s\\n "Pressed ${btn:-OK}"

华泰

相关内容