Curses::Lists - модуль для вывода на экран списков данных.
use Curses::Lists;
$obj = Curses::Lists->new( 'list', $list_data_point );
$key = $obj->draw; # Рисуем `обычный' список
$obj->env( type => 'vlist' );
$key = $obj->draw; # Рисуем `вертикальный' список $obj->destroy;
!!! $key - равна нажатому символу.
Пример использования:
$list_data_point = { # Свойства для списка.
'title' => 'Test window', # Заголовок окна
'ypos' => 0, # Координаты левого
'xpos' => 0, # верхнего угла окна
'lines' => 25, # высота окна
'cols' => 80, # ширина окна
'vpos' => 0, # смещение первой строки окна
# относительно начала списка
'hpos' => 0, # смещение первой колонки
# относительно начала строки
'bg_color' => 'black', # цвет фона
'fg_color' => 'white', # цвет символов
'regex' => 'qa', # выйти при нажатии на одну
# из этих кнопок
'draw_only' => 0, # 1 - только отрисовать окно
'multipart' => 0, # 1 - возможность выбора из списка
# нескольких строк
'h_active' => 0, # Активная строка списка
'v_active' => 0, # Активный столбец списка
'content' => [@A,@B], # Массив строк, @A,@B массивы
# колонок.
'list_size' => [23,12,20,10,40],# размер столбцов по умолчанию
# горизонтального списка
'list_title' => [@C], # Шапка колонок `горизонтальный'
# список
'vlist_size' => [10,60], # размер столбцов по умолчанию
# вертикального списка.
'vlist_title' => [ 'Key', 'Val' ] # Шапка колонок `вертикальный'
# список
'decorations' => 1 # 0 - нет рамок
# и пр. полезностей...
};
use Curses::Lists;
$obj = Curses::Lists->new( 'list', $list_data_point );
$key = $obj->draw; # Рисуем `обычный' список
$obj->env( type => 'vlist' );
$key = $obj->draw; # Рисуем `вертикальный' список
$obj->destroy;
В примерах вроде все показано с практической точки зрения...
Клавиши навигации по списку:
'>' - сдвинуть окно на 1 колонку вправо
'<' - сдвинуть окно на 1 колонку влево
'q' - выход (по умолчанию)
']' - сделать активной колонку справа
'[' - сделать активной колонку слева
'i' - пометить все строки (если multipart = 1)
'u' - отменить выделение всех строк
'*' - инверсия выделения строк
'space' - выделить (отменить выделение) строки
'ENTER' - выделить строку и выйти
'+' - увеличить ширину активной колонки
'-' - уменьшить ширину активной колонки
'Up' - передвинуть курсор вверх на одну строку
'Down' - передвинуть курсор на одну строку вниз
'PgDn' - .......................... страницу вверх
'PgUp' - .......................... страницу вниз
'Home' - перейти в начало списка
'End' - перейти в конец списка
Устанавливает/возвращает текущие параметры списков ( те которые передавались при создании обьекта или вызова draw ). Например, чтобы получить значение 'title' надо написать следующее:
$title = $obj->opt( 'title' );
чтобы установить значение title надо написать примерно следующее:
$obj->opt( title => $new_title );
Если вызвано без параметров то возвращает ссылку на хеш со всеми параметрами списка.
Устанавливает возвращает такие параметры как:
Ссылка на обьект главного окна
Ссылка на обьект окна `потомка'...
Максимальное количество символов которые может отобразить терминал, по X
Максимальное количество символов которые может отобразить терминал, по Y
Тип списка ( 'list' или 'vlist' )
Очищать консоль перед каждой отрисовкой списка ( по умолчанию 1 )
Не отображать вводимые с клавиатуры символы ( по умолчанию 1 )
`Нарисовать' список
Вернуть терминал в исходное состояние.
Okunev Igor V. mailto:igor@prv.mts-nn.ru
http://www.mts-nn.ru/~gosha