Есть ли в контрольном списке диалогового окна --возможность горизонтальной прокрутки или интерпретация \n (новой строки )?

Когда почта отправляется через SMTP, подключающийся сервер идентифицирует себя с помощью команды HELO. См.https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol#SMTP_transport_example

Вам необходимо изменить это в настройках конфигурации SMTP-клиента. В частности, для sendmailесть пример здесь:https://serverfault.com/questions/205271/how-to-specify-outgoing-helo-with-sendmail

1
26.04.2021, 12:27
1 ответ

Насколько я знаю, тексты для элементов контрольного списка в dialogпредназначены для одного -вкладыша, и, учитывая, что сам Томас Дики не намекал на другое, я предполагаю, что нет способа указать 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}"

ХТХ

1
28.04.2021, 22:51

Теги

Похожие вопросы