2015-12-30 1 views
0

Расширение menuncurses, похоже, настаивает на том, что все элементы меню имеют одинаковую ширину. Это означает, что если один элемент меню очень широкий, а другие узкие, тогда много места теряется и ширина экрана недостаточна.многострочный элемент меню с ncurses?

Один из способов я думал, чтобы разбить пункт длинное меню на несколько строк, используя функцию set_menu_spacing:

set_menu_spacing(myMenu, 1, 2, 1); // all menu items will get two rows 

Однако, я не знаю, как получить мой широкий пункт использовать эти две строки. Я попытался вставить \n в строку, представляющую элемент, но это привело к сокрытию всех элементов, начинающихся с элемента с именем \n. Что я должен сделать, чтобы заставить многострочные элементы работать?

ответ

1

Короткий ответ: нет, вы не можете сделать это с существующей библиотекой.

Отметив, что set_menu_spacing является ncurses extension, библиотека не проверяет наличие новых символов в названии или описании товара.

Библиотеки ncurses (и форма и панель) были написаны для совместимости с System V's menu, формами, библиотеками панелей (по существу, SCO и Solaris, поскольку AIX и HPUX не имеют этих библиотек). Быстрая проверка Solaris 10 показывает, что он также не ожидал встроенных новых строк. Однако это может быть полезным расширением, так как нет полезных программ, которые могли бы сломаться, если ncurses были изменены, чтобы сделать что-то полезное в этом случае.

+0

Итак, этот параметр предназначен только для интервала, а дополнительные строки не могут быть не пустыми, правильно? Есть ли другой способ сделать меню более компактным, если имя одного элемента длинное? – AlwaysLearning

+0

Я не вижу пути, читая код в 'm_post.c' –